Переопределение прикосновений в Spritekit

В игре, над которой я работаю, вы можете перемещать символ слева направо, касаясь левой/правой сторон экрана. Я пытаюсь сделать это, если вы касаетесь левой стороны, а затем коснитесь правой стороны, персонаж начнет двигаться прямо, а не влево; действие для перемещения влево переопределяется. В настоящее время я сделал это так, чтобы игра была одинарной, но метод переопределения предыдущего касания - это то место, где я застрял. Мой код:

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInNode:self]; if (location.x < screenWidth/2){ leftMovement = YES; [player runLeft]; } else { rightMovement = YES; [player runRight]; } self.userInteractionEnabled = NO; } - (void) touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ [self playerStop]; self.userInteractionEnabled = YES; } - (void) update:(NSTimeInterval)currentTime { if (isTouched && leftMovement){ player.physicsBody.velocity=CGVectorMake(-PLAYERSPEED, player.physicsBody.velocity.dy); } else if (isTouched && rightMovement){ player.physicsBody.velocity=CGVectorMake(PLAYERSPEED, player.physicsBody.velocity.dy); } }

+1
источник поделиться
1 ответ

Следует обратить внимание на изменение значения leftMovement и rightMovement когда пользователь коснется другой стороны экрана, в противном случае правильное движение в методе update никогда не будет вызвано.

if (location.x < screenWidth/2){
    leftMovement = YES;
    rightMovement = NO;
    [player runLeft];
}
else {
    rightMovement = YES;
    leftMovement = NO;
    [player runRight];
}
+2
источник

Посмотрите другие вопросы по меткам или Задайте вопрос