2017-01-23 5 views
0

私は壁を持つ小さなシーンを作りました。底面はしっかりしています。しかし、左右はそうではありません。どうして?手伝ってくれませんか?Phaser.js垂直壁を固める方法は?

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); 

}, 

答えて

0

用途:

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

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

しかし、私はそれがタイルマップを使用して少し、簡単に編集可能と提示可能だと思います。 あなたはほんの少しのsoftwareと必要な地図を描画するためのスプライトのセットが必要です。多くはありますexamples

関連する問題