iOS 7 Sprite套件动画速度更改
我有一个iOS 7 Sprite套件动画速度更改,ios,objective-c,ios7,sprite-kit,Ios,Objective C,Ios7,Sprite Kit,我有一个runAction,它正在为一个SKSpriteNode设置动画。我让节点在repeatActionForever中上下移动。我希望节点在向上移动时减速,在向下移动时加速 [node runAction:[SKAction repeatActionForever: [SKAction sequence:@ [[SKAction speedTo:0.1 duration:0.5],
runAction
,它正在为一个SKSpriteNode
设置动画。我让节点在repeatActionForever
中上下移动。我希望节点在向上移动时减速,在向下移动时加速
[node runAction:[SKAction repeatActionForever:
[SKAction sequence:@
[[SKAction speedTo:0.1 duration:0.5],
[SKAction moveToY:2 * node.size.height / 3 duration:0.5],
[SKAction speedTo:1 duration:0.5],
[SKAction moveToY:node.size.height / 2 duration:0.5],
[SKAction moveToY:node.size.height duration:1],
[SKAction moveToY:node.size.height / 2 duration:1]]]]];
当我添加行[SKAction speedTo:0 duration:0.5]
时,代码的其余部分在0.5秒后以0的速度运行,即使我添加了第二个speedTo action,这会将速度提高到1
问题:如何在节点移动时更改节点的速度,而不是每个方向的速度都停滞
提前感谢。查找各种类型的
SKActionTimingMode
,并根据需要将其应用于您的情况。这样就不需要像[SKAction speedTo:0.1 duration:0.5]
这样的东西了
对于使节点上移的操作,可以使用SKActionTimingEaseOut
;对于使节点下移的操作,可以使用SKActionTimingEaseIn
SKAction *actionMoveUp = [SKAction moveToY:2 * node.size.height / 3 duration:0.5];
actionMoveUp.timingMode = SKActionTimingEaseOut;
SKAction *actionMoveDown = [SKAction moveToY:node.size.height / 2 duration:0.5];
actionMoveDown.timingMode = SKActionTimingEaseIn;
SKAction *actionMoveUpHalf = [SKAction moveToY:node.size.height duration:1];
actionMoveUp.timingMode = SKActionTimingEaseOut;
[node runAction:[SKAction repeatActionForever:
[SKAction sequence:@
[actionMoveUp,
actionMoveDown,
actionMoveUpHalf,
actionMoveDown]]]];
我认为,一旦速度等于0,操作停止运行,节点就会有效地暂停。这是正确的。感谢您指出这一点。当第一个动作向上移动到变慢时,我将如何更改第一个动作的速度?当节点向下移动到变快时,我将如何更改第二个动作的速度?您可能可以使用SKAction timingMode,这允许各种模式,包括。。。缓入(即缓入步调导致动画开始缓慢,然后随着动画的进行而加速)或缓出(缓出步调导致动画快速开始,然后随着动画的完成而缓慢)。>>>Apple SKAction类引用中的查找计时模式。