P12-M01
【UNITY】タワーディフェンス1(NavMesh応用)
根強いファンも多い、タワーディフェンスゲームを作っていこう!勉強した「NavMesh」を応用して作っていきます。タワーディフェンスは、決められたコースを攻めて来る敵をタワー(敵を倒すもの)をおいて陣地などを守るゲームです。
—【今回の流れ】—
1.まずタワーは自動ではなく自分でコントロールするかたちにします。
2.NavMeshを作成します。
3.敵(Agent)を作成します。
4.NavMeshAgentに目的地を設定します。
1
タワーの作成する
タワーを作っていきます。タワーは3つの部品でできてます。
1.Stand: 「タワーの土台」
2.Barrel:「砲(弾をだすところ)」
3.Muzzle「実際に弾が出現して出ていくところ」ただのGameObjectです。
タワーをキーボードで操作しよう
タワーを左右に回転させるためのプログラムをかこう
ファイル名「TowerCont」のC#ファイルを新規作成しよう
1.右矢印を押したときタワーがY軸方向に右回転する
2.左矢印を押したときタワーがY軸方向に左回転する
タワーから弾を発射させよう
まずCreate > Sphereでタワーの弾をつくります。これをタワーから発射できるようにしていこう。
名前は「Bullet」とします。
次に作ったGameObject「Bullet」をAsset内に移しPrefabにします。
弾のようにいくつも複製(コピー)をする必要のあるものや、プログラムから出現させたり消したりする必要があるものはPrefab化する必要があるぞ。
「弾」にTag名「bullet01」をつけます。タグ名は複数のGameObjectにつけれるので複製される物に使うと便利です。
Tagのプルダウンメニューをクリックすると図のようなメニューが表示されます。一番したの「Add Tag」をクリックして新しいTag名を追加してください。
その後新しいTag名を「弾」に設定します。
タワーから弾を出すプログラムを書こう
ファイル名「Shooting」のC#ファイルを新規作成しよう
1.変数定義
「弾」、「弾の発射位置」、「弾の速度」をpublicで定義します。
2.スペースキーが押されたら
3.「弾」(Prefab)を複製(ゲーム内に出現させる)する
4.複製した「弾」に力を与え前方に発射する
2
NavMeshフィールドを作ろう
自分で考えて好きなNavMeshフィールドを作ろう。
3
敵をNavMeshAgentを使って作ろう
「敵」が目的地まで移動するようにする
ファイル名「EnemyCont」のC#ファイルを新規作成しよう
1.OnCollisionEnterを使ってをつかって「弾」がなにかあたったとき、「弾」消える処理を記述
「敵」出現するようにする
先程つくった「TowerCont」を編集して、「敵」を複製して出すようにします。
1.必要な定義を追加
2.「敵」がしていした数だけ出現するようにする
3.決められたポイントから現れるようにする。
「弾」自体にもプログラムを追加して、弾があたったときの爆発と、弾があたった「敵を消す」処理を加えます。
1.パーティクルをpublicで定義
2.OnTriggerEnterで弾が他のObjectにあたったかを検知
3.「敵」(Tag名:Enemy)にあたった場合あたった「敵を削除」
「敵」にTag名「enemy」をつけます。タグ名は複数のGameObjectにつけれるので複製される物に使うと便利です。