如何在精灵套件中为屏幕上移动的内容设置动画效果?这就是我现在所拥有的:
-(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];
}
那么如何在设定的时间之后改变画面基本上是我要求的。提前谢谢。
答案 0 :(得分:0)
“精灵套件编程指南”中的那么如何在设定的时间之后改变画面基本上是我要求的。
Changing a Sprite's Texture演示了如何使用-animateWithTextures:timePerFrame:
随着时间的推移循环遍历一系列纹理,这是您在精灵移动时为动画制作动画所需要的。 / p>
按照该部分中的示例,您应该创建一个使用纹理序列的动作。假设您有三个纹理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];