AnimationCurveで何かできないかな

  • 6
    Like
  • 0
    Comment
More than 1 year has passed since last update.

AnimationCurveがScriptから作れることを知った。
今までScriptでつくろうだなんて思わなかっただけだけれど

public AnimationCurve curve;
void Awake()
    {
        Keyframe keyFrame1 = new Keyframe(0, 0, 0f, 0f);
        Keyframe keyFrame2 = new Keyframe(1, 1, 0f, 0);
        curve = new AnimationCurve(keyFrame1, keyFrame2);
    }

Keyframeの引数はtime,value,inTangent,outTangent
AnimationCurveの引数はKeyFrameの配列


左が(0, 0, 0, 1) (1, 1, 1, 0)
真ん中(0, 0, 0, 0) (1, 1, 0, 0)
右(0, 0, 0, -1) (1, 1, -1, 0)

こんな感じでScriptからアニメーションカーブを作れる・・・・あまり必要はないかもだけれど・・・。
publicにしてインスペクタで好きにカーブを作った方があきらかに手っ取り早いし・・・。

ちなみに値を取得するときは


float value = curve2.Evaluate(time);  // timeは秒数

で取得できる

AnimationCurve使いどころとしては・・・

iTweenとかのeaseTypeにないアニメーションをしたい場合や
iTweenを使わないあるいは使えない箇所(TimeScaleが0の時のアニメーションとか)

TimeScaleが0とのきはUpdate内で、Time.deltaTimeではなくて
Time.realtimeSinceStartupをつかってカーブの値を取得すればたとえTimeScaleが0でも
curveの通りに動作できます。
NGUIのTweenはそういう機能があるんだけどな〜。