Dudas con pilas.tareas y colisiones

Hola saludos,el problemas es que tanto pilas.tareas y pilas .colisiones no funcionan en dentro de las clases,fuera de las clases si funciona y no hay problemas,pero me gustaria saber si se puede hacer de alguna forma dentro de las clases para hacer que una clase colisione con otra.:slight_smile:

No estoy muy seguro @hokuto, pero tal vez puedas resolver el problema usando colisiones con etiquetas en lugar de tener referencias a grupos (si ese es tu caso). En las clases, puede dar algunos problemas enviar parámetros de un lado a otro, las etiquetas previenen un poco esos problemas:

Por ejemplo, acá hay un pequeño código de ejemplo usando etiquetas:

# coding: utf-8
import pilasengine

pilas = pilasengine.iniciar()

class Protagonista(pilasengine.actores.Actor):
    
    def iniciar(self):
        self.imagen = "aceituna.png"
        self.aprender('moverseConElTeclado')
        
        def capturar_estrella(p, e):
            e.eliminar()
            p.decir("muy bien!")
            
        self.pilas.colisiones.agregar('protagonista', 'estrella', capturar_estrella)


pilas.actores.Estrella() * 10

pilas.actores.vincular(Protagonista)
pilas.actores.Protagonista()
pilas.ejecutar()

Avisanos si se adapta a tu código, sino probamos otra cosa.

1 Like

Gracia Hugo,voy a probarlo a ver si me funciona y te comento.:wink:

Tan bien estoy creando un enemigo para colocarlo en la pantalla y e utilizado un for in range para colocarlo en la pantalla,porque si lo hago uno a uno se me va a ser muy pesado , en sus posiciones estoy utilizando pilas.azar(),pero como sabras algunos aparecen pegados.

Entonces se me ha ocurrido que cuando esten pegados se eliminen y de esta forma no aparescan pegados,pero como hago para que un objeto se elimine asimismo,le e puesto self.eliminar pero me da error

Buenas!

Es esto un error de indexación?

class Protagonista(pilasengine.actores.Actor):
    
    def iniciar(self):
        self.imagen = "aceituna.png"
        self.aprender('moverseConElTeclado')
        
        def capturar_estrella(p, e):
            e.eliminar()
            p.decir("muy bien!")
            
        self.pilas.colisiones.agregar('protagonista', 'estrella', capturar_estrella)

O realmente querias anidar expresamente la def capturar y la colisión en la def iniciar de la class???

un saludo! :wink:

1 Like

Hola Hugo ya lo probe y funciona perfectamente.:+1:

En cuanto a lo que comenta Jordinur,pues no es un error de indexacion,porque lo probe sin identar y no funcionaba

Saludos @jordinur un gusto estar de nuevo con la gente Pilas jejeje

No creo que sea un error de identacion, porque el metodo capturar_estrella es un metodo que esta dentro del metodo iniciar, porque si el metodo capturar fuese de la clase, tendria que acceder a el con un self. algo asi como self.capturar_estrella . Bueno eso creo, jejeje tengo ya un año sin tocar pyhon ni pilas, me tengo que poner las pilas, jejejeje