Unity AR

带你开发类似Pokemon Go的AR游戏(1)

96 
程序员联盟  关注
2016.08.05 21:39*  字数 1975  阅读 2497 评论 8
Unity AR_第1张图片

-- 作者 谢恩铭 转载请注明出处
公众号「程序员联盟」ProgrammerLeague
原文:http://www.jianshu.com/p/cc615cce0576


这一课内容实在太多,如果写成文章,我需要截图几百张,因此我把这套课程录制成了视频教程,发布在慕课网上,完全免费:http://www.imooc.com/learn/844

Unity AR_第2张图片

前言


Pokemon Go, 译名"精灵宝可梦":

对于Pokemon Go,大家应该不陌生,是「口袋怪兽」的意思,之前火爆全球。由 Niantic Labs 这个 Google 旗下的公司开发,联合任天堂等公司制作发行。
这款游戏的下载量在 App Store 和 Android 的 Google Play 上都达到上亿次。任天堂股价更是大涨了几百亿美元。
这个游戏简单的说就是可以让你用移动设备在全世界(除了我们伟大的祖国和一些国家…)地图上抓虚拟的宠物小精灵。

近日, Pokemon Go的热潮还在继续,虽然没有之前那么火爆,但我身边好几个朋友和同事都开始玩这款游戏了。

我没玩过这款游戏,看过别人玩。我对AR和VR技术感兴趣,而不是游戏本身。

我才知道,之前法国的App Store还没有正式上架这款游戏。所以法国人还玩不到这款游戏。当然了,在法国的中国人都知道可以去其他渠道下载,但法国人不知道(是蠢萌吗?:P)。

昨天我心血来潮,想着:这Pokemon Go到底是什么游戏引擎开发的呀?就去网上查了一下。

原来这款火遍全球,拉动任天堂股价好多亿的游戏是Unity 3D开发的,搭配其他SDK,比如地图,AR,坐标转换等。

自己动手


因此,我很想自己也来做一个简易的Pokemon Go的小游戏,可以有一只精灵在手上飞舞。如下图这样, 会扇动翅膀的:

Unity AR_第3张图片
仿Pokemon Go小游戏

要做这样一个小游戏不是很难。我会带大家做一个,今天先把游戏开发环境搭建起来,下载所用素材。下一课就可以开发啦, 之后会把项目开源在我的Github上。

说起Unity 3D,我还是挺有感情的。

Unity 3D是一个著名的游戏引擎,它很年轻,但已享誉世界。

当然了,我绝对不希望大家沉迷游戏。可以看我之前的文章:【现身说法】玩游戏不如自己开发游戏

全球有不少游戏是用Unity 3D开发的,例如著名的暴雪的《炉石传说》,《跑跑卡丁车》手机版,《神庙逃亡 2》,《愤怒的小鸟 2》,还有《坎巴拉太空计划》等, 再到现在的Pokemon Go。

2013年我第一次接触Unity 3D,那是参加Intel(英特尔)携手CSDN举办的Perceptual Computing Challenge(感知计算大赛),比赛在全球还是引起了很大反响。

我用Unity 3D结合英特尔的感知摄像头和感知计算SDK, 开发了一个模仿Fruit Ninja(水果忍者)的游戏, 那时我还太稚嫩(现在也没好到哪里去好嘛), 没有获奖。源码在这个链接 https://github.com/frogoscar/MyFruitSlasher_20130923_final, 不过因为要安装2013年那时的Interl感知SDK, 还需要NGUI, 要运行还需要Intel感知摄像头(那时候比赛第一阶段结束后被选上, Intel免费寄来的), 所以早都不更新了, 大家就吐槽一下就好了, 哈哈。

现在回头看看,那时候一些优秀参赛者开发的游戏就类似AR(增强现实)。

大家可以参看这个链接, 是获奖选手或队伍的 Showcase (展示场所):
https://software.intel.com/sites/campaigns/perceptualshowcase/winners.htm

例如:

获得游戏组第一名的是来自中国的参赛队(为国争光了),他们开发了一个霸王龙养成游戏:

https://software.intel.com/sites/campaigns/perceptualshowcase/arpedia.htm

有意思哦!

Unity 3D的优势是开发上手很快, 我2014年和一个在法国的朋友一起用Unity 3D制作了几个手游, 可以看游戏蛮牛的这个链接 http://www.manew.com/thread-19397-1-1.html, 是对我们的报道。我们还自己组建了小小的工作室, 可惜后来朋友回国发展了, 就没有继续开发游戏。

我在2014年用的Unity 3D还是4.5.x版本, 后来Unity 3D 5震撼登场, 可惜我没继续开发游戏。而是把时间用在Linux嵌入式和Android开发学习上。

为什么说Pokemon Go是Unity 3D开发的呢? 可以来启动游戏看一下, 首先是Niantic的Splash界面:

Unity AR_第4张图片
Niantic的Logo

各位Pokemon Go的玩家很熟悉吧~

