通过在Spritekit中倾斜设备来移动节点

时间:2015-08-13 07:35:16

标签: ios objective-c sprite-kit accelerometer core-motion

早上好。我的Spritekit和iPhone的加速计有问题。我想通过在纵向模式下向左或向右倾斜设备来移动节点。完全像涂鸦跳跃的方式。

现在我有了这段代码:

import <CoreMotion/CoreMotion.h>

//Then at the implementation:


_motionManager = [[CMMotionManager alloc] init]; if ([_motionManager isAccelerometerAvailable] == YES) {

[_motionManager startAccelerometerUpdatesToQueue:[[NSOperationQueue alloc] init] withHandler:^(CMAccelerometerData *data, NSError *error) { 

 float destX, destY; float currentX = _node.position.x; float currentY = _node.position.y; BOOL shouldMove = NO;

 if(data.acceleration.x < -0.25) {
            destX = currentX + (data.acceleration.x * kPlayerSpeed);
            destY = currentY;
            shouldMove = YES; }

        else if (data.acceleration.x > 0.25) {
            destX = currentX + (data.acceleration.x * kPlayerSpeed);
            destY = currentY;
            shouldMove = YES;
            }

        if((destX < 0)||(destX > self.frame.size.width)){shouldMove = NO;}
        if(shouldMove) {
            SKAction *action = [SKAction moveTo:CGPointMake(destX, destY) duration:0.2];
            action.timingMode = SKActionTimingEaseOut;

            [_node runAction:action];
        }
    }];
}

此代码有效,但不够好。即使我只是点击设备并且整体体验不是非常令人满意,节点也会发出巨大的动作。 我想要一个代码,它只是通过设备的倾斜而不是通过x轴加速度数据来移动节点。如果我将设备从0度倾斜到15度,则没有任何反应,之后节点会根据设备的倾斜度按比例加速。并且节点应该点头突然移动但是流畅的。就像在涂鸦跳跃方式。我想要完全相同的行为。感谢。

0 个答案:

没有答案