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で、車を動かしてみよう では標準アセットを使った車のチュートリアルも公開しています。ぜひ確認してみてください。

Unityで車を動かしたい その1

001

素直にGoogleでチュートリアルを探そう。

Unityの公式マニュアル内に「WheelCollider チュートリアル」があります。ページもソースコードの少ないのでWheelColliderを使えば簡単に実装できるのかと思い、安易にこのチュートリアルを試してみましたがこの資料だけではUnity初心者が車を動かすのは無理でした。そもそもこのソースコードは動作しません。Youtubeなどでチュートリアルを探したほうがよさそうです。

以下は私が試行錯誤したソースコードです。

  • addForce,addTorqueなど変なことをやっています。
  • Quaternion.Euler (0f, 0f, 90f);など変なことをやっています。

初心者の質問は、間違えている場合が多い

初心者の質問というのは、世界で考えるとほぼ誰かがすでに解決した問題で、英語も含めればどこかに解決方法が書かれています。なので検索して情報がなかなか見つからないという場合は、そもそもやり方が間違っている場合が多いです。

今回の私も素直に”Unity Car Tutorial”などで調べればよかったものの公式マニュアルで安易に始めたため無駄に苦労して結果的にまだちゃんと車を動かせていません。

私に合ってそうなチュートリアル

Youtubeで検索するとすぐに見つかりました。素人レベルのモデリングでチョロQのような車を走らせる場合は上記などのチュートリアルがヒントになりそうです。

まとめ

失敗も経験ですが、まずはチュートリアルの候補をいくつかリストアップして、概要と所要時間を確認してから作業に取り掛かればよかったと痛切に感じます。数時間作業して結局まともに動かなかったのでは意味ないですからね。ちょっとレーザー光線など別の作業で息抜きをして、再度車の実装に挑戦します。