P15
【UNITY】タワーディフェンス4 敵頭上にHPバーを表示する
今回はゲームでよくみる敵の頭上にあるHPバーを表示させてみましょう!
HPバーの作成
HPバーをSlider(スライダー)を使って作って行きます。
まず、Create > UI > Slider でスライダーを追加します。
スライダーが敵の頭上に来るように調整
Canvasの調整
Slider部分の設定
攻撃を受けるたびにHPを減らし、HPが0になったら消すようにする
今まで、BulletCont.cs(弾側)で弾あたった場合、「敵」を消していましたが、今回からHPが0になったら「敵」を消すひつようがあります。ですから、BulletCont.cs(弾側)の「敵」を消す処理をコメントアウトします。その後、EnemyCont.cs(敵側)でHPを管理し、HPが0になったら自ら(敵)を消す処理に変えます。
[BulletCont.cs]
「敵」にアタッチされているスクリプト(EnemyCont.cs)を編集していきます。
[EnemyCont.cs]
まずはじめに、以下の変数を定義します。
public int enemyHP;// 敵の最大HP
private int wkHP; // 敵の現在のHP
public Slider hpSlider; //HPバー(スライダー)
次にStart()で定義した変数を初期化します。
void Start () {
hpSlider.value = (float)enemyHP;//HPバーの最初の値(最大HP)を設定
wkHP = enemyHP; // 現在のHPを最大HPに設定
}
次に敵が弾にあたったときによばれるOnTriggerEnter()メソッドを編集します。
private void OnTriggerEnter(Collider other)
{
Debug.Log(“OnTrriger En”);
// あたった場合敵を削除
if (other.gameObject.tag == “bullet01”)
{
wkHP -= 50;//一度当たるごとに50をマイナス
hpSlider.value = (float)wkHP / (float)enemyHP;//スライダは0〜1.0で表現するため最大HPで割って少数点数字に変換
// HPが0以下になった場合、自らを消す
if (wkHP == 0)
{
//Debug.Log(“Destroy”);
Destroy(gameObject, 0f);
}
}
}