プログラミングノート

一からものを作ることが好きなエンジニアの開発ブログです。

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);

サンプル


4人パーティーと、4人の村人(動作はランダム)を配置してみました。当たり判定が入ってないなどまだまだ改良ポイントはありますが、それなりに使えそうな感じになりました。ソースはこちらから、アプリはQRコードからどうぞ。