2019年3月13日 星期三

Unity教程--塔防模板--瞄準和發射

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

介紹

前面的部分提供了有關如何創建代理和塔的說明,但沒有介紹如何實際讓它們相互射擊。這在很大程度上是因為敵人和塔都需要相同的元件和過程。我們將以下介紹這些內容。



創造射彈

在讓代理和塔有能力射擊之前,我們需要製造射彈以便他們互相射擊。他們所造成的傷害量是射彈的屬性,而不是塔或代理本身。
  • 創建一個空的遊戲物件,並為其命名,用塔/代理類型,單字 projectile,(如果合適)以及它將與之關聯的級別(例如,LaserTowerProjectile_1)
  • 將 Damager 元件添加到新的 Projectile 物件中
  • 設置 Damage 欄位以指示應從射彈擊中的塔或代理中移除的生命值
  • 如果射彈用於塔,則將 Player SimpleAlignment 可程式物件拖到 Alignment 欄位。如果是代理,請將 Enemy SimpleAlignment 可程式物件拖到 Alignment 欄位
進一步的步驟取決於創造什麼樣的射彈。對於不依賴彈道或碰撞檢測的 hitscan 射彈:
  • 將一個 HitscanAttack 元件添加到 Projectile 遊戲物件。
  • 將 Delay 欄位設置為所需的秒數。
對於諸如火箭之類的射彈,我們檢查它是否跟其它與物體發生碰撞來決定傷害:
  • 將一個 BallisticProjectile 元件添加到 Projectile 遊戲物件中
  • 將 RigidBody 和 CapsuleCollider 元件添加到 Projectile 遊戲物件,以確保可以檢測到射彈與環境之間的碰撞
  • 添加一個 ContactDestroyer 元件,它會在碰撞後摧毀射彈
如果射彈意圖在更大的半徑範圍內造成傷害,請執行以下步驟:
  • 將 SplashDamager 元件添加到 Projectile 遊戲物件
  • 在 Attack Range欄位中設置效果區域的所需半徑
  • 將 Damage Amount 欄位的值設置為未被射彈直接擊中的代理/塔樓造成的傷害量
添加定位到塔

以下步驟指定塔和代理當目標。入門套件塔上的 AttackAffector 元件附加在單獨的子遊戲物件,而代理的元件是附加到 Agent 預設體本身。這純粹是組織差異,並不會改變 AttackAffector 的運作方式。
  • 創建 Tower 等級 / Agent 預設體的空子遊戲物件,並將其命名為 Affector。此物件將確保塔和代理可以互相射擊
  • 將適當的 Launcher 元件添加到 Affector 遊戲物件
  • 將 AttackAffector 元件添加到 Affector 遊戲物件
  • 將射彈預製體拖入 Projectile 欄位
  • 添加一個射彈點作為塔/代理發射射彈的位置
  • 設置 Tower 等級 / Agent 的射速
  • 創建 Tower 等級 / Agent 預設體 的空子遊戲物件,並將其命名為 Targetter。將 Targetter 元件加到於遊戲物件。此對象將確保塔能夠找到要攻擊的代理
  • 將塔等級的砲塔 Transform 拖動到 Turret 欄位。設置為砲塔的物件將瞄準代理
  • 設置塔等級的搜索速率
  • 將塔等級的對撞機 ( Targetter Collider ) 設置為球體或膠囊
  • 設置 Radius 和  Vertical Range 欄位
  • 在 Hierarchy視窗口中選擇 Affector 遊戲物件,然後將 Targetter 遊戲物件拖到AttackAffector 元件的 Tower Targetter 欄位
  • 將更改應用於塔預製體
上述步驟將確保代理可以朝阻止其通往玩家基地的塔開火。為了使代理能夠傷害基地,請執行以下步驟
  • 將 HomeBaseAttacker 元件添加到 Agent 預設體
  • 設置代理在到達基地後在攻擊之前應充電的秒數
