AIMSでグラディウスっぽいSTGを作る(9)
今回はゲームオーバーの作り方です。
これはゲーム次第で全然違ってくるところですから、ひとつの例ということで。
最後の自機が死んだら、爆風が消えた後静止して
「GAME OVER」の文字を出すという仕様にします。
静止させる方法はAIMS本の5-3「複数シーンの並列動作と一時停止」が
とても参考になります。
setSceneFreeze()でシーンを停止させることができます。
これによってそのシーンに属するアクターやスレッドも止まる
(画面表示だけは行われる)ので、停止させるのは簡単です。
停止を再開させるためには並列動作するシーンが必要になるので
setSceneFreeze()の前にaddScene()で gameoverシーンを起動します。
gameoverシーンではcreateTextActor()で文字表示アクターを作成します。
ここで作成したアクターはsetSceneFreeze()の影響を受けずに動作するようです。
OnStepではボタンが押されるまで待ちます。
ボタンが押されたらフリーズを解除し、changeScene()でフリーズを解除したシーンを
タイトル画面のシーンに切り替えます。
そして自分自身をcloseScene()で終了させます。
ここではフリーズしているシーンを操作する必要があるので
グローバル変数などでシーンIDを保持しておかなければなりません。
function game_OnStep() if 自機が死んだ then setSceneFreeze(V.scene, true) addScene("gameover") end endfunction gameover_OnStart()
createTextActor(G.font, "GAME OVER", 320, 240,
LAYER_INDICATOR, 255, 255, 255, 255, ALIGN_CENTER)
endfunction gameover_OnStep()
if getJoyPressCount(0, BUTTON_TRIG1) == 1 then
setSceneFreeze(V.scene, false)
changeScene(V.scene, "title")
closeScene()
end
end