文章目录

  • 打开导航页面
  • Agents 可以设置多种导航类型
  • Areas
  • Bake
  • Object
  • 导航组件
  • Nav Mesh Agent 寻路组件
  • Off-Mesh Link 跳跃
  • Nav Mesh Obstacle 动态路障
  • 导航类
  • NavMeshAgent
  • 字段
  • 方法
  • AreaMask值


打开导航页面

Window ==》Navigation

高德用的unity 3d么 unity 高德地图导航_字段

Agents 可以设置多种导航类型

高德用的unity 3d么 unity 高德地图导航_高德用的unity 3d么_02


AgentTypes:设置不同的导航者类型

Name:导航者的名字

Radius:导航碰撞体的半径

Height:导航碰撞体的高度

SetpHeight:导航者的脚步高度

MaxSlope:导航者爬坡的最大坡度

Areas

高德用的unity 3d么 unity 高德地图导航_unity3d_03


对导航设置不同的区域

Name:区域名称

Cost:导航消费值

通过不同区域的导航消费值的高低来计算那一条导航路径消费最低

Bake

导航前需要先烘焙导航网格

高德用的unity 3d么 unity 高德地图导航_当前路径_04


Agent Radius:代理半径,地图宽度大于2倍半径的道路才可以通过。

Agent Height:导航高度,导航代理能通过的最低高度

Max Slope:最大斜坡角度,导航代理最大能爬上的斜坡角度

Step Height:脚步高度,导航代理能通过的最大台阶高度

Drop Height:跳下高度,导航代理能跳下的最大高度

Jump Distance:跳跃距离,导航代理能跳过得最大距离

Manual voxel size :是否可以改变烘焙操作过程中的精确性

Voxel Size:体素大小,默认的体素设置最好的权衡了准确性和烘焙速度。

Min Region Area:允许你剔除掉小的非连接NavMesh区域,当NavMesh区域小于指定值时将被剔除

Height mesh :允许你为角色提供更精准的位置

Clear:清除导航网格

Bake:将设置烘焙成网格

Object

高德用的unity 3d么 unity 高德地图导航_高德用的unity 3d么_05


ALL:所有对象 Mesh Renderers:带此组件的对象 Terrains:地形对象

Navigation Static :上面说了只有选中了Navigation Static之后才能进行网格导航。

Generate OffMeshLinkes:处于勾选状态的话,网格导航可以Jump和Drop。

Navigation Area:导航网格层

导航组件

在进行添加组件前,先将地形中不能移动的障碍物将Navigation Static勾选上

高德用的unity 3d么 unity 高德地图导航_寻路_06


Static:

Nothing:没有任何属性;

Everyting:所有的都是静态的,Unity可以优化;

LightMap Static:光照阴影是固定不变的;

Occluder Static: 遮挡静态

Batching Static:静态批处理

Navigation Static:导航静态

Occludee Static:被遮挡静态

Off Mesh Link Generation:连接两个不连续的区域,在导航时可以在两个点进行跳跃

Reflection Probe Static:反射

Nav Mesh Agent 寻路组件

高德用的unity 3d么 unity 高德地图导航_高德用的unity 3d么_07


Agent Type:代理类型,选择导航类型

base offset : 导航碰撞体底部和挂载该组件的物体中心点的偏移

Speed:最大移动速度
Angular Speed :最大转向速度
Acceleration :最大加速度
Stopping distance:最后停留点与目标点的距离
Auto Braking:是否自动刹车,如果勾选在达到目标点之前会慢慢减速至0

Radius:导航组件的半径
Height:导航组件的高度
Quality:躲避障碍物的精确度,越高耗能越大
Priority:0-99之间,两个导航者在一起时,低的先走,高的避开

Auto Traverse OffMesh Link:导航者到达导航跳跃点,是否自动越过起点到终点
Auto Repath:是否自动再次定位,导航者不能达到目标点时停留在某一处,如果突然有一条路能达到目标点,这个时候如果这个开启则会重新寻路,否则不会
Area Mask:规定导航着可以行走的区域,自己可以定义不同的导航网格,在烘焙导航网格的时候

Off-Mesh Link 跳跃

高德用的unity 3d么 unity 高德地图导航_寻路_08


Start:跳跃的起点

End:跳跃的终点

Cost Override:成本覆盖,值为正,则在路径请求处理中计算路径成本时使用该属性,否则,我们使用默认成本

BiDirectional:双向开关,若不勾选则只能从Start到End跳跃

Activated:导航是否可以使用该跳跃路径

Auto Update Positions:勾选则自动完成跳跃,不勾选则可通过代码实现跳跃

Navigation Area:设置导航区域

Nav Mesh Obstacle 动态路障

高德用的unity 3d么 unity 高德地图导航_字段_09


Shape:选择形状,有Box和Capsule两种类型

Center:形状的位置

Size:形状的大小

Carve:选中后导航体会自动换路,不会在一个树上吊死(有其他路的话)

  • Move Threshold:超过这个值导航体才会重新生成网格
  • Time To Stationary:超过这个值的时间才会开始生成网格
  • Carve Only Stationary:是否实时生成网格

导航类

NavMeshAgent

字段

名称

作用

acceleration

