Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 到逃跑目标的寻路(追逐或追踪寻路)_Search_Real Time_Path Finding_A Star - Fatal编程技术网

Search 到逃跑目标的寻路(追逐或追踪寻路)

Search 到逃跑目标的寻路(追逐或追踪寻路),search,real-time,path-finding,a-star,Search,Real Time,Path Finding,A Star,我正在努力实现一个好的追逐器。我有一个曲棍球运动员需要追逐冰球。我可以预测下一个球员和冰球的位置。我试着使用转向行为,但没能找到一个很好的预测当冰球接近时的情况(例如,假设冰球以高速几乎朝向玩家。当冰球离玩家较远时,玩家只会稍微转一个角度。然而,当冰球靠近玩家时,它只是错过了玩家,最后两个三分之一的滴答声,玩家需要转大得多的角度才能仍然注视着冰球。当t有限制时他转过角度,冰球逃走了,球员什么也做不了。如果球开始提前转向,那就好了,但当我预测更多的步数时,球员倾向于开始转向远远落后于他的冰球位置…

我正在努力实现一个好的追逐器。我有一个曲棍球运动员需要追逐冰球。我可以预测下一个球员和冰球的位置。我试着使用转向行为,但没能找到一个很好的预测当冰球接近时的情况(例如,假设冰球以高速几乎朝向玩家。当冰球离玩家较远时,玩家只会稍微转一个角度。然而,当冰球靠近玩家时,它只是错过了玩家,最后两个三分之一的滴答声,玩家需要转大得多的角度才能仍然注视着冰球。当t有限制时他转过角度,冰球逃走了,球员什么也做不了。如果球开始提前转向,那就好了,但当我预测更多的步数时,球员倾向于开始转向远远落后于他的冰球位置……)。然后我打算使用*搜索。当冰球在前面时效果很好,冰球的速度比玩家的速度低。但是当冰球的速度更大时,它会成为一个逃逸目标。因此每次*扩展一个新状态时,它都会回过头来,发现在以前的状态下,冰球离玩家更近(冰球逃逸!),因此它更喜欢以前的状态并成为bfs。 所以我想有一个众所周知的解决方案,但我无法在谷歌上搜索任何东西,所以也许社区会帮助我。提前谢谢


更新:我想我基本上是重新发明了轮子。我现在做的是迭代冰球的位置。当我用相同的滴答数到达第一个位置时,我宣布胜利。这非常耗费资源,但我想不出更好的方法。

关于这个行为的部分很难理解了解目前的情况,但是关于
A*
问题,我认为你的问题是因为你的经纪人(球员)在动态环境中运行时,您必须在每个扩展步骤重新计算启发式,因为当然,由于冰球移动,前端状态的
h
值现在已过时。我是否已经接近了解您的问题了


好奇,你在用什么样的启发法?

我想你是对的。启发法是什么-大多数时候我只是尝试空中距离或空中距离加方向差。所以基本上我应该在我从边缘弹出任何东西时更新重量?所以我会弹出状态,检查启发法,如果它被更新,我会如果你正在执行实时A*你必须在每次移动到边缘状态(你的实际状态)之前都执行该操作。然后才选择最便宜的
g+h
。顺便说一句,在这个领域中,A*是不平凡的,而且有更好的解决方案。如果您正在寻找比A*/转向更先进的东西,您可以查看“移动目标”列出的算法我无法理解这种“不断的重新计算”。在我看来,这就像是在距离目标太远的地方跟随一个点。这与仅仅指向目标现在所在的位置有什么不同?相反,我想找到一种识别拦截路径的方法——即指向目标将位于目标所在的方向我什么时候到那里。不早不晚。以便能够拦截它。