而后有个一闪而过, 可能大家忽略的启动画面, 就是表明这款游戏是用Unity 3D打造的(made with Unity就是英语“用Unity来制作”的意思):

Unity AR_第5张图片
Unity制造

哈哈, 看到Unity 3D的Logo了。

那么我们的AR小游戏的开发环境都需要些什么呢?

  1. Unity 3D: 必备啦, 最新版是5.4.0f3
  2. 一款AR引擎: 只要适配Unity 3D, 都可以
  3. 素材: 提供了, 当然你也可以自己设计制作

安装Unity 3D


Unity 3D可以安装在Windows, Mac OS X或Linux中, 但是对Linux支持貌似还不是很好, 官网没给出Linux的个人版下载链接(当然了, 你可以自己百度或Google, 有Linux的版本的)。

我们下载个人版(免费, 其他都老贵了)的Unity 3D:

下载链接: https://store.unity.com/download?ref=personal

请适配你的操作系统版本, 例如Windows 32位版请安装32位的Unity 3D。

下载后安装, 就和安装QQ什么的没太大区别, 不过最好不要装在Windows的C盘, 因为Unity 3D很大, 有好几个GB。

安装AR引擎SDK


安装Vuforia (它目前刚发布的6.0版新增了支持64位的Windows版Unity 3D。Mac OS X版的Unity 3D倒是64位和32位都可以...)
https://developer.vuforia.com/downloads/sdk

或者安装国产的EasyAR(支持64位的Windows版Unity 3D)
http://www.easyar.cn/

EasyAR实现步骤:
1,登录 http://www.easyar.cn/ ,注册帐号,点击首页导航“开发”选项(官方手册这里有个坑,没有提示点击开发...);
2,申请Licence Key,然后显示。
3,在Unity3d中导入EasyAR 项目实例(HelloAR),填入KEY。
4,导入模型,拖拽到场景。
5,替换识别图,很好找。

素材


https://pan.baidu.com/s/1qYlVSPe (皮卡丘模型)
https://pan.baidu.com/s/1bBB5Au (喷火龙(其中的fbx文件带动画))

我也把皮卡丘和喷火龙的素材上传到了我的 Github 账户,地址是:https://github.com/frogoscar/pokemon_ar

 
   

安装Vuforia插件到Unity 3D中

上一课我们简单地介绍过了Vuforia,其实这个产品是高通公司(Qualcomm )旗下的。

Vuforia不仅可用于创建增强现实应用,更可以支持整合了AR增强现实和VR虚拟现实的混合现实应用程序。

Unity 3D的Vuforia扩展插件可以使开发者非常方便地创建AR/VR应用和游戏。

要能使用此插件开发,如果你英语不错,可以直接参考Vuforia官网的安装教程:

http://library.vuforia.com/getting-started (这个是配置AR开发环境的总文档,里面有Unity 3D的配置,Visual Studio(C++)的配置,XCode (C++), Android Studio (Java/C++)的配置)。

今天我们暂不研究其他平台,先来看如何把Vuforia安装进Unity 3D中。

http://library.vuforia.com/articles/Solution/Installing-the-Unity-Extension http://library.vuforia.com/articles/Solution/Compiling-a-Simple-Unity-Project

我们下载Unity 3D的Vuforia扩展插件。

要下载Vuforia官网的软件,必须先注册一个免费账号,注册很简单。注册完毕,登录。

进入 https://developer.vuforia.com/downloads/sdk

点击Download for Unity。

下载之后的文件名字是 vuforia-unity-6-0-112.unitypackage

如何安装呢?

看这里:http://library.vuforia.com/articles/Solution/Installing-the-Unity-Extension

步骤是:

  1. 下载Vuforia的Unity插件 (已下载,就是vuforia-unity-6-0-112.unitypackage)
  2. 打开你的Unity项目,或者创建一个新项目(已完成)
  3. 导入Vuforia的Unity插件有两种方法:双击vuforia-unity-6-0-112.unitypackage文件,或者在Unity的菜单栏选择Assets -> Import Package -> Custom Package,然后选择vuforia-unity-6-0-112.unitypackage。
  4. 导入之后,Vuforia扩展会被安装进你当前的项目里,你的项目会多出一些文件夹

5.

注册和导入Vuforia证书

注册Vuforia证书

我们看这个链接

http://library.vuforia.com/articles/Solution/Compiling-a-Simple-Unity-Project

要使用Vuforia,需要生成一个License Key(证书密钥),就跟我们平时用微软的Windows操作系统需要一个证书是一样的。

需要依次做两个步骤:

  1. Create a License Key : 生成一个证书密钥。
  2. Add the License Key to your Vuforia App : 将生成的证书密钥添加到你的Vuforia应用。

首先我们来做第一步,进入以下链接:

http://library.vuforia.com/articles/Solution/How-To-Create-an-App-License

