次は、「4種類目の敵」を作成します。
*Tank(プレーヤー)をコピーして作成してもいいです。
・その場合、「Inspector」の中の「Tank Movement」スクリプトと「Rigidbody」は「外して」おきましょう。(ポイント!)
・「ShotShell」オブジェクトの名前を「EnemyShotShell」に変更しましょう。
・変更したら、「ShotShell」スクリプトを外して、「EnemyShotShell」スクリプトをドラッグ&ドロップでつけてください。
・Prefab等の設定をしてください。
それでは次に、敵がプレーヤーを追いかける機能を作ってみましょう。
①スクリプトの作成
・C#スクリプトを1つ作成
・名前を「ChaseEnemy」に変更
・下記のコードを記載してください。
using UnityEngine; using System.Collections; public class ChaseEnemy : MonoBehaviour { // ①変数を定義する(データを入れるための箱を作る) public GameObject target; private NavMeshAgent agent; // Use this for initialization void Start () { // ②箱の中にデータを入れる(代入) agent = GetComponent<NavMeshAgent>(); } // Update is called once per frame void Update () { // ③データの入った箱を活用する。 // ★「destination」の意味を「グーグル翻訳」で調べよう! agent.destination = target.transform.position; } }
②敵にコンポーネント(機能)を付ける
・付ける機能=>「Nav Mesh Agent」
③敵が追いかけてくることのできる範囲を決める。
・敵が追いかけてこれるのは「ブルーの範囲内」だけです。
・ブルーの範囲の設定方法は「(2)Nav Mesh Agentの設定」を参照
④ターゲットを設定する
・プレーヤーを追いかけさせたい敵に「ChaseEnemy」スクリプトをドラッグ&ドロップ。
・「Target」欄に「Tank(もしくはPlayer)」を設定
ここまでできたら「再生ボタン」を押してみましょう。
敵がPlayerの位置に近づいてきたら成功です。
*敵が追いかけてくるスピードを調整してみましょう。
(障害物を避ける機能)
今の設定では「敵はまっすぐ最短距離で」Tnak(プレーヤー)のところに近づいてきます。
これを途中に障害物がある場合には、うまく「回り込み」ながら近づいてくるようにしてみます。
・避けさせたいオブジェクトを選択。
・「Add Component」で「Nav Mesh Obstacle」コンポーネントをつけてください。
・「Size」を調整して、少しだけ大き目にしましょう。
・これで敵はこの枠をうまく避けながら近づいてくるようになります。