有趣的AR小游戏制作
环境准备
Unity+Vuforia
需要在Vuforia官网注册,下载SDK并安装,之后获得开发者证书,才能继续操作。
遇到的问题:
- 现在的Vuforia采用*.exe文件安装,需要指定安装到Unity所在文件目录,之后重启Unity,在GameObject选项栏就能找到Vuforia组件了。
- 添加了Vuforia组件后,可能会出现“Vuforia is not enabled”这样的报错,此时需要在Unity的Edit->Project Settings->Player目录下将XR下的所有选项打钩。
具体实现
替换Camera
删去原有的Main Camera,替换为Vuforia的AR Camera。需要为AR Camera添加License Key。
上传识别卡
在官网上的Target Manager中添加一个Device类型的识别卡(用于导出到Android或iOS设备中)。之后,为其添加印版图的图片。
我选择了一张中山大学的明信片,所以使用Single Image类型的Target。之后设置图片宽度和名称即可。从上传之后的Rating值来判断上传的图片是否可以被识别。
下载识别卡模型
将上传的识别卡的模型下载下来,然后导入Unity。
编辑游戏对象
首先添加Vuforia的Image创建识别卡对象,可能会需要设置Database,我下载的版本会自动关联,但是看网上说之前的一些版本需要。
此时就可以添加游戏对象到Scene中了,但是需要注意的是,必须添加到识别卡对象之下,作为子对象。
另外,AR Camera的配置中Database的load在当前版本不需要设置,但是早期版本同样需要额外注意。
实验环境是否配置成功
运行并使用识别卡测试。
视频地址:https://www.bilibili.com/video/av77863412/
导入Lean Touch脚本
使用Lean Touch脚本,使得游戏对象可以检测到触碰事件,并进行相应的变换(包括变大、缩小等等)
制作成Android应用
首先需要在本地配置好Android SDK,因为之前写过Flutter应用,所以本地已经配置好了,然后再Unity的File->Build Settings中选择好Android设备编译。
可能会出现Player Settings错误,此时就在左下角点击进入Player Setting的设置,主要是需要自定义Company Name,Product Name以及Other Settings下的Package Name。
build的时候出现了错误UnityEditor.BuildPlayerWindow+BuildMethodException: 2 errors at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (UnityEditor.BuildPlayerOptions options) ...
尝试了更改Build System,使用自定义签名,签名设置方法参考。最后重启Unity,成功。(最终使用的Build System还是Internal)。
游戏制作
前期准备与之前的操作类似,设置AR Camera、游戏对象。但是由于此次使用无卡识别,所以需要特别调整摄像机和游戏对象位置,使得游戏对象在视图内。另外,因为场景需要,应该为游戏对象设置动画,这在之前的课程已经实践过了,就不再赘述。
写一个负责游戏对象运动的脚本,让游戏对象在一定场景下按特定方式运动。
最终实现的是一个可以检测手机移动状况,从而随着手机移动而移动的AR游戏APP。同时使用Lean Touch脚本,使得游戏对象可以检测到触屏事件,并触发一定的行为,
同时存在三个Scene,包括菜单栏、无卡移动、有卡识别。需要在Build Settings中Add,通过分配的编号,后续可以对Scene进行操作。
实验结果
github地址:https://github.com/SantanderAuhAuh/3D-Game-Learning/tree/master/AR%20%E5%B0%8F%E6%B8%B8%E6%88%8F/AR%20Game
视频地址:https://www.bilibili.com/video/av77876579/