Hola quisiera saber si hay alguna posibilidad de agregarle vida a mi personaje?,limite de balas?(cargadores)
Gracias por su tiempo
Compañero, busque informacion y no la encontre. Suerte
Gracias Matsimus no hay problema,espero que alguien pueda ayudarme:blush:
##Ya pude agregarle vida a mi personaje,gracias de todos modos
##Necesitaria ayuda para agregarle limite a la municion de la torreta
Buenas, @Facundo_Barafani !
Voy a investigar un poco el actor “torreta”… a ver si puedo darte una solución en breve.
De todas formas, me interesaria saber si has usado el actor “torreta” de Pilas o te has creado un actor personalizado.
Un abrazo.
# -*- encoding: utf-8 -*-
import pilasengine
pilas=pilasengine.iniciar()
class mi_torreta(pilasengine.actores.Actor):
def iniciar(self):
self.imagen = ('data/torreta.png')
self.aprender('rotarconmouse')
self.cargadores = 3
self.balas_disponibles = 10
self.aprender('disparar', control= None, municion ='mi_municion', angulo_salida_disparo = 90)
pilas.eventos.click_de_mouse.conectar(self.disparo_torreta)
def disparo_torreta(self, evento):
if evento.boton == 1:
if self.balas_disponibles > 0:
self.disparar()
self.balas_disponibles -=1
print(self.balas_disponibles)
else:
print('No quedan balas!')
elif evento.boton == 2:
if self.balas_disponibles < 1:
if self.cargadores > 0:
self.balas_disponibles += 10
self.cargadores -=1
print('Cargador cambiado, dispones de ' ,self.balas_disponibles,' balas')
else:
print('No quedan cargadores!')
else:
print(u'Aún quedan balas en la recamara')
class mi_municion(pilasengine.actores.Actor):
def iniciar(self):
self.imagen =('data/disparo_laser.png')
pilas.actores.vincular(mi_torreta)
pilas.actores.vincular(mi_municion)
torreta = pilas.actores.mi_torreta()
pilas.ejecutar()
Aunque no me gusta “hacer los deberes” de nadie, me pareció un tema interesante
A ver si este ejemplo te sirve !
Se dispara con el boton izquierdo del mouse y se recarga con el boton derecho.
Piensa que aunque el proyectil salga de la pantalla y no se vea, sigue existiendo y ocupando memoria. Deberias implementar un método para eliminarlo cuando salga de pantalla.
Suerte en tu proyecto.
Muchisimas gracias por tu colaboracion,ahora implemento el codigo a mi proyecto y si despues queres ver como va en progreso lo paso por aca,en el tema de las balas que salen y que gastan memoria estamos trabajando en eso,Muchisimas gracias!
Buenas, @Facundo_Barafani !
Yo soy del parecer que el conocimiento debe compartirse, y si subes tu código seguro que servirá de ejemplo a otras personas…
Lo más fácil seria hacerlo en la def actualizar(self): de la class “mi_municion”,
por ejemplo…
def actualizar(self):
if self.x > 300 or self.x < -300:
self.eliminar()
de esta manera cuando el disparo llega a la coordenada x 300 o x -300 el proyectil es eliminado.
Lo mismo habria que hacer para las coordenadas Y
Hay que entender 2 cosas de Pilas Engine:
Lo primero (que seguro ya habras visto) que el centro de la pantalla es la coordenada X= 0, Y= 0.
Lo segundo, que el metodo def actualizar() es un metodo muy especial, ya que se actualiza 60 veces por segundo. Por eso es muy útil para hacer comprobaciones y actualizar posiciones. Pero no debe sobrecargarse, ya que podriamos estar obligando a nuestra PC a hacer millones de cálculos por segundo y bajaria el rendimiento.
Puedes hacer la prueba de escribir un ciclo while simple en una def actualizar(): y entenderás de qué hablo: Se va a bloquear Pilas, ya que estará intentando iniciar 60 ciclos while por segundo.
Cualquier otra duda aquí estamos para intentar ayudar.
Un abrazo y suerte en tu proyecto.
Muchisimas gracias por tu ayuda,apenas tenga parte de mi proyecto mas progresado lo subo!