Unity NavMeshObstacle组件详解

  1. Nav Mesh Obstacle组件的使用情况:我们在使用NavMesh导航的时候,都会把静止的物体,勾上Static,然后烘焙一张NavMesh,导航网格就能知道行走区域。但是如果出现动态的障碍,比如一堵墙原本不能通过,现在又需要通过,这时候就需要用到Nav Mesh Obstacle,这里可能会想到空气墙,但是空气墙使用的是Rigidbody,如果速度过快可能就会出现穿过的问题。

  1. Nav Mesh Obstacle组件不需要依赖于cube等模型,直接挂载到transform上就能使用,下面记录一下组件的几个属性。

  • Shape:障碍物形状

  • Center:障碍物中性点

  • Size:障碍物大小

  • Carve:勾选则开始雕刻NavMesh,并且使用下面属性。

  • Move Threshold:移动阈值。从当前位置,移动多远距离,才满足雕刻条件。(例如:填写10,那么移动1-9的距离,NavMesh都不会重新烘焙)

  • Time To Stationary: 静止时间。移动之后,需要等待多长时间,这个障碍物才能算是静止物体,这个属性需要和下一条属性一起使用。

  • Carve Only Stationary:仅雕刻静止物体。这里指的静止物体,就是上一条属性中的静止物体。如果不勾选就表示不仅仅雕刻静止物体,意味着只要移动阈值满足,每帧都会雕刻障碍物NavMesh。

扫描二维码关注公众号,回复: 14771918 查看本文章

总结:

  1. Carve Only Stationary属性不勾选,那么静止时间没用,组件会每帧雕刻,消耗过大,但是移动阈值正常工作。

  1. Carve Only Stationary属性勾选,静止时间生效。表示障碍物移动之后,等待多长时间,变为静止物体,然后去判断一次移动阈值,如果移动阈值不满足,同样不会生效到NavMesh,所以这里就是这个组件自己掌握性能优化的地方。

猜你喜欢

转载自blog.csdn.net/Ling_SevoL_Y/article/details/129590156