次は、「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」オブジェクトをドラッグ&ドロップ
ここまでできたら再生ボタンを押してみましょう。
・適のサーチエリア内に入ったら、敵がプレーヤーの方向に向いて、攻撃を開始したら成功です。



