Phaser.js如何让垂直墙坚固?

时间:2017-01-23 17:11:03

标签: javascript phaser-framework

我用墙壁创造了一个小场景。底壁是坚固的。但左右不是。为什么?你能帮我吗?

Game Scene

所以你可以看到我可以站在底墙上。它很坚固。马里奥并没有倒下。 但是我可以通过左边或者墙壁。我不知道问题是什么,因为所有这些墙都属于同一组。

所以我也看到当你试图从地面穿过左墙时 - 你可以做到。 但是当你想从顶部做同样的事情时,我的意思是落在墙上 - 你不能那样做。

那么如何让那些墙(右边和左边)坚固不要从地面穿过?

create: function()
{
    game.physics.startSystem(Phaser.Physics.ARCADE);
    game.stage.backgroundColor = "3984db";
    game.physics.arcade.gravity.y = 1200;
    this.cursor = game.input.keyboard.createCursorKeys();

    this.mario = game.add.sprite((game.width / 2) + 77, game.height / 2, 'mario');
    this.mario.anchor.setTo(0.5,0.5);
    this.mario.scale.setTo(0.15,0.15);

    this.walls = game.add.group();
    this.walls.enableBody = true;
    this.walls.enableBody = true;

    this.spaceBar = game.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR);

    this.downWallH = game.add.sprite(0, 540, 'WallH', 0, this.walls);
    this.UpWallH = game.add.sprite(0, 0, 'WallH', 0, this.walls);
    this.leftWallW = game.add.sprite(0,0, 'WallW', 0, this.walls);
    this.rightWallW = game.add.sprite(870,0, 'WallW', 0, this.walls);

    this.enemy = game.add.sprite(300,300, 'enemy');
    this.enemy.scale.setTo(0.2,0.2);

    game.physics.arcade.enable([this.mario, this.enemy]);
    this.walls.setAll('body.allowGravity', false);
    this.walls.setAll('body.immovable', true);

},

1 个答案:

答案 0 :(得分:0)

使用:

create: function() 
{
   ...
   this.mario.body.collideWorldBounds = true;
   ...
}

update: function() 
{   
    ...
    game.physics.arcade.collide(this.mario, this.walls);
    ...
}

但我认为使用Tile地图会更容易,可编辑和呈现。 你只需要一个小software和一组精灵来绘制你想要的地图,有很多examples