次は、「3種類目の敵」を作成します。
*オブジェクトで自分の好きなように3種類目の敵を作りましょう。
*この敵に「EnemyShotShell3」オブジェクトを「子供として付けて」おいてください。
*2種類目の敵をコピーして、必要な箇所を修正してもいいです。
今度は、「サーチ機能でプレーヤーを発見したら、プレーヤーの方向に向いて砲弾を発射」するようにします。
これによって、プレーヤーが背後から近づいて来た場合でも攻撃できるようになります。
1)「Sphere Collider」を付ける。
・今度は「EnemyShotShell3」オブジェクトに「Sphere Collider」を付けます。(*Box Colliderが付いている人は、「Remove Component」で外しておきましょう。)
・「Radius」の数字を変えてみましょう。
「Radius」とは「半径」という意味です。この数字を大きくすると「円」の大きさが広がり、より「遠く」のプレーヤーまで察知できるようになります。
*「Is Trigger」にもチェックを入れておきましょう。
2)スクリプトを作成する
・C#スクリプトを1つ作成。
・名前を「EnemyShotshell3」に変更。
・この中に下記コードを記載してください。
using UnityEngine; using System.Collections; public class EnemyShotShell3 : MonoBehaviour { public GameObject enemyShellPrefab; public float shotSpeed; public AudioClip shotSound; private int count = 0; // 親のデータを入れるための箱を作る private GameObject parent; // ターゲットの位置情報を入れるための箱を作る public Transform target; void Update () { count += 1; } void OnTriggerStay(Collider other){ if(other.gameObject.CompareTag("Player")){ // 親の情報を「parent」という箱の中に入れる。 parent = transform.root.gameObject; // 親をターゲットの方向に向かせる parent.transform.LookAt(target); if(count % 10 == 0){ GameObject enemyShell = Instantiate(enemyShellPrefab, transform.position, Quaternion.identity) as GameObject; Rigidbody enemyShellRigidbody = enemyShell.GetComponent<Rigidbody>(); enemyShellRigidbody.AddForce(transform.forward * shotSpeed); AudioSource.PlayClipAtPoint(shotSound, transform.position); Destroy(enemyShell, 1.0f); } } } }
・コードが書けたらチェック。
・スクリプトを「EnemyShotshell3」オブジェクトにドラッグ&ドロップする。
・「Target」欄には「Tank」オブジェクトをドラッグ&ドロップ
ここまでできたら再生ボタンを押してみましょう。
・適のサーチエリア内に入ったら、敵がプレーヤーの方向に向いて、攻撃を開始したら成功です。