AR小游戏 牧师与恶魔

前言

这是中山大学数据科学与计算机学院2019年3D游戏编程与设计的第十一次作业
所有项目与代码已上传至github当中,欢迎大家访问。
github个人主页: https://starashzero.github.io
3D游戏编程与设计主页: https://starashzero.github.io/3DGameDesign
本次作业项目地址: https://github.com/StarashZero/3DGameDesign/tree/master/hw11

项目要求

  • 图片识别与建模

  • 虚拟按键小游戏

项目简介

我将之前做过的牧师与恶魔实现为AR小游戏,设置两个虚拟按键对应提示、重开两个功能
项目改动不大,但是碰到的坑比写的代码还多,接下来我会对一些坑和解决办法进行总结

排雷

  • 无法开启Vuforia Augmented Reality Supported
    提示某文件not registered
    Vuforia无法成功导入,或每次导入需重启
    解决办法: 应该是版本兼容问题,下载安装Unity 2018.4.14f1版本可解决
  • 无法将动态生成的对象的parent设置为ImageTarget,通过代码设置后仍为null
    解决办法: 未彻底解决,目前是将动态生成的对象改为直接挂载再ImageTarget下
  • 运行后ImageTarget下的对象错位,且无法通过设置位置更改
    解决办法: 将对象移出ImageTarget,再将其移回去,原因未知
  • Virtual Button位置无法更改
    解决办法: Y轴无法变化,只能更改X,Z坐标,且必须放在ImageTarget下,如仍不能更改则重新生成VB
  • Virtual Button触碰无反应
    解决方法: 将Virtual Button放在识别图靠中间的位置,放在四周的话容易无反应
  • 提示Virtual Button name冲突
    解决办法: 这个提示不是指对象名冲突,而是指脚本Virtual Button Behaviour下的Name冲突

实现过程

  • 在Vuforia网页创建一个数据库
  • 上传一张图片作为Target,最后用身边的实物,因为用电子设备显示图片的话可能会因为屏幕反光导致无法识别,例如我将支付宝支付牌作为Target
  • 将生成的数据库下载下来,并导入到Unity项目中
  • 下载安装Vuforia支持包,过程略
  • 在Unity项目中,勾选Edit->Project Settings->Player->Vuforia Augmented Reality Supported,使得项目可以使用Vuforia
  • 删除Main Camera,添加AR Camera,第一次添加时会要求导入包,点确定
  • 将数据库证书填入AR Camera->Open Vuforia Engine configuration->App License Key
  • 添加ImageTarget,Image Target Behaviour中Type选择From Database,并设置好Target
  • 将准备好的模型挂载到ImageTarget当中
  • 在ImageTarget->Image Target Behaviour->Advanced中添加两个Virtual Button,记得为其设置name
  • 编写ButtonBehaviour脚本并挂载在ImageTarget下
    using System.Collections;
    using System.Collections.Generic;
    using System.Runtime.InteropServices;
    using UnityEngine;
    using Vuforia;[System.Obsolete]
    public class VuforiaButtonEventHandler : MonoBehaviour, IVirtualButtonEventHandler
    {public VirtualButtonBehaviour help;public VirtualButtonBehaviour restart;IUserAction action;// Start is called before the first frame update[System.Obsolete]void Start(){help.RegisterEventHandler(this);restart.RegisterEventHandler(this);action = SSDirector.GetInstance().CurrentSenceController as IUserAction;}private void Update(){}public void OnButtonPressed(VirtualButtonBehaviour vb){vb.gameObject.GetComponentInChildren<MeshRenderer>().material.color = Color.red;switch (vb.VirtualButtonName){case "restart":action.Restart();break;case "help":action.Tips();break;default:break;}}public void OnButtonReleased(VirtualButtonBehaviour vb){vb.gameObject.GetComponentInChildren<MeshRenderer>().material.color = Color.white;}
    }
    
  • 点击运行,AR游戏已完成

游戏演示

  • 截图
  • 游戏视频
    https://v.youku.com/v_show/id_XNDQ3NDkzOTI0OA==.html?spm=a2hzp.8244740.0.0

