我从今天开始在我的游戏中遇到问题,当时我试图改变场景。这有点好笑,当我与敌人发生碰撞时我没有问题。我调用我的 resetScene
函数来创建 gameOver 场景并显示它。但是当我掉进洞里,打了同样的电话,我的比赛并没有改变场景。我在 resetScene
函数中添加了一个新标签,因此当编译器进入此代码时,将添加一个层。现在,当我进入一个洞时,我得到了图层,但场景没有改变。这有点令人困惑。我将显示代码和屏幕截图:
这是唯一有效的地方:
/**********
if hero collide with enemy
*******/
-(void)didBeginContact
{
if(bodyB.physicsBody.categoryBitMask == enemy)
{
if(!YES == _deadAnimation)
{
if(_stars > _bestScore )
{
_bestScore = _stars;
}
if(_bestScore> [self.prefs integerForKey"bestScore"])
{
[self.prefs setInteger:_bestScore forKey"bestScore"];
}
_deadAnimation = [self runDeadAnimation]; // (only return BOOL YES for the moment)
[self resetScene];
}
}
}
现在这是行不通的地方:
-(void)didSimulatePhysics
{
/* reset scene if fall*/
if(self.hero.position.y < 100)
{
_deadAnimation = [self runDeadAnimation]; // (only return BOOL YES for the moment)
[self resetScene];
}
/* reset scene if stay behind */
if(self.hero.position.x<10 ){
[self resetScene];
}
}
这是我的重置功能:
{
[_hero removeFromParent];
[self addDebugLayer"dead" xPosition:200 yPosition:200 childPos:_hero.position.y infinite:YES]; // <<-----(add a new SKLabel)
SKScene *mundo1 = [[XYZGameOver alloc] initWithSize:self.size];
SKTransition *doors = [SKTransition fadeWithDuration:0.2];
[self.view presentScene:mundo1 transition:doors];
}
如您所见,图层“muerto”(死亡)添加了 y 位置,但场景没有改变
在 didSimulatePhysics 的情况下,以 0 持续时间进行过渡。您可以使用一些 BOOL 来检查它是哪种 Game Over。它对我有用。虽然不知道这背后的原因。
关于ios - SKScene 从今天开始在 spriteKit 中没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22942849/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |