前回、敵の範囲内に入ったらその敵のステータスを左上に表示するようにしました。
その続きとして、敵が攻撃を受けた際の処理について考えていきます。今回はシューティングゲームを例に、敵のHPの管理方法について紹介したいと思います。
シューティングゲームにおける敵のライフゲージの管理【Unity】
敵オブジェクトのコライダの設定
前回の記事で、Sphereを敵オブジェクトとして話を進めていましたが、Sphereの子要素にサーチ用のコライダを設定していましたが、子オブジェクトを削除し、Sphere自体にコライダをもう1つ設定するように変更しました。
別々にしていると、作成するスクリプトの数が増えてしまうので、1つにまとめています。
オブジェクトの当たり判定に関するコライダは、Is Triggerにチェックを入れず、サーチ用のコライダはIs Triggerのチェックを入れるようにします。
EnemyLifeManagerスクリプトの修正
前回作成したEnemyLifeManagerスクリプトを修正していきます。
最大HPを100として、敵の種類によって与えるダメージを変更するようにします。
私の場合は、OnCollisionEnterを使って自身のタグをチェックし、受けるダメージをダメージメソッドに渡します。
ただし、この書き方は敵オブジェクトが静止しているからOKであって、動き回る敵の場合は、壁などにぶつかる事も想定されるので、シューティングゲームなら自身のタグ且つ弾に当たったらという条件式にする必要がありますね。
現在のHPから受けるダメージを引いて、「HP÷maxHP」をfloatで計算します。これにより受けたダメージ分スライダーの位置をずらす事が出来るので、HPが減っているように見えます。
slider.valueが0になったら、HPが0になったという事になるので、自身のオブジェクトを削除し、テキストとスライダーを非表示にします。それと同時に、エフェクトを表示するようにしてみました。
ゲームを実行するとこんな感じです。やっぱエフェクトって大事ですね。