使用CoreMotion移动SKSpriteNode

时间:2014-06-16 21:22:56

标签: sprite-kit gravity core-motion skspritenode cmmotionmanager

我有一个代表用户的SKSpriteNode,我希望这个节点随着用户的移动而移动,如果用户走路,那么节点会朝同一个方向移动。

起始位置是视图的中心,我认为可以使用来自CMMotionManager(iOS 7)的rotationRate,userAcceleration和gravity,但我不知道我是错了还是我应该做什么操作这些价值观。

我认为有人可以帮助我。

感谢。

1 个答案:

答案 0 :(得分:0)

现在,我做了

if ([self.motionManager isDeviceMotionAvailable] == YES) {
            [self.motionManager startDeviceMotionUpdatesToQueue:self.queueMotion withHandler:^(CMDeviceMotion *motion, NSError *error) {
                self.xpos = motion.userAcceleration.x * motion.gravity.x * motion.rotationRate.x;
                self.ypos = motion.userAcceleration.y * motion.gravity.y * motion.rotationRate.y;

                [self performSelectorOnMainThread:@selector(updatePosition:) withObject:nil waitUntilDone:YES];
            }];
        }

然后我将这些x和y坐标添加到SKSpriteNode位置,然后将SKSpriteNode移动到此最终位置。我得到的是SKSpriteNode在我走路的时候没有移动但是如果我做了一个强加速它会移动但只是片刻,如果我以恒定速度行走它不会移动。