From BlenderWiki

Jump to: navigation, search
Blender3D FreeTip.gif
IMPORTANT! Do not update this page!
We have moved the Blender User Manual to a new location. Please do not update this page, as it will be locked soon.

Контроллеры

Контроллеры получают сигналы, которые отправляют сенсоры. Есть восемь способов обработки входного сигнала.

Когда сенсор активирован, он посылает положительный сигнал, а когда деактивирован отрицательный. Контроллер нужен для проверки и объединении этих сигналов, чтобы потом привести в действие актуатор.

Таблица сравнение контроллеров

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

Примечание
Предполагается что подключёно более одного сенсора. Для одного сенсора смотрите на "All".


Positive sensors Controllers
ANDORXORNANDNORXNOR
None False False False TrueTrueTrue
One False TrueTrueTrue False False
Multiple, not all False True False True False True
All TrueTrue False False False True


Контроллер AND

Контроллер AND появляется по умолчанию при создании нового контроллера. Это происходит потому что он является самым распространённым.

Контроллер AND активирует актуатор только тогда, когда все подключённые сенсоры имеют положительное состояние. Если с этим контроллером связан только один сенсор, то актуатор заработает когда сенсор будет в положительном состояние.

Пример

Вы хотите создать кнопку меню. Когда игрок щёлкает курсором на кнопку делается переход в следующую сцену.

На кнопке меню вы настраиваете два сенсора: сенсор Mouse over и сенсор Left button. Оба сенсора подключены к одному контроллеру AND, который соединён с актуатором Scene в режиме Set Scene. Если игрок наведёт на кнопку курсор и нажмёт ЛКМ то перейдёт на следующую сцену.

Контроллер OR

Контроллер OR активирует актуатор когда хотя бы один из подключённых сенсоров активирован. То есть хотя бы от одного из подключённых сенсоров должен идти положительный сигнал. Контроллер OR также активирует актуатор если одновременно активируется несколько подключённых сенсоров. А вот контроллер [[#XOR Controller|XOR активирует актуатор только тогда, если становится положительным только один из подключённых к контроллеру сенсоров.

Пример

Вы хотите, чтобы по кнопке Esc и Q совершался выход из игры. Вы создаёте два сенсора Keyboard с клавишами Esc и Q. Оба они подключаются к контроллеру OR, а контроллер к актуатору Game (Quit this game). Если активируется одна из двух кнопок то происходит выход из игры.

Контроллер XOR

Контроллер XOR является исключающим контроллером OR. Это означает что только один подключённый сенсор должен быть положительным. Если сенсоров больше чем один, то при положительном состоянии одного из сенсоров выполняется действие. Если положительны более одного датчика то актуатор не активируется.

Пример

---Пока нет---

Контроллер NAND

NAND(Not And, Не И). Not And является противоположностью контроллера AND. Контроллер AND активирует актуатор если все подключённые к нему сенсоры положительны. А NAND активирует актуатор когда не все сенсоры положительны. Если подключён один сенсор, то действие актуатора выполняется когда этот сенсор в отрицательном состоянии.

Пример

---Пока нет---

Контроллер NOR

NOR сокращение от Not OR контроллер. Контроллер NOR противоположен контроллеру OR. Контроллер активирует актуатор если один из сенсоров положителен.

Пример

---Пока нет---

Контроллер XNOR

Контроллер XNOR исключающим контроллером Not OR. Это просто противоположный контроллер XOR. Контроллер XNOR активирует актуаторы, если один или несколько сенсоров отрицательны.

Пример

---Пока нет---

Контроллер Expression

Это контроллер, который очень функционален в особых случаях.

В этом случае контроллер проверяет, что сенсор " sensor " позитивен и что свойство объекта " prop " равно 1. Если выражение написанное в контроллере истинно, то актуатор выполняет действие.

Пример

---Пока нет---

Для более полезной информации об использовании контроллера Expression смотрите здесь

Контроллер Python

Контроллер Python, которой проверяет получаемые сигналы используя скрипт Python. Контроллер Python имеет два режима: Script и Module. Скрипты могут быть написаны в текстовом редакторе и сохранены в .blend файле, или как внешние сценарии.

Более подробную информацию использовании Python в BGE можно найти здесь.

API Python в BGE можно найти здесь.

Режим Script

В режиме Script контроллер соединяется со скриптом, скрипт будет выполнен прежде чем логика пойдёт дальше. Скрипт будет выполнен полностью в том же кадре, если то же самое значение или атрибут будут изменены не раз, то только последнее будет видимо в игре. Если, например, положение объекта будет изменена с (100.0,100.0,100.0) на (0.0,0.0,0.0), то только (0.0,0.0,0.0) будет видно игроку, потому что переход к (100.0,100.0,100.0) произошёл на том же кадре.

Режим Module

Начиная с Blender 2.49 в контроллер Python была добавленна поддержка модулей. Просто выберите Module вместо Script в выпадающем меню контроллера Python. В этом режиме можно напрямую обратиться к функции модуля. Вместо того чтобы писать “myScript.py”, вы пишите “myModule.myFunc” в поле ввода модуля. Эта функция будет работать каждый раз когда вызывается контроллер. Это хорошо подходит для оптимизации вашего кода, когда вам нужно инициализировать переменные только однажды, чтобы использовать их позднее.

Модуль контроллера Python поддерживает любое количество атрибутов, это означает, что пакеты поддерживается автоматически. Как и " myModule.myFunc " можно делать " myPackage.myModule.myFunc ", вложенные пакеты работают тоже, как и вызовы методов на класс случай вроде: “myModule.myFunc” на экземплярах класса как “myPackage.myModule.myFunc”. Python контроллер передаёт функции python в качестве аргумента для функций, которые принимают один аргумент. Это позволяет живое редактирование сценариев, узнайте больше о контроллере модуля Python в:

*Тема http://blenderartists.org/forum/showthread.php?t=156672
*Видео http://download.blender.org/apricot/live_bge_edit.ogv