2015-09-26 55 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); 
}