Python в игростроении/Blender/GameLogic: различия между версиями
Строка 240: | Строка 240: | ||
===Scene_actuator=== |
===Scene_actuator=== |
||
http://www.blender3d.org/documentation/pydoc_gameengine/PyDoc-Gameengine-2.34/KX_SceneActuator.KX_SceneActuator-class.html |
|||
Scene Actuator logic brick. |
|||
===Random_actuator=== |
===Random_actuator=== |
||
===Message_actuator=== |
===Message_actuator=== |
Версия от 02:16, 25 января 2006
В учебнике будут представлены примеры контроля LogicBricks с помощью написанных на Питоне скриптов
Основано на документации с оффициального сайта разработчиков
http://www.blender3d.org/documentation/pydoc_gameengine/PyDoc-Gameengine-2.34/index.html
Введение
Сенсоры/Sensors
Keyboard_sensor
import GameLogic
import GameKeys
co = GameLogic.getCurrentController() #Привязываем скрипт к контроллеру "со"
klavishi = co.getSensor('klavishi') #Привязываем сенсор "klavishi" к контроллеру "со"
# 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: #Здесь должна быть функция ,выполняемая при нажатии клавиши "W" if key[0] == GameKeys.SKEY: #Здесь должна быть функция ,выполняемая при нажатии клавиши "S" if key[0] == GameKeys.AKEY: #Здесь должна быть функция ,выполняемая при нажатии клавиши "A" if key[0] == GameKeys.DKEY: #Здесь должна быть функция ,выполняемая при нажатии клавиши "D"
Keyboard_sensor_Blender3dGameLogicПример использования
Mouse_sensor
С применением только модуля GameLogic
import GameLogic
posiziya_X = 1 # Переменная для работы с координатой Х -целое число
posizya_Y = 1 # Переменная для работы с координатой Y -целое число
co = GameLogic.getCurrentController() #Привязываем GameLogic к контроллеру "со"
obj_name = co.getOwner() #Привязываем контроллер к объекту с именем "obj_name"
grizun = co.getSensor("grizun") #Привязываем сенсор "grizun" к контроллеру "со"
posizya_X = grizun.getXPosition() #присваиваем переменной значение координаты Х
posizya_Y = grizun.getYPosition() #присваиваем переменной значение координаты Y
С применением модуля Rasterizer
http://www.blender3d.org/documentation/pydoc_gameengine/PyDoc-Gameengine-2.34/Rasterizer-module.html
# To use a mouse movement sensor "Mouse" and a # motion actuator to mouse look:
import Rasterizer
import GameLogic
# SCALE-чуствительность мыши
SCALE=[1, 0.5]
co = GameLogic.getCurrentController()
obj = co.getOwner()#связывание контроллера с объектом по имени "obj"
grizun = co.getSensor("grizun")#привязывание сенсора мыши к контроллеру
lmotion = co.getActuator("LMove")# привязывание активатора "lmotion" к контроллеру "co"
wmotion = co.getActuator("WMove")# привязывание активатора "wmotion" к контроллеру "co"
#Запись координат x , y как только мышь будет перемещена
def mousePos():
x = (Rasterizer.getWindowWidth()/2 - mouse.getXPosition())*SCALE[0] y = (Rasterizer.getWindowHeight()/2 - mouse.getYPosition())*SCALE[1] return (x, y)
pos = mousePos()
# скорость перемещения для мыши :X в общих координатах...
lmotion.setTorque(0.0, 0.0, pos[0], False)
# ...Y в общих координатах
wmotion.setTorque(-pos[1], 0.0, 0.0, True)
# запускаем активаторы в работу GameLogic.addActiveActuator(lmotion, True) GameLogic.addActiveActuator(wmotion, True) #устанавливаем мышь по центру окна(экрана)
Rasterizer.setMousePosition(Rasterizer.getWindowWidth()/2, Rasterizer.getWindowHeight()/2)
MouseFocus_sensor
в процессе редактирования...
Определяет события ,когда мышь находится над игровым объектом
#Возвращает стартовую координату луча сенсора в общих координатах
GetRaySource()
(type=list [x, y, z])
#Возвращает конечную координату луча сенсора в общих координатах
GetRayTarget()
(type=list [x, y, z])
#Пример - не готов пока..
import GameLogic
co = GameLogic.getCurrentController()
obj = co.getOwner()
mouse_focus_sens = co.getSensor("mouse_focus_sens")
sens_list=mouse_focus_sens.getRayTarget()
Touch_sensor
определяет столкновения(коллизии) между объектами
в процессе редактирования...
Collision_sensor
Near_sensor
A near sensor is a specialised form of touch sensor.
Radar_sensor
Radar sensor is a near sensor with a conical sensor object.
Property_sensor
Activates when the game object property matches.
Random_sensor
This sensor activates randomly.
Ray_sensor
A ray sensor detects the first object in a given direction.
Message_sensor
The Message Sensor logic brick.Currently only loopback (local) networks are supported.
Joystick_sensor
Активаторы/Actuators
Motion_actuator
The object actuator ("Motion Actuator") applies force, torque, displacement, angular displacement, velocity, or angular velocity to an object.
Constraint_actuator
A constraint actuator limits the position or orientation of an object.
ipo_actuator
IPO actuator activates an animation.
Camera_actuator
Applies changes to a camera.
Sound_actuator
Sound Actuator.
Property_actuator
Property Actuator
Edit Object_actuator
Edit Object Actuator (in Add Object Mode)
Edit Object Actuator (in End Object mode)
Edit Object actuator, in Replace Mesh mode.
Scene_actuator
Scene Actuator logic brick.