Dans mon projet Sprite Kit actuel, j'ai codé un mécanicien où j'ai utilisé un UISwipeGestureRecognizer pour la direction gauche qui est appliquée à deux nœuds. Lorsqu'un balayage à gauche se produit sur un côté de l'écran, l'un des nœuds se déplace et lorsqu'un balayage à gauche se produit de l'autre côté de l'écran, l'autre nœud se déplace. Cependant, je ne peux pas trouver un moyen de faire bouger les nœuds en même temps; 2 balayages à gauche ne sont pas reconnus bien qu'ils se trouvent à des endroits différents sur l'écran. De même, j'ai également codé un mécanisme similaire pour quand l'utilisateur balaye vers la droite. Voici mon code. J'apprécierais grandement toute aide. A partir de maintenant, un seul nœud peut être swipes à un moment, pas les deux ensemble, ce qui est ce que je voudraisComment obtenir deux UISwipeGestureRecognizers identiques pour travailler simultanément en fonction de l'emplacement du toucher?
-(void)didMoveToView:(SKView *)view {
UISwipeGestureRecognizer *leftSwipe1 = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(leftSwiped1:)];
[leftSwipe1 setDirection:UISwipeGestureRecognizerDirectionLeft];
[leftSwipe1 setNumberOfTouchesRequired:1];
[self.view addGestureRecognizer:leftSwipe1];
UISwipeGestureRecognizer *rightSwipe1 = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(rightSwiped1:)];
[rightSwipe1 setDirection:UISwipeGestureRecognizerDirectionRight];
[rightSwipe1 setNumberOfTouchesRequired:1];
[self.view addGestureRecognizer:rightSwipe1];
self.physicsWorld.gravity = CGVectorMake(0, -9.8);
self.physicsWorld.contactDelegate = self;
}
-(void)rightSwiped1:(UIGestureRecognizer *)gestureRecognizer {
CGPoint pt = [gestureRecognizer locationInView:self.view];
if(pt.x < (self.view.bounds.size.width/2))
{
SKNode *person1 = [self childNodeWithName:@"person1"];
SKAction *moveRight = [SKAction moveTo:CGPointMake(CGRectGetMidX(self.frame) - 80, CGRectGetMidY(self.frame) + 200) duration:0.2f];
[person1 runAction:moveRight];
} else if (pt.x > (self.view.bounds.size.width/2)) {
SKNode *person2 = [self childNodeWithName:@"person2"];
SKAction *moveRight2 = [SKAction moveTo:CGPointMake(CGRectGetMidX(self.frame) + 400, CGRectGetMidY(self.frame) + 200) duration:0.2f];
[person2 runAction:moveRight2];
}
}
-(void)leftSwiped1:(UIGestureRecognizer *)gestureRecognizer {
CGPoint pt = [gestureRecognizer locationInView:self.view];
if(pt.x < (self.view.bounds.size.width/2))
{
SKNode *person1 = [self childNodeWithName:@"person1"];
SKAction *moveLeft = [SKAction moveTo:CGPointMake(CGRectGetMidX(self.frame) - 400, CGRectGetMidY(self.frame) + 200) duration:0.2f];
[person1 runAction:moveLeft];
} else if (pt.x > (self.view.bounds.size.width/2)) {
SKNode *person2 = [self childNodeWithName:@"person2"];
SKAction *moveLeft2 = [SKAction moveTo:CGPointMake(CGRectGetMidX(self.frame) + 80, CGRectGetMidY(self.frame) + 200) duration:0.2f];
[person2 runAction:moveLeft2];
}
}
Pourquoi vous essayez de ne pas appliquer la UISwipeGestureRecognizer directement au SKNode? –
comment ferais-je cela? – RT33