(17)敵を作る⑥(空から攻撃する)

戦闘ヘリを作成してみましょう。

1)オブジェクトを作成する

(作成ポイント)

「空のオブジェクト」を1つ作成。(名前は自由に変更)

・これを「親」として「羽(Rotor)部分のオブジェクト」をその中に入れます。

スクリーンショット 2016-04-27 15.28.03


2)ヘリの羽(Rotor)を回転させる

①スクリプトの作成(名前「Rotor」)

using UnityEngine;
using System.Collections;

public class Rotor : MonoBehaviour {

	// (ヒント)「コインを回転」させるスクリプトを応用しています。
	// 回転速度はどの部分のコードで調整しているかを考えよう!
	void Update () {

		transform.Rotate(new Vector3(0,90,0) * Time.deltaTime * 10);

	}
}

②スクリプトを「親オブジェクト」にドラッグ&ドロップ

*親オブジェクトにスクリプトをつけると、その中の子供も一緒に動きます。

スクリーンショット 2016-04-27 15.48.44

ここまでできたら一度「再生ボタン」を押してみましょう。

羽が回転したら成功です。


3)空中に浮いたままでプレーヤーを追いかける

①前回作成した「ChaseEnemy」スクリプトをドラッグ&ドロップ

「Target」を設定。

スクリーンショット 2016-04-28 13.06.43

②敵にコンポーネント(機能)をつける

・付ける機能=>「Nav Mesh Agent」

(ここがポイント!)

「Base Offset(ターゲットに近づける限界)」を「4」にする。

スクリーンショット 2016-04-27 16.00.34


4)プレーヤーを見つけたら爆弾を落とす

①「Create Empty」でオブジェクトを作る

・名前は「DropBomb」

「Box Collider」を付けて、大きさと位置を調整する。(このコライダー(あたり判定の透明な枠)にプレーヤーが触れたら爆弾を落とすという仕組みです。)

スクリーンショット 2016-04-27 16.10.22

②爆弾のプレファブを作る。

・「色、形、大きさ」は自由

「Is Trigger」にチェックを入れる

「Rigidbody」のコンポーネントを付ける。(爆弾は「重力」の力で下に落ちていくようにします。)

スクリーンショット 2016-04-27 16.17.14

*タグ(Tag)は「EnemyShell」を付ける

スクリーンショット 2016-04-27 16.24.50

③スクリプトの作成(名前「DropBomb」)

using UnityEngine;
using System.Collections;

public class DropBomb : MonoBehaviour {

	// 変数の定義
	public GameObject bombPrefab;
	private int count;


	// Use this for initialization
	void Start () {

		// 箱の中にデータを入れる(初期値)
		count = 0;

	}

	// Update is called once per frame
	void Update () {

		// countの中のデータを更新する(1,2,3,4,5,....)
		count += 1;

	}

	// 今回は「OnTriggerStay」を使う。
	// これは「ぶつかっている間ずっと」作動するメソッド(命令ブロック)
	void OnTriggerStay(Collider other){
		if(other.gameObject.CompareTag("Player") && count % 60 == 0){

			GameObject bomb = Instantiate(bombPrefab, transform.position, Quaternion.identity) as GameObject;

			Destroy(bomb, 2);
		}
	}
}

④スクリプトをDropBombオブジェクトにドラッグ&ドロップ

*「Bomb」プレファブを設定

スクリーンショット 2016-04-27 16.27.21

ここまで出来たら再生ボタンを押して確認してみましょう。

敵のヘリが近づいてきて、プレーヤーに爆弾を落とせば成功です。