Unity 遊戲設計與實現 : 南夢宮一線程序員的開發實例 (修訂版)
內容描述
本書的作者是日本知名游戲公司萬代南夢宮的高級開發人員,書中基於Unity5,通過10個不同類型的游戲實例,展示了真正的游戲設計和實現過程。本書的重點不在於講解Unity的各種功能細節,而在於介紹核心玩法的設計和實現思路。每個實例都從一個idea開始,不斷豐富,進而自然而然地推出各種概念,引導讀者思考必要的數據結構和編程方法。掌握了這些思路,即便換成另外一種引擎,也可以輕松地開發出同類型的游戲。
目錄大綱
第0章遊戲開發前的準備1
0.1 Unity入門Concept 2
0.1.1概要2
0.1.2遊戲對象3
0.1.3組件5
0.1.4資源8
0.1.5流程10
0.1.6場景11
0.1.7預設13
0.1.8小結16
0.2先來複習一下Unity的基礎知識吧Concept 17
0.2.1腳本一覽17
0.2.2本章小節18
0.2.3本章開發的小遊戲18
0.3入門教程(上)——創建項目Tips 18
0.3.1概要18
0.3.2創建新項目19
0.3.3創建地面(創建遊戲對象) 20
0.3.4創建場景,保存項目21
0.3.5調整場景視圖的攝像機23
0.3.6創建方塊和小球(創建遊戲對象並調整坐標) 24
0.3.7運行遊戲27
0.3.8攝像機的便捷功能28
0.3.9修改遊戲對象的名字28
0.3.10模擬物理運動(添加Rigidbody組件) 29
0.3.11讓玩家角色跳起來(添加遊戲腳本) 30
0.3.12修改遊戲對象的顏色(創建材質) 35
0.3.13調整遊戲畫面的尺寸(調整播放器設置) 36
0.3.14小結38
0.4入門教程(下)——讓遊戲更有趣Tips 38
0.4.1概 要38
0.4.2讓小球飛起來(物理運動和速度) 38
0.4.3創建大量小球(預設遊戲對象) 39
0.4.4整理項目視圖41
0.4.5發射小球(通過腳本創建遊戲對象) 43
0.4.6刪除畫面外的小球(通過腳本刪除遊戲對象) 46
0.4.7防止玩家角色在空中起跳(發生碰撞時的處理) 48
0.4.8禁止玩家角色旋轉(抑制旋轉) 50
0.4. 9讓玩家角色不被彈開(設置重量) 51
0.4.10讓小球強烈反彈(設置物理材質) 52
0.4.11消除“漂浮感”(調整重力大小) 54
0.4.12調整攝像機的位置56
0.4 .13修復空中起跳的bug(區分碰撞對象) 57
0.4.14小結63
0.5關於預設Tips 64
0.5.1概要64
0.5.2改良“小方塊”遊戲對象64
0.5.3預設與對象實例65
0.5 .4預設和實例的變更67
0.5.5小結70
0.6 C#和JavaScript的對比Tips 71
0.6.1概要71
0.6.2類的定義72
0.6.3變量的定義72
0.6.4函數的定義73
0.6. 5作用域74
0.6.6靜態函數和靜態變量 定義74
0.6.7泛型方法的調用74
0.6.8 Bool類型和字符串類型75
0.6.9數組75
0.6.10小結75
第1章點擊動作遊戲——怪物77
1.1玩法介紹HowtoPlay 78
1.2簡單的操作和爽快感Concept 80
1.2.1腳本一覽80
1.2.2本章小節82
1.3無限滾動的背景Tips 82
1.3.1關聯文件82
1.3.2概要82
1.3.3背景組件的顯示位置83
1.3.4小結85
1.4無限滾動的背景的改良Tips 85
1.4.1關聯文件85
1.4.2概要86
1.4.3稍作嘗試86
1.4.4背景組件顯示位置的改良87
1.4.5小結89
1.5怪物出現模式的管理Tips 89
1.5 .1關聯文件89
1.5.2概要89
1.5.3怪物出現的時間點90
1.5.4怪物出現模式的變化92
1.5.5小結96
1.6武士和怪物的碰撞檢測Tips 96
1.6.1關聯文件96
1.6. 2概要96
1.6.3分別對各個怪物進行碰撞檢測的問題97
1.6.4把怪物編成小組98
1.6.5小結100
1.7得分高低的判定Tips 100
1.7.1概要100
1.7.2武士的攻擊判定100
1.7.3判斷在多近的距離斬殺101
- 7.4小結104
1.8使被砍中的怪物向四處飛散Tips 104
1.8.1概要104
1.8.2想像一下“圓錐體” 104
1.8.3具體的計算方法106
1.8.4小結108
第2章拼圖遊戲——迷你拼圖109
2.1玩法介紹HowtoPlay 110
排列拼圖碎片,拼出最後的圖案!110
2.2流暢的拖曳操作Concept 112
2.2.1腳本一覽112
2.2.2本章小節112
2.3點住碎片的任意位置拖動Tips 114
2.3.1關聯文件114
2.3.2概要114
2.3.3透視變換和逆透視變換114
2.3.4被點擊處即為光標的位置114
2.3.5測試拖曳碎片的中心117
2.3.6小結118
2.4打亂拼圖碎片Tips 118
2.4.1關聯文件118
2.4.2概要118
2.4.3設置拼圖碎片的坐標為隨機數118
2.4.4改進策略119
2.4.5小結124
第3章吃豆遊戲——地牢吞噬者125
3.1玩法介紹HowtoPlay 126
3.2適時進退和逆轉的機會Concept 128
3.2.1腳本一覽128
3.2.2本章小節130
3.3平滑的網格移動Tips 130
3.3.1關聯文件130
3.3.2概要130
3.3.3能夠改變方向的時機131
3.3.4穿過網格的時機131
3.3.5小結133
3.4地圖數據Tips 134
3.4.1關聯文件134
3.4.2概要134
3.4.3文本文件的格式134
3.4.4擴展編輯器的功能139
3.4.5小結141
3.5攝像機變焦功能的運用Tips 141
3.5.1關聯文件141
3.5.2概 141
3.5.3調整策略142
3.5.4攝像機的視野143
3.5.5緩動動畫145
3.5.6變焦效果的代碼實現146
3.5.7小結149
3.6幽靈的AITips 149
3.6.1關聯文件149
3.6.2概要149
3.6.3跟踪的算法150
3.6.4埋伏等待型、包圍攻擊型和隨機型153
3.6.5觀察幽靈的行動155
3.6.6小結157
第4章3D聲音探索遊戲——IntheDarkWater 159
4.1玩法介紹HowtoPlay 160
4.2只依靠聲音Concept 162
4.2.1腳本一覽162
4.2.2本章小節164
4.3僅依靠聲音定位Tips 164
4.3.1概要164
4.3.23D聲音的特性164
4.3.3用於實驗的項目166
4.3.4小結167
4.43D聲音的控制Tips 167
4.4.1關聯文件167
4.4.2概要167
4.4.33D聲音的設置167
4.4.4按一定間隔發出聲音168
4.4.5聲音的淡出169
4.4.6小結170
4.5潛水艇的操縱Tips 171
4.5.1關聯文件171
4.5.2概要171
4.5.3操作方法171
4.5.4轉彎速度的衰減173
4.5.5小結177
4.6聲納的製作方法Tips 177
4.6.1概要177
4.6. 2 Perspective和Ortho 178
4.6.3 “Dark Water”的聲納攝像機179
4.6.4攝像機和對象的層180
4.6.5稍作嘗試183
4.6.6攝像機的視口184
4.6.7小結185
第5章節奏遊戲——搖滾女孩187
5.1玩法介紹HowtoPlay 188
5.2 Band—girl的世界Concept 189
5.2.1腳本一覽190
5.2.2本章小節190
5.3顯示點擊時刻的節拍標記Tips 192
5.3.1關聯文件192
5.3.2概要192
5.3.3定位單元192
5.3.4標記的顯示195
5.3.5小結198
5.4判斷是否配合了音樂點擊Tips 198
5.4.1關聯文件198
5.4.2概要198
5.4.3得分高低的判斷198
5.4.4避免重複判斷200
5.4.5小結205
5.5演出數據的管理和執行Tips 205
5.5.1關聯文件205
5.5.2概要205
5.5.3事件數據的檢索205
5.5.4定位單元和執行單元207
5.5.5小結211
5.6其他調整功能Tips 211
5.6.1關聯文件211
5.6.2概要211
5.6.3什麼是“turnaround” 212
5.6.4顯示時刻的偏移值212
5.6.5定位條214
5.6.6顯示標記的行號216
5.6.7小結216
第6章全方位滾動射擊遊戲——噬 者217
6.1玩法介紹HowtoPlay 218
6.2功能強大的激光制導Concept 219
6.2.1腳本一覽220
6.2.2本章小節220
6.3索敵激光的碰撞檢測Tips 222
6.3.1關聯文件222
6.3.2概要222
6.3.3索敵激光的碰撞檢測222
6.3.4碰撞網格的生成方法224
6.3.5確認碰撞網格229
6.3.6小結229
6.4不會重複的鎖定Tips 230
6.4.1關聯文件230
6.4.2概要230
6.4 .3鎖定的管理230
6.4.4小結233
6.5制導激光Tips 233
6.5.1關聯文件233
6.5.2概要233
6.5.3根據TrailRenderer生成網格233
6.5.4制導激光的移動234
6.5.5稍作嘗試238
6.5.6小結238
6.6消息窗口Tips 239
6.6.1關聯文件239
6.6.2概要239
6.6.3消息隊列和顯示緩衝區239
6.6.4小結244
第7章消除動作解謎遊戲——吃月亮245
7.1玩法介紹HowtoPlay 246
7.2爽快的連鎖和有趣的方塊移動Concept 248
7.2.1腳本一覽248
7.2.2本章小節250
7.3同色方塊相鄰與否的判斷Tips 250
7.3.1關聯文件250
7.3.2概要250
7.3.3連結 與連鎖250
7.3.4不停地檢測相鄰方塊251
7.3.5遞歸調用253
7.3.6用於測試連結檢測的工程256
7.3.7防止無限循環檢測257
7.3.8小結258
7.4方塊的初始設置Tips 259
7.4.1關聯文件259
7.4.2概要259
7.4.3顏色的選擇方法259
7.4.4隨機選取方塊的擺放位置262
7.4.5小結264
7.5動畫的父子構造關係Tips 264
7.5.1關聯文件264
7.5.2概要264
7.5.3方塊的運動264
7.5.4動畫的父子構造——用於測試的工程267
7.5.5 “吃月亮”中面板的位置和角度的計算272
7.5.6小結274
7.6方塊的平滑移動Tips 274
7.6.1關聯文件274
7.6.2概要274
7.6.3數組的索引和畫面上的位置275
7.6.4桶列方法277
7.6.5小結280
第8章跳躍動作遊戲——貓跳紙窗281
8.1玩法介紹HowtoPlay 282
8.2刺激的跳躍Concept 284
8.2.1腳本一覽284
8.2.2本章小節286
8.3角色的狀態管理Tips 286
8.3.1關聯文件286
8.3.2概要286
8.3.3角色的動作286
8.3.4狀態的遷移287
8.3.5 狀態管理的流程288
8.3.6小結292
8.4可以控制高度的跳躍Tips 293
8.4.1關聯文件293
8.4.2概要293
8.4.3跳躍的物理規律293
8.4.4自由控制跳躍高度的操作294
8.4.5小結297
8.5窗戶紙的碰撞檢測Tips 297
8.5.1關聯文件297
8.5.2概要297
8.5.3 “碰撞”的內部實現機制297
8.5.4窗戶對象299
8.5.5矛盾的碰撞結果299
8.5.6平滑地穿過格子眼309
8.5.7小結312
第9章角色扮演遊戲——村子裡的傳說313
9.1玩法介紹HowtoPlay 314
9.2移動簡單,人人都是主人公Concept 316
9.2.1腳本一覽316
9.2.2本章小節318
9.3事件和ActorTips 318
9.3.1關聯文件318
9.3.2概要318
9.3.3事件318
9.3.4事件的數據結構322
9.3.5 Actor 324
9.3.6事件的執行327
9.3.7試著執行一個事件330
9.3.8小結332
9.4遊戲內參數Tips 332
9.4.1關聯文件332
9.4.2概要332
9.4.3遊戲內參數332
9.4.4小結336
9.5事件文件的讀取Tips 336
9.5.1關聯文件336
9.5.2概要336
9.5.3文 的讀取336
9.5.4小結340
9.6特殊的事件Tips 341
9.6.1關聯文件341
9.6.2概要341
9.6.3選項指令341
9.6.4寶箱事件343
9.6.5進入屋子的事件345
9.6.6小結346
第10章駕駛遊戲——迷踪賽道347
10.1玩法介紹HowtoPlay 348
10.2自行創建,即作即用Concept 350
10.2.1腳本一覽350
10.2.2本章小節352
10.2.3關於CarTutorial腳本352
10.3透視變換和逆透視變換Tips 352
10.3.1關聯文件352
10.3.2概要352
10.3.3透視變換353
10.3.4逆透視變換355
10.3.5小結357
10.4多邊形網格的生成方法Tips 358
10.4.1關聯文件358
10.4.2概要358
10.4.3生成道路的中心線359
10.4.4多邊形的生成方法361
10.4.5生成道路多邊形362
10.4.6急轉彎時的多邊形重疊367
10.4.7多邊形生成的測試用工程368
10.4 .8小結368
10.5模型的變形Tips 368
10.5.1關聯文件368
10.5.2概要368
10.5.3變形後頂點的位置坐標369
10.5.4小結373
10.6點綴實例Tips 373
10.6.1關聯文件373
10 .6.2概要373
10.6.3生成基準線374
10.6.4把樹木設置到基準線上378
10.6.5小結382