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点を押さえれば、ゲームらしさが一気に出ます。これからゲーム作りを始める人にとって、ブロック崩しはとてもおすすめの教材です!