- Home /
360° slerp horizontal rotation camera with the slider
Hello guys. I'm trying to create a script that allows me to rotate the camera, with a Slerp effect, in a range from 0 ° -360 ° (y-axis) through a horizontal slider. The camera only rotates along an axis (I'm in the middle of a room and I have to turn around using a horizontal slider)
I made two scripts: The first to be applied to a reference cube to obtain the rotation and the second to be applied to the chamber to obtain the Slerp effect, while following the rotation of the cube.
360 ° cube rotation script:
public float speed;
public Vector3 offset;
public GameObject ObjectToRotate;
public void SliderChanged(float speed)
{
ObjectToRotate.transform.rotation = Quaternion.Euler (speed*offset);
}
Script for camera rotation with Slerp effect:
public Transform target;
public float Speed = 0.1F;
// Update is called once per frame
void Update () {
transform.rotation = Quaternion.Slerp (transform.rotation, target.rotation, Speed);
}
}
It works but with some problems: if I run too fast with the slider from the left (0 °) to the right (359 °), the Slerp rotation does not continue correctly but seems to rotate only 1 °, as if it were back.
How can I solve? Thanks!
Answer by Harinezumi · Jun 06, 2018 at 11:28 AM
I think that happens because Quaternion.Slerp()
"gives a straightest and shortest path between its quaternion end points" (see wikipedia about quaternion slerp). So when you go from 0 to 359, the shortest path is a 1 degree rotation, but in the other direction. In fact, this will happen for any rotation change greater than 180 degree.
To achieve rotation in only one direction, try Quaternion.Lerp()
or Quaternion.LerpUnclamped().
Thanks for the reply @Harinezumi . I've tried both Quaternion.Lerp () and Quaternion.LerpUnclamped () but the error is still the same. Does not work
Your answer
Follow this Question
Related Questions
Rotate rigidbody towards mouse position 0 Answers
How to use mathf.clamp? 2 Answers
change direction by rotating object around y axis and adding relative torque 1 Answer
Rotation Question in Top-down 3D Game 0 Answers
Problem with enemy rotation 1 Answer