0

私は初めて Andengine で最初のアプリを開発しています。私のプロジェクトの説明は次のとおりです。

  1. 4つのピースが互いに近くに配置されています
  2. 4つのピースを4つの異なるプレートに移動して配置する
  3. 4 つの異なるピースを 4 つの異なるプレートに配置することに成功したら、4 つの新しいピースを生成し、ステップ (1)、(2)、および (3) を続行します。

今、私はこのシナリオを次のように実装しました:

  1. 最初に、新しいBitmapTextureAtlas1sprites1を作成し、特定の位置を割り当てました
  2. 新しいオブジェクトの場合、新しい BitmapTextureAtlas を作成し、以前のBitmapTextureAtlas1に割り当て、スプライトに似ています

3.Toucharea と atachchild を登録してから、TouchArea と DetachChild を登録解除し、Follow(1 と 2 と 3)

これは正しいアプローチですか?

私が直面している問題はこれです:

pices1 を任意のプレートに配置すると、正常に移動しますが、pices1 の最初の場所に隠されているものがあり、pice1 の最初の場所から任意のプレートに再度移動すると、オブジェクトが移動したことを示すフラグがインクリメントされます

4

1 に答える 1

0

@GulZarの質問から:

これは正しいアプローチですか?

回答: いいえ。ゲーム プレイを開始する前に必ずリソース (グラフィックス) をロードします。一度だけロードする必要があります。スプライトの使用が終了したら、BitmapTextureAtlas.unload(); を呼び出すことができます。

スプライトをデタッチするたびに、グラフィックスを再度ロードする必要があると思うかもしれません。スプライトのデタッチは、メモリからではなく、シーンからスプライトを削除する唯一の原因です。

率直に使用するカスタム スプライト クラスを作成できます。例:

 public class Food extends PixelPerfectAnimatedSprite {

               public Food(float pX, float pY,
                PixelPerfectTiledTextureRegion pTiledTextureRegion,
                VertexBufferObjectManager pVertexBufferObjectManager) {

               super(pX, pY, pTiledTextureRegion, pVertexBufferObjectManager);

        }
@Override
    public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
            float pTouchAreaLocalX, float pTouchAreaLocalY) {

        return true;
    }

    @Override
    public void onAttached() {
         super.onAttached();
    } 
}

ここでは、ピクセル パーフェクト コリジョンのためにPixelPerfectAnimatedSpriteを拡張します。SpriteまたはAnimatedSpriteを使用できます。次に、onAreaTouched、onAttached() およびエンティティからのすべてのオーバーライド メソッドをオーバーライドできます。さて、 onAreaTouched() 内で、移動中に何が起こるかのロジックを記述します。

上記を行った後、ゲームプレイシーンから呼び出すことができます。プレーヤーが 1 つのピースをプレートに移動すると、条件/フラグを設定して、新しいピースを取り付けるかどうかを指定します。あなたの論理に依存します。良いツイートを得るためにもっと説明してください。

于 2013-05-02T09:30:14.880 に答える