Python в игростроении/Blender/GameLogic/Keyboard sensor: различия между версиями
м «Keyboard sensor» переименована в «Keyboard sensor Blender3dGameLogic»: Нынешнее имя страницы слишком общее. Так как речь идёт о клавиатурном сенсоре в Blender3dGa |
мНет описания правки |
||
Строка 1: | Строка 1: | ||
Скрипт показывает как привязать упраление с помощью клавиш WASD к объекту "Sphere" |
|||
W-вперёд,S-назад,A-влево,D-вправо |
|||
*создаём объект 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 GameLogic |
||
Строка 81: | Строка 100: | ||
vpravo_stop() |
vpravo_stop() |
||
#---------------------Окончание скрипта----------------------- |
|||
картинка необходима для правильного понимания скрипта |
картинка необходима для правильного понимания скрипта |
Версия от 13:49, 25 января 2006
Скрипт показывает как привязать упраление с помощью клавиш WASD к объекту "Sphere"
W-вперёд,S-назад,A-влево,D-вправо
- создаём объект 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()
#---------------------Окончание скрипта-----------------------
картинка необходима для правильного понимания скрипта