我有一个弹丸,我想通过其路径顶点的特定坐标。我一直在使用 giogadi在这里概述的一个极好的方程,将它产生的速度值插入花栗鼠的 cpBodyApplyImpulse 函数中。
该等式有一个我无法弄清楚的缺点。它仅在我想要击中的坐标值高于大炮(我的射弹开始的地方)时才有效。这意味着我不能以向下的角度拍摄。
任何人都可以帮我找到一个合适的方程,无论目标与大炮的关系在哪里?
如上所述,没有任何方法可以使顶点低于大炮的高度(不使重力向后工作)。但是,可以使弹丸通过大炮下方的某个点;方程都在这里。你需要解决的方程是:
angle = arctan((v^2 [+-]sqrt(v^4 - g*(x^2+2*y*v^2)))/g*x)
您选择一个速度并插入目标的 x 和 y 位置 - 假设大炮位于 (0,0)。这[+-]
意味着您可以选择任一根。如果平方根函数的参数是负数(虚根),则需要更大的速度。因此,如果您在“范围内”,则对于任何特定速度,您都有两个可能的角度(除了在最大范围 45 度的情况下,两个根应该给出相同的答案)。
我怀疑一个轨迹会比另一个轨迹“看起来”更明智,但一旦你有一些工作,那就是可以玩的东西。对于目标位于大炮上方的情况,您可能需要坚持使用顶点放牧代码。