Как я могу обратить анимацию в SceneKit? - PullRequest
0 голосов
/ 15 мая 2018

Я учусь использовать функции анимации в 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?

1 Ответ

0 голосов
/ 20 мая 2018

Я не знаю, как закрыть этот вопрос, так как проблема решена так: Чтобы отменить анимацию в SceneKit, просто установите скорость в отрицательное значение (например, -1)

...