1

I am writing a game in phaser.js where you have to avoid moving spaceships. The mouse is replaced with a UFO. I need help trying to figure out why phaser wont detect the collision between the UFO and the spaceship group. Please excuse the messyness as I have tried a lot of potential solutions. Code:

var spaceShip; var score = 0; var text; var gameOver = false; var veggies; var cursor; var gameplayState = { create: function () { game.add.sprite(0,0,'Stars'); veggies = game.add.group(); veggies.enableBody = true; veggies.physicsBodyType = Phaser.Physics.ARCADE; function doSpaceship() { if (ships == true){ if (ships == false){ kill(); } if (Math.random() > 0.5){ spaceShip = veggies.create(0, 300, 'Ship'); spaceShip.angle = 90; game.physics.arcade.collide(veggies, cursor, collisionHandler); spaceShip.body.velocity.x=1000; fx.play(); var times = game.time.events.add(Phaser.Timer.SECOND * Math.random() * 3, doSpaceship, this); var timess = game.time.events.add(Phaser.Timer.SECOND * 1, kill, this); } else { spaceShip = veggies.create(Math.random() * 640, 480, 'Ship'); game.physics.arcade.collide(veggies, cursor, collisionHandler); spaceShip.body.velocity.y=-1000; gx.play(); var times = game.time.events.add(Phaser.Timer.SECOND * Math.random() * 3, doSpaceship, this); var timess = game.time.events.add(Phaser.Timer.SECOND * 1, kill, this); } } function kill(){ if(gameOver == false){ score++; } spaceShip.destroy(); } } cursor = game.add.sprite(0,0,'Ufo'); var ships = true; text = game.add.text(0,0,"Score: " + score); text.font = 'Saira Extra Condensed'; doSpaceship(); function collisionHandler(){ gameOver = true; } }, update: function(){ cursor.x = game.input.mousePointer.x; cursor.y = game.input.mousePointer.y; text.setText("Score: " + score); } };

1 Answer 1

3

You should move the line

game.physics.arcade.collide(veggies, cursor, collisionHandler); 

to the update function.

Sign up to request clarification or add additional context in comments.

Comments