WheelColliderわからん
はじめに
ついにclusterに乗り物ギミックが来ましたね!
車をつくるにはWheelColliderを使うらしい
早速車をつくるぞ!!!
「全然思い通りにならんやん!!」
よし!マニュアルを読もう!
……
....…………
ナンモワカラン...
というわけでいろいろ試してわかった自己流の設定方法を解説したいと思います。
ほびわん流セッティング
最初にRigidBodyの設定をします。
Massを1000、DragとAngularDragは0.1にします。
次にRigidbodyの重心の設定をします。
重心は低い方が走行時に転倒しにくくなります。clusterでは任意の重心の設定が出来ないのでColliderの位置を調整して設定します。
地面を擦らないように、上の画像ではタイヤくらいの高さまでに設定しています。
次はWheelCollidernの設定をします。
Radiusをタイヤのサイズに合わせます。上の画像では0.4を設定。
サスペンションの長さをSuspensionDistanceで設定します。タイヤの直径(Radius×2=0.8)を超えない程度に設定します。ここでは0.5にしてそれなりに動くようにしています。
サスペンションの可動範囲がある程度存在しないと走行時の衝撃を吸収できないため不安定な動きになります。
次に一番大事なパラメータForceAppPointDistanceを設定します。
個人的にはホイール中心より少し上に設定するのがおすすめです。この値が0とかだと跳ねまくるので必ず設定しましょう。
それではSpringのベースとなる設定をしていきます。
TargetPositionはSpringの伸び縮みの具合を指定します。
とりあえず0.5にします。0.5伸びて、0.5縮む位置がホイールの中心になります。
スポーツカーなら0.75、車高の低い車なら1とかがおすすめです。1だと伸びが0、縮みが1になります。
最後にタイヤのグリップを設定します。
ForwardFriction/SidewaysFrictionのExtremum Slipをともに1に設定します。
これで基本設定は完了です。
サスペンション設定
ここまできたら実際にUnityのプレビューで走らせながらSpringの硬さを設定します。
最初にDamperを1に設定します。この状態でSpringを調整していきます。
Unityプレビュー上で走らせつつ、跳ねない程度に硬くします。
Springの調整が終わったらDumperを調整していきます。
こちらも跳ねない程度に硬くします。
気持ちやわらかめにした方が運転しやすくなると思います。
以下は参考値ですが画像の車両では最終的な値はこんな感じにしました。
RigidbodyのDrag値の設定
Drag値を調整することで最高速度と安定性を調整できます。
Drag値を上げると横滑りしにくくなりますが、加速と最高速度が下がります。逆に下げると加速と最高速度が上がりますが、横滑りしやすくなります。
AngularDragは曲がった時の安定性を調整できます。
AngularDrag値を上げるとハンドルを切った時の安定性は増しますが、反応が悪くなります。逆に下げると反応が良くなりますが不安定になります。
AngularDragを調整した場合はステアリングの曲がり具合も調整した方が良いです。SetWheelcolliderSteerAngleItemGimmickのAngleRateを調整してください。
この記事の車両では以下の値になっています。
乗り味の調整
Rigidbodyの重心の前後位置を変えることで乗り味を変えることができます。前に移動するとFR、後ろに移動するとRRっぽくなります。
もう一つの調整方法としては前後でSpringの硬さを変えることです。ドリフト車なら後輪のSpringを柔らかくするなどです。
バイクのつくり方
WheelCollider間の幅を狭くしてForceAppPointDistanceを上げると曲げた向きに傾くようになります。この特性を利用してバイクっぽく動く乗り物が作れます。
サンプル
車両の設定サンプルを以下で配布していますのでいろいろ調整してみてください。
オフロードカーサンプル
この記事で使った車です。
デフォルトテンプレートの車はタイヤが小さすぎて調整が困難なため、タイヤの大きさと間隔を変更して調整しやすいようになってます。
バイクサンプル
最後に
というわけでcluster非公式アドカレDAY2の記事でした。WheelColliderは奥が深すぎて未だによくわからない部分もありますが、とりあえず自己流のやり方で何とかなったので記事にしてみました。
DAY3はでんこさんです。ライターやDJをしたりとマルチに活躍しているでんこさんの記事楽しみですね!