校准 UI 加速度计?

2024-02-10

在我的应用程序中,我使用加速度计来控制游戏中的角色。现在我只允许纵向方向,因此用户必须向右或向左倾斜设备才能移动角色。到目前为止效果很好。我现在想要完成的是“校准”加速度计以考虑用户当前正在玩的倾斜度。假设用户侧躺,这些值将会倾斜,因为它没有考虑到该起点,因此他们将无法控制角色。因此,我尝试考虑初始倾斜量,然后在游戏过程中考虑它,但它不起作用。

因此,我的非游戏视图中有一个按钮可以“校准”加速度计,这是它执行的代码:

这是在 IBAction 中

[[UIAccelerometer sharedAccelerometer] setUpdateInterval:1.0f/30.0f];
[[UIAccelerometer sharedAccelerometer] setDelegate:self];

这是加速度计委托调用

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
    [[NSUserDefaults standardUserDefaults] setFloat:acceleration.x forKey:@"X-Calibrate"];
    [[UIAccelerometer sharedAccelerometer] setDelegate:nil];
}

然后在 init 的游戏视图中,我将 iVar adjustmentFloat 设置为我在 NSUserDefaults 中设置的值。然后我还有一个 kFilteringFactor 来消除小抖动。这是游戏加速计委托方法,它将rollingX设置为等于所有值,然后我根据rollingX移动角色:

- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
    rollingX = ((acceleration.x - calibrationFloat) * kFilteringFactor) + (rollingX * (1.0 - kFilteringFactor));
}

然而这不起作用,校准似乎没有做任何事情,我不知道为什么。有人确定为什么这不起作用吗?


我可以给你一些指点。 RollingX 的计算不正确,它会给出 -1 - +1 范围之外的值,您需要一种方法来检测它是否达到极限并适当调整它。另外,简单地偏移一个轴也是行不通的。加速度计在 3D 空间中工作。为了使计算正确进行,手机在 z 平面上必须始终为 0。用户将手机旋转到 z 平面的距离越远,设备在 x 平面上输出的读数就越小。加速度计感应重力,因此平面相对于重力是固定的。

为了进行有效的校准,您将需要对所有 3 轴应用连续矩阵变换,因为您将需要加权偏移(例如,随着 z 增加,更多地关注 y 而不是 x 等)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

