1. HOME
  2. ブログ
  3. IT技術
  4. 【Unity】WheelColliderを使って簡単なレースゲームを作ってみた

【Unity】WheelColliderを使って簡単なレースゲームを作ってみた

WheelColliderを使って簡単なレースゲームに挑戦!

今回は、「WheelCollider」を使って、簡単なレースゲームを作っていきたいと思います!

機能としては、スタートした時にタイマーが開始して、ゴールした時にタイマーが止まるというシンプルなもの。

わかりやすく解説していきますので、ぜひ挑戦してみてくださいね!

こちらの記事もオススメ!


WheelColliderとは?

「WheelCollider」とは、車のシステムを簡単に作成できるものです。

しかし、WheelCollider が提供しているものは、以下の素材のみ。

  1. 単純なゴムタイヤ
  2. 単純なサスペンション
  3. 単純なブレーキ
  4. 原始的なハンドル
  5. 原始的なモーター

なので作れる車は、下のような、本格的なスポーツカーを再現するのは、ちょっと難しいかもしれません。

とはいえ、WheelCollider のパラメータ弄りだけで、ちょっとした乗り物が作れるなら手軽ではありますね!

WheelColliderによる車の作成

まずは車の「3D モデル」を用意します。

AssetStore から、「Standard Assets」 をダウンロードしていきましょう。

モデルの準備

画像のように、「 Vehicles > Car 」にのみチェックを入れ、インポートします。

インポートが終わったら、エラーが発生しないように、「Scripts」というファイルを削除しておいてください。

車の本体を作成

Models というファイルの中の「SkyCar」を、Scene上にドラッグ&ドロップします。

このとき、「Transorm > Position 」を、「 ( 0 , 0 , 0 ) 」にしておいてください。

次に、Boxcollider をコンポーネントして、画像のように大きさを合わせます。

そしたら、Rigidbody もコンポーネントして、Mass(質量)を「 1000 」にしましょう。

タイヤを作成

Hierarchy の SkyCar の中に、「Wheels > FrontRight, FrontLeft, BackRight, BackLeft」と、4つ空のゲームオブジェクトを、下の画像のように作成します。

作成し終わったら、4つの空のオブジェクトのそれぞれに、「WheelCollider」をコンポーネントしてください。

それぞれの Transform の値を変えて、タイヤがある場所に移動させます。

最後に、Plane を作成して、地面を作っておきましょう。

スクリプトによる制御

次は、WheelCollider を制御するスクリプトを作成していきます。

まず、「CarMove.cs」を作成して、SkyCar にコンポーネントしましょう。

「CarMove.cs」には、以下のように記述します。

コードを記述し終わったら、「CarMove.cs」を、下の画像のように設定します。

このとき、先ほど作成した、WheelCollider のオブジェクトを指定しておいてください。

これで、車を動かせるようになりました!

カメラを追随させる

カメラを追随させるには、「MainCamera」を、SkyCar の子オブジェクトにします。

このとき、「 Transform > Position 」 を 「 ( 0 , 2.3 , -6 ) 」 に設定したら完了です。

これで、カメラが車を追従するようになりました!

実行してみよう!

これで、車の作成は終わりです!

実際に、「実行ボタン」を押して、作った車を動かしてみましょう!

ただ、地面が一色だと、動いてないように見えるかもしれませんね…。

次は、レースマップを作成して、よりゲームっぽくしていきたいと思います!

レースマップの作成

まずは、以下より、レースマップをダウンロードしてください。

レースマップ
https://rightcode.co.jp/wp-content/uploads/2020/07/Field.png

Plane を作成して 以下のように設定しましょう。

  1. Position を ( 0 , 0 , 0 )
  2. Rotation を ( 0 , 180 , 0 )
  3. Scale を ( 5 , 1 , 10 ) 

その Plane に、先ほどダウンロードしたマップをドラッグ&ドロップします。

SkyCar を画像のように、スタートラインに移動させたら準備完了です。

次は、システムを作成していきましょう!

システムの作成

スタートラインを超えたときに「タイマーを開始」し、1週してラインを超えたときに「タイマーを止める」というシステムを作っていきます。

1週しているかを判断するために、コース上にはチェックポイントを作成していきます。

スタート・ゴールラインの作成

空のゲームオブジェクトを作成して、名前を「StartLine」などにします。

BoxCollider をコンポーネントして、「is Trigger」にチェックを入れ、大きさをラインに合わせおきましょう。

Inspecter から、Tag を AddTag から追加して、「Line」にします。

位置は、スタートラインに合わせましょう。

チェックポイントの作成

空のゲームオブジェクトを作成して、名前を「CheckPoint」などにします。

ここでも、BoxCollider をコンポーネントして、「is Trigger」にチェックを入れ、大きさを調節します。

Inspecter から、Tag を AddTag から追加して、「CheckPoint」にします。

複製をして、画像のように配置してください。

タイマーを表示する

「Canvas > Text」を作成して、画面中央に移動させます。

これは、タイマーを表示させるのに使います。

FontSize や位置などは、自由に調節しましょう。

スクリプトによる制御

「RaceSystem.cs」を作成して、SkyCar にコンポーネントします。

「RaceSystem.cs」には、以下のように記述していきましょう!

Inspecter 上で、TimeText に先ほど作った Text をアタッチします。

遊んでみる!

動かしてみると、しっかりとタイマーが動いています。

ゴールした後には、ゴールタイムも表示されていますね!

さいごに

シンプルなレースゲームはできましたか?

今回は「WheelColliderを使った簡単なレースゲーム」を作ってみました。

サウンドやエフェクトなども追加して、さらにオンラインで対戦もできるようになれば、もっと面白くなりそうですね!

ぜひ皆さんも、色々アレンジを加えながら、自分オリジナルのレースゲームを作ってみてください!

記事を書いた人

\ 集え!ゲーム大好きエンジニア /
(株)ライトコードは、WEB・アプリ・ゲーム開発に強い「好きを仕事にするエンジニア集団」です。
Unityでの開発依頼・お見積もりはこちらまでお願いします。
また、WEB・スマホ・ゲーム系エンジニアを積極採用中です!
※現在、多数のお問合せを頂いており、返信に、多少お時間を頂く場合がございます。

こちらの記事もオススメ!


書いた人はこんな人

ライトコード社員ブログ
ライトコード社員ブログ
「好きなことを仕事にするエンジニア集団」の(株)ライトコードです!
ライトコードは、福岡本社、東京オフィスの2拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。

システム開発依頼・お見積もりは大歓迎!
また、WEBエンジニアとモバイルエンジニアも積極採用中です!

ご応募をお待ちしております!

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界を変える…! /

Androidエンジニア

\ みんなが使うアプリを創る /

iOSエンジニア