Python para BGE por JUANI

Actuator Action

(Por JUANI)

-----------------------------

Buenas, ¿ Alguien dijo que Blender no es GENIAL....? .Podemos controlar todos los objetos de la escena, añadirlos, quitarlos, hacer que se muevan o se paren.., lo que nos de la gana, con los fotogramas de una animación.

Is FANTASTIC!!!

Os dejo este script explicativo de las posibilidades de la animación en el juego con el actuador Action y Python.

En él hay pocos ejemplos pero creo que suficiente para hacernos una idea.

Si alguien tiene duda que la pregunte, nos servirá a todos. 

Saludos.

from bge import logic as g #Importa la logica de bge que llamaremos g

c = g.getCurrentController() #coger el controlador 
escena = g.getCurrentScene() #Obtén los objetos de la escena
s = c.sensors['s'] # El controlador coge el sensor conectado a el que se llama 's'
cubo = escena.objects['Cube']# De la escena, coge el cubo que se llama 'Cube'
toro = escena.objectsInactive['Torus'] #De la escena coge el objeto 'Torus'
vacio = escena.objects['Empty'] #De la escena coge el 'Empty'
plano = escena.objects['Plane']# De la escena coge  el 'Plane'

a = c.actuators['Action'] # El actuador conectado al controlador llamado 'Action'



c.activate(a) # Controlador activa el actuador a que es el actuador 'Action'
a.action = 'CubeAction' #Nombre de la animación que queramos usar
a.frameStart #Inicio de la animacio en frames(si no especificamos numero de frame el inicio es desde 0)
a.frameEnd = 180 #Fin de la animación (hemos especificado el final exacto de la animación, puedo poner 45 y la nimacion
                  #llegará solo hasta el fotograma 45, o el que me de la gana)
a.frame += 0.5 # El valor de frame por defecto es 0, la animación se lanza de 1 en 1 siendo esta la velocidad con la que 
               # hemos hecho la animación.
               # a.frame += 0.5 está diciendo a frame que añada fotogramas de 0,5 en 0,5 por lo tanto
               # ralentizará la animación a la mitad de tiempo
               # si pongo a.frame += 5.0, acelerará la animación 5 veces su tiempo porque se lanzará de 5 en 5 fotogramas.
               

if a.frame >= 90.0: # Aqui decimos:  si el fotograma (frame) es mayor o igual al fotograma 90:
    cubo.color = [1,0,0,1] # entonces el color del cubo es rojo.
if a.frame >= 100: # Aqui decimos: si el fotograma de la animación es mayor o igual que el fotograma 100:
    escena.addObject(toro, vacio, 0) # añade el toro a la escena donde está el empty
    plano.color = [0,0,1,1] #plano ponte de color azul
    plano.applyRotation([0.0,0.0,0.1], True) # plano gira en el eje z  en los ejes locales
    

Descarga el BLEND: Actuador Action 

PYTHON _ Scripting

Scripting Panel

Para poder trabajar mas cómodo con el texto para la programación de los scripts, es aconsejable dejar las ventanas de forma que tengamos acceso tanto al panel de INFO como al Editor de Texto y a la Consola de Python.

Blender trae ya una preconfiguarción llmada Scripting, donde solo tenemos que arrastrar en la parte superior para ver el panel de Info, o bien abrimos una ventana nueva de Info.