2017-01-23 2 views
0

Ich habe eine kleine Szene mit Wänden erstellt. Die untere Wand ist fest. Aber links und rechts nicht. Warum? Kannst du mir bitte helfen?Phaser.js wie man vertikale Wände fest macht?

Game Scene

So wie man sehen kann ich auf der Bodenwand stehen kann. Es ist solide. Mario fällt nicht runter. Aber ich kann durch die linke oder rechte Wand gehen. Ich weiß nicht, was das Problem ist, weil alle diese Wände in der gleichen Gruppe sind.

So sah ich auch, wenn Sie versuchen, durch die linke Wand aus dem Boden gehen - Sie können es tun. Aber wenn Sie das gleiche von oben tun wollen, ich meine, auf die Spitze der Wand fallen - das können Sie nicht tun.

Also, wie diese Wände (rechts und links) solide gemacht werden, um nicht vom Boden aus zu gehen?

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

}, 

Antwort

0

Verwendung:

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

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

Aber ich denke, es ist ein wenig einfacher, editierbare und vorzeigbar eine Tile Karte. Sie benötigen nur eine kleine software und eine Reihe von Sprites, um die gewünschte Karte zu zeichnen, gibt es viele examples

Verwandte Themen