我编写了一个小游戏引擎,具有基于图块的地图和用于寻路的 A* 算法。但是我有一个问题,当 2 个物体碰撞并阻挡一个航点时。他们来自相反的方向,所以他们不能再移动,也永远不会到达下一个航路点。我想到了一些可能的解决方案,例如
- 可移动物体不能与其他可移动物体碰撞
- 重新计算标记被阻止图块的路径
- 只需计算到下一个自由航点的路径,将每个带有可移动物体的图块标记为阻塞
我真的不想做第一种可能性,这对于一个不像动作游戏的引擎来说有点破旧。如果地图上有很多可移动的物体,最后两种可能性可能会变得非常慢。你觉得我应该怎么做?顺便说一句,第一种可能性在“要塞”中实现,其他两种可以在任何较新的策略游戏中找到。