🎮 Unityでブロック崩しゲームを作ってみた!

Unityといえば、『ポケモンGO』や『スーパーマリオラン』、『ウマ娘 プリティダービー』など、有名な人気のゲームも開発されている強力なゲームエンジンです。
そんなUnityを使って、自分でも何か作ってみたいと思い、今回は試しに昔懐かしい「ブロック崩しゲーム」を作ってみました。


① 壁を作る

まずは、ボールが外に出ていかないように上下左右に壁を配置します。

  • 3D Object > Cube を使って壁を4つ作成
  • 上下の壁の Scale(15, 1, 1)
  • 左右の壁の Scale(1, 20, 1)
  • 位置は以下のように調整
名前Position
Wall Left(-7, 0, 0)
Wall Right(7, 0, 0)
Wall Top(0, 10.5, 0)
Wall Bottom(0, -10.5, 0)

② ボールを作る & スクリプトで動かす

次に、Sphere を追加してボールを作成します。

  • Scale(0.5, 0.5, 0.5) にして小さめに
  • Rigidbody を追加して Use Gravity をオフ
  • Physics Material を作成して「摩擦ゼロ、バウンド最大」に調整
using UnityEngine;

public class BallMovement : MonoBehaviour
{
    public float speed = 10f;

    void Start()
    {
        GetComponent<Rigidbody>().velocity = new Vector3(1f, 1f, 0f).normalized * speed;
    }
}

③ ブロックを作る

Cube を使ってブロックを作り、好きな色のマテリアルをつけて並べます。

  • ブロックをプレハブ化して、行列状に配置
  • Box Collider をつけるだけでOK

④ パドルを作る

プレイヤーが操作する「パドル」も Cube で作成し、画面下部に配置。


⑤ パドルをキーボードで動かす

パドルにスクリプトをつけて、左右キーで移動できるようにします。

using UnityEngine;

public class Player : MonoBehaviour
{
    public float speed = 5f;

    void Update()
    {
        float move = 0f;

        if (Input.GetKey(KeyCode.LeftArrow) && transform.position.x > -5f)
        {
            move = -1f;
        }
        else if (Input.GetKey(KeyCode.RightArrow) && transform.position.x < 5f)
        {
            move = 1f;
        }

        transform.Translate(move * speed * Time.deltaTime, 0f, 0f);
    }
}


⑥ ボールがブロックに当たったら消す

ブロック側に以下のようなスクリプトを付けます。

using UnityEngine;

class Block : MonoBehaviour
{
    // 何かとぶつかった時に呼ばれるビルトインメソッド
    void OnCollisionEnter(Collision collision)
    {
        // ゲームオブジェクトを削除するメソッド
        Destroy(gameObject);
    }

    void OnCollisionEnter(Collision collision)
    {
        // 衝突した相手(ボール)を削除する
        Destroy(collision.gameObject);
    }
}

※ ブロックのオブジェクトに Block スクリプトを付け、Tag: Ball を忘れずに設定!


⑦ ボールが下の壁に落ちたらGameOver

Wall Bottom に GameOverZone.cs などのスクリプトをつけて、ボールが落ちたことを検知します。

using UnityEngine;
using UnityEngine.SceneManagement;

public class GameOverZone : MonoBehaviour
{
    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("Ball"))
        {
            Debug.Log("Game Over");
            SceneManager.LoadScene("GameOverScene"); // シーン切り替えやリトライ処理など
        }
    }
}

⑧ 全てのブロックを壊したらクリア

ブロックの数をカウントして、0になったらクリア判定をします。

using UnityEngine;
using UnityEngine.SceneManagement;

public class GameManager : MonoBehaviour
{
    void Update()
    {
        if (GameObject.FindGameObjectsWithTag("Block").Length == 0)
        {
            Debug.Log("Clear!");
            SceneManager.LoadScene("ClearScene");
        }
    }
}

🧱 完成!

ここまでで、簡単なブロック崩しゲームが完成です!それでは実際のゲーム動画をご覧下さい。

ゲームにサウンドやエフェクトを加えたり、レベル制にしたりと、拡張もいろいろできます。


✍ まとめ

Unity初心者でも、「壁を置く→動くボール→当たると壊れる」この3点を押さえれば、ゲームらしさが一気に出ます。これからゲーム作りを始める人にとって、ブロック崩しはとてもおすすめの教材です!

お問い合わせ

お問い合わせいただきありがとうございます。以下のフォームにご記入いただくか、お電話にてお問い合わせください。営業日においては、お問い合わせいただいた内容について、24時間以内に回答いたします。