目录
摘 要 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射击游戏设计与实现相关推荐

  1. 基于Unity3D的AR小游戏开发【100011412】

    本科毕业设计(论文) GRADUATION DESIGN(THESIS) 基于 Unity3D 的增强现实游戏程序 摘要 增强现实(AR)作为一项新兴技术近年来被越来越多的人群所获知,AR 也渐渐走进 ...

  2. 基于HTML的飞机射击游戏

    目录 1.游戏设计思路 2.飞机射击游戏设计步骤 本篇博文将分享一篇基于HTML的简单的飞机射击游戏,下方是玩家飞机,可按空格键能不断地发射子弹,上方是随机出现的敌方飞机.玩家可以通过键盘的方向键控制 ...

  3. python版植物大战僵尸源码_基于python的植物大战僵尸游戏设计与实现.docx

    湖南理工学院毕业设计(论文) PAGE PAGE 1 学 号 毕业设计(论文) 题目:基于python的植物大战僵尸游戏设计与实现 作 者 届 别 届 院 别 信息与通信工程学院 专 业 信息工程 指 ...

  4. unity3D第一人称射击游戏(推荐)

    unity3d第一人称射击游戏(推荐) 第一部分:简介   这个教程中,我们详细了解下如何制作一个简单的第一人称射击游戏(FPS).其中将介绍一些基本的3D游戏编程的概念和一些关于怎样如游戏程序员般思 ...

  5. 基于html的猜数字游戏设计

    基于html的猜数字游戏设计 一.原示例代码 主界面代码 <!DOCTYPE html> <html> <head><!--设置字体格式为utf-8--> ...

  6. java毕业设计——基于java+J2ME的堡垒游戏设计与实现(毕业论文+程序源码)——堡垒游戏

    基于java+J2ME的堡垒游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+J2ME的堡垒游戏设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦. 文章目录: 基于ja ...

  7. 基于android的2048游戏设计,基于Android平台的2048游戏设计与开发.docx

    基于Android平台的2048游戏设计与开发 高级操作系统论文(设计) 题 目 基于Android个人2048 小游戏的设计与开发姓 名 学 号 院. 系 信息学院 专 业 指导教师 职称(学历)目 ...

  8. 基于c语言的小游戏,--基于C语言的小游戏设计.doc

    --基于C语言的小游戏设计.doc 级丌 密公 本科生毕业(学位)论文 基于c语言的爪游软设计 李俊佶 (2009061322) TOC \o "1-5" \h \z 指导教师姓名 ...

  9. 基于Android的迷你桌球游戏设计与实现

    目录 摘要11 关键词11 绪论11 1 游戏开发概述22 1.1 背景22 1.2 课题来源33 1.3 国内外研究现状33 1.4 Android应用程序构成44 1.4.1 应用程序55 1.4 ...

  10. 基于python的飞机大战游戏设计与实现

    基于python的飞机大战游戏设计与实现,采用MySQL+pygame+Tkinter实现飞机大战游戏,主要功能有注册+登录+游戏初始化(开始游戏+游戏操作说明+版权信息)+游戏主界面[设置敌机种类并 ...

最新文章

  1. OSChina 周三乱弹 —— 程序员火灾逃生指南
  2. 攻打医院服务器的SamSam勒索木马分析
  3. 【学习笔记】第一章——操作系统的系统调用(陷入指令、库函数、作用流程)
  4. html选择想不能为空,jquery – 属性的CSS3选择器,“具有任何值且不为空或空白”...
  5. python生成html表格_如何使用Python生成html目录列表
  6. redis bitmap存储入门
  7. 微型计算机三级项目,微机原理三级项目.doc
  8. Tampermonkeych插件看B站无地区限制,加速arxiv下载论文速度
  9. 心理测试软件沙盘游戏,心理沙盘游戏软件|心理测验管理系统 网络版
  10. win10无网络安装.Net Framework3.5
  11. Java--基于Java编写的数据库加解密工具包(附)GitHub源码
  12. 5款超棒的微信小程序!绝对满足你的需求!个个超级厉害!
  13. html5文本设置字体大小,HTML5 Canvas的文本设置字体和大小
  14. Python简介及入门
  15. 如何用matlab对信号进行傅里叶变换
  16. can和could的用法_情态动词can和could的用法及例句
  17. IM通讯 即时通讯 交友源码 聊天源码
  18. 数据结构--树与二叉树练习题
  19. 寻人风波——解决iphone4s无法接听的问题
  20. 新代Remote API学习

热门文章

  1. sqlserver设计视图修改表时不允许保存更改的问题处理
  2. java操作pdf之iText快速入门
  3. 无线WAPI网络AS鉴权服务器,WAPI是什么意思?苹果iPhone手机启用WAPI有什么作用?...
  4. SQL注入原理,啊D明小子高手必看! 明小子4.1我已上传 可以下载
  5. 用友A8 mysql配置文件_用友nc 读取配置文件方法
  6. 数学建模常用的分析法及其MATLAB实现
  7. PASCAL VOC数据集简介
  8. 局域网桌面监控软件_如何促进局域网监控软件在企业中的普及
  9. 金蝶k3服务器维护,金蝶k3如何远程客服服务器
  10. win10如何安装IIS