チャムコード

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

敵Aiの作り方

Unityで敵が攻撃を受けたらHPを減らす機能の作り方

投稿日:2023年10月24日 更新日:

うも、チャムコードというブログ運営してる、チャーさんです。

 

あなたはUnityで敵のHPを減らす機能を作りたいですか?

敵がプレイヤーから攻撃を受けたときに、HPを減らす

処理をつけたいなら、この記事はあなた向けです。

 

この記事を読めば、あなたはUnityで敵がダメージを受けると

HPを減らす機能を作れます。ですが、この記事を読まないと、

「どうやってHP減らすんや、、」と途方に暮れてしまうかもしれません。

 

そうなりたくなければ、このまま記事をお読みください。

動画による説明はこちらです。

 

また、まだ敵にHPを表示させてないって場合は、

先にこちらの記事をお読みください。

敵のHPを作る方法を説明してます。

 

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

Unityで敵のHPを減らす方法

 

ということで本題です。

 

Unityで敵のHPを減らす方法は、

  1. 当たり判定をつける
  2. 当たり判定があったらHPを減らす処理をする

 

この2つをすればOKです。

 

 

ということでそれぞれ解説します。

 

まず当たり判定をつけるですが、これをすることで、

敵が攻撃を受けたときの処理をつけることができるように

なります。

 

 

例えばプレイヤーの剣が敵に当たったとか、

プレイヤーの銃弾が敵にあたったとか、

 

そういう瞬間の当たり判定を作ることで、敵のHPを

減らす処理のきっかけになる部分を作ることができます。

(これをトリガー(引き金)とか言います)

 

 

敵に当たり判定つける方法

 

で、敵に当たり判定をつけるには、コライダーという

コンポーネントをオブジェクトにつける必要があるのですが、

 

Hierarchyの+から3Dオブジェクトなどでオブジェクトを

作ってる場合、初めからコライダーは付いてます。

 

Box ColliderとかSphere Colliderとかがそれに該当するので、

それが付いてるかオブジェクトのインスペクターを確認して

ください。

 

 

で、コライダーが付いてるのを確認したら、

次は、敵オブジェクトのコライダーコンポーネントの中にある、

IsTriggerという部分にチェックをつけてください。

 

こうすることによりプレイヤーの攻撃が敵に衝突してぶつかりあう

ことがなくなり、通り抜けることになります。

 

大体のゲームでは剣で敵オブジェクトを攻撃すると、

剣が敵を通り抜けますよね。それがIs Triggerで実装できます。

 

 

で、まだありまして次に当たり判定を行うには、Rigidbodyが

敵オブジェクトかプレイヤーの攻撃に当たるオブジェクト

どちらかに付いてる必要があります。

 

なので、この場合は敵オブジェクトあたりにつけて

おきましょう。

 

またRigidbodyをつけると、重力の影響を

受けるようになるので、Use Gravityの部分のチェックを

外しておきましょう。

 

 

ここまできたら当たり判定はOKなので、

次はコードを書いていきましょう。

 

 

当たり判定時に敵のHPを減らすコード

 

敵オブジェクトのAdd Componentからスクリプトを

貼り付けて、以下のようなコードを書きましょう。

 

using UnityEngine.UI;
 
public class hpReduce : MonoBehaviour
{
public Slider hpSlider;
    // Start is called before the first frame update
    void Start()
    {
        hpSlider.value = 100;
    }
 
    void OnTriggerExit(Collider col){
    if(col.gameObject.tag == “playerAttack”){
    hpSlider.value -= 10; 
    Debug.Log(“プレイヤーの攻撃、10のダメージ”);
    }
   
    }
    // Update is called once per frame
    void Update()
    {
        
    }
}
 

説明していきますね。

 

 

まず最初のusing UnityEngine.UI;

ですが、これがないとHPとして使用してる、

スライダーをスクリプトで操作することができません。

 

なのでこれは忘れず書きましょう。

 

 

そして次に、

public Slider hpSlider;

ですが、

 

こちらはスライダーをスクリプトから操作するために

スライダーを前もって取得するようの変数です。

 

 

これを書くと敵オブジェクトのインスペクターの

スクリプトの場所に、変数と空欄が登場するので、

Canvas > SliderのSliderオブジェクトを、

 

そこの空欄に向かってドラッグアンドドロップし、

スライダーオブジェクトを取得しましょう。

 

これにより、スクリプトより、HPを操作出来るように

なります。

 

 

次に、

