在 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:
随时间循环遍历一系列纹理,这可能是您希望在精灵移动时为其设置动画。
按照该部分中的示例,您应该创建一个使用一系列纹理的动作。假设您有三个纹理,texture1
、texture2
和 texture3
。然后你将纹理放入一个数组并创建一个动画动作,如下所示:
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