Unity的人工智能库,包含了许多AI相关的类和函数,例如寻路、路径规划等,给出一个脚本,把相关API使用一遍
时间: 2024-03-26 18:41:22 浏览: 141
好的,下面我将给出一个使用Unity的人工智能库的脚本,其中包括了寻路、路径规划等相关API的使用。
脚本如下:
```csharp
using UnityEngine;
using UnityEngine.AI;
public class AIController : MonoBehaviour
{
public Transform target; // 目标点
private NavMeshAgent agent; // 导航代理
void Start()
{
agent = GetComponent<NavMeshAgent>(); // 获取导航代理组件
}
void Update()
{
if (target != null)
{
agent.SetDestination(target.position); // 设置目标点
}
}
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Obstacle"))
{
Vector3 newPos = RandomNavSphere(transform.position, 5.0f, -1); // 在半径为5的球形区域内随机生成一个新的位置
agent.SetDestination(newPos); // 设置新的目标点
}
}
Vector3 RandomNavSphere(Vector3 origin, float dist, int layermask)
{
Vector3 randDir = Random.insideUnitSphere * dist; // 在球形区域内生成随机方向
randDir += origin;
NavMeshHit navHit;
NavMesh.SamplePosition(randDir, out navHit, dist, layermask); // 在随机方向上采样一个可行的位置
return navHit.position;
}
}
```
上面的脚本演示了如何使用Unity的人工智能库中的`NavMeshAgent`和`NavMesh`等类和函数来实现目标点跟随、随机寻路等功能。
在脚本中,首先在`Start()`函数中获取`NavMeshAgent`组件,然后在`Update()`函数中调用`SetDestination()`函数来设置目标点。在`OnTriggerEnter()`函数中,当碰撞到障碍物时,使用`RandomNavSphere()`函数来随机生成一个新的目标点,并将其设置为新的目标点。
`RandomNavSphere()`函数用于在半径为`dist`的球形区域内随机生成一个新的位置。在函数中,首先使用`Random.insideUnitSphere`函数在球形区域内生成一个随机方向,然后在该方向上采样一个可行的位置,并将其作为新的目标点返回。
需要注意的是,在使用`NavMesh`相关函数时,需要确保场景中已经生成了NavMesh,否则将无法进行寻路。
阅读全文