校准 UI 加速度计? 的相关文章

  • 我可以通过编程方式获取连接到手机的 wifi 的 MAC 地址吗?

    我的手机已连接到 wifi 我想获取我的 wifi 的 MAC 地址 BSSID 和 mac 地址是同一回事 您可以通过此函数获取 mac 地址 只需导入 SystemConfiguration CaptiveNetwork func ge
  • valgrind 和 iOS SDK 4.2?

    使用 valgrind 运行 iOS 4 2 应用程序时遇到问题 我从 Macports 安装了 valgrind 3 6 0 SVN Xcode 3 2 5 当我修改 main 以运行 valgrind 时 我得到以下输出 Detecte
  • UIModalPresentationFormSheet 的圆角

    如果这是一个明显的问题 请原谅我 我是个相对较新的人 我有一个模态视图 我设置了自定义尺寸和圆角 void viewWillLayoutSubviews super viewWillLayoutSubviews self view supe
  • 在 IOS9 中的 Cordova 应用程序上使用 JQuery/Javascript 的 window.history 问题

    我在 IOS9 测试版 下使用 Cordova 应用程序时遇到问题 我正在使用最新的 Cordova 和 JQuery 移动版本 window history 未更新 导致以下故障 window history go 1 无法返回页面 即使
  • 如何使用 Codable 解析此 JSON?

    我一直在尝试从我的中解析这个对象JSON并不断收到此错误 错误 类型不匹配 Swift Array Swift DecodingError Context codingPath debugDescription 本应解码数组 但找到了字典
  • 具有多个嵌入 Segue 的 ContainerView

    有没有办法让单个 ContainerView 具有多个嵌入序列 目的是让 ContainerView 根据按下的按钮来容纳一些不同的 ViewController 一次只能看到一个 我想使用嵌入序列 以便在 Interface Builde
  • 如何处理 iPhone 4s、5 和 6 屏幕尺寸,并使所有内容在所有设备上看起来相同

    我正在使用 Xcode 6 1 并且在我拥有的视图之一中包含许多标签 然而 这些标签在不同的设备中看起来不同 尽管我已经对所有标签添加了约束 但仍然面临同样的问题 如何在所有设备上获得相同的视图布局 如何使每个标签的宽度和高度灵活 取决于屏
  • textFieldDidChangeSelection:在视图更新期间修改状态,这将导致未定义的行为

    这是我的代码 struct CustomTextField UIViewRepresentable var placeholder String Binding var text String func makeUIView context
  • 我可以在 iOS 中测量蓝牙信号强度吗?

    Can I 测量信号强度我的 iPhone 范围内的蓝牙设备数量 基本上我想要做的是扫描范围内的设备列表 然后查看哪个设备的信号强度最高 在 iOS 中是否可行 如果可以 我该怎么做 是的 有一种方法可以测量蓝牙低功耗 4 0 的信号强度
  • 电子邮件在 ShareKit 中不起作用并且没有错误

    我正在使用 ShareKit 将 Facebook Twitter 和电子邮件共享添加到我的 iPhone 应用程序中 现在 Facebook 和 Twitter 可以使用 但电子邮件无法使用 最大的问题是没有错误或任何错误 它正常工作 但
  • 如何正确设置 UIBezierPath 的动画以产生水/波浪效果?

    我正在尝试做一个UIBezierPath像波浪或水一样动画 类似于这样的事情 https dribbble com shots 3994990 Waves Loading Animation https dribbble com shots
  • 如何在iPhone上绘制“对话气泡”?

    当您右键单击扩展坞中的某个内容时 我试图获得类似于 Mac OS X 中的 语音气泡 效果 这是我现在所拥有的 我需要得到下部的 三角形 部分 有什么办法可以画出这样的东西并在它周围加上边框吗 这将是为了iPhone app 提前致谢 ED
  • 如何对其中包含自定义对象的 NSMutableArray 进行排序?

    我想做的事情看起来很简单 但我在网上找不到任何答案 我有一个NSMutableArray对象 假设它们是 Person 对象 我想排序NSMutableArray通过 Person birthDate 这是一个NSDate 我认为这与这个方
  • 文本末尾的空格在右对齐 UITextField 中不可见

    我有一个右对齐的UITextField 最初编辑时 文本末尾不会出现空格 我用这个解决了this https stackoverflow com q 19569688 1971013 替换 与不间断的 u00a0 然而 上面仅在编辑文本字段
  • 关于 S3 文件传输的权限

    我正在使用 S3TransferManager Sample 进行测试 我创建了Cognito并设置了IAM并最后更改了constants swift文件 我上传没有问题 但下载失败 错误信息是 下载失败 错误域 com amazonaws
  • ios7 绘图时出现延迟

    我有一个应用程序 在其中我正在视图上绘制一些草图 到目前为止 在我安装之前它运行良好ios7 我的应用程序使用触摸移动方法来识别运动的变化 但是当我画一条线时 触摸方法被调用 但线不会更新 直到我触摸结束ios7 所以画起来有一点点滞后 它
  • iOS:如何在 UITabBarItem 中添加下划线

    我正在使用一个应用程序 我需要在其中添加下划线UITabbarItem 所以我想在所选下添加下划线UITabbarItem在默认情况下UITabbarcontroller of iOS 我已经创建了子类UITabbarcontroller但
  • NativeScript:禁用 iOS WebView 缩放控件的方法?

    我正在尝试找出一种方法来防止用户通过捏合手势和双击来放大和缩小 iOS WebView tns ios 3 4 1 本质上禁用所有缩放 就像苹果之前使用的 html 元标记一样让用户决定是否要使用 iOS 10 及更高版本进行缩放 我找到了
  • CF 类型的带有 __attribute__((NSObject)) 的强 @property 不会保留

    更新 自 Xcode 4 6 起 此问题已得到修复 现在 这项技术再次按预期发挥作用 但是 在代码中使用之前 请务必阅读 Rob Napier 出色答案顶部的注释 原帖 ARC Xcode 4 3 1 iOS 5 1 我有一个 CF 类型
  • iOS:启动图像多语言

    我有一个多语言应用程序 我的问题是启动图像 根据设备的语言使用启动图像的方法是什么 有什么东西在info plist file 解决方案是像项目中的任何其他资源一样本地化 Default png 从 Xcode 的项目列表中选择 Defau

