インベーダーゲームを作ってみる(4)陣地の破壊

今回は、前回触れた「インベーダーゲームで強く印象に残った処理」のその2、「陣地が敵弾にだんだん崩される様子」の処理です。

陣地が敵弾や自機弾で崩れていく処理はどのように行っているのか、YouTubeのビデオを見ながら考えました。
そして、おそらくこうだろう、と推測した処理が以下です。

(1)弾の当たり判定は、弾の移動先のピクセルの有無で判定する。
(2)当たりと判定したら、弾を中心に爆発の画像を描画する。この際、黒いピクセルは描かず、白いピクセルだけを描く(ORで描画)。
(3)次に、爆発の画像を消去する。このときは、先程描いた白いピクセルの部分だけを、黒いピクセルで描く(NOT ANDで描画)。結果、陣地が爆発の画像の形で型抜きしたようになる。

iv08.png

これを繰り返すことで、陣地がだんだん削られていきます。
陣地そのものの処理は、ゲーム開始時に画面に絵として描画するだけです。

今回作ったインベーダーゲームは、自機弾・敵弾ともに上記の処理を行っており、陣地が8×6ピクセルしかない割には、結構雰囲気のある崩れ方を表現できています。

なお、当たり判定を画面上のドットの有無で行うというのは、一般的には誤判定が起こりやすいため、あまり使われません。
今回は陣地への当たり判定に使っていますが、敵弾と自機弾が衝突した場合も、陣地に衝突したと誤判定して弾が消滅します。
実は、敵弾と自機弾の衝突については専用の判定処理は行っておらず、上記の誤判定をそのまま弾同士の衝突処理として用いています。

コメント