日々是好日~every day is a good day~

日常の中の非日常の備忘録

【Unity】HPを表示する

今回はアクションゲームでよく見かけるHPを表示する方法です
表示部分だけでは面白くないのでスペースキーを押すと騎士がゴブリンを攻撃し10回攻撃するとゴブリンが消える仕様にしました
1.ゴブリン 騎士 剣をシーン内にドラッグ&ドロップし 位置やサイズ角度を調整する



2.ヒエラルキーの+をクリックしてUI/画像を選択

3.位置横の四角をクリック
アンカープリセットのleft/topをAltキーを押しながらクリック

4.位置 サイズを調整し名前をHPbaseに変更

5.HPbaseを右クリックし複製を選択

6.サイズをHPbaseより少し小さくし ソース画像に白い画像をドラッグ&ドロップ
名前をHPbarに変更 バーの色はお好みで変更

7.HPbar/Imageの画像タイプを塗りつぶし 塗りつぶす方法を水平 塗りつぶし起点を左に設定

8.ヒエラルキーの+をクリックしてエフェクト/パーティクルシステムを選択

9.位置とパーティクルシステムの設定を変更し インスペクターのチェックを外す

10.剣が回転するアニメーションとアニメーターを作成しswordにアタッチする


アニメーションの設定についてはこちらを参照ください
everydayisagoodday.hatenadiary.com
11.プロジェクトタブ内で右クリック
作成/C#スクリプトを選択してHPbarManagerというスクリプトを作成

12.HPbarManagerを編集

using UnityEngine;
using UnityEngine.UI;

public class HPbarManager : MonoBehaviour
{
    public GameObject goblin;
    public GameObject sword;
    public GameObject effect;
    private float count;
    private Animator animator;

    // Start is called before the first frame update
    void Start()
    {
        count = 10;
        animator = sword.GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            animator.SetTrigger("Hit");
            count--;

            float percent = count / 10;
            this.GetComponent<Image>().fillAmount = percent;
        }
        if (count <= 0)
        {
            goblin.SetActive(false);
            effect.SetActive(true) ;
        }
    }
}

13.HPbarにスクリプトをアタッチして ゴブリン sword ParticleSystemをドラッグ&ドロップ

実行してスペースキーを押すと剣がふられHPが減少していきます
10回になるとゴブリンが消えます