在Sprite Kit中动画我的角色?

时间:2014-03-09 14:25:36

标签: ios iphone animation ios7 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 个答案:

答案 0 :(得分:0)

  

那么如何在设定的时间之后改变画面基本上是我要求的。

“精灵套件编程指南”中的

Changing a Sprite's Texture演示了如何使用-animateWithTextures:timePerFrame:随着时间的推移循环遍历一系列纹理,这是您在精灵移动时为动画制作动画所需要的。 / p>

按照该部分中的示例,您应该创建一个使用纹理序列的动作。假设您有三个纹理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];