Изменение гравитации на объекте в зависимости, скажем, от высоты - PullRequest
1 голос
/ 05 апреля 2020

Я использую единство и пытаюсь выяснить гравитацию для 2D-объектов. Могу ли я изменить гравитацию чего-либо в зависимости от его положения в мире или пространстве, или гравитация останется одинаковой для всего мира? а затем, когда объект достигает 1000 метров, гравитация меняется.

1 Ответ

4 голосов
/ 05 апреля 2020

Просто очень быстрый ответ,

  1. Узнайте о Physics2D.gravity. Поместите несколько объектов в сцену (шары, что угодно) и позвольте сцене бежать, заметьте, что они падают. Попробуйте изменить гравитацию и обратите внимание, что ускорение отличается.

Освойте все это, прежде чем перейти к шагу 2!

Теперь плохие новости!

"Обычная гравитация" в Unity это очень просто, как видите. К сожалению, если вы хотите сделать индивидуальную гравитацию на разных объектах, она довольно продвинута!

В основном отключите"общую гравитацию" из (1), которую Unity дает вам легко бесплатно. Затем вам нужно вручную добавить гравитацию к каждому объекту (вы хотите его включить!)

В основном вы делаете что-то вроде этого ...

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

К сожалению, вам многое предстоит узнать о пробеге l oop, физике (ie, реальной физике реального мира!), Игровых объектах, твердых телах и C# в целом.

Освойте все это, прежде чем перейти к шагу 3 !!

Наконец, вы хотите, чтобы гравитация изменялась по высоте (для определенных объектов). В общем, тогда просто сделайте что-то вроде этого:

Например, гравитация ослабевает, когда вы go вверх .. a '- ваша высота

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

Много чему нужно научиться !

...