iT邦幫忙

2026 iThome 鐵人賽

DAY 27
0
Software Development

Unity進階——做一個完整的遊戲系列 第 27 篇

Day 27:洞穴場景、小怪區、Boss 房封鎖與核心護甲機制

  • 分享至 

  • xImage
  •  

Day26 完成後,主線已經正式推進到洞穴。玩家完成森林戰鬥、取得雷痕符文,回到武器匠鋪確認符文用途後,目前目標已經指向最後區域。所以 Day27 的重點不是重新介紹森林,也不是再解釋拳套與符文系統,而是正式把玩家帶進洞穴。這一天完成到 Boss 戰第一階段為止。
首先建立通往洞穴的入口場景和洞穴內部場景。接著調整洞穴中的主角比例、鏡頭與速度,讓洞穴看起來比村莊、森林和室內場景更巨大、更壓迫。然後準備 3 種洞穴小怪,並在洞穴中放置 30 隻小怪,作為 Boss 前的消耗路線。
後半段則開始建立 Boss 房規則。玩家進入 Boss 房後,藤蔓會封住回頭路。Boss 本體不建立獨立 Sprite,而是直接存在於背景圖上;實際戰鬥改成攻擊三個核心護甲。玩家踩到 Boss 對話觸發器後,主角會自動跑到 dialogmark,面向上方 Boss,播放開戰前對話。對話結束後,右上角顯示 Boss 血條,三個核心護甲會隨機亮起一個,玩家必須依序打碎護甲、攻擊核心,才能扣 Boss 血。

Day27 先停在「Boss 血條與核心護甲機制」完成。Boss 主動攻擊、藤蔓技能、範圍拍擊或左右掃擊,會留到下一天。

https://ithelp.ithome.com.tw/upload/images/20260925/2017837379Uo4tocKu.png

Day26 結束後,任務目標已經推進到洞穴。因此 Day27 先建立 ToCaveScene,讓玩家不是直接被丟進 Boss 地圖,而是先經過一個通往洞穴的過渡場景。
這個場景負責營造「即將進入最終區域」的氣氛,也讓村莊、森林與洞穴之間的場景流程更完整。
截圖時,Scene 視窗要拍到洞穴入口背景、主角、入口道路,以及周圍岩壁或地形。Hierarchy 建議拍到 Player、Main Camera、入口背景物件與轉場點。Inspector 可以選取洞穴入口背景物件,截到 Transform 與 SpriteRenderer。

這裡的重點是先放好完整背景,再確認主角站位和鏡頭能拍到洞口。文章可以寫成:先建立洞穴入口作為最終區域的前哨,讓玩家從外部世界逐步進入洞穴深處。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373hzoNb8VuMq.png

接著建立 CaveScene。
洞穴內部不再用 Tilemap 一格一格拼,而是使用完整 2D 背景圖。這張背景圖直接包含三個區域:前段探索區、中段通往 Boss 房的道路,以及最上方的 Boss 房。這樣做的好處是畫面風格更統一,也能讓 Boss 房的巨大背景和洞穴牆面一次成形。

截圖時選取洞穴背景物件。Scene 視窗要拍到完整洞穴地圖,包含一般探索區、通往 Boss 房的通道和 Boss 房。Inspector 要截到背景物件的 Transform、SpriteRenderer 和 Sorting Order。如果畫面太大,可以先截一張縮遠的 Scene 視窗,再補一張 Game 視窗確認實際遊戲視角。

這裡要說清楚:背景圖只負責視覺,真正的可通行範圍仍然要靠 Unity 裡的 Collider 來限制。
也就是說,先把洞穴畫面搭起來,再用碰撞箱把玩家能走的路線框出來。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373lVwCfCJD53.png

完整背景圖不能直接阻擋玩家。如果不加碰撞箱,主角會直接穿過岩壁或走出地圖。所以這一步要沿著洞穴牆壁、石塊、道路兩側與 Boss 房邊界補上碰撞箱。

截圖時可以選取洞穴碰撞根物件,或任一代表性碰撞箱。Scene 視窗要能看到多個綠色 Collider 沿著洞穴牆壁、岩石和道路邊界鋪設。Inspector 建議截到 BoxCollider2D 或 PolygonCollider2D,並確認它不是 Trigger。
如果手動鋪了很多碰撞箱,可以先截總覽,再補一張局部細節,例如 Boss 房入口或狹窄通道。

