我是雪碧包游戏开发的新手。我目前正在开发我的第一个游戏-一个简单的游戏,玩家必须导航一个简单的物体通过障碍。如果物体与障碍物相撞,游戏结束。
我得到了很好的工作,但我已经被一个动画问题卡住了一个多星期。几天来我一直在寻找答案……没有成功。所以基本上..。当我的对象被导航通过障碍物时,我有一个动画模式(它工作得很好)。然而,一旦遇到障碍,我希望动画模式改变(变成爆炸)。由于某种原因,这并没有发生!:(它基本上完全忽略了这两行代码(self stopBeeAnimation;和self defeatedAnimation;)我补充道,游戏马上就结束了。
在这方面我可能得到的任何帮助,都是非常感谢的(这让我发疯) :)
非常感谢。
下面是我的代码:
-(void)didBeginContact:(SKPhysicsContact *)contact {
SKSpriteNode *firstSprite;
SKSpriteNode *secondSprite;
firstSprite = (SKSpriteNode *)contact.bodyA.node;
secondSprite = (SKSpriteNode *)contact.bodyB.node;
if ((contact.bodyA.categoryBitMask == beeCategory) && (contact.bodyB.categoryBitMask = obstacleCategory)) {
[self stopBeeAnimation];
[self defeatedAnimation];
[obstacleArray removeAllObjects];
[bee.physicsBody setAffectedByGravity:NO];
[timer invalidate];
scoreLabel.fontSize = 30;
scoreLabel.text = [NSString stringWithFormat:@"GAME OVER %d", score/2];
[self removeFromParent];
SKTransition *transition = [SKTransition fadeWithDuration:5];
[self.scene.view presentScene:[[NPMyScene alloc]initWithSize:self.size] transition:transition];
}}和:
-(void) defeatedAnimation {
SKAction *defeatedAnimation;
NSMutableArray *textures2 =[NSMutableArray arrayWithCapacity:5];
for (int a = 1; a < 6; a++) {
NSString *textureName2 = [NSString stringWithFormat:@"defeated%d", a];
SKTexture *texture2 = [SKTexture textureWithImageNamed:textureName2];
[textures2 addObject:texture2];
}
defeatedAnimation = [SKAction animateWithTextures:textures2 timePerFrame:0.2];
}发布于 2014-05-06 05:21:47
看这里:
SKTransition *transition = [SKTransition fadeWithDuration:5];
[self.scene.view presentScene:[[NPMyScene alloc]initWithSize:self.size] transition:transition];您正在呈现一个不同的场景(或者可能是同一个scene类的另一个实例?)在尝试运行动画之后,在视图中。当前场景中的任何动画更改都将不可见,因为新场景将替换当前场景。
但即使在那之前...
- (void)defeatedAnimation {
// ...
defeatedAnimation = [SKAction animateWithTextures:textures2 timePerFrame:0.2];
}您正在创建一个SKAction,但并未对其执行任何操作。要使操作生效,您需要在具有runAction:的节点上运行该操作。
https://stackoverflow.com/questions/23481695
复制相似问题