- Home /
Object stops rotating around +90 and -90 degrees
I have a script for rotating an object based on the mouse position, if the mouse is away from the transform.forward of the current game object the object will be rotated in that direction, the script works but the object stops or slows down rotation around +/- 85 to 90 degrees, whereas i want complete 360 degrees rotation. Here is the code for the movement which is called every time in the update method. P.S. As of right now only horizontal rotation is implemented. P.S.S I am using the new Input System Package for unity instead of the old input manager, so _mousePos is a vector2 of the current pixel position the mouse is at
private float _rotateAngle = 5f;
Vector3 _vect = new Vector3(0, 0, 0);
Vector3 _vect2 = new Vector3(0, 0, 0);
private void calculateMovement()
{
//Code for turning the player using mouse
Vector3 planeVector = new Vector3(transform.position.x, transform.position.y, transform.position.z + 10);
Plane plane = new Plane(transform.forward * -1, planeVector);
Ray camRay = Camera.main.ScreenPointToRay(_mousePos);
float cInt;//Camera intersection with plane
if (plane.Raycast(camRay, out cInt))
{
_vect = camRay.GetPoint(cInt);
}
Ray playerRay = new Ray(transform.position, transform.forward);
float pInt;//Player intersection with plane
if (plane.Raycast(playerRay, out pInt))
{
_vect2 = playerRay.GetPoint(pInt);
}
float deviation = Convert.ToSingle(Math.Round(_vect.x - _vect2.x, 5));//Calculate Deviation of mouse from player forward
if (deviation < -0.18 || deviation > 0.18)// only turn if the deviation is more than some value
{
var turnAngle = deviation * _rotateAngle;
var target = transform.rotation * Quaternion.Euler(0, turnAngle, 0);
transform.rotation = Quaternion.Slerp(transform.rotation, target, Time.deltaTime * 10.0f);
//Debug.Log(deviation+","+ turnAngle);
}
//Code for movement of player
var tran = new Vector3(0, _pitch, _move) * _speed;
transform.Translate(tran);
}
Your answer
Follow this Question
Related Questions
Making a bubble level (not a game but work tool) 1 Answer
[C#] Movement Direction Change 2 Answers
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
[C#]CharacterController Turning 2 Answers