【ゲームプログラム気まぐれ講座 ~スプライトとマリオ~】
スプライトと言えば?
ああ、あのシュワ~っと爽やかな
炭酸飲料ね。それは「Sprite」。
じゃなくて、アニメーション用語です。
簡単に言うと、
パラパラ漫画の1コマ1コマを
画像にして並べたもの。
スライドって呼んだほうが感覚的に
分かりやすいかも知れませんね。
ウェブで画像やイラストを扱う人は、
「gifアニメーション」のようなものと
イメージしても良いかと思います。
ゲームとかでキャラクターが動くのは、
何枚にもコマ割りされたスプライトを、
動く方向やアクションの種類に応じて
パパパパッと連続的に切り替えている
からです。(3Dゲームは別)
スプライトを作るにはコツがあって、
なるべく全てのコマの縦横のサイズを
同じにして、一定の間隔で並べます。
例えば余白を含めて縦横32ピクセルの
マリオをジャンプさせるとき、
━━━━━━━━━━━━━━━━━
x=0 y=0
━━━━━━━━━━━━━━━━━
ジャンプ前のマリオの絵(32*32px)
━━━━━━━━━━━━━━━━━
x=0 y=32
━━━━━━━━━━━━━━━━━
ジャンプ中のマリオの絵(32*32px)
━━━━━━━━━━━━━━━━━
x=0 y=64
━━━━━━━━━━━━━━━━━
着地直前のマリオの絵(32*32px)
━━━━━━━━━━━━━━━━━
こんな感じに画像ファイルの左上隅を
(x,y)座標の原点(0,0)と見なして各コマ
のマリオの絵を並べて配置します。
すると、プログラムのほうは32の倍数
だけy座標を変化させて画像を読み込み
画面に表示すれば良くなるので、
スプライト(スライド)の枚数分だけ
時間差で繰り返し処理をします。
#define ANIMATION_JUMP_MAX 3
#define SPRITE_MARIO "/mario.png"
for ( i=0; i