Frecuencia de disparo para una disparo personalizado? [SOLUCINADO]

Hola, quisiera saber si existe alguna forma de hacer un delay o algo por el estilo en pilas, lo que quiero hacer es que no se pueda espamear la tecla de disparar, quiero que haya una frecuencia de disparo y no se me ocurre como hacerlo si no es con un delay, y no se si hay una funcion de delay en pilas :confused:
Creo que se podria hacer con una varible contador o haciendo que si la distancia entre una bala y la otra es menor a 10, que se elimine una bala, entonces asi no se va a poder spamear, si alguien sabe como hacerlo gracias!

Aqui les dejo el disparo personalizado

coding: utf-8

import pilasengine

pilas = pilasengine.iniciar()

class Municion1(pilasengine.actores.Actor):
    def iniciar(self):
        self.imagen = pilas.imagenes.cargar("C:\pilastrabajos\lupilas\Imagenes\eee2.png")
    def actualizar(self):
        self.x += 10

class Escena(pilasengine.escenas.Escena):
    def iniciar(self):
        self.mono = pilas.actores.Mono()
        pilas.eventos.pulsa_tecla.conectar(self.al_pulsar_tecla)
    def al_pulsar_tecla(self, tecla):
        if tecla.codigo=="g":
            self.bala1 = pilas.actores.Municion1()
            self.bala1.x = self.mono.x
            self.bala1.y = self.mono.y

pilas.actores.vincular(Municion1)
pilas.escenas.vincular(Escena)			
pilas.escenas.Escena()
pilas.ejecutar()

Buenas, @Pan !
Antes que nada, déjame recordarte que sería de agradecer que indexaras correctamente tu código.
Puedes ver cómo hacerlo en este post:

Si en tu teclado no encuentras la tecla de la tilde invertida, puedes copiar y pegar las tres tildes de ese post.

Para hacer un delay, pilas cuenta con las TAREAS. Te aconsejo darle un vistazo al manual de pilas sobre este tema.

Como puedes ver es tan sencillo como agregar una tarea con el retraso que tú quieras darle (3 segundos en el ejemplo) y una variable booleana de control. :slight_smile:

Otra cosa que quería comentarte, es que para darle una imagen a un actor ya no hace falta escribir el “pilas.imagenes.cargar etc…”. Basta con especificar la ruta de la imagen:

self.imagen = "C:\pilastrabajos\lupilas\Imagenes\eee2.png"

Un saludo, y ahí te dejo tu código de ejemplo :wink:

import pilasengine

pilas = pilasengine.iniciar()

class Municion1(pilasengine.actores.Actor):
    def iniciar(self):
        self.imagen = 'aceituna.png'#pilas.imagenes.cargar("C:\pilastrabajos\lupilas\Imagenes\eee2.png")
    def actualizar(self):
        self.x += 10

class Escena(pilasengine.escenas.Escena):
    def iniciar(self):
        self.mono = pilas.actores.Mono()
        pilas.eventos.pulsa_tecla.conectar(self.al_pulsar_tecla)
        
        self.mono.habilitado_para_disparar = True
        
    def al_pulsar_tecla(self, tecla):
        if tecla.codigo=="g" and self.mono.habilitado_para_disparar:
            
            self.bala1 = pilas.actores.Municion1()
            self.bala1.x = self.mono.x
            self.bala1.y = self.mono.y
            
            self.mono.habilitado_para_disparar = False
            
            #En este caso se ha programado un delay de 3 segundos
            pilas.tareas.agregar(3, self.volver_a_habilitar)
            
    def volver_a_habilitar(self):
		self.mono.habilitado_para_disparar = True

pilas.actores.vincular(Municion1)
pilas.escenas.vincular(Escena)			
pilas.escenas.Escena()
pilas.ejecutar()
1 Like

Gracias me sirvio! :smiley:
voy a ver si puedo hacer eso del principio que dijiste :wink: