首页 文章

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

提问于
浏览
0

我用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 回答

  • 1

    您必须在每次更新时减去"Mouse Y"轴旋转,所以只需将其替换为:

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

    ...有了这个:

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

    同样重要的是你不要使用Camera.main.transform.Rotate,而是使用localRotation(正如你自己指出的那样) .

  • 1

    问题是Transform.Rotate applies rotation (没有像你期望的那样设置角度) . 所以你的夹子没有效果 . 你想要钳制的是Transform.localEulerAngles

相关问题