最終更新:
orika_ex_miyako 2020年06月30日(火) 23:26:50履歴
・敵のHPは敵の頭上に横ゲージ表示し、現在値がグラフィカルに伝えられるようにデザインする。 ・ゲージは右端がHP最大、左端がHP最小とする。 ・ゲージは敵と一緒に移動する。
プレイヤーが攻撃して敵にダメージを与えた際に、そのままでは敵のHPがどの位残っているのかわかりません。
残っているHPがわからないと、ユーザーが敵を倒す際の優先順位を考えたりできませんので、敵の残りHPがわかるようにHPを表示するように設計を考えましょう。
ただし数字だけよりも、ゲージであった方が残りHPが伝わりやすくなりますので、敵の頭上にHPのゲージ(HpBar)を表示するように考えていきましょう。
また表示したHpBarは敵と一緒に移動してもらいたいので、そのためにはどうすればよいか、考えます。
武器の時と同じで、敵の子オブジェクトとしてHpBarを追加してあげれば一緒に追従して動いてくれそうです。
またUIにはSliderという部品があり、こちらをBar表示としてそのまま使えます。こちらを使うように設計しましょう。
敵のゲームオブジェクトを選択し、子オブジェクトとしてCanvasを新しく作成して追加しましょう。
そのCanvasの子としてUI部品であるSliderを追加します。このSliderをHpBarとして利用します。
ヒエラルキー上は下記の画像のようになっていれば大丈夫です。

今回は使用しませんので、ヒエラルキーで選択して削除しておきます。
Sliderの子要素のRectTransformを確認していき、Fll AreaとFillをResetし、すべての値を0にします。
こうすることにより、Sliderの一番端の位置からBarが動くようになります。
(以前入っていた数字はHandleを利用する際の数字ですので、ここで0にしても問題ありません。)
FillのImageコンポーネントのColorを変更することによって、HpBarの動くゲージの色を変更できます。
赤などのわかりやすい色に変更しておきましょう。
Fill Area

Fill

BackGround

Slider-1

Slider-2

そこで、Canvasの設定を変更し、ゲーム画面内にCanvasを移動させられるようにします。
Canvasのインスペクターの中からCanvasコンポーネントを確認し、その中のRenderModeをWorldSpaceに変更しましょう。
そしてRectTransformの右上の歯車ボタンをクリックし、Resetをします。
これで敵の位置にCanvasが移動しました。あとはPosition.Yの位置とScale、Width、Heightの各値を調整し、上手く敵の頭上にHpBarが来るようにします。


またCanvasのままですとわかりにくようであれば、名称をHpBarInfoのように、自分でわかりやすい名前に変更しておきましょう。
敵のHPが減少してもHpBarが一緒に減少しません。HpBarと敵のHPとをリンクさせて、攻撃を受けてHPが減少したら、HpBarも動くようにしましょう。
設計を考えてみます。敵のHPの情報をHpBarに送ることが出来れば、ちゃんと情報がリンクでき、HpBarが動くように出来そうですね。
やり方としては、EnemyControlerクラスにてHpBarの処理をするのか、あるいは先ほど作ったHpBarクラスで処理を行うようにするのか、
どちらの方法でも対応できると思います。
ここではHpBarInfoクラスにてHpBarの処理を行う方法を実装していきます。
まずはHpBarInfpクラスを修正していきます。
つづいてEnemyControlerクラスも修正します。こちらからHpBarInfoクラスに作成したメソッドを呼び出して、HpとHpbarとの同期を行います。
またHpが0になった場合にはHpBarを非表示にする処理も追加しておきます。
下記のスクリプトはEnemyControlerクラスを抜粋したです。OnTriggerEnterメソッドの該当部分に追加します。
それでは実際に動かしてみましょう。プレイヤーの攻撃を受けた際に、敵のHpBarが減少すれば処理は成功です。
敵が倒れたアニメ処理を追加する場合には、破壊されるまで時間がかかりますので、その前にHpBarを非表示にする処理を追加しましょう。




コメントをかく