簡體   English   中英

如何在Unity中鎖定相機的Z軸旋轉?

[英]How can I lock my camera Z axis rotation in Unity?

我使用鼠標位置旋轉相機:

void FixedUpdate()
{
    transform.Rotate(-Input.GetAxis("Mouse Y") * rotationspeed * Time.deltaTime, Input.GetAxis("Mouse X") * rotationspeed * Time.deltaTime, 0);
}

問題在於,旋轉一段時間后,相機也會開始在Z軸上旋轉。 如何鎖定相機的Z軸旋轉?

如果要沿兩個軸旋轉對象,則默認情況下,第三個軸將旋轉,因為它是真實世界,所以無法鎖定它。 在現實世界中嘗試此操作3d對象旋轉的任何兩個軸都會自動旋轉。如果旋轉一個軸,則另外兩個將固定。 謝謝。

Transform.Rotate具有可選參數

Space relativeTo = Space.Self

因此默認情況下將其設置為Sapce.Self以使其繞對象的局部軸旋轉。

所以發生的事情是,一旦您向下看更改本地X軸,您的本地Y軸不再指向正上方,而是現在指向前方。 因此,如果您現在繞着該局部Y軸旋轉,則您的局部視界突然不再與世界的視界對齊。


相反,您想要做的事情(實際上您也可以在上面的鏈接的示例中看到) 在世界空間中繞着Y軸旋轉,而在局部空間中繞着X軸旋轉。

像這樣

[SerializeField] private float rotationspeed;

private void FixedUpdate()
{
    // rotate around global world Y
    transform.Rotate(Input.GetAxis("Mouse X") * rotationspeed * Time.deltaTime, 0, 0, Space.World);

    // rotate around local X
    transform.Rotate(0, -Input.GetAxis("Mouse Y") * rotationspeed * Time.deltaTime, 0);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM