我在游戏中遇到问题,当我尝试改变场景时。这有点好笑,当我与敌人发生碰撞时,我没有遇到任何问题。我调用我的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];
}
正如您所看到的,该层&#34; muerto&#34; (死)与y位置相加,但场景没有改变
答案 0 :(得分:1)
如果是didSimulatePhysics,请执行0持续时间的转换。您可以使用一些BOOL来检查它的游戏类型。它对我有用。虽然不知道背后的原因。