AnyPortrait > スクリプト > アニメーション
アニメーションをスクリプトとして再生できます。
パラメーターとしてアニメーションクリップ名を入力すると、それに対応する「Root Unit」に自動的に切り替わります。
複数のアニメーションクリップをレイヤーして同時に再生することができます。
アニメーションを切り替えるときにフェード効果を与えることができます。
すぐにアニメーションクリップを再生します。
時間やフェード効果を待たずに再生が始まります。
PlayAt()関数を使用すると、特定のフレームで再生を開始することができます。
string animClipName : アニメーションクリップの名前
apAnimPlayData animPlayData : 対象となるアニメーションデータ
int frame : PlayAt関数で開始したいフレーム
int layer : アニメーションが再生されるレイヤー(デフォルトは0)
apAnimPlayUnit.BLEND_METHOD blendMethod : レイヤードアニメーションブレンドメソッド (デフォルトは BLEND_METHOD.Interpolation)
apAnimPlayManager.PLAY_OPTION playOption : 再生中の他のアニメーションを終了する方法 (デフォルトは PLAY_OPTION.StopSameLayer)
bool isAutoEndIfNotloop : アニメーションクリップにループオプションがない場合に自動的に終了するかどうか (デフォルトは false)
apAnimPlayData : 再生中のアニメーションクリップのデータ (アニメーションクリップが要求されていない場合は null)
現在要求されているレイヤーで再生されたアニメーションクリップが終了すると、すぐに再生されます。
レイヤー上でアニメーションが再生されていない場合、再生がすぐに開始されます。
再生中のアニメーションクリップが「Loop」オプションで終わらない場合、その機能は処理されず、無視されます。
PlayQueuedAt()関数を使用すると、特定のフレームで再生を開始することができます。
(「PLAY_OPTION playOption」以外の「Play(), PlayAt()」と同じ)
apAnimPlayData : 再生中のアニメーションクリップのデータ (要求されたアニメーションクリップが存在しないか、または 「Loop」の場合は「null」が返されます)
アニメーションは、フェード効果を含むクリップを再生します。
これは 「Play()」機能に似ていますが、フェード効果が「fadeTime」の場合、ゆっくりと自然に開始します。
CrossFadeAt()関数を使用すると、特定のフレームで再生を開始することができます。
float fadeTime : アニメーションされた滑らかに変化するフェード効果が適用される時間 (デフォルトは0.3f)
(残りはPlay(), PlayAt()と同じです)
apAnimPlayData : 再生中のアニメーションクリップのデータ (アニメーションクリップが要求されていない場合は null)
「PlayQueued()」と同様に、再生中のアニメーションが終了すると、それは連続して再生されます。
フェード効果は、終了時間に基づいて「fadeTime」によって追加され、再生が開始されます。
CrossFadeQueuedAt()関数を使用すると、特定のフレームで再生を開始することができます。
(「PLAY_OPTION playOption」を除く「CrossFade(), CrossFadeAt()」と同じです)
apAnimPlayData : 再生中のアニメーションクリップのデータ (要求されたアニメーションクリップが存在しないか、または 「Loop」の場合は「null」が返されます)
要求されたレイヤー上のすべてのアニメーションを停止します。
int layer : 停止するレイヤー
float fadeTime : フェードでアニメーションがスムーズに終了する時間 (デフォルトは0)
すべてのアニメーションを停止します。
float fadeTime : フェードでアニメーションがスムーズに終了する時間 (デフォルトは0)
要求されたレイヤー内のすべてのアニメーションを一時停止します。
int layer : 一時停止するレイヤー
すべてのアニメーションを一時停止する。
要求されたレイヤの一時停止したアニメーションをもう一度再生します。
int layer : 再開されるレイヤー
すべての一時停止したアニメーションを再生します。
要求したアニメーションクリップが再生中かどうかを問い合わせます。
string animClipName : ターゲットアニメーションクリップ名
bool : アニメーションが再生されている場合はtrue を返します (再生していないか、存在しない場合はfalseを返します)
アニメーションを再生するマネージャー。
内部からの再生、停止などを制御します。
「Bake」されたアニメーションクリップ情報を参照することができます。
public List<apAnimPlayData> PlayDataList : アニメーションクリップ情報を含むリスト
アニメーションイベントを受け取るための「Listener」を登録します。
アニメーションイベントを作成および呼び出す方法の詳細については、「関連ページ」を参照してください。
MonoBehaviour listenerObject : アニメーションイベントが呼び出されるMonoBehaviourオブジェクト
アニメーションの再生速度を設定します。
デフォルト値は1.0fで、負の数を設定することもできます。
他の関数と同様に、「Mecanim」を使用しても機能しません。
「animClipName」を指定しない場合は、すべてのアニメーションの速度を設定します。
string animClipName : 速度を設定するアニメーションクリップの名前。 設定されていない場合はすべてのアニメーションクリップを対象とする
float speed : 再生速度比。 デフォルトは1.0fです
すべてのアニメーションの再生速度をデフォルト値に戻します。
アニメーションの再生情報のapAnimPlayDataのリストを返します。
再生可能なアニメーション情報をすぐに知ることができます。
List<apAnimPlayData> : 再生可能なapAnimPlayDataのリスト
アニメーションの再生情報のapAnimPlayDataオブジェクトを名前で参照します。
string animClipName : ターゲットアニメーションクリップ名
apAnimPlayData : 再生可能なapAnimPlayDataオブジェクト。なければnull戻り
名前を通し、アニメーションの再生状態を照会します。
「再生されていない状態(None)、再生中(Playing)、一時停止されて(Paused)、最後のフレームに到達する(Ended)」の結果値がEnum型に返されます。
IsPlaying()関数よりも細分化された状態の値を提供しています。
string animClipName : ターゲットアニメーションクリップ名
apAnimPlayData.AnimationPlaybackStatus : アニメーションの再生状態
再生機能に含まれる「Blend Method」および「Play Option」変数の値は、以下の意味を有する。
apAnimPlayUnit.BLEND_METHOD blendMethod : レイヤードアニメーションブレンドメソッド
BLEND_METHOD.Interpolation : 下位レイヤのアニメーションと比較して上書き補間でマージします。
BLEND_METHOD.Additive : 値を下位層のアニメーションに追加してマージします。
apAnimPlayManager.PLAY_OPTION playOption : 再生中の別のアニメーションを終了する方法
PLAY_OPTION.StopSameLayer : 要求されたレイヤのアニメーションのみを停止します。
PLAY_OPTION.StopAllLayers : 他のレイヤーを含め、すべてのアニメーションを停止します。
アニメーション再生機能が呼び出されたときに返されるクラス。
「apAnimPlayData」は、アニメーション再生情報を有する。
返される 「apAnimPlayData」インスタンスの関数を使用して速度を制御できます。
Ex) portrait.Play("Idle").SetSpeed(2);
public void SetSpeed(float speed)
: 速度は「speed」によって制御されます。 デフォルト値は1.0fで、負の値にすることができます。
public AnimationPlaybackStatus PlaybackStatus
: 現在の再生状態を返します。再生状態は次の値があります。
- AnimationPlaybackStatus.None : 現在再生中はありません。無効なデータの場合もあります。
- AnimationPlaybackStatus.Playing : 再生中です。
- AnimationPlaybackStatus.Paused : 再生がされたが、現在一時的に停止された状態です。
- AnimationPlaybackStatus.Ended : Loopアニメーションがないときは、最後のフレームに到達した状態です。
public string Name
: アニメーションクリップの名前です。
public int CurrentFrame
: これは再生される現在のフレームです。 整数値で返されますが、内部的には実数(Float)の値で演算になります。 アニメーションが有効な状態でない場合、-1が返されます。
public int StartFrame
: このアニメーションの開始フレームです。 無効な場合は-1が返されます。
public int EndFrame
: これはアニメーションの最後のフレームです。 無効な場合は-1が返されます。
public float NormalizedTime
: アニメーションがアニメーション全体の長さと比較してどれだけ再生されたかを0.0から1.0の間の値として返します。 無効なアニメーションの場合、-1が返されます。
using UnityEngine;
using AnyPortrait;
public class AnimationTest : MonoBehaviour
{
// Target AnyPortrait Object
public apPortrait portrait;
void Start () { }
void Update ()
{
// CrossFade "Idle" Animation Clip
if(Input.GetKeyDown(KeyCode.I))
{
if(portrait.CrossFade("Idle", 0.4f) == null)
{
Debug.LogError("Faild [Idle]");
}
Debug.Log("CrossFade [Idle]");
}
// Play "Action" Animation Clip
if(Input.GetKeyDown(KeyCode.A))
{
if(portrait.Play("Action") == null)
{
Debug.LogError("Faild [Action]");
}
Debug.Log("Play [Action]");
}
// Pause Animations in All Layers
if(Input.GetKeyDown(KeyCode.P))
{
portrait.PauseAll();
Debug.Log("Pause All");
}
// Stop Animations in All Layers
if(Input.GetKeyDown(KeyCode.S))
{
portrait.StopAll(0.3f);
Debug.Log("Stop All");
}
// Resume Animations in All Layers
if(Input.GetKeyDown(KeyCode.R))
{
portrait.ResumeAll();
Debug.Log("Resume All");
}
}
}