1

私はゲーム開発に少し慣れていません。現在、html5 ゲームに Phaserjs を使用しています。境界の片側からはみ出したスプライトの部分を反対側に持ってきたいです。Phaser のイメージ ドキュメントを確認しました。どうすればよいかわかりません。その部分をコピーしてキャンバスに貼り付けることを考えましたが、ゲーム オブジェクトの参照は同じではありません。また、コピー機能には制限があります(画像左上からのコピー)。

Phaser の例を調べました。しかし、何の手がかりも得られませんでした。

どんな助けでも大歓迎です。ありがとう。

4

2 に答える 2

0

これは jsfiddle です: http://jsfiddle.net/m8nj4cjr/

私はフェイザー フレームワークは初めてですが、キャンバス レンダラーを使用しています。キャンバスの例がお役に立てば幸いです。

次の 2 つのケースを処理する必要があります。

  1. スプライトが部分的にキャンバスの境界からはみ出している
  2. スプライトが完全にキャンバスの境界を超えています

スプライトが右に動いているとしましょう。条件sprite.x + sprite.width > canvas.widthが真の場合、スプライトは部分的に範囲外です。キャンバスの左端の範囲外にスプライトの部分をレンダリングします。context.rect(sprite.x - canvas.width, sprite.y, sprite.width, sprite.height);

スプライトが右端境界から完全に外れたら、sprite.x > canvas.widthx の位置を 0 に設定します。sprite.x = 0

于 2014-09-09T19:24:22.850 に答える
0

あなたの質問を正しく理解できれば、次の解決策を試すことができます。

  • キャンバスの幅 + 元のスプライトの幅の PNG を作成します。
  • 元のスプライトを png の両端に配置します (つまり、PNG ではsprite+ blank space+spriteになります)
  • 他のスプライトと同じようにゲームに追加します

スプライトを部分的に画面外に移動すると、そのコピーはまったく同じ y スポットで画面内に移動します。

スプライト シートのアニメーションと衝突で動作するより良い解決策があるかもしれませんが、これは画像の一部を切り取って移動するよりも簡単に思えます。

于 2014-09-09T18:21:00.420 に答える