我使用鼠标位置旋转我的相机:
void FixedUpdate()
{
transform.Rotate(-Input.GetAxis("Mouse Y") * rotationspeed * Time.deltaTime, Input.GetAxis("Mouse X") * rotationspeed * Time.deltaTime, 0);
}
问题是,在旋转了一段时间后,相机也开始在Z轴上旋转。我该怎么办锁定相机的Z轴旋转?
发布于 2019-01-31 07:13:00
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);
}
发布于 2019-01-31 02:20:49
如果你想在两个轴上旋转一个物体,那么在默认情况下,第三轴会旋转,你不能锁定它,因为它是真实世界的事实。在现实世界中试试这个3d物体,旋转任意两轴,第三次旋转,automatically.If,你旋转一个轴,另外两个会固定。谢谢。
https://stackoverflow.com/questions/54457855
复制相似问题