ここ1週間ほど、風邪をひいて体調を崩していたため、目立った進捗は無いわけだが、それでも少しづつ進めている。
今回は、自機の弾で敵を倒せるようにした。
敵も自機の弾も、画面上の数が常に変動するが、なかなか効率の良い処理が思いつかなかったので、愚直に敵の処理の中でループを組み、プレイヤー弾に対して当たり判定を行った。
敵がプレイヤー弾と接触したと判定された場合、敵のオブジェクトをそのまま爆風の属性に変更して、残りの生存時間とスプライトパターン番号を設定する。
爆風の処理の中では、生存時間がゼロになったらキャラクターを消去し、ゼロでなかったらスプライトパターン番号を切り替えてアニメーションさせるようにしている。
また、ゲームのメインシーン以外ではスクロール処理をしないようにし、タイトル画面などを表示できるようにもした。
ちなみに、キャラクターが2~3個出てくるとスクロールのスピードが少し落ちるのが分かると思う。
これは明らかに処理落ちで、高速化が必要になってきているのだが、これがなかなか悩ましい。
キャラクターの属性は構造体で定義しており、恐らくこの構造体へのアクセスに結構なコストがかかっていると考えているが、実際のアセンブリコードの検証まではできていない。
また、ではどのようなデータ構造なら性能が上がるのか?の答えに辿り着いていないので、最悪は主要部分をアセンブリで書くことになるかもしれない。