Transactions 如何使SCNNode位置动画以统一速率移动?

Transactions 如何使SCNNode位置动画以统一速率移动?,transactions,core-animation,scenekit,Transactions,Core Animation,Scenekit,我有一个游戏,我正在使用scenekit和提供的动画框架core animation用swift制作动画 我遇到的问题是我的动画不平滑。将节点从点a移动到点B会导致移动速度的小幅度提升,当节点接近所需位置时,会导致移动速度的小幅度下降。我希望速度始终保持一致。这是一个问题,因为我的动画移动不远,而且经常发生(每秒2次+计算延迟),导致它看起来非常不稳定 所以我的问题是,有没有办法使动画速度均匀 编辑:为了清楚起见,我正在使用SCNTransaction。我的代码看起来像这样:半伪代码 func

我有一个游戏,我正在使用scenekit和提供的动画框架core animation用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


SCNTransaction
animationtimeingfunction
设置为
[camediatimingfunctionwithname:kCAMediaTimingFunctionLinear]
可能会解决您的问题。

。谢谢。我只有一个问题,那就是没有将计时函数设置为:CAMediaTimingFunction(名称:“kCAMediaTimingFunctionLinear”),而是将其设置为:CAMediaTimingFunction(名称:“linear”)我发现这很奇怪,因为他们的文档中没有列出确切的字符串,我纯粹通过猜测发现
kCamediamingFunctionLinear
是一个常量,不能引用:
CamediamingFunction(名称:kCamediamingFunctionLinear)