※Unity 2019.4.19f1 を使用して作成しています。
本記事は初心者向けにUnityでゲームを作ることができるようになることを目的として無限走のようなゲームを作成していきます。
下記のスコア表示編の続きになります。
本記事では、どのぐらい進んだかをスコアとして表示させていきます。
ざっくりと流れは
- 終了判定用のオブジェクト・シーンの作成
- 終了判定するScriptを作成
たったこれだけです。作業は大体20分で完了します。※ScriptはコピペでOK!
終了判定用のオブジェクト・シーンの作成
まずは落ちたときに当たり判定でゲーム終了画面に遷移したいと考えているためPlaneを作っていきます。名前は「EndChecker」にしておきます。
当たらない場合がないようにX:15 Y:10 Z:10 ぐらいに大きくします。
見栄えがいいように適当なマテリアルをつけておきます。
次にゲーム終了画面となるSceneを作成していきます。右クリック→Create→Sceneで作成するだけでOKです。名前は「EndScene」としておきます。
作成するものは以上です。
終了判定するScriptを作成
次にPlayerが落ちてEndCheckerに当たっと時にシーン遷移するようScriptを作成していきます。今回作成したScriptは以下になります。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class EndControl : MonoBehaviour { private void OnCollisionEnter(Collision collision) { if(collision.gameObject.name == "Player") { SceneManager.LoadScene("EndScene"); } } }
重要な部分をかいつまんで解説してきます。
必要な宣言
using UnityEngine.SceneManagement;
今回はシーンを遷移させるためにSceneManagerを使うので上記の宣言が必要です。
当たり判定を行う
private void OnCollisionEnter(Collision collision) { if(collision.gameObject.name == "Player") { } }
当たり判定には衝突するオブジェクト同士にColliderが追加しておく必要があります。そして当たり判定ではOnCllisionEnterメソッドを使用していきます。このメソッドは他のColliderが入ってきたときに処理が行われるメソッドです。Enterのほかに以下のメソッドもあります。
- OnCollisionExit()
- OnCollisionStay()
当たったオブジェクトがPlayerだった時にシーン遷移を行いたいのでif文で条件をつけてあげます。OnCllisionEnterメソッドの引数は当たったオブジェクトの情報を持っているのでnameで比較してあげます。
シーンの遷移を行う
SceneManager.LoadScene("EndScene");
この処理で「EndScene」に遷移を行えます。注意する点はBuild Settingsに「EndScene」を加えてある必要があります。Buuild SettingはFileから開くことができます。
以上でScriptは完了です。このScriptはEndCheckerにアタッチしてあげましょう。
動かしてみる
実際に動かしてみるとこんな感じにPlayerが落ちたら終了画面に遷移するようにありました。次回はゲーム終了画面を作りこんでいきたいと思います。
参考書の紹介。価格はかなり高いですがこの1冊あればOKな充実した内容です!!
コメント