我目前正在使用两个SCNAnimations。一个是idle
,另一个是running
。它们都是无限循环的。
我总是运行空闲动画,然后为已经添加到模型中的后续运行动画启动动画播放器 - 动画运行得很好,甚至可以通过以下方式进行混合:
let player = animationPlayer(forKey: "running")
player?.animation.blendInDuration = 0.25
player?.play()
我遇到的问题是停止正在运行的动画以返回空闲状态。当在播放器上运行stop()时,更改会立即按预期发生,但是当为停止调用提供blendOutDuration时,会有很大的抖动返回到空闲动画。
我的代码外观的简化示例如下:
func startRunningAnimation() {
animationPlayer(forKey: "running")?.play()
}
func stopRunningAnimation(blendOutDuration: TimeInterval) {
guard let player = animationPlayer(forKey: "running") else {
return
}
player.stop(withBlendOutDuration: blendOutDuration)
}
任何人都可以通过iOS 11的SCNAnimationPlayer体验这一点吗?