0

初めて Phaser JS ゲーム フレームワークを使用しています。2 つのスプライトがいつ重なったり衝突したりするかを判断しようとしています。これが私がそうしようとしている方法です:

更新機能では:

update: function() {
    this.game.physics.collide(this.player1, this.player2, this.CollisionD, null, this); 
    this.game.physics.overlap(this.player1, this.player2, this.OverlapD, null, this);
}

次にCollisionD、衝突ハンドラーである関数で、次のことを試しました。

function CollisionD(obj1, obj2) {
    alert('collision!');
}

そして私は試しました:

function CollisionD(player1, player2) {
    alert('collision!');
}

同じことが私のオーバーラップ検出にも当てはまります。私は何を間違っていますか?コンソールにもエラー メッセージは表示されません。

4

1 に答える 1

1

さて、私は過去にフェイザーのオーバーラップで同様の問題を抱えていましたが、ガイドで見たように正しく機能しているようには見えませんでした. そのため、コールバックを渡す代わりに、オーバーラップをブール値として使用し、if ステートメントを使用してメソッドが true の場合に呼び出しました。あなたの場合、次のようになります。

if(this.game.physics.overlap(this.player1, this.player2))
    overlapD(this.player1, this.player2);

確かにもう 1 行かかりますが、壊れたコードの手間が省けますよね?

于 2014-07-26T21:44:49.497 に答える