对于我正在研究的2D游戏,我想知道射弹何时到达其最接近目标的位置.
抛射物是每帧以恒定dx,dy移动的点.目标是另一个点,其相对于射弹的速度足够慢以至于被认为是静止的.当它(大约)接近目标时,我希望抛射物爆炸.
计算这个的好方法是什么?
绝对精度并不重要,这是已在服务器上解析的事件的客户端模拟.我更喜欢一种像素完美的快速而简单的算法.
小智 5
点和线之间的最小距离:(实际上问题归结为)
http://local.wasp.uwa.edu.au/~pbourke/geometry/pointline/
在他的一般几何部分中有更多的参考资料:
http://local.wasp.uwa.edu.au/~pbourke/geometry/
记录之前的距离,并检查距离开始增加的第一时刻。
if ((currentDistance==0) || (currentDistance > previousDistance)) Explode()
Run Code Online (Sandbox Code Playgroud)
之所以这么简单,是因为路径几何形状很简单(即直线),但它工作得很好。
当目标比您描述的更快时,只要两条轨道都是直的(或至少轻微弯曲),这还有一个额外的优势。
限制,与爆炸的“大小”相比,您的步长需要很小,否则这将无法正常工作。在这种情况下,您需要预先计算下一个距离......