Jump to content

P2: Collide a ground tileSprite with player Sprite. Player fall through the ground


codevinsky
 Share

Recommended Posts

I've got a ground TileSprite.

 

I've got a player Sprite.

 

The ground TileSprite should not move, ever. But it should collide with player, and enemy sprites.

 

My code currently looks like this:

create: function() {      game.physics.startSystem(Phaser.Physics.P2JS);      game.physics.p2.setImpactEvents(true);      game.physics.p2.gravity.y = 500;      game.physics.p2.updateBoundsCollisionGroup();      playerCollisionGroup = game.physics.p2.createCollisionGroup();      groundCollisionGroup = game.physics.p2.createCollisionGroup();            background = this.add.tileSprite(0,0,1024,600,'background');      background.autoScroll(-25,0);      ground = this.add.tileSprite(0,504,1024,96,'ground');            game.physics.p2.enableBody(ground);      ground.body.fixedRotation = true;      ground.body.data.motionState = p2.Body.STATIC;      ground.autoScroll(-300,0);      ground.body.setCollisionGroup(groundCollisionGroup);      ground.body.name = 'ground';            ground.body.collides(playerCollisionGroup, function(a, {        console.log('ground collided',a,;      });      player = game.add.sprite(300,400,'horse');      player.animations.add('run',[0,1,2,3]);      player.animations.add('jump',[3]);      player.animations.play('run',12,true);      game.physics.p2.enableBody(player);      player.body.name = 'player';      player.body.setCollisionGroup(playerCollisionGroup);      player.body.collides(groundCollisionGroup, function(a, {        console.log('player collided',a,;      });

I get logs of both the ground and the player colliding with the correct bodies, but the player sprite falls through the ground sprite any how.

 

Screen%20Shot%202014-03-19%20at%209.38.2

 

 

What am I doing wrong?

Link to comment
Share on other sites

This is the correct code:

create: function() {      game.physics.startSystem(Phaser.Physics.P2JS);      game.physics.p2.gravity.y = 500;      playerCollisionGroup = game.physics.p2.createCollisionGroup();      groundCollisionGroup = game.physics.p2.createCollisionGroup();      enemyCollisionGroup = game.physics.p2.createCollisionGroup();      console.debug('pcg:', playerCollisionGroup);            background = this.add.tileSprite(0,0,1024,600,'background');      background.autoScroll(-25,0);      ground = this.add.tileSprite(0,504,1024,96,'ground');      game.physics.p2.enable(ground,true);      console.debug(ground.body,true);      ground.body.fixedRotation = true;      ground.body.data.motionState = p2.Body.STATIC;      ground.autoScroll(-300,0);      ground.body.name = 'ground';      ground.body.clearShapes();      ground.body.setRectangle(1024,96,ground.width/2, ground.height/2);      ground.body.setCollisionGroup(groundCollisionGroup);      ground.body.collides(playerCollisionGroup);           player = game.add.sprite(300,400,'horse');      player.animations.add('run',[0,1,2,3]);      player.animations.add('jump',[3]);      player.animations.play('run',12,true);      game.physics.p2.enable(player,true);      player.body.name = 'player';      player.body.setCollisionGroup(playerCollisionGroup);      player.body.collides([groundCollisionGroup, enemyCollisionGroup]);    },

Thanks to @Fishrock123 for helping out.

Link to comment
Share on other sites

  • 2 years later...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...