基于Unity3D的AR射击游戏设计与实现
目錄
摘 要 1
ABSTRACT 2
第1章緒論 4
1.1 項目概況 4
1.2 課題研究背景和意義 4
1.2.1 課題研究背景 4
1.2.2 課題研究目的 5
1.3 國內外研究現狀 6
1.4 SLAM 算法簡介 8
1.5 AR 不是 VR 9
1.6 AR 游戲介紹 10
1.6.1 AR游戲–新的游玩方式 10
1.6.2 從《AR-Quake》到《Pokemon GO》 11
1.7 本章小結 13
第二章關鍵技術簡介 14
2.1 ARCore 簡介 14
2.1.1 ARCore 主要功能 14
2.1.2 ARCore 的交互方式 14
2.1.3 為何選擇 ARCore 15
2.2 Unity3D 使用 ARCore 開發工具包 15
2.2.1 開發環境硬件需求 15
2.2.2 開發環境軟件要求 16
2.2.3 將 ARCore 導入到 Unity 中 16
2.2.4 配置構建設置 16
2.2.5 構建并調試 18
2.3 DoTween 簡介 18
2.3.1 補間動畫 18
2.3.2 Dotween 常用功能 18
2.3.3 Dotween 的基本使用 19
2.4 本章小結 22
第三章概要設計 23
3.1 實驗方案 23
3.2 游戲設計思路 23
3.2.1 游戲玩法設計 23
3.2.2 游戲流程設計 24
3.3 預期結果 25
3.4 程序設計思路 27
3.4.1 程序流程 27
3.4.2 程序架構 27
3.5 程序模塊設計 28
1 游戲控制模塊 GameManage:包含控制整個游戲的流程 28
2 平面識別模塊 DetectedPlane:這部分用于平面的檢測 28
3 怪物模塊 Monster:包含怪物的行為控制以及數據等 28
4 槍炮模塊 Turret:這部分包含槍炮的控制以及數據 28
3.6 美術準備 29
3.7 本章小結 30
第四章詳細開發流程和結果 31
4.1.1 主要游戲場景 Hierarchy 結構介紹 31
4.1.2 項目文件介紹 31
4.2 主要構建流程 32
4.2.1 前期準備 32
4.2.2 游戲場景搭建 33
4.2.3 平面識別 38
4.2.4 其他各預制件的處理 41
4.3 游戲最終效果 49
4.4 本章小結 53
第五章總結和展望 54
5.1 總結 54
5.2 展望 54
參考文獻 56
第三章概要設計
3.1 實驗方案
設計好游戲內容。根據游戲開發[16]流程,制作一個游戲,起初是先提出一個游戲的方案,也就是游戲策劃,包括游戲的類型,游戲的內容是什么。根據初步設想游戲類型為 FPS 即第一人稱射擊類,手機屏幕中將會生成怪物,在屏幕的下方有槍一類的模型,以及一個開槍按鈕,通過點擊按鈕,槍將會發射子彈,子彈大中怪物一定的次數可將怪物從屏幕中去掉,此過程中怪物也會對玩家進行攻擊,玩家視角將會隨著玩家手機方向的改變進行改變。
2 確定好游戲內容后,查找當前的 AR 工具開發包,開發包應該滿足這幾個條件:
能支持安卓手機且應該支持小米 8(測試手機為小米 8 安卓機);可以導入到 Unity3D 中進行開發使用(題目為基于 Unity3D 的 AR 游戲開發);該組件可以支持平面檢測而不只是對圖片進行識別然后生成虛擬物體(保留條件,最佳情況是如此);綜上最后選擇的是 ARCore 組件作為 AR 工具開發包。
3建立項目進行編碼以及游戲場景搭建。
4 測試,是否達到預期結果,否則返回 3)繼續編碼。
3.2 游戲設計思路
3.2.1 游戲玩法設計
游戲類型:為第一人稱射擊類游戲[17],游戲場景為手機攝像頭拍攝到的現實世界場景,通過識別現實三維世界的水平平面在水平方向上會生成一定數量的怪物,在屏幕下方通過點擊開火按鈕,槍械將會發射子彈,子彈接觸到怪物會給怪物帶來一定的傷害,傷害累計到一定程度將會破壞掉怪物。本文轉載自http://www.biyezuopin.vip/onews.asp?id=14915怪物也會隨機移動,并不定時攻擊玩家,游戲內表現為怪物沖向手機顯示屏(僅僅只是玩家正對著的怪物),玩家被攻擊時手機會震動,以提示玩家正在被攻擊,同樣的玩家受到一定的傷害后游戲結束,游戲結束顯示得分。
4.2.4 其他各預制件的處理
(1)怪物 prefab 的處理:首先為怪物 prefab 添加剛體 Rigidbody 和碰撞體這里用 Box Collider 將剛體中的 Constraints 選項的全勾選上[21],這樣當碰撞體的時候就不會被撞到改變運動的角度和及其所在坐標,否者物體會突兀的改變現狀顯得不自然,比如突然出現在某個地方。然后創建一個 MonsterController 腳本用來控制 Monster,將腳本掛載在怪物預制件上。其關鍵代碼如下。其
中 monsterAttack()是怪物攻擊玩家時會進行的操作,Damage()方法則是子彈攻擊怪物后的傷害評定,當怪物被子彈打中時,除了會收到傷害,還會利用 Dotween 工具的 DOShakePosition 方法將怪物展示震動效果。其關鍵代碼為
void Damage(){int hp = monster.GetHp();if (hp <= 0) return;hp -= UnityEngine.Random.Range(10, 20);monster.SetHp(hp);transform.DOShakePosition(1, new Vector3(0, 1, 0));if (hp <= 0){ar.getGameManage().GetPlayerData().SetScore();GameObject.Destroy(this.gameObject);}},OnCollisionEnter()方法是處理怪物與玩家碰撞后的影響。private void monsterAttack(){_monsterAnim.Play("attack");}public static void Shock() {Handheld.Vibrate();}void OnCollisionEnter(Collision other) {if (other.collider.tag == "Player") {Shock();
總結
以上是生活随笔為你收集整理的基于Unity3D的AR射击游戏设计与实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IE11的userAgent
- 下一篇: 内核的功能划分