Olá, esse é a terceira parte do tutorial da apresentação de trabalhos usando a Blender Game Engine. Nessa parte vou explicar os scripts usados na construção da apresentação.
Primeiro script: script_movimentar
import GameLogic
controlador = GameLogic.getCurrentController()
obj = controlador.owner
if ( obj["preparado"] > 0.5 ):
obj["preparado"] = 0
if (controlador.name[:6] == "cont_d"):
obj["alvo"] = obj["alvo"] + 10
if (controlador.name[:6] == "cont_e"):
obj["alvo"] = obj["alvo"] - 10
A parte:
import GameLogic
Importa a logica de game do blender pra poder ser usada.
controlador = GameLogic.getCurrentController()
Pega o controlador atual, que você colocou nos blocos de lógica, e grava na variável “controlador”.
obj = controlador.owner
Pega o objeto do controlador atual, que no caso é o esqueleto (Armature) e grava na variavel “obj”.
if ( obj["preparado"] > 0.5 ): obj["preparado"] = 0
if (controlador.name[:6] == “cont_d”): obj["alvo"] = obj["alvo"] + 10 if (controlador.name[:6] == “cont_e”): obj["alvo"] = obj["alvo"] – 10
A variável “preparado” (que você colocou direto lá no blender, no esqueleto, usando o “add game property”) conta o tempo entre uma vez e outra que você aperta uma seta do teclado. Se o tempo da variável “preparado” for maior que meio segundo (0.5), ele permite avançar ou retroceder o “alvo”, de acordo com o nome do controlador. Os nomes que colocamos foi cont_d, associado ao sensor de keyboard usando a seta para a direita, e cont_e, a seta para a esquerda. Portanto, cada vez que você apertar a seta para a direita ou esquerda, você vai aumentar ou diminuir o “alvo” 10 vezes. Usamos o número 10 pois é o número de frames entre um ponto e outro da animação.
Segundo script: script_pulso
Esse é o script que faz o esqueleto realizar sua ação, e os objetos se moverem.
import GameLogic
controlador = GameLogic.getCurrentController()
obj = controlador.owner
if obj["atual"] + 0.1 <= obj["alvo"]:
obj["seguir"] = obj["atual"] + 0.1
if obj["atual"] - 0.1 >= obj["alvo"]:
obj["seguir"] = obj["atual"] - 0.1
No esqueleto, foi definida a propriedade “alvo”, que contém o índice até onde a animação deve ir. A propriedade “seguir”, é o que faz o esqueleto mudar de frames na sua ação (avançar ou retroceder a animação). E a propriedade atual é onde fica gravado o índice atual da animação. Nesse if, na primeira linha, ele verifica se a posição “atual”, mais 0.1, é menor ou igual ao “alvo”. Se for, ele precisa incrementar 0.1 até atingir o “alvo”. Agora, se ele for maior ou igual ao “alvo” (linha de baixo), ele precisa decrementar (retirar 0.1), até atingí-lo. Portanto, quando definimos no outro script que, quando aperto o botão do teclado, ele aumenta ou diminui o “alvo” de 10 em 10, então o esqueleto percorrerá frame por frame, até atingir os 10 a mais ou a menos. Por isso a animação corre de forma fluida, ao invés de mudar repentinamente.

