Unity脚本(C#)限制相机在y轴上的旋转

时间:2014-04-28 14:48:09

标签: c# camera rotation unity3d

我使用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方向旋转相机。

2 个答案:

答案 0 :(得分:1)

问题是Transform.Rotate 应用旋转(不设置您所期望的角度)。所以你的夹子没有效果。你想要钳制的是Transform.localEulerAngles

答案 1 :(得分:1)

你必须减去"鼠标Y"每次更新时都会旋转轴,所以只需替换它:

rotationY = Input.GetAxis ("Mouse Y") * mouseSensitivity;

......用这个:

rotationY -= Input.GetAxis ("Mouse Y") * mouseSensitivity;

您也不要使用Camera.main.transform.Rotate,但使用localRotation(正如您自己指出的那样)。