Я учусь использовать функции анимации в SceneKit
на примере Fox 2 (вы можете найти его здесь https://developer.apple.com/videos/play/wwdc2017/604/ и здесь https://developer.apple.com/library/content/samplecode/scenekit-2017/Introduction/Intro.html), и у меня есть вопрос:
Как мне отменить анимацию?
Я искал в официальной документации (которая очень и очень плохая) и в Интернете, но кажется, что нет встроенной функции, которая могла бы обратить анимацию назад.
Я нашел три интересных параметра:
.autoreverses
: «при значении true объект воспроизводится в обратном направлении после воспроизведения в прямом направлении. По умолчанию NO»
.fillsBackward
: "когда истина, анимация активна до ее активной продолжительности и оценивается как ее начальное значение. По умолчанию NO"
.fillsForward
: «при значении true анимация остается активной после ее активной продолжительности и оценивается до конечного значения. По умолчанию NO»
Проблема в том, что первый параметр не выполняет то, что я хочу, и когда я использую два других параметра, ничего не происходит: S
Вот как я использую эти параметры:
Где я загружаю анимацию в модель персонажа
let spinAnimation = Character.loadAnimation(fromSceneNamed: "Art.scnassets/character/max_spin.scn")
spinAnimation.animation.isRemovedOnCompletion = false
spinAnimation.speed = 1.5
spinAnimation.stop()
model!.addAnimationPlayer(spinAnimation, forKey: "spin")
Где я создаю персонажа и запускаю анимацию
character2 = Character.init(scene: scnScene!)
character2?.model.position = SCNVector3(x: 0.15, y: -0.3, z: 0)
scnScene!.rootNode.addChildNode(character2!.node!)
character2?.model.animationPlayer(forKey: "spin")?.animation.fillsForward = true //or fillsBackward or autoreverses
character2?.model.animationPlayer(forKey: "spin")?.play()
Я неправильно понял .fillsBackward
и .fillsForward
? Существует ли исчерпывающая и обновленная документация по SceneKit?