Unity項目 – DeathtrapDungeon死亡地牢

  • 2019 年 10 月 3 日
  • 筆記

目錄

遊戲原型

死亡地牢是一款 2D-Roguelike 的地牢冒險遊戲。手握利刃,斬殺怪物,在兇險的地牢內生存下去。但注意,敵人也並非善茬,保持警惕,取捨果斷,足智多謀才是制勝的關鍵。

開發環境:Unity2019.3.0a2 + VS2017
項目地址:DeathtrapDungeon – SouthBegonia
試玩下載:DeathtrapDounge 提取碼:wekp

項目演示

繪圖資源


程式碼實現

總控系統:

  • GameManager.cs:單例模式,統一管理各類的實例,及遊戲數據(經驗,金幣,各類Sprite),升級系統,UI管理,場景管理,存讀檔機制等

生命值系統:

  • Fighter.cs:生命值,最大生命值,擊退係數;傷害系統

Player

  • Player.cs:Rage怒氣系統;換皮膚,死亡重生等
  • Mover.cs:移動系統
  • Weapon:武器攻擊系統,Rage技能系統

Enemy

  • Enemy.cs:大部分敵人的類,包含經驗值,追逐攻擊系統,死亡復活系統等
  • Enemy_Chest.cs:寶箱怪
  • Trap.cs:陷阱
  • Boss0.cs:最終boss

GUI

  • FloatingTextManager/FloatingText.cs:浮動文本顯示系統
  • CharacterMenu.cs:菜單欄系統
  • CharacterHUD.cs:玩家生命值,經驗值,怒氣值顯示,死亡頁面

場景

  • CameraFollow.cs:相機跟隨系統
  • Portal.cs:不同場景傳送門
  • Portal_Door.cs:當前場景傳送門

交互物件

  • NPCTextPerson.cs:NPC交互
  • Chest.cs:寶箱
  • Crate.cs:可破壞物件
  • HealingFountain:治癒泉水
  • Door.cs:開關門

*注意事項

遊戲的核心機制,如戰鬥,場景切換,物體交互等已成型,且Tilemap完善(地面層,上下牆壁層,地表物件層,碰撞層),除了基本的靜態Tiles外,還有幾個AnimatedTile(泉水,熔岩等),及ChestBrush寶箱筆刷方便寶箱的擺放設置等等。如想要自行訂製關卡,完全可以基於此腳本系統下,對Tilemap的重繪、遊戲數值、場景物件擺放、NPC台詞等即可。

此外,itch.io網站內含有大量優秀的2D繪圖資源,可按需合法使用。


技術探討

  • 關於武器揮動進行攻擊的animation
    • 1.武器的Swing動畫時間建議大於0.3s,否則間隔過短即便每次都能攻擊到敵人但不足以有效推開敵人而被攻擊
    • 2.武器劈砍至水平的時間建議在前半時間內完成,因為涉及武器的碰撞傷害;水平下的武器碰撞器範圍較長,利於和敵人保持距離,並造成傷害
    • 3.最好模擬真實情況下的劈砍動作,我將其分為以下幾部分:
      • p1:武器抬起並後仰,此過程速度適中,禁用collider
      • p2:從90’到0’進行主劈砍動作.此過程前半速度快,後半速度極快,啟用collider
      • p3:0’到-20’最終劈砍動作.此過程不在於速度,而在於保持幀數(時間)
      • p4:武器收回,速度快,禁用Collider

  • Tilemap的繪製
    • 最好在確定美術資源時即確定整體繪製的像素資訊,場景風格等,假若後期要添加其他要素,風格不同很不應景
    • Tile的類型最好也確定,使用普通tile+animation物體,或是RuleTile實現各類功能
    • 瓦片的渲染順序體現在Tilemap的順序(例如上牆wall層,下牆壁ScreenWall層;上層可被player遮擋,下層可遮擋player)
    • 非瓦片物體的渲染順序體現在SpriteRenderer里的SortingLayer和OrderLayer;合理設置遮擋與被遮擋關係
  • 2D碰撞問題
    • 所有物體最好處於同一z=0平面,否則一些碰撞檢測容易出問題

參考來源