📜  unity mouse look script 2021 - C# (1)

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

Unity Mouse Look Script 2021 - C#

简述

该脚本是用于 Unity 游戏引擎中实现视角根据鼠标移动而旋转的脚本。该脚本使用 C# 语言编写,并可以适用于 Unity 2021 版本及以后的版本。

使用
步骤1:附加脚本

将脚本附加到需要实现鼠标视角旋转的对象上。

步骤2:调整参数

在 Unity 编辑器中,打开物体的 Inspector 窗口,可以看到脚本的参数。您可以根据需要调整以下参数:

  • 垂直方向的旋转范围
  • 水平方向的旋转范围
  • 鼠标灵敏度
步骤3:运行游戏

运行游戏后,您可以使用鼠标来旋转视角。

代码
using UnityEngine;

public class MouseLook : MonoBehaviour
{
    // 垂直方向旋转的最小角度
    public float minVerticalAngle = -90f;
    // 垂直方向旋转的最大角度
    public float maxVerticalAngle = 90f;
    // 水平方向旋转的范围
    public float rotationRange = 360f;
    // 鼠标灵敏度
    public float mouseSensitivity = 10f;
 
    // 初始时物体的旋转
    private Quaternion m_OriginalRotation;
 
    // 垂直方向旋转的角度
    private float m_VerticalAngle = 0f;
 
    void Start()
    {
        m_OriginalRotation = transform.localRotation;
    }
 
    void Update()
    {
        // 获取鼠标移动的距离
        float mouseDeltaX = Input.GetAxis("Mouse X") * mouseSensitivity;
        float mouseDeltaY = Input.GetAxis("Mouse Y") * mouseSensitivity;
 
        // 计算水平方向旋转的角度
        transform.Rotate(0f, mouseDeltaX, 0f, Space.Self);
        transform.localRotation = Quaternion.Euler(m_VerticalAngle, transform.localEulerAngles.y, 0f);
        float rotationY = transform.localEulerAngles.y;
        if (rotationY > 180f)
        {
            rotationY -= 360f;
        }
        rotationY = Mathf.Clamp(rotationY, -rotationRange * 0.5f, rotationRange * 0.5f);
        transform.localRotation = Quaternion.Euler(m_VerticalAngle, rotationY, 0f);
 
        // 计算垂直方向旋转的角度
        m_VerticalAngle += -mouseDeltaY;
        m_VerticalAngle = Mathf.Clamp(m_VerticalAngle, minVerticalAngle, maxVerticalAngle);
        transform.localRotation = Quaternion.Euler(m_VerticalAngle, transform.localEulerAngles.y, 0f);
    }
 
    public void ResetRotation()
    {
        m_VerticalAngle = 0f;
        transform.localRotation = m_OriginalRotation;
    }
}
参数

| 参数名称 | 描述 | | ---------------- | ------------------------------------------------------------ | | minVerticalAngle | 垂直方向旋转的最小角度,单位为度。例如,如果您将其设置为 -90 度,则相机将不能看向下方。默认值为 -90 度。 | | maxVerticalAngle | 垂直方向旋转的最大角度,单位为度。例如,如果您将其设置为 90 度,则相机将不能看向上方。默认值为 90 度。 | | rotationRange | 水平方向旋转的范围,单位为度。例如,如果您将其设置为 180 度,则相机可以全方向旋转。默认值为 360 度。 | | mouseSensitivity | 鼠标灵敏度。默认值为 10。 |