自作ゲーム ゲームオーバー演出を実装
むっ!!今宵もまた天井より忍びの者が…
おはようございます、モフヲです。
今日はゲームオーバー時の演出と、イベント管理を見直してみました。
これまでは以下のように組んでおりました。
・体力が0になった時、キー操作を無効にして、主人公のアニメーションをダメージ用の物に変更。一定時間経ったらゲームオーバー画面へ
一応これでも処理上は問題なかったのですが、またまた挙動が制御出来ず…
①空中で体力が0になった場合、空中で停止したままになってしまう
②たまにゲームオーバーになっているのに動き回る(キー操作が可能になっている)
ああもう…
というわけで理由を私なりに検証していたのですが、どうやら他のイベントで頻繁にキー操作の有効、無効を変数で管理していると、まれに挙動がおかしくなるようです。
(いや、そんな仕様じゃなかったら本当ごめんなさい…( ´_ゝ`) )
なので、これを機にバグ取りと、演出もらしくしてみようと、次のように組みなおしてみました。
きったないソースで申し訳ありませんが、やっているのは大雑把にこんな処理です。
①体力が0になったらキー操作を行うあたり判定オブジェクトを破壊。
(これでキー操作出来てしまうバグは回避)
②主人公グラフィックを非表示にする
(これでアニメーション関連のバグを回避)
③主人公グラフィックの位置に、ダメージアニメ専用のグラフィックを同期させる
(他のイベントでの管理から切り離されているので、思い通りに動かせます)
④体力が0→ゲームオーバー画面に切り替わるまでの間、常にダメージアニメを下方向に移動させる
(マ○オ風のフェードアウト演出を兼ねて、空中の不自然な停止を回避)
できた!! (牛こっち見んな)
という事で何とか不自然なゲームオーバー処理から無事脱却出来ました。
本来ならバグの原因を徹底して解明した上で対処するのがベストだと思うのですが、元来いい加減な人間なので、思い切って面倒なしがらみを断ち切って誤魔化しました。
同じフレーム内で強制操作系のイベントを組みまくってわけが分からなくなった時は、思い切って全く別のオブジェクトを宛がう、というのも有効かもしれません。
処理に迷って挫折しかけている私のような方は是非やってみてはいかがでしょうか( ^ω^ )