我甚至不知道它在数学上是否可行,但是假设我在(Tx,Ty)有一座塔位于(Mx(t),My(t))的怪物身上。
事实是,怪物所遵循的路径是锯齿状和旋涡状的,这意味着从基于速度/方向的距离预测瞄准 - 确切的时间 - 将是无用的。当子弹到达目标时,怪物会改变方向两次。为了解决这个问题,我有一个函数可以快速向前推进(t)帧的怪物并将其位置设为(Mx(t),My(t)),假设它的速度保持不变。我可以在t = 0(当前位置)或t = 99999或其间的任何位置获得怪物的位置。把它想象成一个查找表。
困难的部分是炮塔可预测地瞄准从该功能派生的位置。
我必须事先知道要知道要放入什么(Mx(t),My(t))。我必须知道(Mx(t),My(t))知道距离并从中计算t。这甚至可能吗?还有替代品吗?
欢迎任何类型的伪代码。
答案 0 :(得分:0)
如果我理解你的问题,基本上就是将欧几里得变换为极坐标系
如果您的相对位置x=Mx(t)-Tx
和y=My(t)-Ty
是
distance= sqrt(x^2+y^2)
phi = arctan(y/x)
这假设射击速度无限。但是,您可以先使用当前位置计算射弹的大致时间。根据估计的距离计算飞行时间并迭代此过程。
如果收敛速度慢(弹丸/怪物速度差异不大)你也可以使用Divide and conquer的想法。 如果它最大化距离,你计算怪物跑的最大距离。计算现在的距离,最大距离和中间距离。然后你可以决定怪物在哪一半并再次计算中间的距离。
我认为其他一切都需要更多关于你计划如何计算Mx(t)和My(t)的信息
答案 1 :(得分:0)
您需要atan2
功能。
如果塔位于tx,ty和怪物的预测位置是mx,那么塔的枪的角度必须是:
angle = atan2(my - ty, mx - tx)
这应该以大多数语言提供。
距离当然是:
square-root((my - ty)^2, (mx - tx)^2)
其中^ 2是"平方"。