おーみんブログ

C#, ASP.NET Core, Unityが大好きです。

【Unity】空気抵抗ありの物体の落下のスクリプトについて。

    

  f:id:bookreadkun:20190216081529p:plain

 

おはようございます。おーみんです。

 

 

ガリレオが見つけた法則「物体の落下速度は質量に依存しない」というのは有名なお話ですね。

 

しかしながらガリレオのこの法則は空気抵抗を考慮されておりません。

そこで空気抵抗を考慮して物体を落とした場合の現象について、Unityを用いて検証していこうと思います。

 

物体の運動方程式は以下の通り。

(mは質量、gは重力加速度、kvは空気抵抗、xは落下距離、tは時間)

 

m d^2x/dt^2 = mg - kv

 

UnityにはRigidbodyという物理エンジンがあるため、重力等はプログラムを書かなくても大丈夫ですが、空気抵抗のみスクリプトを書かないといけません。

※Rigidbodyに空気抵抗を調整するシステム「Drag」がありますが、これは一定の空気抵抗なので現実の空気抵抗とは少し違います。

 

上記の運動方程式の空気抵抗部分は -kv です。

スクリプトは以下のようになるでしょう。

 

f:id:bookreadkun:20190216080507p:plain

 

FixedUpdate関数に書いている部分が空気抵抗のスクリプトになっています。

 

実際に上記のスクリプトをオブジェクトに貼り付けて一定の高さから落とすと、物体の質量が重いほど物体は速く落下することが確認できました。