Disparos de actor principal

Hola a todos :slightly_smiling: ! Como esta ?

Tengo una pregunta con un pequeño juego que estoy haciendo :relaxed: , mi pregunta es la siguiente: ¿Como hacer que mi actor dispare al mismo tiempo dos veces o mas en diferente posición?
Por ejemplo:

Estoy utilizando esta función para crear un solo disparo la cual se encuentra en la clase de mi actor principal :

def dispara(self):
		self.aprender('disparar', municion='Municion_Jugador', angulo_salida_disparo=90)
		self.pilas.sonidos.Sonido_Municion_Jugador()

Estimado, seguro Hugo debe tener una respuestas mas acorde a tu necesidad que la mía, pero voy a pasar a decirte que es lo que yo haria, de tal forma, todo seria mucho mas personalizable.

Crear un Actor tipo “Municion”, por supuesto debe tener otro nombre ya que ese es propio de pilas:

class MiMunicion(Actor): def iniciar(self, x, y: \#Cargo la imagen, sonido, etc con los metodos ya conocidos self.x = x self.y = y self.hacer(ComportamientoDisparo)

Esto quiere decir que nuestra clase mi Municion, es un actor, y las posiciones x e y se las podemos pasar por constructor.

Ahora la clase comportamiento
class ComportamientoDisparo (Comportamiento): def iniciar(self, receptor): self.receptor = receptor def actualizar(self): self.receptor.x += 1 #O a gusto de como se requiera mover el disparo

No es tan sencillo hasta ahi. Pero aca viene la parte donde se torna muy util.

vos tenes tu clase nave, supongamos que asi:

class Nave(Actor): def iniciar(self): \# Toda la construccion que ya conocemos aca. self.cantidadDeDisparos = 1 #Esta podria ser una de las propiedades a la hora de disparar.

def cuando_pulsa_una_tecla(evento): if self.evento.simbolo.a: self.disparar()

def disparar(self): if (self.cantidadDeDisparos ==1): #Si mi propiedad de cantidadDeDisparos es 1, creo 1 disparo solo disparo = MiMunicion(x = self.x, y = self.y) #Le paso las propias x e y de la nave para que el disparo empiece ahi if (self.cantidadDeDisparos==2): #Pero si son dos la cantidad de disparos, creo un disparo, un poco mas arriba y otro, un poco mas abajo de la nave. Todo a gusto propio. disparo1= MiMunicion(x= self.x, y = self.y+10) disparo2= MiMunicion(x= self.x, y = self.y-10)

Espero te sirva che…Si decidis hacerlo asi, y tenes mas preguntas. Pregunta tranquilo.
Suerte master!

Hola Kantabria :slight_smile: gracias por la ayuda.
Aplique los cambios que me sugeriste pero ocurre un error que aun no e encontrado, mira :confused: :

Te dejo el enlace de mi código espero puedas darle un vistazo :slight_smile: .

Gracias !!

si tu actor se llama “MiMunicion” acordate de instanciarlo asi:

municion = MiMunicion(pilas)

Apenas pueda lo veo!!