iOS 7 Sprite套件速度更改动画



我有一个正在为 SKSpriteNode动画的 runAction。我的节点在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操作,这将使速度提高到1。

问题:如何随着节点移动而改变节点的速度,而不是每个方向的停滞速度。

预先感谢。

查找各种类型的SKActionTimingMode,并根据需要将其应用于您的情况。这将消除对[SKAction speedTo:0.1 duration:0.5]等任何事物的需求。

https://developer.apple.com/library/mac/documentation/spritekit/reference/skaction_refere/reference/reference/reference.htmll#/apple_refle_reff/c/tdef/skaction/skactiontimingtimingmode

您可以将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]]]];

最新更新