チャムコード

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

敵Aiの作り方

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

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

うも、チャーさんです。

いつもこのブログ、チャムコードに来ていただき

ありがとうございます。

 

あなたは、Unityで敵による索敵を距離で行わせたいですか?

プレイヤーと敵オブジェクトとの距離に応じて索敵させたいと

思っているならば、

 

この記事をお読みください。

 

 

この記事ではオブジェクト同士の距離を使って、

敵に索敵させる方法を書いていますので、これを読めば

あなたはUnityで敵に索敵させることができます。

それも距離を使って。

 

ですがこの記事を読まないと、距離による索敵のやり方が

なかなかわからず。あなたの大切な時間を浪費してしまうでしょう。

 

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

 

動画はこちら

 

 

Unityで敵による索敵を距離で行わせる方法

 

ということで本題です。

Unityで敵に索敵を距離によってさせたい場合は、

Unityで用意されている、

 

Vector3.Distance()

というメソッドを使いましょう。

 

 

このメソッドは、指定したオブジェクトAとオブジェクトBとの

距離をはじき出すことができるメソッドでして、

 

敵オブジェクトと、プレイヤーオブジェクトとの距離を

出すことができます。

 

 

なので、このメソッドを使えば、敵オブジェクトと

プレイヤーオブジェクトとの距離が指定した数値に

達した場合、

 

あなたの意図した行動を敵にさせるということができ、

索敵に使えるわけです。

 

 

Vector3.Distance()の使い方

 

でここからは実際にそのメソッドを使う方法を説明します。

まずVector3.Distance()ですが、

引数を2つとります。

 

で、引数として指定するのは座標です。

やはり距離を取るには座標と座標の距離をとってるわけです。

なので、

 

Vector3.Distance(オブジェクトA座標、オブジェクトB座標);

という感じになってまして、

具体的には以下のように書けばOKです。

 

 

Vector3.Distance(transform.position,player.position);

(先に変数public Transform playerを変数宣言した場合です)

 

で、この第1引数の、transform.positionが

敵オブジェクトの座標です。

(このスクリプトを敵オブジェクトに貼り付けた場合です)

 

で、第2引数のplayer.positionが、

プレイヤーに当たるオブジェクトの座標ですね。

 

 

これを設定することで、プレイヤーと

敵オブジェクトの距離をメソッドがはじき出してくれる

ので、あとはその数値を使って索敵させるだけです。

 

 

距離による索敵コード具体例

 

で、この数値を使っての索敵ですが、

具体的なコード例としては以下の感じに書けば、

敵による索敵を距離によってさせることができます。

 

public class クラス名 : MonoBehaviour
{
public Transform player;
// Start is called before the first frame update
void Start()
{

}

// Update is called once per frame
void Update()
{
 float dist = Vector3.Distance(transform.position,player.position);
 Debug.Log(dist);
 if(dist < 30.0f){
  transform.LookAt(player);
  transform.Translate(0,0,0.5f);
  }
 }
}

 

ということで補足していきます。

 

まずは、public Transform player;ですが、

ここでプレイヤーオブジェクトの座標を取るために

変数宣言してます。

 

これを書くとインスペクターに変数と空欄が表示されるので

その空欄にプレイヤーをドラッグアンドドロップしましょう。

 

 

で、float dist = Vector3.Distance(transform.position,player.position);

ですが、これにより敵オブジェクトとプレイヤーとの

距離を計算し、変数distに入れてくれます。

 

あとは、

if(dist < 30.0f){
  transform.LookAt(player);
  transform.Translate(0,0,0.5f);
  }
 }

 

 

これですが、これは敵とプレイヤーの距離が

30.0以下になったら中括弧内の指示を実行するという

ことでして、

 

この場合だとプレイヤーの方を向き、

プレイヤーに向かって敵オブジェクトが前進していきます。

 

 

という感じで、

Vector3.Distance()を使えば、距離が

取れるので条件つけて距離があなたの指定した数値に

なればという風にコード書けば、

 

距離による索敵機能は達成です。

 

 

まとめ

 

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

 

Unityで敵による索敵を距離で行いたい場合は、

Vector3.Distance();

を使いましょう。

 

引数は、

Vector3.Distance(オブジェクトA座標、オブジェクトB座標);

でして引数は両方ともVector3型を取るので、

ちゃんと座標を指定してあげましょう。

 

あとはif文であなたの好きな距離の数値を条件指定して、

好きな動作をさせてください。

 

すると索敵完了です。

 

また今回は距離による索敵でしたが、それ以外にも

コライダーを使って敵に索敵させる方法があります。

 

そちらにもご興味ありましたら、以下の記事をどうぞ。

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

 

ということで敵に索敵をさせる距離verでした。

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

 

でわ。

チャーさん

-敵Aiの作り方

関連記事

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

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

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

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

no image

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

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

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

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

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

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

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

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

no image

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

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

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

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

unity-enemy-spawn

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

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

unityで敵を消滅させる

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

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

最新記事

チャーさん

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

 

[簡単な経歴]

 

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

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

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

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

 

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

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