原文http://docs.unity3d.com/ScriptReference/NavMeshAgent.html
继承自Behaviour。
Variables
acceleration
类型:float。
代理的最大加速度。代理并不是精确的按照被navigation system计算出来的直线片段行走,而是使用路点作为中间目的地。这个值是代理在向下一个路点移动时的最大加速的值。(跟现实世界一样,代理按照这个加速度增加自己的速度,直到最大速度)。
angularSpeed
类型:float。
代理的最高旋转速度。这是当代理绕着路点定义的"corner"旋转时的最大速率。真正旋转时的弧度(circle)也受到代理的速度和最大加速度影响。
areaMask
类型:int
指定哪一个NavMesh区域(areas)是可用的。改变areaMask将会使路径陈旧。
这是一个位域。
(这个值可以在游戏中被修改,立即生效)
autoBraking
类型:bool
代理是否自动停止从而避免越过目的地?
如果代理需要在目的点附近着陆(land close),那么他必须及时停止避免越过或者无限的围着目标区域按轨道运行。如果这个属性被设置为true,当代理到达目的地附近时就会自动停止。
autoRepath
类型:bool
如果当前的路径变成无效时,代理是否重新获得一个路径?
当代理到达一个路径片段的结尾和路径陈旧时,一个新的路径需要被计算。
(这个值还不知道到底有什么效果,在游戏中,当areaMask改变,路径陈旧时,路径会被重新计算,立即发生)
autoTraverseOffMeshLink
类型:bool
Off-mesh links被用来链接不连续的NavMesh区域。通常情况下,一个角色应该可以自动的通过或穿过一个环节(link),而这时这个属性被设置为true。然而他也可以被设置为false当需要一些特定的控制的时候。
avoidancePriority
类型:int
躲避优先级
当代理是一个障碍物时,级别低的代理被忽视。有效的范围是从0到99:最终要=0,最不重要=99,默认=50
(注意:以下都是基于没有刚体的情况下
1、如果障碍物是不会移动的,那么请在bake时候连同地形一起bake,这样就会生成较好的navmesh
2、如果障碍物需要移动,那么请在障碍物上添加agent,并设置其大小,然后设置avoidancePriority,低优先级的将被高优先级的agent强行推开)
baseOffset
类型:float
相对于所拥有的游戏对象的垂直位移。
(正值则代理在游戏对象的下方,负值在上方)
currentOffMeshLinkData
类型:OffMeshLinkData
当前的OffMeshLinkData.。(结构体)
如果代理没有在一个OffMeshLink上,OffMeshLinkData被标记为无效。
desiredVelocity
类型:Vector3
期望速度 只读。
Destination
类型:Vector3
设置或者获得代理的目的点,世界坐标系。
获得:
返回设置给代理的目的点。
•如果一个目的点被设置了并且寻路过程还没结束,将会返回一个有效的,离预先设置的位置(position)最近的navmesh位置。
•如果代理没有路径或被请求的路径,返回代理自己的位置。
•如果代理没有映射到navmesh,返回infinity。
设置:
请求代理移动到离目的点最近的有效的位置。
• 路径结果可能是无效的直到几帧之后。使用pathPending获取结果。
• 如果找不到一个有效的最近的位置,将不会请求路径。使用SetDestination并且检查返回值,如果你需要明确的掌握这些情况。
using UnityEngine; [RequireComponent (typeof (NavMeshAgent))] public class FollowTarget : MonoBehaviour { public Transform target; Vector3 destination; NavMeshAgent agent; void Start () { // Cache agent component and destination agent = GetComponent<NavMeshAgent>(); desti