Unity的人工智能库,包含了许多AI相关的类和函数,给出一个脚本,把相关API使用一遍
时间: 2024-03-26 07:41:25 浏览: 64
Python库 | UnityPy-1.8.6.tar.gz
好的,下面我将给出一个使用Unity的人工智能库的脚本,其中包括了对AI相关的类和函数的使用。
脚本如下:
```csharp
using UnityEngine;
using UnityEngine.AI;
public class AIDemo : MonoBehaviour
{
public Transform target; // 目标点
private NavMeshAgent agent; // 导航代理
public float detectionRange = 10f; // 检测范围
private bool isChasing = false; // 是否正在追逐
void Start()
{
agent = GetComponent<NavMeshAgent>(); // 获取导航代理组件
}
void Update()
{
if (isChasing)
{
ChaseTarget();
}
else
{
WanderAround();
}
}
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
isChasing = true; // 进入追逐状态
}
}
void OnTriggerExit(Collider other)
{
if (other.CompareTag("Player"))
{
isChasing = false; // 退出追逐状态
}
}
void WanderAround()
{
if (agent.remainingDistance < 0.5f)
{
Vector3 newPos = RandomNavSphere(transform.position, 5f, -1); // 在半径为5的球形区域内随机生成一个新的位置
agent.SetDestination(newPos); // 设置新的目标点
}
}
void ChaseTarget()
{
if (target != null && Vector3.Distance(transform.position, target.position) < detectionRange)
{
agent.SetDestination(target.position); // 追逐目标
}
else
{
isChasing = false; // 目标超出检测范围,退出追逐状态
}
}
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`等类和函数来实现AI的巡逻和追逐目标等功能。
在脚本中,首先在`Start()`函数中获取`NavMeshAgent`组件,然后在`Update()`函数中根据当前的状态选择执行`WanderAround()`函数或者`ChaseTarget()`函数。在`WanderAround()`函数中,当AI到达目标点时,使用`RandomNavSphere()`函数来随机生成一个新的目标点。在`ChaseTarget()`函数中,当AI检测到目标在检测范围内时,使用`SetDestination()`函数来追逐目标。
在`OnTriggerEnter()`和`OnTriggerExit()`函数中,当AI检测到玩家进入或离开检测范围时,设置`isChasing`变量为`true`或`false`,来切换AI的状态。
`RandomNavSphere()`函数用于在半径为`dist`的球形区域内随机生成一个新的位置。在函数中,首先使用`Random.insideUnitSphere`函数在球形区域内生成一个随机方向,然后在该方向上采样一个可行的位置,并将其作为新的目标点返回。
需要注意的是,在使用`NavMesh`相关函数时,需要确保场景中已经生成了NavMesh,否则将无法进行寻路。
阅读全文