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()
#---------------------Окончание скрипта-----------------------

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