unity 鼠标控制相机上下左右旋转,wsad控制前后左右移动
时间: 2024-09-14 09:06:40 浏览: 43
在Unity中,你可以通过编写脚本来实现鼠标控制相机的旋转和键盘WASD键控制相机的移动。首先,确保已经有一个游戏对象作为相机的主体,并且这个对象上绑定了Camera组件。
1. **鼠标控制相机旋转**:
- 创建一个空的游戏对象作为Camera的Parent,设置它的Transform组件为"Rotation Mode"为"Quaternion"。
- 在Update()函数中,监听Input.GetAxis("Mouse X")和Input.GetAxis("Mouse Y"),这两个分别是鼠标在X轴和Y轴的偏移量,用于调整相机的水平和垂直视角变化。
- 使用`transform.Rotate()`方法,传入对应的偏移值和旋转轴(通常是Vector3.up和Vector3.right),即可实现鼠标滚轮的滚动控制相机的朝向。
```csharp
void Update()
{
float mouseX = Input.GetAxis("Mouse X");
float mouseY = Input.GetAxis("Mouse Y");
transform.Rotate(0, mouseY * sensitivity, 0);
transform.Rotate(mouseX * sensitivity, 0, 0);
}
```
这里的`sensitivity`是一个自定义的缩放系数,用于调节旋转速度。
2. **键盘控制相机移动**:
- 同样在Update()里,监听Input.GetKey(KeyCode.W), KeyCode.A, KeyCode.S, KeyCode.D对应的是WASD四个方向。
- 根据按键状态,计算出相机的平移距离,然后使用`transform.Translate()`方法:
```csharp
float speed = 5f; // 移动速度
Vector3 moveDirection;
if (Input.GetKey(KeyCode.W))
moveDirection += Vector3.forward;
if (Input.GetKey(KeyCode.A))
moveDirection -= Vector3.right;
if (Input.GetKey(KeyCode.S))
moveDirection -= Vector3.forward;
if (Input.GetKey(KeyCode.D))
moveDirection += Vector3.right;
moveDirection *= speed * Time.deltaTime;
transform.Translate(moveDirection);
```
阅读全文