如何使用Sprite Kit将运行SKAction followPath的SKSpriteNode减速以实现慢动作效果?

16

我希望行动一开始就运行,然后在行动中创建一个慢动作效果,然后再把它变回正常速度。有没有人有任何好的想法来完成这个任务?我考虑过手动创建行动并使用更新方法,但我觉得那可能太过复杂了。我希望有一个更简单的解决方案。

我另外考虑的一个想法是停止行动,然后以较慢的持续时间重新开始,但我认为它不会沿着相同的路径前进,而且可能看起来很奇怪。

这是我用来创建行动的代码。

CGMutablePathRef cgpath = CGPathCreateMutable();
CGPathMoveToPoint(cgpath,NULL, mysprite.position.x, mysprite.position.y);
CGPathAddCurveToPoint(cgpath, NULL, cp1.x, cp1.y, cp2.x, cp2.y, e.x, e.y);
[mysprite runAction:[SKAction sequence:@[[SKAction followPath:cgpath asOffset:NO orientToPath:YES duration:3]]]];
CGPathRelease(cgpath);
1个回答

24
每个节点都有一个速度属性:speed

该属性是应用于节点及其后代执行的所有动作的速度修正值。

讨论
默认值为 1.0,这意味着所有动作以它们的正常速度运行。如果您设置不同的速度,则对节点及其后代执行的所有动作似乎以更快或更慢的速度运行。例如,如果您将速度值设置为 2.0,则动作运行两倍速。

您可以将此属性设置为小于 1 的值,使动作运行更慢。 您甚至可以动画化速度,逐渐减慢:

[mySprite runAction:[SKAction speedTo:0.5 duration:1.0]];

3
太棒了!谢谢 :) 需要注意一件事:持续时间是指减速到该速度所需的时间,并不是该速度将持续多长时间。 - brilliantairic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接