【发布时间】:2013-02-01 13:42:37
【问题描述】:
我正在玩 Unity3D 并向场景中的对象添加物理效果。我目前在屏幕中心有一个球体(行星),并且我有另一个球体(月亮)位于它的外面,它没有移动。当我运行游戏时,我希望月球通过施加力来绕行星运行。我已经能够通过调用rigidbody.AddForce() 来获得添加的力,这会将其移动到指定的方向,但不会绕行。我不确定如何对其施加力,以便它以恒定的速度连续围绕球体运行。
我尝试了一些使用ConfigurableJoint 的示例,它会在轨道上运行,但它开始会弹跳一点,然后开始运行。我的目标是让一堆轨道卫星以自己的速度运行,它们能够相互反弹,但不会失去速度。
有什么想法吗?
【问题讨论】:
-
实际上,您会在月球上不断向行星施加力,而月球的初始速度大致垂直于该力。但是,不能保证轨道会稳定。尤其是当卫星开始相互反弹时。联合可能是一种更实用的方法。不确定“弹跳”是什么意思。
-
+1 就像 Ginosaji 所说,我的第一个想法是使用来自现实世界的已知公式,Newtons gravitation law 为 Centripetal force。设置
Bounciness = 1并希望它不会太生涩 -
我知道它没有使用您想要的物理,但 Transform.RotateAround 会起作用吗? docs.unity3d.com/Documentation/ScriptReference/…
-
嗯,我现在可能会继续走
Joints的道路,看看我能从中学到什么……@Shredder2500 我最初使用的是Transform.RotateAround(),但后来我决定我想要物理和逼真的碰撞响应。
标签: c# unity3d game-physics