unity敌人随机在一定范围内行走
时间: 2023-11-27 20:51:23 浏览: 27
你可以使用以下步骤来实现:
1.首先创建一个敌人预制体并添加一个 NavMeshAgent 组件,以便敌人可以在 NavMesh 上行走。
2.然后,你需要在场景中添加一个 NavMesh。
3.接下来,创建一个目标点(可以使用空对象)并放置在敌人可以到达的范围内。
4.在敌人的脚本中添加以下代码:
```csharp
public class Enemy : MonoBehaviour
{
public float wanderRadius;
public float wanderTimer;
private Transform target;
private NavMeshAgent agent;
private float timer;
void OnEnable()
{
agent = GetComponent<NavMeshAgent>();
timer = wanderTimer;
}
void Update()
{
timer += Time.deltaTime;
if (timer >= wanderTimer)
{
Vector3 newPos = RandomNavSphere(transform.position, wanderRadius, -1);
agent.SetDestination(newPos);
timer = 0;
}
}
public static Vector3 RandomNavSphere(Vector3 origin, float dist, int layermask)
{
Vector3 randDirection = Random.insideUnitSphere * dist;
randDirection += origin;
NavMeshHit navHit;
NavMesh.SamplePosition(randDirection, out navHit, dist, layermask);
return navHit.position;
}
}
```
5.在 Inspector 视图中向 Enemy 脚本添加变量 wanderRadius 和 wanderTimer。其中 wanderRadius 是敌人随机游走的半径,而 wanderTimer 是计时器,表示多久后敌人将寻找新的目标点。
6.最后,在场景中将敌人和目标点关联起来,敌人就会随机在目标点周围游走了。
希望这个解决方案能够帮助到你。