2019年3月13日 星期三

Unity教程--塔防模板--塔

確認過的版本:2017.2
難度:中級

設置專案

首先,我們需要安裝並打開Unity編輯器。塔防模板可以從資源商店窗口下載,或是開啟時就可參考下圖下載


為了本教程的目的,我們將使用一個空白場景。入門套件附帶了幾個預先製作的場景,你可以查看和比較自己的作品。






介紹

塔防遊戲中最重要的元素是塔。在塔防模板中,我們使用兩個關鍵元素來創建塔。第一個是塔元件 ( tower component,),它定義了塔的基本功能。第二個是塔等級元件 ( TowerLevel component ),它定義塔在升級時的行為方式。

創建一座塔

讓我們從頭開始創建一座新塔。

在我們創建塔遊戲物件之前,我們必須創建數據物件,以儲存有關它在不同級別的行為方式的數據。這些物件稱為塔等級數據可程式物件 ( TowerLevelData ScriptableObjects )。

我們首先創建一個塔等級數據可程式物件來儲存有關一級塔的數據。
  • 在 Project 視窗口中,點擊上角的 Create,然後選擇 Create > Tower Defense > Tower Configuration。
  • 為可程式物件指定一個由其類型和等級別編號組成的名稱(例如,Laser1)
  • 將可程式物件放在 Data/Tower 資料夾中
  • 設置塔名稱、生命值和價格 ( name, health and  price )
現在讓我們重複這個過程來為二級塔建立數據物件。
  • 在 Project 視窗口中,點擊上角的 Create,然後選擇 Create > Tower Defense > Tower Configuration。
  • 為可程式物件指定一個由其類型和等級別編號組成的名稱(例如,Laser2)
  • 將可程式物件放在 Data/Tower 資料夾中
  • 設置塔名稱、描述(升級到此級別時顯示)、生命值和價格 ( name, health and price )
接下來,我們需要為每個級別創建塔等級預製體。塔等級預製體包含 TowerLevel 元件,其中引用了與塔等級相關聯的可程式物件。預製還有子物件,用於決定塔的目標和攻擊敵人的方式。

