Animatorについてメモ
現在再生中のステート長さ(時間)を取得します。
1つ目 ステートの再生スピードによって取得結果が変わる
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Animetest : MonoBehaviour { [SerializeField] private Animator animator;//Animator型の変数を宣言 Animatorコンポーネントをアタッチしておく private AnimatorStateInfo animator_stateinfo1;//AnimatorStateInfo型の変数を宣言 private float state_time01;//float型の変数を宣言 ステートの時間取得用 void Start() { animator_stateinfo1 = animator.GetCurrentAnimatorStateInfo(0);//現在のステートの情報を取得 引数0はレイヤーの番号 state_time01 = animator_stateinfo1.length;//ステート長さを取得 //ちなみにここで取得した値は再生スピード設定をふまえた時間 //再生スピードが2倍なら本来の時間より半分になる Debug.Log(state_time01);//コンソールに表示 } }
2つ目 ステートの再生スピードによって取得結果が変わらない
追記:ステート長さというより再生中のアニメーションクリップの長さを取得
といったほうが良いですね。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Animetest : MonoBehaviour { [SerializeField] private Animator animator;//Animator型の変数を宣言 Animatorコンポーネントをアタッチしておく private AnimatorClipInfo[] animator_clipinfo1;//AnimatorClipInfo型の変数を宣言 private float state_time01;//float型の変数を宣言 ステートの時間取得用 void Start() { animator_clipinfo1 = animator.GetCurrentAnimatorClipInfo(0);//現在のアニメーションクリップの情報を取得 引数0はレイヤーの番号 state_time01 = animator_clipinfo1[0].clip.length; Debug.Log(state_time01);//コンソールに表示 } }
Unity本を出版しました!
突然ですが、Unity本を出版しました!
こちらを読むことで、スクリプトの基礎固めができます!
現在、kindle unlimitedで読み放題設定中です。今のうちにどうぞ!
もっと早く教えてほしかった!Unity C#入門