Назначение

Спроектирована для решения следующих задач:

  1. Реализация контроллера персонажа с отзывчивым управлением и поддержкой физических взаимодействий (Rigidbody responsive controller).
  2. Удобная настройка и использование режимов движения/вращения/физической конфигурации персонажа.
  3. Сборка/динамическая модификация поведения передвижения персонажа из компонентов передвижения.
  4. Расширяемость системы методом добавления пользовательских компонентов передвижения.

Описание

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

Система состоит из нескольких уровней абстракции, которые изображены на общей схеме взаимодействия компонентов:

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/be9781b9-2297-4af0-8d18-8db0a2738bcc/Untitled.png

Обязательным уровнем в данной системе является Physics level. Остальные уровни предназначены для конструирования составного поведения передвижения персонажа, поэтому их использование целесообразно в проектах со сложной movement-логикой.

Physics level

Данный уровень является фундаментом системы. На нём происходят вычисления трёх основных составляющих передвижения персонажа:

  1. Физическое состояние (компонент CharacterRigidbodyPhysics).
  2. Движение (компонент CharacterMotionPhysics).
  3. Вращение (компонент CharacterRotationPhysics).

Character Rigidbody Physics

Компонент CharacterRigidbodyPhysics является основным компонентом Physics level и отвечает за: