unity 按键盘a d相机进行平滑旋转 按w s人物进行平滑移动
时间: 2024-02-18 12:02:11 浏览: 122
输入操作,触屏,键鼠,相机移动旋转
要实现按键盘 A、D 进行相机平滑旋转,按键盘 W、S 进行人物平滑移动,可以使用以下步骤:
1. 创建一个空物体作为摄像头的父物体,并将摄像头作为其子物体。将人物模型放在场景中,添加一个 Rigidbody 组件和一个 Character Controller 组件作为人物控制器。
2. 编写脚本,控制相机旋转和人物移动。可以使用 Quaternion.Slerp 函数来实现平滑的旋转过渡,使用 CharacterController.Move 函数来实现平滑的移动效果。代码如下:
```csharp
public class PlayerController : MonoBehaviour
{
public Transform cameraTransform; // 相机的 Transform
public float moveSpeed = 5.0f; // 移动速度
public float rotateSpeed = 5.0f; // 旋转速度
private Transform _transform;
private CharacterController _controller;
void Start()
{
_transform = transform;
_controller = GetComponent<CharacterController>();
}
void Update()
{
// 相机旋转
float horizontal = Input.GetAxis("Horizontal") * rotateSpeed; // 获取水平方向旋转角度
cameraTransform.Rotate(0, horizontal, 0); // 水平旋转
// 人物移动
float vertical = Input.GetAxis("Vertical") * moveSpeed; // 获取垂直方向移动速度
Vector3 moveDirection = cameraTransform.forward * vertical; // 计算移动方向
_controller.Move(moveDirection * Time.deltaTime); // 移动
// 控制旋转范围,避免摄像头旋转过头
float x = cameraTransform.eulerAngles.x;
if (x > 180)
x -= 360;
x = Mathf.Clamp(x, -30, 60);
cameraTransform.eulerAngles = new Vector3(x, cameraTransform.eulerAngles.y, 0);
}
}
```
3. 将该脚本挂载到人物模型上,将相机 Transform 和人物控制器设置到脚本中,调整移动速度和旋转速度即可。
希望这个答案能够帮助到你,如有任何问题,欢迎继续提问。
阅读全文