开发一个最简单的Cardboard虚拟现实应用(四)做一个Cardboard第一人称控制器
[开源互助-原创文章,转载请说明出处]
第三帖中已经创建了一个cardboard自带的demo应用,但它是不能移动的,玩家只能站在原地,通过头部转动来观察四周,除此之外,玩家并没有更多的手段与游戏场景进行交互。本帖将描述如何使用蓝牙手柄实现玩家的位置移动,包括前、后、左、右,跳跃等动作。
第一步:首先我们得有一个第一人称角色在场景中,因此,导入UNITY自带的第一人称模型包:

导入场景后,在项止浏览窗口中:

第二步:将第一人称控制器下的prefab拉入到场景中:

如下:

第三步:移除场景中第一人称控制器自身的maincamera,同时将cardboardmain拉到该第一人称控制器的下面:

稍微调整cardboardmain在父物体中的坐标,使其移到第一人称的上端:

第四步:开始修改第一人称控制器的脚本,有以下几点需要修改:
1、之前第一人称的视线是跟随鼠标移动,现在要使其跟随cardboard跟踪到的头部姿态的运动而移动;
2、之前第一人称的前后左右移动是由键盘上的控键控制,现在要由蓝牙手柄上的按键来控制;
动手:
1、使第一人称的视线其跟随cardboard跟踪到的头部姿态的运动而移动;
在FirstPersonController.cs中的update函数中去掉rotateview(这里就是实现鼠标控制):

同时初始化也去掉:

在Cardboard\Scripts\CardboardHead.cs中的UpdateHead函数中,根据获取到的头部转动数据来控制第一人称的Y轴转向:

这样就实现了使用cardboard的头部转动数据来控制第一人称头部转动的效果。
2、使用蓝牙手柄上的按键来控制第一人称的前后左右移动;
蓝牙手柄被android系统识别手,是作为一种键盘设备来对待的,也就是说,我们无需再为其开发专用的插件,而unity3d中已为其设计了相应的按键事件来响应蓝牙手柄上按键的按下,因此,首先要弄清手上的蓝牙手柄的各个按键都对应UNITY3D中哪个按键事件,可以写一个小demo,用来将按下的按键值显示在屏幕上。
我的蓝牙手柄在unity3d中的键值映射关系如下:

有了以上映射关系后,再找到代码中控制第一人称移动和跳跃的地方,修改之:
在FirstPersonController.cs中

在FirstPersonController.cs中

一般游戏中会使用手柄左前端上面的按键来控制角色的走动或者跑动,修改如下:
在FirstPersonController.cs中