随机推荐

  • Flexbox 中的 SVG 会扰乱其他元素的高度

    我正在尝试使用一个 svg 元素 它可以根据 Flexbox 中的容器大小调整大小 但由于某种原因 它会弄乱 svg 下面的 div 带有文本 的大小 调整浏览器窗口大小时会发生多少变化 以下是我为此使用的基本 CSS 属性 layout
  • 如何在 Windows 服务器上使用 phpdbg 获取 PHP 代码覆盖率?

    既然我还有PHPUnit PHP 代码覆盖率和 Xdebug 的问题 https stackoverflow com questions 40386345 phpunit or its code coverage driver cannot
  • 如何将AWS API网关阶段指向特定的lambda函数别名?

    所以根据AWS文档 而不是在 Lambda 函数中使用 Amazon 资源名称 ARN 事件源映射 您可以使用别名 ARN 这种方法意味着 您不需要更新事件源映射 升级新版本或回滚到以前的版本 我有 AWS lambda 函数pets我创建
  • iPhone OS 实用应用程序 - 翻转视图和主视图通信

    我目前正在开发 iPhone 2 1 应用程序 我是 Objective C 的新手 有 Java 背景 我的应用程序以 Xcode 中可用的实用应用程序模板和 iPhone SDK 为基础 目前我有一些控件 例如UISlider和文本框
  • ssh2_auth_pubkey_file 身份验证总是失败

    我正在尝试使用 PHP 的 ssh2 函数连接到另一台机器 我知道 ssh 密钥是在没有密码的情况下创建的并且已正确分发 我可以ssh user host在我机器上的终端中连接到服务器 PHP 函数尝试使用 ssh 密钥文件连接到 IP 地
  • 如何保护 Firebase 数据库中用户和管理员的访问安全?

    我使用 Redux Saga 作为中间件 我通过查询将参数传递给 Firebase 数据库 但无法在数据库端访问它 Query database ref workouts child userId once value then snaps
  • 如何使用 C# 提取 MFCC

    我正在做一个个人项目 需要我用 C 进行一些信号处理和特征提取 更具体地说是提取MFCCs http en wikipedia org wiki Mel frequency cepstrum 有没有可用的代码用于在 C 中计算 MFCC 另
  • React.js - ForEach 作为一流组件?

    我听说过反应模板 但我仍然想知道是否可以制作一流的 ForEach 组件 我的最终目标是使这样的东西更具可读性 ul list map function item i return li item li ul instead ul ul
  • 调整窗口矩形文档

    MSDN 库将调整窗口矩形的 dwStyle 参数记录为 需要计算所需尺寸的窗口的窗口样式 请注意 您不能 指定 WS OVERLAPPED 样式 我还没有找到任何解释 他们所说的 不能 是什么意思 为什么我不能这样做 The WS OVE
  • 在 Javascript 中查看多页 TIFF

    我目前有多页TIFF图像 我需要通过 Javascript 逐页浏览它们 我对此一无所知 你能帮助我吗 我发现了一些其他问题 但似乎没有一个与 Javascript 有关 谢谢 我使用 Emscripten 将 LibTIFF 库移植到 J
  • 验证 .htaccess 文件中的 Googlebot

    我已经调查了一下 下面的代码可以工作吗 没那么容易检查 RewriteEngine on HostnameLookups Double RewriteCond REMOTE HOST googlebot com NC RewriteRule
  • 在 python 子进程中使用 exec 查找命令给出错误

    我正在尝试使用子进程模块 python 执行以下命令 usr bin find
  • Firefox 扩展内容脚本不会加载和附加 HTML

    下面的所有内容都可以在 Chrome 扩展中运行 但在移植到 Firefox 时会默默失败 加载中test html除非我删除 from it 附加 test element对身体 Firefox 扩展的样式是否必须放入单独的文件中 为什么
  • 我的 ViewModel 应该有视图或 ViewModel 的 ObservableCollection 吗?

    我试图理解使用时的基本 MVVM 设计方法项目控制通过绑定它数据模板 to 可观察集合在视图模型上 我见过绑定到 ObservableCollections 的示例strings Views and 视图模型 绑定到字符串似乎只是为了dem
  • 如何在 firefox 扩展中创建 JSON post 请求?

    我正在尝试调用 Google API 这是来自 Firefox 扩展的 JSON post 请求 例如 POST https www googleapis com urlshortener v1 url Content Type appli
  • Mac OS 10.9 不显示 Arduino 的 USB 调制解调器

    我正在尝试选择 dev tty usbmodem on my Arduino Lenardo设备 操作系统是Mac OSX 10 9 问题是它没有显示 我什至尝试安装FTDI http www ftdichip com Drivers VC
  • 高效的 p​​yspark join

    我读过很多关于如何在 pyspark 中进行高效连接的文章 我发现实现高效连接的方法基本上有 如果可以的话 使用广播连接 我通常不能因为数据框太大 考虑使用非常大的集群 我宁愿不因为 Use the 相同的分区器 最后一个是我宁愿尝试的一个
  • 双破折号 [--] 选项在 git Reset 上有什么作用?

    我见过这样的命令 git reset e542 readme txt 我了解此命令将提交 e542 中的文件 readme txt 的内容放入索引中 但什么是 选项在那里做什么 git reset 手册页将其列为前两种形式的可选 但我找不到
  • 如何构建神经网络来将两个数字相乘

    我正在尝试构建一个将 2 个数字相乘的神经网络 为了做同样的事情 我借助了 scikit learn 我想要一个具有 2 个隐藏层 5 3 和 ReLU 作为激活函数的神经网络 我已经定义了我的MLPRegressor如下 X data d
  • 校准 UI 加速度计?

    在我的应用程序中 我使用加速度计来控制游戏中的角色 现在我只允许纵向方向 因此用户必须向右或向左倾斜设备才能移动角色 到目前为止效果很好 我现在想要完成的是 校准 加速度计以考虑用户当前正在玩的倾斜度 假设用户侧躺 这些值将会倾斜 因为它没