是否可以通过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
持续时间。随着时间的推移,我们正在增加 Sprite 的速度。它将在 2.5 秒内到达目的地。
第二种方式:
另一种方法是使用计时函数。这可能是更好的方法,因为我们可以更好地控制动画期间球的移动速度。
示例:
let goPath = SKAction.followPath(ballPath!.CGPath, duration: 2.5)
goPath.timingFunction = {
t in
return powf(t, 3)
}
movingBall.runAction(goPath)
计时函数的工作方式是,它为您提供一个将当前耗时作为 float 的 block 。您的工作是使用某种计算来修改传入的值,然后返回它。
我只是对进入函数的时间进行立方并返回它。这使得球开始时非常慢,然后在动画结束时非常快地加速。
您可以发挥真正的创造力,并使用正弦波使物体反弹等。请注意,任何<0的返回值都会被忽略。
关于ios - 通过 SkAction.followPath 改变对象移动的速度(iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28889325/