嗯,最近再考虑,CityHunter中,玩家攻略藏宝图时,为了增加可玩性,应该增强在AR部分的游戏性。最近特别火的游戏《Pokemon Go》在打开摄像头以后,可以看到小精灵,实际上,如果这款游戏没有这个功能,那整个游戏还真没有什么游戏的感觉(就是动画、图像之类的元素特别少)。本人比较懒,没有去弄这款游戏,于是跟远在澳大利亚的高中老兄弟咨询了一下这款游戏的情况。

  事实上,《Pokemon Go》的AR元素,实现还是比较简单的。可以理解为,只不过是单纯的打开了摄像头,把背景替换了一下,以前好像是微信还是微信的一个插件,也有这样的功能,打开摄像头,将聊天的背景替换成实景,这么做是为了防止用户顾着聊天不看路= =。。。Pokemon出现的精灵,实际上只是一个2.5D的图片,不是真正的3D建模,如果你开着摄像头围着它绕一圈,是看不到小精灵的背面,不管你怎么转,你能看到的,只不过是一张正面图,当然它可能是带有动画效果,但绝对不是3D的。

  我对CityHunter的在AR攻略宝图时,希望能够得到这样的一个效果:

  举一个栗子,以“反重力场”这个陷阱来说,我希望进入反重力场的玩家,当打开摄像头的时候,必须看到周围(屏幕内)有浮起来的碎石,这个场景类似于《七龙珠》中的超级赛亚人觉醒时,常有的画面。而且用户改变镜头方向,或原地360°转圈,可以看到的不是固定的画面,而是会随着围绕的碎石场景,让一切更加真实。

[暂时找不到更好的,反正就这意思]

  其实要实现起来,倒也不会很困难。但是这也意味着,不能再简单地在Android Studio里制作了,当然可能有大神一样做得到吧。要处理这样的需求,最简单直观的办法,我想应该是引入Unity3D,思路大概如此:

  首先根据不同的陷阱,制作相应的场景,因为每一种陷阱,都是有对应的有效范围,所以场景也不需要做成无限大的,只需要根据陷阱的作用范围来设计3D场景的大小,然后将主摄像机的Transform属性中的各个值,与手机的加速传感器、陀螺仪进行绑定。从而实现手机带着镜头转,第一人称的感觉(体感操作,抛弃鼠标也可以很6的进行第一人称游戏),场景内的所有碎石,使用3D模型,并且这种物体重复性大,只需要用PreFab[预设]去复制,性能也不会有太大的影响。

  只要用户进入陷阱的有效范围,我们可以根据GPS定位及地图传来的数据,判断玩家是从场景的哪个位置进入到陷阱中,这样就可以实时更新玩家在场景中的位置,而更改周围碎石的透视效果(近大远小)。当玩家离开陷阱有效范围时,销毁这个场景中的特效。

  另外说一个事情:

很多Unity的教程,都说Android的项目不能导出源码,不方便进行二次开发,其实不是这样的(至少当下版本已经不是这样了,而且这一点误导了我很久,让我浪费了很多时间。所以大家看教程的时候,要注意那些博文发表的时间,和软件的版本),我用的是Unity5.3.5,在导出Android项目的时候,一样可以选择导出成Google Project,导出来的项目就是一个很普通的Android项目,但是目录结构是以ADT,就是Eclipse的,不是Android Studio的,这有点蛋疼,因为毕竟现在已经提倡使用Android Studio进行安卓开发了。无伤大雅吧,只能说,强迫症的话,确实有点难受。

  

