今回はUnity2Dで「ブロック崩し(breakout)」を簡単に作成してみます。Part1ではパドルを動かすのとボールを実装していきます。
はじめに
今回作成するゲームは「ブロック崩し」です。実装方法はたくさんありますが、初心者でも出来るような簡単な形で作成していきます。
Unityバージョン
Unityのヴァージョンは2022.3.14f1、テンプレートは2Dを利用。プロジェクト名は「2DBreakout」としておきます。

ゲームの作成開始
まずはゲームの基本的な動作部分を作成していきます。
パドルとボールの作成
Hierarchyメニューで「2DObject」→「Sprites」から「Circle」と「Square」を追加します。

それぞれ名前を「Ball」と「Player」にして、サイズと位置を下記のような感じで変更しておきます。

ゲーム画面が下記のような感じになればOKです。Playerは左右に動くパドルです。

パドル(プレイヤー)の設定
Playerには「BoxCollider2D」と「Rigidbody2D」を追加します。

「Rigidbody2D」はGravityScaleを0にして、Y軸を固定します。

下記スクリプトを作成します。マウスの位置にパドル(プレイヤー)を移動するスクリプトです。
using UnityEngine;
public class Player : MonoBehaviour
{
private new Rigidbody2D rigidbody;
private void Awake()
{
rigidbody = GetComponent<Rigidbody2D>();
}
void Update()
{
rigidbody.MovePosition(new Vector2(Camera.main.ScreenToWorldPoint
(new Vector2(Input.mousePosition.x, 0)).x, transform.position.y));
}
}
作成したスクリプトをPlayerに追加しておきます。

ボールの設定
Ballには「CircleCollider2D」と「Rigidbody2D」を追加します。

「Rigidbody2D」はGravityScaleを0にして、Z軸を固定します。

下記スクリプトを作成して、Ballに追加します。ボールに速度と跳ね返りをセットしています。
using UnityEngine;
public class Ball : MonoBehaviour
{
[SerializeField] private float speed = 7.0f;
private new Rigidbody2D rigidbody;
private Vector2 velocity;
private void Awake()
{
rigidbody = GetComponent<Rigidbody2D>();
rigidbody.velocity = Vector2.down * speed;
}
void FixedUpdate()
{
rigidbody.velocity = rigidbody.velocity.normalized * speed;
velocity = rigidbody.velocity;
}
private void OnCollisionEnter2D(Collision2D collision)
{
rigidbody.velocity = Vector2.Reflect(velocity, collision.contacts[0].normal);
}
}
実行して下記のような感じになればOKです。

壁の作成
Hierarchyメニューで「2DObject」→「Sprites」→「Square」を追加します。名前をWallにして、位置と色を変更して、「BoxCollider2D」を追加します。

Wallをコピーして画面を囲うように壁を作成します。

下記のような感じですね。

空オブジェクトを追加してWallsに名前を変更して、配下に壁を移動しておきます。

Part1ではここまで、パドル(プレイヤー)とボールを作成しました。