Unity5.3 WheelCollider チュートリアルで正しく動かす方法

公式の「WheelCollider チュートリアル」でプログラミング初心者が正しく動かせるようにする補足チュートリアルです。「Unityで車を動かしたい その1」ではUnity公式マニュアル内のWheelCollider チュートリアルを試しましたが正常に動作しませんでしたが、いろいろ試したところ動作するようになったので公式マニュアルの補足を説明します。公式マニュアルとこの補足資料を確認しながら作業するとWheelColliderを使えるようになるはずです。

フィールド作成

まずは、公式チュートリアル通りに、フィールド作成します。適当にマテリアルをつけてもよいでしょう。

車の作成とWheelColliderの設定

次に単純な車を作ります。以下は抜粋ですが、ホイール作成部分の文章が文字化けしています。

最初のホイールの作成。wheelsオブジェクトを選択して、GameObject -&gt、名前を frontLeft にします。トランスフォームを初期化してください。ポジションを(–1, 0, 1)に設定してください。ホイールに Physics component -> wheel collider で追加してください。

wheelsオブジェクトを選択して、Create Empty Childで、GameObjectを作り、frontLeftにすればよいです。

A02

あとは手順通りに車を作ります。フィールドに緑のマテリアルをつけて、車に赤のマテリアルをつけました。

001

スクリプトの作成と割り当て

SimpleCarController.CSを書いて、car_rootに割り当てます。

002

車は、Y軸を0.8ぐらい(これは浮いていれば適当でよいです。)にします。

Massは1500Kg

Unityエディターで、Axle Infos Size を2にすると、各要素の入力項目が現れるので、上記画像のように割り当てます。この時点で、プレイするとタイヤは表示されませんが、WheelColliderが問題なく動作します。

A03

ビジュアルホイール(タイヤ)をつける

最後に、タイヤをつけますがまずは、WheelColliderの位置と回転をビジュアルに伝えるためにソースコードを修正します。

公式マニュアルと違うところは、動作中(プレイ中)常に、z軸90度の回転を追加しているところです。

これがないとタイヤが正常に回転しません。このコードは、ちゃんと作りこまれた3Dモデルの場合は必要ないかもしれませんが、少なくとも今回のような簡単な車の場合は必要になります。

ビジュアルホイールの取り付け方

WheelColliderの子要素として、[3D Object]->[Cylinder]を追加します。Scaleはお好みですが、とりあえずx:1,y:0.1,z:1で良いでしょう。

003

また、Capsule Colliderを無効または削除します。WheelColliderがサスペンションやタイヤの方向、回転をすべて制御します。そのため同じ大きさのコライダーがついていたりすると、WheelColliderは車の重さ(1500kg)によりサスペンションが沈むため、WheelColliderが判定できずに、Capsule Colliderが地面と接触することになり動かなくなります。

004

現在表示は上記の画像のようになっているはずです。再生(プレイ)ボタンを押すと、C#スクリプト内で毎回ApplyLocalPosiitonToVisualsが呼ばれるため正常に表示されます。初期表示を修正したい場合は、TransformのRotationのZ軸を90にすればよいでしょう。

Cylinderの名前をTireにして、マテリアルで黒くして、RotationのZ軸を90にして、走らせてみました。ホイールビジュアルであるタイヤが動いているのがわかると思います。

A04

 

このプロジェクトの配布

http://hajimete-program.com/games/HelloWheelCollider2.zip

まとめ

ひとまず簡単な車を作ることができました。こういう小さなモデルならたくさん用意できるので100台のAIでレースとかやてみたら面白そうです。また、Unity5のStandardAssetで、車を動かしてみよう では標準アセットを使った車のチュートリアルも公開しています。ぜひ確認してみてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA