cocos2d-x 调用CMMotionManager,获取三轴陀螺仪数据
来源:互联网 发布:三网定位软件 编辑:程序博客网 时间:2024/06/05 03:14
猴子原创,转载请注明出处。谢谢!
原文地址:http://blog.csdn.net/yanghuiliu/article/details/7030384
陀螺仪
从Iphong4开始,iphone4装载了陀螺仪。据乔布斯所介绍,该装置可以让iPhone4感知人体的移动方向,结合重力感应、加速感应装置可以给iPhone 4提供前所未有的完美游戏体验!
陀螺仪的作用简单点说就是可以跟踪位置变化,只要你在某个时刻得到了当前所在位置,然后只要陀螺仪一直在运行,根据数学计算,就可以知道你的行动轨迹。所以陀螺仪最常见的应用就是导航仪,在GPS没有信号时,通过陀螺仪的作用仍然能够继续精确导航。
在三维电子罗盘中就用到陀螺仪,不仅具有指南针功能,还可以实现倾角的测量,和陀螺仪类似,站在一个斜坡上,可以计算出这个斜坡的角度;有点像玩虚拟飞机的时候的飞机位置平衡仪(不知道那玩意是不是这样叫。呵呵)
这两个东西要比重力感应高级的多,也是未来手机应用中的主流,全新的控制方式,更有趣的应用,都会随之而诞生。
这是我找的一个陀螺仪的图,itunes上有个应用就是个陀螺仪,忘记叫撒了,需要的可以去找找看。介绍就这些了,具体的大家google下。
Roll(左右倾斜)、Pitch(前后倾斜)、Yaw(左右摇摆),陀螺仪重要的三个数据
现在开始实现:
一。加载CoreMotion.framework
在工程的Frameworks目录下可以看到默认加载的库,没有CoreMotion.framework。
点击工程的TARGETS,点击右边的Build Phases,展开Link Binary With Libraries。里面看到你工程的加载库,默认没有CoreMotion.framework,这个截图是我已经加了的。
点击左下方的+号,添加我们要的framework。
OK,加载完毕。
二、实现
在你需要MotionManager的类中加入头文件,
#include<CoreMotion/CoreMotion.h>
#import<CoreFoundation/CoreFoundation.h>
注意,由于motionManager使用OC写的,所以把cpp改成mm后缀,头文件不要加到.h里面,在mm文件中加入上面引用的头文件。
初始化MotionManager:
//请在mm的头文件中申明一个void* m_motionManager;用来保存局部的motionManager对象,将它作为全局使用。
voidARGameLevel::initMotion(){
CMMotionManager *motionManager = [[CMMotionManageralloc] init];
motionManager.deviceMotionUpdateInterval =1.0/60.0;
if (motionManager.isDeviceMotionAvailable) {
[motionManagerstartDeviceMotionUpdates];
}
m_motionManager=(void*)motionManager;
schedule(schedule_selector(ARGameLevel::updateMotion));
}
//不停输出yaw roll pitch的值。
voidARGameLevel::updateMotion(){
CMMotionManager* temMotion=(CMMotionManager*)m_motionManager;
CMDeviceMotion *currentDeviceMotion = temMotion.deviceMotion;
CMAttitude *currentAttitude = currentDeviceMotion.attitude;
float yaw = roundf((float)(CC_RADIANS_TO_DEGREES(currentAttitude.yaw)));
float roll = roundf((float)(CC_RADIANS_TO_DEGREES(currentAttitude.roll)));
float pitch = roundf((float)(CC_RADIANS_TO_DEGREES(currentAttitude.pitch)));
}
上面的yaw roll pitch就是我们需要的值了,它会实时随着你手机的状态改变而改变。
大家可能会想,这玩意好像没有什么用处。我玩意在游戏中还没怎么使用,但以后肯定会非常普及的,我业余做的游戏使用AR虚拟现实技术,里面角色在现实世界的位置就是靠陀螺仪定位的。
- cocos2d-x 调用CMMotionManager,获取三轴陀螺仪数据
- cocos2d-x 调用CMMotionManager,获取三轴陀螺仪数据
- CMMotionManager加速度和陀螺仪
- iOS CMMotionManager之加速计、陀螺仪
- 大话三轴陀螺仪
- CMMotionManager
- Cocos2d-x调用Java
- cocos2d-x Jni调用
- 【Cocos2d-x lua篇004】获取Lua表结构数据
- cocos2d-x 获取摄像头
- cocos2d-x 获取日期
- 姿态解算知识(三)-陀螺仪加速度计6轴数据融合
- iOS CMMotionManager之感知设备移动数据
- 三轴陀螺仪MPU3050驱动解析
- 三轴陀螺仪MPU3050驱动解析
- 【转载】HTML5 控制装置陀螺仪 ( 三轴 )
- cocos2d-x 数据存储
- Cocos2d-x数据模块
- Trustee
- 面试关键字
- java读取文件,中文乱码
- win7 mac 时间不一致
- python捕获异常
- cocos2d-x 调用CMMotionManager,获取三轴陀螺仪数据
- [HTML] 框架
- 图文详解Silverlight访问MSSQL数据库
- Python 入门笔记
- WCF RIA Services
- Oracle中使用游标的两个例子
- 解析routeviews工具
- 有些事儿
- struts 2 的SessionAware接口使用 .