Unity 3D無限ランゲームの作り方講座5 ゲーム終了処理の実装/ビルド設定/Androidアプリ化 | Unity入門の森 ゲームの作り方

Unity 3D無限ランゲームの作り方講座5 ゲーム終了処理の実装/ビルド設定/Androidアプリ化

Unity C# 3D無限ランゲームの作り方


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

今回の記事はUnityで3Dエンドレスランゲームを制作する講座の第5回目です。今回がいよいよ最終回です。

前回は3D障害物ランゲームを本格的な無限ランゲームに改造していきました。BGMや効果音も付けてスコアシステムも実装しゲームとして形になってきました。

前回の記事:

Unity 3D無限ランゲームの作り方4 BGM・効果音設定/無限に地形を生成する/得点スコアシステムの実装
今回の記事はUnityで3Dエンドレスランゲームを制作する講座の第4回目です。 前回は3Dランで走るフィールドの作成、プレイヤーキャラクターの移動・ジャンプ処理や障害物との当たり判定の設定を行いました。 前回の記事: 今回はまず音楽と効果音...

ですが、まだ少々足りていないところがあります。ゲームオーバー処理が実装できていません。今回はまずゲーム終了&リスタート処理を開発し、その後ビルドして実機でゲームを遊べるようにしていきます。


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

ゲームオーバー・ゲーム終了処理の実装

これはエンドレスランナーのゲームなのでプレイヤーが障害物にぶつかるとゲーム終了となります。

ゲーム終了判定のためにCharacterに別のコライダーを追加しましょう。

Characterプレハブを開き、Playerを選択します。そのインスペクタにBoxColliderを追加します。

Collisionを検出するために、必要に応じてサイズを変えてください。そしてIs Triggerをオンにします。

次に”PlayerMovement”スクリプトを開いてください。ゲームがプレイ中かどうかのチェック判定処理を追加します。

PlayerMovement.csを以下のように修正します。

まずゲームプレイ中かどうかを判定する変数を追加します。

Start()メソッドでゲームプレイ中であることを表すtrueを代入します。

Update()メソッドでは、まず全てのコードの前にif文をが適用されるようにします。ゲームプレイ中の時のみ実行されるようにします。

そして、Updateメソッドの中の元々のコードの下で括弧を閉じます。

閉じたif文の下にelse文を追加し、nameofを使ってメソッド名を取得&コルーチン呼び出しを行い、ゲームを終了させます。

EndGame()では、idleアニメーションを再生している2秒間待機し、その後シーンを読み込み直してゲームを再起動します。

SceneManagerを使うためにUnityEngine.SceneManagementの名前空間を追加しておきます。

Ctrl+Sでスクリプトを保存しUnityエディターに戻りましょう。

障害物に衝突した時のアニメーション変更処理を追加

Animator Controllerオブジェクトを選択し、Animatorパネルで、右クリックで “Run “から “Idle “へのトランジションを作成します。

AnimatorのParametersタブで、Boolパラメータを追加し、名前を “a_Idle “とする。

runからidleへの遷移矢印を選択し、インスペクタでa_Idleパラメータがtrueになったときにこの遷移が起こるという条件を追加します。終了トランジションは必要ありません。

(もしキャラクターアセットにゲーム終了時に適したアニメーションがあれば、それを使ってもOKです)

3Dランゲームの障害物衝突を検知するObstacleCrush.csを作成

最後は衝突を検知してゲームを終了させる処理を追加するだけです。

Scriptsフォルダに新しいC#スクリプトを作成します。”ObstacleCrush”という名前を付けてスクリプトを開いてください。

Start()メソッドとUpdate()メソッドを削除し、新しい関数を追加します。

OnTriggerEnterメソッドは、Playerが何かに衝突したことを検出し、それがCollectableかどうかをチェックし、そうでない場合はPlayerMovementスクリプトを見つけ、isGamePlaying boolを変更します。

つまり、収集用アイテム以外にぶつかったらゲーム終了にするということです。

Ctrl+Sでスクリプトを保存し、Unityエディタに戻ります。

Characterプレハブを開き、ObstacleCrush.csをPlayerオブジェクトにドラッグ&ドロップしてアタッチします。

最後に、Collectableプレハブを開きます。インスペクタで、Levelsと同じように新しいタグを追加します。名前は「Collectable」とします。

Collectable タグを Collectable プレハブに割り当てます。

Unityエディターでゲームを再生してテストプレイしてみましょう。

このようにCollectableタグが付いていない障害物と衝突するとゲームが最初からリスタートします。

もし衝突判定がうまくいかない場合はPlayerのBoxColliderの形を再調整しましょう。プレハブに戻って編集してください。サイズ調整やアタッチがちゃんとできていれば障害物入りの3Dエンドレスランゲームが完成しているはずです。

これで障害物ありの3D無限ランゲーム開発は完了です!お疲れ様でした!

このあとはビルド処理やアンドロイドで遊ぶための追加変更を行います。

エンドレス3Dランゲームをビルドしてみよう

このゲームは現在PCまたはブラウザ上で動作するように作られています。

ゲームをビルドしたい場合は、Ctrl+Sでシーンを保存し、メニューからFile → Build Settingsを選択してください。

ビルド設定ではまずゲームに使うシーンをAdd Open Scenesで追加するのを忘れないでください。