洞穴碰撞箱的重點不是塞滿整張圖,而是讓玩家只能走在設計好的道路上。尤其是通往 Boss 房的唯一道路,需要用碰撞箱把玩家導向正確位置。後續藤蔓封路和 Boss 觸發器才會有意義。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373OrjQ7OLuMW.png

洞穴要和村莊、武器匠鋪、主角家形成差異。
這裡把主角比例調小,讓洞穴背景看起來更巨大。同時調整鏡頭高度和跟隨效果,避免玩家只看到自己腳邊一小塊地圖。另外,洞穴中主角移動速度也比一般場景慢一些。

截圖時進入 Play Mode,場景使用 CaveScene,畫面要能看出主角比例較小、洞穴空間很大。可以補截 Inspector 中 Player 的 Transform Scale,也可以補截 Main Camera 的 Orthographic Size 或 Camera Follow 設定。這一步不是單純調數值,而是在調玩家感受。主角變小、鏡頭拉高、移動變慢,整個洞穴就會更像最終區域。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373QgYXEdbWHX.png

洞穴不能只沿用森林怪物,所以新增 3 種洞穴小怪:
cave_crystal_slime.png
cave_stone_beetle.png
cave_root_imp.png
這三種小怪放在:
Assets/Game/Generated/Day27/Monsters
它們的色調和外形更接近岩石、晶體與根系,讓玩家感覺自己進入新的危險區域,而不是森林怪物出差到洞穴。
截圖時打開 Project 視窗,拍到這三張 PNG。這裡不用花太多篇幅重新講影像生成流程,只要說明洞穴需要自己的怪物風格。森林怪物適合森林,洞穴怪物適合洞穴

https://ithelp.ithome.com.tw/upload/images/20260925/20178373eMtDXzQp7j.png

接著執行:
IronRPG > Day 27 > Create Cave Small Monster Prefabs Only
這一步會把 3 張小怪圖做成 Prefab。執行後,Project 視窗打開:
Assets/Game/Generated/Day27/Monsters/Prefabs
可以看到三個 Prefab:
CaveCrystalSlime
CaveStoneBeetle
CaveRootImp
每個 Prefab 會沿用森林小怪已經建立好的基本戰鬥架構,例如血量、追擊、接觸傷害、視覺動畫與掉落系統。
這裡不重新解釋小怪腳本。Day25 已經講過小怪血量、追擊、接觸傷害、掉落和動畫;Day27 只需要說明洞穴怪物使用同一套敵人基礎系統,但數值調整成後期版本。這一步只建立 Prefab,不把小怪放進場景。這樣素材整理和場景擺放可以分開處理,後面如果要調整洞穴小怪位置,也不會每次都重新做素材。

https://ithelp.ithome.com.tw/upload/images/20260925/201783733uqFYblQjH.png

Prefab 建好後,執行:
IronRPG > Day 27 > Place 30 Cave Small Monsters
在 CaveScene 中會建立 CaveSmallMonsters 群組,並放置 30 隻洞穴小怪。
洞穴是最終 Boss 前的消耗路線,所以小怪數量比森林更密集。這裡把 30 隻小怪分布在洞穴探索區和通往 Boss 房的路上,形成一段真正需要玩家推進的戰鬥路線。

截圖時選取 CaveSmallMonsters。Hierarchy 要截到 30 隻洞穴小怪,Scene 視窗要截到怪物分布。畫面最好能看出小怪不是集中堆在一個點,而是分散在通道、轉角和空地附近。
文章可以寫成:玩家不是走幾步就進 Boss 房,而是必須先通過洞穴小怪區,消耗藥草、獲得經驗與金幣,才抵達最終戰場。這樣洞穴才有「最終區域前段」的功能。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373flPIa8yOEi.png

接著執行:
IronRPG > Day 27 > Update Cave Small Monster Stats Only
這個工具只更新既有 CaveSmallMonsters 的數值,不移動小怪位置,不修改小怪比例。這很重要,因為一旦手動調整完怪物位置,就不希望工具重跑後把場景洗掉。
選取任一洞穴小怪,Inspector :
EnemyHealth
EnemyContactDamage
EnemyLootDrop
數值重點是:
血量:1200
經驗:40
金幣:15 到 22
藥草:必定掉落 1 株
傷害:高於森林小怪
洞穴小怪是後期敵人,血量和獎勵都比森林小怪高。玩家打死一隻洞穴小怪會獲得 40 點經驗、15 到 22 枚金幣,並必定掉落 1 株藥草。這讓洞穴既危險,也能成為 Boss 前最後補給來源。
小怪程式本身沿用 Day25 已經介紹過的敵人架構,Day27 只需要強調參數差異:血量提高、經驗提高、金幣提高、傷害提高,並加入必掉藥草。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373N34RCbAS9h.png

玩家進入 Boss 房後,回頭路會被藤蔓封住。
場景中有兩個關鍵物件:
BossRoomReturnBlockVines
BossRoomEntrySealTrigger
BossRoomReturnBlockVines 是封路藤蔓,放在 Boss 房入口回頭路上。它要剛好堵住玩家退回洞穴小怪區的通道。Inspector 要截到藤蔓物件的 SpriteRenderer 與 BoxCollider2D。
BossRoomEntrySealTrigger 是玩家進入 Boss 房後會踩到的 Trigger。Scene 視窗要截到它的位置,Inspector 要截到 BoxCollider2D 勾選 Is Trigger。
這不是單純裝飾,而是戰鬥場地封鎖。玩家一旦走進 Boss 房,就不能再退回小怪區慢慢拖時間,也不能用離開 Boss 房的方式重置戰鬥。

這裡的擺放重點是:藤蔓要放在唯一回頭路上,碰撞箱要確實覆蓋通道;觸發器則要放在玩家進入 Boss 房後一定會踩到的位置,但不能太早觸發,否則玩家還沒看清 Boss 房就被封路。封路這種事很殘酷,但 Boss 房需要這種殘酷。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373meQOrSFKVb.png

Boss 本體已經畫在背景上,所以不用再建立一個會移動的 Boss Sprite。
戰鬥規則改成攻擊 Boss 房中的三個核心護甲:
CoreStoneArmor_01
CoreStoneArmor_02
CoreStoneArmor_03
這三個物件放在 BossRoomSealAndCoreArmor 底下。Scene 視窗要截到三個護甲分布在 Boss 房上半部,而且彼此有明顯間距。Inspector 建議選取其中一個 CoreStoneArmor,截到 SpriteRenderer、BoxCollider2D、BossCoreNode。

護甲的定位是「Boss 弱點的外殼」。護甲存在時,核心碰撞箱不啟用;護甲被打碎後,核心才短暫暴露。
這樣玩家不是站在原地一直打 Boss,而是要跟著高亮提示去攻擊正確護甲。三個護甲的位置要分開,不能疊在一起,玩家才需要在 Boss 房裡移動並判斷當前目標。Boss 是背景圖,互動點是核心護甲。這種做法適合大型場景 Boss。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373pRNnoXaF8z.png

Boss 開場不是玩家靠近後直接彈對話。玩家踩到 BossIntroDialogueTrigger 後,主角會自動跑到 dialogmark,站在 Boss 房下半部,面向上方 Boss,然後才開始對話。
這裡要特別截出 dialogmark 的位置。它不是隨便放的 Marker,而是用來決定主角進入 Boss 戰前的站位。主角站在畫面下方,Boss 位於畫面上方,玩家才能同時看到自己的角色、Boss 位置和後續出招方向。

實作邏輯是:玩家先踩到 BossIntroDialogueTrigger,系統立刻鎖住玩家手動操作,暫停敵人,然後讀取 dialogmark 的 Transform 位置。接著主角不是瞬間傳送過去,而是用腳本控制移動方向,自動跑到 dialogmark。到達指定位置後,角色停止移動並轉向上方,Boss 開場對話才正式開始。
這樣畫面構圖會更像正式 Boss 戰開場,而不是普通 NPC 對話。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373X6b2IBo68S.png

進入 Play Mode 測試。
主角踩到 BossIntroDialogueTrigger 後,會自動往 dialogmark 移動。截圖可以拍主角正在往 dialogmark 移動,也可以拍主角已經站到 dialogmark 並面向 Boss 的畫面。
這一步讓 Boss 對話有演出感。玩家不是隨便站在觸發器邊緣對話,而是被移動到固定位置,鏡頭也會往上偏移,讓 Boss 房上半部能出現在畫面中。
這裡不是一般 NPC 對話,而是先把主角帶到 Boss 戰的演出位置,避免玩家站在角落觸發對話,導致畫面看不到 Boss。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373izX1gAdoJ8.png

