Jump to content

Problem with collision groups ...


festyrbg
 Share

Recommended Posts

I'm trying to set collision groups for my objects and I'm failing miserably. My map consists of tiles and ramps which i want to place in different collision groups, but something strange happens which i dont understand. When i set collisionGroup on either the ramps or the tiles i get collisions on the other one and if i set collision groups on both, my player collides with neither.  Please somebody explain what im doing wrong, thanks!

 

 

 

        map = game.add.tilemap('map');      
        map.addTilesetImage('grass-tileset', 'grassTiles');        
                     
        layer = map.createLayer('world1');       
        layer.resizeWorld();       
  
        map.setCollisionBetween(33,38);
        map.setCollisionBetween(49,54);
        map.setCollisionBetween(65,70); 
     
        var tileObjects = this.game.physics.p2.convertTilemap(map, layer);  
        var rampObjects = this.game.physics.p2.convertCollisionObjects(map, "ramps"); // add ramps form Tiled

        this.playerCollisionGroup 	= this.physics.p2.createCollisionGroup();
        this.tilesCollisionGroup  	= this.physics.p2.createCollisionGroup();
        this.otherCollisionGroup 	= this.physics.p2.createCollisionGroup();
        this.rampCollisionGroup 	= this.physics.p2.createCollisionGroup();

        for(var i = 0; i < rampObjects.length; i++) {
        	var rampObject = rampObjects[i];
        	rampObject.setCollisionGroup(this.rampCollisionGroup);
        	rampObject.collides([this.playerCollisionGroup]); 
        }

        for(var i = 0; i < tileObjects.length; i++) {    	
        	var tileBody = tileObjects[i];
        	tileBody.setCollisionGroup(this.tilesCollisionGroup);
        	tileBody.collides([this.playerCollisionGroup]); 
        }

        player = this.game.add.sprite(50, 50, 'playerSprite');
        player.anchor.setTo(0.5, 0.5);
        player.scale.setTo(0.5, 0.5);    
  		this.game.physics.p2.enable(player);
        this.game.physics.p2.gravity.y = 100; 
        player.body.setCollisionGroup(this.playerCollisionGroup);
       	player.body.collides([this.tilesCollisionGroup, this.rampCollisionGroup]);
        player.body.setCircle(20);  
        player.body.addCapsule(22,10,0,0,0);   
        player.body.fixedRotation = true; 
        player.body.data.gravityScale = this.gravityScale;

 

Link to comment
Share on other sites

 Share

  • Recently Browsing   0 members

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