2_Физика движка

Урок 2 : Физика движка

О чём этот урок

Работа с физическим движком Unity: коллайдеры как физические формы, триггеры как зоны обнаружения, Rigidbody как физическое тело. Практика строит физическую основу сцены, которую Input-контроллер из следующего урока наполнит управлением.


Теория

Вопросы для самопроверки

  1. Что такое коллайдер? Какие основные виды коллайдеров есть в Unity?
  2. Зачем нужен флаг Is Trigger? Что происходит с физическим взаимодействием при его включении?
  3. Какие три условия нужны для срабатывания триггерных событий?
  4. Как отключить взаимодействие между определёнными слоями объектов? Как сделать это из кода?
  5. Назовите этапы физического цикла MonoBehaviour, связанные с столкновениями (порядок важен).
  6. Что такое Rigidbody? Какие варианты расчёта столкновений (Collision Detection Mode) есть и когда использовать Continuous?
  7. Как заморозить вращение Rigidbody по осям? Зачем это нужно для персонажа?
  8. Какие методы Rigidbody можно использовать для перемещения? В каком методе жизненного цикла их нужно вызывать?
  9. В чём отличие движения через Rigidbody от движения через Transform? Что происходит с коллайдерами при transform.Translate?
  10. Что такое Physics.Raycast? Что содержит структура RaycastHit?
  11. Чем отличается Physics.CheckSphere от Physics.OverlapSphere? Когда использовать каждый?
  12. Как ограничить Raycast только определёнными слоями? Какой параметр за это отвечает?


Практика

Как выполнять задания

Создайте новую сцену для урока физики. Персонаж из этой сцены перейдёт в следующий урок - создайте его аккуратно и упакуйте в префаб.

Задания

Задание 1.

Создайте новую сцену. Ограничьте её невидимыми стенами (прозрачные коллайдеры). Расставьте по сцене препятствия разной высоты. Проверьте, что стены и препятствия непроходимы - отдельным временным объектом.

Задание 2.

Добавьте на сцену капсулу как заготовку персонажа. Добавьте Rigidbody: заморозьте вращение по осям X и Z. Проверьте, что капсула падает вниз под действием гравитации, но не заваливается на бок. Создайте префаб персонажа.

Задание 3.

Создайте зону сбора предмета: небольшой сфере добавьте коллайдер с флагом Is Trigger. Напишите скрипт, который уничтожает предмет при входе капсулы в зону (через OnTriggerEnter). Используйте тег для идентификации игрока. Упакуйте в префаб.

Задание 4.

Реализуйте луч (Raycast) от позиции персонажа вперёд. При попадании луча в объект - выводите в Console имя объекта и расстояние до него. Визуализируйте луч в Scene view через Debug.DrawRay. Фильтруйте луч через LayerMask - реагируйте только на слой Interactable.

Задание 5.

* Реализуйте взрыв через Physics.OverlapSphere: при нажатии кнопки (например, G) создаётся сфера радиуса 5 единиц вокруг персонажа. Все Rigidbody в радиусе получают AddForce(direction * force, ForceMode.Explosion). Создайте несколько физических объектов на сцене для тестирования.

Задание 6.

* Добавьте проверку земли через Physics.CheckSphere: небольшая сфера под ногами персонажа проверяет наличие коллайдера слоя Ground. Выводите в Console состояние isGrounded. Убедитесь что флаг корректно меняется при прыжке (в следующем уроке он понадобится для контроллера).


📋 Вернуться к теории урока 2