SceneKit之SCNAction

SceneKit之SCNAction_第1张图片

A simple, reusable animation that changes attributes of any node you attach it to.

SCNAction提供一个简单的、可重用的动画,可以更改附加到节点上的属性。

SCNAction类提供了一系列类方法,参见苹果文档,我们可以有选择的通过这些方法创建Actions,然后配置属性,最后调用节点对象的run(_:)方法(或SCNActionable 中的类似方法)执行操作。

大多数操作允许您更改节点的属性,例如其位置、旋转或缩放。其中许多操作都是由SceneKit动画生成的,这意味着它们在场景呈现的多个动画帧上更改关联节点的属性。当一个动画进行时,duration属性声明该动作需要多长时间以秒为单位完成,它的timingMode属性定义了动画执行的速度。动作的速度属性可以通过增加或减少播放速度来调整动画的时间。

许多操作actions可以被逆转,可以创建另一个操作action对象来逆转该操作的效果。例如,如果操作对象将节点20个单元移动到其父节点的本地坐标空间的正X方向,则反向操作将节点20个单元移动到负X方向。要创建反向操作对象,请调用操作对象的reverse()方法。

有些操作包含子操作:

  1. 序列操作有多个子操作。序列中的每个操作都在前一个操作结束后开始。

  2. 一个组操作有多个子操作。组中存储的所有操作同时开始执行。

  3. 重复操作存储单个子动作。当子操作完成时,将重新启动它。

您可以序列、操作组和重复操作嵌套起来。通过将操作组合在一起,可以向节点添加复杂的行为。

小结

Actions很容易重用,可以在运行时添加和删除操作,并直接影响呈现的节点。正由于这些原因,当你的场景频繁地根据用户输入而变化时,例如在创建游戏时,使用Actions就很方便。但也并不是所有的场景元素都可以通过动作Actions来动画化。对于其他类型的动画,可以使用隐式动画对象属性(参见SCNTransaction类)或显式创建核心动画对象(参见SCNAnimatable协议),或者为每个呈现的帧直接更改scene graph(参见SCNSceneRendererDelegate协议)。

你可能感兴趣的:(SceneKit之SCNAction)