Гравитация и масса
Часть раздела Физика и игровой процесс путешествия по Unity на Coddy. Урок 1 из 71.
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 некоторое значение линейного сопротивления.
Задание
ЛегкоПодвесьте оба ящика, а затем сбросьте их одновременно, нажав клавишу Space.
- В
Start(), ниже строкиGetComponent, задайтеrb.mass = weight;иrb.useGravity = false;. - В
Update(), приInput.GetKeyDown(KeyCode.Space), задайтеrb.useGravity = true;.
Нажмите «Играть» и нажмите Space: тяжёлый сейф и лёгкая коробка приземлятся одновременно. Затем нажмите «Проверить».
Попробуйте сами
using UnityEngine;
public class CraneLoad : MonoBehaviour
{
public float weight = 1f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
// Установить массу равной weight и отключить действие гравитации
}
void Update()
{
// Space: снова включить действие гравитации
}
}
Все уроки раздела Физика и игровой процесс
1Твёрдое тело
Гравитация и массаТолкаем с помощью AddForceПрыжок с импульсомFixedUpdate для физикиСкоростьКинематические телаПовторение: пусковая площадка4Корутины
InvokeInvokeRepeating, CancelInvokeВаша первая корутинаЦиклы в корутинахОстановка корутинПовторение: обратный отсчёт10Проект: Побег с арены
АренаОхотники2Столкновения
OnCollisionEnterВо что я попал?Разрушение при столкновенииСтояние на землеОтскок и трениеФормы коллайдеровПовторение: разрушаемая стена5Проект: Монетная гонка
Катящийся шарСобираем монетыПотренируйтесь самостоятельно: Песочница Unity