戦闘ヘリを作成してみましょう。
1)オブジェクトを作成する
(作成ポイント)
・「空のオブジェクト」を1つ作成。(名前は自由に変更)
・これを「親」として「羽(Rotor)部分のオブジェクト」をその中に入れます。
2)ヘリの羽(Rotor)を回転させる
①スクリプトの作成(名前「Rotor」)
using UnityEngine; using System.Collections; public class Rotor : MonoBehaviour { // (ヒント)「コインを回転」させるスクリプトを応用しています。 // 回転速度はどの部分のコードで調整しているかを考えよう! void Update () { transform.Rotate(new Vector3(0,90,0) * Time.deltaTime * 10); } }
②スクリプトを「親オブジェクト」にドラッグ&ドロップ
*親オブジェクトにスクリプトをつけると、その中の子供も一緒に動きます。
ここまでできたら一度「再生ボタン」を押してみましょう。
羽が回転したら成功です。
3)空中に浮いたままでプレーヤーを追いかける
①前回作成した「ChaseEnemy」スクリプトをドラッグ&ドロップ
・「Target」を設定。
②敵にコンポーネント(機能)をつける
・付ける機能=>「Nav Mesh Agent」
(ここがポイント!)
「Base Offset(ターゲットに近づける限界)」を「4」にする。
4)プレーヤーを見つけたら爆弾を落とす
①「Create Empty」でオブジェクトを作る
・名前は「DropBomb」
・「Box Collider」を付けて、大きさと位置を調整する。(このコライダー(あたり判定の透明な枠)にプレーヤーが触れたら爆弾を落とすという仕組みです。)
②爆弾のプレファブを作る。
・「色、形、大きさ」は自由
・「Is Trigger」にチェックを入れる
・「Rigidbody」のコンポーネントを付ける。(爆弾は「重力」の力で下に落ちていくようにします。)
*タグ(Tag)は「EnemyShell」を付ける
③スクリプトの作成(名前「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」プレファブを設定
ここまで出来たら再生ボタンを押して確認してみましょう。
敵のヘリが近づいてきて、プレーヤーに爆弾を落とせば成功です。