チャットGPTとUntiy ブロック崩しの作り方

Unityでブロック崩しを作る基礎講座4:ブロックの作成と配置

2024年8月25日

ども!カトサンラボのかとこうです。

この記事は、

ChatGPTとUnityでブロック崩しを作る基礎講座

の4番目の記事です。

今回は、

ブロックの作成と配置

という内容についてお伝えしていきますね。

行っていく作業は、

今回の作業

1、ChatGPTでブロックの作り方を確認する

2、ブロックのゲームオブジェクトを作る

3、ブロックの位置や大きさを調整する

4、ブロックに当たり判定をつける

5、ブロックのプログラムを作る

6、ボールにタグを追加する

7、ブロックをプレハブ化する

8、ブロックを配置する

9、テストプレイをしてブロックが壊れるか確認する

10、ブロックのプレハブにスクリプトをつける

11、再テストプレイを行う

12、ボールの速度を調整する

といった内容になっていて、

1〜6までがブロックの作成。

7〜8でブロックの配置を行う
といった流れとなります。

細かく作業を分けているので
作業工程が多くなっていますが、

1つ1つの作業は難しくないので
ご安心ください。

それでは、1つ目の作業から
解説していきますね。

スポンサーリンク

1、ChatGPTでブロックの作り方を確認する

まずはChatGPTでブロックの作り方を
確認していきましょう。

ChatGPTの画面を開いて

チャット欄に、

ブロックを作りたい。作り方を教えて

と入力をして送信します。

チャットGPTにメッセージを送信した画像

そうするとChatGPTの返答が書かれました。

ChatGPTの返答

チャットGPTの返答1
ブロックの作り方のChatGPTの返答2
チャットGPTの返答3

この返答をみてブロックの作り方を
確認したら、次の作業に進んでいきます。

2、ブロックのゲームオブジェクトを作る

作り方を確認したら、実際にUnityで
ブロックを作っていきましょう。

ヒエラルキーのプラスボタンをクリックするか、
右クリックをしてメニューを出して

「2Dオブジェクト → スプライト → スクエア」

と選択していき、決定します。

ヒエラルキーのメニューからSquareを選んでクリックした画像

そうすることで、新しく四角い
ゲームオブジェクトが作られました。

これの名前が変更できるので、
「Block」と入力をして決定します。

四角いオブジェクトが作られて名前を変更した画像

これで、ブロックのゲームオブジェクトを
作る工程は完了です。

3、ブロックの位置と大きさなどを調整する

ブロックのゲームオブジェクトが作れたら、
次はブロックの位置や色、大きさの調整を行います。

まずは位置からです。

インスペクターのトランスフォームから
ポジションの数値を変更します。

Xを「0」、Yを「1」に設定しました。

ブロックの位置を変更した画像

次にブロックの色を変更しました。

スプライトレンダラーのカラーという
項目の右の部分をクリックすると
色を変更できます。

ブロックの色を変更するColorの位置はここ

薄い赤色に変えました。

ブロックの色を変更した画像

そして、大きさを調整します。

インスペクターのトランスフォームの
スケールの数値を変更して、

Xを「1.5」、Yを「0.5」

に設定しました。

ブロックの大きさを変更した画像

これで、ブロックの位置や色、
大きさの調整は完了です。

4、ブロックに当たり判定をつける

次はブロックに当たり判定をつけていきます。

まずヒエラルキーでブロックのオブジェクトを
クリックしてインスペクターを表示させましょう。

ブロックをクリックしてインスペクターを表示した画像

そうしたら、インスペクターの下の方にある
アドコンポーネントをクリック。

そして表示された検索窓に「b」と入力をします。

Add Componentの検索窓に「b」と入力した画像

そうするとbから始まるコンポーネントの
候補が表示されるので、そこから

「ボックスコライダー2D」

を選んでクリックしましょう。

Box Collider 2Dを選んでクリックした画像

