Xna 在游戏中随机化AI寻路

Xna 在游戏中随机化AI寻路,xna,path-finding,Xna,Path Finding,我是一名C#老兵,以前从未打过一场比赛。为了拓宽我的视野,我开始自学XNA的基本知识,试图制作一个简单的2D迷宫式游戏,其中包括一些典型的敌人射击。我的问题涉及多个敌人的寻路 考虑一个典型的例子:吃豆人 当你在《吃豆人》中开始一轮游戏时,鬼魂从盒子里出来,走不同的看似随机的路径,但有一个例外——它们被用来寻找玩家的当前位置。我认为我可以在玩家每次移动时重新计算每个敌人的路径,以达到类似的效果,但我不希望敌人的路径重叠太多,因此我需要随机扭曲每个计算出的路径,以使敌人具有某种程度的唯一性。有没有一

我是一名C#老兵,以前从未打过一场比赛。为了拓宽我的视野,我开始自学XNA的基本知识,试图制作一个简单的2D迷宫式游戏,其中包括一些典型的敌人射击。我的问题涉及多个敌人的寻路

考虑一个典型的例子:吃豆人

当你在《吃豆人》中开始一轮游戏时,鬼魂从盒子里出来,走不同的看似随机的路径,但有一个例外——它们被用来寻找玩家的当前位置。我认为我可以在玩家每次移动时重新计算每个敌人的路径,以达到类似的效果,但我不希望敌人的路径重叠太多,因此我需要随机扭曲每个计算出的路径,以使敌人具有某种程度的唯一性。有没有一个标准的方法


我想我可以把它看作是每个敌人本身都是一个障碍,因此任何敌人的道路都不可能包含一条会与另一个敌人相撞的路线。如果没有新的路径可以让玩家自由奔跑,我会让敌人继续沿着现有的路径前进,直到找到一条可行的路径或者碰撞改变了当前的路径。这可能足够了,但我是否过于简化了

这个想法很有趣,但对于一个简单的小贩来说,它可能会导致一些敌人无法找到路径。例如,如果packman在右下角,他只能向北或向西走。如果在每一条路上都有一个敌人,那么其他的敌人就找不到一条通往他的路,也不会冻结或漫无目的地游荡


也许给敌人一个比游戏中真正的障碍物更轻的“重量”会让他们仍然找到一条路,并在小贩吃了一个能量球,有几个幽灵排成一列要吞食的时候提供令人满意的时刻。

也许你会发现势场方法很有用

每个敌人都有一个正的势场,玩家有一个负的势场,如果你填满地图,你可以得到一个结果,因为相同的签名电荷,敌人不会重叠太多。。。当然,这个算法有很多问题。。。但也许我能帮你


我会以概率来接近它

如果A路走20步,b路走30步,怪物会在60%的时间里走A路,b路走40%。然后添加一些规则,确保怪物总是会选择一条特定的路线,如果这条路线的概率比另一条路线高出20%

这将创造一个场景,怪物总是走最近的路,如果他们足够近的话,在开阔区域采取不同的类似方式,在远距离采取不同的方式,几乎需要同样长的时间


然后,你需要添加一些方法来过滤掉最奇怪的行为,比如无缘无故改变方向,并将实际数字配置为公式:)(顺便说一句,这不是测试,只是猜测)

是的,我在发布后考虑过这一点。我想在没有最佳路径的情况下,我必须从候选名单中随机选择一条。敌人之间的碰撞会导致路径的改变,如果是这样的话。