- Home /
Question by
rdelossantos · Aug 28, 2014 at 05:23 PM ·
c#movement scriptplayer movement
Limiting the rotation based on the angle of the player mesh
Hello:
I'm using the code below for rotation of the player mesh. I would like to know how to disable the rotation when you have in your inputs a new position that is an angle like walking backwards. I'm very new to Unity and the classes for position management.
using UnityEngine;
using System.Collections;
public class PlayerMovement : MonoBehaviour {
public float turnSmoothing = 15f; // A smoothing value for turning the player.
public float speedDampTime = 0.1f; // The damping for the speed parameter
public float translationSpeed = 2f;
public float reverseAngle = 50f;
void FixedUpdate()
{
// Cache the inputs.
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
MovementManagement(h, v);
}
void MovementManagement(float horizontal, float vertical)
{
if (horizontal != 0f || vertical != 0f)
{
// Create a new vector of the horizontal and vertical inputs.
Vector3 targetDirection = new Vector3(horizontal, 0f, vertical);
// Create a rotation based on this new vector assuming that up is the global y axis.
Quaternion targetRotation = Quaternion.LookRotation(targetDirection, Vector3.up);
// Create a rotation that is an increment closer to the target rotation from the player's rotation.
Quaternion newRotation = Quaternion.Lerp(rigidbody.rotation, targetRotation, turnSmoothing * Time.deltaTime);
//if (angle < 90) {
rigidbody.MoveRotation(newRotation);
//Debug.Log("rotating" + horizontal);
//}
rigidbody.AddForce(new Vector3(horizontal*translationSpeed, 0f, vertical*translationSpeed));
}
}
}
Thanks in advance,
Rayner
Comment
Your answer
Follow this Question
Related Questions
How can I make the player step forward on mouse click? 2 Answers
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Player rotating towards direction of movement in 3D 1 Answer