Unity チュートリアルのタワーディフェンステンプレートを触ってみる(4)
Unity チュートリアルのタワーディフェンステンプレートを触ってみる(3) では実際にTowerLevel プレハブとそれに付随するスクリプトの解説を行った。今回は作成した TowerLevelData スクリプタブルオブジェクトと TowerLevel プレハブを用いてタワーの作成を進めていく。
1.タワー編 – タワーのゲームオブジェクトを作成する
『必要な TowerLevelData スクリプタブルオブジェクトと TowerLevel プレハブができました。これで、タワーのゲームオブジェクト自体を作成できます。』
とのことなので指示通り「タワーのゲームオブジェクト」を作成していく。チュートリアルの手順では以下の通りとなっている。
- 新しいシーンを開きます。
- 空のゲームオブジェクトを作成します。
- ゲームオブジェクトの名前を NewTower にします。
- NewTower ゲームオブジェクトに Tower コンポーネントを加えます。
上記の指示通り空の GameObject に対して「NewTower 」という名称を付け、Tower コンポーネントを追加した。すると以下のような状態となる。
Tower コンポーネントは「Asset/Scripts/TowerDefense/Towers/Tower.cs」のことを指している。
『Tower コンポーネントを動作させるには他のコンポーネントがいくつか必要です。そこで次に、それらを加える作業を行います。』
とのことなので指示通り「タワーのゲームオブジェクト」を作成していく。チュートリアルの手順では以下の通りとなっている。
- 適切な Collider コンポーネントを加えて、タワーのモデルを NewTower ゲームオブジェクトに加えます。
上記の指示通り NewTower に対してテンプレートを参考に Box Collider を設定した。この時のパラメータは「中心:(0, 0.24, 0)」、「サイズ : (1.8, 0.5, 1.8)」である。すると以下のような状態となる。
『Collider コンポーネントは、タワーが敵の砲弾に当たったかどうかを判断するために必要です。また、Collider は、タワーが選択された後にプレイヤーがタワーをクリックできる範囲を設定します。』
とのことなので指示通り「タワーのゲームオブジェクト」に対して「DamageCollider 」を設定する。チュートリアルの手順では以下の通りとなっている。
- DamageCollider コンポーネントを NewTower ゲームオブジェクトに加えます。
上記の指示通り NewTower に対してテンプレートを参考に DamageCollider コンポーネントを設定した。すると以下のような状態となる。
DamageCollider コンポーネントは「Asset/Scripts/ActionGameFramework/Health/DamageCollider.cs」のことを指している。
『DamageCollider コンポーネントは、Damager を持つオブジェクトとの衝突を処理します (アクションゲームフレームワーク を参照)。これから、NewTower ゲームオブジェクトの Tower コンポーネントの設定を行います。』
とのことなので指示通り「Tower コンポーネントの設定」を行っていく。チュートリアルの手順では以下の通りとなっている。
- Player (SimpleAlignment) スクリプタブルオブジェクトを Alignment フィールドにドラッグします。
- 必要に応じて Target Transform を設定します。
- Levels の下の Size フィールドに TowerLevel オブジェクトの必要数を入力します。
- タワーの TowerLevel プレハブを Element フィールドにドラッグします。
- Tower Name フィールドにタワーの名前を入力します。
- Dimensions の X と Y の値を設定して、タワーを配置グリッドに配置するのに必要なスペースの大きさを決定します。
- タワーゲームオブジェクトの子として耐久力バーのオブジェクトを加えます。
上記の指示通り、テンプレートを参考に Tower コンポーネントを設定した。
まず、Player (SimpleAlignment) スクリプタブルオブジェクトはUnity チュートリアルのタワーディフェンステンプレートを触ってみる(2) 解説したTowerLevelData と同様に、プロジェクトの左上 Create > StarterKit > Simple Alignment から作成することができる。画面等しては以下の通り。
次にテンプレートを参考に値の設定を行った。内容としては「Size フィールド : 3」、「Element : 既存の Prefab から LaserTower_0 ~ LaserTower_2」「タワーの名前 : Plasma Lance」「Dimensions : (2, 2)」である。すると以下のような状態となる。
Player (SimpleAlignment) スクリプタブルオブジェクトは「Asset/Scripts/Core/Health/SimpleAlignment」のことを指している。
今回出てきた「Asset/Scripts/TowerDefense/Towers/Tower.cs」、「Asset/Scripts/ActionGameFramework/Health/DamageCollider.cs」、「Asset/Scripts/Core/Health/SimpleAlignment」については改めて記事にまとめさせていただくことにする。
Asset/Scripts/TowerDefense/Towers/Tower.cs については、継承関係にある「DamageableBehaviour」、「Targetable」、「Tower」をそれぞれ稚拙ながら解説させていただいた。それぞれの記事については以下を参照してほしい。
DamageableBehaviour
Targetable
Tower
Asset/Scripts/ActionGameFramework/Health/DamageCollider.cs については、継承関係にある「DamageZone」、「DamageCollider」をそれぞれ稚拙ながら解説させていただいた。それぞれの記事については以下を参照してほしい。
DamageZone
DamageCollider
Asset/Scripts/ActionGameFramework/Health/SimpleAlignment.cs の記事については以下を参照してほしい。
SimpleAlignment