0 支持
75 閲覧

以下のような方法を用いて、物体の現在の加速度を取得しようと考えています。

void FixedUpdate()
    {
Rigidbody rb = this.GetComponent<Rigidbody> ();  // rigidbodyを取得     
float v1 = rb.velocity.magnitude;   
seconds += Time.deltaTime;
float a = (v0-v1)Time.deltaTime ;
    }
現在、Fixedupdateのひとつ前の処理で取得した速度をv0として、加速度aを算出したいのですが
ひとつ前のupdateで取得した変数を、現在のupdateで取得するというようなことはできますか?
もしそのようなことができるのであれば、その方法をご教授願いたいです。
閉鎖
初心者 (400 ポイント)
閉鎖 | 75 閲覧

回答 1

+1 支持
ベストアンサー
メンバ変数を用意しておけば実装可能かと。

 float v0;
 float seconds;
 void FixedUpdate() {
  Rigidbody rb = this.GetComponent<Rigidbody>();  // rigidbodyを取得     
  float v1 = rb.velocity.magnitude;
  seconds += Time.fixedDeltaTime;
  float a = (v0 - v1) / Time.fixedDeltaTime;
  v0 = v1;
 }

ところで、FixedUpdate関数はフレームレートに依存しない物理計算向けの更新関数ですが、
Time.deltaTimeはUpdate向けに用意されているものなので、不適当です。
fixedDeltaTimeというのが用意されているので、そちらを使いましょう。
達人回答者 (6.2k ポイント)
選択
0
ご回答ありがとうございます。
加速度を取得することが可能になりました。少し誤差が生じていますが、ひとまずこの方法でいこうと思います。

関連する質問

0 支持
1 回答
neoaco 初心者 (280 ポイント) 2020 8/17 質問 | 150 閲覧
0 支持
0 回答
0 支持
1 回答
0 支持
1 回答
2021-02-08 質問・回答をMarkdownで入力できるようにしました。
2020-09-03 新たなスパム対策を導入しました。

143 質問

146 回答

153 コメント

171 ユーザー