Unity控制人物匀速移动脚本
时间: 2023-07-18 12:09:35 浏览: 105
以下是一个简单的Unity C#脚本,可以用来控制人物的匀速移动:
```csharp
using UnityEngine;
public class CharacterController : MonoBehaviour {
public float speed = 5f; // 人物移动速度
private Vector3 targetPosition; // 目标位置
private bool isMoving = false; // 是否正在移动
void Update() {
if (Input.GetMouseButton(0)) { // 按下鼠标左键
SetTargetPosition(); // 设置目标位置
}
if (isMoving) { // 正在移动
MoveTowardsTarget(); // 移动到目标位置
}
}
void SetTargetPosition() {
// 获取鼠标点击位置
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit)) {
targetPosition = hit.point;
isMoving = true;
}
}
void MoveTowardsTarget() {
// 计算移动方向和距离
Vector3 direction = targetPosition - transform.position;
float distance = direction.magnitude;
// 如果距离小于等于移动速度乘以时间差,就到达目标位置
if (distance <= speed * Time.deltaTime) {
transform.position = targetPosition;
isMoving = false;
} else { // 否则按匀速移动计算移动距离
Vector3 movement = direction.normalized * speed * Time.deltaTime;
transform.Translate(movement, Space.World);
}
}
}
```
这个脚本可以让人物在鼠标点击的位置匀速移动,可以通过修改speed变量来调整人物的移动速度。在Update方法中,如果鼠标左键被按下,就调用SetTargetPosition方法设置目标位置,然后在MoveTowardsTarget方法中实现匀速移动。需要注意的是,这个脚本中使用了射线(Raycast)来获取鼠标点击的位置,如果需要使用其他的方式获取目标位置,可以修改SetTargetPosition方法。
阅读全文