主角站在 dialogmark 後,畫面會出現 Boss 對話框。
建議截圖內容可以是:
Boss:那枚符文……竟又回到人類手中。
主角:你認得雷痕符文。
也可以截 Boss 提到先祖、雷痕符文、精英怪拔走壓制符文的內容。

這段對話承接 Day25 與 Day26 的雷痕符文主線。Boss 認得雷痕符文,也知道它曾經被用來壓制自己。這讓最終 Boss 不是突然出現的敵人,而是前面森林與武器匠線索的收束。這裡要避免寫回「傳說武器」或「雷痕之刃」。現在的設定是拳套與雷痕符文。主角不是拿劍來挑戰 Boss,而是用精英拳套承載雷痕符文,把雷電導入拳擊。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373D9E85yp9rw.png

Boss 對話結束後,右上角會出現棕色 Boss 血條:
洞穴古樹
15000 / 15000
Boss 血條不會在進洞穴時提前出現,而是在 Boss 對話結束後才顯示。這代表 Boss 戰正式開始。
血條放在右上角,避免和左上角的玩家 HP、任務與操作提示擠在一起。
這個時間點很重要。
對話之前是劇情演出,對話之後才是戰鬥開始。Boss 血條的出現,就是玩家知道「現在可以打了」的訊號。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373fgycd1LEUB.png

Boss 對話結束後,三個護甲中會隨機亮起一個。
Boss 不會讓三個核心同時暴露。每次只會隨機亮起一個護甲,提示玩家目前該攻擊哪個位置。
截圖時要拍到三個護甲中有一個呈現高亮或閃爍。打錯護甲會出現沒有反應的提示。
這是 Boss 核心戰的第一個規則:不是哪裡都能打,而是要先找出目前亮起的護甲。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373wSkhgp3lIW.png

亮起的護甲需要被攻擊 5 下才會碎裂。
玩家攻擊亮起護甲時,畫面會顯示:
護甲出現裂痕,還需要 x 下。
第 5 下後會顯示:
護甲碎裂,核心暴露。
護甲碎裂前,核心碰撞箱不啟用,所以玩家不能直接跳過護甲打核心。
這裡的重點是「先破護甲,再打核心」。
Boss 戰不是單純扣血,而是先打破弱點外層,再抓短暫窗口輸出核心。
這也呼應雷痕符文的設定。Boss 身上有古老魔甲,玩家需要雷痕符文才能真正打穿。護甲與核心機制,就是把「破防」這件事做成可操作的流程。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373MXJ77eaOkn.png

護甲碎裂後,核心碰撞箱啟用。玩家攻擊核心時,才會真正扣 Boss 血。
截圖要拍到核心可被攻擊、右上角 Boss 血量下降,以及訊息顯示核心受創與造成傷害。
核心被攻擊時,傷害會讀取玩家目前拳套與符文總傷害,並套用雷痕符文對 Boss 增傷 300%。因此雷痕符文不是普通高傷害道具,而是 Boss 戰的關鍵。
這裡正式把 Day26 的詞條接進戰鬥:雷痕符文對 Boss 增傷 300%。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373ezTV3WUp9U.png

核心不是打開後一直暴露。
同一個核心被攻擊 2 次後,護甲會重新生長,核心碰撞箱再次關閉。系統會再隨機亮起下一個護甲。
截圖要拍到:
護甲重新顯示。
另一個護甲重新高亮。
訊息顯示 護甲重新生長。
這樣 Boss 戰循環就完成了:
隨機亮起護甲。
玩家攻擊亮起護甲 5 下。
護甲碎裂,核心暴露。
玩家攻擊核心 2 次。
護甲重新生長。
系統重新抽選下一個護甲。
玩家必須反覆打碎護甲、攻擊核心,直到 Boss 血量歸零。
Day27 到這裡先完成 Boss 第一階段規則。下一天再把 Boss 主動攻擊接進來。現在的 Boss 已經有血條和弱點循環,但還不會主動反擊。也就是說,它目前比較像一個很有尊嚴的大型打靶系統,還差一點才算真正會殺人的 Boss。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373GDSII9BNSK.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/20178373M69jTl8PrS.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/201783732gX7qBtrMF.png

