繁体   English   中英

通过SkAction.followPath(iOS)移动对象的速度有所不同

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM