Fisicas actores personalizados

Hola. Yo cree una colision entre dos actores personalizados, pero cuando chocan, el juego crashea. Por que sucede esto? El codigo es el siguiente

# coding: utf-8
import pilasengine

pilas = pilasengine.iniciar()
velocidad=3
fondo=pilas.actores.Actor(imagen="Treveris.jpg")
fondo.escala=1.5

#Marx
class Marx(pilasengine.actores.Actor):

    def iniciar(self, nombre="Karl Marx"):
        self.imagen = "Marx2.png"
        self.escala=0.1
        self.nombre = "Karl Marx"
        self.decir("Hola, me llamo " + nombre)
marx = Marx(pilas)
marx.aprender("moverseComoCoche")
marx.aprender("disparar" )


#Dinero
class Dinero(pilasengine.actores.Actor):
    def iniciar(self):

        self.imagen = "dinero2.png"
        self.escala=0.05 
        self.x = 300  
        self.y = pilas.azar(-400, 400)  # hace que tome una posicion vertical aleatoria entre -200 y 200
    def actualizar(self):

        self.x -= velocidad

        

        if self.x < -340:  # limite en donde se eliminara al actor, le puse -300 para que se vea cuando se elimina, es mejor que sea un numero menor, como -500

           self.eliminar()
    def crear_enemigo():


        pilas.actores.Dinero()
        
    pilas.tareas.siempre(1, crear_enemigo)






pilas.actores.vincular(Dinero)

pilas.actores.Dinero()

 #Colision Marx Dinero
def cuando_colisiona_con_la_nave():
    explosion = pilas.actores.Explosion()
    explosion.x = Marx.x
    explosion.y = Marx.y
    Marx.eliminar()
    pilas.avisar("Juego perdido!")
pilas.colisiones.agregar('Marx', 'Dinero', cuando_colisiona_con_la_nave)                                                                                                                                                
              
pilas.ejecutar()

Creo que debe fallar porque la función “cuando_colisiona_con_la_nave” tiene que recibir dos argumentos, y en el código que nos enviaste parece no tener argumentos. Hacé una prueba, cambiá el código de la linea que dice “cuando_colisiona_con_la_nave()” por este:

def cuando_colisiona_con_la_nave(marx, dinero):

No tengo pilas en esta compu desde la que estoy comentando, así que no llegué a probar si es ese el problema, pero creo que debe venir por ahí.

¡Avisanos cualquier cosa!

Hola Hugo! Por suerte ya lo pude resolver. Muchas gracias. Con lo que estoy teniendo inconvenientes es para poner límites en el juego para que así el jugador no pueda salir de escena. Muchas gracias y espero tu respuesta

Hola @UliG14, para ponerle límites a un actor lo mas sencillo es crear el método “actualizar” y ahí evitar que las variables x e y superen los límites que quieras.

Por ejemplo, imaginá que quiero hacer que el actor Marx no pueda salir de un area rectangular como la que aparecen a continuación:

image

Podría escribir algo así:

class Marx(pilasengine.actores.Actor):

    def iniciar(self, nombre="Karl Marx"):
        #codigo anterior ...

    def actualizar(self):
        if self.x < -100:
            self.x = -100

        if self.x > 100:
            self.x = 100

        if self.y < -200
            self.y = -200

        if self.y > 200:
            self.y = 200