I have a runAction
which is animating a SKSpriteNode
. I have the node moving up and down in a repeatActionForever
. I would like the node to slow down as the node is moving up and speed up as the node is moving down.
[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]]]]];
When I add the line [SKAction speedTo:0 duration:0.5]
, the rest of the code is run at speed of 0 after the 0.5 seconds even though I added a second speedTo action which would increase the speed to 1.
The problem : How do I change the speed of a node as the node is moving rather than having a stagnant speed for each direction.
Thanks in advance.
Look up the various types of SKActionTimingMode
and apply the ones as needed to your situation. This will remove the need for anything like [SKAction speedTo:0.1 duration:0.5]
.
You can use the SKActionTimingEaseOut
for the action that makes the node move up and SKActionTimingEaseIn
for the action that makes the node move down.
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]]]];
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.