Lin*_*rth 2 animation ios scenekit swift
我在SceneKit项目中有一个动画.它为按下的节点设置动画.现在,动画使用此代码:
SCNTransaction.begin()
SCNTransaction.setAnimationDuration(0.5)
SCNTransaction.setCompletionBlock {
SCNTransaction.begin()
SCNTransaction.setAnimationDuration(0.5)
result.node!.position.y -= 1
SCNTransaction.commit()
}
result.node!.position.y += 1
SCNTransaction.commit()
}
Run Code Online (Sandbox Code Playgroud)
我想让节点看起来像跳跃,因此我想使用一些动画选项,比如你可以使用UIView:CurveEaseIn等等.(我希望它慢慢开始,结束突然.第二个应该是突然的首先,然后慢慢地.)
有没有办法将这些用于SCNTransaction?或者是否有更好的方法让它"反弹"?
提前致谢 :)
是的,您可以使用更改计时功能SCNTransaction.
您可以通过创建CAMediaTimingFunction对象并使用它来分配它setAnimationTimingFunction().有几个命名的计时功能(例如"缓入"),或者您可以使用两组控制点创建一个.
let easeIn = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn)
SCNTransaction.setAnimationTimingFunction(easeIn)
Run Code Online (Sandbox Code Playgroud)
另一种方法是为节点的y位置创建更自定义的关键帧动画.我做了一个反弹中寻找关键帧动画第5章的示例代码的我对场景套装书:
var jump = CAKeyframeAnimation(keyPath: "position.y")
let easeIn = CAMediaTimingFunction(controlPoints: 0.35, 0.0, 1.0, 1.0)
let easeOut = CAMediaTimingFunction(controlPoints: 0.0, 1.0, 0.65, 1.0)
jump.values = [0.000000, 0.433333, 0.000000, 0.124444, 0.000000, 0.035111, 0.000000];
jump.keyTimes = [0.000000, 0.255319, 0.531915, 0.680851, 0.829788, 0.914894, 1.000000];
jump.timingFunctions = [easeOut, easeIn, easeOut, easeIn, easeOut, easeIn ];
jump.duration = 0.783333;
yourNodeThatWasClicked.addAnimation(jump, forKey: "jump and bounce")
Run Code Online (Sandbox Code Playgroud)
如果沿着这条路走下去,我建议找一个可以试验,调整和玩关键帧动画的关键时间和值的地方.也许是一个游乐场或带滑块的小型自定义应用程序,您可以在其中获得快速迭代.
| 归档时间: |
|
| 查看次数: |
2752 次 |
| 最近记录: |