iphone - 指向倾斜方向 - iPhone

标签 iphone objective-c cocos2d-iphone rotation accelerometer

在我的 cocos2d 游戏中,我有我的玩家 Sprite ,我想让他朝我倾斜 iPhone 的方向移动。我可以解决这个问题,我无法解决的最难的部分是:

如何让 Sprite 旋转指向我倾斜的方向?这在应用程序商店的“Tilt to Live”游戏中得到了很好的体现。我想要那样的控件。

如果有帮助的话,我的 Sprite (对于那些不熟悉 cocos2d 的人)确实有一个旋转值。

谢谢。

最佳答案

如果您不喜欢上面的内容,这里有一个更简单的方法来获得合理的结果!

将 iPad 放在您面前,让 LR 为左/右倾斜,TA 为​​朝向您/远离您倾斜。所以LR从-90到90,TA从-90到90。(TA负向你的肚子倾斜。)

在屏幕上显示这两个数字,然后四处移动设备,这样您就可以确定自己拥有开始时的权利。在该方法生效之前,您将无法执行任何操作。

solutionAngle 将像时钟指针一样,顺时针方向,距离您 12。

通过这个决策链:

如果 LR 和 TA 都为零,则机器是平的。采取适当的行动。

如果 LR 是平坦的 (0),则答案是 0 或 180,具体取决于 TA 的符号。

如果 TA 是平坦的 (0),则答案是 90 或 270,具体取决于 LR 的符号。

否则:

adjustmentAngle = arctan( sin(TA)/sin(LR) )

//(注意,应该从 -90 到 +90)

if ( LR > 0 ) finalResult = 90 - adjustmentAngle

如果 ( LR < 0 ), finalResult = 270 + adjustmentAngle

我想这样就可以了!希望对您有所帮助!

IMO ......一定要随着时间的推移平滑结果,以获得良好的感觉。

.

设置角度...

“我目前唯一不确定的(关于你自己的想法)是我如何将它应用到我的播放器上?我是否只是让播放器旋转值等于 adjustmentAngle?”。 . 嗨,Josh,是的,只需将旋转设置为您使用上面计算的最终角度!幸运的是,就这么简单。

如果您必须在度数和弧度之间进行前后转换,只需粘贴每个人都使用的这些代码行:

#include <math.h>
static inline float degreestoradians (double degrees) {return degrees * M_PI/180;}
static inline float radianstodegrees (double degrees) {return degrees * 180/M_PI;}

.

坐标轴在哪里?...

PS,这是您可能想要添加书签的非常方便的图表:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIAcceleration_Class/Reference/UIAcceleration.html

.

正在从加速度计转换为角度...

“加速度计不提供角度的原始数据。如何从原始数据中获取”

对了,忘记说了,不好意思。这是一个日常问题...

distanceFactor = square root of (x^2 + y^2 + z^2)
angle X axis = acos ( x / distanceFactor )
angle y axis = acos ( y / distanceFactor )
angle z axis = acos ( z / distanceFactor) )

在继续之前,您必须通过在屏幕上写下三个角度然后四处移动来测试它,换句话说,对您编写的部分进行“物理单元测试”!

这是来自 SO 的众多答案之一:UIAccelerationValue angle

顺便说一句,您可能会看到,在“adjustmentAngle”表达式中,您可以通过简单地获取原始 x 值与原始 y 值的比率而不是两个正弦值的比率来获得粗略的结果……但无论如何暂时不用担心。

最后!

重要 读者应该注意到,惊人的新 Core Motion 系统可以根据您的需要为您处理很多这样的事情。检查一下!!!!!!

希望对您有所帮助!

关于iphone - 指向倾斜方向 - iPhone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5128861/

相关文章:

ios - 使用 nib 文件开始/结束外观转换的不平衡调用

iphone - 如何阅读 plist?

iphone - 不使用网络服务写入远程数据库

iphone - 在 IOS 中显示位置的标准做法 - mapkit 或链接到谷歌地图?

objective-c - 使用新的 Facebook api 邀请 friend

iphone - 如何将cocos2d添加到当前项目中?

iphone - 国际键盘和 UITextField 安全选项

objective-c - 函数调用中缺少哨兵?

ios - 我有一个没有背景的 png 文件,如何在 iOS 中为该图像创建清晰的彩色背景?

ios - 创建自定义协议(protocol),其方法像 tableview 的方法或 uislider 的方法一样被调用