《Unity3D動作游戲開發(fā)》結(jié)合作者多年的開發(fā)經(jīng)驗,從物理、動畫、主角、關(guān)卡等多個層面深入解析動作游戲開發(fā)的各種難點問題,并詳細剖析3個經(jīng)典實戰(zhàn)案例和1個游戲Demo的開發(fā)。本書盡可能避開動作游戲開發(fā)中的簡單問題,把重點放在難點問題剖析上,從而幫助讀者深入理解動作游戲開發(fā)的原理與核心知識。
《Unity3D動作游戲開發(fā)》共11章,分為3篇。第1篇開發(fā)準備,主要介紹動作游戲的主流類型、Unity3D引擎的基本知識和動作游戲開發(fā)的前期準備。第2篇核心模塊詳解,主要介紹動作游戲的物理系統(tǒng)、動畫系統(tǒng)、戰(zhàn)斗系統(tǒng)、主角系統(tǒng)、關(guān)卡系統(tǒng)、敵人AI系統(tǒng)等模塊的設(shè)計與開發(fā),以及相機、Cutscene過場動畫、輸入管理、IK與音頻管理等其他模塊的設(shè)計與開發(fā)。第3篇項目案例實戰(zhàn),首先詳細剖析《忍者龍劍傳2》《君臨都市》《戰(zhàn)神3》三個動作游戲案例,然后詳解一款Roguelike風格的動作游戲Demo開發(fā)。
《Unity3D動作游戲開發(fā)》內(nèi)容豐富,知識體系完整,適合所有想學習動作游戲開發(fā)的人員閱讀,尤其適合從事動作游戲開發(fā)的程序員、Unity3D工程師和Steam游戲從業(yè)人員閱讀,還適合作為大中專院校和培訓(xùn)機構(gòu)的教材。
全面、深入剖析動作游戲開發(fā)的核心知識點和難點。
詳解物理、動畫、主角、關(guān)卡、敵人AI等多個核心模塊。
詳解三款經(jīng)典動作游戲的技術(shù)難點和實現(xiàn)思路。
內(nèi)容全面:圍繞物理、動畫、主角、關(guān)卡、敵人AI等核心模塊,多角度講解動作游戲開發(fā)的基本原理和技術(shù)要點。
注重原理:對關(guān)鍵模塊直接從基礎(chǔ)代碼入手,深入分析其基本原理,幫助讀者打好構(gòu)建穩(wěn)定且易于擴展的腳本的基礎(chǔ)。
講解詳細:詳解諸如角色踩頭、根運動、浮空、僵直和角色殘影等動作游戲開發(fā)中出現(xiàn)較頻繁和典型的技術(shù)細節(jié),為打磨游戲細節(jié)添磚加瓦。
案例典型:詳解三款典型動作游戲開發(fā)的技術(shù)難點和實現(xiàn)思路,以及一款Roguelike風格的動作游戲Demo的開發(fā)細節(jié),從而提高讀者的實際開發(fā)水平。
總結(jié)經(jīng)驗:系統(tǒng)總結(jié)作者多年從事游戲開發(fā)積累的大量實戰(zhàn)經(jīng)驗,并將其融入實際開發(fā)之中,從而幫助讀者解決實際開發(fā)中的各種難點問題。
隨著Unity3D這類通用游戲引擎的出現(xiàn),越來越多制作精良的獨立游戲逐漸出現(xiàn)在玩家視野中。在游戲商業(yè)化高度發(fā)達的今天,越來越多的開發(fā)者和開發(fā)團隊受獨立游戲創(chuàng)意及其藝術(shù)性的感召,嘗試開發(fā)并發(fā)布了一些相關(guān)作品。動作游戲作為一大熱門游戲品類一直不缺少玩家,但較高的開發(fā)門檻、技術(shù)細節(jié)和復(fù)雜度等都阻礙了其開發(fā)進程。長期以來,以動作游戲為核心的書籍較為匱乏,因此筆者編寫了本書,以滿足讀者的需求。
本書結(jié)合筆者多年的游戲開發(fā)經(jīng)驗,基于Unity3D引擎對動作游戲這個玩家需求較高的類型進行深入講解。本書圍繞與動作游戲有關(guān)的幾大核心模塊、技術(shù)選型和前期設(shè)計等內(nèi)容進行詳細講解,幫助讀者深入理解動作游戲開發(fā)的基本原理并系統(tǒng)掌握Unity3D動作游戲開發(fā)的核心技術(shù),從而開發(fā)出符合要求的動作游戲。
本書特色
1.內(nèi)容全面,重點突出
本書圍繞動作游戲的物理、動畫、主角、關(guān)卡、敵人AI等多個核心模塊進行講解,涵蓋游戲開發(fā)的大部分環(huán)節(jié),讀者可隨時根據(jù)各模塊進行查閱,從而高效解決實際問題。
2.注重原理分析,而非堆砌插件
Unity3D引擎擁有數(shù)量眾多的插件及開源庫供開發(fā)者選擇,但過多使用這些外部擴展插件和第三方庫容易導(dǎo)致項目出現(xiàn)功能冗余、擴展受限、運行不穩(wěn)定等問題。對于諸如相機、角色、碰撞和AI等核心模塊,即便使用插件,也需要對其內(nèi)部機制十分了解才行。本書在這些關(guān)鍵模塊的講解上直接從基礎(chǔ)代碼入手,著重對原理進行深入分析,從而幫助讀者打好構(gòu)建穩(wěn)定且易于擴展的腳本的基礎(chǔ)。
3.詳解技術(shù)細節(jié)
本書對動作游戲開發(fā)中出現(xiàn)較頻繁和典型的技術(shù)細節(jié)進行深入講解,其中包括角色踩頭、根運動、浮空、僵直和角色殘影等,這可以為游戲細節(jié)的打磨添磚加瓦。
4.案例典型,實用性強
本書最后兩章分別詳解三款典型動作游戲開發(fā)的技術(shù)難點和實現(xiàn)思路,以及一款Roguelike風格的動作游戲Demo的開發(fā)過程,從而加深讀者對動作游戲開發(fā)的理解,并提高實際開發(fā)水平。
5.總結(jié)開發(fā)經(jīng)驗
本書系統(tǒng)總結(jié)作者多年從事游戲開發(fā)積累的大量實戰(zhàn)經(jīng)驗,并將其融入實際開發(fā)之中,從而幫助讀者解決實際開發(fā)中的各種難點問題。
本書內(nèi)容
第1篇 開發(fā)準備
本篇包括第1、2章,首先介紹Unity3D游戲引擎的發(fā)展現(xiàn)狀和動作游戲的主流類型,然后詳細介紹游戲開發(fā)的前期準備,包括預(yù)備知識、C#語言的新功能、數(shù)學知識和其他開發(fā)工具等。通過閱讀本篇內(nèi)容,讀者可以初步了解動作游戲開發(fā)的基本要求和前期準備。
第2篇 核心模塊詳解
本篇包括第3~9章,主要介紹動作游戲開發(fā)中涉及的幾個核心模塊的相關(guān)功能,并詳細介紹這些模塊的設(shè)計與開發(fā),涵蓋物理系統(tǒng)、Mecanim動畫系統(tǒng)、戰(zhàn)斗系統(tǒng)、主角系統(tǒng)、關(guān)卡設(shè)計、敵人AI設(shè)計、相機、Cutscene過場動畫和輸入管理等模塊的相關(guān)內(nèi)容。通過閱讀本篇內(nèi)容,讀者可以系統(tǒng)掌握Unity3D動作游戲開發(fā)的核心技術(shù)。
第3篇 項目案例實戰(zhàn)
本篇包括第10、11章,首先剖析《忍者龍劍傳2》《君臨都市》《戰(zhàn)神3》三個動作游戲案例,然后介紹一款Roguelike風格的動作游戲Demo開發(fā)。通過閱讀本篇內(nèi)容,讀者可以通過實際項目案例整合使用前面章節(jié)講解的技術(shù),從而提高實際開發(fā)水平。
讀者對象
? 想系統(tǒng)學習動作游戲開發(fā)的人員;
? 動作游戲開發(fā)從業(yè)人員;
? Unity3D游戲開發(fā)工程師;
? Steam游戲開發(fā)從業(yè)人員;
? 大中專院校相關(guān)專業(yè)的學生;
? 社會培訓(xùn)機構(gòu)相關(guān)學員。
閱讀建議
? 讀者最好具備一定的Unity3D引擎與C#語言基礎(chǔ),以便更加順利地閱讀本書;
? 讀者最好先了解動作游戲開發(fā)的大體流程與相關(guān)模塊再進行學習;
? 讀者最好對狀態(tài)機、行為樹、手柄適配與序列化等內(nèi)容有一定了解,這樣學習效果會更好;
? 讀者可以結(jié)合所學內(nèi)容制作一些測試項目進行練習,以熟能生巧。
配套資源獲取方式
本書涉及的實例源代碼和教學PPT等配套資源有兩種獲取方式:一是關(guān)注微信公眾號(見書),回復(fù)數(shù)字46自動獲取下載鏈接;二是在清華大學出版社網(wǎng)站上搜索到本書,然后在本書頁面上找到資源下載欄目,單擊網(wǎng)絡(luò)資源按鈕進行下載。
售后服務(wù)
由于筆者水平所限,加之寫作時間倉促,書中可能存在疏漏與不足之處,懇請廣大讀者批評與指正。讀者在閱讀本書的過程中如果有疑問,可以發(fā)送電子郵件獲取幫助,郵箱地址見書。
周尚宣
2025年5月
周尚宣 主機與動作游戲開發(fā)發(fā)燒友,獨立游戲開發(fā)者,Unity3D工程師。自2014年開始,一直從事技術(shù)博客文章的創(chuàng)作。曾先后參與了手游、VR和Steam端游等不同類型游戲項目的開發(fā)與上線,積累了大量的開發(fā)經(jīng)驗。工作之余喜愛鉆研動作游戲的各項技術(shù)并加以實踐,將其用于商業(yè)游戲、獨立游戲和個人開發(fā)的游戲項目之中。
第1篇 開發(fā)準備
第1章 概述 2
1.1 本書的側(cè)重點及目標 2
1.2 動作游戲的主流類型簡介 3
1.2.1 傳統(tǒng)動作游戲 3
1.2.2 Roguelike類動作游戲 4
1.2.3 魂類動作游戲 4
1.3 Unity3D引擎簡介 5
1.3.1 Unity3D引擎的發(fā)展歷程 5
1.3.2 選用合適的引擎版本 6
第2章 動作游戲開發(fā)前期準備 7
2.1 預(yù)備知識 7
2.1.1 使用協(xié)程 7
2.1.2 使用ScriptableObject 9
2.1.3 理解LayerMask 10
2.1.4 消息模塊的設(shè)計 11
2.1.5 功能開關(guān)與鎖的設(shè)計 12
2.1.6 活用插值公式 14
2.1.7 關(guān)注項目中的GC問題 15
2.2 Unity3D引擎及C#語言新功能 16
2.2.1 C# 6.0至C# 7.3新功能簡介 16
2.2.2 Unity3D引擎部分新功能簡介 18
2.3 3D游戲開發(fā)的數(shù)學知識 19
2.3.1 向量加減 19
2.3.2 點乘 20
2.3.3 叉乘 21
2.3.4 投影 22
2.3.5 四元數(shù) 22
2.4 其他開發(fā)工具準備 24
2.4.1 控制臺工具的編寫 24
2.4.2 常量生成器 25
2.4.3 關(guān)聯(lián)Excel配置數(shù)據(jù) 26
2.4.4 Level分組打包工具 28
2.4.5 項目目錄結(jié)構(gòu)建議 29
2.4.6 項目的程序流程結(jié)構(gòu)建議 30
第2篇 核心模塊詳解
第3章 物理系統(tǒng)詳解 32
3.1 物理系統(tǒng)基本內(nèi)容梳理 32
3.1.1 系統(tǒng)參數(shù)設(shè)置 32
3.1.2 Fixed Update更新頻率 33
3.1.3 Rigidbody參數(shù)簡介 33
3.1.4 物理材質(zhì)設(shè)置 34
3.2 常見問題 34
3.2.1 物理步的理解誤區(qū) 34
3.2.2 重疊與擠出問題 35
3.2.3 地面檢測邏輯的處理 36
3.2.4 傳送平臺邏輯的處理 36
3.2.5 踩頭問題及其解決方法 38
3.2.6 動畫根運動的物理問題 40
3.3 為動作游戲定制碰撞系統(tǒng) 40
3.3.1 OBB碰撞檢測簡介 40
3.3.2 Box與Box相交檢測 41
3.3.3 Box與Sphere相交檢測 43
3.3.4 Sphere與Sphere相交檢測 44
3.3.5 不同形狀的邊界點獲取 44
3.3.6 總結(jié) 47
第4章 Mecanim動畫系統(tǒng)詳解 48
4.1 Mecanim動畫系統(tǒng)的基礎(chǔ)功能 48
4.1.1 動畫狀態(tài)機簡介 48
4.1.2 狀態(tài)過渡機制 50
4.1.3 動畫重寫控制器 51
4.1.4 混合樹 52
4.1.5 人形動畫與IK 52
4.1.6 模型導(dǎo)入面板參數(shù) 54
4.1.7 SMB腳本 55
4.2 應(yīng)用與擴展 56
4.2.1 編寫混合樹剝離工具 56
4.2.2 碰撞SMB腳本 57
4.2.3 監(jiān)聽輸入幀與混合幀 58
4.2.4 擴展多重Tag支持 61
第5章 戰(zhàn)斗系統(tǒng)詳解 63
5.1 角色模塊 63
5.1.1 角色控制器與剛體 63
5.1.2 Motor組件設(shè)計1 64
5.1.3 Motor組件設(shè)計2 67
5.1.4 動畫事件處理 70
5.2 戰(zhàn)斗系統(tǒng)設(shè)計 72
5.2.1 傷害判定框細節(jié)思考 72
5.2.2 傳遞Instigator 74
5.2.3 基礎(chǔ)戰(zhàn)斗邏輯編寫 75
5.2.4 編寫傷害邏輯 79
5.2.5 編寫僵直度邏輯 80
5.2.6 編寫浮空邏輯 82
5.2.7 編寫預(yù)警邏輯 84
第6章 主角系統(tǒng)詳解 86
6.1 基礎(chǔ)模塊設(shè)計 86
6.1.1 有限狀態(tài)機簡介 86
6.1.2 編寫有限狀態(tài)機 87
6.1.3 設(shè)計插槽掛接點 93
6.1.4 實現(xiàn)指令監(jiān)聽功能 94
6.1.5 封裝角色基類 95
6.1.6 技能系統(tǒng) 96
6.1.7 編寫主角類基礎(chǔ)結(jié)構(gòu) 100
6.2 基礎(chǔ)要素 102
6.2.1 同類游戲的對比 102
6.2.2 邏輯編寫前的準備工作 103
6.2.3 移動邏輯的編寫 104
6.2.4 跳躍邏輯的編寫 106
6.2.5 多段跳躍邏輯的編寫 108
6.2.6 攻擊邏輯的編寫 111
6.2.7 連招邏輯的編寫 117
6.2.8 受擊與死亡邏輯的編寫 119
6.2.9 空中攻擊與受擊邏輯的編寫 121
6.2.10 翻滾邏輯的編寫 124
6.2.11 格擋邏輯的編寫 126
6.3 效果與表現(xiàn) 131
6.3.1 增加Twist骨骼 131
6.3.2 刀光拖尾效果制作 132
6.3.3 頓幀效果處理 138
6.3.4 布娃娃效果制作 140
第7章 關(guān)卡設(shè)計詳解 142
7.1 關(guān)卡設(shè)計的前期考量 142
7.1.1 從Graybox說起 142
7.1.2 規(guī)劃層級結(jié)構(gòu) 143
7.1.3 模型的導(dǎo)出與調(diào)試 144
7.2 深入解析開發(fā)階段 145
7.2.1 SpawnPoint的使用 145
7.2.2 擴展SpawnPoint 147
7.2.3 對象池的編寫 151
7.2.4 關(guān)卡模塊的序列化 154
7.2.5 戰(zhàn)斗壁障的實現(xiàn) 158
7.3 光照與烘焙 160
7.3.1 不同GI類型的選擇 161
7.3.2 預(yù)計算光照的使用 161
7.3.3 光照探針的使用 162
7.3.4 反射探針簡介 163
7.3.5 借助LPPV優(yōu)化烘焙 163
第8章 敵人AI設(shè)計詳解 165
8.1 開發(fā)基礎(chǔ) 165
8.1.1 敵人AI設(shè)計簡介 165
8.1.2 導(dǎo)航網(wǎng)格功能簡介 167
8.1.3 Behavior Designer插件簡介 169
8.1.4 Visual Scripting工具簡介 170
8.2 開發(fā)進階 172
8.2.1 使用協(xié)程開發(fā)AI程序 172
8.2.2 處理敵人體積過大的問題 175
8.2.3 處理移動邏輯 176
8.2.4 可控制隨機行為 177
8.2.5 快速獲取角色的8個方向 180
8.2.6 鎖定玩家與攻擊邏輯 181
8.2.7 使用導(dǎo)航網(wǎng)格查詢接口 183
8.2.8 實現(xiàn)EQS功能 184
8.2.9 獲取場景綁定信息 188
第9章 其他模塊詳解 189
9.1 相機 189
9.1.1 常見的相機模式分類 189
9.1.2 第三人稱相機的實現(xiàn) 190
9.1.3 滑軌相機的實現(xiàn) 194
9.1.4 相機震屏實現(xiàn) 198
9.2 Cutscene過場動畫 200
9.2.1 不同類型的Cutscene簡介 201
9.2.2 使用Timeline 201
9.2.3 使用腳本過場動畫 203
9.3 輸入、IK與音頻管理 204
9.3.1 InControl插件的使用 204
9.3.2 Final-IK插件的使用 205
9.3.3 音頻管理 207
第3篇 項目案例實戰(zhàn)
第10章 典型案例剖析 214
10.1 《忍者龍劍傳2》案例剖析 214
10.1.1 斷肢效果的再實現(xiàn) 214
10.1.2 流血噴濺效果的再實現(xiàn) 217
10.1.3 角色殘影效果的再實現(xiàn) 220
10.2 《君臨都市》案例剖析 223
10.2.1 通用動作方案的設(shè)計 223
10.2.2 組合攻擊的再實現(xiàn) 223
10.3 《戰(zhàn)神3》案例剖析 227
10.3.1 吸魂效果的再實現(xiàn) 228
10.3.2 鏈刃伸縮效果的再實現(xiàn) 232
10.3.3 赫利俄斯照射的再實現(xiàn) 235
第11章 Roguelike游戲Demo設(shè)計 242
11.1 前期規(guī)劃 242
11.1.1 確立3C 242
11.1.2 資源準備 242
11.1.3 項目配置 243
11.1.4 梳理游戲流程 244
11.1.5 依賴模塊清單 245
11.2 功能實現(xiàn)與整合 246
11.2.1 游戲邏輯 246
11.2.2 房間生成邏輯 247
11.2.3 整合主角邏輯 251
11.2.4 處理敵人邏輯 252
11.3 構(gòu)建游戲 253
11.3.1 配置房間預(yù)制體 253
11.3.2 回顧與總結(jié) 254