どうも、チャーさんです。
あなたは、unityで敵にHPを表示させたいですか?
この記事ではunityで敵の上にHPを表示させる方法について
お話しします。
なのであなたがこの記事を読めば、
unityで敵の上にHPを表示させることができます。
unityのHP表示は結構わかりづらいところがあります。
なので、どうやったら表示できるのかわからん
ってなりたくなければ、この記事をこのままお読みください。
動画はこちらです。
目次
Unityで敵の上にHPを表示させる方法
では本題です。
unityで敵にHPを表示させるには、
- スライダーを使って、HPを表示させる
- HPバーをカメラの方に常時向かせる。
この2つをやればokです。
ということで説明していきます。
スライダーを使ってHP表示させる方法
スライダーを使ってHP表示ですが、
これは簡単です。
まずはHierarchyの中で、+ボタンをクリックして
UI > sliderをクリックしましょう。
するとスライダーが表示されます。
ですがこのままだとデカすぎるので、
canvasのscaleを編集して、サイズを小さくしましょう。
そのためにまずはCanvasコンポーネントの
Render Modeというのがあるのでそこをクリックし、
World Spaceというのを選びましょう。
するとCanvasのRect Transformの部分が
調整できるようになるので、
それでCanvasのサイズを小さくしたら、
次は、Sliderの中に子要素で
Handle Slide Areaというスライダバーの左端にある
つまみの部分があるので、
そちらを消しておきましょう。
(使う場合は残しておいたらいいです。)
HPバーを満タンにする
次にSliderをクリックし、インスペクターを
見るとSliderというコンポーネントがあるので、
そちらのValueの部分のつまみを一番右まで
持っていってください。
すると、スライダーのバーが右のほうに動いて
いきます。
いわゆるこれがhp満タンの状態になります。
また合わせてwhole numbersという部分があるので、
そこにチェックをつけておきましょう。
すると整数を扱えるようになります。
元の設定のままだとHPを0~1の少数割合で
管理することになり面倒になります。
なのでチェックつけとくのをお勧めします。
HPバーが満タンにならないの解決法
で次に、気づいたと思いますが、
sceneビューではバーが右端まで行ってませんよね。
というわけでこれを解決するために、
次に同じく子要素である、
Fill Area というのを見てください。
そしてRect Transformというのを見てください。
leftが5Rightが15とそれぞれ数値が入ってますね。
ここの数値を0にしてください。
するとバーが全部埋まります。
(こちらをFill Area > Fillに関しても同様にしてください。)
HPバーに色をつける方法
ですが現在のままだとバーが白色で
イマイチわかりづらいですよね。
なのでインスペクターの下を見てください。
するとImageというコンポーネントが
ついてるので、そこのColorをクリックしましょう。
そしたら色が選択できるようになるので、
好きな色を選んでhpの色をつけてください。
HPバーが敵についてくるようにする方法
ここまできたらスライダーによるhpバーの調整は
ある程度okですので、
次はcanvasを敵オブジェクトの子要素にしてください。
これによって、あなたが作ったHPバーも
敵と一緒に動くようになり、
敵が動くとついてくるようになります。
*CanvasのコンポーネントのCanvasの
Render ModeをWorld Spaceにしておくのが
条件ですのでお忘れずに。
敵の上にHPバーを配置
あとは、canvasのRect TransformのPos Yの数値を
1とか2にして、敵オブジェクトの上にHPが表示
されるようにしましょう。
で、これでHPの表示はできました。
HPバーをカメラの方に向かせる
で、す、が、
このままでは、敵が向きを変えたり角度を変えると、
HPバーも一緒に角度を変え、
あらぬ方向を向いてしまうようになります。
それを回避するために、
HPバーだけは常に、プレイヤーのカメラの方を
向くように設定する必要があります。
そしてそのためにはスクリプトを書く必要があるので、
CanvasオブジェクトのAdd Componentから
スクリプトを追加しましょう。
そしてその中には以下のように書きましょう。
void Update()
{
transform.rotation = Camera.main.transform.rotation;
}
これだけで、あなたが用意したHPバーが、
常にカメラの方を向くようになります。
一応コードの補足をしときますと、
transform.rotationというのがこの場合は、
canvasオブジェクトの角度、向きになります。
そしてCamera.main.transform.rotationというのが、
カメラの角度になります。
「Camera.mainとは?」
とあなたは思うかもですが、こう書くことで
Unityが内部でMainCameraオブジェクトを取得状態
にしてくれて、
あとはそれのtransform.rotationにアクセス可能
状態になってるわけです。
ということで、上記のように書けば、HPバーが
いつでもカメラの方を向くようになり、
HPバーが回転したりすることがなくなるので、
そのように運用してください。
ということで、以上でUnityで敵の上にHPバーを
表示させる方法を説明しました。
まとめ
なのでまとめに入ります。
Unityで敵の上にHPバーを表示させる方法は、
- スライダーを使って、HPを表示させる
- HPバーをカメラの方に常時向かせる。
この2つをやればOKです。
すると敵にHPバーを表示させれるので、
ゲームのように楽しい感じにできるでしょう。
で、次にあなたは、
「敵が攻撃を受けたら敵のHPが減るようにしたいなぁ」
そう思うことでしょう。
以下をご覧ください。
敵のHPを減らす方法を記事にしときました。
上の記事を読めば、
敵のHPを減らす機能まで実装できるでしょう。
ということで、本記事は以上です。
お読みいただきありがとうございました。
それでは。
チャーさん