Физика

Физический движок

Встроенный физический движок в Unity отвечает за взаимодействие объектов. Unity использует физический движок «PhysX», созданный компанией «NVidia». Кроме «PhysX» существуют и другие: «Havok», «Bullet».

Физический движок (англ. — physics engine) — компьютерная программа, которая производит компьютерное моделирование физических законов реального мира в виртуальном мире.

Чтобы игровой объект начал взаимодействовать с физическим движком игры, тебе необходимо добавить ему компонент Rigidbody в окне Инспектор: AddComponentPhysicsRigidbody.

Rigidbody
Rigidbody
Если у игрового объекта с компонентом Rigidbody не будет коллайдера, то, очевидно, он будет проходит сквозь все остальные объекты. Например, бесконечно лететь вниз.

Разберем свойства Rigidbody:

  • Mass — масса объекта (не влияет на скорость свободного падения).
  • Drag — сила сопротивления воздуха (объект будет падать медленнее при больших значениях).
  • Angular Drag — сила сопротивления воздуха при вращении.
  • Use Gravity — включение/выключение гравитации.
  • Is Kinematic — при включении объект не будет управляться физическим движком, но влияет на другие физические объекты.
  • Interpolate — попробуй один из параметров, если замечаешь тряску в перемещении объекта (этот параметр влияет на производительность игры).
  • Collision Detection — используется для предотвращения проникновения быстро перемещающихся объектов сквозь других объектов (этот параметр влияет на производительность игры).
  • Constraints — Ограничения движения, вращения тела по осям X, Y, Z.
  • С помощью компонента Rigidbody можно сделать пару интересных игровых механик без программирования. Например, можно сделать ловушку:

    Механика ловушки
    Механика ловушки

    Чтобы это работало, добавь Rigidbody нескольким блокам на пути у Игрока, а затем просто выключи гравитацию у этих объектов.

    Constant Force

    Компонент Constant Force (в окне Инспектор AddComponentPhysicsConstant Force) придает физическому объекту постоянную силу перемещения, вращения (может принимать и отрицательные значения).

    1. Force — сила по оси X, Y, Z в глобальной системе координат.
    2. Relative Force — сила по оси X, Y, Z в локальной системе координат.
    3. Torque — сила вращения по оси X, Y, Z в глобальной системе координат.
    4. Relative Torque — сила вращения по оси X, Y, Z в локальной системе координат.
    Constant Force
    Constant Force

    Joints

    Компоненты Joints позволяют соединять объекты между собой. Рассмотрим самые популярные (в окне Инспектор AddComponentPhysics →…) Fixed Joint и Hinge Joint:

    Fixed Joint

    Компонент Fixed Joint жестко соединяет между собой объекты. Примеры использования: уличный фонарь, бампер машины, кирпичная стена.

    1. Connected Body — объект, к которому он будет привязан. Если ничего не выбрать, то объект будет привязан к невидимой точке в воздухе.
    2. Break Force — сила, которую нужно приложить к объекту, чтобы разрушить соединение (Infinity — бесконечная сила).
    3. Break Torque — сила вращения, которую нужно приложить к объекту, чтобы разрушить соединение (Infinity — бесконечная сила).

    Hinge Joint

    Компонент Hinge Joint — это шарнирное соединение. Пример: дверь машины.

    1. Connected Body — объект, к которому он будет привязан. Если ничего не выбрать, то объект будет привязан к невидимой точке в воздухе.
    2. Anchor — точка привязки.
    3. Axis — по каким осям идет вращение, где 0 — нет вращения; 1 — есть вращение.
    4. Break Force — сила, которую нужно приложить к объекту, чтобы разрушить соединение (Infinity — бесконечная сила).
    5. Break Torque — сила вращения, которую нужно приложить к объекту, чтобы разрушить соединение (Infinity — бесконечная сила).

    Физический материал

    С помощью физического материала можно сделать так, чтобы игровой объект отскакивал от препятствий.

    Физический материал
    Физический материал
    1. В окне Проект нажми правой кнопкой мыши по пустому месту и выбери CreatePhysic Material.
    2. Выбери созданный физический материал. В окне Инспектор параметр Bounciness отвечает за силу отскока.
    3. Выбери объект на сцене. В параметре Material компонента коллайдера выбери созданный физический материал.