Перетягніть об'єкт на сцену. Додати компонент до об’єкта. Об'єкт повинен мати один Коллайдер і один Жорсткий корпус мати. Жорстке тіло має бути встановлено на Kinematic. Це означає, що об’єкт не рухається під час симуляції фізики, якщо його не переміщує сценарій.
Активуйте імітацію та використовуйте повні кінематичні контакти.
Базовий клас визначено в сценарії та забезпечує роботу сили тяжіння. Додайте PhysicsObject як компонент. Виберіть New Script і відкрийте його за допомогою Create and Add. Двічі клацніть і відкрийте сценарій у візуальному редакторі.
Оскільки це фізика, додайте функцію FixedUpdate:
void FixedUpdate ()
У межах функції FixedUpdate об'єкт повинен рухатися вниз з кожним кадром, оскільки він тягнеться вниз за допомогою сили тяжіння.
Тому нам потрібна змінна швидкість:
захищена швидкість Vector2;
Інші класи використовують фізичний об’єкт. Ви повинні мати доступ до нього, але не з -за меж визначеного класу.
На силу тяжіння можна вплинути: Для цього потрібно значення сили тяжіння:
public float gravityModifier = 1f;
Значення сили тяжіння використовується у фізичній системі Unity. Все це робиться за допомогою Time.deltaTime; множиться і належить FixedUpdate:
швидкість + = сила тяжінняМодифікатор * Фізика2D.тяжіння * Час.deltaTime;
Тепер визначено, де знаходиться об’єкт після впливу сили тяжіння:
vector2 deltaPosition = швидкість * Time.deltaTime;
Нове положення використовується для руху:
Vector2 move = Vector2.up * deltaPosition.y;
Визначається ще одна функція:
рух порожнечі (рух Vector2)
Тепер у FixedUpdate внесено додавання: Об’єкт повинен рухатися на основі обчислених значень:
Рух ();
Це має статися на основі Rigidbody2D:
захищене Rigidbody2D rb2d;
Існує також OnEnable ();
rb2d = GetComponent ();
У функції переміщення вказано, що рух відбувається в кожному кадрі:
rb2d.position) rb2d.position + ход;
Готовий сценарій для об’єкта з гравітацією виглядає так:
Якщо ви збережете сценарій і повернетесь до Unity, об’єкт падає, коли ви натискаєте кнопку відтворення.