これでブロックのオブジェクトに
当たり判定をつけることができました。

ブロックにBox Collider 2Dが付いた画像

5、ブロックのプログラムを作る

当たり判定などの設定ができたら、
次はブロックのプログラムを作ります。

まずはブロックのプログラムを書く
スクリプトの作成からですね。

プロジェクトウインドウのプラスボタンを
クリックして、表示されたメニューから
C#スクリプトを作成します。

ProjectウインドウのメニューからC# Scriptを選んだ画像

そして新しく作られたスクリプトの名前が
変更できるようになっているので、

「BlockController」

と入力をして名前を決定します。

ブロック用のスクリプトの名前を「BlockController」に変更した画像

名前をつけたらダブルクリックをして
開きましょう。

ビジュアルスタジオなどでスクリプトが
開いて内容が表示されます。

BlockControllerスクリプトの内容が表示された画像

そうしたら、ChatGPTの返答に書かれた
プログラムのコードをコピーします。

チャットGPTが生成したブロック用のプログラムのコードをコピーした画像

そして「BlockController」スクリプトに
内容を全て選択した後、

BlockControllerの内容を全て選択した画像

コピーしたコードを貼り付けます。

コピーしてきたブロック用のコードを貼り付けた画像

今回使用したBlockControllerのコード

using UnityEngine;

public class BlockController : MonoBehaviour
{
    void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("Ball"))
        {
            // ブロックを破壊する
            Destroy(gameObject);
        }
    }
}

あとは上の方にあるメニューのFileから
保存をクリックしてセーブしたらOKです。

6、ボールにタグを設定する

次はタグの設定を行っていきます。

今回のプログラムを見ると、

ブロックが何かとぶつかった時、ぶつかった物にBallというタグがついていた場合に、ブロックを破壊する

という内容になっています。

そのため、Ballというタグを作り、
ボールのオブジェクトに設定をする
必要があるんですね。

ということで、まずはタグを作っていきましょう。

ボールのオブジェクトをヒエラルキーで選択します。

そして、インスペクターの上の方に
「Tag」という項目があるんですね。

Tagの位置はここ

そこをクリックすると、タグを選べるように
なっているのですが、ここから新しいタグを
作ることができるんです。

「Add Tag」をクリックします。

Tagをクリックして表示したメニューから「Add Tag」をクリックした画像

そして表示された画面で+ボタンをクリックします。

タグを作る画面で+ボタンをクリックした画像

そうすると「New Tag Name」ということで、
名前の変更ができます。

新しいタグの名前をBallに変更した画像

ここに「Ball」と入力をしてから
Saveをクリックすることで、

新しく「Ball」というタグを
作ることができました。

Ballタグが作成できた画像

タグが作れたら次は、この「Ball」というタグを
ボールのオブジェクトに設定しましょう。

ヒエラルキーのボールオブジェクトを選択して、
インスペクターを表示させます。

そしてインスペクターのタグの項目をクリックして、
「Ball」というタグを選んでクリック。

BallのインスペクターからBallタグの設定をしている画像

これでタグが設定できました。

7、ブロックをプレハブ化する

次は、ブロックのオブジェクトを
プレハブ化していきますね。

プレハブ化というのは、全く同じコピーを
作れるような感じです。

コピーを作れるといっても複製をして
増やすのとは違った利点があって、

プレハブ化をした元のファイルを編集すると
配置をした全てのプレハブに変更が適用されます。

そのため、同じものをたくさん配置したりする時などに
便利なんですね。

プレハブ化をするのは簡単で、
ヒエラルキーにあるプレハブ化をしたい
オブジェクト、今回はブロックですね。

これをクリックしたまま
プロジェクトウインドウへ移動させて
クリックを離します。

ヒエラルキーのBlockをProjectウインドウへドラッグ&ドロップした画像

そうすることで、プレハブ化ができました。

