Menu
CoddyTech

Гравитация и масса

Часть раздела Физика и игровой процесс путешествия по Unity на Coddy. Урок 1 из 63.

Компонент Rigidbody передаёт управление своим объектом физике Unity, как показал кокос, когда упал. С этого момента гравитация каждую секунду ускоряет объект на 9.81 м/с, а у Rigidbody есть настройки, которые определяют, как именно это происходит. Две из них — mass, измеряемая в килограммах (1 у нового Rigidbody), и useGravity (включена у нового Rigidbody).

Масса не влияет на скорость падения. Гравитация сильнее тянет тяжёлое тело, но ровно настолько же труднее его ускорить, поэтому ящик массой 1 кг и наковальня массой 50 кг, сброшенные с одной высоты, приземляются в одном и том же кадре. Масса имеет значение, когда тела толкают друг друга: наковальня отбрасывает ящик в сторону, а ящик почти не сдвигает наковальню. У этого воздушного шарика небольшая масса, и гравитация его не трогает, поэтому он зависает там, где его разместила сцена:

void Start()
{
    Rigidbody rb = GetComponent<Rigidbody>();
    rb.mass = 0.2f;
    rb.useGravity = false;
}

Когда useGravity выключен, у шарика по-прежнему есть масса, и он всё ещё движется, если что-то его толкнёт: перестаёт действовать только гравитация. Установи значение true, и гравитация снова начнёт тянуть объект, откуда бы он ни находился. В физике Unity нет и воздуха, поэтому перо падает как кирпич, если не задать его Rigidbody параметр Linear Damping.

challenge icon

Задание

Легко

Кран удерживает над доком два ящика: тяжёлый Safe и лёгкий Box. У обоих есть Rigidbody и скрипт CraneLoad, для которого Inspector задаёт weight (80 для Safe, 2 для Box).

  • Когда игра начинается, установи массу Rigidbody равной weight и отключи силу тяжести, чтобы ящик оставался на месте.
  • Когда будет нажата клавиша Space, снова включи силу тяжести, чтобы ящик упал.

Нажми Play, нажми Space и посмотри, какой ящик приземлится первым, затем нажми Check.

Попробуйте сами

using UnityEngine;

public class CraneLoad : MonoBehaviour
{
    public float weight = 1f;

    void Start()
    {
        // Установить массу равной weight и отключить действие гравитации
    }

    void Update()
    {
        // Space: снова включить действие гравитации
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Физика и игровой процесс