Como dice el titulo, quiero cambiar la figura de colision cuando toco determinado boton, logro hacerlo, pero sin embargo cuando quiero que una colision modifique un contador, lo modifica 3 veces y esto lo hace unicamente en una determinada zona de la figura de colision (la parte de arriba).
class Protagonista(pilasengine.actores.Actor):
def iniciar(self):
animacion_corre = pilas.imagenes.cargar_animacion("animacion",8)
animacion_corre.definir_animacion("corre",range(1,8),30)
animacion_salta = pilas.imagenes.cargar_animacion("animacion",2)
animacion_salta.definir_animacion("salta",range(2,2),30)
self.imagen = pilas.imagenes.cargar_animacion("animacion",8,1)
self.salta = animacion_salta
self.run = animacion_corre
self.run.cargar_animacion("corre")
self.escala = 1.75
figura_colision = pilas.fisica.Rectangulo(0, 0, 30, 70, sensor=True, dinamica=False)
self.y = -160
self.figura_de_colision = figura_colision
self.vidas = 3
def rip(self):
self.vidas -= 1
puntos2.reducir(1)
if self.vidas == 0:
self.eliminar()
def actualizar(self):
if self.x > 300:
self.x = 300
if self.x < -300:
self.x = -300
if self.y < -160:
self.y = -160
self.velocidad = 12
if pilas.control.izquierda:
self.imagen = self.run
self.x -= 8
self.espejado = True
self.imagen.avanzar()
elif pilas.control.derecha:
self.imagen = self.run
self.x += 8
self.espejado = False
self.imagen.avanzar()
elif pilas.control.abajo:
self.imagen = "imagen"
self.figura_de_colision = pilas.fisica.Rectangulo(0, 0, 30, 40, sensor=True, dinamica=False)
else:
self.imagen = pilas.imagenes.cargar_animacion("animacion",8)
if self.y == -160:
if self.pilas.control.arriba:
self.hacer_inmediatamente("ComportamientoSaltar")
if self.y !=-160:
self.imagen = pilas.imagenes.cargar_animacion("animacion",2)