NavMeshAgent 导航网格代理

描述:

导航网格代理。该组件附加于游戏中移动角色上,允许使用导航网格在场景中进行导航。

变量说明
acceleration该代理跟随路径的最大加速度,指定单位/秒^2。
angularSpeed跟随路径的最大转向速度单位(度/秒)。
areaMask指定导航网格区域是可行的。该变区域遮挡将会使路径变旧(请参考isPathStale)。
autoBraking该代理是否自动制动去避免超过目的点?
autoRepath当现在的路径变成无效时该代理是否尝试获取新路径?
autoTraverseOffMeshLink该代理是否自动穿过OffMeshLinks?
avoidancePriority逃避优先级。
baseOffset对象自身的相对垂直位移。
currentOffMeshLinkData当前分离网格连接数据。
desiredVelocity该代理的需求速度包括任何逃避时潜在的贡献(只读)。
destination获取或者尝试去在世界空间单位中设置代理的目的地。
hasPath当前代理是否有路径(只读)?
height代理经过障碍物下方目的高度,等等。
isOnNavMesh当前代理束缚到导航网格?(只读)
isOnOffMeshLink当前代理位置是否在OffMeshLink上?(只读)
isPathStale当前路径是否是旧路径。(只读)
nextOffMeshLinkData在当前路径上的下一个OffMeshLinkData。
nextPosition获取或者设置导航网格的模拟仿真位置。
obstacleAvoidanceType逃避的质量的级别。
path获取或者设置当前路径属性。
pathPending该路径在被计算的过程中但是还没准备?(只读)
pathStatus当前路况的状态(完整,局部或者无效)。
radius代理的逃避半径。
remainingDistance在当前路径上代理的位置与目的地之间的距离。(只读)
speed当跟随路径时的最大移动速度。
steeringTarget获取当前沿着路径转向的目标(只读)。
stoppingDistance从目标位置开始,在该距离之内刹车。
updatePosition获取或者设置变换位置与模拟代理位置同步。默认值为true。
updateRotation代理是否应该更新方向?
velocity使用NavMeshAgent 组件的当前速度,或者手动设置速度去控制代理。

方法说明
ActivateCurrentOffMeshLink启用或者禁用当前分离网格链接。
CalculatePath计算出路径指定点并存储结果路径。
CompleteOffMeshLink在当前分离网格链接上完成运动。
FindClosestEdge查找导航网格最近的边缘。
GetAreaCost当穿过特别类型的区域时获取路径计算成本。
Move应用相对运动到当前位置。
Raycast在导航网格中朝着目标方向追踪直线路径而不移动代理。
ResetPath清除当前路径。
Resume暂停之后沿着当前路径重新恢复运动。
SamplePathPosition沿着当前路径的样本位置。
SetAreaCost设置穿越区域的区域类型的成本。
SetDestination设置或者更新目的地因此触发计算新的路径。
SetPath分配新路径给该代理。
Stop该代理沿着它的当前路径的刹车运动。
Warp弯曲代理提供位置。

  1. NavMeshPath path = new NavMeshPath ();
  2. bool havePath = m_pNavAgent.CalculatePath (m_pTarget.position, path);
  3. float fGrassCost = m_pNavAgent.GetLayerCost (4);
  4. if (fGrassCost == 3) {
  5. }
  6. m_pNavAgent.SetLayerCost(3, 10);
  1. if (m_pNavAgent.isOnOffMeshLink) { // 判断是否到达起点
  2. m_fTimeCount += Time.deltaTime;
  3. Vector3 currtPos = Vector3.Lerp(m_pNavAgent.currentOffMeshLinkData.startPos, m_pNavAgent.currentOffMeshLinkData.endPos, m_fTimeCount);
  4. currtPos.y += Mathf.Sin(Mathf.Clamp01(m_fTimeCount) * Mathf.PI)*4;
  5. transform.position = currtPos;
  6. if(Vector3.Distance(transform.position, m_pNavAgent.currentOffMeshLinkData.endPos) < 0.5f)
  7. {
  8. m_pNavAgent.CompleteOffMeshLink(); // 完成移动后结束移动过程。
  9. }
  10. }

?