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に変更して下記のようにコライダーをセットします。

実行すると下記のようにボールの動き(跳ね返り)が良い感じになります。

実際はここから更に修正する部分がたくさんあります。
例えば、各ステージにスコアを表示したり、ボールの残り数を表示、ブロックが壊れたときのアニメーションや壊れないブロックを作成など。ここからの調整が一番時間が掛かり、大変だったりします。
