こんにちは、SAT-BOXのコアラです。
皆さんはWheelColliderを使ったことがありますか?
コライダーでありながら物理挙動が含まれていて、スクリプトからWheelColliderのmotorTorqueに値を入れることで、 車などを走らせてくれます。
しかし、物理やタイヤの知識に疎い僕にとっては扱いづらいものでした。
結果、スリップが頻発する、加減速やカーブなど車の動きが変など、問題が次々と起こりました。
WheelColliderには、サスペンションの機能があったり、GetWorldPose関数を使ってタイヤのモデルを回転させることができるため、どうにかして使いたいところです。
そこで僕が考えた方法は、WheelColliderの物理挙動を使わないというものです。
具体的に言うと、WheelColliderのmotorTorque,brakeTorque,steerAngleを使わず、アクセル、ブレーキ、ハンドル操作の処理を自前で作り、Rigidbodyのvelocityを直接制御します。
逆転の発想です、この方法を使うとタイヤが回って車を動かすのではなく、車が動いてタイヤを回します。
また、steerAngleは使わないと言いましたが、(あれは嘘だ)GetWorldPose関数に関わってくるため、丁度いい値を入れます。
この方法は基礎部分の動きを自作することになるため、多少時間はかかりますが、WheelColliderの良い部分を残したまま動きを改善できたのでオススメです。
単純にサクッと動く車を用意したいだけなら、UnityのStandardAssetsの中に、Prefabとしてすぐ動かせる車が用意されているのでそれを使うという手もあります。
以上です、是非試してみてください!