gpt4 book ai didi

algorithm - AI 算法到 "shoot"在 2d 游戏中的目标

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:56:13 43 4
gpt4 key购买 nike

在我的 2d 游戏中,我想创建一个可以向玩家“射击”的智能机器人。假设我可以传递给我的机器人:

actual xEnemy, yEnemy

also enemy speed and angle direction

考虑到 Bot 必须将其枪支旋转到正确的方向,我如何计算“向何处射击”?

这对我来说真的是个大问题,因为..我绝对不擅长数学!在此先感谢您的宝贵帮助!

最佳答案

符号:我用大写字母写向量,用小写字母写标量,∠V 表示向量 V 与 x 轴的夹角。 (您可以使用多种语言的函数 atan2 进行计算。)

最简单的情况是可以立即旋转的静止射手。

设目标在位置 A 以速度 VA 移动,射手在位置 B 静止不动,可以以 s 的速度发射子弹。让射手在时间 0 开火。子弹在时间 t 命中,使得 |A − B + t VA| = t s。这是 t 中的一个简单的二次方程,您应该可以轻松求解(或确定无解)。确定 t 后,您现在可以计算出触发角,即∠(A − B + t VA)。

现在假设射手不是静止的,而是具有恒定速度 VB。 (我在这里假设牛顿相对论,即子弹速度与射手的速度相加。)

计算命中时间仍然是一个简单的二次方程:|A − B + t(VA − VB)| = t s。在这种情况下,触发角为∠(A − B + t (VA − VB))。

如果射手等到 u 时间才开火怎么办?然后当 |A − B + t(VA − VB)| 时子弹击中目标= (t - u) s。触发角仍然是∠(A − B + t(VA − VB))。

现在解决你的问题。假设射手可以在 r 时间内完成半圈旋转。那么它当然可以在 r 时间开火。 (基本上:为 r 时间的射击计算出必要的发射角度,如果有的话,如上所述,旋转到那个角度,停止,等到 r 时间,然后开火。)

但您可能想知道射手可以开火的最早时间。这是您可能想使用逐次逼近法找到它的地方。 (算法草图:你能在时间 0 开火吗?不。你能在时间 r 开火吗?是的。你能在时间 ½ r 开火吗?不能。等等。)

关于algorithm - AI 算法到 "shoot"在 2d 游戏中的目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4107403/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com