我有一个非常基本的脚本,可以将相机从鼠标位置移开,但是我想将z轴的旋转限制为某些值。使用下面的代码,一切正常,但是可以在z轴上完全旋转相机,我想将其限制为20和-40。我试过使用mathf.clamp,但是没有用,当打印到控制台时,它只打印出mathf.clamp中最正确的值。我还尝试使用if语句查看旋转是否超出限制,然后将其重置。但是都没有用。。。我也环顾了Unity的答案,但是我不理解其他任何答案,有人可以教我如何做吗?
码:
void Update () {
transform.rotation = Quaternion.Euler(0f, Input.mousePosition.x, Input.mousePosition.y);
}
最佳答案
这就是夹紧的方式。
void Update()
{
float zRotation = Mathf.Clamp(Input.mousePosition.y, -40, 20);
transform.rotation = Quaternion.Euler(0f, Input.mousePosition.x, zRotation);
}
但是我认为它并不能满足您的需求。鼠标位置以窗口坐标给出,因此您永远不会有负值。您可能需要先平移坐标,如下所示:
void Update()
{
float yRotation = (Input.mousePosition.x - Screen.width / 2) * 360 / Screen.width;
float zRotation = (Input.mousePosition.y - Screen.height / 2) * 180 / Screen.height;
zRotation = Mathf.Clamp(zRotation, -40, 20);
transform.rotation = Quaternion.Euler(0f, yRotation, zRotation);
}