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・スマホ・ゲーム系エンジニアを積極採用中です!
※現在、多数のお問合せを頂いており、返信に、多少お時間を頂く場合がございます。

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


ライトコードよりお知らせ

にゃんこ師匠にゃんこ師匠
システム開発のご相談やご依頼はこちら
ミツオカミツオカ
ライトコードの採用募集はこちら
にゃんこ師匠にゃんこ師匠
社長と一杯飲みながらお話してみたい方はこちら
ミツオカミツオカ
フリーランスエンジニア様の募集はこちら
にゃんこ師匠にゃんこ師匠
その他、お問い合わせはこちら
ミツオカミツオカ
   
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

書いた人はこんな人

ライトコードメディア編集部
ライトコードメディア編集部
「好きなことを仕事にするエンジニア集団」の(株)ライトコードのメディア編集部が書いている記事です。

関連記事

採用情報

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

バックエンドエンジニア

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

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

\ 世界はお前の手の中に・・・ /

モバイルエンジニア

\ サービスの守り神! /

インフラエンジニア