讓我們為一級塔創建一個塔等級預製體。
  • 在 Hierarchy 視窗中,點擊 Create,然後選擇 Create > Create Empty
  • 為新的遊戲物件指定一個名稱以指示其塔類型和等級(例如,LaserTower_1)
  • 添加 TowerLevel 元件到遊戲物件
  • 將此塔等級的可程式物件拖到 Level Data 欄位
  • 添加代表塔的模型作為遊戲物件子物件(例如拖曳Models/Towers/Laser/LaserTower_BASE_L01到遊戲物件項目下方
  • 在 Prefabs/Towers中為塔建立一個資料夾
  • 將遊戲物件從 Hierarchy 視窗中拖動到新建的資料夾中,使其成為預製體
現在讓我們重複這個過程來為我們二級塔的創建數據物件。
  • 在 Hierarchy 視窗中,點擊 Create,然後選擇 Create > Create Empty
  • 為新的遊戲物件指定一個名稱以指示其塔類型和等級(例如,LaserTower_2)
  • 添加 TowerLevel 元件到遊戲物件
  • 將此塔等級的可程式物件拖到 Level Data 欄位
  • 添加代表塔的模型作為遊戲物件子物件(例如拖曳Models/Towers/Laser/LaserTower_BASE_L02到遊戲物件項目下方
  • 在 Prefabs/Towers中為塔建立一個資料夾
  • 將遊戲物件從 Hierarchy 視窗中拖動到新建的資料夾中,使其成為預製體
現在我們有了需要的塔等級數據可程式物件和塔等級預製體,我們可以創建塔遊戲物件本身。
  • 打開一個新場景
  • 創建一個空的遊戲物件
  • 將遊戲物件名稱設置為 NewTower 
  • 將 Tower元件添加到 NewT​​ower 遊戲物件
Tower 元件需要一些其他元件才能運行,因此接下來我們將添加這些組件。
  • 添加一個適當的 Collider 元件,將塔的網格封裝到 NewT​​ower 遊戲物件中
對於塔能夠確定它是否被彈體擊中,必須使用 Collider 元件。 Collider 元件還建立了一個區域,玩家可以在放置塔後可以用點擊選擇它。
  • 將 DamageCollider 元件添加到 NewT​​ower 遊戲物件


DamageCollider 元件將處理與具有 Damagers 對象的碰撞(請參閱動作遊戲框架)。

現在我們可以在 NewTower 遊戲物件上設定 Tower 元件。
  • Data/Alignments/ Player 可程式物件拖入 Alignment 欄位
  • 如有必要,設置 Target Transform 欄位
  • 設置 Levels 將項目下的 Size 欄位為所需的 TowerLevel 物件數
  • 將此塔的 TowerLevel 預製體拖動到 Element 欄位
  • 在 Tower Name 欄位輸入塔的名稱
  • 在 Dimensions 項目下設置 X 和 Y 值,以設置塔需要在放置網格上的空間大小
  • 拖曳 Prefabs/UI/HealthBar 作為 Tower GameObject 遊戲物件的子物件
塔預製體將包含塔的特定等級的所有視覺信息。塔預製體還將包含塔的變換器和發射器(如下所述)。

了解 Tower 元件

Tower 元件允許我們設置塔的所有等級別共有的數值,並設置對包含各等級數據的塔等級預製體。



設定

Max Health

塔的最大生命值。

請注意,如果塔等級預製體指定給一級塔,則此處設置的值將被該塔等級元件的 MaxHealth 值覆蓋。

Starting Health

塔的起始生命值。

請注意,如果塔等級可程式物件指定給一級塔,則此處設置的值將被塔等級可程式物件的StartingHealth 值覆蓋。

Alignment

Alignment 確定塔將射擊的潛在目標。我們通過對 SimpleAlignment 可程式物件的參照來設置。

起始工具包提供了兩個 SimpleAlignment 可程式物件:
  • 玩家 - 塔將射擊敵方單位。
  • 敵人 - 對有玩家 Alignment 的任何東西射擊。
SimpleAlignment 可程式物件是一個如何代表遊戲小隊的簡單實現。SimpleAlignment 使用其認為是敵人並可以攻擊和破壞的其他 SimpleAlignments 列表進行配置。塔防模板包括上面的兩個 Alignment ,但可以創建其他自行定義的 SimpleAlignments。

要創建更多的 Alignments ,請從 Project 視窗口中選擇 Create > Starter Kit > Simple Alignment。或者,如果我們需要更複雜的邏輯,我們可以實現我們自己的 IAlignmentProvider程式版本。

Target Transform

通常當塔或代理互相瞄準時,他們將瞄准對方 transform 的原點。Target Transform允許我們設置一個替換點。

Levels

在這裡,我們可以設置塔具有的等級數,並將塔等級預製體(下面有更多細節)與塔元件連結。

Tower Name

此欄位允許我們輸入顯示給玩家的塔名稱。

Tower Description

此欄位允許我們輸入顯示給玩家的塔簡短描述。我們可以用這個來告訴玩家塔的目的和能力。

Dimensions

在這裡,我們可以設置塔在放置網格上佔用多少空間。

Enemy Layer Mask

決定塔可以瞄準的物理層。

了解塔等級數據可程式物件



Description

這是一個短字串,當用戶選擇此類型的塔時,它將顯示在 UI 上。

Upgrade Description

用於通知使用者塔升級時會更改的內容短字符。需要注意的重要一點是,升級到此等級塔時會顯示,因此一級塔不需要。

Cost

指玩家購買或升級到這個級別塔所需的費用。

Sell

指玩家在遊戲中出售塔所得的金額。

賣出通常低於購買,但不一定得如此。請注意,在範例專案中,較高級別塔的銷售價考慮了玩家在所有塔級別上花費的累積金額。

Max Health

當塔升級到這個級別時,塔的最大生命值。

Starting Health

當塔升級到這個級別時,塔的起始生命值。

Icon

Icon 欄位可用於指定在 UI 中表示塔的精靈。有關此內容的更多信息以及它如何與每個級別的可用塔列表相關連,請參閱“ 設置舞台”章節。

了解 TowerLevel 元件



Tower Ghost Prefab

當玩家放置塔時顯示的預覽模型。

Build Effect Prefab

在建構或升級塔時,都將實例化此處分配的粒子效果預製體,以及其相關的音效。

LevelData

包含此塔等級的塔等級數據可程式物件。

沒有留言:

張貼留言