В игре, над которой я работаю, вы можете перемещать персонажа слева направо, касаясь левой / правой стороны экрана. Я пытаюсь сделать так, чтобы если вы касались левой стороны, а затем касались правой стороны, персонаж начинает двигаться вправо, а не влево; действие по перемещению влево отменяется. В настоящее время я сделал так, что игра работает в одно касание, но метод отмены предыдущего касания - вот где я застрял. Мой код:
- (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);
}
}
self.userinteractionEnabled
даже не нужно, вы хотите продолжать использовать последний штрих и обрабатывать его направление - person Knight0fDragon   schedule 29.12.2015self.userintectionEnabled
, и причина, по которой у меня его нет вtouchesBegan
, заключается в том, что скорость возвращается к 0 и не является постоянной. - person Exprosul   schedule 29.12.2015