Unityレースゲームの作り方7 Chinemachineの使い方 NPCの対戦相手を作成

Unity C# レースゲームの作り方 (PC・スマホ・VRクロスプラットフォーム開発チュートリアル)


Unity入門の森オリジナル本格ゲーム制作講座はこちら
7種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

本講座ではUnityで3Dレースゲームの作り方について説明しており、今回は第7回目となります。

前回の記事 :

Unity C#レースゲームの作り方6 俯瞰マップとリトライ処理を開発する
本講座ではUnityで3Dレースゲームの作り方について説明しています。今回は第6回となります。 前回はレーシングゲームにおけるタイマー計測・ラップのカウント処理・スタート処理・ゴール処理などのUI周りの必須機能を作成しました。 前回の記...

前回記事ではマップの作成とリトライ処理を作成しました。

今回は一人でレースするのではなく対戦相手となるNPCを作成していきます。Unityでゲームオブジェクトに簡単な移動AIや経路設計を行うのに便利なChinemachine機能の使い方をマスターしていきましょう!

では始めていきましょう!


【Line登録者限定のプレゼントもあるよ!】

対戦相手となるCPUの車オブジェクトの作成

今回は対戦相手として自動で動く車を作成していきますが、これにはとてもいろんなアプローチがあります。今回の作成方法はその一つになります。

Unityでゲームを作成するときには色々なところに応用ができる機能を利用・実装していくので今後のオリジナルゲーム開発の参考にしてください。

Cinemachineのインポート

今回使用するパッケージをインポートします。UnityにあるパッケージなのでPackageManagerからインポートできます。

では上部メニューで「Window→PackageManager」をクリックしてウインドウを開きます。

ウインドウの左上が「UnityRegistry」になっていることを確認、なっていなかったらクリックして変更します。そして「Cinmachine」を選択し、右下の「Install」ボタンをクリックします。

これでインストールの完了です。

CPUの車作成

ではまずはCPUの車を作成していきます。

Hierarchyで空オブジェクトを作成し「CPU」という名前にします。次にUnity上部メニューに新しくできた「Cinemachine」をクリックし「Create Dolly Track with Cart」を選択します。

するとHierarchyに「DollyTrack1」と「DollyCart1」の二つが作成されますので、これら二つをドラック&ドロップして「CPU」の子にしましょう。

次に、車を配置していきます。

Projectウインドウの「Assets/ARCADE – FREE Racing Car/Prefabs」にある「Free_Racing_Car_Red」をドラック&ドロップして、「DollyCart1」の子に配置しましょう。

まずは、Playerと同じ大きさにするため、この「Free_Racing_Car_Red」のScaleを全て0.8に変更しておきましょう。

そして位置の調整をしていきます。まず、もしこの段階で「Player」の車が浮いていたり、スタート位置がおかしかったりしたら、調整しておきます。そして、作成した「CPU」ごとSceneウインドウで「Player」の少し後ろあたりに来るように移動ましょう。(この時「CPU」以下の子を動かさないように注意してください)

また、高さは地面に車が乗っている状態に見える程度に下げておきます。角度が変な方向を向いていても今は気にしないで大丈夫です、位置、高さのみ調整します。

参考にこの状態での「Player」「CPU」の「Transform」の値を載せておきますが、この通りでなくても大体見た目で問題なければ大丈夫です。

これで一旦作成の完了です。

Cinemachineの使い方 対戦相手の移動ルートを作って実践

では次にこの車を移動していきます。

少し特殊な方法で移動しますので、まずはHierarchyで「DollyTrack1」を選択してInspectorを見てみましょう。

この「CinemachineSmoothPath」の「waypoint」という項目があります。まずはこの「0」の項目の値をすべて「0」にしておきましょう。もしここに先に値が入っていた場合、全て0にした影響で位置が変わるので、再度「CPU」を移動してスタート位置に戻しておきましょう。

この時の状態が下記のようになります。(waypoint「1」の値は今はなんでも大丈夫です)

今設定した「waypoint」を「DollyCart1」が順に移動することになります。各ポイントの間はいい感じに結んでくれて、このポイントを増やしていくことでより長く自由な経路を設定することができます。

