UnityのスタンダードアセットにあるCarプレハブを使うと、デフォルトの車モデルを使ってすぐに地面の上を走らせる事が出来ます。
Carプレハブについては、
↑を参照してください。
今回はBlenderで自作した車モデルにCarプレハブと同じような設定をして、走らせてみたいと思います。
車モデルでボディとタイヤのメッシュを分けて作っていれば、どのような車モデルでも同じように出来ます。
無料で配布されている車モデルを使うのもいいかもしれません、ただ・・、実際に存在する車モデルを使用する場合は使用許可が必要になってくるとは思います。
自作の車モデル
まずは、Blenderにデフォルトで配置されているランプ、カメラ、Cubeを削除します。
車をモデリングする
車モデルを車のボディとタイヤ、タイヤの泥除け?をメッシュを分けて作成します。
今回作成した車のモデルは下記のような感じです。
車体とタイヤ、泥除けは別々のオブジェクトとして作成します。
先が長くなっているのが車の前方で窓ガラス部分はUnityで運転者目線のカメラの配置にしたい為に、メッシュを消しています(わたくしの環境では透明マテリアルがうまく表示出来ない為)。
車の前方をBlenderのY軸とは逆方向に向けておきます。
なんてちゃっちい車だ!
なんて声が聞こえてきそうですが・・・、モデリング初心者なんでこんなもんです。( ノД`)シクシク…
もっと経験値を積み上げないとダメですね(-_-)
↑のように泥除けのメッシュも作成しています。
わかりやすいようにオブジェクトに名前を付ける
モデリングが済んだら、車体、タイヤ4つ、泥除け4つ、それぞれに名前を付けます。
Unityに取り込んだ時にプリミティブ図形の名前だと解り辛い為です。
マテリアルやテクスチャの設定は省きます・・・(-.-)
オブジェクトの基底の位置を変更する
タイヤや泥除けのオブジェクトの基底の位置を変更します。
タイヤや泥除けの元のオブジェクトを3Dカーソルの位置を基準に作っていると、基底の位置が車体の中央あたりになっています(作り方によりますが)。
そこでタイヤならばタイヤオブジェクトの中心に基底をもっていきます。
Objectモードで、タイヤ4つ、泥除け4つをShiftキーを押しながら選択し、Object→Transform→Origin To Center Of Massを選択します。
するとタイヤの質量の中心に基底の位置が移動します。
現在のRotation、Scaleをデフォルトにする
Objectモードで変更した値をデフォルトの値とします。
車モデルの全てを選択した状態でCtrl+Aキーを押しRotation、Scaleを選択します(ツールシェルフの項目でRotation、Scaleにチェックを入れる)。
これでObjectモードで変更した現在のRotation、Scaleの値がデフォルト値となり、Rotationがデフォルトの0、Scaleが1となります。
Location(位置)をデフォルトの0に設定してもいいんですが、Unityで取りこんだ時に子要素なのに親要素からの相対値が反映されず0となってしまいます。
なので、LocationはObjectモードで変更した数値のままのほうがいいかも?
車モデルの出力
出来たモデルをFBX形式で出力します。
ランプやカメラ等を削除していなかった場合は、車モデルを選択しSelected Objectsの項目にチェックを入れます。
あとはScaleの右のボタンを解除し、Forwardをそのまま-Z Fowardにしておきます。
!EXPERIMENTAL! Apply Transformにチェックを入れます。
この設定で出力すると、Unityに取り込んだ時Scaleが1、Rotationが0となっていると思います。
自作の車モデルに設定をする
UnityでAssetsフォルダ内で右クリック→Import New Asset…を選択し、先ほど出力した車モデルを取り込みます。
なぜかシリンダーで作成したタイヤ部分の蓋が消えています・・・・(ーー;)
モデルを取り込んだらヒエラルキー上にドラッグ&ドロップして配置します。
Carプレハブの設定をそのまま自作のモデルに適用する
自作の車モデルを動かすには、スタンダードアセットのCarプレハブに設定されているコンポーネントをそのままコピーし、車モデルに設定します。
Carに設定されているコンポーネントをコピー
まずはCarに設定されているRigidbody、CarController、CarUserControl、CarAudioの右の歯車部分をクリックしCopy Componentを選択します(1個ずつコピーしてください)。
それぞれのコンポーネントをヒエラルキーに配置した自作の車モデルの親要素のインスペクタのTransformの右の歯車をクリックし、Paste Component As Newを選択し、コンポーネントを取り付けます。
↑のように自作の車モデルにコンポーネントを設定しました。
車体のコライダをコピー
次にCarプレハブの子要素のCollidersをコピーし、自作の車モデルの子要素にペーストし、自作の車モデルの形状に合うようにコライダを調整します。
Collidersは特にコピーしなくても、一から自分の車のサイズに合わせてコライダを設定してもいいかも!?
↑のように車体用のコライダを調整します。
タイヤのコライダをコピー
Carプレハブの子要素のWheelsHubsをコピーし、自作の車モデルの子要素にペーストします。
WheelsHubsの子要素にあるのはタイヤ4つのコライダ(WheelCollider)を取り付けたゲームオブジェクトです。
WheelsHubsのTransformでPositionを0にすると、自前の車モデルのタイヤあたりにそれぞれのコライダが移動します(自作の車モデルの大きさとタイヤの位置がデフォルトの車と近い場合)。
WheelColliderのコライダのサイズを調整し、自前のタイヤの大きさと合わせます。
煙のエフェクトをコピー
Carプレハブの子要素のParticlesをコピーし、自作の車モデルの子要素にペーストします。
Particlesには排気ガスのパーティクルが設定されています。
泥除けに設定されているコンポーネントをコピー
Carプレハブの前輪の左右の泥除けモデルに設定されているコンポーネント(MudguardとSuspension)をコピーし、自作の車モデルの前輪の泥除けに設定します。
Mudguardには自作モデルに設定したCarControllerスクリプトを設定し、Suspensionには自身の泥除けのモデルを設定します。
Mudguardはタイヤの動きに合わせて泥除けも向きを変える為のスクリプトで、Suspensionも同じ感じです。
CarControllerスクリプトの設定を変更する
ここまできたら、自作の車モデルにペーストしたCarControllerスクリプトの設定を変更します。
↑のようにタイヤのコライダ、タイヤのメッシュ、タイヤに設定したエフェクトを、自作の車モデルのものに変更します。
変更する際に注意しなければいけないのは、Elementの設定順です。
おそらく0、1は前輪、2、3は後輪ですが間違いがないように、0:右の前輪、1:左の前輪、2:右の後輪、3:左の後輪の順番に設定した方がいいかもしれません。
これで自作の車モデルの設定が終了しました。
自作の車モデルの名前をMyCarとした場合、下記のようなヒエラルキーになりました。
自作の車モデルを動かして見る
それでは自作の車モデルを動かしてみましょう。
車の挙動に関しては適当に設定してください。
↑のようになりました。
自作のモデルでも結構簡単に走らせる事が出来ますね(^_^)v