RPG用スプライトクラス
MIDPのSpriteではフレームがサポートされていたのですが、DojaのSpriteではサポートされていなくてあまり使えなかったので、自分で作ってみました。以下のような感じで使えます。(RPGでのキャラクター描画を想定)
キャラチップを準備
サンプルでは1キャラが72*128(12パターン)で8キャラ分あるチップセットを利用(RPGツクールの仕様)してますが、特に制限はありません。(First Seed Materialさんの素材を利用)
スプライト生成
一枚の画像全て指定するか、画像の一部を指定してスプライトを生成できます。
Sprite2 sprite = new Sprite(イメージ); Sprite2 sprite = new Sprite(イメージ, 切り出し位置X, 切り出し位置Y, 幅, 高さ);
フレーム(アニメーション)を設定する場合には、下記のようにフレームのサイズと再生する順番を指定します。フレーム番号は左上から右下に向かって0から割り振られます。
sprite.setFrame(フレームの幅, 高さ, 再生順序); ⇒ sprite.setFrame(24, 32, new int[]{0,1,2});
進んだ方向によって上下左右の画像を切り替える場合、下記のようにそれぞれのフレームを設定するだけで対応出来ます。
sprite.setFrame(フレームの幅, 高さ, {上,右,下,左方向順序}); ⇒ sprite[i].setFrame(24, 32, new int[][]{{0,1,2},{3,4,5},{6,7,8},{9,10,11}});
スプライト描画
スプライトはグループ化してから描画します(ここら辺はDojaと一緒にしてみました)。スプライト配列を指定するだけでOK。
SpriteSet2 set = new SpriteSet2(new Sprite2[]{sprite[0], sprite[1]}); Graphic.drawSpriteSet(set);
ドラクエ風パーティーを作成できる処理も入れてみました。1行追加するだけでいけます。
SpriteSet2 set = new SpriteSet2(new Sprite2[]{sprite[0], sprite[1]}); set.setPartyMode(true); Graphic.drawSpriteSet(set);