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