早上好。我的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度,则没有任何反应,之后节点会根据设备的倾斜度按比例加速。并且节点应该点头突然移动但是流畅的。就像在涂鸦跳跃方式。我想要完全相同的行为。感谢。