了解SpriteKit中的CGPoints

我打算把三张牌放在一张我添加到背景的视图上。 不过,我想结合其中的两张卡片,并将第一张卡片的位置replace为新的卡片位置。 有什么办法可以做到这一点?

我想通过读取选定的节点位置:

CGPoint position = CGPointMake([self nodeAtPoint:touchLocation].position.x, [self nodeAtPoint:touchLocation].position.y); 

但是我读的是(0,0)。

发生了什么?

在你的场景控制器中,你应该这样做-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

 UITouch *touch = [touches anyObject]; CGPoint touchPos = [touch locationInNode:self]; 

touchPos会在你的场景中有位置,你可以这样做:

 if ([self.cardOne containsPoint:touchPos]){ //Do something CGPoint cardOnePosition = self.cardOne.frame.origin; } 

如果你想以更好的方式得到你所触摸的节点,你可以inheritanceSKSpriteNode(用于你的卡片),并从那里实现-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event ,你做的init [self setUserInteractionEnabled:YES] 。 然后你可以在这个子类中建立一个委托,在你的场景中调用一个方法,并从场景控制中更好地做什么。