やりたいこと・前提
回転というより角度(deg)を基にその方向へゲームオブジェクトを向かせたいのですが、
ちょうどいい機能が見つからずtransform.Rotateで一応のこと間に合わせています。
しかしこれを処理するゲームオブジェクトのみ20~30fps程度のカクつきを見せ、
直す方法を探しています。
ゲームオブジェクトの進行は角度と速度で管理しており、常に運動しています。
(角度を単位ベクトルに直したものと速度をRigidbody.velocityに代入して動かしています)
また、System.Reflectionを用いて名前不定義のクラスのメソッドへ毎フレームアクセスしています。
ソースコードの該当部分
C#
1public float add = 0; 2 3void Update(){ 4 transform.Rotate(0,0,add); 5 add = 0; 6}
必要な際このaddに回転分を代入しています。
試したこと
原因を探してみたのですが……
該当するゲームオブジェクトが画面上に20個程度あっても、CPUは10ms(100fps)、GPUは16ms(60fps)を保ち、マシンのスペックが悪いためではないようです。
System.Reflectionを用いた部分をコメントアウトしたところ解決する気がしないため、これも原因ではないようです。
上記のコードにおいてaddを使わず、たんにtransform.Rotate(0,0,1);のようにしても、同じ挙動を見せました。
UpdateをFixedUpdateにしても変わりませんでした。
ただ、運動していないゲームオブジェクトではスムーズに回転するようです。
運動中のゲームオブジェクトにtransform.Rotateを使うのはカクついてしまうのでしょうか。
もしそうであればいかにして向きを変えれば良いでしょうか。
分かる方教えて下さい、お願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/23 16:46