最大加速度,面板上的辣锅

agentTypeID

导航区域的ID

angularSpeed

最大转向速度

areaMask

指定哪一个NavMesh区域是可用的

autoBraking

自动刹车,避免超过目的地点

autoRepath

自动重新获取路径

autoTraverseOffMeshLink

自动穿过Off Mesh Link(上面有介绍)

avoidancePriority

当代理是一个障碍物时,级别低的代理被忽视

baseOffset

基础偏移

currentOffMeshLinkData

当前分离路⾯导航的数据,有字段:activated:是否处于激活状态 startPos:分离路⾯起点 endPos:分离路⾯终点 offMeshLink:是否是手动放置的 valid:链接是否有效 linkType:LinkTypeManual:使⽤OffMeshLink组件完成分离路⾯导航 LinkTypeDropDown:跳下⽅式 LinkTypeJumpAcross:⽔平跳跃⽅式

desiredVelocity

期望速度

destination

获取或设置目的地

hasPath

当前是否有路径到达目的地

height

可以通过的高度

isOnNavMesh

该代理当前绑定到导航网格吗

isOnOffMeshLink

代理当前的位置在一个OffMeshLink上吗

isPathStale

当前路径是否陈旧

isStopped

是否开始/停止导航

navMeshOwner

返回代理当前所在的NavMesh的拥有对象

nextOffMeshLinkData

当前路径的下一个OffMeshLinkData

nextPosition

下一步应该走的位置

obstacleAvoidanceType

规避质量的水平,上图有,就是修改Quality

path

设置或者获取当前路径,返回的是NavMeshPath类型,有字段corners:路径的拐点 status:路径的状态(到达目标,中途到达目标或完全无效) 和方法ClearCorners:从路径中删除所有拐角点 GetCornersNonAlloc:计算路径的拐角

pathPending

进程中的路径正在被计算但是还没转备好,bool值

pathStatus

返回的是NavMeshPathStatus类型,当前路径的状态(PathComplete:完成,PathPartial:局部或PathInvalid:无效)

radius

代理的避让半径,如上图的Radius

remainingDistance

在当前路径中,代理的位置和目标位置的距离,如果这个距离是未知的那么这个值是infinity

speed

在一条路径上行走时的最大移动速率

steeringTarget

获得路径上的当前转向点

stoppingDistance

当距离目标位置这个距离的时候停止,如上图Stopping distance

updatePosition

获取或设置transform position是否与模拟的代理位置同步。默认为true

updateRotation

代理是否更新方向

updateUpAxis

允许您指定是将代理对齐到NavMesh的上轴还是将其放置在其上的链接

velocity

获取NavMeshAgent组件的当前速度,或者手动为代理设置一个速度

方法

名称

作用

ActivateCurrentOffMeshLink(bool activated)

激活当前分离网格链接

CalculatePath(Vector3 targetPosition, NavMeshPath path)

targetPositon 路径要求的重点位置。path 作为结果的路径,如果路径被找到返回true

CompleteOffMeshLink

结束当前OffMeshLink上的移动,代理会移动到离当前OffMeshLink另一端最近的有效的位置

FindClosestEdge(out NavMeshHit hit)

hit 掌握定位结果的性能返回的NavMeshHit 包含最近的边缘上的最近的点的位置和细节,distance:到击中点的距离 hit:命中时设置标志 mask:在命中点指定 NavMesh:区域的蒙版 normal:(不清楚) position:命中位置。如果最近的边缘被找到返回True

GetAreaCost(int areaIndex)

areaIndex 区域索引,返回指定的区域索引当前的消耗

Move(Vector3 offset)

offset 相对的移动向量,申请一个相对当前位置的移动,如果代理有一个路径他将被校正

Raycast(Vector3 targetPosition, out NavMeshHit hit)

targetPosition 将要移动到的终点 hit 被射线发现的障碍物的属性(如果有) ,如果代理和目标位置之间有障碍物返回True,否则false

ResetPath

清除当前路径,路径清除之后代理不会寻找一个新的路径直到SetDestination 被调用,如果调用该函数时在OffMeshLink上,则会立即完成

SamplePathPosition(int areaMask, float maxDistance, out NavMeshHit hit)

areaMask 一个位域标志,指定了寻路是哪个区域可以通过 maxDistance 超出这段距离则终止搜索路径 hit 保存结果地理位置的属性 ,如果在maxDistance之前结束返回true,否则false

SetAreaCost(int areaIndex, float areaCost)

areaIndex 区域索引 areaCost 指定的区域的新的消耗,设置穿过某种类型的区域时的消耗,如果你启用或废除代理,那么消耗将会被重置为默认值

SetDestination(Vector3 target)

target 导航到的目标点,如果目标地址请求成功返回True,否则false

SetPath(NavMeshPath path)

path 新的寻路路径,指定一段新路径给代理

Warp(Vector3 newPosition)

让代理移动到指定的newPosition,之后代理不做任何移动

AreaMask值

-1表示全选
若是挑选部分层,则该值的计算方法为:层编号-1,此值作为2的幂,将所有选定层的值相加
例如,选定1,3,5,6层AreaMask的值
2(1-1)+2(3-1)+2(5-1)+2(6-1)=53