Day27CaveMonsterPrefabBuilder.cs 集中管理 Day27 會用到的場景、素材資料夾與重要數值。
這裡可以截第 9 到 21 行,顯示洞穴場景路徑、小怪資料夾、Boss 素材路徑、小怪血量與掉落數值。
第 76 到 80 行是三種洞穴小怪資料。
第 117 到 122 行是三個核心護甲位置。
這裡集中管理 Day27 會用到的場景、素材資料夾與重要數值。小怪數值只需要在文章中簡單說明:血量 1200、經驗 40、金幣 15 到 22,並且必掉 1 株藥草。
CoreArmorPositions 是三個 Boss 護甲在場景中的預設位置,後續 Boss 核心機制會依照這三個位置建立。
這一段不用把小怪追擊、掉落、血條全部重新講一次。Day25 已經講過。Day27 的重點是:小怪沿用既有戰鬥架構,但在洞穴中改成後期數值。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373vRYT1RSCZI.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/20178373VHE8km9ntJ.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/201783731plYprzCLq.png

這一段說明洞穴小怪 Prefab 建立、30 隻小怪放置,以及數值更新。
可以截第 124 到 173 行,顯示建立小怪 Prefab 與放置 30 隻小怪的工具入口。
再截第 551 到 600 行,顯示洞穴小怪血量、經驗、追擊、傷害、金幣與藥草掉落設定。
CreateCaveSmallMonsterPrefabsOnly() 只做 Prefab,不放怪,方便先整理素材。
PlaceThirtyCaveSmallMonsters() 把 30 隻小怪放到 CaveSmallMonsters 群組。
Update Cave Small Monster Stats Only 只更新數值,不移動已經手調好的怪物位置。
洞穴小怪相對森林小怪的差異是:血量更高、經驗更多、金幣更多、傷害更高,而且必掉藥草。
文章可以一句帶過:洞穴小怪沿用 Day25 已完成的小怪戰鬥系統,本日只把數值調整成後期版本,讓洞穴成為 Boss 前的高壓戰鬥區。

https://ithelp.ithome.com.tw/upload/images/20260925/201783733ncPdoH0Ej.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/20178373DFYeNCea98.png

BossRoomVineSealTrigger.cs 負責 Boss 房入口封鎖。
這裡可以截第 5 到 17 行,顯示指定藤蔓物件,並在一開始隱藏。
第 20 到 32 行則是玩家進入 Trigger 後啟用藤蔓並關閉觸發器。
開場時藤蔓隱藏。玩家踩到 Boss 房入口 Trigger 後,藤蔓顯示,並用碰撞箱封住回頭路。觸發一次後腳本關閉,避免重複啟用。Boss 房入口不是單純傳送點,而是戰鬥場地封鎖。玩家走進 Boss 房後,藤蔓長出來堵住退路,製造「已經進入最終戰」的壓力。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373JZFT2qcPye.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/20178373YduGnrNi9M.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/20178373S9r9M1KOoy.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/201783733ctntJXWjs.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/20178373dQOMqyvZVx.png

BossIntroDialogueTrigger.cs 是 Boss 開場演出的核心。
這裡可以截第 9 到 21 行,顯示 Boss 對話完成事件、移動速度、鏡頭偏移與任務目標。
第 31 到 70 行是 Boss 與主角對話內容。
第 149 到 202 行是踩到 Trigger 後暫停敵人、鎖住輸入、自動跑到 dialogmark。
第 227 到 249 行則是對話完成後恢復玩家控制,並發出 Boss 戰啟動事件。
玩家踩到 Boss 對話 Trigger 後,系統會暫停敵人、鎖住玩家操作,並讓主角自動跑到 dialogmark。
自動移動不是瞬間傳送,而是每幀計算主角目前位置和 dialogmark 的距離,再用 MoveTowards 往目標點靠近。移動過程會呼叫:
SetScriptedMoveInput(direction, true)
所以角色會按照移動方向播放跑步狀態,看起來像主角自己跑到定位點。
主角到達後會面向上方 Boss,開始播放對話。對話完成後發出:
BossIntroCompleted
Boss 血條與核心戰鬥會等這個事件才啟動。
這段的重點是「演出」。主角不是站在任意位置對話,也不是被硬傳送到 Boss 面前,而是由腳本接管移動,自動跑到 Boss 房下半部固定位置,面向上方 Boss。這讓 Boss 開場更像正式戰鬥,而不是普通 NPC 對話。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373UFKcx4NkQ3.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/20178373AcbfIvCN6r.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/20178373tntoVA8VJT.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/201783736YUJtQeJey.png

