Oops! It appears that you have disabled your Javascript. In order for you to see this page as it is meant to appear, we ask that you please re-enable your Javascript!

unity

unityで敵を索敵する方法

投稿日:

Pocket

うも、大石です。

 

あなたはunityでプレイヤーが敵を索敵する

機能をつけたいですか?

 

この記事を読めば、敵を索敵する

機能を簡単に作れますよ。

 

ということで読んでみてください。

 

スポンサードサーチ

unityで敵を索敵する方法+コード

 

でまず結論です。

 

索敵する方法は、

 

Vector3.Distance(a,b)という関数と

if文を組み合わせて、インスペクターで

索敵したいオブジェクトを登録すればできます。

 

 

コード的には以下のコードを書いて、

プレイヤーオブジェクトにスクリプトコンポーネントを

つければできます。(スクリプトのクラス名はご自由にどうぞ)

 

索敵に関わりあるとこだけ背景色黄色にします。


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class findEnemy : MonoBehaviour
{
	public GameObject enemy;
	float distance;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        distance = Vector3.Distance(transform.position,enemy.transform.position);
        
        if(distance < 20.0){
        	transform.LookAt(enemy.transform.position);
        }
        
    }
}

 

ちなみにVector3.Distance()引数のa,bには、

transform.positionなど座標に関する

変数が入ります。

 

索敵のコードの仕組み説明

 

でなんでこれで索敵できんの?と、

思ったかと思うのでご説明していきます。

 

まずVector3.Distance(a,b);というのは、

unityで用意されてる関数でして、

これはオブジェクト同士の距離を出してくれます。

 

 

例えばオブジェクトAとオブジェクトBが

シーン上にあったとして、

それの距離をfloat(小数点)で出してくれます。

 

例で図にしてみると以下の感じです。

 

A————B

AとBの距離4.5。

みたいな感じです。

 

 

で、これで何ができるかというと、

if文と組み合わせることで、

索敵範囲を設定することができるのです。

 

例えば、もしもAとBの距離が3以下なら、

攻撃とか何か反応させるみたいなことができます。

 

 

コードにすると以下の感じです。

 

if(distance < 3.0){

攻撃の記述;

}

 

*distanceはVector3.Distance(a,b)で

算出される値を格納する変数

float distance = Vector3.Distance(a,b);

的な。

 

こうすると常に索敵しながら敵を

見つけたら攻撃できるスクリプトになります。

 

 

なので、unityで索敵をするなら、

Vector3.Distance(a,b);を使って距離を出し、

あとはif文と組み合わせるだけで基本可能です。

 

索敵のためのDistance()のコードの書き方

 

「なるほど仕組みはわかった、

で具体的にはVector3.Distance(a,b);

はどう書くのん?」

 

ということでここからはそこの説明です。

 

 

Vector3.Distance(a,b);

のaとbですが、

 

繰り返しになりますが、

ここには距離を測りたいオブジェクトの

座標を入れます。

 

例えば、プレイヤーと敵の距離を測りたいなら

プレイヤーと敵の座標をこのaとbに書きます。

 

 

でプレイヤーの座標ですが、

スクリプトを直接プレイヤーオブジェクトに

はっつけるのであれば、

 

これは普通にtransform.positionでokです。

 

*transform.positionはスクリプトをつけてる

オブジェクトの座標を示す変数です。

 

 

なので、まずaのとこは、

Vector3.Distance(transform.position ,b);

になります。

 

で次にbの敵の座標ですが、

これを記述するには、

敵オブジェクトの座標を取得する必要があります。

 

 

ということで、座標を取得するためにまず

Public GameObject enemy;

とかで敵オブジェクト用の変数宣言をして、

 

インスペクター上で、索敵対象になる

敵オブジェクトを変数にドラッグ&ドロップして

登録しておきましょう。

 

 

でこうすると敵オブジェクトの座標を取得できるので、

あとは敵オブジェクトの座標を示す変数である、

enemy.transform.positionをbに書けばokです。

 

つまり、こうなります。


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

 

で上記のように書いておけば、

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

算出してくれるので索敵に使えるようになります。

 

 

でこの距離の関数をこのままだと使いにくいんで、

 

float distance=Vector3.Distance(transform.position ,enemy.transform.position);

 

と書いて、変数に格納しときましょう。

 

 

であとは、if文です。

 

if (distance < 10,0){

何かしらの記述;

}

 

を書いてupdate内に記述しておけば、

