塔防的预测性瞄准

时间:2016-01-09 14:45:25

标签: pseudocode direction

我甚至不知道它在数学上是否可行,但是假设我在(Tx,Ty)有一座塔位于(Mx(t),My(t))的怪物身上。

事实是,怪物所遵循的路径是锯齿状和旋涡状的,这意味着从基于速度/方向的距离预测瞄准 - 确切的时间 - 将是无用的。当子弹到达目标时,怪物会改变方向两次。

为了解决这个问题,我有一个函数可以快速向前推进(t)帧的怪物并将其位置设为(Mx(t),My(t)),假设它的速度保持不变。我可以在t = 0(当前位置)或t = 99999或其间的任何位置获得怪物的位置。把它想象成一个查找表。

困难的部分是炮塔可预测地瞄准从该功能派生的位置。

我必须事先知道要知道要放入什么(Mx(t),My(t))。我必须知道(Mx(t),My(t))知道距离并从中计算t。这甚至可能吗?还有替代品吗?

欢迎任何类型的伪代码。

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题,基本上就是将欧几里得变换为极坐标系 如果您的相对位置x=Mx(t)-Txy=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是"平方"。