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
Unity チュートリアルのタワーディフェンステンプレートを触ってみる(4) では作成した TowerLevelData スクリプタブルオブジェクトと TowerLevel プレハブを用いてタワーの作成を進めた。今回はタワーの作成にあたって追加した Tower.cs スクリプトの解説を行っていく。「Tower.cs」 は 「Targetable.cs」 を継承し、「Targetable.cs」 は 「DamageableBehaviour.cs」 を継承している。大本である「DamageableBehaviour.cs」から順に解説していったほうがわかりやすいと思われるため、そちらから順に説明を行っていく。『継承(けい... Unity チュートリアルのタワーディフェンステンプレートを触ってみる(5) - StudioFun |
Targetable
Unity チュートリアルのタワーディフェンステンプレートを触ってみる(5) では Tower.cs の継承元となっている DamageableBehaviour.cs スクリプトの解説を行った。今回は更に Tower.cs の継承元となっている Targetable.cs の解説を行っていく。「Tower.cs」 は 「Targetable.cs」 を継承し、「Targetable.cs」 は 「DamageableBehaviour.cs」 を継承している。前回は「DamageableBehaviour.cs」の行った。続いて「Targetable.cs」 を行っていく。DamageableBehaviour.cs の解説についてはこちらを参照してほしい。1.タワー編 - T... Unity チュートリアルのタワーディフェンステンプレートを触ってみる(6) - StudioFun |
Tower
Unity チュートリアルのタワーディフェンステンプレートを触ってみる(6) では Tower.cs の継承元となっている Targetable.cs スクリプトの解説を行った。今回は Tower.cs の解説を行っていく。「Tower.cs」 は 「Targetable.cs」 を継承し、「Targetable.cs」 は 「DamageableBehaviour.cs」 を継承している。前回は「Targetable.cs」の行った。「Tower.cs」 を行っていく。Targetable.cs の解説についてはこちらを参照してほしい。1.タワー編 - Tower.csTower.cs について稚拙ながら解説「Tower.cs」は「Asset/Scripts/TowerDefe... Unity チュートリアルのタワーディフェンステンプレートを触ってみる(7) - StudioFun |
Asset/Scripts/ActionGameFramework/Health/DamageCollider.cs については、継承関係にある「DamageZone」、「DamageCollider」をそれぞれ稚拙ながら解説させていただいた。それぞれの記事については以下を参照してほしい。
DamageZone
Unity チュートリアルのタワーディフェンステンプレートを触ってみる(5)、(6)、(7) と Tower.cs スクリプトの解説を行ってきた。今回は引き続きUnity チュートリアルのタワーディフェンステンプレートを触ってみる(4)に記載している通り 「DamageCollider.cs」 がその前に継承関係にある「DamageZone.cs」の解説を行っていく。「DamageCollider.cs」は「DamageZone.cs」を継承している。そのため今回は「DamageCollider.cs」解説する前に「DamageZone.cs」について解説を行っていく。1.タワー編 – DamageZone.csDamageZo... Unity チュートリアルのタワーディフェンステンプレートを触ってみる(8) - StudioFun |
DamageCollider
Unity チュートリアルのタワーディフェンステンプレートを触ってみる(8) では「DamageCollider.cs」の継承関係にある「DamageZone.cs」の解説を行っていた。今回は「DamageCollider.cs」について解説を行っていく。「DamageCollider.cs」は「DamageZone.cs」を継承している。そのため前回は「DamageCollider.cs」解説する前に「DamageZone.cs」について解説を行っていた。「DamageZone.cs」の解説についてはこちらを参照してほしい。1.タワー編 – DamageCollider.csDamageCollider.cs について稚拙ながら解説「DamageCollider.cs... Unity チュートリアルのタワーディフェンステンプレートを触ってみる(9) - StudioFun |
Asset/Scripts/ActionGameFramework/Health/SimpleAlignment.cs の記事については以下を参照してほしい。
SimpleAlignment
Unity チュートリアルのタワーディフェンステンプレートを触ってみる(8) 、(9)では「DamageCollider.cs」と継承関係にある「DamageZone.cs」の解説を行っていた。今回は「SimpleAlignment.cs」とインタフェースとなっている「IAlignmentProvider.cs」について解説を行っていく。「SimpleAlignment.cs」はインタフェースとして「IAlignmentProvider.cs」があるため、インタフェースである「IAlignmentProvider.cs」から順に解説を行っていく。インタフェースとは『 ソフトウェア間の通信を行う際のメッセージの渡し方などを決... Unity チュートリアルのタワーディフェンステンプレートを触ってみる(10) - StudioFun |