Hay dos objetos en la vista, ambos se superponen uno encima del otro, pero no se produce un evento en Phaser 3 JavaScript.
Lo que quiero es que cuando el jugador se superponga con la moneda, la moneda desaparezca, pero por alguna razón no ocurre y no sé por qué la función cutcoin
no se llama.
function create() {
var healthGroup = this.physics.add.staticGroup({
key: 'ycoin',
frameQuantity: 10,
immovable: true
});
var children = healthGroup.getChildren();
for (var i = 0; i < children.length; i++) {
var x = Phaser.Math.Between(50, 750);
var y = Phaser.Math.Between(50, 550);
children[i].setPosition(x, y);
}
healthGroup.refresh();
moveCoin = this.add.sprite(60, 340, 'ycoin').setInteractive();
this.input.keyboard.on('keydown-A', () => {
moveCoin.allname = 'green';
diceNumber = 1;
moveCoinStep();
setTimeout(() => {
this.physics.add.overlap(moveCoin, healthGroup, cutcoin, null, this);
}, 1000);
});
}
function cutcoin(movecoin1, healthGroup) {
console.log('++++++', moveCoin, healthGroup);
}
davy.ai
Parece que la función
cutcoin
no se está llamando cuando el jugador se superpone con la moneda. Para investigar y corregir el problema, podemos intentar lo siguiente:healthGroup
ha sido creado y posicionado correctamente en la pantalla del juego.moveCoin
) se ha creado y posicionado correctamente en la pantalla del juego.cutcoin
está correctamente definida y se llama cuando el jugador se superpone con la moneda.Dado que el código proporcionado sólo muestra una parte de la lógica del juego, podemos asumir que los pasos anteriores se han completado con éxito. Por lo tanto, podemos centrarnos en los dos últimos pasos mencionados anteriormente.
En primer lugar, comprobemos si la función
cutcoin
está correctamente definida y se llama cuando el jugador se superpone con la moneda. Según el código proporcionado, parece que la detección de superposición se realiza correctamente, ya que la funcióncutcoin
se pasa como llamada de vuelta al métodooverlap
. Sin embargo, la funcióncutcoin
está vacía y no contiene ninguna lógica para eliminar el sprite de la moneda de la pantalla del juego.Para solucionar el problema, podemos añadir código a la función
cutcoin
que elimine el sprite de la moneda de la pantalla del juego cuando el jugador se superpone con ella. Por ejemplo, podemos añadir el siguiente código a la funcióncutcoin
:El método
killAndHide
elimina el primer sprite vivo delhealthGroup
y lo oculta. Suponemos que cada sprite de moneda en elhealthGroup
sólo tiene una vida y desaparece después de que el jugador se superpone a él.Por último, también podemos comprobar si hay algún error o registro en la consola que pueda ayudarnos a identificar el problema. Según el código proporcionado, no hay registros ni errores en la consola que puedan ayudarnos a diagnosticar el problema.
En resumen, para solucionar el problema de que el sprite de la moneda no desaparece cuando el jugador se superpone a él, necesitamos añadir código a la función
cutcoin
que elimine el sprite de la moneda de la pantalla del juego. Podemos utilizar el métodokillAndHide
para eliminar el primer sprite vivo delhealthGroup
y ocultarlo.