戦闘ヘリを作成してみましょう。
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」プレファブを設定
ここまで出来たら再生ボタンを押して確認してみましょう。
敵のヘリが近づいてきて、プレーヤーに爆弾を落とせば成功です。







