在我用C#XNA编程的小型自上而下的可怕驴子外国人游戏中,我有一些外星人和一些围墙(等等)。我无法弄清楚的一件事是我怎样才能引导外星人的围墙。目前,他们像白痴一样陷入他们的身边,一边滑动一边,如果他们把另一边戳出来,可能会达到他们的目标。XNA - 围绕墙壁转向
这里是我的问题的专业说明: problem http://imageshack.com/a/img829/6545/wsf4.jpg
那么直接,我的问题是:
- 我如何检查是否有外星人和目标之间的墙?
- 我如何引导他们沿着最短的路线?
算法/解释welcome,c#奖励! :)
一些相同的假设,希望能够便于计算: - 外星人,墙壁AABB - 墙壁总是垂直或水平
,我hapy如果必要的话:)
提供任何其他信息
搜索“A * pathfinding unity”。当我在Google上输入时,第一个结果似乎很有希望。 –
@ChrisDunaway我的游戏是连续的,而不是基于网格。这种解决方案意味着我不得不为了这个算法而在我的世界上建立一个网格?如果是这样,我可以简单地使用vector2的坐标作为细网格吗?如果不是,网格应该有多宽? – IamPancakeMan
您可以在想要转向的地方定义自己的航点(许多大型游戏使用区域而不是点数)。使用A *算法,您将连接点/区域为您的播放器创建路径。您可以通过检查您是否实际上与原始直线路径中的墙壁发生碰撞来分割A *路径查找和常规移动之间的功能(我没有这样做,但我建议使用“光线跟踪”)。因此,如果您检测到从玩家位置到目标位置的碰撞,请使用A *查找最佳路径,否则您只需朝该位置行走。 –