AR小游戏 牧师与恶魔相关推荐

  1. Unity3D——AR小游戏

    文章目录 有趣的AR小游戏制作 环境准备 具体实现 替换Camera 上传识别卡 下载识别卡模型 编辑游戏对象 实验环境是否配置成功 导入Lean Touch脚本 制作成Android应用 游戏制作 ...

  2. Unity AR小游戏(玩具小车)踩坑记

    最近对AR产生了兴趣.先科普一下什么是AR吧.AR是Augmented Reality(增强现实)的简称,是基于摄像头对现实世界的实时图像采集.分析和理解,然后在此基础上融入虚拟物体(信息),以达到增 ...

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

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

  4. 基于Unity3D开发的3D小游戏牧师与魔鬼

    3D小游戏牧师与魔鬼 作业要求 编程实践,3D小游戏:牧师与魔鬼 列出游戏中提及的事物(Objects) 用表格列出玩家动作表(规则表),注意,动作越少越好 请将游戏中对象做成预制,并在 GenGam ...

  5. 做一个AR小游戏,使用EasyAR SDK

    首先说下项目需求:公司是做主题公园的,需要在公交站台做一个交互功能,显示器外接两个摄像头.默认状态摄像头显示公交站台后面视野,当有人进入时,自动转化识别进入的人,这里只是做了一个识别切换功能. 1:在 ...

  6. 牧师与恶魔过河游戏——智能提示

    前言 这次实现一个含提示功能的牧师与恶魔过河小游戏,主要在上一个版本的牧师与恶魔小游戏上进行更改,通过增加一个状态计算和改版了得寻路算法,实现向玩家提示如何胜利完成游戏.游戏主体实现思路见上一篇博客- ...

  7. Unity3D游戏编程-牧师与恶魔

    Unity3D游戏编程-牧师与恶魔 文章目录 Unity3D游戏编程-牧师与恶魔 前置说明 牧师与恶魔 MVC架构 作业要求 项目配置 Object 玩家动作(规则表) 项目演示 视频演示 项目下载 ...

  8. Unity3D游戏编程-牧师与恶魔 动作分离版

    Unity3D游戏编程-牧师与恶魔 动作分离版 文章目录 Unity3D游戏编程-牧师与恶魔 动作分离版 作业要求 项目配置 项目演示 视频演示 项目下载 文字说明 项目截图 实现过程和方法(算法) ...

  9. 整活~使用webAI做一个网页AR吃豆人小游戏

    一个好习惯,先给结论 使用网页端深度学习框架识别人脸,做一个AR吃豆人小游戏.吃豆人会随着人脸在镜头内的移动而移动,吃完全部豆子即为获胜. 在线体验地址:点我预览 代码地址:点我github 本文首发 ...

最新文章

  1. python+selenium浏览器常用操作(一)
  2. 一次失败的面试,复习一次一致性哈希算法
  3. Python开发服务器巡检系统,东拼西凑用python脚本登录web管理页面做巡检(未实现)...
  4. Vue.nextTick()理解
  5. Spring.NET 1.3.1 正式版已发布
  6. 七种方式教你在 SpringBoot 初始化时搞点事情
  7. logback实现日志按天和大小切分
  8. [Java] 蓝桥杯 BASIC-2 基础练习 01字串
  9. 树莓派禁用SD卡上的swap交换空间
  10. 06-列空间和零空间
  11. 直线度误差 matlab,基于MATLAB的直线度误差数据处理
  12. poj 3280 Cheapest Palindrome (dp)
  13. 超图s3m服务加载时添加token
  14. 如何通过广西税务12366缴纳城乡居民医保费用及下载缴费凭证?
  15. 高数考研归纳 - 空间解析几何
  16. 8.敏捷软件开发框架 - 规模化敏捷框架SAFe
  17. uva 1589 - Xiangqi(象棋)
  18. Linux 访问superio 寄存器,ITE Super IO 学习 - GPIO
  19. [Graphics]自组织植物建模方法(ContinousLassoBrush)
  20. 一个程序员的奋斗txt

热门文章

  1. 服务器搭建——ftp
  2. DNS的工作过程详解
  3. (IS 19)wav2vec: Unsupervised Pre-training for Speech Recognition
  4. 来!带你认识几种最流行的Python编辑器/IDEs
  5. C++日期计算器的实现
  6. Node如何去除短视频水印?
  7. python将excel时间_Python学习笔记(一)Python时间戳与Excel的日期
  8. 微信小程序应用安全分析及设计
  9. C++基础用法—冒号的用法
  10. 【计算机组成原理】计算机系统结构笔记:合集