如何对sprite动作应用不同的缓动效果?

Pab*_*blo 8 ios ios7 sprite-kit

CCEase*这里描述的Cocos2D中使用了很多功能.iOS 7 Sprite Kit也有.但只有简单的模式.如何使用Sprite Kit获得或喜欢效果?SKActionTimingModeCCEaseElasticInCCEaseBounceIn

Kar*_*sis 33

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];
Run Code Online (Sandbox Code Playgroud)

决定宽松的部分是p = t*t.所以,这p是一个功能t:

  • when t为0时p为0
  • t为1时,p为1

这意味着你将从头开始并在结束时结束,但两者之间的曲线形状将决定你如何到达那里.缓和功能可以很简单,就像这里显示的那样,它基本上是一种易于使用的,或者是非常复杂的,例如弹性或弹跳.要生成自己的,请尝试以下方法:http://www.timotheegroleau.com/Flash/experiments/easing_function_generator.htm 或者更详细地了解Robert Penner的公式:http://www.robertpenner.com/easing/