Сенсор Mouse. Урок 5
Уроки по Blender Game Engine

Отображение курсора мыши в режиме игры
Среди множества сенсоров в BGE есть и сенсор Mouse (мышь), улавливающий различные манипуляции мыши (щелчки кнопками мыши, движение, прокручивание колеса и др.). Однако, при запуске режима игры (P) мы не видим курсор мыши. Чтобы отобразить курсор нужно прописать небольшой скрипт. Для этого разделите 3D-окно на две части, одну из них поменяйте на окно Text Editor. Далее раскройте меню Text и выберите пункт New. По умолчанию первый скрипт будет называться Text.001, лучше ему дать более осмысленное имя (например, mouse). Затем в окне следует ввести следующие строки:
import Rasterizer Rasterizer.showMouse(1)
В первой строке импортируется модуль, а во второй – вызывается функция showMouse, позволяющая отобразить курсор мыши в режиме игры.

Однако, это еще не все. Нужно привязать данный скрипт к какому-либо объекту на сцене (допустим камере). Для того, чтобы курсор отображался всегда, следует добавить активатор Always и связанный с ним контроллер Python, где в качестве Script указывается имя того скрипта, который был создан ранее (в нашем случае, это mouse). Активатор в данном случае не требуется. После этого в режиме игры курсор будет виден.

Управление 3D-объектами с помощью мыши в Blender Game Engine

Пусть на сцене будет плоскость и Rigid-сфера на ней. Сфера будет управляться с помощью мыши следующим образом:
- Если сфера находится на плоскости (а не в «воздухе»), то щелчок левой кнопкой мыши по ней должен «сообщать» силу, приводящую ее в движение вверх.
- Прокрутка колеса мыши вверх и вниз должна «сообщать» сфере вращающий момент (Torque) по оси Z по часовой и против часовой стрелки.
Разберем, как это сделать. Добавив сенсор Mouse->Left button и связав его с активатором Motion, мы заставим сферу лететь вверх при нажатии левой кнопкой мыши в любом месте 3D-окна (в режиме игры). Тут две проблемы: во-первых, сфера взлетает от щелчка в любом месте экрана, а во-вторых, она летит даже тогда, когда уже находится не на плоскости. Проблемы решаются с помощью добавления еще двух сенсоров к уже существующим контроллеру и активатору. Один должен быть Mouse -> Mouse over, второй – Touch.
За прокрутку колеса отвечают сенсоры Mouse -> Wheel up (вверх) и Mouse -> Wheel down (вниз). Каждому следует добавить свой контроллер и активатор.
Практическая работа
- Расположите на сцене три любых объекта на плоскости. Установите для них тип Rigid body. При щелчке левой кнопкой мыши по каждому отдельному объекту он должен отскакивать в какую-нибудь сторону, а при щелчке правой кнопкой мыши в любом месте 3D-окна все объекты должны взлетать вверх.
- На новой сцене расположите сферу (Rigid body) и плоскость под ней. Пусть любое движение мыши (Movement) заставляет объект крутиться по оси X или Y, а щелчок левой кнопкой мыши «сообщает» силу движения вперед в выбранном направлении. Отметьте, есть ли разница в скорости между двумя случаями: 1) сначала сфера крутится, а затем получает толчок вперед, 2) сфера сразу толкается вперед.
Последние комментарии
1 день 2 часа назад
2 дня 7 часов назад
2 дня 9 часов назад
5 дней 4 часа назад
6 дней 1 час назад
1 неделя 1 час назад
1 неделя 2 дня назад
1 неделя 3 дня назад
1 неделя 5 дней назад
2 недели 4 дня назад