Notifications
Article
使用AR Foundation制作圣诞AR小游戏
Published a month ago
63
0
Daniel Fortes是一名Unity的开发者,他开发了一款资源插件AR+GPS Location,本文他将分享使用AR Foundation如何在十几分钟内开发中一款基于定位的圣诞AR小游戏。
随着AR技术发展以广泛运用,开发者可以在移动端设备上轻松构建增强现实体验。Unity开发了AR Foundation,它支持ARCore,ARKit以及未来新平台的的核心功能,让AR的开发变得更为轻松。
Daniel Fortes热衷于通过使用地理坐标或GPS,让AR与现实世界的定位相结合,这项技术称为基于定位的增强现实。
在圣诞节的时候,Daniel Fortes想给家里的孩子们开发一个有趣的AR小游戏,因此他购买了圣诞节主题的3D资源,使用AR Foundation和AR+GPS Location资源,仅花费十几分钟就开发出了一个精彩的AR圣诞小游戏。

学习准备

请访问Unity Asset Store资源商店下载AR+GPS Location 资源包,请访问:
https://assetstore.unity.com/packages/tools/integration/ar-gps-location-134882
了解Unity的移动端AR生态系统:AR Foundation,ARCore和ARKit,请点击此。

第一步:获取模型

首先获取想在现实世界看到的模型。
在这个项目中使用的资源包是在cgtrader上购买的,该资源包含预打包的Unity项目,因此只要导入项目就能使用3D资源。
然后,我们只需要移动对象来构建想要的内容。在项目中,制作了骑着雪橇的圣诞老人,雪橇由圣诞老人忠诚的驯鹿拉着。
实际效果如下图所示。
然后,我们添加了一些简单的粒子系统,得到下图效果。

第二步: 添加移动效果

项目的大致效果还不错,但还是有点乏味,我们要给它赋予更多活力。
我们打算在雪橇飞行的过程中,使驯鹿进行上下起伏的移动效果。最简单的实现效果是使用正弦函数让驯鹿在Y轴方向上下移动。
我们可以使用下面的代码创建MoveDeers脚本组件。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class MoveDeers : MonoBehaviour { List<GameObject> deers = new List<GameObject>(); public float amplitude = 1.0f; public float speed = 1.0f; float y0; const float step = Mathf.PI / 10; // 使用Start函数进行初始化 void Start () { deers.Add(GameObject.Find("Deer")); deers.Add(GameObject.Find("Deer (1)")); deers.Add(GameObject.Find("Deer (2)")); deers.Add(GameObject.Find("Deer (3)")); y0 = deers[0].transform.localPosition.y; } //Update函数会在每帧调用一次 void Update () { int i = 0; foreach (var deer in deers) { i++; Vector3 localPos = deer.transform.localPosition; localPos.y = y0 + amplitude * Mathf.Sin(i * step + Time.time * speed); deer.transform.localPosition = localPos; } } }
添加组件到对象上,我们就得到了下图效果。

第三步:设置场景

现在我们使用AR Foundation进行场景设置。首先我们使用资源包管理器导入AR Foundation,根据目标平台导入ARKit或ARCore。
从Asset Store资源商店获取并导入AR+GPS Location资源包。
现在创建AR Foundation场景的基本结构。我们需要让二个对象位于场景的根位置:一个带有AR Session组件的AR Session对象,和一个带有AR Session Origin组件的AR Session Origin 对象。
我们还要让AR Session Origin对象成为主摄像机的父对象,并给主摄像机添加二个组件:TrackedPoseDriver 组件和AR Camera Background组件。在TrackedPoseDriver组件中将Pose Source设为Color Camera。
现在,我们为AR+GPS Location设置场景。我们需要添加额外的对象和组件。首先添加带有LocationProvider组件的LocationProvider对象。
LocationProvider组件会管理定位数据,控制更新数据的频率和定位数据的精确度。我们可以调整数值来选取最适合项目的值。
接下来,在AR Session Origin对象中创建对象并命名为ARLocationRoot,给ARLocationRoot对象添加二个组件:ARLocationOrientation组件和ARLocationManager组件。
ARLocationOrientation组件会确保ARLocationRoot对象的坐标系统和基本方向保持同步,从而使Z轴指向正北方向,同时X轴指向东边。ARLocationManager组件确保所有在场景放置的对象位于正确的位置。

第四步:雪橇飞动

我们将使用ARLocationMoveAlongPath组件,使圣诞老人和雪橇沿着预定的地理路线移动。
我们可以选取对象要通过的一组坐标点来构成路径,并设置沿着路径移动的速度。为此,我们首先创建ARLocationPath对象,这是一个ScriptableObject可编程对象,它能保存描述路径的数据,即由点集组成的地理坐标。
现在获取坐标,打开Google Maps,定位到自己的位置,选择“Maps”,单击“Create Map’”,然后就可以通过放置标记来绘制路径,如下图所示。
这样会得到路径的基本形状,然后单击路径点,复制经纬度坐标。
返回到Unity编辑器,依次点击Create/ARLocation/Path来创建新路径。设置定位点的数量,然后从地图上复制粘贴坐标值,并按自己的想法调整Altitude高度值。
请注意:高度值将相对于设备的初始高度,我们可以使用设备的传感器来获取绝对高度,但这样得到的结果通常不准确。
最后,指定路径到StantasSled对象的ARLocationMoveAlongPath组件,这就完成了。

第五步:编译运行

现在我们编译并运行项目,一个有趣的AR圣诞小游戏就产生了,下面的视频是游戏效果。

小结

仅需要简单的五步,我们就使用AR Foundation创作出了一个圣诞小游戏,是不是很简单。
中国的春节马上就要到来了,小编认为大家可以通过本文学习,创作一个类似“财神来到”的AR小游戏体验,为节日更增添一份气氛。
更多Unity教程,尽在Unity官方中文论坛(UnityChina.cn)

Unity China
454
Comments