【CityHunter】通过Unity3D来制作游戏中AR部分的内容的更多相关文章

  1. Unity制作游戏中的场景

    Unity制作游戏中的场景 1.2.3  场景 在Unity中,场景(Scene)就是游戏开发者制作游戏时,所使用的游戏场景.它是一个三维空间,对应的三维坐标轴分别是X轴.Y轴和Z轴本文选自Unity ...

  2. [Unity]制作游戏中名字板的过程记录

    先大概说一下需求: 1 每个模型上都要有名字板:人.怪.npc等等. 2 名字板上会显示:名字(文字).血条(图片)等 3 因为是透视相机,名字板离得太近会变得超大,且主角移动,名字板的位置相对于相机 ...

  3. Unity3D 2D游戏中寻径算法的一些解决思路

    需求 unity3d的3d开发环境中,原生自带了Navigation的组件,可以很便捷快速的实现寻路功能.但是在原生的2d中并没有相同的功能. 现在国内很多手机游戏都有自动寻路的功能,或者游戏中存在一 ...

  4. Unity中制作游戏的快照游戏支持玩家拍快照

    Unity中制作游戏的快照游戏支持玩家拍快照 有些游戏支持玩家“拍快照”,也就是将游戏的精彩瞬间以图片的形式记录下来的功能.这个功能比较有趣,而且以后的用途也会很广,为此本节打算介绍:截取矩形区域内游 ...

  5. Unity3D RTS游戏中帧同步实现

    帧同步技术是早期RTS游戏常用的一种同步技术,本篇文章要给大家介绍的是RTX游戏中帧同步实现,帧同步是一种前后端数据同步的方式,一般应用于对实时性要求很高的网络游戏,想要了解更多帧同步的知识,继续往下 ...

  6. 【Unity3d游戏开发】游戏中的贝塞尔曲线以及其在Unity中的实现

    RT,马三最近在参与一款足球游戏的开发,其中涉及到足球的各种运动轨迹和路径,比如射门的轨迹,高吊球,香蕉球的轨迹.最早的版本中马三是使用物理引擎加力的方式实现的足球各种运动,后来的版本中使用了根据物理 ...

  7. 在unity3d游戏中添加中文语音控制

    最近打算尝试一下OLAMI在游戏中应用的可能性,这里做一下记录. unity官方教程中的几个项目很精简,但看起来很不错,里面有全套的资源.最后我选择了tanks-tutorial来做这个实验. 下载和 ...

  8. Unity3D游戏开发——收集当前关卡游戏中分散的物件

    运用场景 许多游戏中会有一些供玩家拾起的物件,例如装备.血包.道具等.当玩家与物件进行碰撞后,则会进入仓库. 本篇介绍了简单的碰撞过程. 原理 基本的碰撞机制,用到OnTriggerEnter()碰撞 ...

  9. unity3d模型制作规范

    1. 单位,比例统一 在建模型前先设置好单位,在同一场景中会用到的模型的单位设置必须一样,模型与模型之间的比例要正确,和程序的导入单位一致,即便到程序需要缩放也可以统一调整缩放比例.统一单位为米. 2 ...

随机推荐

  1. [转]HDFS中JAVA API的使用

    HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的文件进行操作的过程. 对分HDFS中的 ...

  2. ORACLE判别字段是否包含中文

    在ORACLE数据库中如何查找那些字段里面包含中文的数据记录呢,有时候就是有这样的特殊需求,下面整理了一些判别字段中包含中文记录的几个方法 1:使用ASCIISTR函数判别   ASCIISTR函数说 ...

  3. fdisk添加分区引起的Linux Error: 22: Invalid argument

    在Linux服务器(虚拟机)上使用fdisk添加分区.格式化分区后,遇到了Linux Error: 22: Invalid argument错误,操作步骤如下所示 [root@oracle-serve ...

  4. Shell : debug

    调试shell脚本的方法: 使用命令:sh -x yourShell.sh

  5. 【转】Hive 基础之:分区、桶、Sort Merge Bucket Join

    Hive 已是目前业界最为通用.廉价的构建大数据时代数据仓库的解决方案了,虽然也有 Impala 等后起之秀,但目前从功能.稳定性等方面来说,Hive 的地位尚不可撼动. 其实这篇博文主要是想聊聊 S ...

  6. 分布式搜索引擎ElasticSearch+Kibana (Marvel插件安装详解)

    在安装插件的过程中,尤其是安装Marvel插件遇到了很多问题,要下载license.Marvel-agent,又要下载安装Kibana 版本需求 Java 7 or later Elasticsear ...

  7. android 拔打电话功能

    private void phoneCall(String num) { String phoneNum = "tel:" + num; Uri smsToUri = Uri.pa ...

  8. [WPF系列]-DynamicResource与StaticResource的区别

    探讨: 1.当引用资源时,选择StaticResource还是DynamicResource的考虑因素: (1)在哪里创建资源?(资源的范围或层级) a. 资源是在一个Page/Canvas/Wind ...

  9. Jsp 错题分析

    ArrayList删除元素通过RemoveAt(int index)来删除指定索引值的元素 运行时异常都是RuntimeException类及其子类异常,如NullPointerException.I ...

  10. 嵌入式Linux驱动学习之路(十六)输入子系统

    以前写的一些输入设备的驱动都是采用字符设备处理的.问题由此而来,Linux开源社区的大神们看到了这大量输入设备如此分散不堪,有木有可以实现一种机制,可以对分散的.不同类别的输入设备进行统一的驱动,所以 ...