出于某些研究目的,我建造了一个小坦克游戏,你可以让一个坦克由一个玩家和一个或多个NPC坦克控制。
现在我想让这些NPC坦克在他们不知道的领域中航行。如果它们在一定范围内,它们可以检测到障碍物。如果他们检测到这些障碍,他们应该将它们保存在易于查询的特定数据结构中。这样他们就可以在搬家时考虑到他们。
现在这里是我被困住的地方:如果我的领域是一个网格对我来说很容易,我只会保存障碍物所在的哪些瓷砖/节点。
但是我没有真正使用过网格,我的坦克根据它们的速度向前移动几个像素,所以坦克可以位于任何像素组合以及障碍物上。
现在我该如何处理?碰撞检测超出范围。 我被迫使用某种网格或航路点吗?
答案 0 :(得分:3)
为什么不使用navigation mesh解决方案?看起来就像你正在寻找的,一种用任意多边形障碍物表示ai导航域的方法。
github目前正在关闭,但根据this website(值得一试,这是一个有趣的Java实现),this project有一个python导航网格实现。
修改的
根据您在下面的评论,我认为a hierarchical representation实际上更接近您正在寻找的答案。本文链接到一篇论文,该论文描述了如何将逐像素网格(具有任意形状的障碍物)抽象为节点边缘图,以提高导航计算的速度。通过将这种类型的层次表示与动态导航算法(例如d *(请参阅this answer了解动态导航算法)相结合),您应该能够实现问题的解决方案。