用控制面(各种)控制物体速度

时间:2015-08-22 07:45:09

标签: c# unity3d game-physics

解释我到底想要做什么有点棘手,所以让我给你一个场景:

想象一下,你有一枚导弹,试图击中一架飞机。导弹开始并驶向碰撞路线。然而,过了一段时间它耗尽了燃料。现在它只有惯性来击中目标,但由于它的速度减慢,它需要纠正过程。为此,它使用其控制表面。

我想实现类似的目标。目前我只是对我的导弹施加恒定力,只需将其旋转到需要的方向。它附有一个刚体,我在旋转的同时使用它的阻力使其减速,这样我施加的恒定力使它改变方向。显然,一旦燃料耗尽,这种方法就无法发挥作用。

所以我试图模拟一个有点现实的翼行为'使其能够在没有恒定加速度的情况下仍然转动。不幸的是,我不知道如何实现这一点,我甚至不确定我必须寻找什么来解决这个问题。

我试图反射速度矢量,使用目标视线作为法线。我认为,至少应该给我正确的轮换。但我不知道如何旋转'以远程逼真的方式向它迈进的速度。我想我必须完全忽略Unitys拖动并运行我自己的版本,因为为了让机翼工作,你的拖拽必须根据你暴露的表面区域而改变,不是吗?而且我很确定Unity不会考虑这一点。

嗯,那是关于它的。如果你还没有理解某些东西请问,它并不是那么容易解释,特别是不能用第二语言解释。

有什么想法吗?我可以搜索的任何建议条款?我现在几乎没有想法。

1 个答案:

答案 0 :(得分:1)

如果您不希望导弹加速,则力必须垂直于速度矢量。该向量可以计算为向量拒绝:

force = c * (direction_to_target - dot(direction_to_target, velocity) / dot(velocity, velocity) * velocity)

其中c是将方向向量转换为力向量的因子。 direction_to_target应该是一个单位向量。

增加重力以完成导弹的减速。