unity 第一人称旋转
时间: 2023-09-13 20:07:54 浏览: 100
在 Unity 中,第一人称视角旋转通常是通过鼠标控制的。以下是一个简单的示例代码:
```csharp
public float mouseSensitivity = 100f;
public Transform playerBody;
float xRotation = 0f;
void Start()
{
Cursor.lockState = CursorLockMode.Locked;
}
void Update()
{
float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;
xRotation -= mouseY;
xRotation = Mathf.Clamp(xRotation, -90f, 90f);
transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
playerBody.Rotate(Vector3.up * mouseX);
}
```
这个示例代码假设玩家的身体是由一个 `Transform` 组件表示的,并且将其作为公共变量暴露出来。它还使用一个名为 `mouseSensitivity` 的公共变量来控制鼠标灵敏度。在 `Start` 函数中,我们将鼠标锁定到屏幕中心,以便在游戏进行时不会意外移动鼠标。
在 `Update` 函数中,我们获取鼠标的水平和垂直移动量,并将其乘以鼠标灵敏度和帧时间,然后将其用于旋转视角。我们在 `xRotation` 上减去垂直移动量,并使用 `Mathf.Clamp` 函数将其限制在 -90 度到 90 度之间,以防止玩家将头旋转到奇怪的角度。我们将旋转应用于 `transform.localRotation` 上,以便只影响视角,而不影响身体的旋转。最后,我们使用 `playerBody.Rotate` 函数将玩家的身体沿 Y 轴旋转,以便在左右移动时正确旋转身体。
阅读全文