当SKSpriteNode被点击时,如何引起屏幕过渡



我正在使用spritekit框架构建一个iOS应用程序,我试图让屏幕在用户点击"开始"按钮时过渡到下一个场景。我能够让屏幕过渡,并加载下一个场景,但它发生时,用户点击屏幕上的任何地方。我只希望这发生在用户点击"开始"按钮时。我使用SKSpriteNode创建了开始按钮,并使用name属性将其命名为startButton。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
SKAction *doNothing = [SKAction moveByX:0 y:0 duration:0];
if (startButton != nil)
{
    [startButton runAction:doNothing completion:^{
        SKScene *gamescene = [[GameScene alloc] initWithSize:self.size];
        SKTransition *transition = [SKTransition doorsCloseHorizontalWithDuration:0.0];
        [self.view presentScene:gamescene transition:transition];
    }];
}

}

谢谢!

代替

if(startButton != nil){ }

尝试在touchesBegan方法中使用这个

UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInNode:self];
SKNode *node = [self nodeAtPoint:location];
if([node.name isEqualTo:@"startButton"]){
  //start scene
}

确保你像这样设置开始按钮的名称(标签或精灵)

start.name = @"startButton";
编辑:

不使用

[startButton runAction:doNothing completion:^{
   ....
}

直接转换

if([node.name isEqualTo:@"startButton"]){
  SKScene *gamescene = [[GameScene alloc] initWithSize:self.size];
  SKTransition *transition = [SKTransition doorsCloseHorizontalWithDuration:0.0];
  [self.view presentScene:gamescene transition:transition];
}

最新更新