如何在SpriteKit中制作响应式控制器?

时间:2014-07-24 21:49:41

标签: ios xcode ios7 sprite-kit game-physics

使用iOS SpriteKit处理我的新游戏,我正在尝试制作一个简单的左,右控制器来在屏幕上移动我的角色。我就是这样做的。这是一个SKScene实现。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint touchLocation = [touch locationInNode:self];
    if (touchLocation.x < [UIScreen mainScreen].applicationFrame.size.width/2) {
        _leftPressed = YES;
    } else if (touchLocation.x > [UIScreen mainScreen].applicationFrame.size.width/2){
        _rightPressed = YES;
    }
} 

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    _leftPressed = NO;
    _rightPressed = NO;
}


-(void)update:(CFTimeInterval)currentTime {
    if (_rightPressed) {
        [self.player.physicsBody applyForce:CGVectorMake(speed, 0)];
    } else if (_leftPressed) {
        [self.player.physicsBody applyForce:CGVectorMake(-speed, 0)];
    } else {

    }
}

很快,我发现这种控制角色的方法存在问题。如果我同时轻敲一根手指并放开我的另一根手指来改变方向,那么角色就会停止并且不会改变方向。我想这是因为方法- (void) touchesBegan和方法- (void) touchesEnded不能同时被调用。我希望我的控制器真正敏感,能够顺利处理多点触控。我该如何工作?有没有一种解决这个问题的好方法?

1 个答案:

答案 0 :(得分:1)

是在ViewController.m文件中启用了SKView.multipleTouchEnabled