teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

質問を変更

2020/08/22 08:37

投稿

javascripter
javascripter

スコア12

title CHANGED
@@ -1,1 +1,1 @@
1
- unity のGetCurrentAnimatorにつて教えてください
1
+ unity のAnimationStateでモーションの現在時間を読み取れな
body CHANGED
@@ -1,28 +1,18 @@
1
+ ### 前提・実現したいこと
1
- unityでアニメーションをスクリプトから制御しようと思い勉強しているのですが、GetCurrentAnimatorについての解説ページが無くて困っています。
2
+ https://docs.unity3d.com/ja/current/ScriptReference/AnimationState.html
2
- モーションの現在フレーム取得、フレムの大きさなどの取得にGetCurrentAnimatorが必要なようで、解説が欲しいです
3
+ ここによると、AnimationStateでtimeは現在のアニメション時間といこと利用い。
3
- ```c#
4
4
 
5
- public class TestAnimation : MonoBehaviour
6
- {
7
- private Animator m_animator;
5
+ ### 発生している問題・エラーメッセージ
8
6
 
9
- void Awake()
7
+ 以下のコードで実行すると
10
- {
11
- m_animator = GetComponent< Animator >();
12
- }
13
8
 
14
- public void SetAnimationFrame( int i_frame )
15
- {
16
- var clipInfoList = m_animator.GetCurrentAnimatorClipInfo( 0 );
17
- var clip = clipInfoList[ 0 ].clip;
9
+ 'Animation' does not contain a definition for 'speed' and no accessible extension method 'speed' accepting a first argument of type 'Animation' could be found (are you missing a using directive or an assembly reference?)
18
10
 
19
- float time = (float)i_frame / clip.frameRate;
11
+ とエラーが出てしまう。(多分定義されていないといわれている?)
20
12
 
13
+ ### 該当のソースコード
14
+ 定義は省きます。また、modelはインスペクターにアニメーションを設定したゲームオブジェクトです。
15
+ ```C#
21
- var stateInfo = m_animator.GetCurrentAnimatorStateInfo( 0 );
16
+ animation = model.GetComponentInChildren<Animation>();
22
- var animationHash = stateInfo.shortNameHash;
23
-
24
- m_animator.Play( animationHash, 0, time );
17
+ Debug.Log(animation.time);
25
- }
26
- }
27
-
28
18
  ```