在 Sprite Kit 中为我的角色设置动画?

Posted

技术标签:

【中文标题】在 Sprite Kit 中为我的角色设置动画?【英文标题】:Animating my character in Sprite Kit? 【发布时间】:2014-03-09 14:25:35 【问题描述】:

如何在 sprite kit 中为在屏幕上移动的东西设置动画?这是我目前拥有的:

-(void)createMan 

CGPoint startPoint = CGPointMake(120, 298);// those coordinates are the bottom left corner

SKSpriteNode *man = [SKSpriteNode spriteNodeWithImageNamed:@"man1"];
man.position = CGPointMake(startPoint.x, startPoint.y);
man.zPosition = 6;
[man setScale:0.5f];
[self addChild:man];

// we now want to call this method again repeatedly at a random interval :)

float randomNum = arc4random_uniform(3)+3;
[self performSelector:@selector(createMan) withObject:nil afterDelay:randomNum];

//man moves right
SKAction *moveNodeUp = [SKAction moveByX:400.0 y:0 duration:5];
[man runAction: moveNodeUp];

所以我怎样才能在设定的时间后改变图片基本上就是我要问的。提前致谢。

【问题讨论】:

【参考方案1】:

那么我怎么能在设定的时间后改变图片基本上就是我要问的。

Sprite Kit 编程指南中的Changing a Sprite's Texture 演示了如何使用-animateWithTextures:timePerFrame: 随时间循环遍历一系列纹理,这可能是您希望在精灵移动时为其设置动画。

按照该部分中的示例,您应该创建一个使用一系列纹理的动作。假设您有三个纹理,texture1texture2texture3。然后你将纹理放入一个数组并创建一个动画动作,如下所示:

NSArray *walkingUpTextures = @[texture1, texture2, texture3];
SKAction *animateAction = [SKAction animateWithTextures:walkingUpTextures timePerFrame:0.1];

注意:你可以用任何你想要的方式创建纹理数组。我在上面使用了 Objective-C 的对象文字语法,但您可以调用 +[NSArray arrayWithObjects:] 或任何其他适合您的方法。

为确保动画与运动一起发生,并且仅与运动一起发生,将该动作与您的运动动作结合起来:

SKAction *animateAction = [SKAction animateWithTextures:manMovementTextures timePerFrame:0.1];
SKAction *moveNodeUpAction = [SKAction moveByX:400.0 y:0 duration:5];
SKAction *groupAction = [SKAction group:@[animateAction, moveNodeUpAction]];
[man runAction:groupAction];

【讨论】:

所以在苹果网站的示例中它说:animateWithTextures:monsterWalkTextures 如果我的项目中有 5 张图片,我应该放什么? 看看the docs for that method(这恰好是SKAction列出的第一个方法,你会看到textures参数是一个纹理数组。所以将您的五个纹理放入一个数组中,并将该数组作为方法的第一个参数传递。 好的,但我还是不明白。你在哪里放了 manMovementTextures 我应该放什么? 放置一个纹理数组。我将修改上面的例子来说明。 好的,但我得到一个错误,说我没有声明纹理我该怎么做

以上是关于在 Sprite Kit 中为我的角色设置动画?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 2(Xcode 7)在我的 Sprite Kit 游戏中为背景音乐设置静音按钮?

如何通过 Sprite Kit 中的 CGPoints 数组制作动画 - Swift

Sprite-kit 主要角色选择器

使用 LibGdx 在 Java 中为 Sprite 表设置动画

在 Sprite Kit 中为碰撞执行您自己的物理计算

在 Sprite Kit 中为迷宫创建物理体的最佳方法?