アニメーション撃墜

爆発

敵機が撃墜されても消えるだけなのでリアル感が無いです。そこで爆発のアニメーションを付けます。対象は味方機と敵機の衝突、機関銃による敵機の撃墜、戦闘機(自機)と敵機や味方機との衝突です。

画像

爆破の画像は次のモノを利用します。1つ画像に3つの爆発場面があり、時間の経過に応じ切抜きながら利用します(ハンドリング方法は「drawImage」を参照してください)。

画像のハンドリングを行うため<img&gtタグで読み込み、IDを利用してJavaScriptで要素を取得します。

爆破場面(シーン)は3つありますので、これを定数で定義しておきます。

画像を切抜く際にはこれを多用することになります。

爆破アニメーション管理

敵機、味方機の爆発状態を管理するため敵機管理している変数を利用します。


敵機や味方機が爆破されると敵機情報[0]を「爆破」にします。そして時間の経過に応じて前述画像を切抜いて表示します。

時間の経過は敵機情報[1]を流用します。ここに描画処理が呼ばれる度に1加算し時間経過を測定します。時間が下記に定義した定数より大きければ次のシーンに切り替えます。

爆発処理

5行目で表示する爆発シーンを時間の経過数(te[j][1])からシーン切替数で除算することにより求めています。

爆発画像は敵機座標の中心に表示する必要があります。しかし画像サイズが違うため敵機座標で爆発画像を描画すると中心からズレてしまいます。

中心に表示するため事前に縦横サイズ差の1/2を計算します。

このサイズ差を用いて爆発画像の座標を求めます。

敵機描画

戦闘機、味方機、敵機が衝突した時に爆破アニメーションを行います。敵機描画処理を次のように変更します。

機の状態が「爆破」なら前述した爆発処理を呼び出します(5行目~8行目)

衝突後に味方機、敵機の状態を「待機中」にしていましたが、「爆破」(TEKI_BAKUHA)にし、時間経過を管理するte[x][1]を0にしています(14行~17行、25行~26行)。

弾丸描画

敵機や味方機に弾が当たると爆破アニメーションを行います。弾丸描画処理を次のように変更します。

自機描画

戦闘機と敵機や味方機が衝突すると敵機、味方機の爆破アニメションを行います。自機描画処理(myMove())を次のように変更します。

実行

射撃で敵機を爆破できるか、味方機と敵機が衝突した時、戦闘機と味方機や敵機が衝突した時に爆破されるか確認します。実行画面へ

タイトルとURLをコピーしました