【Unity】連続してAnimationClipを再生する
Animationコンポーネントには、
前回のアニメーションが終了してから、
次のアニメーションを再生する便利な関数があります。
それはAnimationのクラスが持つPlayQueued()
という関数です。
この関数は前回のアニメーションが終了した際に、
アニメーションを再生するために使用します。
引数にはアニメーション名, QueueMode, PlayModeが必要となります。
ですが、QueueModeとPlayModeの2つはデフォルトで渡される値があるので
必要とされるのはアニメーション名の1つです。
QueueModeはデフォルトで他のAnimationClipが全て停止した後に再生する
QueueMode.CompleteOthers
が渡されます。
PlayModeはデフォルトで同じレイヤーのアニメーションを停止させる
PlayMode.StopSameLayer
が渡されます。
例えば、上に動くAnimationClip_UpとY軸へ回転するAnimationClip_Rotateが
存在するとして上へ移動した後にY軸へ回転するアニメーションのために
Aを再生し終えた後にBを再生したい時などに役立ちます。
実際の例として、2つのAnimationClipを再生する例を用意しました。
このスクリプトは用意した2つのAnimationClipを再生するスクリプトです。
using UnityEngine; using System.Collections; /*===============================================================*/ /** * PlayQueued関数の使用例 * 2014年9月9日 Buravo */ public class Test_PlayQueued : MonoBehaviour { #region パブリック変数 /*===============================================================*/ /** * @brief 上方向に移動するアニメーションクリップ */ public AnimationClip clip_up; /** * @brief 回転するアニメーションクリップ */ public AnimationClip clip_rotate; /*===============================================================*/ #endregion /*===============================================================*/ /** * @brief 初期化 */ void Start () { animation.Play(clip_up.name); // PlayQueued(string animation, // QueueMode queue = QueueMode.CompleteOthers, // PlayMode mode = PlayMode.StopSameLayer) animation.PlayQueued(clip_rotate.name); } }
挙動は下の画像みたいに動きます。
アクションゲームの邪魔な敵や動く足場みたいに、
規則的な動きをさせたい時に役立ちます。