Comportamientos
En el desarrollo de videojuegos es conveniente tener una forma de indicarle a los actores una rutina o tarea para que la realicen.
En pilas usamos el concepto de comportamiento. Un comportamiento es un objeto que simboliza una acción a realizar por un actor.
La utilidad de usar componentes es que puedes asociarlos y intercambiarlos libremente para lograr efectos útiles.
Por ejemplo: un guardia de un juego de acción puede ir de un lado a otro en un pasillo:
- caminar hacia la izquierda hasta el fin del pasillo.
- dar una vuelta completa.
- caminar hacia la derecha hasta el fin del pasillo.
- dar una vuelta completa.
- y repetir ...
En este caso hay 4 comportamientos, y queda en nuestro control si queremos que luego de los 4 comportamientos comience nuevamente.
Un ejemplo, ir de un lado a otro
Veamos un ejemplo sencillo, vamos a crear un actor Mono y decirle que se mueva de izquierda a derecha una sola vez:
import pilasengine
pilas = pilasengine.iniciar()
mono = pilas.actores.Mono()
pasos = 200
mono.hacer("Avanzar", pasos)
# Dar la vuelta.
mono.rotacion = [180]
mono.hacer("Avanzar", pasos)
# Solo necesario al ejecutar en scripts.
pilas.ejecutar()
Listado de todos los Comportamientos existentes
Evento | Parametros |
---|---|
Proyectil | velocidad_maxima, aceleracion, angulo_de_movimiento, gravedad |
Saltar | velocidad_inicial, cuando_termina |
Avanzar | pasos, velocidad |
Girar | delta, velocidad |
Orbitar | x, y, radio, velocidad, direccion |
OrbitarSobreActor | actor, radio, velocidad, direccion |
Comportamientos personalizados
Para crear un comportamiento personalizado necesitamos crear una
clase que herede de pilasengine.comportamientos.Comportamiento
,
luego implementar los métodos iniciar
/ejecutar
y por último
vincular el comportamiento.
class Desaparecer(pilasengine.comportamientos.Comportamiento):
def iniciar(self, receptor):
self.receptor = receptor
def actualizar(self):
if self.receptor.transparencia < 100:
self.receptor.transparencia += 1
else:
# Con retornar True le indicamos a pilas que este
# comportamiento terminó y tiene que pasar al siguiente.
return True
mono = pilas.actores.Mono()
pilas.comportamientos.vincular(Desaparecer)
mono.hacer("Desaparecer")
Encadenando comportamientos
Los comportamientos de los actores están diseñados para encadenarse, y que se puedan reproducir uno detrás de otro. Por ejemplo:
mono = pilas.actores.Mono()
mono.hacer("Saltar")
mono.hacer("Avanzar", 200)
mono.hacer("Saltar")