编写AI巡逻的具体逻辑,AI需要先获取当前场景中是否存在巡逻点,如果有巡逻路径,就前往,检测是否到达当前巡逻点,就切换到下一个巡逻点
PatrolPath:
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
- namespace RPG.Control
- {
- public class PatrolPath : MonoBehaviour
- {
-
-
- // 在绘制 Gizmos,用于可视化巡逻路径
- private void OnDrawGizmos()
- {
- for (int i = 0;i< transform.childCount; i++) // 遍历所有子对象(每个子对象是一个路径点)
- {
- int j = GetNextIndex(i);// 获取当前点的下一个点的索引
- Gizmos.color = Color.red; // 设置 Gizmos 的颜色为红色
- Gizmos.DrawSphere(GetWaypoint(i), 1f); // 绘制当前路径点的位置
- Gizmos.DrawLine(GetWaypoint(i),GetWaypoint(j)); // 绘制从当前路径点到下一个路径点的连线
- }
- }
-
- public int GetNextIndex(int i)// 获取当前索引点的下一个索引
- {
- if(i +1 == transform.childCount) // 如果当前点是最后一个点,则返回第一个点的索引
- {
- return 0;
- }
- return i + 1; // 否则返回下一个点的索引
- }
- public Vector3 GetWaypoint(int i) // 获取指定索引的路径点位置
- {
- return transform.GetChild(i).position;
- }
- }
- }
复制代码
AIController:
复制代码
|