📜  unity FPS 相机 z 轴旋转问题 - C# (1)

📅  最后修改于: 2023-12-03 15:35:29.678000             🧑  作者: Mango

Unity FPS 相机 Z 轴旋转问题 - C#

在 Unity FPS 游戏中,相机的 Z 轴旋转问题是一个经常遇到的问题。通常,在首人称射击游戏中,相机跟随玩家并旋转以在玩家移动时提供视角变化。但是,当相机移动时,其在 Z 轴上的旋转会导致奇怪的旋转效果,会干扰玩家视角,从而影响游戏体验。

这个问题的解决方案很简单,只需要在相机脚本中做出如下修改:

public class CameraScript : MonoBehaviour
{
    public Transform player; // 玩家的 Transform 组件
    public float sensitivity = 100f; // 相机旋转的灵敏度
    public float rotationLimit = 80f; // 相机旋转的极限角度

    float rotationX = 0f;

    void FixedUpdate()
    {
        float mouseX = Input.GetAxis("Mouse X") * sensitivity * Time.fixedDeltaTime;
        float mouseY = Input.GetAxis("Mouse Y") * sensitivity * Time.fixedDeltaTime;

        rotationX -= mouseY;
        rotationX = Mathf.Clamp(rotationX, -rotationLimit, rotationLimit);

        transform.localRotation = Quaternion.Euler(rotationX, 0f, 0f);
        player.Rotate(Vector3.up * mouseX);

        // 将相机的 Z 轴旋转控制为 0
        transform.localEulerAngles = new Vector3(transform.localEulerAngles.x, transform.localEulerAngles.y, 0);
    }
}

在这个脚本中,我们将 transform.localEulerAngles.z 设为了 0,在每一帧中控制相机的 Z 轴旋转为 0。这个代码片段将确保相机不会在移动或旋转时出现任何奇怪的效果,提高玩家体验。

希望这个解决方案对您有所帮助。