UIAccelerometer 加速计

UIAccelerometer加速计是用来检测iphone手机在x.y.z轴三个轴上的加速度。要获得此类调用:

UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];
同时,你需要设置它的delegate。
UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];
accelerometer.delegate = self;
accelerometer.updateInterval = 1.0/60.0;
委托方法:- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration中的UIAcceleration是表示加速度类。包含了来自加速计UIAccelerometer的真是数据。它有3个属性的值x、y、z。iphone的加速计支持最高以每秒100次的频率进行轮询。此时是60次。
1) 应用程序可以通过加速计来检测摇动,如:用户可以通过摇动iphone擦除绘图。
也可以用户连续摇动几次iphone,执行一些特殊的代码:
- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
static NSInteger shakeCount = 0;
static NSDate *shakeStart;
NSDate *now = [[NSDate alloc] init];
NSDate *checkDate = [[NSDate alloc] initWithTimeInterval:1.5f sinceDate:shakeStart];
if ([now compare:checkDate] == NSOrderedDescending || shakeStart == nil)
{
shakeCount = 0;
[shakeStart release];
shakeStart = [[NSDate alloc] init];
}
[now release];
[checkDate release];
if (fabsf(acceleration.x) > 2.0 || fabsf(acceleration.y) > 2.0 || fabsf(acceleration.z) > 2.0)
{
shakeCount++;
if (shakeCount > 4)
{
// -- DO Something
shakeCount = 0;
[shakeStart release];
shakeStart = [[NSDate alloc] init];
}
}

}
2) 加速计最常见的是用作游戏控制器。在游戏中使用加速计控制对象的移动!在简单情况下,可能只需获取一个轴的值,乘上某个数(灵敏度),然后添加到所控制对象的坐标系中。在复杂的游戏中,因为所建立的物理模型更加真实,所以必须根据加速计返回的值调整所控制对象的速度。
在cocos2d中接收加速计输入input.使其平滑运动,一般不会去直接改变对象的position.通过:
- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{

// -- controls how quickly velocity decelerates(lower = quicker to change direction)
float deceleration = 0.4; 
// -- determins how sensitive the accelerometer reacts(higher = more sensitive)
float sensitivity = 6.0;
// -- how fast the velocity can be at most
float maxVelocity = 100;
// adjust velocity based on current accelerometer acceleration
playerVelocity.x = playerVelocity.x * deceleration + acceleration.x * sensitivity;
// -- we must limit the maximum velocity of the player sprite, in both directions
if (playerVelocity.x > maxVelocity)
{
playerVelocity.x = maxVelocity;
}
else if (playerVelocity.x < - maxVelocity)
{
playerVelocity.x = - maxVelocity;
}

}
上面deceleration是减速的比率,sensitivity是灵敏度。maxVelocity是最大速度,如果不限制则一直加大就很难停下来。
playerVelocity.x = playerVelocity.x * deceleration + acceleration.x * sensitivity;

中 playervelocity是一个速度向量。是累积的。
- (void) update: (ccTime)delta
{
// -- keep adding up the playerVelocity to the player's position
CGPoint pos = player.position;
pos.x += playerVelocity.x;
// -- The player should also be stopped from going outside the screen
CGSize screenSize = [[CCDirector sharedDirector] winSize];
float imageWidthHalved = [player texture].contentSize.width * 0.5f;
float leftBorderLimit = imageWidthHalved;
float rightBorderLimit = screenSize.width - imageWidthHalved;
// -- preventing the player sprite from moving outside the screen
if (pos.x < leftBorderLimit)
{
pos.x = leftBorderLimit;
playerVelocity = CGPointZero;
}
else if (pos.x > rightBorderLimit)
{
pos.x = rightBorderLimit;
playerVelocity = CGPointZero;
}
// assigning the modified position back
player.position = pos;
}

