pilas-engine

Problema con máscara

Buenos días.

Llevo intentando desde hace unos días hacer una versión ligeramente modificada del ejemplo de los fantasmas. El problema es que me gustaría hacerlo con monedas en vez de fantasmas (pero con la misma máscara negra del ejemplo), y que éstas desaparezcan al hacer clic sobre ellas.
Sin embargo, después de escribir el código, descubrí que esto no era posible, puesto que la máscara actúa como una capa que impide interactuar con otros actores. ¿Cómo podría solucionar este problema?

He aquí el código de la máscara:

class actor extends Actor {
  iniciar() { }

  actualizar() {
    this.x = this.pilas.cursor_x;
    this.y = this.pilas.cursor_y;
  }
}

Y el de la moneda:

class moneda11 extends Actor {

  velocidad_x: number
  velocidad_y: number
  izq: Sensor;
  dcha: Sensor;
  arriba: Sensor;
  abajo: Sensor;

  iniciar() {

    this.animacion = "moneda";
    this.velocidad_x = -2;
    this.velocidad_y = -2;
    this.izq = this.obtener_sensor("izq");
    this.dcha = this.obtener_sensor("dcha");
    this.arriba = this.obtener_sensor("arriba");
    this.abajo = this.obtener_sensor("abajo");

  }

  actualizar() {

    this.x += this.velocidad_x
    this.y += this.velocidad_y
    let izq = this.izq.cantidad_de_colisiones;
    let dcha = this.dcha.cantidad_de_colisiones;
    let arriba = this.arriba.cantidad_de_colisiones;
    let abajo = this.abajo.cantidad_de_colisiones;

    if (dcha == 1) {
      this.velocidad_x = -2;
    }

    if (izq == 1) {
      this.velocidad_x = 2;
    }

    if (arriba == 1) {
      this.velocidad_y = -2;
    }

    if (abajo == 1) {
      this.velocidad_y = +2;
    }

  }

  cuando_hace_click() {
    this.reproducir_sonido("moneda");
    this.pilas.enviar_mensaje_global("subir_energia");
    this.eliminar();
    this.proyecto.moneda += 1;
  }
}

Gracias.

Hola @Halen !!!, lo que podrías hacer es cambiar el código de la máscara así:

class actor1 extends Actor {

  iniciar() {
    this.sprite.disableInteractive();
  }

  actualizar() {
    this.x = this.pilas.cursor_x;
    this.y = this.pilas.cursor_y;
  }
}

Esa función interna disableInteractive desactiva todos los clicks de la máscara, haciendo que los clicks “pasen” a través de la máscara.

Avisame si te sirve, sino buscamos otra estrategia. ¡Abrazo!