Version: 2020.3
public bool Raycast (Vector3 targetPosition, out AI.NavMeshHit hit);

参数

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. } } }