LoginSignup
7
6

More than 5 years have passed since last update.

AnimationCurveで何かできないかな

Posted at

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はそういう機能があるんだけどな〜。

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6