アマゾンバナーリンク

UnityでキャラクターのHPゲージを頭上に表示する

こんにちは!ジェイです。今回は自キャラや敵キャラの頭上にHPゲージを表示する方法を紹介します。

キャラの作成

プロジェクト新規作成して、Hierarchy→3DObjetct→PlaneとHierarchy→3DObjetct→Cubeを作成して、CubeのYを0.5に設定。

HP表示用UIの作成

次にHP表示用のUIを作ります。

  1. Hierarchy→UI→Slider
  2. 1で作ったCanvasをSliderごとCubeの子要素にする
  3. Handle Slide Areaを削除

次にCanvasを設定してキャラの上にHPゲージが表示されるようにします。

CanvasのRender ModeをWorld Spaceに変更し、普通のゲームオブジェクトと同じように移動できるようにして、Rect TransformでScaleの値を調整し、WidthとHeightのサイズの調整をして敵の頭上に丁度良い大きさにします。

次にSliderを選択します。

Directionでスライダーのメーターの方向を指定出来ます。

MaxValueを1、Whole Numbersにチェックを入れると数値が整数で変更されます。

次はSliderの背景であるBackGroundを選択します。

Source ImageをNoneにして背景画像を四角形にします。

次にFill Areaを選択します。

Fill Areaはスライダーの値が設定される範囲の背景ですが、初期値だとBackgroundと合わないので↑のように調整します。

次はFillを選択します。

Fillはスライダーの値によって幅を変えるImage画像を設定しますが、Source ImageをNoneにしてBackgroundと合わせます。

また値の部分は青くしたい為、Colorの色を変更します。

FillにWidthやleftなどRectTransformの値が入っていると、スライダーの値が最小値や最大値でもメーター表示が最後まで行かないので、0を設定しておきます。

メーターの領域を表示したくない場合はSliderの子要素のBackgroundのColorのAlphaを0に設定します。

HP表示用UIの角度を常にカメラの向きにするスクリプトの作成

UIは2D表示で厚みを持っていない為、敵キャラクターが動くとUIも傾き敵キャラが横向きになった時には、カメラからみるUIは完全にペラペラで見えなくなります。

その為、UIは常にカメラの方を向くよう調整する必要があります。

HPUIゲームオブジェクトに新しくHPUIRotateScriptスクリプトを作成し取り付けます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HPUIRotateScript : MonoBehaviour
{
    void LateUpdate() {
        // カメラと同じ向きに設定
        transform.rotation = Camera.main.transform.rotation;
    }
}

HUUIの角度にメインカメラの角度を設定しています。

最終的にはこのような感じになります。