2016-04-23 9 views
0

私は衝突で状態を切り替えようとしています。プレイヤーはそれが状態を切り替える必要がある別のスプライトを打つが、それは...ないフェーザーによる新しい状態

まずときだから私は​​下のプレーヤーとenterDoorスプライトを宣言しています:

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

その後、私がしようとしています

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

そしてenterHouseは別の関数である:update:の下にオーバーラップを作る

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

私は何が間違っていますか?

+0

どのバージョンのPhaserで、ブラウザコンソールにメッセージが表示されていますか? –

+0

最新のバージョンではありません。ちょうど何も起こっていない –

+0

私はあなたがオーバーラップで指定した順序で2つのオーバーラップするオブジェクトでコールバック関数が呼び出されるので、 'enterHouse:function(obj1、obj2){// instructions}' 。 –

答えて

0

上記のコードでは、私はoverlapをトリガーすることができませんでした。プレイヤーのスプライトのbodymovesを無効にした後、overlapがトリガーされました。

player.body.moves = false; 

あなたenterHouse関数は二つのスプライトを受け入れる必要はなく、そのまま残すことができます。

これがなぜ必要なのかわかりません。

関連する問題