我正在使用鼠标位置旋转相机:
void FixedUpdate()
{
transform.Rotate(-Input.GetAxis("Mouse Y") * rotationspeed * Time.deltaTime, Input.GetAxis("Mouse X") * rotationspeed * Time.deltaTime, 0);
}
问题是旋转了一段时间后,相机也开始在Z轴上旋转。如何锁定相机的Z轴旋转?
答案 0 :(得分:0)
如果要沿两个轴旋转对象,则默认情况下,第三个轴将旋转,因为它是真实世界,所以无法锁定它。在现实世界中尝试此操作3d对象旋转的任何两个轴都会自动旋转。如果旋转一个轴,则另外两个将固定。 谢谢。
答案 1 :(得分:0)
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);
}