メイン

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

sample2.jpg
ぱっと見では前回とあんまり変わりませんが、カプセルが出現するようになり
それを取ってグラディウス式のパワーアップが出来るようになりました。

さすがにパワーアップの制御ロジックはAIMSですることではないので
それなりにめんどうです。

カプセルを取る、つまりカプセルとの当たり判定はAIMSの出番です。
当たり判定矩形はチップ1枚ごとに設定する必要があるので、
アニメーションするアクターの場合は全てのチップに矩形を設定します。

当たり判定の実行は二つの関数が用意してあり、
isHitActor で一対一、getHitLayer でレイヤーに含まれる全てのアクターとの判定を行えます。
シューティングのような不特定多数のアクターが出現する場合は getHitLayer がいいでしょう。

自機アクターの onStep 内で getHitLayer を実行します。
当然カプセルの属するレイヤーは自機や自弾とは別にしておきます。
実行後、接触しているものがあればアクターハンドルの入ったテーブルが返るので

capsules = getHitLayer(LAYER_ITEM)
if #(capsules) > 0 then
for index, id in pair(capsules) do
vanish(id)
end
end

とすれば接触したカプセルを全て消滅させることが出来ます。