Ayuda con colisiones por favor!

Hola! Les envio la Escena del juego para ver si me pueden dar una mano. La verdad que vi todo el foro y el manual pero utilizando el class no puedo hacer que me salgan las colisiones.

Lo que quiero hacer es que si el coche choca contra una bomba, el coche se elimine. Y si agarra una estrella, esta sume 10 pts.

โ€˜โ€™'class EscenaJuego(pilasengine.escenas.Escena):

def iniciar(self):
    self.pilas.fondos.Noche()
    self.pilas.actores.coche()
    self.pilas.actores.bomba()
    self.pilas.actores.estrella()
    self.puntaje = pilas.actores.Puntaje(-280, 200, color=pilas.colores.blanco)
    self.pilas.tareas.agregar(3, self.pilas.actores.bomba) 
    self.pilas.tareas.agregar(2, self.pilas.actores.estrella) 
    
    pilas.colisiones.agregar("coche", "bomba",al_chocar)
    pilas.colisiones.agregar("coche", "estrella", al_tocar)
    
def al_chocar(coche, bomba): 
    coche.eliminar()
    bomba.explotar()  
    
def al_tocar(coche, estrella):
    estrella.eliminar()
    puntaje.aumentar(10)

class coche (pilasengine.actores.Actor):

def iniciar(self):
    self.imagen = "coche.png"
    self.figura_de_colision = self.pilas.fisica.Rectangulo(0, 0, 40, 70)
    self.aprender('moverseconelteclado')
    self.aprender ('Arrastrable')
    self.y = -190
    self.aprender(pilas.habilidades.LimitadoABordesDePantalla)

class bomba (pilasengine.actores.Bomba):

def iniciar(self):
    self.x = pilas.azar(-150, 150)
    self.y = 290
    self.velocidad = pilas.azar(5, 20) / 5.0
          
                
def actualizar(self):
    self.y -= self.velocidad
      
    if self.y < -300:
        self.eliminar()

class estrella (pilasengine.actores.Estrella):

def iniciar(self):
    self.x = pilas.azar(-150, 150)
    self.y = 290
    self.velocidad = pilas.azar(5, 20) / 5.0
    

        
def actualizar(self):
    self.y -= self.velocidad
      
    if self.y < -300:
        self.eliminar()'''
1 Like

Buenas, @Juan_Dario_Baldoni

Lo unico que te faltaba eran unos pocos โ€œselfโ€ :slight_smile:

En cuanto a la figura de colision, si la usas es mejor que la elimines al eliminar el actor.

class EscenaJuego(pilasengine.escenas.Escena):

	def iniciar(self):
		self.pilas.fondos.Noche()
		self.pilas.actores.coche()
		self.pilas.actores.bomba()
		self.pilas.actores.estrella()
		self.puntaje = pilas.actores.Puntaje(-280, 200, color=pilas.colores.blanco)
		self.pilas.tareas.agregar(3, self.pilas.actores.bomba) 
		self.pilas.tareas.agregar(2, self.pilas.actores.estrella) 

		pilas.colisiones.agregar("coche", "bomba", self.al_chocar) #<-----self
		pilas.colisiones.agregar("coche", "estrella", self.al_tocar) #<-----self

	def al_chocar(self, coche, bomba): #<-----self
		coche.eliminar()
		coche.figura_de_colision.eliminar()#<---eliminar figura
		bomba.explotar()  

	def al_tocar(self, coche, estrella): #<-----self
		estrella.eliminar()
		self.puntaje.aumentar(10) #<------- self


class coche (pilasengine.actores.Actor):
	
	def iniciar(self):
		self.imagen = "data/patito.png"
		self.figura_de_colision = self.pilas.fisica.Rectangulo(0, 0, 40, 70)
		#self.radio_de_colision = 50 # <---- aumentamos o disminuimos a nuestro gusto
		self.aprender('moverseconelteclado')
		self.aprender ('Arrastrable')
		self.y = -190
		self.aprender(pilas.habilidades.LimitadoABordesDePantalla)

Un saludo.

1 Like

Genio!
Gracias, quedo perfecto.