【问题标题】:How can I reverse an animation in SceneKit?如何在 SceneKit 中反转动画?
【发布时间】:2018-10-25 17:20:30
【问题描述】:

我正在学习如何使用 Fox 2 示例在SceneKit 中使用动画功能(您可以在这里找到它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: "当为真时,动画在其活动持续时间后仍保持活动状态,并评估为它的结束值。默认为 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 文档?

【问题讨论】:

  • 请发布您遇到问题的代码。如果我们不知道您在做什么,我们无法帮助您调试。
  • “是否有详尽且更新的 SceneKit 文档?”,没有。很遗憾。尝试将动画速度设为负数。
  • 有效!那么……fillsBackward和fillsForward是什么意思呢?

标签: ios swift animation scenekit reverse


【解决方案1】:

由于问题已解决,因此我不知道如何结束此问题: 要在 SceneKit 中反转动画,只需将速度设置为负值(例如:-1)

【讨论】:

  • 完美运行。苹果本可以在短短一句话中真正提到这一点。
  • 我正在寻找这个解决方案,我也有同样的想法,但我不敢尝试,谢谢你,它就像魔法一样 :)
猜你喜欢
  • 1970-01-01
  • 2012-07-10
  • 2016-07-23
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 2020-08-28
  • 1970-01-01
  • 2016-02-03
相关资源
最近更新 更多