BossCoreBattleController.cs 負責 Boss 血量、血條與核心戰啟動。
這裡可以截第 6 到 12 行,顯示 Boss 血量、護甲打碎次數、核心重生次數與血條顏色。
第 32 到 58 行是等待 Boss 對話完成後啟動戰鬥。
第 189 到 239 行則是右上角棕色 Boss 血條 UI。
Boss 血量設定為 15000。
OnEnable() 監聽 BossIntroCompleted,所以 Boss 對話沒結束前不會顯示血條。
ActivateBattle() 啟動戰鬥後,右上角才出現棕色 Boss 血條。血條會顯示 Boss 名稱和即時血量,例如:
洞穴古樹 15000 / 15000
Boss 血條不應該一進洞穴就出現,而是要等開場對話結束才顯示。這個事件讓「劇情演出」和「戰鬥開始」有清楚分界。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373j0iJEcFIwN.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/20178373RpJwnqWRoJ.png

Boss 核心戰的主要規則是:三個護甲不會同時可打,而是每次隨機亮起一個。
這裡可以截 BossCoreBattleController.cs 第 122 到 139 行,顯示 HighlightRandomArmor() 隨機選擇亮起的護甲。
第 141 到 163 行則是 GetAvailableArmorNodes() 取得目前還有護甲存在的節點。
GetAvailableArmorNodes() 會先把三個核心節點中「護甲還沒碎」的節點整理成候選清單。
接著使用:
Random.Range(0, candidates.Length)
從候選清單中抽出一個。
抽到的節點會被記錄成 highlightedNode。之後迴圈呼叫每個節點的 SetHighlighted(),只有被抽中的護甲會亮起,其他護甲恢復普通狀態。這讓 Boss 戰多了一點判斷與走位。玩家要觀察哪個護甲亮起,再移動過去攻擊,而不是站在原地一直按攻擊。

https://ithelp.ithome.com.tw/upload/images/20260925/201783731WMgF74SGe.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/20178373mRGTD9gtV6.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/20178373gK9ShBt6QH.png

BossCoreNode.cs 負責單個護甲的狀態。
這裡可以截第 6 到 11 行,顯示護甲 SpriteRenderer、Collider、核心物件、核心 Collider 和高亮顏色。
第 48 到 57 行是高亮時用 Mathf.Sin(Time.time * 8f) 做顏色脈衝。
第 81 到 90 行則是 SetHighlighted() 切換護甲是否高亮。
每個護甲都有自己的 BossCoreNode。
高亮不是換 Sprite,而是改變 SpriteRenderer.color。
SetHighlighted(true) 會先把護甲改成金黃色。
Update() 裡用 Sin 波讓顏色在原色和高亮色之間脈衝,看起來像閃爍。
這樣不需要另外做高亮動畫素材,也能讓玩家知道目前要攻擊哪個護甲。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373KPeLhl18NL.pngundefinedhttps://ithelp.ithome.com.tw/upload/images/20260925/20178373ee0UnyLPIh.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/20178373q49CZtP7c6.png

這一段處理 Boss 核心戰最重要的狀態切換。
可以截 BossCoreNode.cs 第 106 到 155 行,顯示記錄護甲被打幾下,滿 5 下後隱藏護甲、啟用核心。
第 157 到 190 行則是核心被打 2 次後護甲重生,核心碰撞箱關閉。
只有被高亮的護甲會計算命中次數。
護甲被打 5 下後,護甲圖片和護甲 Collider 關閉。
護甲關閉後,核心物件和核心 Collider 啟用。
核心被攻擊 2 次後,護甲重新顯示,核心再次隱藏。
核心不是一開始就能打。玩家必須先照著高亮提示打碎護甲,核心才會短暫暴露。這讓 Boss 戰形成:
找亮點。
破護甲。
打核心。
護甲重生。
這個循環就是 Day27 Boss 戰第一階段的核心。

