スポンサーリンク
スポンサーリンク
UnityUnityメモ

【Unity】HPバーの作り方

Unity

はじめに

ユニティを使用して今制作しているゲームにHPバーを追加してみました。

結構簡単に実装することができましたので作成方法を紹介します。

緑のバーがHPでダメージを受けると赤くなります。

HPバーの設置方法

スライダーを設置する。

HierarchからUI→sliderで設置することができます。

Unityエディタでの説明

sliderのScaleを変更することでバー自体のサイズを変更することができます。

Unityエディタでの説明

スライダーを設置すると子オブジェクトにHandle Slide Areaというものがついてきます。

Unityエディタでの説明

これはバーをスライドさせるときに使うつまみです。

HPバーでは使用しないので消去してしまいましょう。

sliderのvalueというところをいじるとバーの中身を変更することができます。

Unityエディタでの説明

WholeNumbersにチェックを入れると整数での変更になります。

このままだとvalueを最大まで動かしても先ほど消去したHandle Slide Area分のスペースがあいてしまいます。

Unityエディタでの説明

FillAreaのLeftRightとFillのLeftRightをすべて0にすることで余分なスペースを埋めることができます。

Unityエディタでの説明
Unityエディタでの説明

スライダーの設定は以上です。

色の変更方法

BackGroundとFillのColorから色を変更することができます。

Unityエディタでの説明

BackGroundを赤Fillを緑にするとこんな感じになりました。

Unityエディタでの説明

SorceimageをNoneに変更すると現在の角が丸くなっているバーから四角のバーに変更できます

Unityエディタでの説明

スクリプト

こんな感じのスクリプトを操作するオブジェクト(プレイヤー)にはりつけてみました。

敵などにぶつかってダメージを受けたときにHPが減りUIが更新されます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//UIを使うときに書きます。

public class Player : MonoBehaviour
{
    //最大HPと現在のHP。
    int maxHp = 10;
    int Hp;
    //Slider
    public Slider slider;

    void Start()
    {
        //Sliderを最大にする。
        slider.value = 10;
        //HPを最大HPと同じ値に。
        Hp = maxHp;
    }

    private void OnTriggerEnter(Collider collider)
    {
        //Enemyタグを設定しているオブジェクトに接触したとき
        if (collider.gameObject.tag == "Enemy")
        {
            //HPから1を引く
            Hp = Hp - 1;

            //HPをSliderに反映。
            slider.value = (float)Hp;

        }
    }
}

スクリプトを貼り付けたオブジェクトのinspector画面からsliderをセットできます。

Unityエディタでの説明

これでEnemyタグを設定しているオブジェクトがスクリプトを貼り付けたオブジェクトに衝突すると、HPバーが減るようになります。

これでシンプルなHPバーの完成です。

アセットを使用したりしてデザインを変更してみるのもおすすめです!

スポンサーリンク
C-BA memo
タイトルとURLをコピーしました