Unity2Dで「ブロック崩し(breakout)」を作成。Part3では終了判定と終了画面を実装していきます。
はじめに
part1は下記から。
今回やる事
Part1ではパドルとボールを作成、Part2は「ブロックを壊す」、「スコア加算」、「ボール消失」を実装しました。Part3では「終了判定」と「終了画面」を実装していきます。
作成開始
終了画面を作成した後、細かい修正をしていきます。
終了画面を作成
新規でシーンを作成してシーン名を「gameover」にします。Hierarchyメニューで「UI」→「Legacy」→「Text」を2つ追加します。
名前を「TitleText」、「ScoreText」に変更して好きな位置に変更します。
新規オブジェクトを追加して名前を「GameOver」に変更、同名でスクリプトを追加します。
スクリプトの変更
GameManagerスクリプトを下記に変更します。読み込むシーンがない場合、ゲームクリアとしています。
using System; using UnityEngine; using UnityEngine.SceneManagement; public class GameManager : MonoBehaviour { public static GameManager instance { get; private set; } public String TitleText; public int score = 0; private int stage = 1; private int life = 3; private void Awake() { instance = this; DontDestroyOnLoad(gameObject); } private void Start() { LoadStage(1); } private void LoadStage(int stage) { this.stage = stage; String scenePath = "stage" + stage; if (SceneUtility.GetBuildIndexByScenePath(scenePath) == -1) { TitleText = "GAME CLEAR"; GameOver(); } else SceneManager.LoadScene(scenePath); } public void AddScore(int score) { this.score += score; } public void NextStage() { LoadStage(this.stage + 1); } public void DecLife() { this.life--; if (this.life <= 0) { TitleText = "GAME OVER"; GameOver(); } else { GameObject.Find("Ball").GetComponent<Ball>().ResetBall(); } } private void GameOver() { SceneManager.LoadScene("gameover"); } }
GameOverスクリプトを下記に変更します。タイトルをセットしてゲームクリアとゲームオーバーを切り替え、スコアを表示します。
using UnityEngine; using UnityEngine.UI; public class GameOver : MonoBehaviour { [SerializeField] private Text TileText; [SerializeField] private Text ScoreText; private void Start() { TileText.text = GameManager.instance.TitleText; ScoreText.text = "SCORE: " + GameManager.instance.score.ToString(); } }
パラメータをセットします。
BuildSettingsにシーンを追加します。
これでブロック崩しゲームの一通りの流れが完成です。
ボールの動きを調整
少し補足で、ボールの動きを調整していきます。
開始時のボール
まずは初期のボール(ゲーム開始時)に角度を付けます。下記のようにスクリプトを変更して、ランダムに角度をつけます。
public void ResetBall() { transform.position = Vector2.zero; float x = Random.Range(-0.5f, 0.5f); rigidbody.velocity = new Vector2(x, -speed); }
跳ね返りの調整
次にパドルのBoxcollider2DをPolygonCollider2Dに変更して下記のようにコライダーをセットします。
実行すると下記のようにボールの動き(跳ね返り)が良い感じになります。
実際はここから更に修正する部分がたくさんあります。
例えば、各ステージにスコアを表示したり、ボールの残り数を表示、ブロックが壊れたときのアニメーションや壊れないブロックを作成など。ここからの調整が一番時間が掛かり、大変だったりします。