我试图使这个SKScene出现在游戏结束时场景的中间,这样以前的场景仍然可以在背景中看到(类似于花鸟的结尾)。这是一张我想让它出现的图片:
到目前为止,这是我编写的代码:
在游戏场景中:
-(void)dieFrom:(SKNode*)killingDebris {
_touched = YES;
if (_touched == YES) {
beatLevel = YES;
NSLog(@"touched");
[self runAction:[SKAction sequence:@[
[SKAction runBlock:^{
[_goodSquare removeFromParent];
}],
[SKAction runBlock:^{
level2Achieved = [[NSUserDefaults standardUserDefaults] integerForKey:@"newLevelAchieved"];
if (beatLevel == YES) {
level2Achieved = 2;
}
[[NSUserDefaults standardUserDefaults] setInteger:level2Achieved forKey:@"newLevelAchieved"];
[[NSUserDefaults standardUserDefaults] synchronize];
[self removeAllChildren];
}],
[SKAction waitForDuration:1.5],
[SKAction runBlock:^{
[self endGame];
}],
]]];
}
}
-(void)endGame {
[self removeAllActions];
gameOverScene *gameOverNode = [[gameOverScene alloc] initWithScore:self.score];
gameOverNode.gameScene = self;
gameOverNode.position = CGPointMake(self.scene.size.width/2, -150);
[self addChild:gameOverNode];
[gameOverNode runAction:[SKAction moveToY:self.scene.size.height/2 duration:0.6]];
}
在over的头文件中:
@class testScene;
@interface gameOverScene : SKScene
@property (weak, nonatomic) testScene *gameScene;
-(instancetype)initWithScore:(NSInteger)score;
@end
在游戏中over的实现:
-(instancetype)initWithScore:(NSInteger)score {
if (self = [super init]) {
self.userInteractionEnabled = YES;
self.zPosition = 5.0;
SKSpriteNode *bg = [SKSpriteNode spriteNodeWithColor:[SKColor redColor] size:CGSizeMake(280, 300)];
bg.alpha = 0.6;
[self addChild:bg];
}
return self;
}
但是当我在模拟器上测试它时,我得到了这样的结果:
具有下列错误消息:
2014-05-11 15:22:05.502 test2[2825:60b] SKScene: Setting the zPosition of a SKScene has no effect.
2014-05-11 15:22:05.503 test2[2825:60b] SKScene: Setting the position of a SKScene has no effect.
2014-05-11 15:22:05.504 test2[2825:60b] SKScene: Animating the position of a SKScene has no effect.
,有人能告诉我哪里出了问题,以及我如何解决这个问题?谢谢。如果需要任何额外的信息,请告诉我。
发布于 2014-05-12 06:18:09
有谁能告诉我我哪里出了问题,我怎么解决的?
来自SKScene参考页的概述部分
场景是雪碧工具包节点(SKNode)树中的根节点。
因为树只能有一个根,所以任何SKNode图都只有一个场景。
要解决这个问题,可以使用SKNode (显然不是SKScene )来包含游戏结束时的显示。然后,可以将该节点添加到现有场景中。
发布于 2014-05-12 06:06:56
将场景想象为应用程序的单独部分。场景的功能不同,例如,你可以有一个主菜单场景,一个高分场景,一个游戏场景,一个学分场景。
他们每一个都有很大的不同。场景是完整的实体,它包含您想要的一切。你不能隐藏场景。
您想要做的事情可以通过SKNode或SKSpriteNode来完成。只需创建新节点并将其添加到场景中即可。把它移到很远的坐标(比如10000,10000)。
当您想要显示它时,只需将坐标更改为所需的坐标即可。
https://stackoverflow.com/questions/23596921
复制相似问题