どうも、チャーさんです。
いつもこのブログ、チャムコードに来ていただき
ありがとうございます。
あなたは、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文であなたの好きな距離の数値を条件指定して、
好きな動作をさせてください。
すると索敵完了です。
また今回は距離による索敵でしたが、それ以外にも
コライダーを使って敵に索敵させる方法があります。
そちらにもご興味ありましたら、以下の記事をどうぞ。
ということで敵に索敵をさせる距離verでした。
それでは読んでいただきありがとうございました。
でわ。
チャーさん