unity写敌人随机巡逻的脚本
时间: 2024-03-21 08:38:52 浏览: 81
好的,下面是一份使用Transform和Random实现敌人随机巡逻的示例脚本:
```csharp
using UnityEngine;
public class EnemyController : MonoBehaviour
{
public float patrolSpeed = 2f;
public float waitTime = 3f;
private Transform target;
private bool isWaiting;
void Start()
{
target = new GameObject("Target").transform;
target.position = GetRandomPointOnMap();
isWaiting = false;
}
void Update()
{
if (Vector3.Distance(transform.position, target.position) < 0.5f && !isWaiting)
{
GetComponent<Rigidbody>().velocity = Vector3.zero;
isWaiting = true;
Invoke("ResumePatrol", waitTime);
}
if (!isWaiting)
{
GetComponent<Rigidbody>().velocity = (target.position - transform.position).normalized * patrolSpeed;
}
}
Vector3 GetRandomPointOnMap()
{
Vector3 randomPosition = Random.insideUnitSphere * 10f;
randomPosition.y = 0f;
return randomPosition;
}
void ResumePatrol()
{
isWaiting = false;
target.position = GetRandomPointOnMap();
}
}
```
在这份脚本中,我们首先在Start方法中生成了一个目标点,并将其存储在一个Transform变量中。然后,在Update方法中,判断敌人是否到达了目标点,如果到达了目标点,则暂停移动一段时间。如果没有到达目标点,则继续向目标点移动。在移动的过程中,我们使用Rigidbody组件来控制敌人的移动,以便让其能够在地形上自由移动。
希望这份示例脚本可以帮助你完成敌人随机巡逻的实现!
阅读全文