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