我有一个表示椭圆的SKShape节点。玩家被放置在贝塞尔路径的当前点上,该路径基于椭圆的CGPath:
我有两个玩家节点可以执行的动作。玩家可以顺时针或逆时针跟随路径。
rotateCounterClockwiseAction = SKAction.followPath(counterClockwisePath.CGPath, asOffset: false, orientToPath: true, duration: 1)
rotateClockwiseAction = SKAction.followPath(clockwisePath.CGPath, asOffset: false, orientToPath: true, duration: 1)
当我开始其中一项操作时:
player.runAction(SKAction.repeatActionForever(rotateClockwiseAction), withKey: "ClockwiseRotation")
玩家沿着适当的路径和方向移动。当我停止其中一个动作时:
player.removeActionForKey("ClockwiseRotation")
玩家停在上一次移动到的路径上。我希望能够从玩家的当前点开始任何一个动作,并遵循相同的路径,但是现在,如果我再次启动其中一个动作(在动作已经开始并停止之后) )玩家跳转到图片中所示的相同起点并沿着那里的路径前进。如何让玩家从它已经存在的位置开始遵循路径?
答案 0 :(得分:0)
您可以使用SKNode的speed
属性轻松实现此目的。
您可以通过调整速度值来暂停和恢复操作,而不是删除并重新创建操作。这将导致贝塞尔曲线路径动画从当前位置恢复。
// Set the player node's speed to 0.0 causing all actions to be paused.
[playerNode setSpeed:0.0];
...
// Then when you're ready to resume set the player node's speed back to 1.0.
// This will cause the action to continue from its current position.
[playerNode setSpeed:1.0];