根据高度改变物体的重力

Changing gravity on an object depending on, say, altitude

我正在使用 unity 并试图计算出二维物体的重力。我能否根据某物在世界中的位置或 space 改变其重力,或者整个世界的重力是否保持不变?

意思是如果我在零高度有一个特定重力的物体,然后一旦物体到达 1000 米,重力就会改变。

只是一个非常快速的回答,

  1. 了解 Physics2D.gravity。在场景中放置一些物体(球等)并让场景 运行,注意它们下落。尝试改变重力并注意加速度不同。

在继续第 2 步之前掌握所有这些!

现在是坏消息!

如您所见,Unity 中的

"Ordinary gravity" 非常简单。不幸的是,如果你想对不同的物体进行单独的引力,那就太高级了!

  1. 基本上关闭 (1) 中的"overall gravity",Unity 可以轻松免费为您提供。然后你必须手动为每个对象添加重力(你想要它!)

基本上你会做这样的事情...

public float gravity;
  void FixedUpdate () {
    rigidbody2D.AddForce(Vector3.down * 9 * rigidbody2D.mass);
}

不幸的是,关于 运行 循环、物理(即真实世界的物理!)、游戏对象、刚体和 C#,您还有很多东西要学习。

在继续第 3 步之前掌握所有这些!!

  1. 最后,您希望重力随高度变化(对于某些物体)。基本上然后做这样的事情:

例如,重力随着你的上升而减弱..a'是你的高度

public float gravity;
  void FixedUpdate () {
    f = (1000.0 - a) / 1000.0
    rigidbody2D.AddForce(Vector3.down * 9 * f * rigidbody2D.mass);
}

很多东西要学!