targetPosition | 期望的移动终点位置。 |
hit | 射线检测到的障碍物的属性(如果有)。 |
bool 如果代理与目标位置之间存在障碍物,则为 true,否则为 false。
在导航网格中跟踪一条直线路径到达目标位置,而无需移动代理。
此函数遵循代理位置和指定目标位置之间的"射线"的路径。
如果在线路中遇到
障碍物,则返回 true,且障碍对象的位置和详细信息存储
在 hit
参数中。
这可用于检查角色和目标对象之间是否存在
清晰的镜头或视线。
此函数相较类似的 Physics.Raycast
更加可取,因为线路跟踪是使用导航网格以一种更加简单的方式完成的,
并且处理开销较低。
using UnityEngine; using UnityEngine.AI;
public class ExampleClass : MonoBehaviour { public Transform target; private NavMeshAgent agent;
void Start() { agent = GetComponent<NavMeshAgent>(); }
void Update() { NavMeshHit hit; if (!agent.Raycast(target.position, out hit)) { // Target is "visible" from our position. } } }