指向倾斜方向-iPhone

指向倾斜方向-iPhone,iphone,objective-c,cocos2d-iphone,rotation,accelerometer,Iphone,Objective C,Cocos2d Iphone,Rotation,Accelerometer,在我的cocos2d游戏中,我有我的玩家sprite,我想让他朝我倾斜iPhone的方向移动。我能解决这个问题,但最难的是: 如何使精灵旋转到我倾斜的方向?这在app store上的“Tilt to Live”游戏中表现得非常好。我想要像那样的控制 如果有帮助的话,我的精灵(对于那些不熟悉cocos2d的人)确实有一个旋转值 谢谢。如果您不喜欢上述内容,这里有一个更简单的方法来获得合理的结果 将iPad放在你面前,让LR向左/向右倾斜,TA向你/远离你倾斜。所以LR从-90到90,TA从-90到

在我的cocos2d游戏中,我有我的玩家sprite,我想让他朝我倾斜iPhone的方向移动。我能解决这个问题,但最难的是:

如何使精灵旋转到我倾斜的方向?这在app store上的“Tilt to Live”游戏中表现得非常好。我想要像那样的控制

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


谢谢。

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

将iPad放在你面前,让LR向左/向右倾斜,TA向你/远离你倾斜。所以LR从-90到90,TA从-90到90。(TA负片向你的腹部倾斜。)

在屏幕上显示这两个数字,然后移动设备,这样您就可以确定自己有权开始使用。在那起作用之前你什么都做不了

解角将像一个时钟指针,顺时针方向,距离你12

通过此决策链:

如果LR和TA均为零,则机器为平面。行动得体

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

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

否则:

调整角度=arctan(sin(TA)/sin(LR))

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

如果(LR>0)最终结果=90-调整角度

如果(LR<0),最终结果=270+调整角度

我想那就行了!希望有帮助

依我看。。。。。。确保随着时间的推移平滑结果,以获得良好的感觉

设置角度。。。 “目前我唯一不确定的事情(关于你自己的想法)是我如何将其应用到我的播放器上?我是否仅仅使播放器的旋转值等于调整角度?”。。嗨,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;}
在继续之前,您必须通过在屏幕上写入三个角度,然后移动它来测试这一点,换句话说,在您编写的部分中“物理单元测试”

以下是SO的众多答案之一:

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

最后! 重要读者应注意,全新的核心运动系统可根据您的需要为您处理大量这类问题。看看吧


希望有帮助

酷,谢谢你的选择!也许你可以看看这个?它是从实际的瓦片到live开发者的,只是我不知道如何应用他给出的代码。如果你能解释一下我是如何实际使用它的,而不仅仅是它的意思,我将永远感激你!加速计不提供角度的原始数据。如何从原始数据(通常为-1到1,除非设备被强制移动)进入-90到90范围,考虑到如果以45度角握住设备,原始数字将不会是0.5,而更像是0.7,我没有尝试编写您的示例,因为我知道一旦我发现链接代码将是理想的。我知道工作代码在链接页面的底部,但是我误解了它是如何应用于玩家精灵的。我将尝试你的第二个想法(我不使用统一),目前我唯一不确定的事情(关于你自己的想法)是我如何将它应用到我的球员?我只是让玩家的旋转值等于adjustmentAngle吗?你有没有得到这个工作的代码,我有完全相同的问题,任何代码都会令人惊讶!
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) )