我正在尝试为运动而构建一个简单的游戏,并且无法弄清楚为什么框架的边框在其他所有东西都没有移动的时候。
当我到达最后一根柱子并向右移动一点时,游戏结束。这是某种方式,因为当山羊和柱子的时候,框架边框不会移动。
我有三层是SKNode的。一个名为_mainLayer,第二个名为_playerLayer,第三个名为_squareLayer。 _mainLayer包含_playerLayer和_squareLayer。
当我移动屏幕时,正在使用此代码:
-(void)moveScreen {
_xMoved += 100;
SKAction *move = [SKAction moveByX:-100 y:0 duration:0.5];
[_squareLayer runAction:move];
[_playerLayer runAction:move];
}
我试图使用[_mainLayer runAction:move]而不是其他两个调用但是游戏结束屏幕没有移动直接添加到场景类中(“自我”)。
_gameOverScreen = [[EndScene alloc] init];
_gameOverScreen.position = CGPointMake(self.size.width / 2, self.size.height / 2);
_gameOverScreen.gameOver.size = CGSizeMake(self.frame.size.width, _gameOverScreen.gameOver.size.height / 2);
[self addChild:_gameOverScreen];
gameover屏幕是我自己制作的SKNode课程。
有人有任何建议吗?
答案 0 :(得分:0)
我找到了解决问题的方法。
-(void)didSimulatePhysics {
// If the goat didn't get on top of a platform
[_playerLayer enumerateChildNodesWithName:@"Goat" usingBlock:^(SKNode *node, BOOL *stop) {
if (!CGRectContainsPoint(CGRectMake(_xMoved, 0, self.frame.size.width, self.frame.size.height), node.position)) {
_gameOverScreen.numberScore = _score;
[_gameOverScreen testNewScore:_score];
[_scoreLabel removeFromParent];
_gameOverScreen.hidden = NO;
_gameOver = YES;
}
}];
}
通过制作一个模拟屏幕移动的新CGRect,我得到了它的工作。但为什么这个(下面的代码)不能工作我不知道。
-(void)didSimulatePhysics {
// If the goat didn't get on top of a platform
[_playerLayer enumerateChildNodesWithName:@"Goat" usingBlock:^(SKNode *node, BOOL *stop) {
if (!CGRectContainsPoint(self.frame, node.position)) {
_gameOverScreen.numberScore = _score;
[_gameOverScreen testNewScore:_score];
[_scoreLabel removeFromParent];
_gameOverScreen.hidden = NO;
_gameOver = YES;
}
}];
}