了解 Launcher 元件

塔防模板中有許多發射器。

BallisticLauncher



BallisticLauncher 使用物理學計算彈丸的軌跡並發射彈道彈丸。有關彈道彈丸的更多信息可以在遊戲活動參考說明中找到。

Fire Particle System

當塔使用此發射器發射時播放的粒子效果。

Hitscan Launcher



HitscanLauncher 會立即將 HitscanAttack 放置在目標上。然後 HitscanAttack(可選延遲)會傷害目標。

Fire Particle System

當塔使用此發射器發射時播放的粒子效果。

Super Tower Launcher



Super Tower 出現在範例專案中,它會在一定時間後自動銷毀。

Fire Particle System

當塔使用此發射器發射時播放的粒子效果。

Tower Life Span

Super Tower  自毀前的秒數。包含此欄位是為了防止強大的超級塔在遊戲中時間太長。

Fire Vector X Rotation

FireVectorXRotationAdjustment 表示 SuperTower 的砲塔根據 SuperTower 的射彈方向旋轉的量(參見遊戲活動參考說明的 WobblingHomingProjectile)。

Death()

SuperTower 用於破壞自身的功能允許設定 Super Tower 自毀功能。例如,這讓我們防止超級塔自殺。

了解 AttackAffector 元件



AttackAffector 元件允許塔或代理相互攻擊。

Projectile

當此 AttackAffector 射擊目標時產生的預製體。射彈的具體類型取決於 Launcher 元件。

Projectile Points

變換列表。將變換添加到此列表時,射彈可能會在該變換的位置產生。這對於有多個砲塔的塔或敵人非常有用。

Is Multi Attack 

如果勾選,則 AttackAffector 將能夠在範圍內找到多個目標。如果未勾選,則 Affector 將一次瞄準一個敵人,直到敵人被摧毀或移出範圍。

Fire Rate

這可以控制 AttackAffector 告訴 Launcher 發射射彈的頻率。

Random Audio Source

AudioSources列表。每次 AttackAffector 觸發時都會隨機播放。

Tower Targetter

對包含 Targetter 元件的此塔等級的預製體參照 。

Targetter 持續記錄範圍內的目標數量,特別是距離目標中心最近的目標。對於反饋,它還控制砲塔模型,它是塔等級預製體的子物件,並將其對準最近的目標,以便告訴玩家那是最接近的目標。

Radius Effect Color

這會改變範圍可視化器的顏色,以顯示塔可以射擊的距離。

了解 Targetter 元件



Turret

連接到該塔等級預製體上的砲塔模型。

Turret X Rotation Range

以度為單位的值,用於確定塔可以向上和向下查看的範圍。

Only Y Turret Rotation

塔是否可繞X軸旋轉。

Search Rate

Targetter 的 SearchRate 決定選擇新的最近目標的頻率。

Idle Rotation Speed

當塔沒有射擊目標時,塔的旋轉速度有多快。

Idle Correction Time

在失去目標之後塔將返回其待機位置以秒為單位的時間。

Idle Wait Time

在失去目標之前,塔將再次開始空轉之前以秒為單位等待的時間。

Attached Collider

下面提到的 Targetter Collider 的說明。使用 Targetter Collider 欄位時會自動設置此項。

Targetter Collider Configuration

Targetter 的搜索體可以是膠囊或球體。當搜索體是球體時,可以設定半徑。當搜索體是膠囊時,膠囊的垂直範圍也可以設定。

Targetter Collider

Targetter 的搜索體是膠囊還是球體。

Radius

Targetter 的標準 Unity 單位射擊範圍。

Vertical Range

塔能夠在朝上方或下方射擊範圍。

了解 HomeBaseAttacker 元件

Home Base Attack Charge Time

這定義了代理到達關卡中最終點後到傷害玩家基地生命值之間的時間量(以秒為單位)。

沒有留言:

張貼留言