モーションの速度変更しとうとするとインスペクターのspeedでは値を変更すると速度も変わりますがUnity2Dのようにanim.speed = 10;などとやっても速度が変更されません、どうすればスクリプトで変更できるのでしょうか?
質問ですがfixedUpdate()はUnity3Dの場合いはどのコンポーネントを使うときに使えばいいのでしょうか?
入力関係は毎フレーム必要で即座に反応してもらいたいのでアップデートに記述していますがFixedUpdateは一秒間に呼ばれる回数が決まっていますが
その辺を教えてくれますでしょか?
C#
1public class UnichanController : MonoBehaviour { 2 private Animator anim; 3 private Transform tr; 4 private Rigidbody rb; 5 public float moveSpeed; 6 float h; 7 float v; 8 9 // Use this for initialization 10 void Start () { 11 rb = GetComponent<Rigidbody>(); 12 anim = GetComponent<Animator>(); 13 14 } 15 16 void FixedUpdate() 17 { 18 19 20 } 21 22 // Update is called once per frame 23 void Update () 24 { 25 float h = Input.GetAxis("Horizontal"); 26 float v = Input.GetAxis("Vertical"); 27 28 if (v != 0) 29 { 30 Debug.Log("up"); 31 anim.SetBool("Run_bool", true); 32 33 34 } 35 else 36 { 37 anim.SetBool("Run_bool", false); 38 // anim.speed = 5; 39 } 40 41 } 42}
すみません、Unityはそこまで詳しくないので、情報を提供できるかは分かりませんが、
> FixedUpdateは一秒間に呼ばれる回数が決まっていますがその辺を教えてくれますでしょか?
その辺はキャラごとに1frameで一回だと思います。つまり60FPSの場合は60回、30FPSの場合は30回ですね。モーションの速度変更を試したいなら、下記を参照してみてはいかがでしょう?
https://docs.unity3d.com/ja/current/Manual/TimelineChangingClipPlaySpeed.html
@_Beginner__さん
anim.speedを変えれば2D3D関係無く動作すると思います。
スクリプトを見るに、停止時にスピードを変えているようですが「止まっているモーションなので速度が変わっているか分からなかった」ということは無いでしょうか?
また、モーションの再生速度とFixedUpdateは関係ありません。(FixedUpdateは物理演算が関係する場合に使います)
FixedUpdateについては以前似たような回答(コメント)をしましたが、そこを読んでも分からなかったということでしょうか?
https://teratail.com/questions/181158
@stdioさん
Updateの場合は1フレームにつき1回ですが、FixedUpdateの場合はフレームレートに関係無く常に決まった値になります。(「ProjectSettings > Time > Fixed Timestep」で指定した秒数毎に呼ばれます)
あなたの回答
tips
プレビュー