📅  最后修改于: 2023-12-03 15:05:44.752000             🧑  作者: Mango
该脚本是用于 Unity 游戏引擎中实现视角根据鼠标移动而旋转的脚本。该脚本使用 C# 语言编写,并可以适用于 Unity 2021 版本及以后的版本。
将脚本附加到需要实现鼠标视角旋转的对象上。
在 Unity 编辑器中,打开物体的 Inspector 窗口,可以看到脚本的参数。您可以根据需要调整以下参数:
运行游戏后,您可以使用鼠标来旋转视角。
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。 |