【问题标题】:How to make Gravity for multiple planets in Unity3d如何在 Unity3d 中为多个行星制作重力
【发布时间】:2015-02-16 04:43:25
【问题描述】:

我想做的事情类似于我们的太阳系,在那里你会被一个行星引力吸引,直到你离开它的引力,然后一旦你在另一个行星上,就会被那个引力吸引。

我在网上找到了很多关于如何为单个行星创建引力的条目,但我没有找到适用于多个来源的工作。

任何帮助将不胜感激。

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

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

【问题讨论】:

  • 好主意!你能与我们分享你在如何为单个行星创造引力方面的发现吗?这可能会帮助我们帮助您!
  • 如果在此处合法,我将尝试将这些资源集中到这些主题的链接列表中。

标签: unity3d gravity


【解决方案1】:

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

根据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 值,您将能够使系统更加真实。举个例子,让物体向质量更大的行星移动/加速。

【讨论】:

  • @BenjaminJameson 你试过这个吗?
  • 我非常感谢您的及时回复,我不得不说我是一个完全没有料到的菜鸟。最近几天我每天工作 18 小时,所以我没有时间,我会尝试发布我已经找到的所有想法。再次非常感谢你们,我很抱歉我还没有尝试这个 Dinal24 我希望最迟明天晚上能够。
  • 是否有可能使重力脚本仅适用于行星本身,而不涉及其他行星体,出于设计原因,我不打算拥有一个旋转系统,我希望能够创建并在游戏中摧毁行星,所以我想避免让重力及其效果依赖于它周围的其他物体。
  • @BenjaminJameson 我认为不可能这样!当您谈论设计原因时,您可以轻松地将其附加到系统中的每个对象并将它们保留为预制件。事实上,它需要一些统一的经验和使用方法,如FindWithTag("Planet"),并获得重力并将它们应用于其他游戏对象。此外,如果此答案有用,您可以感谢我并投票并接受答案!
  • @BenjaminJameson 如果您使用重力组件,它可以保留所有活动重力的静态列表 (static HashSet<Gravity>),并且每个实例将使用 OnEnable/OnDisable 添加/删除自身。这和 Dinal24 建议的基本一致,但更安全、更灵活,不依赖于具有特定标签的对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多