チャムコード

チャーさんのUnityゲームラボです。Unityでゲーム制作する時に使うコードやノウハウをメインに発信しています。Unityでゲーム制作したいと思っているなら読んでください。

ゲーム開発ノウハウ

UnityでHPを回復させる機能を作る方法(簡単なやり方です)

投稿日:2024年2月25日 更新日:

うも、チャーさんです。

この記事では、UnityでHPを回復させる方法を

お話しします。

 

ゲームでは基本プレイヤーが回復することが多い

のでプレイヤーのHPの回復方法を書きます。

 

なのでこの記事を読めば、あなたはUnityで

HPを回復させる機能を作れるようになります。

 

 

ですが、これを読まなければ、

どうやって作ろうか??と頭を悩ませることに

なるかもしれません。

 

そうなりたくなければ、このまま記事を読んで

ください。

 

動画はこちら

 

UnityでHPを回復させる機能を作る方法

 

ということで、早速結論です。

UnityでHPを回復させる方法は

大きく分けて以下の4つをやりましょう。

 

  • プレイヤーにHPバーを表示させる。
  • 回復アイテムを用意する。

(RigidbodyとIsTrigger,Tagの設定も)

 

スクリプト内で

  • HP用のスライダーの取得の記述
  • 接触判定でHPの回復処理の記述

 

大きくこの4つをやればいいです。

 

ということでそれぞれ詳しく説明していきます。

 

プレイヤーにHPバーの表示

 

まずプレイヤーにHPバーを用意しよう、です。

当然ですが、HPを回復させるためにHPバーを

用意しましょう。

 

ということでまずはなんでもいいですが、

プレイヤーオブジェクトを用意してください。

 

cubeよりもcapsuleあたりがプレイヤーぽく

見えるのでオススメです。

 

 

でそれをシーンに表示したら、次はHPバーです。

HPバーの作り方は以前記事を書いたので、

以下の記事を参考にしながら、

 

あなたのUnity内でプレイヤーに見立てた

オブジェクトにHPを表示させてください。

 

Unityで敵の上にHPを表示させる方法「すぐにできます」

 

HPを表示できたら、スライダーのvalueのところで

HP満タンじゃなく、真ん中ぐらいに設定しておきましょう。

またMax Valueは100にしておきましょう。

 

 

回復アイテムを用意しよう

 

で次に、回復アイテムを用意しよう。

ですが、回復アイテムと言っても簡単

なやつでいいです。

 

例えば、普通にcubeとかsphereとか、

そういうのを何個か用意して、シーンに配置

するだけでOKです。

 

以下の感じです。

(好みの問題ですがオブジェクトにマテリアルつけて

色とかつけると雰囲気でます。)

 

 

こんな感じで回復アイテム用意しましょう。

緑の丸い浮いてるやつが回復アイテムに

見立てたオブジェクトです。sphereオブジェクトです。

 

また回復アイテムオブジェクトには、

tag(タグ)を設定しましょう。

 

 

回復アイテムオブジェクトのインスペクタ上に

Tagという部分があるのでクリックして、

 

 

クリックしたら出る小さいウィンドウ内に

Add Tagというのがあるのでそこをクリックして、

recoverというタグ名で追加してください。

 

 

追加した後またTagの部分をクリックすると

さっき追加したrecoverが出てくるので、

それをクリックしてください。

 

するとオブジェクトにタグが設定されます。

これを回復アイテムオブジェクト全部にタグを

設定しておきましょう。

 

 

これやる理由ですが、接触判定で回復処理を

する場合、プレイヤーが床とか壁とか色々なものと

接触する可能性がある中で、

 

回復アイテムを見分ける必要があります。

それをTagを使えばこれは回復アイテムと見分ける

ことができ、回復専用の処理ができるのでつけておきましょう。

 

 

で、プレイヤーと回復アイテム用意したら、

次はプレイヤーオブジェクトと、

回復アイテムオブジェクトに、

 

Rigidbodyをつけましょう。

理由は接触判定で回復処理を行うので、

Rigidbodyがないと動きません。

 

ということで両方にRigidbodyつけましょう。

重力は消した方がやりやすいので、

Use Gravityのチェックは外しておきましょう。

 

 

またプレイヤーオブジェクトのcollider

コンポーネントのIsTriggerにチェックをつけて

おいてください。

 

そうしないと回復アイテムと衝突した挙動が

発生してしまうので微妙になります。

 

 

UnityでのプレイヤーHP回復用のスクリプト

 

でそれができたら次はスクリプトに回復処理を

書いていきましょう。

 

プレイヤーオブジェクトにスクリプトをつけて、

適当にクラス名をつけて

中身には以下の記述を書きましょう。

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; //これを忘れずに
 
public class スクリプト名 : MonoBehaviour
{
public Slider hpSlider;
    // Start is called before the first frame update
    void Start()
    {
        
    }
 
    // Update is called once per frame
    void Update()
    {
        
    }
 
    void OnTriggerEnter(Collider col){
     if(col.gameObject.tag == “recover”){
     hpSlider.value += 10;
     Destroy(col.gameObject);
    }
   
 
    }
 
 
}
 

 

では記述の説明をします。

 

