メイン

AIMSでグラディウスっぽいSTGを作る(3)

sample1.jpg
それらしく動くものを作ってみました。
敵は出ないので当たり判定ロジックは入っていませんし
パワーアップも最初からフル装備で固定です。

この程度なら簡単に作れてしまいます。

これを作っていてAIMSのアニメーションの仕様を理解できました。
AIMSのチップハンドル(cutGraphicなどで作成する)は
個別に「自分の表示フレーム数」「次に表示するチップハンドル」という情報を持っています。

ここに値を設定するには setGraphicAnime/setGraphicAnimeLoop/setGraphicAnimeSequence を使います。

アニメ情報を設定したチップハンドルをcreateActorに指定してアクターを生成すると
自動的にアニメーションが行われます。

setGraphicAnimeLoop({G.pat[1], G.pat[2], G.pat[3]}, 5, 1)
としてアニメ情報を設定し
createActor(G.pat[1], 0, 0, 1)
このようにアクターを生成すると、 1 > 2 > 3 > 1 の順にアニメーションがループします。

createActor(G.pat[2], 0, 0, 1)
であれば 2 > 3 > 1 > 2 の順にループします。

1 > 2 > 3 > 2 > 1 の順にループさせたい場合は
setGraphicAnimeLoop に渡すテーブルを {G.pat[1], G.pat[2], G.pat[3], G.pat[2]} にしたくなりますが
これではダメです。
2の次に表示するチップが「2 > 3」「2 > 1」の二種類存在することになってしまいます。
次に表示するチップは1種類しか指定できませんからどちらか一方しか有効になりません。

実際には「2 > 3」の設定が「2 > 1」で上書きされるので 1 > 2 > 1 というアニメになってしまいます。

ではどうするかというと、cloneGraphic を使って 2 のコピーを作って
それを4としてループを作成すればいいのです。

G.pat[4] = cloneGraphic(G.pat[2])
setGraphicAnimeLoop({G.pat[1], G.pat[2], G.pat[3], G.pat[4]}, 5, 1)

これで期待通りのアニメーションになります。