
Scene Kit
|
251
8.6
移动
问题
我们想让对象在场景中移动。
解决方案
要在
Scene Kit
中使对象移动,可以使用
Core Animation
中的动画(
Animation
)类。
要创建一个动画对象,首先要定义想在动画中改变的属性。然后用它去创建动画对
象,如一个
CABasicAnimation
:
//
这个动画用于改变对象
position
属性
let moveUpDownAnimation = CABasicAnimation(keyPath: "position")
//
在
y
轴(即向上)移动
3
个单位
moveUpDownAnimation.byValue = SCNVector3(x: 0, y: 3, z: 0)
//
在动画开始和结束时,速度加快和减慢,
//
而不是机械的反弹
moveUpDownAnimation.timingFunction =
CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
//
动画结束时,自动回到开始
moveUpDownAnimation.autoreverses = true
//
动画自动重复播放(无限循环)
moveUpDownAnimation.repeatCount = Float.infinity
//
动画时长为
2
秒
moveUpDownAnimation.duration = 2.0
创建好动画对象,我们就可以将它应用到节点上,动画将开始播放:
capsuleNode.addAnimation(moveUpDownAnimation, ...