Python в игростроении/Blender/GameLogic/Keyboard sensor: различия между версиями

Материал из Викиучебника — открытых книг для открытого мира
Содержимое удалено Содержимое добавлено
м «Blender/GameLogic/Keyboard sensor» переименована в «Python в игростроении/Blender/GameLogic/Keyboard sensor»: Приведение названия страницы к формату "Книга/Раздел/Гла�
Нет описания правки
Строка 92: Строка 92:
Обратите внимание на опцию "all keys" сенсора клавиатуры(см рисунок)-она должна быть задействована!
Обратите внимание на опцию "all keys" сенсора клавиатуры(см рисунок)-она должна быть задействована!
[[Изображение:Keyboard_co_motion_logic.png]]
[[Изображение:Keyboard_co_motion_logic.png]]


[http://eeehhh.narod.ru/wasd.blend wasd.blend - готовый файл примера в формате блендера]

Версия от 06:43, 30 марта 2007

Скрипт показывает как привязать упраление с помощью клавиш WASD (W-вперёд,S-назад,A-влево,D-вправо) к объекту "Sphere":

  • создаём объект Sphere;
  • выбираем его в 3Д окне(object mode);
  • переходим в раздел редактора Logic (F4);
  • создаём логикбрик для сенсора. Тип Keyboard. Переименовываем 'sensor' в 'klavishi';
  • создаём логикбрик для контроллера. Тип Python (имя зададим позже);
  • создаём логикбрик для активатора. Тип Motion.Переименоваваем 'act' в 'dvizh';
  • копируем находящийся на этой странице скрипт в файл wasd.py;
  • переходим в текстовый раздел Блендера и загружаем созданный файл;
  • возвращаемся в раздел Logic к контроллеру.Задаём имя скрипта wasd.py;
  • соединяем эти 3 логикбрика линками;
  • помещаем курсор мыши в 3Д окно и нажимаем "p".

Если всё сделано правильно, то объектом "Sphere" можно будет управлять с помощью клавиш WASD. Замечание: если появилась ошибка, то скорее всего из-за нарушения формата текста. Будьте внимательны к отступам!

#----------------Начало скрипта------------------
import GameLogic
import GameKeys 

co = GameLogic.getCurrentController()   #Привязываем скрипт к контроллеру "со" -смотри картинку
klavishi = co.getSensor('klavishi')     #Привязываем сенсор "klavishi" к контроллеру "со" -смотри картинку
dvizh=co.getActuator('dvizh')           #Связываем контроллер "со" с активатором "dvizh" -смотри картинку
GameLogic.addActiveActuator(dvizh,True) #Делаем этот активатор доступным для GameLogic

#--------------------------------------------------------------------------
#ВНИМАНИЕ! -этот раздел служит для наглядности работы сенсора клавиатуры
#перед его изучением смотрите раздел СЕНСОР КЛАВИАТУРЫ
#--------------------------------------------------------------------------

#Функции обработки тоько что нажатых клавиш
def pered():
  dvizh.setDLoc(0,0.1,0,0) #объект теперь двигается по оси У со значением 0.1  принцип-(x,y,z,local)
def nazad():
  dvizh.setDLoc(0,-0.1,0,0)
def vlevo():
  dvizh.setDLoc(-0.1,0,0,0)
def vpravo():
  dvizh.setDLoc(0.1,0,0,0)

#Функции обработки только что отпущенных клавиш
def pered_stop():
  dvizh.setDLoc(0,0,0,0)	#Объект не двигается .скорость по всем осям=0
def nazad_stop():
  dvizh.setDLoc(0,0,0,0)	
def vlevo_stop():
  dvizh.setDLoc(0,0,0,0)
def vpravo_stop():
  dvizh.setDLoc(0,0,0,0)

#-----------------------------------------
# СЕНСОР КЛАВИАТУРЫ
#-----------------------------------------

# status: these should be added to a module somewhere
#Переменные для модуля GameKeys
KX_NO_INPUTSTATUS = 0
KX_JUSTACTIVATED = 1
KX_ACTIVE = 2
KX_JUSTRELEASED = 3

#Получаем список  нажатых клавиш
keylist = klavishi.getPressedKeys()

for key in keylist:
# key[0] == GameKeys.keycode, key[1] = status
#Процедура проверки только что нажатых клавиш
 if key[1] == KX_JUSTACTIVATED:  
  if key[0] == GameKeys.WKEY:
    pered()
  if key[0] == GameKeys.SKEY:
    nazad()
  if key[0] == GameKeys.AKEY:
    vlevo()
  if key[0] == GameKeys.DKEY:
    vpravo()

#Процедура проверки только что отпущенных клавиш
 if key[1] == KX_JUSTRELEASED:
  if key[0] == GameKeys.WKEY:
    pered_stop()
  if key[0] == GameKeys.SKEY:
    nazad_stop()
  if key[0] == GameKeys.AKEY:
    vlevo_stop()
  if key[0] == GameKeys.DKEY:
    vpravo_stop()
#---------------------Окончание скрипта-----------------------

картинка необходима для правильного понимания скрипта

Обратите внимание на опцию "all keys" сенсора клавиатуры(см рисунок)-она должна быть задействована!


wasd.blend - готовый файл примера в формате блендера