首页 > 代码库 > Unity多单位战斗寻路问题的一种解决办法

Unity多单位战斗寻路问题的一种解决办法

Unity多单位战斗寻路问题的一种解决办法

Unity提供了NavMesh 导航组件

?

NavMesh是在实践中通用性最好的一种导航方式,但是Unity的实现并没有完全提供一个开放自由的API。

主要的麻烦是:

1.不能脱离Editor生成NavMesh。

2.NavMesh信息保存在场景中,必须随场景加载。

?

他的使用方式主要是在Editor阶段设定障碍关系。

NavMeshAgent 作为移动单位来寻路

NavMeshObstacle 作为动态障碍

NavMeshAgent和NavMeshObstacle作为障碍默认都是采用了一种像物理系统的方式去绕开,默认表现并不好

?

过去在我们的实践中还有一个新的问题

3. NavMeshObstacle障碍是用碰撞圆柱体硬挤,并没有影响路径。有障碍的地方其他单位是硬挤过去,效果很不好。

?

一直以来这些问题让这个NavMesh系统有一些鸡肋。

?

unity某个版本给NavMeshObstacle 增加了一个选项

意义非常重大,可惜的是我并没有看到资料介绍他,偶然才发现他的意义。

?

这个勾选上带来的意义是

运行中可以实时计算navmesh

这样的修改才可以影响寻路系统,实现停止的单位影响其他单位的路径。

?

问题2 和 问题3都可以一定程度上的解决

?

经实验,这个功能的范围始终是个矩形。

与模型无关,尺寸取得是模型的边界。

无论什么形状的模型,都取他边界的矩形。可以旋转。

Unity多单位战斗寻路问题的一种解决办法