Hello Developers , I was developing the Space Invaders game in a library called Pherse.js (JavaScript). When two objects collide (bullet) vs (enemy) my screen freezes, led I leave the code in JS:
JS:
var fondoJuego;
var nave;
var TecladoInputs;
var cursores;
var enemigos;
var balas;
var tiempoBala = 0;
var botonDisparo;
var juego = new Phaser.Game(370 ,550, Phaser.CANVAS, 'bloque_juego2');
var estadoPrincipal = {
preload: function(){
juego.load.image('fondo2','img/fondito2.jpeg');
juego.load.image('personaje','img/nave.png');
juego.load.image('laser','img/laser.png');
juego.load.image('enemigo','img/enemigos_ovnis.png');
},
create: function(){
fondoJuego = juego.add.tileSprite(0, 0, 370, 550, 'fondo2');
nave = juego.add.sprite(juego.width/2,500,'personaje');
nave.anchor.setTo(0.5);
//cursores = juego.input.Keyboard.createCursorKeys();
botonDisparo = juego.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR);
juego.physics.startSystem(Phaser.Physics.ARCADE);
juego.physics.arcade.enable(nave);
nave.body.collideWorldBounds = true;
TecladoInputs = juego.input.keyboard.createCursorKeys();
balas = juego.add.group();
balas.enableBody = true;
balas.physicsBodyType = Phaser.Physics.ARCADE;
balas.createMultiple(20, 'laser');
balas.setAll('anchor.x', 0.5);
balas.setAll('anchor.y', 1);
balas.setAll('outOfBoundsKill', true);
balas.setAll('checkWorldBounds',true);
enemigos = juego.add.group();
enemigos.enableBody = true;
enemigos.physicsBodyType = Phaser.Physics.ARCADE;
for(var y = 0; y < 10 ; y++){
for(var x =0; x < 7; x++) {
var enemigo = enemigos.create(x*40, y*20, 'enemigo');
enemigo.anchor.setTo(0.5);
}
}
enemigos.x = 30;
enemigos.y = 30;
var animacion = juego.add.tween(enemigos).to({x:100}, 1000,
Phaser.Easing.Linear.None,true,0,1000,true);
//var animacion2 = juego.add.tween(enemigos).to({y:500}, 8000,
// Phaser.Easing.Linear.None,true,0,1000,true);
animacion.onLoop.add(descender, this);
},
update: function(){
//fondoJuego.tilePosition.y +=3;
///////////////////////////////////////izquierda
if (TecladoInputs.left.isDown){
nave.position.x +=-3;
fondoJuego.tilePosition.x +=1;
}
////////////////////////////////////////Derecha
if (TecladoInputs.right.isDown){
nave.position.x +=3;
fondoJuego.tilePosition.x +=-1;
}
/////////////////////////////////Abajo
if (TecladoInputs.down.isDown){
nave.position.y +=3;
}
/////////////////////////////////Arriba
if (TecladoInputs.up.isDown){
nave.position.y +=-3;
}
/////////////////////////////////////////Disparo
var bala;
if (botonDisparo.isDown){
if(juego.time.now > tiempoBala){
bala = balas.getFirstExists(false);
}
if (bala){
bala.reset(nave.x,nave.y);
bala.body.velocity.y = -350;
tiempoBala = juego.time.now +200;
}
}
juego.physics.arcade.overlap(balas, enemigos, colision, null, this);
}
};
function colision(bala, enemigos){
bala.kill();
enemigo.kill();
}
function descender(){
alert("kpdo");
enemigos.y += 100;
}
juego.state.add('principal2',estadoPrincipal);
juego.state.start('principal2');
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="phaser.js"></script>
<script src="principal2.js"></script>
<title>Juegito</title>
</head>
<body>
<div id="bloque_juego2">
</div>
</body>
</html>
I leave the full file in Google Drive: link