2016-04-23 27 views
0

我試圖用碰撞切換狀態。所以,當玩家擊中另一精靈應該切換狀態,但它不..Phaser的新狀態

首先我聲明瞭玩家和精靈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); 

然後我試圖使重疊update:下:

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

而且enterHouse是另一個功能:

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

我在做什麼錯?

+0

什麼版本的Phaser,並且您在瀏覽器控制檯中獲取任何消息? –

+0

最新版本,沒有。這只是沒有任何反應 –

+0

我相信你應該定義你的碰撞處理程序爲: 'enterHouse:function(obj1,obj2){// instructions}'因爲回調函數將被調用兩個重疊的對象, 。 –

回答

0

因此,對於上面的代碼,我無法讓overlap觸發。在玩家精靈body上禁用moves後,overlap被觸發。

player.body.moves = false; 

enterHouse功能並不需要接受兩個精靈,並可以保持原樣。

我不知道爲什麼這是必要的。