No logro que
pilas.fisica.definir_gravedad surja efecto:
ninguna colición es posible este script esta basado en Shaolin
Código:
import pilasengine
from pilasengine.actores.actor import Actor
from pilasengine.comportamientos.comportamiento import Comportamiento
pilas = pilasengine.iniciar(608,480)
pilas.fisica.definir_gravedad(0,90)
mapa_desde_archivo = pilas.actores.MapaTiled("Mov/tile/tileA.tmx")
class Goku(Actor):
def iniciar(self):
self.hacer_inmediatamente(Parado)
def actualizar(self):
pass
class Parado(Comportamiento):
def iniciar(self, receptor):
self.receptor = receptor
self.control = receptor.pilas.control
self.receptor.imagen = self.pilas.imagenes.cargar_grilla("Mov/parado.png", 6, 1)
def actualizar(self):
self.receptor.imagen.avanzar(2)
if self.control.derecha or self.control.izquierda:
self.receptor.hacer_inmediatamente(Caminar)
elif self.control.arriba:
self.receptor.hacer_inmediatamente(Saltar)
elif self.control.abajo:
self.receptor.hacer_inmediatamente(Agacharse)
class Caminar(Comportamiento):
def iniciar(self, receptor):
self.receptor = receptor
self.control = receptor.pilas.control
self.receptor.imagen = self.pilas.imagenes.cargar_grilla("Mov/correr.png", 3 , 1)
def actualizar(self):
self.receptor.imagen.avanzar(12)
if self.control.derecha:
self.receptor.x += 2
self.receptor.espejado = False
elif self.control.izquierda:
self.receptor.x -= 2
self.receptor.espejado = True
elif self.control.arriba:
self.receptor.hacer_inmediatamente(Saltar)
if not self.control.derecha and not self.control.izquierda:
self.receptor.hacer_inmediatamente(Parado)
class Saltar(Comportamiento):
def iniciar(self, receptor):
self.receptor = receptor
self.control = receptor.pilas.control
self.receptor.imagen = self.pilas.imagenes.cargar_grilla("Mov/saltar.png", 1, 1)
self.y_inicial = self.receptor.y
self.vy = 9
def actualizar(self):
self.receptor.y += self.vy
self.vy -= 0.7
distancia_al_suelo = self.receptor.y - self.y_inicial
self.receptor.altura_del_salto = distancia_al_suelo
if distancia_al_suelo < 0:
self.receptor.y = self.y_inicial
self.receptor.altura_del_salto = 0
self.receptor.hacer_inmediatamente(Parado)
if self.control.derecha:
self.receptor.x += 2
self.receptor.espejado = False
elif self.control.izquierda:
self.receptor.x -= 2
self.receptor.espejado = True
class Agacharse(Comportamiento):
def iniciar(self, receptor):
self.receptor = receptor
self.control = receptor.pilas.control
self.receptor.imagen = self.pilas.imagenes.cargar_grilla("Mov/descanso.png", 1 , 1)
def actualizar(self):
self.receptor.imagen.avanzar(1)
if self.control.abajo == False:
self.receptor.hacer_inmediatamente(Parado)
elif self.control.derecha or self.control.izquierda:
self.receptor.hacer_inmediatamente(Caminar)
elif self.control.arriba:
self.receptor.hacer_inmediatamente(Saltar)
"""Inicio"""
pilas.actores.vincular(Goku)
goku = pilas.actores.Goku()
goku.figura_de_colision = goku.pilas.fisica.Rectangulo(0,0,23,1)
pilas.ejecutar()