Сенсоры, контроллеры и активаторы. Урок 2

Уроки по Blender Game Engine

Панель Logic (F4) можно условно разбить на четыре части настроек: свойства объекта (рассмотренные на прошлом уроке), сенсоры, контроллеры и активаторы. Сенсоры объекта позволяют ему воспринимать различные внешние «раздражители», такие как нажатие клавиши, движение мыши, касание другого объекта и др. Контроллеры в основном предназначены для связывания определенным образом сенсоров и активаторов. Активаторы могут выполнять различные действия над данным объектом или другими. Некоторые настройки активаторов могут различаться у разных типов объектов.
Для того чтобы добавить очередной сенсор, контроллер и активатор нужно нажать на кнопку ADD. Связь между ними обозначается линиями, которые создаются, если зажав ЛК мыши потянуть ей от одного узелка к другому (линию можно удалить, если навести мышь и нажать клавишу Del). У объекта может быть множество групп сенсоров, контроллеров и активаторов.

Сенсоры, контроллеры и активаторы в BGE

На этом уроке будет описано, как управлять объектом Static с помощью клавиатуры. Роль объекта сыграет стрелка, поворачивающаяся по двум осям и двигающаяся указателем вперед.

1. Создание объекта

Сначала создадим объект. Можно использовать любой меш-объект, но желательно, чтобы он был ассиметричен, т.к. в этом случае легче будет наблюдать его повороты.

Модель стрелки в Blender

Такую стрелку можно получить множеством способов. Ниже описан один из них:

  1. Вид сверху.
  2. Добавить плоскость.
  3. Перейти в режим редактирования. Удалить нижнюю правую вершину. Выделить три оставшиеся, нажать F (получиться треугольная плоскость). Далее, не снимая выделения, повернуть плоскость по оси Z на 450, таким образом, чтобы будущий указатель «смотрел» вверх (вдоль оси Y).
  4. Не выходя из режима редактирования, добавить еще одну плоскость ниже. Сжать ее по оси X, переместить под указатель; – это ножка стрелки.
  5. Вид из камеры.
  6. Выбрать режим выделения граней и выдавить (экструдировать), тем самым придав стрелке объем.
  7. Выйти из режима редактирования.

2. Движение вперед

Заставим нашу стрелку двигаться указателем вперед при нажатии на клавишу Пробел.
Выделив стрелку (которая должна быть static-объектом), добавьте сенсор, контроллер и активатор и соедините их между собой.

Добавление сенсора, контроллера и активатора в Blender

По умолчанию в качестве сенсора выступает Always (всегда). Такой сенсор будет действовать постоянно. Нам это не подходит. В выпадающем списке выбираем Keyboard (клавиатура). Нажимаем в поле Key мышью, затем нажимаем клавишу Пробел (Space).

Сенсор Keyboard

Теперь настроим активатор. Активаторы бывают разные (это на будущее). По умолчанию стоит Motion (движение). В нижней части есть две строки: Loc (location – положение) и Rot (rotation – вращение). В каждой строке по три поля: в них задаются величины изменений по оси X, Y или Z при воздействии.

Активатор Motion

Поскольку наша стрелка должна двигаться вперед и для нее это ось Y, то следует изменить значение в первой строке во втором столбце. Щелкните по нулям там и пропишите значение в 0.05.
Теперь при запуске режима игры (P) и нажатии на клавишу пробел стрелка будет двигаться вперед.

3. Повороты

Для того, чтобы стрелка при движении могла оказаться в любой точке трехмерного пространства достаточно настроить ее поворот только по двум осям: X (повороты вверх и вниз) и Z (налево и направо). Поворачиваться стрелка будет при нажатии на стрелки на клавиатуре. Требуется добавить еще четыре группы сенсоров, контроллеров и активаторов.

Управление объектом Static в Blender Game Engine

Теперь, запустив режим игры, можно передвинуть стрелку в любое место 3D-окна, предварительно повернув ее с помощью стрелок на клавиатуре.

4. Локальные и глобальные оси

В конце строк настроек Loc и Rot есть переключатели L. По умолчанию эти кнопки нажаты и обозначают локальную привязку осей. Это означает, что оси X, Y и Z как бы находятся внутри объекта и при его повороте поворачиваются вместе с ним. Поэтому-то у нас стрелка все время двигается указателем вперед, как ее не поверни.
Если выключить кнопку L напротив Loc в блоке, отвечающем за движение по оси Y, то стрелка будет двигаться только в одном направлении (по глобальной оси Y) не зависимо от поворота своего указателя. Глобальные оси в 3D-окне обозначаются красной (X), зеленой (Y) и синей (Z) линиями.

5. Практическая работа

  1. Создайте модель стрелки и задайте ей возможность движения и поворота с помощью Blender Game Engine так, как описано в уроке.
  2. Исследуйте влияние на движение стрелки включенной и отключенной Local Transformation (кнопка L).
  3. Добавьте на сцену плоскость и пару других меш-объектов, расположив их над плоскостью. Исключая плоскость и стрелку, задайте для объектов тип Rigid body. Запустите режим игры и попробуйте столкнуть объекты с плоскости с помощью стрелки.
Управление объектом Static в Blender Game Engine

Ошибка

Ошибка, не активатор а актуатор!

Действительно слова actuator

Действительно слова actuator и activator имеют разное значение.
С другой стороны в русском языке слова "актуатор" нет. Его следовало бы заменить на "привод" в контексте Blender.
Но тогда не каждый быстро сообразит, глядя на английский интерфейс, если ему сказать: "В приводе установите то-то и то-то".