「Animator」の編集履歴(バックアップ)一覧はこちら
Animator - (2015/05/26 (火) 19:36:07) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
*使い方
①Animatorを作る
②既存のAnimationをドロップすると「State」ができる。
③「State」同士をTransitionを作って結ぶ
③Animatorの右上のタブからParametersを選び、「+」で任意のフラグを追加する(例えばBoolで作って、チェックを入れる)
④transitionをクリックして③で作ったフラグの条件true/falseをconditionを追加する
⑤AnimatorにAddしているscriptからフラグを制御して、stateの遷移を制御する
if (Input.GetKey(KeyCode.Space))
anim.SetBool ("DoWin", true);
else
anim.SetBool ("DoWin", false);
例えば、スペースキーを押したままにすると、DoWinフラグがtrueになり、
Animatorで作った遷移に従って、該当のAnimationが再生される
AnimatorのAnimationは、遷移する時に、Animation同士のブレンドがされて、自然な変化になるように調整される。
ブレンドの割合は、transitionをクリックして選択したsettingsで調整できる
*使い方
①Animatorを作る
②既存のAnimationをドロップすると「State」ができる。
③「State」同士をTransitionを作って結ぶ
③Animatorの右上のタブからParametersを選び、「+」で任意のフラグを追加する(例えばBoolで作って、チェックを入れる)
④transitionをクリックして③で作ったフラグの条件true/falseをconditionを追加する
⑤AnimatorにAddしているscriptからフラグを制御して、stateの遷移を制御する
if (Input.GetKey(KeyCode.Space))
anim.SetBool ("DoWin", true);
else
anim.SetBool ("DoWin", false);
例えば、スペースキーを押したままにすると、DoWinフラグがtrueになり、
Animatorで作った遷移に従って、該当のAnimationが再生される
AnimatorのAnimationは、遷移する時に、Animation同士のブレンドがされて、自然な変化になるように調整される。
ブレンドの割合は、transitionをクリックして選択したsettingsで調整できる
*アニメーションを止める方法
animator.speed = 0;
*スクリプトからAnimator制御
*Animatorの遷移をコードで行う
http://tsubakit1.hateblo.jp/entry/2015/02/11/223849
参考
parametersを設定してフラグをon/offするのは設定が面倒なので、
コードで直接遷移を実現する方法
CrossFade関数は、アニメとアニメをブレンドして実行する
第一引数はstateの名称
スペースキーを押すと前に進む
public class GirlController : MonoBehaviour {
Animator animator;
void Start () {
animator = GetComponent<Animator> ();
animator.Play ("Idle");
}
void Update () {
if (Input.GetKeyDown (KeyCode.Space)) {
animator.CrossFade("Walk",1f);
}
}
}
CrossFade仕様
http://docs.unity3d.com/ScriptReference/Animator.CrossFade.html
*Animationをコードから指定する
参考
http://unitylab.wiki.fc2.com/wiki/%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3
AddComponentでAnimationを追加する
sizeに登録したいanimationの数を入れて、
Elementにドロップして登録する
単純に再生するときは、
animation.Play ("idle");
現在のアニメーションからブレンドして再生する時は、
animation.CrossFade ("Run", 0.5f);
*最初から再生させる
animation.CrossFadeQueued ("up_sword", 0.5f, QueueMode.CompleteOthers);
//通常のクロスフェードと若干異なり最初から再生される
//CrossFade()側を使うとloopの場合、フレームがStopしてもクリアされず進んだ状態で記憶されている
*アニメ遷移時にイベント起動
AnimationEvent ev = new AnimationEvent ();
ev.time = 0.0f;
ev.functionName = "StepSound";
ev.floatParameter = 1.0f;
animation ["run"].clip.AddEvent (ev);