Python в игростроении/Blender/GameLogic/Keyboard sensor: различия между версиями
Содержимое удалено Содержимое добавлено
Нет описания правки |
Нет описания правки |
||
Строка 11: | Строка 11: | ||
*возвращаемся в раздел Logic к контроллеру.Задаём имя скрипта wasd.py; |
*возвращаемся в раздел Logic к контроллеру.Задаём имя скрипта wasd.py; |
||
*соединяем эти 3 логикбрика линками; |
*соединяем эти 3 логикбрика линками; |
||
*помещаем курсор мыши в 3Д окно и нажимаем "p" |
*помещаем курсор мыши в 3Д окно и нажимаем "p". |
||
*если всё сделано правильно, то объектом "Sphere" можно будет управлять с помощью клавиш WASD; |
|||
Если всё сделано правильно, то объектом "Sphere" можно будет управлять с помощью клавиш WASD. Замечание: если появилась ошибка, то скорее всего из-за нарушения формата текста. Будьте внимательны к отступам! |
|||
#----------------Начало скрипта------------------ |
#----------------Начало скрипта------------------ |
Версия от 16:41, 31 мая 2006
Скрипт показывает как привязать упраление с помощью клавиш 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() #---------------------Окончание скрипта-----------------------
картинка необходима для правильного понимания скрипта