Blockのプレハブができた画像

このようにゲームオブジェクトを
ドラッグ&ドロップするだけで
プレハブ化ができるんですね。

プレハブになると、ゲームオブジェクトの
名前のところが青くなりました。

プレハブ化をしたオブジェクトは色が青くなりました

8、ブロックを配置する

ブロックをプレハブ化することができたら、
次はブロックを配置していきましょう。

1度、ヒエラルキーに配置しているブロックを
消しますね。右クリックでデリートをしました。

BlockをDeleteで消した画像

そして、プロジェクトウインドウにある
ブロックプレハブをヒエラルキーへ
ドラッグ&ドロップをして配置をしていきます。

ブロックのプレハブをヒエラルキーへ配置している画像

プレハブを2回ドラッグ&ドロップしました。

ブロックのプレハブを2個配置した画像

配置をすると位置が全く同じになっているため、
重なっているんですね。

それをムーブツールで動かして
横に並べていきましょう。

配置したブロックのプレハブが重なっていたのでムーブツールで移動させた画像

その後プレハブを追加していき、
全部で7個のプレハブを配置して
最初の1段目を並べました。

ブロックのプレハブを7個配置して、ムーブツールで位置を調整した画像

そうしたら、1段ごとにブロックを
まとめるためのオブジェクトを作ります。

ヒエラルキーのプラスボタンから
クリエイトエンプティをクリック。

ヒエラルキーのメニューからCreate Emptyをクリックした画像

そして名前が変更できるので、

「1stBlock」

に変更しました。

クリエイトエンプティの名前を1stBlockに変更した画像

そうしたら、この1stBlockの
位置情報を見ていきます。

インスペクターのトランスフォームの
ポジションを見てXYZの数値を0にします。

1stBlockの位置を変更している画像

その後、この1stBlockの中へヒエラルキーにある
ブロックプレハブを入れていきましょう。

ドラッグ&ドロップをして1stBlockの子要素にします。

全て入れることができたらOKです。

Blockのプレハブを全て1stBlockの中に入れた画像

子要素にすると表示・非表示が切り替えられるので、
管理がしやすくなります。

1stBlockの子要素を非表示にした画像

そうしたらあとは、この1stBlockを複製して
次の段のブロックを作ります。

1stBlockの上で右クリックをして出てきた
メニューから「Duplicate」をクリックします。

1stBlockを右クリックして出てきたメニューからDuplicateを選んで複製する画像

複製をしたら名前を「2ndBlock」に変更して、
ムーブツールで位置を少し上に移動して調整します。

これで2段目のブロックができました。

複製した1stBlock(1)の名前を変更してムーブツールで移動させた画像

そうしたら、2ndBlockをまた複製して、
次は「3rdBlock」を作ります。

2ndBlockの上で右クリックをして
表示したメニューから「Duplicate」をクリック。

2ndBlockを複製する画像

そして名前を「3rdBlock」に変更したら、
ムーブツールで位置を調整していきましょう。

複製した2ndBlockの名前を変更して位置を調整した画像

あとは1段目、2段目、3段目の位置を
全体的に整えたら、ブロックの配置は完了です。

インスペクターのトランスフォームの
ポジションから、

1段目は、XとYを0に設定。

2段目は、Xが0、Yを1.3に設定。

3段目は、Xが0、Yを2.5に設定。

というように、それぞれ高さを調整しました。

ブロックの位置を全体的に調整した画像

9、テストプレイをしてブロックが壊れるか確認する

ブロックの配置ができましたら、
テストプレイを行ってブロックを
壊せるか確認していきましょう。

シーンビューの上にあるプレイボタンを
クリックしてテストプレイを開始します。

プレイボタンをクリックしてテストプレイを開始した画像

テストプレイが始まったあと、
ボールがブロックに当たった時に
壊れれば動作はOKです。

今回はボールが当たっても
ブロックが壊れませんでした。

