首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpriteKit -在SKPhysicsContact上更改动画

SpriteKit -在SKPhysicsContact上更改动画
EN

Stack Overflow用户
提问于 2014-05-06 04:54:51
回答 1查看 251关注 0票数 1

我是雪碧包游戏开发的新手。我目前正在开发我的第一个游戏-一个简单的游戏,玩家必须导航一个简单的物体通过障碍。如果物体与障碍物相撞,游戏结束。

我得到了很好的工作,但我已经被一个动画问题卡住了一个多星期。几天来我一直在寻找答案……没有成功。所以基本上..。当我的对象被导航通过障碍物时,我有一个动画模式(它工作得很好)。然而,一旦遇到障碍,我希望动画模式改变(变成爆炸)。由于某种原因,这并没有发生!:(它基本上完全忽略了这两行代码(self stopBeeAnimation;和self defeatedAnimation;)我补充道,游戏马上就结束了。

在这方面我可能得到的任何帮助,都是非常感谢的(这让我发疯) :)

非常感谢。

下面是我的代码:

代码语言:javascript
复制
-(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];
}}

和:

代码语言:javascript
复制
    -(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];
}
EN

回答 1

Stack Overflow用户

发布于 2014-05-06 05:21:47

看这里:

代码语言:javascript
复制
SKTransition *transition = [SKTransition fadeWithDuration:5];
[self.scene.view presentScene:[[NPMyScene alloc]initWithSize:self.size] transition:transition];

您正在呈现一个不同的场景(或者可能是同一个scene类的另一个实例?)在尝试运行动画之后,在视图中。当前场景中的任何动画更改都将不可见,因为新场景将替换当前场景。

但即使在那之前...

代码语言:javascript
复制
- (void)defeatedAnimation {
    // ...
   defeatedAnimation = [SKAction animateWithTextures:textures2 timePerFrame:0.2];
}

您正在创建一个SKAction,但并未对其执行任何操作。要使操作生效,您需要在具有runAction:的节点上运行该操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23481695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档