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