Roba Memo - 素人のUnity覚書と奮闘記

素人のUnity覚書と奮闘記

お城の設定とHPの管理

関連記事:ディフェンスゲームを作る 目次 - Roba Memo - 素人のUnity覚書と奮闘記

お城の設定

お城のHPを削って0になったら攻撃停止という処理を施したいので、お城にHPを持たせる必要がある。
細かい設定は、追々やっていくとして、簡易でHPを設定しておく。

(1)当たり判定をとしたいので、お城用のキューブを作成。
(2)マテリアルを非表示設定にする。
(3)お城のスプライトを子オブジェクトに配置。
(4)HPゲージを作成し、スプライトの子オブジェクトに配置。
(5)HPゲージを操作するためのクラス( HPController.cs ) を作成。
   このクラスは、Mobやキャラクターとも共有するクラスにする。
(6)キューブに(5)をアタッチ。
(7)インスペクター上で、とりあえずのHPを設定する。
(8)タグで判別したいので、castleタグをつける。

f:id:nico-taniku:20170810181159p:plain:w200
f:id:nico-taniku:20170810131529p:plain:w200
f:id:nico-taniku:20170810181232p:plain:h300
※コライダーは、sphereにしてみた。

HPゲージのスクリプト

HPControllerクラスに書く。
処理の流れ
(1)Startでゲージオブジェクトを取得。
(2)Updateで現在のHPからゲージのScaleを計算する。

public class HPController : MonoBehaviour
{
    [Header ("最大HP")][SerializeField] int max_hp;
    //現在のHP
    int now_hp;
    //ゲージオブジェクト
    GameObject gauge;

    void Start ()
    {
        now_hp = max_hp;
        gauge = gameObject.transform.Find ("Sprite/HP/gauge").gameObject;
    }

    void Update ()
    {
        float xscale = (float)now_hp / (float)max_hp;
        if (float.IsNaN (xscale)) {
            Debug.LogError (gameObject.name + " : HPを設定してください。");
        } else {
            gauge.transform.localScale = new Vector3 (xscale, 1, 1);
        }
    }
}

以上。