void OnTriggerExit(Collider col){
    if(col.gameObject.tag == “playerAttack”){
      hpSlider.value -= 10; 
      Debug.Log(“プレイヤーの攻撃、10のダメージ”);
    }

ですが、

 

これがいわゆる当たり判定時の処理でして、

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

敵オブジェクトを通り抜けたときに、

 

HPが減らす処理を実行できます。

 

 

そしてこのif文のとこですが、これは敵オブジェクトを

すり抜けるオブジェクトが、プレイヤーの攻撃オブジェクト

だったらという限定をしています。

 

こうしないと、敵オブジェクトに対してどんなものが

あたったとしても、HPが減るようになってしまいます。

 

ゲーム的には、HPが減るのはプレイヤーからの攻撃に

限定したいので、if文の部分で、プレイヤーの攻撃に限定しましょう。

 

 

敵のHPを減らすのをプレイヤーの攻撃に限定する

 

またこの方法ではタグを使ってます。

タグはゲームオブジェクトのインスペクター上部にある、

Tagという部分があるので、

 

そこからAdd Tagというのをクリックし、

Tagsのとこにある+ボタンをクリックし、

playerAttackという名前をつけてsaveしましょう。

 

するとタグが追加されたので、プレイヤーの攻撃用オブジェクトの

インスペクターに戻り、tagをクリックし、先ほど追加した

playerAttackを選択しそのタグを設定しましょう。

 

 

こうすると、このタグがついたオブジェクトは敵のHPを

減らすことができるオブジェクトになります。

 

というわけで、以上をして、あとは再生ボタンを押して

ゲーム実行中モードにしてください。

 

そしてプレイヤーの攻撃用オブジェクトを操作し、

敵オブジェクトを通り抜けたときに、

ちゃんとHPが減っているかどうか確認しましょう。

 

 

これで減っていたら成功です。

 

 

まとめ

 

ということでまとめに入ります。

 

Unityで敵が攻撃されたらHPを減らすには、

  1. 当たり判定をつける
  2. 当たり判定があったらHPを減らす処理をする

をしましょう。

 

これにより敵のHPを減らすことが出来るようになります。

ということで、この記事は以上です。

 

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

でわ。

 

チャーさん

-敵Aiの作り方

関連記事

Unityで敵に索敵機能を持たせる方法(簡単なやり方)

どうも、チャーさんです。   あなたはUnityで敵に索敵機能をつけたいですか? この記事ではUnityで敵に索敵機能をつける方法を説明します。 なので、   この記事を読めば、あ …

Unityで敵を徘徊させたい?ならこうやればいいですよ。

どうも、チャーさんです。   あなたは、Unityで敵に徘徊させたいですか? であればこの記事を読んでください。   読めば、Unityで敵に徘徊させることができるようになります。 …

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

どうも、チャーさんです。 あなたは、unityで敵にHPを表示させたいですか?   この記事ではunityで敵の上にHPを表示させる方法について お話しします。   なのであなたが …

Unityで敵による索敵を距離で行わせる簡単な方法「このメソッド1個使えばいける」

どうも、チャーさんです。 いつもこのブログ、チャムコードに来ていただき ありがとうございます。   あなたは、Unityで敵による索敵を距離で行わせたいですか? プレイヤーと敵オブジェクトと …

unity-enemy-spawn

Unityで敵をスポーンさせる簡単な方法[速攻でできる]

どうも、チャーさんです。 この記事では、Unityで敵をスポーンさせる方法について お話しします。   なので、あなたがこの記事を読めば、 すぐにUnityで敵をスポーンさせることができるよ …

unityで敵を消滅させる

Unityで敵を消滅させる方法(敵を攻撃した時に消滅させるとかも)

  どうも、チャーさんです。   あなたはUnityで敵を消滅させたいですか? 例えばプレイヤーが敵を攻撃したら消滅させたり、 そんな風にしたいならばこの記事を読んでください。 & …

no image

unityで敵を移動させる方法(詳細にわかりやすく説明します)

どうも、チャーさんです。   あなたはunityで敵を移動させたい、そう思っていませんか? コライダーなどでもできるが、他の方法がないかと探してませんか?   この記事ではコライダ …

no image

unityで敵に近づくと追いかけてくるコードとコードの解説記事

どうも、チャーさんです。   あなたはunityで敵に近づくと、 プレイヤーを追いかけてくるという機能を つけたいと思っていませんか?   この記事ではそれを実現するコードと方法や …

Unityで敵にプレイヤーを攻撃させる方法

どうも、チャーさんです。   あなたはUnityで敵が攻撃してくるようにしたいですか? この記事ではUnityで敵に攻撃させる方法を書いてるので、 この記事を読めば敵に攻撃させることができま …

Unityで敵に巡回させるならこの3ステップ(ランダム巡回もできる)

どうも、チャーさんです。 あなたはUnityで敵を巡回させたいですか? この記事ではUnityで敵を巡回させる方法を説明します。   なので、この記事を読めばUnityで敵の巡回をすぐにさせ …

最新記事

チャーさん

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

 

[簡単な経歴]

 

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

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

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

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

 

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

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