UIAccelerometer 加速计相关推荐

  1. UIAccelerometer 加速计(iOS5之前)

    UIAccelerometer 加速计 // 在iOS5之后被放弃#import "ViewController.h"@interface ViewController ()< ...

  2. iOS开发--- iOS编程浅析

    1.简介 IOS是由苹果公司为iPhone.iPod touch和iPad等设备开发的操作系统. 2.知识点 1.IOS系统 iPhone OS(现在叫iOS)是iPhone, iPod touch ...

  3. ios加速计(可以用来检测摇动,自定义反应灵敏度)

    ios加速计 标签: ios 编程 xcode开发 加速计 杂谈   分类: ios开发 内置加速计是iPhone和iPod Touch中最酷的特性之一,iPhone可以通过这个小设备知道用户握持手机 ...

  4. 加速计简单使用---迷宫游戏

    今天通过编写一个简单的迷宫游戏,来展示如何使用iPhone的内置加速计. 游戏效果如下图所示.用户通过上下左右摇晃屏幕控制这个橙色的pacman挪动,pacman撞到屏幕边缘或者墙壁(蓝色边框方块)会 ...

  5. 三轴加速度传感器和六轴惯性传感器_[算法][三轴、六轴、九轴传感器算法分析] 1、分享一个三轴加速计matlab动态可视化脚本...

    一.有啥用 这里用的是LIS3DH三轴加速计,输出为X.Y.Z轴的加速度,通过串口连接电脑,电脑里运行matlab脚本通过串口实时获取数据并做可视化显示. 这里虽然是针对LIS3DH的,其实稍作修改即 ...

  6. CoreMotion(加速计)

    加速计的作用 用于检测设备的运动(比如摇晃) 加速计的经典应用场景 摇一摇 计步器 ********************************** Core Motion获取数据的两种方式 pu ...

  7. 安卓传感器全解:注册、注销传感器、监听传感器,距离传感器、方向传感器、陀螺仪、加速计、磁场、气压传感器

    全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓传感器全解:注册.注销传感器.监听传感器.距离传感器.方向传感器.陀螺仪.加速计.磁场.气压传感器. 注册.注销.监听传感器 1.自定义传感器监听 ...

  8. 加速计陀螺仪信息采集

    Sensor.TYPE_GYROSCOPE 陀螺仪就是内部有一个陀螺,它的轴由于陀螺效应始终与初始方向平行,这样就可以通过与初始方向的偏差计算出实际方向.手机里陀螺仪实际上是一个结构非常精密的芯片,内 ...

  9. 微信小程序实现手机屏幕左右旋转,页面元素左右移动,小程序加速计

    一.业务背景 在做微信小程序的项目时,有一个需求是当用户左右旋转手机屏幕时,页面上特定的元素要随着用户的旋转动作左右移动.当将手机屏幕向左旋转时,人物向左移动:手机屏幕向右旋转时,人物向右移动. 二. ...

  10. 3轴/6轴/9轴传感器是什么, 加速计/陀螺仪/磁力计又是什么?

    欢迎加入Unity业内qq交流群:956187480 qq扫描二维码加群 转自:加速计/陀螺仪/磁力计是什么,3轴/6轴/9轴传感器又是什么?_不积跬步,无以至千里!-CSDN博客 现在越来越多的设备 ...

最新文章

  1. git 设置 key 到服务器,同步代码不需要输入用户名和密码
  2. 【博士论文】分形计算系统
  3. FeignClient使用
  4. 2020年宇通大量裁人论坛_中国数学会计算数学分会2020年研究生论坛活动总结
  5. Chipscope使用
  6. 将Linux加入Windows域
  7. AT4996-[AGC034F]RNG and XOR【FWT,生成函数】
  8. 判断微信小游戏用户是否真的分享
  9. PHP获取input中的值相同报错,laravel单元测试之phpUnit中old()函数报错解决_php实例...
  10. bat 调用class文件_【Java视频教程】day42-??什么是Class???
  11. 实践案例丨云连接CC实现跨区域多VPC与线下IDC Server互联
  12. SQLite连接C#笔记
  13. 比ISA更简单的监管利器,谈谈关于公司上网监管的一点事儿
  14. Atitit httpclient feign使用总结RestTemplate Httpclient重要的功能 重试与超时 1.RedirectExec执行器的默认策略是,在接收到重定向错误码3
  15. keevi源地址_2019年越狱源地址排行是怎样的?
  16. 正则维纳滤波matlab,正则化约束维纳滤波
  17. kindle刷机ttl_#原创新人#艰难的TTL刷机路--新固件斐讯 K1 无线路由刷机教程
  18. 小程序发布上线全流程(包含小程序怎么通过审核)
  19. Java操作word模板插入图片
  20. 【HDU 4609】3-idiots

热门文章

  1. 微信小程序运营案例(一)—— XXX商贸冷冻食品配送中心
  2. 基于ThinkPhp6+Vue+AntDesign前后端分离极速开发平台
  3. h桥控制电机刹车_一种电机H桥制动电路的制作方法
  4. c盘分小了如何扩大c盘,重新分区扩大c盘
  5. 磁珠 符号_关于PCB原理图中的FB-FB是磁珠的符号-电子元器件-电路图
  6. android炫彩跑马灯特效,盘点一下那些自带酷炫跑马灯效果的手机,最后一款几乎没人知道...
  7. educoder锁存器和触发器设计—JK触发器设计+T触发器设计
  8. 树莓派python界面编程_树莓派PythonGUI学习
  9. 股票量化交易有哪些潜在的风险?如何去避免?
  10. PCB屏蔽罩图纸制作