SKSpriteNode不规则的滑动?

我已经创build了以下sprite工具包节点:

SKSpriteNode *megadeth; megadeth = [SKSpriteNode spriteNodeWithImageNamed:@"megadeth_rocks.png"]; megadeth.name = @"awesome"; 

并添加了滑动手势如下:

 -(void)didMoveToView:(SKView *)view{ UISwipeGestureRecognizer *recognizerUp = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeUp:)]; recognizerUp.direction = UISwipeGestureRecognizerDirectionUp; [[self view] addGestureRecognizer:recognizerUp]; UISwipeGestureRecognizer *recognizerDn = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeDn:)]; recognizerDn.direction = UISwipeGestureRecognizerDirectionDown; [[self view] addGestureRecognizer:recognizerDn]; } - (void)handleSwipeUp:(UISwipeGestureRecognizer *)sender{ NSLog(@"Node Swiped Up"); if (sender.state == UIGestureRecognizerStateEnded) { CGPoint touchLocation = [sender locationInView:sender.view]; touchLocation = [self convertPointFromView:touchLocation]; SKSpriteNode *touchedNode = (SKSpriteNode *)[self nodeAtPoint:touchLocation]; if([touchedNode.name isEqualToString:@"awesome"]){ NSLog(@"Perform Action on AWESOME node"); SKAction *moveUp = [SKAction moveByX:0.0 y:(0-touchedNode.position.y) duration:0.5]; SKAction *fade = [SKAction fadeOutWithDuration:0.25]; //SKAction *remove = [SKAction removeFromParent]; SKAction *sequence = [SKAction sequence:@[moveUp, fade]]; [touchedNode runAction:sequence]; } } } 

当我滑动节点,它的滑动,但它回到原来的位置,然后淡入淡出。

我想要的是,当我刷卡时,它应该移动到滑动的位置,并删除。 我在这里错过了什么?

而不是[SKAction moveByX:y:] ,我使用了[SKAction moveToY:duration:] ,这使得一切工作像魅力

这是更新的handleSwipeUp:方法:

 - (void)handleSwipeUp:(UISwipeGestureRecognizer *)sender{ NSLog(@"Node Swiped Up"); //if (sender.state == UIGestureRecognizerStateEnded) //{ CGPoint touchLocation = [sender locationInView:sender.view]; touchLocation = [self convertPointFromView:touchLocation]; SKSpriteNode *touchedNode = (SKSpriteNode *)[self nodeAtPoint:touchLocation]; if([touchedNode.name isEqualToString:@"awesome"]){ NSLog(@"Perform Action on AWESOME node"); **SKAction *moveUp = [SKAction moveToY:(touchedNode.position.y+200) duration:0.5];** //SKAction *fade = [SKAction fadeOutWithDuration:0.25]; SKAction *remove = [SKAction removeFromParent]; SKAction *sequence = [SKAction sequence:@[moveUp, remove]]; [touchedNode runAction:sequence]; } //} 

}

希望这可以帮助 !!!