Programação de Eventos e Python – Blender - PUC-SP

Propaganda
Programação de Eventos e Python
Prof. Julio Arakaki (www.pucsp.br/~jarakaki)
Programação de Eventos e Python – Blender
Inicialmente, criaremos uma movimentação para o objeto cilindro,
utilizando-se as configurações das setas no “game engine” do blender.
Abra o arquivo exemplo: ScriptTeste.blend e execute o game (tecla P).
Selecione o objeto cilindro, e insira as movimentações utilizando as setas
do teclado. Utilize o menu “realtime buttons”:
Nomeie os sensores com os nomes “up”, “down”, “left” e “right”. Faça o
cilindro se movimentar e verifique os “sintomas” de acordo com as
configurações.
Programação de Eventos e Python
Prof. Julio Arakaki (www.pucsp.br/~jarakaki)
Utilizando Script Python:
Remova os controladores criados para cada tecla (os sensores deverão ser
mantidos). Crie um controlador do tipo Python. Ligue cada sensor ao
controlador criado.
“split” a janela 3D e abra uma janela de “text editor”. Inclua os comandos a
seguir:
cont = GameLogic.getCurrentController()
own=cont.getOwner()
#sensores
forward=cont.getSensor("up")
backward = cont.getSensor("down")
turnleft=cont.getSensor("left")
turnright=cont.getSensor("right")
#atuadores
motion=cont.getActuator("motion")
#processamento
speed=5
rspeed=0.02
walk=0
turn=0
if forward.isPositive():
walk=speed
if backward.isPositive():
walk=-speed
if turnleft.isPositive():
turn=rspeed
if turnright.isPositive():
turn=-rspeed
motion.setLinearVelocity(0,walk,0,1)
motion.setDRot(0,0,turn,1)
GameLogic.addActiveActuator(motion,1)
Renomeie o script para myScript. Inclua este mesmo nome no controlador
criado para o cilindro.
Programação de Eventos e Python
Prof. Julio Arakaki (www.pucsp.br/~jarakaki)
Adicione um atuador chamado motion. Ligue no controlador Python.
Execute o game com a tecla P.
Atividade:
Crie o seguinte “sintoma” para o game: selecione alguns cubos de tal
forma que, se ocorrer colisão com o cilindro, a força aplicada deverá ser
1000.
Dicas:
- crie um sensor do tipo “collision” no objeto cilindro e configure
com o nome da propriedade dos cubos selecionados.
- em cada cubo selecionado, deve-se adicionar uma propriedade que
será utilizada para detectar a colisão (p.ex. prop).
- crie um atuador do tipo motion.
- ligue o sensor e o atuador no controlador Python.
- insira o código no script Python para detectar a colisão.
Exemplo:
...
#sensores
...
collision=cont.getSensor(“collision”)
#atuadores
...
act=cont.getActuator(“act”)
#verifica se houve colisao
...
if collision.isPositive:
x=1000
...
act.setForce(0,x,0,1)
GameLogic.addActiveActuator(act,1)
...
Programação de Eventos e Python
Prof. Julio Arakaki (www.pucsp.br/~jarakaki)
SOLUÇÂO
cont = GameLogic.getCurrentController()
own=cont.getOwner()
#sensores
forward=cont.getSensor("up")
backward = cont.getSensor("down")
turnleft=cont.getSensor("left")
turnright=cont.getSensor("right")
collision=cont.getSensor("collision")
#atuadores
motion=cont.getActuator("motion")
act=cont.getActuator("act")
#processamento
speed=5
rspeed=0.02
walk=0
turn=0
force=0
if forward.isPositive():
walk=speed
if backward.isPositive():
walk=-speed
if turnleft.isPositive():
turn=rspeed
if turnright.isPositive():
turn=-rspeed
if collision.isPositive():
force=1000
motion.setLinearVelocity(0,walk,0,1)
motion.setDRot(0,0,turn,1)
GameLogic.addActiveActuator(motion,1)
act.setForce(0,force,0,1)
GameLogic.addActiveActuator(act,1)
Download