![](/img/trans.png)
[英]Moving a node around a path incrementally without using SKAction followPath
[英]Vary speed of object moving through SkAction.followPath (iOS)
是否可以因为SKAction.followPath
而改变对象移动的SKAction.followPath
? 例如,假设我们使用下面的代码使球沿着矩形路径运动。 该代码将在整个路径中使用恒定速度。 但是,如果我们想改变物体沿矩形的速度怎么办?
let goPath = SKAction.followPath(ballPath!.CGPath, duration: 2.5)
movingBall.runAction(goPath)
是否唯一有效地使球沿着由不同速度的单独线条构建的矩形路径(相对于一条路径)的唯一选择?
谢谢!
实现此目的的两种方法。
方式:
您可以使用SKAction.speedBy
。 您可以将SKAction.speedBy与您的followPath分组。 例:
movingBall.runAction(SKAction.group([
SKAction.followPath(ballPath!.CGPath, duration: 2.5)
SKAction.speedBy(4, duration: 2.5)
]))
现在,球将在2.5秒内达到4倍的速度。 注意:现在,我们将不遵守followPath
持续时间。 随着时间的流逝,我们正在提高精灵的速度。 它将在不到2.5秒的时间内到达目的地。
第二种方式:
另一种方法是使用计时功能。 这可能是更好的方法,因为我们可以更好地控制动画过程中球的移动速度。
例:
let goPath = SKAction.followPath(ballPath!.CGPath, duration: 2.5)
goPath.timingFunction = {
t in
return powf(t, 3)
}
movingBall.runAction(goPath)
计时功能的工作方式是为您提供一个块,该块具有当前经过时间作为浮点数。 使用某种计算来修改传入的值,然后返回它是您的工作。
我只是想知道函数什么时候返回并返回它。 这样就可以使球开始时非常慢,然后在动画结束时非常快地加速。
您可以真正发挥创造力,并使用正弦波使事物弹起,等等。请注意,任何返回的值<0都将被忽略。
使用followPath SKAction不可能实现。
但是,您可以做的是使用节点的更新方法来手动更新其位置。
要使其遵循一条路径,需要花费一些工作,但是您可以做的比SKAction所能做的更多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.