質問: Unityの質問です。 Wheel Collider内にある、Suspension Distanceの値を常にゼロにするスクリプトを作りたいのですが、 全くアイデアがありません。 ご教授いただきたいです。 よろしくお願いします。 Vertionは、Unity 2018.3.14です。 上の質問に加えて、 Asset Storeからインポートした車にWheel Colliderを加えた時、車がガタガタする動作はどうして起きてしまうのか、わかる方がいらっしゃいましたら 教えていただけると、とてもうれしいです。 よろしくお願いします。
回答: > > Wheel Collider内にある、Suspension Distanceの値を常にゼロにするスクリプトを作りたい > > > どの辺がわからないのかがわからない、特に「常に」っていうのがどういう意味なのかわからないのですが、こんな感じです。 ``` using UnityEngine; public class SetSuspensionDistance : MonoBehaviour { SerializeField] WheelCollider[] m_wheelColliderArray; void Start() { foreach (var wc in m_wheelColliderArray) { wc.suspensionDistance = 0; } } } ``` 「常に」というのが「実行中に変化してしまうが、それを 0 に瞬時に戻したい」なら、Start() ではなく Update() に処理を書けばよいでしょう。 > > Asset Storeからインポートした車にWheel Colliderを加えた時、車がガタガタする動作はどうして起きてしまうのか > > > Suspension Distance を 0 にしてるからじゃないですか?もしくはインポートしたモデルのコライダーを全部取り除いていない、とか。 **↓Suspension Distance = 0.3(デフォルト値)の場合** ![イメージ説明 **↓Suspension Distance = 0 の場合** !イメージ説明 ちなみにモデルは Realistic Mobile Car Demo を使い、車の挙動は Wheel Collider チュートリアル のやり方をそのままやってます。 タイヤの位置は計算せず手で適当に置いたので、ステアリング時の動きが変かもしれません。 (車は全然詳しくありません)