Hola que tal,pues e utilizado la habilidad aprender a disparar y es muy buena porque tiene muchos parametros que te ayudan con el disparo,pero hay un problema y es que no sirven para crear 2 o mas disparos,entonces los he creado manualmente pero no encuentro niguna funcion que haga que vayan para distintos angulos cada disparo de la misma forma que hace el parametro angulo_salida_disparo.
La otra pergunta es que mis enemigos tambien disparan,pero me gustaria que sus disparos fueran directamente a mi nave,pero tampoco encuentro niguna funcion para esto,agradeceria que me explicarais una forma .Yo por ejemplo en bennugd uso esta formula para que el disparo vaya a mi nave => angle = fget_angle(x,y,nave.x,nave.y)
Hola Alejandro,reconozco que pilas tienes muchos actores que te ayudan,pero cuando intentas hacer algo fuera de esos actores se complica bastante.
Te pongo lo que llevo hecho hasta ahora,puede que salga mal identado,explicame como hago para que salga bien identado para la proxima vez.
'''
Created on 8 feb. 2018
@author: Hokuto
'''
import pilasengine
pilas = pilasengine.iniciar()
#globales
puntos = 0
vida_jugador = 0
"""
*************************************************************
NIVELES DEL JUEGO
*************************************************************
"""
#creditos---------------------------------------------------
class Creditos(pilasengine.escenas.Escena):
def iniciar(self):
pilas.fondos.Color(pilas.colores.negro)
self.contador = 0
self.texto = pilas.actores.Texto(x=-50,y=10,magnitud=15,ancho=500)
self.texto.color = "blanco"
self.texto.texto = """creado por Hokuto-Hokuto Games con pilasengine
Este software esta bajo licencia de uso por parte de los usuarios bajo las siguientes condiciones:
-El juego es gratuito y se puede descargar desde el foro de pilasengine.
-Prohibida su venta.
-Si se quiere distribuir en otra pagina que no sea el foro de pilasengine,
se puede hacer siempre y cuando se especifique por quien a sido creado,
en este caso por Hokuto-Hokuto Games.
Para cualquier contacto,podeis contactar conmigo en el foro de pilasengine.
Agradecimiento a la comunidad de pilasengine y especialmente a Hugo.
MEGA HOKUTO 6/02/2018 HOKUTO GAMES.
TODOS LOS DERECHOS RESERVADOS."""
def actualizar(self):
#pasar al menu
self.contador += 1
if self.contador > 60*10 or pilas.control.boton:
self.contador = 0
pilas.escenas.Menu()
#menu-------------------------------------------------------
class Menu(pilasengine.escenas.Escena):
def iniciar(self):
pilas.fondos.Espacio()
self.texto = pilas.actores.Texto("JUGAR")
self.texto.x = 0
self.texto.y = 0
self.texto.color = "amarillo"
self.texto2 = pilas.actores.Texto("SALIR")
self.texto2.x = 0
self.texto2.y = -100
self.texto2.color = "amarillo"
self.texto3 = pilas.actores.Texto("MEGA HOKUTO",x=0,y=150,magnitud=50)
self.texto3.color = "amarillo"
self.texto4 = pilas.actores.Texto(x=-5,y=-200,ancho=600)
self.texto4.texto = "Creado por Hokuto-Hokuto Games con PilasEngine"
self.texto4.color = "verde"
pilas.actores.ObjetoMenu()
def actualizar(self):
pass
#nivel 1-----------------------------------------------------
class Nivel1(pilasengine.escenas.Escena):
def iniciar(self):
pilas.fondos.Galaxia(dy=-1)
pilas.actores.Jugador()
self.crear_aceitunas(150)
self.crear_aceitunas(80)
def crear_aceitunas(self,y):
pilas.actores.EnemigoAceituna(200,y)
pilas.actores.EnemigoAceituna(100,y)
pilas.actores.EnemigoAceituna(0,y)
pilas.actores.EnemigoAceituna(-100,y)
pilas.actores.EnemigoAceituna(-200,y)
def actualizar(self):
pass
"""
**************************************************************
OBJETOS DEL JUEGO
**************************************************************
"""
#jugador-------------------------------------------------------
class Jugador(pilasengine.actores.Actor):
def iniciar(self):
global puntos,vida_jugador
self.sonido = pilas.sonidos.cargar("audio/laserJugador.wav")
self.x = 0
self.y = -190
self.escala = 0.8
self.velocidad = 5
self.aprender("Disparar",municion=DisparoJugador,
frecuencia_de_disparo=3,angulo_salida_disparo=90,distancia=50,
control="control.boton",cuando_dispara=self.sonido.reproducir)
def actualizar(self):
#manter siempre esta imagen
self.imagen = "nave_roja/nave.png"
#mover y parar
if pilas.control.derecha and self.x < 270:
self.x += self.velocidad
self.imagen = "nave_roja/nave_derecha.png"
elif pilas.control.izquierda and self.x > -270:
self.x -= self.velocidad
self.imagen = "nave_roja/nave_izquierda.png"
#disparo jugador-----------------------------------------------
class DisparoJugador(pilasengine.actores.Actor):
def iniciar(self):
global puntos
self.imagen = "disparo_laser.png"
self.escala = 0.7
def colision_aceituna(disparo,aceituna):
disparo.eliminar()
aceituna.eliminar()
pilas.colisiones.agregar("disparojugador","enemigoaceituna",colision_aceituna)
def actualizar(self):
pass
#enemigo aceitune--------------------------------------------------
class EnemigoAceituna(pilasengine.actores.Actor):
def iniciar(self,x,y):
self.imagen = "aceituna.png"
self.x = x
self.y = y
self.aprender(pilas.habilidades.PuedeExplotarConHumo)
def actualizar(self):
pass
#objeto para menu----------------------------------------------
class ObjetoMenu(pilasengine.actores.Actor):
def iniciar(self):
self.sonido = pilas.sonidos.cargar("audio/sonido_selector.wav")
self.imagen = "nave_roja/nave.png"
self.x = -74
self.y = 0
self.escala = 0.5
self.selector = 0
def actualizar(self):
#mover y seleccionar
if pilas.control.abajo and self.selector == 0:
self.y = -100
self.sonido.reproducir()
self.selector = 1
elif pilas.control.arriba and self.selector == 1:
self.y = 0
self.sonido.reproducir()
self.selector = 0
if pilas.control.boton and self.selector == 1:
pilas.terminar()
elif pilas.control.boton and self.selector == 0:
pilas.escenas.Nivel1()
"""
***************************************************************
VINCULAR CLASES
***************************************************************
"""
#objetos-----------------------------------------------------
pilas.actores.vincular(Jugador)
pilas.actores.vincular(DisparoJugador)
pilas.actores.vincular(EnemigoAceituna)
pilas.actores.vincular(ObjetoMenu)
#niveles-----------------------------------------------------
pilas.escenas.vincular(Creditos)
pilas.escenas.Creditos()
pilas.escenas.vincular(Menu)
pilas.escenas.vincular(Nivel1)
pilas.ejecutar()
Que bien tienes bastante, dejame revisar y acomodar el codigo jejeje,
Para identar nunca he tenido problema, solo selcciono el codigo y al pegarlo mantiene la identacion, ya que sin ella el script no funcionara, ah tambien utilizo la opcion “texto preformateado” esta justo al lado de las comillas de este editor de texto, asi queda mejor y resaltado con respecto al texto normal.
Yo recuerdo haber hecho algo que disparaba muchas veces en todas las direcciones, lo encuentro y te lo muestro, dame un tiempito
Me quedé pensando en tu pregunta @hokuto, y creo haber encontrado una forma de hacer que los disparos se dirijan a un actor en particular, pilas incluye una función llamada “pilas.utils.obtener_angulo_entre” que te puede servir.
Lo de que el disparo vaya a otro enemigo esta perfecto y me funciona bien,pero lo de crear mas disparos sigo sin verlo.
Yo el disparo como ves en mi codigo esta creado en una clase aparte y lo utilizo como municion pero no veo que la habilidad disparar me permita crear mas disparos
Me refiero a que la nave pueda lanzar dos o tres disparos en distintas direcciones.
Un ejemplo lo tienes en el actor pilas.actores.NaveRoja(),esta nave puede lanzar dos disparos,uno en cada lado y lo que yo quiero es igual pero poder crearlo de forma manual