https://ithelp.ithome.com.tw/upload/images/20260925/201783733l1X5jzyr8.png

核心被攻擊時,才會真正扣 Boss 血。
這裡可以截 BossCoreBattleController.cs 第 85 到 120 行,顯示核心被攻擊後扣 Boss 血,並計算雷痕符文增傷。
傷害流程是先讀取玩家目前拳套和符文總傷害。
如果玩家裝備雷痕符文,GetBossDamageBonusPercent() 會回傳 300。
實際 Boss 傷害是:
baseDamage * 4
也就是原傷害加上對 Boss 增傷 300%。
Boss 血量歸零後,任務目標更新為 Boss 已被擊敗。
這裡把 Day26 的雷痕符文詞條真正接到 Boss 戰。雷痕符文不是只在背包裡顯示漂亮文字,而是在 Boss 核心受傷時提供 300% 增傷。

https://ithelp.ithome.com.tw/upload/images/20260925/20178373D7Aw6ciBYt.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/20178373e03Ok8ccF0.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/20178373J29J6sL8tO.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/20178373U0f3cy0IBF.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/20178373fUFGqqSths.pnghttps://ithelp.ithome.com.tw/upload/images/20260925/20178373leH8NHcmtD.png

玩家仍然只按 J 攻擊,不需要 Boss 專用按鍵。
這裡可以截 PlayerAttack.cs 第 110 到 119 行,顯示讀取目前拳套符文傷害,建立攻擊範圍,準備記錄 Boss 命中。
第 120 到 145 行是如果命中的不是一般敵人,就檢查是否有 IBossDamageReceiver。
第 147 到 157 行保留一般小怪的 EnemyHealth 流程。
第 159 到 165 行則是 Boss 命中優先顯示 Boss 訊息,否則顯示普通命中或揮空。
如果攻擊命中一般小怪,就走原本 EnemyHealth 扣血流程。
如果攻擊命中 Boss 護甲或核心,就交給 IBossDamageReceiver 處理。
這樣 Boss 部位不用假裝成小怪,也不會觸發小怪掉落、經驗或死亡刪除邏輯。同一套拳擊操作延伸到 Boss 戰,是比較好的做法。

Day27 結束時的狀態
Day27 完成後,目前專案達成以下狀態。
ToCaveScene 與 CaveScene 已建立。
洞穴背景圖已放入場景。
洞穴牆壁與道路邊界已經有碰撞箱。
洞穴中主角比例較小,移動速度較慢,讓洞穴比例更大。
3 種洞穴小怪已生成並做成 Prefab。
洞穴中放置 30 隻小怪。
洞穴小怪血量 1200。
洞穴小怪死亡給 40 經驗。
洞穴小怪掉落 15 到 22 金幣。
洞穴小怪必定掉落 1 株藥草。
玩家進入 Boss 房後,藤蔓封住回頭路。
Boss 本體不建立獨立物件,Boss 直接存在於背景圖中。
Boss 房有三個核心護甲。
玩家踩到 Boss 對話觸發器後,會自動跑到 dialogmark 並面向 Boss。
Boss 對話完成後,右上角顯示棕色 Boss 血條。
Boss 血量是 15000。
雷痕符文對 Boss 套用增傷 300%。
三個護甲會隨機亮起一個。
亮起護甲被打 5 下後隱藏,核心碰撞箱啟用。
核心被攻擊 2 次後,護甲重新長出並重新抽選下一個亮起護甲。
Day27 到這裡先結束。
下一步應該開始做 Boss 主動攻擊,例如藤蔓直線刺擊、範圍拍擊或左右掃擊。核心護甲與血條已經準備好,後續只要把 Boss 攻擊節奏接進這個 Boss 房流程即可。
目前 Boss 戰已經有場地、封路、開場、血條、護甲、核心和雷痕符文增傷。下一天要做的是讓 Boss 真的開始攻擊玩家。


上一篇
Day 26:主角升級、死亡重生、藥草與雷痕符文回報
下一篇
Day 28:Boss 攻擊、洞穴進出口與戰後離場流程
系列文
Unity進階——做一個完整的遊戲 共 29 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言