如何在SceneKit中反转动画?

时间:2018-05-15 19:08:16

标签: ios swift animation scenekit reverse

我正在学习如何使用Fox 2示例在SceneKit中使用动画功能(您可以在https://developer.apple.com/videos/play/wwdc2017/604/https://developer.apple.com/library/content/samplecode/scenekit-2017/Introduction/Intro.html找到它),我有一个问题:< / p>

如何撤消动画?

我在官方文档(非常非常差)和在线搜索,但似乎没有可以反转动画的内置函数。

我发现了三个有趣的参数:

  • .autoreverses:“当为真时,对象在向前播放后向后播放。默认为否”
  • .fillsBackward:“当为true时,动画在其活动持续时间之前处于活动状态并计算为其起始值。默认为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 :(得分:0)

我不知道如何解决这个问题,因为问题解决了,所以: 要在SceneKit中反转动画,只需将速度设置为负值(例如:-1)