前提・実現したいこと
Unityで投球の軌道の再現を行っています。
発生している問題・エラーメッセージ
コマ送りをしたときと、再生したときで球体の軌道が異なってしまいます。
PCのグラフィック性能が低いため処理落ちが発生しているのかもしれない、と思ったのですが、どのように確認するとよいのでしょうか。もしくは、他の原因があるのでしょうか。
また、処理落ちが原因であれば、処理を一定にする方法はあるでしょうか。
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class normalball : MonoBehaviour 6{ 7 public Rigidbody rb; 8 private float speed, power, anglex, anglez; 9 private float vel; 10 private float revf, revr; 11 private float Forcelf, Forcelr; 12 // Start is called before the first frame update 13 void Start() 14 { 15 speed = 154.0f; 16 //球速[km/h] 17 power = 0.27862f * speed; 18 anglex = -25.4f; 19 //プラスでフォーク方向[cm] 20 anglez = -6.0f; 21 //プラスでシュート方向[cm] 22 rb = GetComponent<Rigidbody>(); 23 rb.AddForce( 24 (transform.forward) * power * 0.9984f + (transform.right) * power * -0.0246f + (transform.up) * power * -0.0246f, ForceMode.VelocityChange); 25 //初速がspeedになるように力を与える 26 } 27 28 // Update is called once per frame 29 void Update() 30 { 31 vel = rb.velocity.z; 32 revf = 3 * anglex * (vel / speed); 33 revr = 3 * anglez * (vel / speed); 34 Forcelf = -1.0f / 8.0f * Mathf.PI * Mathf.PI * 1.208f * Mathf.Pow(0.073f, 3.0f) * vel * revf; 35 Forcelr = 1.0f / 8.0f * Mathf.PI * Mathf.PI * 1.206f * Mathf.Pow(0.073f, 3.0f) * vel * revr; 36 rb.AddForce( 37 (transform.up) * Forcelf, ForceMode.Force); 38 rb.AddForce( 39 (transform.right) * Forcelr, ForceMode.Force); 40 //マグヌス効果を考慮 41 } 42} 43
補足情報
当初回転数でマグヌス効果を発生させようとしたのですが、回転数が多いためかうまく機能しませんでした。こちらも処理の問題でしょうか。
環境
Unity 2019.4.0f1 Personal
OS: Windows10 Home
CPU: Core i7-8565U 1.80GHz
RAM: 8GB
GPU: Intel UHD Graphics 620
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/17 06:57
2020/06/17 13:29