我在此处描述的Cocos2D中使用了很多CCEase*
功能。iOS 7 Sprite Kit也有. 但是只有简单的模式。如何使用Sprite Kit获得或喜欢效果?SKActionTimingMode
CCEaseElasticIn
CCEaseBounceIn
2 回答
Sprite Kit 故意限制了缓动(或补间),期望开发人员能够控制精灵运动的细节。基本上,您需要做的是在更改精灵的属性(旋转、位置、缩放等)之前进行自定义操作并将缓动曲线应用于参数。这是一个例子。
CGFloat initialScale = mySprite.xScale;
SKAction *scaleAction = [SKAction customActionWithDuration:duration actionBlock:^(SKNode *node, CGFloat elapsedTime) {
CGFloat t = elapsedTime/duration;
CGFloat p = t*t;
CGFloat s = initialScale*(1-p) + scale * p;
[node setScale:s];
}];
[mySprite runAction:scaleAction];
决定宽松的部分是p = t*t
。所以,p
是t
这样的函数:
- 什么时候
t
是0,p
是0 - 什么时候
t
是1,p
是1
这意味着您将从起点开始,在终点结束,但中间曲线的形状将决定您如何到达那里。缓动功能可以很简单,就像这里显示的那样,基本上是一种缓动,也可以很复杂,例如弹性或反弹。要生成你自己的,试试这个:http ://www.timotheegroleau.com/Flash/experiments/easing_function_generator.htm 或者更详细地看看罗伯特彭纳的方程:http ://www.robertpenner.com/easing/
对于任意宽松,卡达西斯的回答说明了一切。
如果您正在寻找一种简单的方法来为您的动画添加弹跳效果,这与 UIKit 中的操作方式是一致的,我有一些东西要给您。
几年前,Apple 在 UIKit 中引入了弹簧动画,让您在执行 UIView 动画时设置弹簧阻尼和初始速度。不幸的是,他们没有在 SpriteKit 中实现这一点,所以我创建了自己的库来实现这一点。
它是 SKAction 的一组扩展,复制了大多数工厂方法,添加了阻尼和速度参数。
代码在 GitHub 上,随意使用:https ://github.com/ataugeron/SpriteKit-Spring