Unity チュートリアルのタワーディフェンステンプレートを触ってみる(4)

Unity チュートリアルのタワーディフェンステンプレートを触ってみる(3) では実際にTowerLevel プレハブとそれに付随するスクリプトの解説を行った。今回は作成した TowerLevelData スクリプタブルオブジェクトと TowerLevel プレハブを用いてタワーの作成を進めていく。

1.タワー編 – タワーのゲームオブジェクトを作成する

『必要な TowerLevelData スクリプタブルオブジェクトと TowerLevel プレハブができました。これで、タワーのゲームオブジェクト自体を作成できます。』

とのことなので指示通り「タワーのゲームオブジェクト」を作成していく。チュートリアルの手順では以下の通りとなっている。

  • 新しいシーンを開きます。
  • 空のゲームオブジェクトを作成します。
  • ゲームオブジェクトの名前を NewTower にします。
  • NewTower ゲームオブジェクトに Tower コンポーネントを加えます。

上記の指示通り空の GameObject に対して「NewTower 」という名称を付け、Tower コンポーネントを追加した。すると以下のような状態となる。

タワー GameObject

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 コンポーネントは、タワーが敵の砲弾に当たったかどうかを判断するために必要です。また、Collider は、タワーが選択された後にプレイヤーがタワーをクリックできる範囲を設定します。』

とのことなので指示通り「タワーのゲームオブジェクト」に対して「DamageCollider 」を設定する。チュートリアルの手順では以下の通りとなっている。

  • DamageCollider コンポーネントを NewTower ゲームオブジェクトに加えます。

上記の指示通り NewTower に対してテンプレートを参考に DamageCollider コンポーネントを設定した。すると以下のような状態となる。

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 から作成することができる。画面等しては以下の通り。

Simple Alignment の作成

次にテンプレートを参考に値の設定を行った。内容としては「Size フィールド : 3」、「Element : 既存の Prefab から LaserTower_0 ~ LaserTower_2」「タワーの名前 : Plasma Lance」「Dimensions : (2, 2)」である。すると以下のような状態となる。

Tower コンポーネントの設定

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

%d人のブロガーが「いいね」をつけました。