我正在使用Unity3D的网络多人在线游戏,在那里我有一个非常大的复杂的三维地形场景,如森林,与树木,悬崖,山,山,边界等。
玩家也可以建造类似“我的世界”的建筑,把它们放在场景中的任何地方,甚至可以随时移动它们。
除了人类控制的玩家之外,还有自动AI玩家和像动物一样沿着一条路径在场景中漫游的物体。
问题是如何使这些自动AI玩家和动物能够在静态和动态玩家创建的结构周围导航,因为他们所遵循的路径很容易被玩家创建的结构所阻塞,甚至被其他玩家和其他人工智能对象、悬崖等阻塞。因此,他们必须找到他们周围的地方,或者如果他们从一个高高的悬崖上摔下来,他们就必须回到正轨上。
所以我制作了一个navMesh并使用了NavAgents,但这只是处理静态的、非移动的对象,但是我如何使AI玩家在彼此之间导航,以及玩家创建的动态结构,这些结构可以用几百个数字来表示?
我想向所有东西添加一个NavMeshObstacle,但是这会导致它被附加到数百个对象上,因为用户创建的结构是使用小块或小块来创建一个更大的对象。
以下是我的问题:
谢谢
发布于 2015-07-23 09:28:26
基于NavMeshObstacle的文档,人们可以合理地假设,如果禁用了从导航网格中“雕刻”出的障碍物(一个障碍“雕刻”),那么障碍只会在妨碍代理的情况下影响代理的性能。它们不会影响寻路。接近的时候探员就会绕过他们。请注意,如果存在如此多的动态障碍,而代理需要一条非常不同的路径,这将不适用于您。你也可以设置他们重新雕刻出导航网的一块,只有当他们移动了一定数量。你应该测试一下你的表现,但这听起来很适合你。
http://docs.unity3d.com/ScriptReference/NavMeshObstacle.html
发布于 2015-07-22 17:31:13
如果你不想花太多时间制造你自己的“传感器和导航”系统来扩展统一导航,那么我认为你的方式是通过NavMeshObstacles。如果您使用诸如“我的世界”这样的模块来构建障碍,以避免在每个块上添加NavMeshObstacle,那么在如何限制/接近构建系统方面,您就有了大量的选择。
还有一些优秀的人工智能系统可以免费使用,比如下雨,它实现了一些可扩展和一致的方式来实现你想做的事情,如果有什么适合你的需求的话,看看统一市场。
https://stackoverflow.com/questions/31567552
复制相似问题