unity 是物体转向在移动
时间: 2024-11-04 17:16:31 浏览: 37
在Unity中,物体在移动的同时进行转向,通常需要结合`CharacterController`、`Rigidbody`或者`Transform`组件来实现。以下是一个基本的示例,假设我们有一个拥有刚体(Rigidbody)的游戏对象,比如角色:
```csharp
using UnityEngine;
public class CharacterMovement : MonoBehaviour
{
public float moveSpeed = 5.0f;
public float turnSpeed = 45.0f;
private Vector3 movementDirection = Vector3.forward; // 默认向前移动
private Transform cameraRig; // 如果有第一人称视角,可以设置为Camera.main.transform
void Start()
{
cameraRig = Camera.main.transform; // 如果不是第一人称,替换为你实际的相机transform
}
void Update()
{
// 接收输入并更新转向
float horizontalInput = Input.GetAxis("Horizontal"); // 假设"Horizontal"是左右移动轴
float verticalInput = Input.GetAxis("Vertical"); // 假设"Vertical"是上下移动轴
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, Mathf.DeltaAngle(cameraRig.eulerAngles.y, horizontalInput * turnSpeed), 0), Time.deltaTime * turnSpeed);
movementDirection = new Vector3(horizontalInput, 0, verticalInput); // 更新移动方向
// 按照新的方向和速度移动
transform.Translate(movementDirection * moveSpeed * Time.deltaTime);
}
}
```
这个脚本会让角色跟随玩家的鼠标或手柄方向变化而转向,并沿着输入轴控制其移动。`Quaternion.Lerp`用于平滑地旋转。
阅读全文