Objective c CMMotionManager和SceneKit坐标系

Objective c CMMotionManager和SceneKit坐标系,objective-c,scenekit,Objective C,Scenekit,我正在尝试建立一个滚动大理石类型的游戏。我已经决定将Cocos3D转换为SceneKit,所以我可能对代码片段有一些基本的问题 这是我的CMMotionManager设置。问题是,当我改变我的设备方向时,重力方向也会改变(不能正确调整设备方向)。此代码仅适用于横向左侧方向 -(void) setupMotionManager { NSOperationQueue *queue = [[NSOperationQueue alloc] init]; motionManager = [[CMMoti

我正在尝试建立一个滚动大理石类型的游戏。我已经决定将Cocos3D转换为SceneKit,所以我可能对代码片段有一些基本的问题

这是我的CMMotionManager设置。问题是,当我改变我的设备方向时,重力方向也会改变(不能正确调整设备方向)。此代码仅适用于横向左侧方向

-(void) setupMotionManager
{ 
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
motionManager = [[CMMotionManager alloc] init];

[motionManager startAccelerometerUpdatesToQueue:queue    withHandler:^(CMAccelerometerData *accelerometerData, NSError *error)
{
CMAcceleration acceleration = [accelerometerData acceleration];

float accelX = 9.8 * acceleration.y;
float accelY = -9.8 * acceleration.x;
float accelZ = 9.8 * acceleration.z;

scene.physicsWorld.gravity = SCNVector3Make(accelX, accelY, accelZ);
}];

}
这段代码来自苹果公司的大理石演示。我把它从Swift翻译成Obj-C

如果我想让它在景观中正常工作,我需要将最后一行更改为

scene.physicsWorld.gravity = SCNVector3Make(-accelX, -accelY, accelZ);

这带来了另一个问题。。。如果Y在SceneKit中向上,为什么accelZ变量不需要更改?因此,我的问题是,CMMotionManager坐标与场景坐标的关系如何?

了解CMMotionManager如何工作的解决方案是记录CMAcceleration数据,并将其计算出来:)当没有人能够帮助回到基础时。。。log,log log:)了解CMMotionManager如何工作的解决方案是记录CMAcceleration数据并找出:)当没有人可以帮助回到基础时。。。日志,日志:)