生成一个证书密钥有以下步骤(套路还挺多呀,果然做开发不容易。我走过最长的路,是你们的套路~):

  1. Choose a Project Type:选择项目类型。
  2. Select an application type if you are developing a Consumer or Enterprise application : 如果上面的项目类型你选择的是Consumer或Enterprise,那么需要选择一个应用类型。
  3. Define a name for your app :给你的应用起个名字。
  4. Select the device type that your app will be installed on:选择将你的应用安装到哪种类型的设备。
  5. Choose a licensing option based on your requirements:根据你的需要,选择证书选项。
  6. Provide your Billing Information if you've chosen to use a paid license:如果你选择的是付费的证书,那么需要填写付款信息。
  7. Obtain your license Key:生成证书密钥。

首先,我们进入证书管理器:License Manager

如上图所示,目前我的Vuforia账户的证书管理器中还没有证书密钥,我们点击Add License Key按钮来添加一个。

https://developer.vuforia.com/targetmanager/licenseManager/createLicense

可以看到,我们有三种项目类型可以选:

  • Development : 开发类型。应用不发布。
  • Consumer : 消费者类型。应用会发布,供消费者使用。
  • Enterprise : 企业类型。应用会发布,供公司的雇员使用。

我们来看看这些类型的价位:

https://developer.vuforia.com/pricing

可以看到Development类型是免费的。

其他两种都是要付费的。企业类型还需要联系商讨价格明细。

上图中我们看到可以安装到的操作系统平台是Android,iOS或UWP。

前两个我们很熟悉,Android和苹果的iOS系统。

UWP是什么呢? UWP其实是Universal Windows Platform,通用微软平台。(就瞧微软1%都不到的移动市场占有率...呵呵)

因为我们只需要开发给自己来学习和演示,并不需要发布,因此选择Development。

https://developer.vuforia.com/targetmanager/licenseManager/createLicense

 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   

选择Development后,会跳出一个子页面,让我们填写项目的明细(Project Details):

  1. App Name:应用名称。随便填。我们这里填了Pokemon
  2. Device : 设备类型。Mobile表示移动设备,Digital Eyewear(数字眼镜)表示。我们选择Mobile
  3. License Key :No Charge表示免费

点击Next按钮进入下一步:













需要勾选那个小方框(By clicking...),是同意条款。

点击Confirm(确认)

可以看到,我们的新证书密钥已经生成,就是上图中的Pokemon。

点击Pokemon蓝色字样,进入证书密钥:












之后,在Unity的Vuforia应用开发时,把上面方框里那一大段字符黏贴到相应地方即可。

添加AR摄像头到场景中

我们回到Unity中。

使用Unity进行过开发的朋友一定知道,场景里需要有一个摄像头,摄像头的类型有多种,不过得有一个,用来提供玩家的视角。

我们用Vuforia插件来开发AR应用,也需要AR类型的摄像头。

打开之前我们创建的Unity项目(UnityPokemon),我们已经添加了Vuforia的Unity插件到这个项目中。

不过目前此项目的场景中的摄像头还是默认的Unity项目的摄像头:

也就是上图左边Hierarchy窗口中的Main Camera(主摄像头)。

这下它是对着正前方的,因此看到的蓝蓝的天空(Skybox)。

我们需要先把这个Main Camera删除,添加Vuforia的AR Camera。

要删除Main Camera很简单:选中Main Camera,单击键盘上的Delete按键即可。或者也可以用鼠标右键点击Main Camera,然后在弹出的列表中选择“Delete”即可。








删除之后,我们再看Scene窗口,发现摄像头已经没有了。

而我们玩家的视角也看不到任何东西了,点击切到Game窗口,会发现黑乎乎一片:

no camera rendering 表示 “没有摄像头渲染”。

我们切回Scene窗口中,可以看到Hierarchy窗口中只剩一个Directional Light(“定向光”,用于照亮我们的场景,没有真正的光源坐标,放置在场景任何地点都不会影响光的效果。如果没有光源,即使有摄像头,玩家看到的也是黑乎乎一片)了:

我们要添加Vuforia的AR摄像头,它在哪里呢?

之前我么已经将Vuforia的Unity插件安装到我们的项目中了,因此已经有了Vuforia的AR开发素材,其中就有AR摄像头。

依次点击Project窗口中的Vuforia->Prefabs,即可看到里面有ARCamera

将这个ARCamera拖动(鼠标左键选中, 不放开, 把ARCamera拖动到我们的Scene窗口中即可)到我们的Scene中:

可以看到Hierarchy窗口中新出现了一个摄像头,是ARCamera。

导入证书到AR应用


http://library.vuforia.com/articles/Solution/How-To-add-a-License-Key-to-your-Vuforia-App要将我们之前生成的Vuforia的证书密钥导入到我们的AR项目,只需要将那一长串证书密钥黏贴到ARCamera的VuforiaBehaviour组件的App License Key的方框中。如下:

填入场景名称,例如我们填Scene1




你可能感兴趣的:(unity)