2016-04-23 9 views
0

Ich versuche, den Zustand mit einer Kollision zu wechseln. Also, wenn der Spieler eine andere Sprite trifft sollte Zustand wechseln, aber es funktioniert nicht ..Neuer Zustand mit Phaser

Zuerst Ich erkläre den Spieler und die enterDoor Sprites unter create::

playerSprite = this.game.add.sprite(50, 1700, 'player-front'); 
    player = new Player(playerSprite); 
    this.game.physics.enable(player, Phaser.Physics.ARCADE); 

enterDoor = this.game.add.sprite(332, 830, 'player-back'); 
    playerDoor = new Player(enterDoor); 
    this.game.physics.enable(playerDoor, Phaser.Physics.ARCADE); 

Dann versuche ich zu machen die Überlappung unter update::

this.game.physics.arcade.overlap(player, playerDoor, this.enterHouse, null, this); 

Und enterHouse ist eine weitere Funktion:

enterHouse: function() { 
    this.state.start('Menu'); 
} 

Was mache ich falsch?

+0

Welche Version von Phaser, und erhalten Sie Nachrichten in der Browser-Konsole? –

+0

Die neueste Version und keine. Es ist nur, dass nichts passiert –

+0

Ich glaube, Sie sollten definieren Sie Ihre Kollisions-Handler als: 'enterHouse: Funktion (Obj1, Obj2) {// Anweisungen}' weil Callback-Funktion mit zwei überlappenden Objekten in der Reihenfolge, die Sie in Überlappung angegeben wurden . –

Antwort

0

Also mit dem Code oben war ich nicht in der Lage, die overlap überhaupt auszulösen. Nach dem Deaktivieren von moves auf dem Player Sprite body wurde die overlap ausgelöst.

player.body.moves = false; 

Ihre enterHouse Funktion braucht nicht die beiden Sprites zu akzeptieren und kann so bleiben, wie sie ist.

Was ich nicht weiß ist, warum dies notwendig ist.