gpt4 book ai didi

ios - 停止对SKSpriteKit的冲动

转载 作者:行者123 更新时间:2023-12-01 18:59:56 24 4
gpt4 key购买 nike

我正在尝试在游戏中创建一个暂停按钮。当您单击屏幕时,它将在动子spriteNode上施加一个脉冲。问题是,当我单击暂停按钮时,它仍然会施加脉冲。如何创建暂停按钮而不创建冲动。

我试过将if语句更改为else if,然后使最后一个脉冲部分变为else部分,但这将无法工作。

touchBegan方法:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInNode:self];
SKNode *node = [self nodeAtPoint:location];

//if fire button touched, bring the rain
if ([node.name isEqualToString:@"repeat"]) {
SKTransition *reveal = [SKTransition fadeWithDuration:2.0 ];
MyScene *newScene = [[MyScene alloc] initWithSize: CGSizeMake(self.size.width,self.size.height)];
// Optionally, insert code to configure the new scene.
[self.scene.view presentScene: newScene transition: reveal];
}

if ([node.name isEqualToString:@"home"]) {
SKTransition *reveal = [SKTransition fadeWithDuration:2.0 ];
Menu *newScene = [[Menu alloc] initWithSize: CGSizeMake(self.size.width,self.size.height)];
// Optionally, insert code to configure the new scene.
[self.scene.view presentScene: newScene transition: reveal];
}

if ([node.name isEqualToString:@"pause"]) {
[self pausedMenu];
}

if ([node.name isEqualToString:@"start"]) {
[self startMenu];
}

showpipes = showpipes + 1;

if (showpipes == 1) {
self.physicsWorld.gravity = CGVectorMake( 0.0, -5.0 );

SKAction* spawn = [SKAction performSelector:@selector(spawnPipes) onTarget:self];
SKAction* delay = [SKAction waitForDuration:2.0];
SKAction* spawnThenDelay = [SKAction sequence:@[spawn, delay]];
SKAction* spawnThenDelayForever = [SKAction repeatActionForever:spawnThenDelay];
[self runAction:spawnThenDelayForever];
}

started = 1;

if (noImpulse == 1) {
if (started == 1) {
mover.physicsBody.restitution = 0.0;
mover.physicsBody.velocity = CGVectorMake(0, 0);
[mover.physicsBody applyImpulse:CGVectorMake(0, 15)];
}
}

}

暂停菜单方法:
-(void)pausedMenu
{

self.scene.paused = YES;
mover.scene.paused = YES;
[repeatButton removeFromParent];
[homeButton removeFromParent];
[menuBackground removeFromParent];
menuBackground = [SKSpriteNode spriteNodeWithColor:[SKColor colorWithWhite:0.0 alpha:0.3] size:CGSizeMake(self.frame.size.width*2, self.frame.size.height*2)];


[self addChild:menuBackground];

[pauseButton removeFromParent];

startButton = [SKSpriteNode spriteNodeWithImageNamed:@"staart"];
startButton.name = @"start";
startButton.position = CGPointMake(20, self.size.height-20);
startButton.size = CGSizeMake(40, 40);
[self addChild:startButton];



repeatButton = [SKSpriteNode spriteNodeWithImageNamed:@"repeat"];
repeatButton.name = @"repeat";
repeatButton.position = CGPointMake(self.size.width/2+30, self.size.height/2);
repeatButton.size = CGSizeMake(repeatButton.size.width/2, repeatButton.size.height/2);
[self addChild:repeatButton];

homeButton = [SKSpriteNode spriteNodeWithImageNamed:@"home"];
homeButton.name = @"home";
homeButton.position = CGPointMake(self.size.width/2-30, self.size.height/2);
homeButton.size = CGSizeMake(homeButton.size.width/2, homeButton.size.height/2);
[self addChild:homeButton];

}

最佳答案

退房
https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKView/Reference/Reference.html#//apple_ref/occ/instp/SKView/paused
如果您暂停包含游戏的SKView,则所有状态都会真正暂停,并且您可以在取消暂停菜单后恢复它。您必须在另一个SKView中显示暂停菜单,然后在其中包含您的游戏。

关于ios - 停止对SKSpriteKit的冲动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23504408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com