javascript - 如何获得射弹的 Angular ,使其能够击中矢量 2 目标,同时考虑重力

标签 javascript math physics

我有一个可以发射射弹的敌人,但我的问题是我试图找到击中玩家所需的 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/

相关文章:

math - float 学坏了吗?

c# - 计算盒子上的力

javascript - 加载内容和javascript异步问题

excel - 更改 VBA 中的单元格数据类型?

javascript - 无法读取未定义的属性 'length'(使用地理服务器打印 map )

C#小数取上限2

iphone - 碰撞时生成多个对象 - Corona SDK

flash - 具有预定义结果的逼真掷骰子动画

javascript - 重新加载页面以反射(reflect)更改

javascript - 提交的 jquery 例程没有被调用