我有一个可以发射射弹的敌人,但我的问题是我试图找到击中玩家所需的 Angular ,但射弹必须以精确的速度发射(即不能更慢地发射射弹) )。我已经尝试过距离方程,但我无法将其简化以得到 theta( Angular ),它会影响 y 距离、x 距离、速度和重力。
抱歉,这个问题太庞大了, 宇宙树懒
最佳答案
嗯...你有: D - 到目标的距离
g = 9.8 - g-力
v - 你的射击速度
沿 X 轴的速度为 v*cos(a)
沿 Y 方向的速度为 v*sin(a)
您需要旅行距离 D,因此您的飞行时间为 t = D/v*cos(a)
此时您需要达到飞行的最大高度并后退。如果我们忽略空气阻力,在最大点你的垂直速度将为 0,在飞行结束时你的垂直速度将等于起始垂直速度。
因此,请记住速度方程为 v = acc*t (其中 acc 为 g)t = v/acc。在你的情况下,你必须将速度降低到 0 并恢复到原来的速度,所以你的系数为 2。
t = 2*(v*sin(a)/g)
总结一下:
t = D/v*cos(a)
t = 2*(v*sin(a)/g)
<小时/>2*(vsin(a)/g) = D/vcos(a)
你什么都知道,除了 Angular a。
因此,通过进行一些变量传输,您会得到
2sin(a)cos(a) = Dg/v^2
这是:
sin(2a) = D*g/v^2
2a = arcsin(D*g/v^2)
所以,这一定是答案。
a = arcsin( D * g/(v^2) )/2
关于javascript - 如何获得射弹的 Angular ,使其能够击中矢量 2 目标,同时考虑重力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40823749/