テストプレイがうまくいかなかった画像

その原因は、ブロックにブロック用の
スクリプトをつけ忘れていたことです。

スクリプトのファイルを作った後に
つけ忘れることは結構あるんですよね(汗)

つけ忘れないためには作ったあと
すぐに付けておくのがいいですね。

ブロックプレハブにブロック用のスクリプトが付いていなかった画像

シーンビューの上のプレイボタンをクリックして、
テストプレイを終了します。

10、ブロックのプレハブにスクリプトをつける

次はブロックのプレハブにプログラムの
スクリプトをつけていきますが、

ここで、ブロックをプレハブ化したことが
活きてきます。

プレハブ化をしていないと、配置をしたそれぞれの
ブロックに対してスクリプトを1つずつ
付けていかないといけません。

これは結構な手間になりますよね。

ですが、プレハブ化をしておくと、
プレハブの元ファイルにつけるだけで、

配置したすべてのブロックプレハブに
スクリプトをつけることができるんです。

プロジェクトウインドウにある
ブロックプレハブのファイルを
ダブルクリックします。

Blockプレハブのインスペクターを表示した画像

そして、インスペクターが表示されたら、
プロジェクトウインドウにあるブロック用の
スクリプトをクリックしたまま移動させます。

BlockプレハブにBlock用のスクリプトをつけた画像

インスペクターのアドコンポーネントの
あたりに持っていき、クリックを離しました。

これで、ブロック用のスクリプトを
つけることができました。

Block用のスクリプトが付いた画像

ヒエラルキーで1stBlockなどを開いて
子要素になっているブロックをクリックして
インスペクターを見てみると

ブロック用のスクリプトがちゃんと
ついていることが確認できます。

配置しているBlockプレハブのインスペクターを確認した画像

11、再テストプレイを行う

ここまで出来たら、再度テストプレイを
行っていきましょう。

シーンビューの上にあるプレイボタンを
クリックします。

プレイボタンをクリックしてテストプレイを開始した画像

テストプレイが始まりましたら、
ブロックがボールに当たった時に
壊れるかを確認します。

ちゃんと壊れるようになったら
確認はOKです。

テストプレイがうまくいった画像

シーンビューの上のプレイボタンをクリックして、
テストプレイを終了します。

12、ボールの速度を調整する

テストプレイを行って気になったのが、
ボールの速度です。

ちょっと速いため、反射したボールを
パドルで跳ね返すのが難しく感じました。

難易度を下げるため、ボールの速度を変更します。

ヒエラルキーでボールをクリックして
インスペクターを表示させます。

そして、ボール用のスクリプトを見ていくと、
速度が設定できるようになっているんですね。

ボールの速度を変更するInitial Speedはここ

ここの数値を5に変更しましょう。

ボールの速度を5に設定した画像

変更を行ったあとは、テストプレイを行って
ボールの動きを確認しておくといいです。

ちょうどいい感じだと思ったら、
これで速度の調整は完了です。

13、まとめ

今回の記事では、

ブロック崩しのブロックを作って配置する

という作業を行ってきました。

細かく分けて解説をしてきたので
全部で12この作業となりましたが、
大きく分けると、

・ブロックの作成

・ブロックのプレハブ化

・ブロックの配置

・修正作業

といった4つの内容になっています。

今回の内容を行ったことで、
ブロック崩しとしての
基本的な要素は作れましたね。

あとはゲームとして成り立たせるために、
ゲームオーバーとゲームクリアを
作っていきたいと思います。

次の作業では

「ブロック崩しのゲームオーバーの処理」

を作っていきますね。

ということで、今回の内容は以上となります。

次の記事へ進んでいきましょう。

次の記事 → ChatGPTとUnityでブロック崩しを作る基礎講座5:ゲームオーバーの作成

スポンサーリンク

-チャットGPTとUntiy, ブロック崩しの作り方