常にプレイヤーが敵を索敵しながら

動いてくれるようになります。

 

 

スポンサードサーチ

まとめ

 

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

 

unityで敵を索敵したいなら、

 

Vector3.Distance(a,b)という関数と

if文を組み合わせればできます。

 

 

あとはif文の{}内に好きな記述を書けば

敵を見つけた時の反応を自由に制御できるので

ゲームっぽく攻撃とか色々やってみましょう。

 

ということでunityで敵を索敵する方法でした。

 

読んでもらってありがとうございました。

 

大石

-unity

==========

Unity用の3Dモデルを探してる方、欲しい方ご注目!

自作のUnity用3Dモデルをリーズナブルな価格で販売してますので、以下のリンクより一度ご覧ください。

Unity用3Dモデルを見てみる

==========


スポンサードサーチ

関連記事

no image

unityで弾を発射する方法(簡単3ステップ)

どうも、大石です。   あなたは、unityで弾を発射したいですか? この記事を読めば、あなたはunityで弾を発射 できるようになります。   なので、弾を発射したければ、 この …

no image

blenderで作ったモデルをunityにインポートする方法「簡単です」

どうも、チャーさんです。   あなたはblenderで作ったものを、 unityで表示(インポート)したいと、 思っていませんか?   この記事では、あなたが作ったblenderの …

no image

unityでオブジェクトを移動させたい人は読んでください。

どうも、チャーさんです。   あなたはunityでオブジェクトや、 プレイヤーなど自由自在に移動させたい、 そう思っていませんか?     キーボードの上下左右の矢印ボタ …

no image

unity上でblender作成モデルが透ける時の解決法

どうも、チャーさんです。   あなたはunityにblenderで作ったモデルを 持ってきたものの、面が透ける現象が起こって 困っていませんか?     この記事は、透け …

no image

unityでprefabを複製する(スクリプトで)方法

どうも、大石です。 あなたはunityでprefabをスクリプトで複製 したいですか?   この記事を読めば、あなたはprefabをスクリプトで 複製できるようになります。   な …

no image

unityで他のオブジェクトを取得する方法

どうもチャーさんです。   あなたはunityで他のオブジェクトを 取得したいがわからず困ってますか?   この記事では、unityで他のオブジェクトを 取得する方法を書いてます。 …

no image

unityでoculus questの開発をしたい方必見!手順まとめました

どうも、チャーさんです。   あなたはunityでoculus questの 開発をしたい、そう思ってませんか?     この記事ではunityでoculus quest …

no image

unityで攻撃に当たり判定をつける方法

どうも、チャーさんです。 あなたはunityで攻撃に当たり判定をつけたいですか?   この記事では、当たり判定をつける 方法を書いてるので、読めば当たり判定をつけれます。   とい …

no image

unityで地形を作る方法「初心者でもできるように丁寧に説明してます」

どうも、チャーさんです。   あなたはunityでいい感じの地形を作りたい。 でも、やり方がわからない。と悩んでいませんか?   この記事では、unityで地形を作る方法を、 ステ …

no image

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

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

no image

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

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

no image

unityで動く床にのるとオブジェクトが滑る場合の解決法

どうも、大石です。   unityで動く床を作ったのに オブジェクトが上に乗ると滑って 一緒に付いて行かずに落ちる、、   みたいなことで悩んでますか?     …

no image

unityでのダンジョンの簡単な作り方(コードコピペで作れます)

どうも、チャーさんです。   あなたは、unityでダンジョンを作りたいと 思っていませんか?   この記事ではunityでのダンジョンの作り方を 説明してまして、本記事を読めば …

no image

unityでカメラを追従させる簡単なコードと方法の説明をする記事

  どうも、チャーさんです。   あなたはunityでカメラの追従をさせたい、 こう思ってませんか?   この記事ではオブジェクトをカメラで追従させる、 (カメラが追いか …

no image

unityでオブジェクトを回転させる方法「1分でできます」

どうも、チャーさんです。   あなたはunityでオブジェクトを回転させたいですか?   unityでゲームなど作るとオブジェクトを 回転させたい場面がありますよね。   …

最新記事

チャーさん

プログラミング・筋トレ・unity系の記事などを書いてます。

大学卒業後→開業→個人事業主7年目ぐらいです。webサイト制作したり、unityでゲーム開発しております。

youtubeもやってまして、主にプログラミング動画とかunity系の動画をあげてるので見てください。