我有一个游戏,我使用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()
}
答案 0 :(得分:2)
默认计时功能为kCAMediaTimingFunctionDefault
。
将SCNTransaction
animationTimingFunction
设置为[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]
可能会解决您的问题。