<分区>
所以我的游戏中有鱼雷,它们以每秒 0 米的速度开始并真实地加速。这么多秒后,它们停止加速并以恒定的速度向前行驶。
我与目标有一段距离,我基本上是在尝试计算自动瞄准的前置时间。
如此给定
到目标的距离;
加速度(每秒);
燃烧时间(加速停止前的秒数);
我需要基本上确定我相信弹丸每秒行进的平均米数。
我能看到的唯一方法就是这样。
curdistance; //stores distance traveled per second
currentspeed; //stores speed at a given second
acceleration;
for(int timer = 1; curdistance < distanceToTarget;timer++)
{
currentspeed = currentspeed + acceleration;
curdistance = curdistance + ( currentspeed);
if(timer >= burnTime)
{
acceleration = 0;
}
}
现在可以了,但是有两个问题。
燃烧时间必须是整数,否则分数越小,运行次数越多以保持准确性。
例如,如果我想要 4.2 的燃烧时间以保持准确性,我必须运行它 42 次并每 10 秒计算一次。
此外,平均值可能会有相当大的偏差,这取决于它超过目标的程度,这又取决于计时器的精确度。
如果我的抛射物以每秒 30 米的速度移动并且它需要移动 121 米,它会在它移动之前再增加一整秒的行程 好吧,你已经到达/超过了目标,这意味着它实际上会瞄准因为它比实际应该多出 29 米。
使用此算法解决此问题的唯一方法是每 10 秒或 100 秒更频繁地检查一次。
我觉得虽然可能有一个我不知道的数学方程式可以让我精确地解决这个问题。
有什么帮助吗?