给我一份用键盘控制角色在3D场景中移动的unity脚本
时间: 2024-03-08 18:49:37 浏览: 160
当然,以下是一个简单的用键盘控制角色在3D场景中移动的Unity脚本:
```csharp
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float speed = 5f;
private Rigidbody rb;
private Vector3 moveDirection;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
// 获取按键输入
float moveX = Input.GetAxisRaw("Horizontal");
float moveZ = Input.GetAxisRaw("Vertical");
moveDirection = new Vector3(moveX, 0f, moveZ).normalized;
}
void FixedUpdate()
{
// 移动角色
rb.MovePosition(rb.position + transform.TransformDirection(moveDirection) * speed * Time.fixedDeltaTime);
}
}
```
解释一下:这个脚本中,我们定义了一个速度变量 `speed`,用来调整角色移动的速度。在 `Start` 函数中,我们获取了角色的 `Rigidbody` 组件。在 `Update` 函数中,我们获取了键盘输入,并将其转换成一个三维向量 `moveDirection`。在 `FixedUpdate` 函数中,我们使用 `Rigidbody.MovePosition` 函数来移动角色。需要注意的是,我们使用 `transform.TransformDirection` 函数将移动方向从局部坐标系转换到世界坐标系。
同样的,为了使角色在各个设备上的移动速度一致,我们使用了 `FixedUpdate` 函数,而不是 `Update` 函数。
阅读全文