今日はプレイヤーとエネミーの攻撃部分を実装していきます。
まずはプレイヤーから実装していきます。
この前と同じように、メッセージウィンドウがまだ無いので、コンソール画面でのデバックになります。
ちゃんとエネミーに攻撃できていることがわかります。
次はエネミーの攻撃部分を実装していきます。
エネミーの攻撃は、プレイヤーの行動が終わりWAIT状態に入ってから行うようにします。
そうしないと、後で攻撃エフェクトをつける際に、プレイヤーが移動し終わる前に攻撃しているように見えるなどの不具合が発生してしまいます。
また、プレイヤーもエネミーがWAIT状態に入るまで次の行動が起こせないようにしておきます。
↑がエネミーに攻撃を実装したときの、デバックになります。
ちゃんと攻撃できていますので成功です。
昨日書いたフローチャートも、細かい点での変更が少しありましたが、かなり役に立ちました。
やはり手間は惜しむべきではありませんね。隙間時間を使って、メモ帳にフローチャートを書く習慣をつけようと思ったくらいです。
Mapスクロール
このままでは一々コンソールでデバックしないといけないので、ちゃんとステータスを表示するウィンドウとメッセージウィンドウを作ろうと思いました。
で、UIのデザインを決めやすいように、先にMapスクロールを実装しようと思ったのですが、困ったことになりました。
どうやら、Mapスクロールの実装は、フィールド上に設置されたオブジェクト自体を移動させないといけないっぽいです。
そうなると、プレイヤーの移動はフィールド上を移動するのではなく、フィールドそのものを移動させるというとんでもない仕様にしないといけません。
自分が思っていたMapスクロールは、写っているスポットが動くって感じだったので、結構面食らいました。
ゲームってそういうものなんでしょうか?
僕は、ゲームなんて作ったことなかったし、Mapスクロールっていう言葉自体も今日初めて知りました。
ただ、今思い出せば、グラディウスは攻撃オブジェクトの数に比例して、動作が重くなっていました。
おそらくダメージ計算のほかに、更新対象となるオブジェクトが多すぎて、フレームレートが落ちていたんだと思います。
だとすると、案外当たり前のことなのかもしれません。
明日は、Mapスクロールの実装をしていこうと思います。
実装してみて、どの位フレームレートが落ちるのかを確認してみます。
それではまた明日。