Gscriptサンプル更新■スーパーマリオブラザーズ
「敵を踏んづけたのにダメージを食らう」というバグの原因がまだわかっていません。
とりあえず踏んづけた時から4フレーム無敵にして対応しています。今のところ問題ありません。あと敵を踏んづけるという判定はマリオの矩形と敵の矩形が重なった時の位置関係で上からか下からぶつかったかを判定していますが上からぶつかった場合を有利(?)に調整してみました
これらの対応はあまり良い方法とは言えません。後々、問題になるかもしれません。明確な対応でない、とりあえずうまくいっているようだというバグ対応です。これを僕は
[CLEAN-DRTY-HACK]パターン
と名付けていて今の対応は[DRTY](英語あってるかな?)です。なるべく[CLEAN]な対応、つまりバグの原因を完全に理解して対応するべきです。[HACK]というのはハードウェアに依存したプログラムの部分をそう名付けています。移植した場合に問題になるかもしれないという部分です。これらはコメントに注意として[DRTY]、[HACK]と書いておきます
■グラディウス
デモ画面も作ろうと思っていたのを忘れていました。
デモ画面はプレヤーが操作するものではなくて自動でプレヤーキャラが動きます。どのように実装するかは色々あると思います。スマートな方法はプレーヤーのコントロール情報を記録して再生するのが良い実装だと思います。レースゲームなどのリプレイなども同様に実装されているようです。コントローラーの入力情報だけではダメで乱数も記録して再生しなければなりません。あと初期化をきちんと行わないと記録したものをは違う結果になってしまうので注意が必要ようです。
地形ダメージを無くしたのをテストしてみました。地面などにぶつかってもプレーヤーキャラは爆発しません。スマホだとタッチ画面で操作するのでゲーム機のように微妙なコントロールが難しくてすぐにぶつかってしまいます。あと、もしかしたらスピード、FPSが遅いほうが操作にあっているかもしれないと感じました。爽快感は失うでしょうが....