生成大量navmeshagent会导致它们跳转位置

时间:2019-03-30 15:12:30

标签: unity3d

交叉发布于GameDev

我正在使用Unity制作3D防御塔式游戏。我在导航网格区域中生成大量字符时遇到了一个令人沮丧的问题,如果我在同一位置附近生成太多字符,其中许多实例化后将立即“传送”到导航网格目标附近。

以下是其中一个关卡的涂鸦:

enter image description here

黑点是NPC必须到达的玩家基础。绿色的风景没有导航网格,并使用了网格碰撞器。风景大多是陡峭的山丘,形成了人大应该穿过的山谷。它由多个在导航中标记为不可行走的网格组成。较大的蓝色斑点是我尝试的第一个产卵位置,后来我尝试了在图像右侧指示的较大区域(请参见下面的“我尝试过的操作”)。

当实例化为原始生成位置时,如果我立即生成超过20个NPC,则许多NPC会跳到红色斑点指示的区域。 NPC的半径约为1.5m,它们的对撞机和navmeshagents避让属性也是如此。

我尝试过的事情:

  • 生成到半径为50m的圆内的随机位置。
  • 如上图所示,添加了一个较大的导航网格隐藏区域, 定义向量位置的数组,它们相互分散并产生 在每个位置依次轮流,因此每个位置附近都不会产生两个navmeshagent 其他。
  • navmeshAgent.SetDestination(playerBase)添加延迟 实例化后希望这样做可以防止立即跳转到 在目的地附近。
  • 减小navmeshagent的回避半径。这有时 稍微减小了问题,但即使半径为0.1 超过50个NPC触发了该问题。
  • 再次将回避功能关闭(在navmeshagent中设置为none),可以产生更多但问题仍然存在
  • 在navmeshagent中关闭自动遍历链接和自动重路径
  • 增加实例化之间的时间,几秒钟的大间隙是可行的,但会使游戏过于简单
  • 未设置目的地-奇怪的是他们仍然会传送到玩家基地附近,所以我认为目的地不是一个因素

如何避免在短时间内生成大量navmeshagent,从而避免这种“传送”行为?

0 个答案:

没有答案