设计一个 Unity 脚本,实现一个简单的敌人巡逻行为,敌人在两个点之间来回移动。
时间: 2024-12-16 10:22:19 浏览: 8
设计一个简单的敌人巡逻脚本,我们通常会使用Unity自带的Vector3类以及Coroutine功能。以下是一个基础示例,假设敌人的起始位置是StartPoint和终点是EndPoint:
```csharp
using UnityEngine;
public class EnemyPatrol : MonoBehaviour
{
public Transform startPoint;
public Transform endPoint;
private Vector3 currentWaypoint = startPoint.position; // 当前巡逻位置
void Start()
{
// 设置初始巡逻方向
PatrolDirection = startPoint.position - endPoint.position;
Patrol();
}
void Update()
{
if (Mathf.Abs(Vector3.Distance(currentWaypoint, endPoint.position)) < 0.1f)
{ // 判断是否到达终点附近,切换巡逻方向
PatrolDirection *= -1;
currentWaypoint = endPoint.position;
}
else
{
// 移动到下一个巡逻位置
transform.position = currentWaypoint + PatrolDirection * Time.deltaTime;
}
}
void Patrol()
{
StartCoroutine(PatrolCoroutine());
}
IEnumerator PatrolCoroutine()
{
while (true)
{
yield return new WaitForSeconds(Random.Range(1f, 3f)); // 随机间隔时间巡逻
currentWaypoint += PatrolDirection;
if (currentWaypoint == endPoint.position) break; // 巡逻回到起点则跳出循环
}
}
}
```
在这个脚本中,敌人会在起始点和终点之间随机间隔一段时间巡逻,一旦接近终点就会改变巡逻方向。你可以将这个脚本添加到一个敌人的GameObject上,并设置好startPoint和endPoint属性。
阅读全文