2016-09-05 5 views
0

スプライトの2つが重なったときに、ビューポートの左上隅にテキストを追加する方法を工夫しています。そのうちの1つはアイテムで、もう1つは私のキャラクターです。私はすでに重複を検出することができますし、キーをクリックすると項目を選択(スプライトを消去)します。しかし、私は "Click" E "のような何かを言っているテキストを欲しいと思っています!"コリジョン関数がアクティブな間に現れ、スプライトをピックしてそのスプライトを消去すると、テキストは消えてしまいます。Phaser:スプライトが重なったときのテキストの表示

私は、テキストを複数の時間(多くの場合、fpsが低下する)でレンダリングしているので、一度作成して目的に応じて削除したいと思います。私のコード:

function collisionHandler(dude,the_sword) { 
pickObject.onDown.add(function() { 
    the_sword.kill(); 
}, this); 
} 

game.physics.isoArcade.overlap(dude, the_sword, collisionHandler, null, this); 

// message saying to pick // Where to put this? 
var style = { font: "30px Arial", fill: "#ff0044"}; 
var pick_message = this.game.add.text(0,20,"Click 'E' to pick up the sword!",style); 
pick_message.fixedToCamera = true; 

どうすればよいですか?あなたの '作成' 機能で

答えて

1

var style = { font: "30px Arial", fill: "#ff0044"}; 
var pick_message = this.game.add.text(0,20,"Click 'E' to pick up the sword!",style); 
pick_message.fixedToCamera = true; 
pick_message.visible = false; 

その後:そのような

function collisionHandler(dude,the_sword) { 
pick_message.visible = true; 
pickObject.onDown.add(function() { 
    the_sword.kill(); 
    pick_message.visible = false; 
}, this); 
} 

game.physics.isoArcade.overlap(dude, the_sword, collisionHandler, null, this); 

何かが動作するはずです。あなたが他のアクションを実行したい場合は、ドアを開けるように、あなたが使用することができます。

pick_message.setText("Click 'Q' to open the door!"); 

あなたはevertime新しいテキストを作成する必要はありません、あなたは異なる目的のための1つを使用することができます。

+0

これは良い単純な解決策のようです。しかし、今、私のキャラクターが他のスプライトに触れると、それはそこに詰まり、もはや動くことができません。 –

+0

これは機能しています。あなたの解決策はうまく働いた –

+1

これは素晴らしい方法です。私が追加する唯一のコメントは、衝突ハンドラ内に 'onDown.add'を持たないことです。で無名関数を追加すると、スプライトが重複している限り、実際には無名関数が追加されます。代わりに、 'create'関数に' onDown'シグナルを追加するか、またはオーバーラップコールバックにフラグを設定して、それが現在チェックできるかどうか、あるいはそれらの行に沿って何かを知らせるようにします。手短に言えば、ハンドラは何百回も呼び出されるので、何が入っているか注意してください:) – PhotonStorm

関連する問題