Problema con el actor laser

Hola a todos, no se si presentar esto como un bug, pero cree una escena maso menos grande y tengo un actor que dispara en la posición (x = -353, Y = -484), hago el código
para cuando haga clic dispare un láser con ( let láser = this.pilas.actores.láser(); ) el problema viene aquí, ya que el actor láser tiene una configuración que si se pasa de los limites que son (400 a -400) se elimina ( me costo un poco encontrar el problema porque escuchaba el sonido pero no veía nada :smiley:) bueno en fin me toco solucionarlo de otra manera, pero ahora que uno puede darle un tamaño especifico a la pantalla la función “actores.láser()” se vuelve algo inútil ya que se elimina sola, @hugoruscitti podrías arreglar eso aumentando el limite o crear una función que permita darle los limites antes de ser instan-ciada a la escena, o pueda que no sea un gran problema tampoco, un saludo

Ohhh, es verdad @PabloSosa!!!

Voy a repararlo en la próxima versión, pero mientras tanto, te comento una forma de resolverlo:

En lugar de llamar a la función “this.pilas.actores.laser()” para crear el laser, podrías
crear tu propio actor laser, desactivarlo, y luego crearlo desde el código con la función
“this.pilas.clonar_en(‘laser’, this,x, this.y)”.

Por ejemplo, acá edité el código de la nave para que dispare estos lasers “personalizados”:

Y a su vez, este actor “laser” lo podes construir colocando el actor laser que viene
con pilas en la escena y cambiarle el código así:

// @ts-ignore
class laser extends Actor {

    velocidad;

    iniciar() {
        this.centro_x = 0.3;
        this.velocidad = 10;
        this.pilas.reproducir_sonido("laser");
    }

    actualizar() {
        this.avanzar(this.rotacion, this.velocidad);
        this.eliminar_si_sale_de_la_pantalla();
    }

    eliminar_si_sale_de_la_pantalla() {
        let izquierda = this.pilas.camara.borde_izquierdo;
        let derecha = this.pilas.camara.borde_derecho;
        let arriba = this.pilas.camara.borde_arriba;
        let abajo = this.pilas.camara.borde_abajo;

        if (this.x > derecha || this.x < izquierda || this.y > arriba || this.y < abajo) {
            this.eliminar();
        }
    }
}

Te paso un ejemplo completo que armé para probar este cambio en el actor laser:

https://app.pilas-engine.com.ar/#/proyecto/cb841cfe-6003-46cc-8897-d3e7742b6ebf

nave

1 me gusta

gracias amigo @hugoruscitti me encanta tu trabajo, saludos

¡¡ Gracias @PabloSosa :sweat_smile: !!