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



我有一个游戏,我正在使用 scenekit 和提供的动画框架核心动画在 swift 中制作动画。

我遇到的问题是我的动画不流畅。将节点从 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()
}

默认定时函数为 kCAMediaTimingFunctionDefault

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

最新更新