我有一个游戏,我正在使用 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
。
将SCNTransaction
的animationTimingFunction
设置为 [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]
可能会解决您的问题。