关于在运行时使用无限程序生成生成 NavMesh 2D 的建议

Suggestion on NavMesh 2D generation at runtime with infinite procedural generation

首先让我说我在去年开始了我的编程之旅,大约在同一时间开始了 Unity。从那时起我已经走了很长一段路,但我仍然遇到了我似乎无法跨越的墙壁,这就是其中之一。

我正在制作一款 2D 游戏,其中一种模式是无限地地牢爬行,部分关卡是从预制件中选择的(主要是关卡的预制块,在生成时拼接在一起)当玩家到达距离最后一个实例化预制件末端一定距离时随机列出。我把这部分记下来了,我可以创建预制件,预制件之后,预制件之后,一切都很好!但是,我无法将 NavMesh 添加到这些新实例化的预制块中,以便我的玩家保持在边界内。我正在使用 NavMesh 组件 git 使 NavMesh2D 成为可能。

我试过:

  1. 使用预定义的烘焙 NavMesh 制作预制件本身,但玩家只能走到第一个块,然后停止,因为他到达了当前 NavMesh 的末尾,即使下一个 NavMesh 是 overlapping/right 旁边,1 个单位(尝试了所有变体)。
  2. 将这些 NavMesh 与链接和非网格链接桥接是行不通的。
  3. 在玩家前进时在运行时动态创建 NavMesh 是行不通的。

老实说,我被困在这一点上,不知道该尝试什么。我愿意就此时如何进行提出建议,并欢迎所有意见。如果您需要任何信息,请询问!或者代码,随便问!我不确定要附加什么,所以尽管问!

此外,如果还有其他寻路选项,我也对它们持开放态度。希望很快收到任何人的来信!谢谢!

我找到了讨论运行时 NavMesh 烘焙的帖子。

在最上面的答案中有一些 Brackeys 教程的链接,如果您还没有检查过我也将推荐它们,并且还链接到 Unity 关于在运行时烘焙 NavMeshes 的手册。

我认为这些可能会对您有所帮助。

从我的角度思考这个问题时,根据我从您的项目中了解到的情况,您需要在您的播放器靠近新的尚未生成的区域时生成新的预制件。当您这样做时,您可以在创建它们之后烘焙一个新的 NavMeshSurface。当玩家接近该区域的尽头时,重复该过程。

您应该准备好预制件 NavMesh 设置,并且应该根据这些设置正确构建 NavMesh。

希望对您有所帮助。

“您应该准备好预制件 NavMesh 设置,并且应该根据这些设置正确构建 NavMesh。”

在阅读了您发布的帖子并按照您在引用的文本中提出的建议进行操作后,我终于成功了。

线程 真的很有帮助。谢谢!