unity敌人随机在一定范围内行走
时间: 2023-11-27 18:51:34 浏览: 156
Unity-多个物体在一定范围内随机改变角度和大小
你可以使用Unity中的NavMesh Agent组件为敌人添加导航,然后使用C#编写脚本来控制敌人在一定范围内漫游。以下是一个简单的实现:
1. 在场景中创建一个空物体,作为敌人的父级。
2. 将NavMesh Agent组件添加到敌人模型上,并为其设置导航目标点。
3. 创建一个C#脚本,将其添加到敌人父级物体上。
4. 在脚本中定义一个范围变量,用于限制敌人漫游的范围。
5. 在脚本的Update方法中,使用Random类生成一个随机位置,并检查该位置是否在范围内。
6. 如果在范围内,将敌人的导航目标点设置为该位置。
7. 如果不在范围内,将敌人的导航目标点设置为敌人的起始位置。
以下是代码示例:
```csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class EnemyController : MonoBehaviour
{
public float roamRange = 10f; //敌人漫游的范围
private Vector3 startPosition;
private NavMeshAgent agent;
void Start()
{
agent = GetComponentInChildren<NavMeshAgent>();
startPosition = transform.position;
}
void Update()
{
if (agent.remainingDistance < 0.5f)
{
Vector3 randomDirection = Random.insideUnitSphere * roamRange;
randomDirection += transform.position;
NavMeshHit hit;
NavMesh.SamplePosition(randomDirection, out hit, roamRange, 1);
Vector3 finalPosition = hit.position;
agent.SetDestination(finalPosition);
}
if (Vector3.Distance(transform.position, startPosition) > roamRange)
{
agent.SetDestination(startPosition);
}
}
}
```
这是一个简单的实现,你可以根据需要进行修改和优化。
阅读全文