ビルドするプラットフォームを変更すればPC版以外の実行ファイルを作ることもできます。例えば、WebGLプラットフォームを選択すると、ブラウザ上でゲームが実行できるようになります。

他のプラットフォームに変更したい場合は、スクリプトやゲームプログラムに変更を加える必要が出てくるでしょう。

ビルドするには、Buildボタンを押して、.exeファイルをコンピューターに保存します。その後、そのファイルを共有したり、開いてゲームをプレイすることができます。

ビルドされるプロダクトをカスタマイズしたい場合は、Player Settingsを適宜変更してください。

おめでとうございます!3Dランゲームの完成ですね!PC版で開発を終了したい方はここまでで終了です。

このあとはおまけとしてアンドロイドで実機ビルド&遊べるようにする方法を解説します。

3Dランゲームをアンドロイドで遊べるように改造してみよう

このゲームをAndroid用にビルドしたい場合はいくつかの変更を加える必要があります。

まず、ビルド設定でプラットフォームをAndroidに切り替えます。

次に、ゲームビューをスマホのアスペクト比、またはデバイスを接続している場合はデバイスのアスペクト比になるように変更します。

 

さて、このゲームではこれまでキーボード操作でキャラを動かしてきました。アンドロイドで遊ぶためには入力処理の変更のためPlayerMovementスクリプトを修正する必要がある。

スクリプトを開き、Update()内に以下のように修正します。

Our whole code is following:

 

まず、最初に追加したif Unity_Androidとelif~から始まるコードは現在対象とするプラットフォームがアンドロイドもしくはUnityエディタかWindowsPCでの操作かどうかを検出しています。もしアンドロイドなら画面のタッチとタッチの位置を検出します。

プレイヤーが左にスワイプすると、キーボードのボタンと同じように左に移動し、右にスワイプすると右に移動するように変更を加えています。

また、以前のコードからジャンプの行を切り取り、それを使って新しいメソッドを作ります。

if文のInput.GetKeyDown(KeyCode.Space) && isGroundedのisGroundedチェックだけを残しました。

また、PC版の処理の後に#endifを追加します。

これでPCでプレイしてるときに実行されるコードは次の部分になっているはずです。

Ctrl+Sでスクリプトを保存してUnityエディタに戻ります。

続いて、スマホ版のジャンプボタンを作成します。ヒエラルキー画面でCanvasを選択し、その上で右クリックしてUI > Buttonを作成します。

JumpButtonと名付け、画面内の使いやすい場所に配置し、Anchor Presetsを使ってCanvas内での相対位置を決定します。

Rect TransformのScaleを(0.25, 1.5, 1)に設定しました。

ヒエラルキー画面でJumpButtonオブジェクトを展開し、Textコンポーネントを削除します。

ボタンの画像と外観はインスペクタ画面で変更できます。

Colorを選択し、ボタンが押されたときに表示する「Pressed」の色を選択します。

次に、インスペクタのOnClickイベントで+をクリックし、Characterオブジェクトをドラッグ&ドロップします。

ボタンクリック時に実行するメソッドを設定します。PlayerMovementを選択し、先ほど分離したJumpingメソッドを選択します。

Ctrl+Sで再びシーンを保存します。これでAndroidビルドができるようになりました。

File → Build Settingsでゲームに用いるシーンが含まれていることを確認してPlatformをAndroidに変更しましょう。

この状態でUnityエディタでゲームをプレイするとわかりますが、プラットフォームが「UNITY_ANDROID」になっているため、キーボードのボタンを押してもキャラクターが動きません。

アプリをビルドしてデバイスに直接インストールしたい場合は、アンドロイドをUSBでPCに接続し、アンドロイドのUSBデバッグを有効にして、UnityのBuild SettingsのRun Deviceを選べば実機で実行できます。

必要に応じてPlayer Settingsで実行環境の条件を修正できます。

直接ビルドしてインストールするには、ビルドして実行を選択します。そうでなければ、ビルドしてapkをPCに保存するだけです。

apkファイルを転送または共有することで、どのAndroidデバイスにもインストールできるようになります。

また、もしiOSで実機テストしてみたい場合はif Unity_ANDROIDをif UNITY_IPHONEに変更してあげればOKです。ただしiOSでのテストにはXcodeが必要で実機テストまでの道のりがやや煩雑なので今回は割愛します。iOSテストに挑戦してみたい方は以下の記事を参考にしながら取り組んでみてください。

【画像付き】Unityで作ったiOSゲームをiPhoneスマホに転送・実機テストする方法
「Unityでゲームをなんとか完成させた!」 「でもどうやってiOSアプリにすればいいの? iPhoneでビルドしたいけどどうすれば?」 今回はUnityで開発したゲームのiOSアプリ化とビルド・実機プレイする方法を知りたい方のための記事に...

以下が実際にAndroid上で完成したゲームの実機プレイ動画です:

 

お疲れ様でした。ここまででアンドロイドでも遊べる3Dエンドレスランゲームができました。

ここからはあなたオリジナルの3Dランゲームを開発してもらえたらと思います。

Unity入門の森では他にも様々なゲームの作り方講座を用意しているのでぜひ開発に挑戦してみてください。

Unity C# 3D無限ランゲームの作り方講座に戻る>



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

コメント

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