>1つの画像では表示させれない
この部分、意味がよくわかりません。
「アニメーションを表示」というといろんな方法があると思うのですが、
今は具体的にどのような方法で、グラフィックを画面に表示していますか?
以下は、「こういう意味かな?」っていう推測した上でのお話なので間違ってたら読み飛ばしてください。
もし、同じものを表すグラフィックが、アニメーションのパターンやコマごとに違うサイズの画像になっているのだとしたら、
【1】
縦、横それぞれ一番長い画像に合わせて、それより小さい絵の場合は余分な部分に余白をつくる。
たとえば、立っていてもしゃがんでいても画像データの縦幅は同じ大きさで、しゃがんでいる画像の上のほうは空白にします。
ただし、この方法だとキャラクターの当たり判定をしたいとき、画像データの大きさをそのまま判定に使えません。別途、当たり判定用のデータを持つ必要があります。
また、データが無駄に大きくなります。
その代わり、スクリプトは簡単になります。
【2】
すべての絵の表示位置データを作っておく.
表示位置をずらす量を、絵ごとに作っておきます。そして、たとえばキャラクターの表示位置を x,y とすると、
pos x+(右にずらす量), y+(下にずらす量)
こんな感じで表示位置を指定します。この値は配列にでもしておけば扱いやすいでしょう。
データの無駄が小さく、絵の大きさがそのまま当たり判定にも使えますが、スクリプトはややっこしくなります。
以下、【2】のサンプル.
// 大きさ32×32の立ち絵の用意.
screen 1,128,32:cls 4:title"立ちパターン"
color 255,255,255
repeat 4
font msgothic,32-cnt
pos cnt*32+cnt/2, cnt
mes "立"
loop
// 大きさ16×16の座り絵の用意.
screen 2,128,16:cls 4:title"座りパターン"
color 255,255,255
repeat 4
font msgothic,16-cnt
pos cnt*16 + cnt/2, cnt
mes "座"
loop
// 絵に関するデータの配列をつくる.
winID=1,2 // 絵を格納したウインドウID.
sizeX=32,16 // 貼り付ける絵の大きさ.
sizeY=32,16 // 〃.
shiftX=0,8 // 貼り付けるときにずらす量.
shiftY=0,16 // 〃.
screen 0,240,48,0
x=100
y=16
repeat
stick k,0xff
x+=((k&4)<<1)-((k&1)<<3) // キャラの移動.
y+=(k&8)-((k&2)<<2)
if(k&16):s=1:else:s=0 // 立っているか座っているかを表す.
a=(a+1)&3 // こうすると a が 1→2→3→0→1→2→ …になる.
redraw 0:color 0,0,0:boxf
// キャラの絵の貼り付け位置を、shift?? 配列を使ってずらす.
pos x+shiftX(s) , y+shiftY(s)
// 立ち、座りの状態に合わせたサイズの絵を貼る.
gcopy winID(s), a*sizeX(s),0 , sizeX(s),sizeY(s)
redraw 1
wait 10
loop