8

ここで説明されているCocos2Dの多くのCCEase*機能を使用します。iOS 7スプライト キットにもあります。ただしシンプルモードのみ。Sprite Kitを使用してエフェクトを取得または好きにするにはどうすればよいですか?SKActionTimingModeCCEaseElasticInCCEaseBounceIn

4

2 に答える 2

34

スプライト キットは、開発者がスプライトのモーションの詳細を制御することを期待して、イージング (またはトゥイーン) を意図的に制限したままにしました。基本的に、スプライトのプロパティ (回転、位置、スケールなど) を変更する前に、カスタム アクションを作成し、パラメーターにイージング カーブを適用する必要があります。これが例です。

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 の場合はp0 です
  • tは1、はp1

つまり、最初から開始し、最後で終了しますが、その間の曲線の形状によって、そこに到達する方法が決まります。イージング関数は、基本的にイーズインであるここに示すような単純なものから、エラスティックやバウンスなどの非常に複雑なものまであります。独自のものを生成するには、これを試してください: http://www.timotheegroleau.com/Flash/experiments/easing_function_generator.htm または、Robert Penner の方程式をさらに詳しく見てみましょう: http://www.robertpenner.com/easing/

于 2013-10-01T15:38:59.557 に答える
2

任意のイージングについては、Kardasis の回答がすべてを物語っています。

アニメーションに跳ねる効果を追加する簡単な方法を探しているなら、それは UIKit で行われる方法と一致しています。

Apple は数年前に UIKit にスプリング アニメーションを導入し、UIView アニメーションの実行時にスプリング ダンピングと初期速度を設定できるようにしました。残念ながら、彼らは SpriteKit でそれを実装していなかったので、それを行う独自のライブラリを作成しました。

これは、ほとんどのファクトリ メソッドをレプリケートする SKAction の一連の拡張機能であり、減衰と速度のパラメーターを追加します。

コードは GitHub にあります。自由に使用してください: https://github.com/ataugeron/SpriteKit-Spring

于 2014-10-18T23:33:13.973 に答える