前一天我完成了主角家與村莊之間的雙向轉場,讓玩家可以從 VillageScene 進入 PlayerHouseInteriorScene,也可以從主角家回到村莊。這代表第一個可進入建築已經完成,接下來就可以把同樣的流程套用到其他重要建築上。
Day 18 的目標是建立第二個可進入建築:村長家。
村長家之後會是主線劇情的重要地點,玩家會在這裡找到村長,接取任務,推進故事。
一開始,我原本考慮直接使用主角家室內場景作為原型,再複製出 ChiefHouseInteriorScene。不過實際規劃後發現,村長家應該比主角家更大,也應該更像一個可以接待村民或討論事情的場所。如果只是複製主角家的小房間,會顯得不太符合村長家的定位。
因此 Day 18 改成使用 Tavern_01.png 中切出的較大型室內圖作為村長家原型。這張圖原本來自酒館參考素材,但其中有長桌、餐桌、火把和較大的公共空間感,很適合改造成村長家或村莊集會廳。

我從 Tavern_01.png 中手動切出一塊較大的室內區域,命名為 Tavern_01_2。這個區域比前一天主角家的房間大很多,也更適合承載村長家這種重要建築。
不過這張切出的圖有一個明顯問題:左上角有一塊黑色空白區。這不是 Unity 錯誤,而是因為這張圖是從 Tavern mockup 中裁切出來的局部區域,原本就不是完整矩形房間。
因此在文章中不把它當成失敗,而是把它視為「素材邊界外的不可通行區域」。後面透過碰撞箱把玩家限制在可走範圍內即可。
接著,我將這張大型室內圖放入新建立的 ChiefHouseInteriorScene,作為村長家室內原型。

把 Tavern_01_2 放進場景後,村長家的室內雛形就完成了。這個場景目前先作為原型使用,之後可以再依照劇情需求加入村長 NPC、對話點、任務提示或其他裝飾。
從畫面上可以看出,這個室內空間比主角家更寬,也有較多桌椅與裝飾,適合作為村長接待玩家的地方。雖然素材原本來自酒館,但在 RPG 製作中,只要用途合理,將素材重新定義成村長家內部也是可行的。
接下來要處理的是碰撞。
和主角家一樣,這張大型室內圖本質上只是一張圖片,Unity 不會自動知道哪裡是牆、哪裡是桌子、哪裡不能走。如果不加碰撞,玩家就可以直接穿過桌子、走進火把,甚至走到左上角的黑色區域,所以我建立了 ChiefHouseCollision 分組,專門管理村長家室內的碰撞箱。

ChiefHouseCollision 是一個空物件,底下放置多個碰撞箱物件。這樣做的好處是,所有室內碰撞都可以集中管理,不會散落在 Hierarchy 裡。之後如果要調整牆壁、家具或火把的碰撞範圍,就可以直接展開這個分組處理。
接著,我開始為室內主要不可通行區域建立 BoxCollider2D。
碰撞箱包含四周牆面、左上角黑色空白區、桌子、長桌、廚房家具和火把等物件。

這一步的重點不是一次把碰撞箱做得完全精準,而是先把主要不能通行的區域框出來。
左上角黑色區域被設定成不可通行,避免玩家走進素材邊界外。桌子、長桌和其他家具也都加上碰撞箱,讓玩家不會直接穿過室內物件。
在實作過程中,碰撞箱一開始曾經出現位置偏移的問題。原因是物件座標與圖片實際顯示範圍並不完全一致,如果直接用 Transform 位置推算,就可能導致整批 Collider 跑到錯誤位置。後來改成依照 Sprite 的實際可見邊界調整,才讓碰撞箱回到正確區域。這段不需要當成文章主圖,但可以保留成開發經驗:使用大型 Sprite 當場景底圖時,Collider 的定位要以實際畫面為準。
完成主要碰撞箱後,我選取其中一個碰撞物件,檢查它的 BoxCollider2D 設定。

這些碰撞物件不需要 Sprite Renderer,也不需要顯示圖片。它們只是場景中的隱形阻擋區域。
透過調整 BoxCollider2D 的 Size 和 Offset,可以讓碰撞範圍貼近牆面、桌子或其他家具。這種做法雖然比自動碰撞麻煩,但比較適合處理這種「一整張室內圖片作為場景背景」的情況。
接下來,我設定村長家室內的進出口 Marker。和主角家一樣,村長家也需要 Entry_FromVillage 和 Exit_ToVillage。

Entry_FromVillage 代表玩家從村莊進入村長家後,會出現在室內的位置。這個點通常放在門口內側,讓玩家進場後位置合理。
Exit_ToVillage 則代表玩家離開村長家回到村莊的出口。這個物件需要加上 Trigger Collider 和 SceneTransitionPoint,並設定:
Target Scene Name = VillageScene
Target Spawn Point Name = Entry_FromChiefHouse
這樣玩家從室內走到出口時,就會回到村莊,並出現在村長家門外的位置。
完成室內端設定後,還需要回到 VillageScene 設定外部轉場點。
在村長家門口建立 Exit_ToChiefHouse,並在門外建立 Entry_FromChiefHouse。

Exit_ToChiefHouse 是玩家在村莊中走到村長家門口時會碰到的轉場觸發點。它的 SceneTransitionPoint 設定為:
Target Scene Name = ChiefHouseInteriorScene
Target Spawn Point Name = Entry_FromVillage
也就是說,玩家碰到村長家門口的 Trigger 後,會切換到 ChiefHouseInteriorScene,並出現在村長家室內的 Entry_FromVillage。
Entry_FromChiefHouse 則是玩家從室內回到村莊後的出生點,放在村長家門外稍微往外的位置,避免玩家一回到村莊就又立刻觸發進門。
最後,我進入 Play Mode 測試村長家的雙向轉場。
測試流程是:玩家從 VillageScene 走到村長家門口的 Exit_ToChiefHouse,會切換到 ChiefHouseInteriorScene,並出現在室內的 Entry_FromVillage。接著玩家從室內的 Exit_ToVillage 離開,會回到 VillageScene,並出現在村長家門外的 Entry_FromChiefHouse。
這次轉場測試沒有另外截圖,因為轉場屬於動態效果,用靜態圖片很難表達。文章中用文字記錄測試結果即可。
透過 Day 18 的製作,村長家從外部地圖上的一棟建築,變成了第二個真正可以進入的室內場景。
和主角家相比,村長家更大,也更適合後續放置村長 NPC 和主線任務。這一天也處理了大型室內素材常見的問題:圖片本身不是完整矩形、部分區域不可通行、家具需要手動碰撞、進出口必須和村莊外部 Marker 對應。
目前已完成:
ChiefHouseInteriorScene
大型室內圖 Tavern_01_2 作為村長家原型
ChiefHouseCollision 碰撞分組
牆面、黑色區域、家具、火把碰撞箱
室內 Entry_FromVillage 與 Exit_ToVillage
村莊外部 Exit_ToChiefHouse 與 Entry_FromChiefHouse
村莊與村長家室內雙向轉場測試成功
下一步就可以開始真正放置村長 NPC,並讓玩家在村長家中與村長互動。也就是說,Day 18 把「村長應該待在哪裡」這件事先解決了,後面才有辦法合理地接上主線對話與任務。