如何使SCNNode位置动画以均匀的速率移动?

时间:2014-12-29 14:37:23

标签: transactions core-animation scenekit

我有一个游戏,我使用scenekit和提供的动画框架,核心动画快速动画。

我遇到的问题是我的动画不流畅。将节点从A点移动到B点会导致移动速度小幅上升,当接近所需位置时小幅下降。我希望速度始终保持一致。这是一个问题,因为我的动画不会移动很远而且它们经常发生(每秒2次+计算延迟),导致它看起来非常不稳定。

所以我的问题是,有没有办法让动画速度统一?

编辑:为了清楚起见,我正在使用SCNTransaction。我的代码看起来像这样:半伪代码

func simulate(){
    SCNTransaction.begin()
     SCNTransaction.setAnimationDuration(0.5)
    SCNTransaction.setCompletionBlock{
        //If no victory this simulate func is run again
        checkVictory()
    }

    for all gameObjects{
    object.position = calculateNewPos()
 }
 SCNTransaction.commit()

}

1 个答案:

答案 0 :(得分:2)

默认计时功能为kCAMediaTimingFunctionDefault

SCNTransaction animationTimingFunction设置为[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]可能会解决您的问题。