繁体   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