2011-12-24 11 views
2

私は昨日andEngineを使い始めましたが、私はかなり混乱しています。私は各プレーヤーのカスタムキャラクタを作りたいので、私はAssets/gfxのアプリケーションの中にデータベースを作りたい、別の目や鼻を選ぶと、キャラクターは変わります。別のスプライトを作成せずにこのようなものを構築し、その位置とそのすべてを設定する方法はありますか? (コンピュータには、私がメープルストーリー、LaTale、Gustオンラインなどのような私のアプリでやりたいことをしているゲームがいくつかあります)AndEngineのカスタムスプライト

ありがとう!

答えて

3

私はそれがこのように(私はそれを使用してゲームを持っていた、またそれを試したん)行われますが、ここでは今、私の頭に浮かんだアイデアですかわからない:

は、我々が持っているとしましょうmaplestoryのようなキャラクターアピアランス編集のゲーム。簡単にするために、キャラクターは単なるサークル、または2Dボールです。あなたはその色を変えることができ、それは目の色です。ですから、これらのフォルダを持っている:

Red circle

そして、我々はこれらの目を持っている:

assets/gfx/circles 

そして

assets/gfx/eyes 

は今、私たちはこのサークルを持って言うことができます

Yellow eyes

そしてそれらを結合したいと思います。

あなたはそれを行うことができます:

BitmapTextureAtlas playerTextureAtlas = new BitmapTextureAtlas(256, 256 TextureOptions.BILINEAR_PREMULTIPLYALPHA); 
    TextureRegion playerTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(playerTextureAtlas, this, "circles/redcircle.png", 0, 0); 
    //By executing the next line, we place the eyes over the player texture area. 
    //There is NO need to keep a reference to the texture region this returns to us, because technically this one and playerTextureRegion are THE SAME - they both hold the same region in the texture (As long as they have the same sizes, of course) 
    BitmapTextureAtlasTextureRegionFactory.createFromAsset(playerTextureAtlas, this, "eyes/yelloweyes.png", 0, 0); 

覚えておいてください - 目の画像の背景は、それが円を上書きしないようにtransperantする必要があります! TextureOptionsパラメータで遊んでください。私が使用したものがこの目的を満たすかどうかはわかりません。おそらく別のものがありますか?

最後に、あなたの目に目をつけ、同じサイズの円にしてください。この方法では、フィットするかどうかをテストする方が簡単です。目をちょうど小さな四角形にすると、円の上に置くべき場所が見つかるまで、目をくらます必要があります。時間の無駄...

これで、異なるボディ/アイ/ヘアなどをロードして配置し、カスタマイズしたプレーヤーを手に入れることができます。

+0

ありがとうございます!しかし、私はそれをカスタマイズするためにどのように使用しますか?つまり、プレーヤーが新しい目の色を購入したとき、プログラムを自動的に変更するにはどうすればいいですか?また、プログラムのどこに私のボイドを置くのですか?その混乱..ありがとう! – Baruch

+0

クラス 'Player'を作成し、ユーザーがゲームを終了してインスタンスを保存すると(例えばファイルに)、ゲームを起動するときにインスタンスをロードします。次に、このクラスでは、髪の色、目の色などを保持するフィールドをいくつか持つことができます。次に、ゲームが読み込まれるたびに変更が表示されます。ただし、ユーザーがカスタマイズを変更したときに、新しいテクスチャを再読み込みすることができます。 「私のボイド」はどういう意味ですか? – Jong

+0

例:public void buyItem(){ if(money> moneyNeeded){ eyecolor = blue; } } – Baruch

0

私は恐らく、ジョンのソリューションは、少なくともGLES1バージョンのAndEngineでは動作しません。私がこのようにスプライトを組み合わせようとしたとき、最新のスプライトはその下にあったものを上書きしました。この場合、目だけが画面に表示されます。