Сенсор Mouse

В Blender Game Engine в режиме игры курсор мыши становится невидимым. Однако это не мешает BGE регистрировать события мыши (клики, движение, прокрутку колеса, нахождение курсора над объектами). Курсор как бы есть, но он не виден.

Вероятно сокрытие курсора по-умолчанию связано с тем, что в большинстве игр вместо стандартного курсора используется свой объект, который привязывается к курсору и тем самым замещает его. В Blender это и многое другое делается с помощью скриптов на Python.

Однако, чтобы просто отобразить стандартный курсор, скрипт не нужен. Курсор становится виден, если на вкладке Render редактора свойств установить флажок Mouse Cursor.

mouse_cursor.png

Другой способ – использовать активатор Mouse. Его привязывают к любому объекту, обычно постоянно присутствующему на сцене (например, камере), через сенсор Always.

always_mouse_visible.png

Второй способ может использоваться не только для отображения, но и сокрытия курсора при определенных условиях. В этом случае с контроллером связывается еще один сенсор или изменяется существующий, а также выключается кнопка Visible активатора.

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

sensor_mouse.png

Рассмотрим пример с сенсором Mouse. Пусть на сцене находится несколько объектов. Клик по каждому будет увеличивать значение связанной с ним переменной-свойства. Это значение будет отображаться на экране как отладочная информация. Кроме того, когда по объекту кликают, он должен подпрыгивать.

mouse_game.png

Подготовив сцену с объектами, сделаем курсор видимым и включим флажок Show Debug Properties в пункте Game меню редактора Info.

show_debag_properties.png

После этого в режиме игры будут отображаться переменные и их значения, если у свойств включена соответствующая кнопка.

Для каждого интерактивного объекта создадим свойство с подходящим для него именем, типом Integer (целое число) и начальным значением 0. Также следует включить кнопку вывода информации об этом свойстве.

print_debug.png

Теперь каждому объекту создаем связку логических блоков, состоящую из двух сенсоров Mouse, одного контроллера и двух активаторов. Один сенсор должен регистрировать нахождение курсора над объектом, второй – клик левой кнопкой мыши. Контроллер должен быть типа AND, так как активаторы должны срабатывать только при совпадении двух условий – клика и нахождения над объектами.

Один из активаторов должен быть Property с режимом Add (добавить). Мы указываем свойство и значение, на которое следует увеличить переменную. В данном случае на единицу. Второй активатор – Motion, у него ставим значение Force Z больше 10.

mouse_property.png

Можно настроить блоки для одного объекта, а затем скопировать их на другие с помощью пункта Object → Game → Copy Logic Bricks меню заголовка 3D View. При этом сначала выделяются объекты, на которые производится копирование, т. е. без логических блоков. Последним выделяется тот, чьи блоки копируются на другие объекты.

После копирования надо не забыть поменять свойства в активаторе Property на соответствующие объектам.

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

Как, не используя скрипт на Python, сделать так, чтобы куб поворачивался по оси Z против часовой стрелки при клике по правой половине сцены и по часовой стрелке при клике по левой половине сцены?

Создано

Обновлено