ブロック崩し(breakout)を簡単に作成。Part1.パドルとボール|Unityゲーム制作

今回は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ではここまで、パドル(プレイヤー)とボールを作成しました。

タイトルとURLをコピーしました