読者です 読者をやめる 読者になる 読者になる

いんでぃーづ

個人でゲーム開発してる上で吸収したモノたち紹介。UnityからGIMPまでなんでも。デザインとかゲーム論まで語っちゃうよ的なアレ。

MENU
{スポンサーリンク}

Unity : WheelColliderを初めて使うときにつまずくこと3つ

Unity Tips

私は車の運転が苦手です。
だからせめてゲームの中では得意でいたい。
あわよくば峠を攻めたい...

そしてUnityでWheelColliderを使うことをふと思い立ちました。嘘です。

使ってみたらつまづいたことをメモ。

コライダーが見えない

まずはタイヤだけでテストしてみたいですね。

シーンに円柱を配置してWheelColliderをアタッチしてみましょう。

f:id:sugar_affordance:20160520094044p:plain

f:id:sugar_affordance:20160520094039p:plain

...あれ?

f:id:sugar_affordance:20160520094042p:plain

ん?

コライダー見えないよ?
Unityのマニュアルでは、円形の緑色の線が見えるはずです。

http://docs.unity3d.com/ja/current/Manual/class-WheelCollider.html

ほんとにコライダー付いてるんでしょうか。

解:Rigidbody を付ける

ホイールコライダーを持っているオブジェクト、もしくはその親オブジェクトのいずれかに対してRigidbodyをアタッチすれば、シーンにコライダーの緑線が表示されます。
WheelColliderはRigidbodyとセットで使うというのが前提なのでしょう

他のコライダーはRigidbodyなくても使えますけどね。

むっちゃはずむ

こんな感じのオブジェクト構造にしました。

f:id:sugar_affordance:20160520094140p:plain

Cubeがルートオブジェクトで、Rigidbodyがついています。WheelはWheelColliderがついている円柱オブジェクトです。

これでバッチリっしょ!再生!

f:id:sugar_affordance:20160520094047g:plain

...お、おう

飛んだね

解:重くする

WheelColliderのサスペンション(バネ)の跳ね返りが強すぎて飛んでしまうようです。
Rigidbodyのmassの値を増やして、車体を重くしましょう。
WheelColliderのSuspension関係の値をいじるのはやめたほうがいいでしょう。タイヤ4つ使うなら4つ分の値をいじる必要がありますし、言うても車ですから。重いですよね普通。
1000くらいにすればいいと思います。

まあ私車ぜんぜん詳しくないので、あとは友達の整備士にでも聞いてください。

タイヤ回転させてるのに動かない

コライダーはつけた。
車体は安定した。

あとはタイヤを回せば動くはず!

ということでスクリプトをアタッチしてみましょう。

Rigidbogy関係の処理だからFixedUpdateに書けばいいかな?
Meshの方向と合わせて、X軸にそって回転させればいいよね!

public class Wheel : MonoBehaviour {
    void Start () {
    }

    void FixedUpdate () {
        transform.Rotate (
            Vector3.right,
            100 * Time.fixedDeltaTime
        );
    }
}

再生GOGO!

f:id:sugar_affordance:20160520094145g:plain

...タンク

解:WheelColliderのプロパティをいじる

WheelColliderのmotorTorqueプロパティを設定することで前進できます。
決してオブジェクト自体を回転させてはいけません

using UnityEngine;
using System.Collections;

public class Wheel : MonoBehaviour {

    void Start () {

        GetComponent<WheelCollider> ().motorTorque = 50;
    }

    void FixedUpdate () {
    }
}

マニュアルに書いてありました。

http://docs.unity3d.com/ja/current/ScriptReference/WheelCollider.html

ホイールは motorTorque、brakeTorque および steerAngle により制御できます。

結論

マニュアルはちゃんと読みましょう

Amazon.co.jpアソシエイト