Ayuda por favor con colisiones

Hice un juego en el que un mono dispara municiones a un grupo de aceitunas. Definí una clase " MiMunición" y la vinculé al mono, pero no sé cómo hacer para que la munición colicione con la aceituna.
Me ayudarian por favor? Gracias desde ya :smiley:
Aca les dejaria el codigo:

import pilasengine
pilas = pilasengine.iniciar()
puntaje = pilas.actores.Puntaje(-280, 200, color=pilas.colores.blanco)
fondo = pilas.fondos.Noche()

# JUGADOR 

class MonoConControles(pilasengine.actores.mono.Mono):

    def iniciar(self):
        self.imagen = "mono.png"
        self.y=-100

    def actualizar(self):
        if self.pilas.escena_actual().control.arriba:
            self.y += 5
        elif self.pilas.escena_actual().control.abajo:
            self.y -= 5

        if self.pilas.escena_actual().control.izquierda:
            self.x -= 5
        elif self.pilas.escena_actual().control.derecha:
            self.x += 5

mono_con_controles = MonoConControles(pilas)

# Habilidad de disparo
class MiMunicion(pilasengine.actores.Actor):

    def iniciar(self):
        self.imagen = "disparos/bola_amarilla.png"
        self.escala_y = 0.25
        self.escala_x = 0.25
        self.y = 100
    
    def actualizar(self):
        self.rotacion += 10

pilas.actores.vincular(MiMunicion) 
mono_con_controles.aprender('disparar', municion='MiMunicion', angulo_salida_disparo=90)

#EL ENEMIGO
class AceitunaEnemiga(pilasengine.actores.Aceituna):

    def iniciar(self):
        self.imagen = "aceituna.png"
        self.aprender( pilas.habilidades.PuedeExplotarConHumo )
        self.x = pilas.azar(-200, 200)
        self.y = 290
        self.velocidad = pilas.azar(5, 15) / 4.0

    def actualizar(self):
        self.rotacion += 2
        self.y -= self.velocidad

        # Elimina el objeto cuando sale de la pantalla.
        if self.y < -300:
            self.eliminar()
            
enemigos = pilas.actores.Grupo()
def crear_enemigo():
    actor = AceitunaEnemiga(pilas)
    enemigos.agregar(actor)

pilas.tareas.siempre(0.5, crear_enemigo)


mono_con_controles.aprender(pilas.habilidades.LimitadoABordesDePantalla)

pilas.colisiones.agregar(mono_con_controles, enemigos, mono_con_controles.eliminar)
#pilas.colisiones.agregar(enemigos,MiMunicion,enemigos.eliminar

pilas.ejecutar()

Hola @Grace_R, lo mas sencillo para agregar colisiones con actores personalizados es usar etiquetas.

http://manual.pilas-engine.com.ar/etiquetas/
http://manual.pilas-engine.com.ar/colisiones/#colisiones-con-etiquetas

Fijate que en el código que modifiqué hay una función nueva llamada eliminar_enemigo y las colisiones las definí usando etiquetas así:

pilas.colisiones.agregar("MiMunicion", "AceitunaEnemiga", eliminar_enemigo)

El código completo quedó así:smile:

import pilasengine
pilas = pilasengine.iniciar()
puntaje = pilas.actores.Puntaje(-280, 200, color=pilas.colores.blanco)
fondo = pilas.fondos.Noche()

# JUGADOR 

class MonoConControles(pilasengine.actores.mono.Mono):

    def iniciar(self):
        self.imagen = "mono.png"
        self.y=-100

    def actualizar(self):
        if self.pilas.escena_actual().control.arriba:
            self.y += 5
        elif self.pilas.escena_actual().control.abajo:
            self.y -= 5

        if self.pilas.escena_actual().control.izquierda:
            self.x -= 5
        elif self.pilas.escena_actual().control.derecha:
            self.x += 5

mono_con_controles = MonoConControles(pilas)

# Habilidad de disparo
class MiMunicion(pilasengine.actores.Actor):

    def iniciar(self):
        self.imagen = "disparos/bola_amarilla.png"
        self.escala_y = 0.25
        self.escala_x = 0.25
        self.y = 100
    
    def actualizar(self):
        self.rotacion += 10

pilas.actores.vincular(MiMunicion) 
mono_con_controles.aprender('disparar', municion='MiMunicion', angulo_salida_disparo=90)

#EL ENEMIGO
class AceitunaEnemiga(pilasengine.actores.Aceituna):

    def iniciar(self):
        self.imagen = "aceituna.png"
        self.aprender( pilas.habilidades.PuedeExplotarConHumo )
        self.x = pilas.azar(-200, 200)
        self.y = 290
        self.velocidad = pilas.azar(5, 15) / 4.0

    def actualizar(self):
        self.rotacion += 2
        self.y -= self.velocidad

        # Elimina el objeto cuando sale de la pantalla.
        if self.y < -300:
            self.eliminar()
            
enemigos = pilas.actores.Grupo()
def crear_enemigo():
    actor = AceitunaEnemiga(pilas)
    enemigos.agregar(actor)

pilas.tareas.siempre(0.5, crear_enemigo)

def eliminar_enemigo(disparo, enemigo):
    enemigo.eliminar()
    disparo.eliminar()


mono_con_controles.aprender(pilas.habilidades.LimitadoABordesDePantalla)

pilas.colisiones.agregar(mono_con_controles, enemigos, mono_con_controles.eliminar)
pilas.colisiones.agregar("MiMunicion", "AceitunaEnemiga", eliminar_enemigo)

pilas.ejecutar()

Muchisimas gracias!!