1

我正在玩 Unity3D 并向场景中的对象添加物理。我目前在屏幕的中心有一个球体(行星),我有另一个球体(月亮)位于它的外面,它没有移动。当我运行游戏时,我希望月球通过施加力来绕行星运行。我已经能够通过调用获得添加的力rigidbody.AddForce(),这会将其移动到指定的方向,但不会绕行。我不确定如何对其施加力,以便它以恒定的速度连续围绕球体运行。

我已经尝试了一些使用 aConfigurableJoint和 it 轨道的示例,但它开始弹跳一点,然后开始轨道。我的目标是让一堆轨道卫星以自己的速度运行,它们能够相互反弹但不会失去速度。

有任何想法吗?

4

2 回答 2

0

For the moon to orbit you would need to give the moon an initial velocity. Then have it accelerate towards the planet, that is a constant force.

enter image description here

enter image description here

gameObject.rigidbody.AddForce(1, 0, 0);
gameObject.constantForce.relativeForce = Vector3(0, 1, 0);
于 2014-12-08T02:23:39.170 回答
0

一般来说,你最终会失败,因为你的积分方法中的舍入错误会让你慢慢脱离轨道。您可以按照建议的方式非常接近,但您可以考虑做一些更像 Kerbal Space Program 的事情,它似乎将轨道预先计算为椭圆,然后跟随该椭圆,直到它有理由相信它应该停止,而不是严格“模拟”轨道......

如果发生碰撞,请让普通物理场解决碰撞问题,然后根据结果重新计算新轨道并开始跟踪。

于 2015-07-14T15:10:56.753 回答