【Unity】せっかくチュートリアルがあるのでWheel Colliderで遊んでみる
- 2018.05.21
- Collider
- Collider, Unity, Wheel Collider
Unityの衝突検知に欠かせないCollider。
そのうちのひとつとして、Wheel Collider(ホイールコライダー)があります。
このColliderはちょっと特殊で、他のColliderのように衝突を検知するだけではなく、タイヤ自体の質量とかトルクの情報まで設定できます。
UnityのマニュアルにもWheel Colliderのチュートリアルがあったので、それをベースにバイクを作ってみましょ。
環境
macOS 10.13 High Sierra
Unity2018.1.0f2
Wheel Colliderについて
Wheel Colliderはちょっと特殊なColliderで、衝突の検知の他にタイヤの質量、タイヤの摩擦やサスペンションなどを定義できます。
Colliderでありながら、物理的な特性も設定できるんです。どちらかというとRigidbody寄りのコンポーネント。
ベースの技術はNVIDIA(エヌヴィディア)社のPhysX3 Vehicles SDKです。このSDKの技術的仕様はNVIDIAのドキュメントで公開されていますが、当然の権利のように英語で長文が書かれているので読むのはアルゴリズムくらいでいいかも。
何よりUnityのマニュアルに概要が書かれていますからね。
今回はUnityのマニュアルにあるチュートリアルを使ってWheel Colliderを勉強します。そう、私も使うのはこれが初めてです。
とりあえずやってみる
Unityのチュートリアルにオブジェクトの作成からコントローラーの作成まで載っているので、まずはそれをやってみましょ。
最初にオブジェクトの作成があるので、それを終えるとこんな感じ。真っ白で分かりにくいけど、車体として用意した直方体の側面にColliderがいます。
続いてスクリプトの作成。コードがそのまま載っているので、ありがたく使わせてもらいます。
また、上記のままだとタイヤが見えないので、Mesh FilterコンポーネントとMesh Rendererコンポーネントを追加して、タイヤを表示します。前輪が黄色、後輪が黒です。向きがわからないと操作が難しいので色を変えておきます。
この状態でゲームを実行してみるとこんな感じ。キーボードの上下キーで加速/減速、左右キーでハンドル操作です。
スピード調節にはmotorTorque、ハンドルの向きの調節にはsteerAngleを使います。
簡単に車の動きが実現できそうですね。
これで終わりだとなんだか寂しいので、バイクも作ってみましょ。
バイクを作る
とは言っても、やることはそんなに難しくなくて、オブジェクトを作ってスクリプトをちょっと改造するだけ。
チュートリアルで作った車を参考に、バイク用オブジェクトを作ってみました。超かっこいいね(大嘘)
バイクだと左右のタイヤが必要ないので、チュートリアルのSimpleCarController.csをちょっと改造します。AxleInfoはそのまま使って、FixedUpdate()の中でタイヤのNullチェックをするようにします。
これによって、前、後ろそれぞれで参照させるタイヤが1本でも、エラーが出ないようになります。
これでバイクを走らせてみると、こんな感じ。
綺麗にこけましたね。
進行方向では安定していても、横方向のバランスが悪いようです。ハンドルを傾けただけでぱたり。
どうにかしてバイク走らせたいなー。
……そういえば、Colliderって画面に表示されないんでしたよね。
なので、こっそりColliderを追加して、バランスよく動くようにしましょうか。前輪と後輪の左右にWheel Colliderを持ったオブジェクトを配置します。
見た目はバイク、実態は車の乗り物ができました。この状態で再挑戦。
微妙な車体の傾きもいい感じ。チュートリアルにも、一台の車に20のホイールをセットできると書かれているので、タイヤの数を増やす分には問題ないですね。
考慮すべき点があるとしたら、見えないWheelColliderが壁にぶつかってしまうことでしょうか。見えている車体よりも当たり判定の幅が大きいことになるので、車体に近づけるか、レイヤーを変えるか、なんて作業も必要になるかも。
まとめ
Unityのマニュアルで公開されている、Wheel Colliderのチュートリアルで遊んでいる様子をお送りしました。
Colliderは画面に表示されないので、バランスを取るために複数配置するのもありですね。特にバイクはWheel Colliderが前後2つのままだと簡単に倒れますから。
車の操作部分に関しては、かなり簡単にできちゃうのでレースゲームとかも作りやすそう。
ゲーム開発の攻略チャートを作りました!
-
前の記事
【Unity】Colliderってどんな種類があるの? ってときに読む記事【解説】 2018.05.19
-
次の記事
【Unity】Sceneが真っ暗にならないのは環境光が原因 2018.05.22
コメントを書く