如何编写一个非牛顿宇宙飞船控制脚本?

我正在制作一个简单的3D空间格斗游戏,我决定用简化的物理学来进行适当的牛顿运动,类似于太空模拟Oolite,还有更多的“街机”风格的游戏。 我基本上希望我的船能够移动“星球大战”中的航天器。

这是我想要具体实现的。 沿每个轴旋转的能力,以及相对于航天器的唯一向前运动。 在碰撞和碰撞的情况下,我希望宇宙飞船能够在正常的物理条件下移动,但是碰撞引起的任何旋转/速度都会迅速stream失。

我可以find很多教程,展示如何通过在标准的飞机控制器中设置角度拖曳等来实现这种飞行。 这似乎是浪费资源,因为你正在使用阻力方程来抵消牛顿推力方程。 由于我在一场战斗中瞄准了数百艘战舰,所以我需要尽可能保持高效。

那么有没有一种更简单,更有效的方法来拥有这种控制器?

我发现如何做到这一点,所以我会把它放在其他人试图做同样的事情。

Unity有一个叫做Transform.Rotate的函数,可以用来围绕自己的轴旋转一个游戏对象。 我用它来滚动,俯仰和偏航。 我使用了类似的Transform.Translate进行前向运动。