[英]Unity script (C#) to restrict camera rotation on the y-axis
我使用Unity创建了一个简单的第一人称游戏,您可以使用WASD键移动并使用鼠标环顾四周。 此时相机在x轴和y轴上的旋转不受限制(如果向上看,可以在y轴上旋转360°)。 现在我想限制这个,所以你不能再往前看了。 到目前为止我的帖子(没有限制):
public float rotationY = 0;
public float viewRange = 90.0;
void Update () {
float rotationX = Input.GetAxis ("Mouse X") * mouseSensitivity;
transform.Rotate (0, rotationX, 0);
rotationY = Input.GetAxis ("Mouse Y") * mouseSensitivity;
rotationY = Mathf.Clamp (rotationY, -viewRange, viewRange);
Camera.main.transform.Rotate (-rotationY, 0, 0);
}
现在我试图通过替换最后一行来限制y轴相机移动
Camera.main.transform.localRotation = Quaternion.Euler (rotationY,0,0);
但不幸的是,这导致无法在y方向上旋转相机。
问题是Transform.Rotate 应用旋转 (不设置你想象的角度)。 所以你的夹子没有效果。 你想要钳制的是Transform.localEulerAngles
您必须在每次更新时减去 “鼠标Y”轴旋转,所以只需将其替换为:
rotationY = Input.GetAxis ("Mouse Y") * mouseSensitivity;
...有了这个:
rotationY -= Input.GetAxis ("Mouse Y") * mouseSensitivity;
同样重要的是你不要使用Camera.main.transform.Rotate,而是使用localRotation(正如你自己指出的那样)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.