这样,就实现了前面提到的两个目标。
再编一个apk试试吧,enjoy it!
开发一个最简单的Cardboard虚拟现实应用(四)做一个Cardboard第一人称控制器的更多相关文章
- 改造u3d第一人称控制器,使之适合Cardboard+蓝牙手柄控制
一.在u3d编辑器中删除FPSController游戏对像中自带的Camera: 二.在u3d编辑器中将CardBoardMain游戏对像添加到FPSController的子物体: 三.修改脚本: 1 ...
- 使用AngularJS 进行Hybrid App 开发已经有一年多时间了,这里做一个总结
一.AngularJS 初始化加载流程 1.浏览器载入HTML,然后把它解析成DOM.2.浏览器载入angular.js脚本.3.AngularJS等到DOMContentLoaded事件触发.4.A ...
- Hello,Cardboard!!-如何开发一个最简单的Cardboard虚拟现实应用(一)
[原创文章,转载请注明出处,谢谢 !] 温馨提醒,本篇第一节主要介绍cardboard虚拟现实系统的组成,如果只想看如何开发的具体步骤请直接跳到第二节^_^ 前述:恕我啰嗦一下,主要照顾对cardbo ...
- SLAM+语音机器人DIY系列:(三)感知与大脑——6.做一个能走路和对话的机器人
摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过 ...
- 怎么做一个bat文件
怎么做一个bat文件 | 浏览:639 | 更新:2014-11-25 17:02 1 2 3 4 5 6 7 分步阅读 其实做一个.BAT文件很简单,下面我就以做一个清除系统垃圾.BAT文件为例,给 ...
- 请问IOS中做一个手机网站的app壳复杂吗?
公司开发了一个平台,手机网站已经做出来了,想开发一个苹果应用app,但公司没人会IOS开发,为了减小成本,现在想直接做一个壳来加载手机网站,请问在ios中复杂吗?是否有相应的控件直接加载url就行? ...
- 用RecyclerView做一个小清新的Gallery效果 - Ryan Lee的博客
一.简介 RecyclerView现在已经是越来越强大,且不说已经被大家用到滚瓜烂熟的代替ListView的基础功能,现在RecyclerView还可以取代ViewPager实现Banner效果,当然 ...
- 记 FineUI 官方论坛所遭受的一次真实网络攻击!做一个像 ice 有道德的黑客!
在开始正文之前,请帮忙为当前 排名前 10 唯一的 .Net 开源软件 FineUI 投一票: 投票地址: https://code.csdn.net/2013OSSurvey/gitop/code ...
- 使用node.js做一个自用的天气插件
var request = require('request') var url = 'http://www.baidu.com/home/xman/data/superload' var cooki ...
随机推荐
- 制作ubuntu U盘安装盘
sudo dd if=ubuntu.iso of=/dev/sdb2 sudo syslinux /dev/sdb1
- 基于社交网络的情绪化分析IV
基于社交网络的情绪化分析IV By 白熊花田(http://blog.csdn.net/whiterbear) 转载需注明出处,谢谢. 前面进行了微博数据的抓取,简单的处理,类似度分析.后面两篇进行学 ...
- c 链表之 快慢指针 查找循环节点(转)
上面分析了 根据这张图 推倒出 数学公式. 刚接触 不能一下弄明白.下面结合上面文章的分析.仔细推倒一下 , 一般设置 快指针 速度是 慢指针的2倍.及 快指针每次遍历两个指针, 慢指针每次遍历1个指 ...
- 设计模式入门之原型模式Prototype
//原型模式:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象 //简单来说,当进行面向接口编程时,假设须要复制这一接口对象时.因为不知道他的详细类型并且不能实例化一个接口 //这时就须要 ...
- YII 多子域名同步登录
a.meylou.com和b.meylou.com不做登录.c.meylou.com这个专门做用户登录.c站登录之后a,b站点同时登录. 第一步:修改php.ini配置文件,把cookie_domai ...
- 深入理解JVM:HotSpot虚拟机对象探秘
对象的创建 java是一门面向对象的语言.在Java程序执行过程中无时无刻有Java对象被创建出来.在语言层面上,创建对象(克隆.反序列化)一般是一个newkeyword而已,而在虚拟机中,对象的创建 ...
- [ASP.NET MVC 小牛之路]05 - 使用 Ninject实现依赖注入
在[ASP.NET MVC 小牛之路]系列上一篇文章(依赖注入(DI)和Ninject)的末尾提到了在ASP.NET MVC中使用Ninject要做的两件事情,续这篇文章之后,本文将用一个实际的示例来 ...
- WPF使用HierarchicalDataTemplate绑定Dictionary生成TreeView
Dictionary中的<string, CustomeType>CustomeType是一个集合,将其绑定生成一棵树,树的第一层节点是Dictionary的Key,第二层是Custome ...
- REST RPC HTTP vs 高性能二进制协议 序列化和通信协议
edisonchou https://mp.weixin.qq.com/s/-XZXqXawR-NxJMPCeiNsmg .NET Core微服务之服务间的调用方式(REST and RPC) Edi ...
- node-sass 安装失败win32-x64-48_binding.node
升级了nodejs的版本,原项目的node-sass模块启动安装不了. 下载对应的win32-x64-xx_binding.node https://github.com/sass/node-sass ...