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