【Unity】空気抵抗ありの物体の落下のスクリプトについて。
おはようございます。おーみんです。
うし。
— 超おーみん2@Unity民族 (@Ooooooomin_365) 2019年2月15日
Unity4作目は物理演算を用いた内容にしていこうと思います。
まずは自由落下。
空気抵抗なしだと物体の落下速度は質量に依存しませんが、空気抵抗を考慮した場合は質量も影響します。
結果は分かり切ってるけどUnityで検証。
スクリプト等はgithubに記載。#unityhttps://t.co/jxqleFIiSw
ガリレオが見つけた法則「物体の落下速度は質量に依存しない」というのは有名なお話ですね。
しかしながらガリレオのこの法則は空気抵抗を考慮されておりません。
そこで空気抵抗を考慮して物体を落とした場合の現象について、Unityを用いて検証していこうと思います。
物体の運動方程式は以下の通り。
(mは質量、gは重力加速度、kvは空気抵抗、xは落下距離、tは時間)
m d^2x/dt^2 = mg - kv
UnityにはRigidbodyという物理エンジンがあるため、重力等はプログラムを書かなくても大丈夫ですが、空気抵抗のみスクリプトを書かないといけません。
※Rigidbodyに空気抵抗を調整するシステム「Drag」がありますが、これは一定の空気抵抗なので現実の空気抵抗とは少し違います。
上記の運動方程式の空気抵抗部分は -kv です。
スクリプトは以下のようになるでしょう。
FixedUpdate関数に書いている部分が空気抵抗のスクリプトになっています。
実際に上記のスクリプトをオブジェクトに貼り付けて一定の高さから落とすと、物体の質量が重いほど物体は速く落下することが確認できました。