UnityのスタンダードアセットのVehiclesには車のプレハブと飛行機のプレハブが用意されています。
今回は車のプレハブをシーン上に配置して、Terrainで作った地面の上を走らせ楽しんでみようと思います。
この車のプレハブに設定しているスクリプトや設定等を、自分で用意した車のモデルにも同じように設定すれば自作の車モデルを走らせる事が出来ます。
それに関しては次回以降やります。
今回はスタンダードアセットのCarのパラメータを見ていき、実際に地面の上を走らせてみます。
Carプレハブを配置
CarプレハブはAssets→StandardAssets→Vehicles→Car→Prefabにありますので、これをヒエラルキー上にドラッグ&ドロップします。
Carプレハブの階層は↑のような構成になっています。
車のモデル、車のコライダ、車のタイヤ用のWheelCollider等が別々に構成されています。
Carオブジェクトに設定されているスクリプト
CarControllerの設定値
Carのインスペクタを見ると以下のようになっています。
インスペクタが長いので画像を分割してます。
↑がRigidbodyです。
質量が1000kgに設定されています(Unityマニュアルでは1500ぐらいに設定するといいかも?みたいに書いてあったような・・・)。
↑がCarControllerです。
設定する項目がいっぱいあって大変です・・・・(^_^;)
CarDriveTypeは車のタイプで、FourWheelDrive(4輪駆動)、FrontWheelDrive(前輪駆動)、RearWheelDrive(後輪駆動)を設定出来ます。
WheelColidersは車のタイヤに設定したWheelColliderを右の前輪、左の前輪、右の後輪、左の後輪の順で設定されています(順番は決まっているようです)。
WheelMeshsは車のタイヤ部分のメッシュを右の前輪、左の前輪、右の後輪、左の後輪の順で設定します。
WheelEffectsはタイヤに設定したWheelEffectを右の前輪、左の前輪、右の後輪、左の後輪の順で設定します。WheelEffectsはタイヤの後を残す為のスクリプト?
Centre Of Mass OffsetはタイヤのRigidbodyの質量のオフセット値を設定するみたいです(WheelCollider自体にRigidbodyが含まれてる?)。
MaximumSteerAngleは左右のキーを押した時のハンドルが動く角度を指定します。
SteerHelperはハンドルの動きの補助作用?で、0で物理的な作用、1は車が向いている方向に作用する。
TractionControlは車輪が回り過ぎた時に引っ張るかどうか?0だと何もしない、1だと引っ張る。1だとどっかにはまった時に動ける位置に動かすということでしょうか?(謎)
FullTorqueOverAllWheelsはタイヤの最大回転数?
ReverseTorqueはタイヤの回転の減少値
MaxHandbrakeTorqueはハンドブレーキを使用した時の最大回転角度を指定します。
Downforceは車が地面に抑えつけられる力を設定します。
SpeedTypeは速度をMPH(マイル)かKPH(キロ)で表すかです。
TopSpeedは車の最大速度です。
RevRangeBoundaryはエンジンの回転数?の境界値を指定するみたいですが、よくわかりません。
Slip Limitはタイヤがスリップするしきい値を設定します。おそらく0が以前の車の向きと変わらない状態、1が反対方向を向いた時なので、0.5で横を向いた時にスリップするということなのかと・・・。
BrakeTorqueはブレーキ時の回転数?
とりあえずCarControllerスクリプトの設定はこんな感じです。
CarUserControlスクリプト
CarUserControlスクリプトはユーザーが移動キーを押した時の処理をしているスクリプトです。
キーボードの↑↓キーで前後、←→で左右に車を動かします。
Spaceキーでハンドブレーキを引きます。
ハンドブレーキとなってるけど、通常のブレーキの事なんでしょうか・・・謎。
CarAudioの設定
CarAudioは音声に関するスクリプトです。
LowAccelClipは低速で加速状態の音声
LowDecelClipは低速で何もしていない状態の音声
HighAccelClipは高速で加速している状態の音声
HighDecelClipは高速でエンジンを回転させていない時の音声
PitchMultiplierはオーディオクリップの音域を変更する時に使用する値
LowPitchMinは低音で可能な音域の最低値
LowPitchMaxは低音で可能な音域の最高値
HighPitchMultiplierは高温の音域を変更する時に使用する値
MaxRolloffDistanceは音が聞こえなくなる最大距離を指定します。
DopplerLevelはドップラー効果の量を指定します。
UseDopplerはドップラー効果を使用するかどうかです。
WheelsHubsの子要素に設定されているスクリプト
WheelsHubsの子要素では車のタイヤ毎にWheelCollider、WheelEffectsコンポーネントが設定されています。
WheelCollider
WheelColliderは車のタイヤの動きの設定をする為のコライダです。
Massはホイールをキログラムで表した質量で、0より上の値を設定します。通常は20~80。
Radiusはコライダの半径
WheelDampingRateはホイールの減衰率?
SuspensionDistanceはサスペンションの長さ
ForceAppPointDistanceはタイヤとサスペンションの力の作用点の距離
Centerはコライダの中心位置の調整値
WheelCollider全体については
を参考にさせて頂きました。
SuspensionSpringはホイールサスペンションの設定です。
Springはスプリングの固さ、地面の凸凹や荷重に対する反応の値。値を大きくするとハンドル操作の不安定さが増し、小さくすると反応が鈍いが安定した操作が出来ます。
Damperはスプリングが溜め込んだエネルギーの放出率、値を小さくすると車が弾みやすくなります。
TargetPositionはホイールの静止座標、0~1の値を設定します。通常は0.3~0.7。
ここら辺は
で解説されています。
ForwardFrictionはホイールの進行方向の摩擦の設定です。
ExtremumSlipは極地点の滑り
ExtremumValueは極端点での力
AsymptoteSlipは漸近線の座標の滑り
AsmptoteValueは漸近線の滑りの力
StiffnessはextremumValueと asymptoteValueの乗算を返す
ここら辺は専門的でよくわかりませんね・・・。
↑を参照してください。
SidewaysFrictionはホイールの横方向の摩擦の設定です。
設定項目はForwardFrictionと同じです。
WheelEffects
WheelEffectsは車を急発進した時等に、地面に付けるタイヤ痕のエフェクトを残すスクリプトです。
SkidTrailPrefabにタイヤ痕のプレハブを設定します。
パーティクルを使う場合はSkidParticlesに設定します。
実際に車を走らせてみる
Carプレハブの設定値を見てきたので、実際に車を走らせてみましょう。
カメラにSmoothFollowカメラ(AddComponent→Scripts→StandardAssets.Utility→SmoothFollow)を取り付けます。
TargetにはCarの子要素のHelpers→CameraFocusPointを設定します。
それでは実行してみましょう。
↑のようになりました。
途中でSmoothFollowの設定を変えて車を運転している時の視点に変更してみました。
デフォルトの車のモデルではハンドル付近のモデリングがされていないので変な感じになっていますが、車内も丁寧にモデリングした車を使えば、運転者の視点のレースゲームも作れますね(^_^)v