如何在Unity3d中为多个行星制作重力

时间:2015-02-16 04:43:25

标签: unity3d gravity

我正在寻找的东西类似于我们的太阳系,在那里你被吸引到一颗行星直到你离开它,然后一旦你在另一个行星上被吸引到那个引力。

我在网上发现了很多关于如何为一颗行星创造重力的条目,但没有找到适合多个来源的工作。

任何帮助都会非常感激。

我已经看过的项目主要针对单行星引力。

unity 3.3, create local gravity on object

http://answers.unity3d.com/questions/13639/how-do-i-make-a-small-planet-with-gravitational-pu.html

http://answers.unity3d.com/questions/701618/how-could-i-simulate-planetary-gravity-that-has-an.html

1 个答案:

答案 0 :(得分:3)

这可以通过在周围物体上相对于行星增加法向力来轻松完成。

根据Universal gravitational force的物理学,你可以计算出重力。然后计算当前的法向力并加上力。

void FixedUpdate(){
    // Do the Force calculation (refer universal gravitation for more info)
    // Use numbers to adjust force, distance will be changing over time!
    forceSun = G x (massPlanet x massSun)/d^2;

    // Find the Normal direction
    Vector3 normalDirectionSun = (planet.position - sun.position).normalized;

    // calculate the force on the object from the planet
    Vector3 normalForceSun = normalDirection * forceSun;

    // Calculate for the other systems on your solar system similarly
    // Apply all these forces on current planet's rigidbody

    // Apply the force on the rigid body of the surrounding object/s
    rigidbody.AddForce(normalForceSun);

   // .... add forces of other objects. 
}

使用各种m1, m2值,您将能够使系统更加真实。作为一个例子,使物体向质量较高的行星移动/加速。