2015-09-26 54 views
2

我有一个非常基本的脚本来移动相机从鼠标位置,但我想限制z轴的旋转到一些值。使用下面的代码,它可以正常工作,但相机可以在z轴上完全旋转,我想将其限制在20和-40。我试图使用mathf.clamp,但是这并不起作用,当打印到控制台时,它只打印出mathf.clamp中最右边的值。我也尝试使用if语句来查看旋转是否超出限制,然后重新设置,如果是的话。但是都行不通......我也浏览过Unity的答案,但我不明白任何其他答案,有人可以告诉我该怎么做吗?如何约束统一5鼠标输入的旋转?

代码:

void Update() { 
     transform.rotation = Quaternion.Euler(0f, Input.mousePosition.x, Input.mousePosition.y); 
    } 

回答

2

这是你如何夹紧。

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); 
}