HPバー(スライダー)の取得

 

まず最初の

public Slider hpSlider;

 

ですが、スクリプトでHPバーにしてる

スライダーを操作するにはスライダーを取得

する必要があります。ということで変数宣言してます。

 

 

これを書くと、プレイヤーオブジェクトの

インスペクタ内に、hpSliderというスロットができます。

 

そこにプレイヤーの子要素にしてる

スライダーオブジェクトをドラッグアンド

ドロップして取得状態にしておきましょう。

 

補足ですがcanvasオブジェクトじゃなくて

canvasオブジェクト内にあるslider

オブジェクトです。

 

 

接触判定で回復の処理

 

で、

void OnTriggerEnter(Collider col){
     if(col.gameObject.tag == “recover”){
     hpSlider.value += 10;
     Destroy(col.gameObject);
    }

 

の部分ですが、ここが回復処理になってる部分です。

 

 

具体的には、接触判定をしてまして、

もしも回復アイテムオブジェクトにプレイヤーが

接触したら、

 

厳密には接触したオブジェクトがrecoverというタグ

を持っていたら、

(ここで回復アイテムオブジェクト用意した時の設定が

生きます。こうしないと床に接触するだけで回復します。)

 

HPバーとして使ってるスライダーのvalue

値ですね、これを+10するという記述に

なってます。つまりHPが回復するというわけです。

 

 

で回復した後Destroyというメソッド部分で、

接触した回復アイテムを消すという処理になってます。

 

回復アイテムに触れて回復したのに、

アイテムがずっと残ってるとよくないので。

 

という感じですね。

 

 

 

コードとしてはだいぶシンプルなので、

すぐに実践できるかと思います。

 

で、これができたら後はUnityの画面に戻って、

ゲーム再生ボタンを押して、

プレイヤーを動かして、回復アイテムに接触させましょう。

 

この時ちゃんとプレイヤーのHPバーが回復して

いたら、成功です。

 

 

うまくいきましたか?

うまくいってたらおめでとうございます。

 

うまくいかなかったら記事を読み返して

何か抜けてないか探してみてください。

 

 

まとめ

 

ということで、まとめです。

 

UnityでHPを回復させるには大まかに

以下の4つをやりましょう。

 

  • プレイヤーにHPバーを表示させる。
  • 回復アイテムを用意する。

(RigidbodyとIsTrigger,Tagの設定も)

 

スクリプト内で

  • HP用のスライダーの取得の記述
  • 接触判定でHPの回復処理の記述

 

 

そうすればUnityでHPを回復させる処理は

作れるので、ぜひやってみてください。

 

ということでまずは早速Unityを開き

プレイヤーをシーンに登場させるところから

始めましょう。

 

ということで、読んでいただきありがとうございました。

 

 

チャーさん

 

-ゲーム開発ノウハウ

関連記事

no image

unityでターン制のゲームを作るにはコレを使いましょう

どうも、チャーさんです。 あなたはunityでターン制ゲームを作りたい そう思っていませんか?   この記事ではunityでターン制のゲームを 作る方法を書いています。   なので …

Unityでオブジェクトを上下移動(往復)させる機能の作り方

どうも、チャーさんです。 あなたはUnityでオブジェクトを自動で上下移動させたい と思っていますか?   オブジェクトを上下に自動で往復させたり、 動く床として上下に自動で往復させたり、 …

no image

unityでキー入力で攻撃する方法(3分以内にできます)

どうも、チャーさんです。 あなたはunityでキー入力による攻撃を したいですか?   この記事ではunityでキー入力で攻撃を する方法を書いてますので、あなたがこれを読めば、 キー入力で …

Unityでジャンプする方法(空中ジャンプ防止機能付き)

どうも、チャーさんです。   あなたはUnityでジャンプ機能を作りたい と思っていますか?この記事では、パソコンの キーボードを押したら、ジャンプする機能の作り方を説明します。 &nbsp …

Unityで動く床(滑らない、往復)の作り方はコチラ

どうも、チャーさんです。 あなたはUnityで動く床、それも滑り落ちず 往復するやつを作りたいと思っていますか?   この記事を読めばそれは実現します。 ですが読まないと結構つまづきます。 …

no image

Unityでゲームスタート画面とゲーム画面に遷移する方法

どうも、チャーさんです。   この記事では、Unityでゲームスタート画面の作り方を 説明してます。なので、この記事を読めば、 あなたはゲームスタート画面を作れて、   かつスター …

Unityでのゲームオーバー機能の作り方をわかりやすく説明

  どうも、チャーさんです。 この記事では、Unityでゲームオーバー画面の 作り方を説明します。   この記事を読めば、あなたはゲームオーバー画面を作れて さらにゲームオーバーの …

最新記事

チャーさん

Unityに関する記事を書いてます。

 

[簡単な経歴]

 

2018年-プログラムを始めUnityの存在を知りハマる。

2019年-エンジニアとして仕事開始(web系)

2021年-UnityでVR開発等にも手を出し始める。

現在-エンジニアとして活動しながらUnityも続行中。

 

youtubeでは、Unityに関する動画をあげてるので、

あなたのUnityスキルアップにどうぞ。