Unity多单位战斗寻路问题的一种解决办法
Unity提供了NavMesh 导航组件
NavMesh是在实践中通用性最好的一种导航方式,但是Unity的实现并没有完全提供一个开放*的API。
主要的麻烦是:
1.不能脱离Editor生成NavMesh。
2.NavMesh信息保存在场景中,必须随场景加载。
他的使用方式主要是在Editor阶段设定障碍关系。
NavMeshAgent 作为移动单位来寻路
NavMeshObstacle 作为动态障碍
NavMeshAgent和NavMeshObstacle作为障碍默认都是采用了一种像物理系统的方式去绕开,默认表现并不好
过去在我们的实践中还有一个新的问题
3. NavMeshObstacle障碍是用碰撞圆柱体硬挤,并没有影响路径。有障碍的地方其他单位是硬挤过去,效果很不好。
一直以来这些问题让这个NavMesh系统有一些鸡肋。
unity某个版本给NavMeshObstacle 增加了一个选项
意义非常重大,可惜的是我并没有看到资料介绍他,偶然才发现他的意义。
这个勾选上带来的意义是
运行中可以实时计算navmesh
这样的修改才可以影响寻路系统,实现停止的单位影响其他单位的路径。
问题2 和 问题3都可以一定程度上的解决
经实验,这个功能的范围始终是个矩形。
与模型无关,尺寸取得是模型的边界。
无论什么形状的模型,都取他边界的矩形。可以旋转。