Duda por accion por simbolos

Buenas Noches, estuve viendo el foro y no pude encontrar lo que busco, asi que les pregunto por aqui.

La cosa es que tengo un actor, que depende a una determinada tecla que toque, cambiara su sprite. La cosa es que no quiero que el actor se mueva al presionar la tecla, sino que, al tocar una tecla, este actue en consecuencia.

Aqui les dejo parte del codigo:

class Sprites2(pilasengine.actores.Actor):
                    def iniciar(self):
                        animacion = pilas.imagenes.cargar_animacion("Characters/FullBlue.png", 1, 2)
                        animacion.definir_animacion("duendeazul", [0], 2)
                        animacion.definir_animacion("rangerazul", [1], 2)
                        self.imagen = animacion
                    def actualizar(self):
#                        if self.pilas.simbolos.s:
                            global character
                            character_p2 = 2
                            self.imagen.cargar_animacion("rangerazul")
                            self.imagen.avanzar()
#                        if self.pilas.simbolos.w:
                            global character
                            character_p2 = 1
                            self.imagen.cargar_animacion("duendeazul")
                            self.imagen.avanzar()

Las partes con “#” son las que, al presionarlas, no reacciona de acuerdo al codigo que le sigue, que hago? Gracias de antemano :smile:.

buenas.
Podrías ser un poco mas amplio en la descripción de tu problema, lamentablemente no entiendo muy bien lo que queres hacer.

Saludos.

A lo que me refiero es que me gustaría que, al presionar una tecla en particular (en ese caso w y s) el personaje haga las acciones que le he definido.

He estado viendo y usan “self.pilas.simbolos.x” para hacer lo que quiero, pero no está reaccionando. No sé si me falta algo o si lo estoy escribiendo mal :confused:. Gracias de antemano.

Hola @Mateo_Bc, te paso un ejemplo sencillo de cómo se podría implementar lo que mencionas.

Para capturar otras teclas deberías usar una de las señales que te brinda el sistema de eventos de pilas (http://manual.pilas-engine.com.ar/eventos/). Hay una señal que pilas ejecutar cuando se pulsa una tecla y otra señal cuando se suelta una tecla.

Te muestro un ejemplo porque creo que va a quedar más claro así. Imaginá que quiero mover mi personaje usando las teclas “a” y “d”, puedo hacer que ese actor tenga dos funciones “cuando_pulsa_tecla” y “cuando_suelta_tecla” para identificar los eventos del teclado fácilmente, y a su vez, puedo tener una variable para almacenar True o False identificando si la tecla se pulsa o no:

# coding: utf-8
import pilasengine

pilas = pilasengine.iniciar()

class MiActor(pilasengine.actores.Actor):
    
    def iniciar(self):
        self.pulsa_a = False
        self.pulsa_d = False
        self.pilas.eventos.pulsa_tecla.conectar(self.cuando_pulsa_tecla)  
        self.pilas.eventos.suelta_tecla.conectar(self.cuando_suelta_tecla)
        
    def actualizar(self):
        if self.pulsa_a:
            self.x -= 5
            
        if self.pulsa_d:
            self.x += 5
            
    def cuando_pulsa_tecla(self, evento):
        if evento.codigo == "a":
            self.pulsa_a = True

        if evento.codigo == "d":
            self.pulsa_d = True

    def cuando_suelta_tecla(self, evento):
        if evento.codigo == "a":
            self.pulsa_a = False

        if evento.codigo == "d":
            self.pulsa_d = False
        

pilas.actores.vincular(MiActor)
pilas.actores.MiActor()
pilas.ejecutar()

Ojalá te sirva, consultanos cualquier cosa!

1 me gusta

Muchas gracias! Eso era lo que estaba buscando!
Estoy empezando un proyecto casual, que se tratará de varios jugadores que pelean entre sí para ganar en varios modos. Cualquier duda sobre cómo proceder aviso!