如何向 SCNAction 添加淡出持续时间

How to Add a FadeOut Duration to a SCNAction

嘿,我正在尝试弄清楚如何以淡出持续时间结束 scnActions moveto 动​​作。基本上我有一辆车,汽车移动到现场,但一旦动作完成就突然停下来。我希望尝试让汽车更平稳地停下来。但我真的需要弄清楚如何在 scnAction 上获得淡出持续时间。我还查看了 Apple 的开发人员页面,但没有帮助。如果有解决方案。我不知道如何将其放入可用的 swift 代码中。

错误代码失败

  let moveAction = SCNAction.moveTo(location, duration: 1.5)

        moveAction.fadeInWithDuration = 1
        moveAction.fadeIn(withDuration: 1)
        moveAction = SCNAction.fadeIn(withDuration: 1)
        moveAction.fadeOut(1.0)
        moveAction.fadeOutWithDuration = 1

您需要调整您的动作的计时模式以随着时间的推移变得流畅,减慢 movement/changes。 Scene Kit(和 Sprite Kit)中有四种不同的模式。

  1. 线性(默认,如您所见)
  2. 缓入(慢开始,快结束)
  3. Ease Out(开始快,结束慢)
  4. 缓入缓出(慢速结束,快速中间,慢速结束)

这是通过枚举设置的:SCNActionTimingMode 将其中的每一个都作为一个案例。

感谢 Swift 3.0 的简洁,现在看起来像这样:

let moveAction = SCNAction.move(to: location, duration: 1.5)
    moveAction.timingMode = .easeInEaseOut

这里有更多种类的计时动作产品:

https://github.com/craiggrummitt/SpriteKitEasingSwift