加速计 & CoreMotion
加速计 & CoreMotion
加速计 & CoreMotion
iOS中的主要传感器 • 接近传感器
• 加速度传感器--又称加速计
- 由于更够带来了更多的直觉游戏体验,基本姿态识别和环境
感知功能,目前在智能手机上应用的非常广泛
- 目前智能手机中基本配备的都是三维线传感器,也就是说,
用来测量x,y,z三个轴上的加速度
- 由于重力分量的干扰,无法仅仅依靠加速度传感器来检测加
速方向的角度,也无法得知手机本身的朝向
• 陀螺仪
- 造价昂贵,目前并未在智能手机中得到普及
- 基于角动量守恒理论,沿着某个特定的坐标轴测量旋转速率 - 误差会累积• 电子罗盘--又称磁力计,或电子指南针
iOS中的主要传感器
加速度传感器 |
电子罗盘 |
陀螺仪 |
接近传感器 |
|
功能 |
通过测量三个 轴的加速度大 小来判断人体 运动 |
通过测量设备 周围地磁场的 强度和方向来 判断朝向 |
通过测量三个 轴的旋转速率 来判断朝向 |
无须物理接触 就判断附近物 体的存在 |
主要局限性 |
受重力干扰大 瞬时误差大 |
误差大,容易 受其他磁场和 金属物体影响 主要用于校正 其他设备 |
误差会累积 长时间读数的 准确性差 |
不通用,大多 数只针对几种 材质 |
应用 |
活动测量 |
导航 |
导航 |
智能省电 |
,, 。
加速计
• 通过iOS设备提供的内置的加速计,可以确定设备什么时候移动、移 动了多少距离以及设备的方向
• 在应用程序中,使用UIAccelerometer类来接收加速计数据,通过类方 法sharedAccelerometer可以获得该类的实例
• 使用加速计需要设置其更新间隔和代理,此后,在指定的时间间隔, 会收到代理方法accelerometer:didAccelerate:的回调
• 该代理方法收到一个指向加速计的指针和一个指向UIAcceleration对象 的指针
• 该加速对象包含:x,y,z和timestamp四个属性,其中x,y,z是设备 在这三个方向上的重力加速度,单位g
加速计坐标系--注意y轴的方向
加速计开发测试需要注意
• 加速计的应用只能在真机上开发测试
加速计演练
• 演练1
- 在加速计回调方法中更新小球视图位置,运行并测试
效果 • 演练2
- 引入QuartzCore.framework方法
- 定义CADisplayLink游戏时钟,并在游戏时钟指定的更新
方法中更新小球视图位置
- 运行并对比两种方式的实现效果
加速计演练小结
• 加速计使用步骤
- 1. 获取共享加速计对象
- 2. 设置加速计数据更新频率 - 3. 设置加速计对象代理
• 让加速计负责速度更新,CADislpayLink负责界面更新的好处
- 1. 游戏效果更加平滑
- 2. 界面表示和游戏逻辑可以得到拆分,便于游戏扩展并引入 MVC设计模式
- 3. 使用时钟更新,需要注意小球位置的修正
• UIAccelerometer虽然已经停止更新,但是目前还是有一定数量 的应用中使用到了该技术
CoreMotion框架
• 在iOS4之前,加速度计由UIAccelerometer类来负责采集工作,而电子
罗盘则由Core Location接管
• 随着iPhone4的推出,由于加速度计的升级以及陀螺仪的引入,与 Motion相关的编程成为重头戏,所以,苹果在iOS4中增加了一个专门 负责该方面处理的框架--Core Motion Framework
• Core Motion不仅能够提供实时的加速度值和旋转速度值,更重要的是, 苹果在其中集成了很多算法,可以直接输出把重力加速度分量剥离的 加速度,省去你的高通滤波操作,以及提供给你一个专门的设备的三 维attitude信息
Core Motion框架结构示意图--MotionManager
Core Motion获取数据的两种方式
• Push(采集所有数据--做运动仿真更好) • Pull(在需要是获取采样数据)
Core Motion Push演练
• Core Motion Push使用步骤
- 1. 实例化Motion管理器
- 2. 判断传感器是否可用
- 3. 设定传感器数据更新频率
- 4. 启动传感器更新,Push方式更新数据
增加新的功能
• 点击屏幕停止或者启动加速计数据采集
使用dispatch_once创建MotionManager的单例
• 好处:
- 线程安全
- 很好满足静态分析器要求
- 和自动引用计数(ARC)兼容 - 仅需要少量代码
• 使用方法,在AppDelegate中定义
@property (strong, nonatomic, readonly)CMMotionManager *sharedMotionManger;!
调整代码
• 从AppDelegate中获得共享运动管理器
- 1. 获得AppDelegate的引用
- 2. 通过AppDelegate的引用获得其中只读的 sharedMotionManager对象引用
回顾
• 使用加速计可以测量设备在x,y,z三个轴上的加速度
• 利用加速计可以设计制作出用户交互体感非常优秀的游戏
作品!
• UIAccelerometer由于重力分量的干扰已经被苹果废弃,不 过由于其使用简单,目前还有不少游戏作品中使用这一技 术
• CoreMotion是苹果公司针对运动特性新推出的一套框架, 经过巧妙的构思可以非常优秀的作品,而且很容易抓住用 户的眼球
• 使用CoreMotion开发的作品,通过苹果官方审批后,如果 作品本身品质优秀,苹果官方很有可能会协助开发者一起 推广!
加速计 & CoreMotion的更多相关文章
- 传感器- 加速计 - CoreMotion
/** * CoreMotion * */ #import "ViewController.h" #import <CoreMotion/CoreMotion.h> ...
- CoreMotion(加速计)
加速计的作用 用于检测设备的运动(比如摇晃) 加速计的经典应用场景 摇一摇 计步器 ********************************** Core Motion获取数据的两种方式 pu ...
- iOS开发-CoreMotion框架(加速计和陀螺仪)
CoreMotion是一个专门处理Motion的框架,其中包含了两个部分加速度计和陀螺仪,在iOS4之前加速度计是由UIAccelerometer类来负责采集数据,现在一般都是用CoreMotion来 ...
- iFIERO - (二)宇宙大战 Space Battle -- SpriteKit 无限循环背景Endless、SpriteKit物理碰撞、CoreMotion加速计
本节主要讲解如何创建无限循环Endless的星空背景(如下图).玩家飞船发射子弹,监测子弹击外星敌机的SpriteKit物理碰撞并消灭敌机,以及应用iOS的CoreMotion加速计移动飞船躲避外星敌 ...
- iOS开发 传感器(加速计、摇一摇、计步器)
一.传感器 1.什么是传感器传感器是一种感应\检测周围环境的一种装置, 目前已经广泛应用于智能手机上 传感器的作用用于感应\检测设备周边的信息不同类型的传感器, 检测的信息也不一样 iPhone中的下 ...
- iOS开发——高级篇——传感器(加速计、摇一摇、计步器)
一.传感器 1.什么是传感器传感器是一种感应\检测周围环境的一种装置, 目前已经广泛应用于智能手机上 传感器的作用用于感应\检测设备周边的信息不同类型的传感器, 检测的信息也不一样 iPhone中的下 ...
- iOS新加速计事件(陀螺仪和加速计)
iOS新加速计事件 [iOS新加速计事件] 1.iOS5.0以前,可以使用UIAcceleration来监听加速计事件. 2.Bug iOS5.0以后,UIAccelerometerDelegate已 ...
- ios开发——实用技术篇Swift篇&加速计和陀螺仪
加速计和陀螺仪 //返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControllerAnim ...
- 10 - 应用程序间通信、本地通知、加速计、URL传输中文
一.应用间通信 URL 调用系统服务: tel:11111 sms:xxx@163.com http:// URL深入 类型://主机:端口/地址?参数 label框等于文字大小快捷键:command ...
随机推荐
- Verilog HDL数组(存储器)操作
本文从本人的163博客搬迁至此. 引用了http://blog.sina.com.cn/s/blog_9424755f0101rhrh.html Verilog HDL中常采用数组方式来对存储器进行建 ...
- Vim操作指南
vim具有6种基本模式和5种派生模式. 基本模式 普通模式 插入模式 可视模式 选择模式 命令行模式 Ex模式 派生模式 操作符等待模式 插入普通模式 插入可视模式 插入选择模式 替换模式 1.移动光 ...
- Beta版本讨论
目录 组员:胡绪佩 组员:何家伟 组员:黄鸿杰 组员: 翟丹丹 组员:周政演 组员:胡青元 组员:庄卉 组员:刘恺琳 组员:何宇恒 组员:刘一好 组员:葛家灿 组员:胡绪佩 总结 通过这次的Beta版 ...
- 小程序 JM
// 本地 // 'https://ly.com/' // 短信验证码参数: let dataValue = { 'type': 1, mobile: '13615814562' }; dataVal ...
- 一本通1644【例 4】佳佳的 Fibonacci
1644:[例 4]佳佳的 Fibonacci 时间限制: 1000 ms 内存限制: 524288 KB sol:搞了大概一个多小时什么结果都没,被迫去看题解,感觉自己菜到家了qaq ...
- ubuntu下java JDK环境配置
ubuntu下配置JDK环境变量ubuntu下的JDK配置本质上和win一样的:1.去官网下载JDK,选择适合自己版本,我下载的版本是jdk-8u121-linunx-x64.tag.gz,官方网址h ...
- linux下彻底卸载mysql 图解教程
linux下彻底卸载mysql 图解教程 1.查找以前是否装有mysql 命令:rpm -qa|grep -i mysql可以看到如下图的所示: 说明之前安装了:MySQL-client-5.5.25 ...
- MT【192】又是绝对值函数
(2018浙江新高考联盟2018第三次联考填空压轴题) 已知$f(x)=x^2+x-2$,若函数$g(x)=|f(x)|-f(x)-2mx-2m^2$有三个不同的零点,则实数$m$的取值范围是____ ...
- 【刷题】BZOJ 3724 PA2014Final Krolestwo
Description 你有一个无向连通图,边的总数为偶数. 设图中有k个奇点(度数为奇数的点),你需要把它们配成k/2个点对(显然k被2整除).对于每个点对(u,v),你需要用一条长度为偶数(假设每 ...
- 【刷题】LOJ 6015 「网络流 24 题」星际转移
题目描述 由于人类对自然资源的消耗,人们意识到大约在 2300 年之后,地球就不能再居住了.于是在月球上建立了新的绿地,以便在需要时移民.令人意想不到的是,2177 年冬由于未知的原因,地球环境发生了 ...