これがCinemachineの機能の一つで「指定経路を指定時間で移動する」という動作を簡単に作成することができます。(元は「Cinemachine」の名前の通り、映画のようなムービーのカメラワークのためのカートのイメージですね。)

 

ここで、Inspectorの「waypoint」の右下にある「+」ボタンを押して項目を追加します。すると「2」の項目ができたので、その「2」のマークをクリックして選択します。

次に、Sceneウインドウを見ると選択した、「0」「1」「2」の表記のあるマークがありますので、これをMoveToolで動かすことでそれぞれ移動することができます。

先に「2」をクリックしていると、「2」に移動の矢印がでますのでまずは適当に移動してみてください。すると画像のように緑色のレールのようなものが見えます。このレールが経路となり、「0→1→2」の順にこの上を「DollyCart1」が走ります。

(コースの地面があると重なって見えないので一旦消しておきましょう。確認できたら戻してください)

Cinemachineのwaypointで移動経路を設定しよう

ではここから経路を追加していきます。

先に「waypoint」を追加しましたが、その手順で何個も追加して一つ一つ位置を調整していきます。まず右下の「+」ボタンを2回押して、0〜4までの5つのポイントを作成しましょう。

Inspector上で「waypoint」の該当ポイントを選択しておけばそのポイントを移動することができますので、0〜4のポイントをSceneウインドウで下記の画像のように移動しましょう。

このポイント設定ができたら一旦Hierarchyで「DollyCart1」を選択してInspectorをみてください。「Cinemachine Dolly Cart」の一番下に「Position」という値があります。

この値が現在地になります。試しにこの値を適当に変更してみると車が移動しているのがわかるかと思います。

つまり、この「Position」の値をスクリプトで変更することによって車を自動で移動させることができる、というのがこの「Cinemechine」を使った移動方法です。

では、ここから超繰り返し作業です!

ひたすら「waypoint」をコース上の道路の部分に追加して一周してみましょう。なおポイントのYの値(高さ)は全て0のままにしておきましょう。ポイントが多すぎても問題はありませんが、大体30〜50個のポイントが必要になります。参考までにInspectorを載せますが、もちろん数値まで同じである必要はありません。

画像では計0〜41のポイントになりました。この場合の「41」つまり最後のポイントは、ゲート前の最初の値「0」の数値をコピーして同じ値にしておきましょう。これで1周が完成します。(結局すべて0にすればOKです)

ここで0は、ゲートの前にあるのでまだ一周できていないことに注意しておきましょう。

C#スクリプトでChinemachineを利用した移動処理を作成

ではスクリプトで移動処理を作成していきます。

Projectウインドウで新しくC#スクリプトを「Assets/AppMain/Script」に作成し「CPUController」という名前にしましょう。このスクリプトをあらかじめHierarchyの「CPU」にドラック&ドロップして付与しておきます。

では、書いていきましょう。

続きを読む

このコンテンツはパスワードで保護されています。 コンテンツを読みたい方はUnity入門の森ショップ(https://unityforest.stores.jp/)で講座閲覧権を取得してね。

次回記事に進む前に

今回はここまでにしましょう。

一つ注意点ですが、今回結構薄めのゲートコライダーを使って周回数を計測していますので、CPUの速度をあげすぎるとうまく判定されない場合があります。

1周するための周回時間lapTimeが40fだと計測判定されないはずです。この段階で動かしたい人は必要な秒数を倍の80fなどにして実際に違いが出るか確認してみましょう。詳しくは次節でも取り扱います。

CPUの細かい調整、またコライダーを追加したことによるPlayerとの衝突、周回数を計測して順位を付ける部分などを次回作成していきます。

次回の記事 : 

Unity レースゲームの作り方8 衝突処理の調整と順位計測ランキングシステムの実装
と本講座ではUnityで3Dレースゲームの作り方について説明しています。 今回は第8回目となります。前回はUnityのChinemachineを利用して対戦相手となるCPUの車を作成し、自動運転の機能を実装しました。 前回の記事 :...

 

Unityレースゲームの作り方チュートリアル講座に戻る>>



Unity入門の森オリジナル本格ゲーム制作講座はこちら
7種類の本格ゲームの全ソースコード公開・画像&動画による解説付き


【Line登録者限定のプレゼントもあるよ!】

コメント

タイトルとURLをコピーしました