第 05 組 — 憤怒鳥 期末專案
此專案為課程期末專題作品,使用 3D 場景與物理系統實作「憤怒鳥」風格遊戲。
強烈建議使用打包後的可執行檔遊玩,否則在 Editor 中可能會感覺畫面偏卡。
- 建置好的執行檔位於 repo 同層的
build/資料夾 - Windows 使用者可直接執行:
build/YourGameName.exe(實際檔名依專案為主)
W / A / S / D:移動角色Q:開啟 / 關閉投擲畫面(切換瞄準模式)- 滑鼠上下移動:在投擲畫面中調整投擲仰角
A / D:在投擲畫面中調整左右投擲方向左鍵:近距離投擲Alt + 左鍵:遠距離投擲E:靠近桌子時,將當前投擲的鳥 更換為距離圖片最近的鳥ESC:暫停遊戲 / 開啟 Pause Menu
按下 ESC 後,可在暫停畫面中:
- 查看遊戲規則
- 返回關卡選擇頁面
- 調整音量
- 重新開始此關卡
- 繼續遊戲
特別註明:紅鳥、大紅鳥 不需 按
R釋放技能。
-
炸彈鳥
- 技能:以鳥為中心產生爆炸
- 效果:範圍內物體受到傷害與物理影響
-
黃鳥
- 技能:使鳥以一定速度向下前方俯衝
- 效果:加強撞擊力與穿透效果
-
白鳥
- 技能:投擲後,可讓「下一顆可爆炸的蛋」垂直向下掉落
- 同時使白鳥本體向上前方彈出
-
藍鳥
- 技能:分裂成三隻藍鳥
- 效果:可同時攻擊多個目標或更大範圍
-
紅鳥(不須按
R)- 被丟出後,特效範圍內的物體會 持續扣血並旋轉
-
大紅鳥(不須按
R)- 第一個被碰撞到的物體:
- 血量直接減少 最大血量的 50%
- 第一個被碰撞到的物體:
- 每一幀都會根據「當前速度的平方根」來增加分數
速度越快,被撞動越劇烈,加的分數越多
- 小豬死亡後:
- 分數增加:
100 × 體重
- 分數增加:
以「小豬全部死亡時的分數」為基礎:
- ⭐ 一星:基礎分數 × 3
- ⭐⭐ 二星:基礎分數 × 4
- ⭐⭐⭐ 三星:基礎分數 × 5
- 所有小豬皆死亡或墜落 即可判定通關
配合課程喜歡加 Bonus 的特色,加入額外加分:
- 若關卡中「房子」血量歸 0 或整體墜落:
- 額外增加 3000 分
- 遊戲開始時,預設玩家投擲的是 小紅鳥
- 若想更換其他鳥:
- 找到放置鳥圖片的桌子
- 走近並靠近想替換的鳥的圖片
- 按下
E - 右上角 UI 會顯示目前選定的鳥種
- 選定鳥種後:
- 按
Q進入投擲畫面 - 使用滑鼠上下調整 投擲仰角
- 使用
A / D調整 左右投擲方向
- 按
- 依據情況選擇:
左鍵:近距離拋射Alt + 左鍵:遠距離拋射
- 善用各種鳥的技能(
R或自動觸發),讓所有小豬死亡或墜落完成通關。
以下為主要腳本與職責簡述:
-
Birdcommon- 作為各種憤怒鳥 Collider 程式的基底
- 處理鳥高度過低時的刪除邏輯,避免物件落到場景外還一直存在
-
BirdFollow- 控制相機在鳥發射後自動切換為跟隨視角(
birdFollowCamera) - 讓玩家可以追蹤飛行中的鳥
- 控制相機在鳥發射後自動切換為跟隨視角(
-
*Collider系列- 各種鳥的碰撞與技能處理
- 例:炸彈鳥、黃鳥、白鳥、藍鳥、紅鳥、大紅鳥等的碰撞與觸發行為
-
DrawParabola/Projection- 負責投擲拋物線軌跡的計算與呈現
- 提供瞄準輔助線,讓玩家預測投擲落點
-
Stair- 負責角色上下樓梯時的行為與碰撞處理
-
GameManager- 控制整體遊戲狀態:
- 關卡進度
- 通關 / 失敗條件
- 分數統計與星級評分
- 控制整體遊戲狀態:
-
Pig/PigDie- 小豬的血量、扣血邏輯、死亡反應與加分機制
-
Prop- 場景內可破壞 / 可加分物件
- 處理被撞擊時的物理與分數變化
-
SceneSwitch- 負責場景切換(例如:主選單 ↔ 關卡選擇 ↔ 關卡)
-
islandCamera- 提供俯視敵人島嶼的視角切換
-
level3Rotate- 控制第三關的場景持續旋轉,增加挑戰性與動態感
本專案讓我實作了完整一套 3D 遊戲流程,從:
- 角色與相機控制
- 物理拋物線與 Raycast
- 技能系統設計(多種鳥種與不同技能行為)
- 分數與評分系統
- 關卡切換與遊戲狀態管理
也實際體會到在遊戲開發中,「遊戲體感」與「規則設計」 必須同步考量,像是投擲手感、爆炸範圍、分數設計與 Bonus 機制,都是需要不斷調整才能讓遊戲好玩又有成就感。
3D-Angry-bird/
├── Assets/
│ ├── Scripts/ # 遊戲主要邏輯(鳥、豬、分數、相機、場景控制等)
│ ├── Scenes/ # 關卡與主選單場景
│ ├── Prefabs/ # 鳥、小豬、物件等 Prefab
│ ├── Materials/ # 材質
│ └── UI/ # 遊戲介面、暫停選單等
├── build/ # 打包好的可執行檔(exe)
├── ProjectSettings/
└── README.md