Jos*_*ane 13 iphone objective-c rotation accelerometer cocos2d-iphone
在我的cocos2d游戏中,我有我的玩家精灵,我希望让他朝我倾斜iPhone的方向移动.我可以解决这个问题,我无法解决的最困难的是:
如何让我的精灵旋转指向我倾斜的方向?这在应用程序商店的"Tilt to Live"游戏中得到了很好的体现.我想要像这样的控件.
我的精灵(对于那些不熟悉cocos2d的人)确实有旋转值,如果有帮助的话.
谢谢.
Fat*_*tie 12
如果您不喜欢上述内容,这里有一个更简单的方法来获得合理的结果!
将iPad放在你面前,让LR左/右倾斜,TA朝你/远离你倾斜.所以LR从-90到90,TA从-90到90.(TA负向你的腹部倾斜.)
在屏幕上显示这些数字,然后移动设备,这样您就可以确定自己有权利开始使用.在此工作之前,您将无法执行任何操作.
解决方案角度就像时钟指针,顺时针方向,距离你12远.
通过这个决策链:
如果LR和TA均为零,则机器是平的.行动恰当.
如果LR是平坦的(0),则答案为0或180,具体取决于TA的符号.
如果TA为平坦(0),则答案为90或270,具体取决于LR的符号.
除此以外:
adjustAngle = arctan(sin(TA)/ sin(LR))
//(注意,应该从-90到+90)
if(LR> 0)finalResult = 90 - adjustmentAngle
if(LR <0),finalResult = 270 + adjustmentAngle
我想会做到的!希望能帮助到你!
IMO ...... 一定要随着时间的推移平滑结果,以获得良好的感觉.
.
"我目前唯一不确定的事情(关于你自己的想法)是如何将它应用到我的玩家?我只是让玩家的旋转值等于adjustAngle吗?" ..嗨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;}
Run Code Online (Sandbox Code Playgroud)
.
PS,这是你可能想要书签的非常方便的图表:
.
"加速度计不提供角度的原始数据.如何从原始数据中获取"
很对,我忘了提起抱歉.这是一个日常问题......
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) )
Run Code Online (Sandbox Code Playgroud)
您必须通过在屏幕上写下三个角度,然后移动它来测试这个,换句话说,在您继续之前,对您编写的部分进行"物理单元测试"!
这是SO的许多答案之一:UIAccelerationValue角度
顺便说一句,你可以看到,你可以通过在'adjustAngle'表达式中仅采用原始x与原始y值的比率而不是两个正弦值的比率来获得粗略结果......但无论如何不要现在担心这一点.
重要事项读者应注意,令人惊叹的全新Core Motion系统可根据您的需求为您处理大量此类操作.看看这个!!!!!
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
3086 次 |
| 最近记录: |