チャムコード

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

敵Aiの作り方

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

投稿日:2023年9月29日 更新日:

うも、チャーさんです。

 

あなたはUnityで敵に索敵機能をつけたいですか?

この記事ではUnityで敵に索敵機能をつける方法を説明します。

なので、

 

この記事を読めば、あなたは敵に索敵機能をつけることができます

 

ですが、この記事を読まないと、索敵機能を作るのに

時間がかかって苦労すると思いますので、

unityで敵に索敵機能を持たせたいなら、

 

ぜひこのまま記事を読んでください。

 

動画はこちら

 

Unityで敵に索敵機能を持たせるにはこの3つをしましょう

 

ということで、本題です。

Unityで敵に索敵機能を持たせるには、大まかに以下をすれば可能です。

 

  1. 敵オブジェクトにSphere Colliderをつける。
  2. OnTriggerStayメソッドを使う。
  3. 索敵範囲にプレイヤーが入った時の敵の動作を決める。

(この記事ではプレイヤーに向かって進んでくるを例にします)

 

をすれば敵に索敵機能をつけることができます。

 

ということで1つずつ説明していきます。

 

まず、

 

敵オブジェクトにSphere Colliderをつける

 

ですが、このSphere Colliderがいわゆる索敵エリアに

なります。索敵の範囲ですね。

 

ということでまず早速、敵オブジェクトにSphere Colliderを

セットしてください。

 

Sphere Colliderは、Add Componentをクリックして

Physicsをクリックすると出てきます。

 

 

そしてSphere Colliderをセットしたら、その中の、

Radius(半径という意味)の数字を1,2,3,4と大きくして

みてください。

 

すると、球状のColliderの範囲がどんどん大きくなりますね。

このColliderの範囲が敵オブジェクトの索敵範囲になりまして、

例えばプレイヤーがこのColliderの範囲に入ると、

 

敵オブジェクトが敵(敵からみた敵はプレイヤー)を発見した

状態になります。

 

 

*ココ大事です

で、ここで大事なのですが、このままだと索敵範囲として

設定したColliderとぶつかってしまうので、

 

コンポーネントのSphere ColliderにあるIsTriggerという

部分をクリックして、チェックをつけるようにしましょう。

 

 

こうすると、プレイヤーが敵の索敵範囲に入っても

オブジェクト同士が衝突して索敵範囲に入れないと

いうことがなくなり、

 

プレイヤーがColliderの中に侵入できるようになります。

 

こうしないと索敵はできないので、ぜひ忘れずやりましょう。

 

で次に、

 

OnTriggerStayメソッドを使おう

 

ですが、

 

このメソッドを使うと、先ほど設定したSphere Collider(索敵範囲)

にプレイヤーが侵入したとき、敵オブジェクトに何らかの

動作をさせることができます。

 

ゲームでは、敵の索敵範囲にプレイヤーが侵入すると

何かしらのアクションを取るので、

OnTriggerStayメソッドを使うことで、それを実現できます。

 

でコードとしては、以下です。

void OnTriggerStay(Collider col){
 
}

 

このように記述すると、敵の索敵範囲に何かオブジェクトが

侵入すると、中括弧の中にある記述が、発動するという

形です。

 

とりあえず試すのに簡単なのは以下のコードです。

 

void OnTriggerStay(Collider col){

 Debug.Log(“見つけた!”);
 
}

 

これをスクリプトに書いて、敵オブジェクトの

コンポーネントに貼り付けて、実行モードにして、

何かしらオブジェクトを敵の索敵範囲に入れてみましょう。

 

すると、console画面に見つけた!って表示されるようになります。

 

で次に、

 

索敵範囲にプレイヤーが入った時の敵の動作を決めよう

 

ですが、この記事では索敵範囲に入ったら、

 

敵がプレイヤーの方を向いて追いかけてくるという機能を

作ります。

 

難しく感じるかもですが、コードは簡単です。

以下の変数宣言と、OnTriggerStayの部分のコードを足しましょう。

 

 

public Transform player;

void Start()
{

}

void OnTriggerStay(Collider col){
 if(col.gameObject.name == “player”){
  transform.LookAt(player);
  transform.Translate(0,0,0.1f);
 }

}

 

そして、プレイヤーにあたるオブジェクトには

playerという名前をつけて、

 

このコードを保存して、敵オブジェクトに

貼り付けたらインスペクターにある変数部分にHierarchyにある

プレイヤーオブジェクトをドラッグアンドドロップして、

 

プレイヤーオブジェクトを取得しましょう。

するとプレイヤーが敵オブジェクトの索敵範囲に入った瞬間、

プレイヤーに向かって進んできます。

 

 

コードの補足説明

 

でこれはなぜそうなるかとか、コードに関して

一応補足説明しておきます。

 

まず、transform.LookAt(player);

ですが、このメソッドは、()の引数の中に指定した

オブジェクトの方を見るというメソッドになります。

 

でこれをすることで敵オブジェクトは、

プレイヤーが敵の索敵範囲に入った瞬間、プレイヤーの方角に

振り向くようになります。

 

 

また引数にはTransform型のオブジェクト情報を

指定する必要があるので、

public Transform player;

 

の変数宣言部分で、プレイヤーオブジェクトの

transform情報を取得してるわけです。

 

 

で次に、

transform.Translate(0,0,0.1f);

ですが、これをかくと、プレイヤーに向かって

敵オブジェクトが前進するようになります。

 

transform.Translateはオブジェクトを移動させるメソッド

でして、引数()の中に数字を指定すると、

進む方向を指定できます。

 

LookAtと組み合わせる場合、z軸に進ませる必要があるので、

()の中で3番目(x,y,zの順)に進ませたい速さを指定しましょう。

 

 

ということでコードの補足説明は以上ですが、

これで敵に索敵機能を持たせ、

 

索敵範囲にプレイヤーが侵入したら、プレイヤーに

向かって進んでくるという機能を作ることができました。

 

 

まとめ

 

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

Unityで敵に索敵機能を持たせたいなら、

 

大まかに、

  1. 敵オブジェクトにSphere Colliderをつける。
  2. OnTriggerStayメソッドを使う。
  3. 索敵範囲にプレイヤーが入った時の敵の動作を決める。

をすれば良いです。

 

 

するとあなたのUnityにいる敵オブジェクトが、

索敵をしてプレイヤーが侵入したら何か色々させることが

できます。(もちろんプレイヤーを攻撃してくるとかも)

 

そうしたらゲーム的に面白い感じになるので、

ぜひ今回の記事の内容を実践して、

 

敵に索敵機能を持たせてみてください。

 

 

ということで、以上です。

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

 

チャーさん

 

-敵Aiの作り方

関連記事

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

どうも、チャムコードというブログ運営してる、チャーさんです。   あなたはUnityで敵のHPを減らす機能を作りたいですか? 敵がプレイヤーから攻撃を受けたときに、HPを減らす 処理をつけた …

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

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

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

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

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

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

unity-enemy-spawn

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

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

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

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

unityで敵を消滅させる

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

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

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

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

no image

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

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

no image

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

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

最新記事

チャーさん

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

 

[簡単な経歴]

 

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

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

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

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

 

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

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