I’m making a game that when clicking on the sprite, life goes down to 0 then destroy. But destrou not work the sprite is active = false but still visible.
I have class BichoGrafico and i recive the group of bichos :
class BichoGrafico extends Phaser.GameObjects.Sprite {
vida;
velocidade;
danoMartelo;
chave;
grupoBichos;
constructor(scene, x, y, texture, vida, velocidade, danoMartelo, grupoBichos) {
super(scene, x, y, texture);
this.chave = texture;
scene.add.existing(this);
scene.physics.add.existing(this);
this.vida = vida;
this.velocidade = velocidade;
this.danoMartelo = danoMartelo;
this.grupoBichos = grupoBichos;
if (texture == 'bicho3') {
let escala = window.devicePixelRatio / 7;
this.setScale(escala);
} else {
let escala = window.devicePixelRatio / 9;
this.setScale(escala);
}
this.setInteractive();
this.on('pointerdown', this.morrer, this);
}
playHit() {
var chaveSom = 'hit' + this.chave;
this.scene.sound.add(chaveSom).play();
}
morrer() {
this.vida -= this.danoMartelo;
this.tint = 0xff0000;
this.alpha -= .01;
this.grupoBichos.clear();
if (this.vida <= 0) {
console.log('como está a vida ', this.vida, ' ql foi o dano ', this.danoMartelo);
console.log('bicho ', this);
this.playHit();
// this.active = false;
// this.visible = false;
this.grupoBichos.remove(this, true ,true);
this.destroy(this,true); // not working well
this.grupoBichos.clear();
console.log('bicho morreu');
}
}
}
here wher this.gropoBichos is create in another class:
desenharBichosCreate() {
this.groupBichos = this.scena.physics.add.group({
classType: BichoGrafico,
bounceX: 1,
bounceY: 1,
colliderWorldBoundes: true
});
this.timeEventB = this.scena.time.addEvent({ delay: 1000, callback: this.desenharBicho, callbackScope: this, loop: true })
}
desenharBicho() {
if (this.gameOver == false && this.passouDeFase == false) {
let buracoAlvo = this.buracosAtivos[UtilC.getNumEntre(0, this.buracosAtivos.length - 1)];
for (let i = 0; i < buracoAlvo.qtdBichoPorBuraco; i++) {
let chave = buracoAlvo.bichosPermitidos[UtilC.getNumEntre(0, buracoAlvo.bichosPermitidos.length - 1)];
let bicho = this.getBichoPorChave(chave);
if (bicho) {
let bg = new BichoGrafico(this.scena, buracoAlvo.x, buracoAlvo.y,
bicho.chave, bicho.vida, bicho.velocidade, this.martelo.getMarteloHabilitado().dano, this.groupBichos);
bg.angle = -90;
this.groupBichos.add(bg);
bicho.bichoGrafico = bg;
}
}
} else {
// this.timerEvents.remove();
this.timeEventB.remove();
}
}
please help me I upgrade phaser version for 3.23