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

Unityでブロック崩しを作る基礎講座6:ゲームオーバーテキストの表示を作る

2024年9月9日

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

この記事は、

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

の6番目の記事です。

今回は、

ゲームオーバーテキストの表示を作る

という作業について
お伝えをしていきますね。

この記事で行っていくのは、

作業の流れ

1、ChatGPTでゲームオーバーのテキストを表示する方法を確認する

2、UIのキャンバスを作る

3、UIのテキストの作成と設定をする

4、テキストオブジェクトを非表示にする

5、ゲームオーバーを表示するプログラムを作る

6、GameOverTriggerスクリプトを修正する

7、テストプレイをして動作を確認する

といった7つの作業になります。

工程を細かく分けているので
多く見えますが、1つ1つの作業は
大変ではないのでご安心くださいね。

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

スポンサーリンク

1、ChatGPTでゲームオーバーのテキストを表示する方法を確認する

まずはChatGPTでゲームオーバーテキストの
表示をする方法について確認していきます。

ChatGPTを開いたら、チャット欄に、

ゲームオーバーになった時にテキストでゲームオーバーと表示したい

と入力をしました。

チャットGPTでゲームオーバーテキストを表示する方法を確認する画像

そうすることで返答が書かれますが、

最初のメッセージでは、

「テキストメッシュプロ」

というものを使ったテキストの表示方法の
流れについて書いてくれています。

ChatGPTの返答

チャットGPTでゲームオーバーテキストの表示について聞いた返答1

チャットGPTでゲームオーバーテキストの表示について聞いた返答2

上記は途中までの返答です。

テキストメッシュプロは便利なテキスト機能
である反面、複雑な部分があります。

なので今回はテキストメッシュプロではなく
普通の「テキスト」を使っていきますね。

ということで、

ゲームオーバーになった時にテキストでゲームオーバーと表示したい。標準のTextコンポーネントを使用して

というようなメッセージを送り直しましょう。

この記事では、

「テキストメッシュプロではなくテキストを使いたい」

と続けてメッセージを送信しています。

ゲームオーバーテキストの表示作成について標準のテキストを使った方法を聞いている画像

そうすることで、「テキスト」を使った
表示方法について書いてくれましたので、
内容を見て作り方の手順を確認します。

ChatGPTの返答

チャットGPTにゲームオーバーテキストの表示について聞いた返答2_1
チャットGPTにゲームオーバーテキストの表示について聞いた返答2_2
チャットGPTにゲームオーバーテキストの表示について聞いた返答2_3
チャットGPTにゲームオーバーテキストの表示について聞いた返答2_4

このように特定の機能を使いたい場合等には、
しっかりとChatGPTにその旨を伝えることで
こちらの求める返答に近くなっていくんですね。

2、UIのキャンバスを作る

次はUnityを開いて、UIのキャンパスを
作っていきましょう。

テキストを表示するためにはまずは
UIのキャンパスを作る必要があります。

そして、そのキャンバスの中に
テキストを作っていくんですね。

ということで、Hierarchy(ヒエラルキー)で
右クリック、またはプラスボタンをクリックして
表示したメニューから

「UI → Canvas(キャンバス)」

と選んでクリック。

ヒエラルキーのメニューからCanvasを選んでいる画像

そうすることで、新しいキャンバスが作られまして、
名前が変更できるようになっています。

一緒にEventSystem(イベントシステム)が
作られますが、これは必要なものなので
そのままで大丈夫です。

そしてキャンバスの名前を

「GameOverCanvas」

に変更して決定をしました。

ゲームオーバーテキスト用のCanvasの名前を変更した画像

これでUIのキャンバスの作成は完了です。

3、UIのテキストの作成と設定をする

キャンバスが作れたら次は
UIのTextを作っていきましょう。

ヒエラルキーのゲームオーバーキャンバスの上で
右クリックをしてメニューを出します。

そして、「UI → Legacy → Text」と選んで決定。

メニューから標準のTextを選んでいる画像

これでキャンバスの中にテキストの
オブジェクトが作られました。

ゲームオーバー用のキャンバスの中にTextが作られた画像

このテキストオブジェクトの名前を

「GameOverText」

に変更して決定します。

Textの名前を変更した画像

これでUIテキストの作成は完了したので、
次は設定を行いましょう。

まず表示するテキストの内容を
書き換えていきます。

ヒエラルキーで、テキストをクリックして
選んだら、インスペクターを見ていきます。

ヒエラルキーのGameOverTextをクリックしてインスペクターを表示させた画像

そしてTextコンポーネントが
表示されている部分に、

「Text」

という項目があるんですね。

最初は「New Text」と書かれています。

インスペクターのTextコンポーネントのText項目を確認している画像

ここの中身を書き換えると
表示される文字が変わるので、

「ゲームオーバー」

と書き換えました。

表示するテキストを変更した画像

文字を書き換えたら、
次は大きさを変更します。

テキストの下の方に、

「Font Size(フォントサイズ)」

という項目があるので、
ここのサイズを「50」に変更しました。

表示テキストのフォントサイズを変えた画像

文字を大きくしたら次は、
文字の位置を「中央揃え」にします。

「パラグラフ」という部分に、
文字の位置を調整できる項目があるので、
このマークの真ん中をクリックしていきます。

2つとも真ん中をクリックして選ぶことで、
文字の表示が中央揃えになります。

テキストの位置を中央揃えにした画像

次は、文字の表示範囲を広くしていきます。

文字を大きくしても、文字を表示できる
範囲が狭いとちゃんと文字が表示されないんですね。

文字を表示できる範囲は上の方にある

「RectTransform(レクトトランスフォーム)」

を見ていきます。

テキストの表示範囲を設定する画像

ここに横幅と縦幅を変更できる
欄があるので、

横を「500」、縦を「100」

に変更しました。

テキストの表示範囲を設定した画像

これでゲームオーバーというテキストが
ゲーム画面でも見えるようになりました。

ただ、色が黒で見えにくいため
次は文字の色を変更していきます。

Textコンポーネントの
Colorという項目を見て
右側にある細長い部分をクリックします。

テキストの色を変更する画像

そうすると色を変更する画面が
表示されますので、ここから
色を選んで変更します。

今回は白色にしました。

テキストの色を変更した画像

文字色を白に変更したことで
テキストが見えやすくなりましたが、
次は文字を太くしていきましょう。

Textコンポーネントの

「Font Style(フォントスタイル)」

の右側にある「Nomal」をクリックして、

Font Styleを変更する画像

表示された項目から

「Bold」

を選んでクリックします。

Font StyleのメニューからBoldを選ぶ画像

これで文字のスタイルが設定されて
表示されているテキストが太くなりました。

Font Styleを設定してテキストが太くなった画像

これで、テキストの作成と設定は完了となります。

4、テキストオブジェクトを非表示にする

次はテキストオブジェクトを
非表示にしていきましょう。

ゲームオーバーのテキストは、
ゲームオーバーになった時にだけ
表示したいですよね。

なので、ゲームオーバーになった時以外は
表示しないように、非表示の設定をしておきます。

非表示にするのは簡単で、
ヒエラルキーでゲームオーバーテキストを
クリックして、インスペクターを見ていきます。

GameOverTextのインスペクターを表示した画像

そして、上の方に名前が書いてありますが、
そこの横にチェックボックスがあるんですね。

インスペクターの名前の左にチェックボックスがあります

このチェックボックスをクリックすることで、
チェックが外れて、非表示になりました。

このチェックボックスをクリックすることで、
表示したり、非表示にしたりできるんですね。

インスペクターの名前の横のチェックボックスからチェックを外してオブジェクトを非表示にした画像

そして、非表示にしてからヒエラルキーを
見てみると、ゲームオーバーテキストが、
薄い文字になりました。

非表示にしたオブジェクトの文字色が薄くなった画像

これで、テキストオブジェクトを
非表示にする設定は完了です。

5、ゲームオーバーを表示するプログラムを作る

テキストのオブジェクトの作成と設定が
一通り完了したので次は、

ゲームオーバーのテキストを表示するプログラムの作成

を行っていきましょう。

まずは、新しいスクリプトを作成します。

Project(プロジェクト)ウインドウの
+ボタンをクリックして、

表示されたメニューから
C# Script(スクリプト)を選んでクリック。

プロジェクトウインドウのメニューからC#スクリプトを選んでいる画像

新しいスクリプトファイルが作られたら
名前を「GameOverManager」に変更しました。

この名前は、ChatGPTで生成されたコードに
書かれている名前と同じです。

新しく作られたC#スクリプトの名前を変更した画像

そして、スクリプトが作れたら
ダブルクリックをして開きます。

ビジュアルスタジオなどのコードエディターで
スクリプトが開いたら、

ゲームオーバーテキスト用のスクリプトファイルを開いた画像

ChatGPTの画面を開き、
生成されたコードをコピーします。

チャットGPTからゲームオーバーテキストを表示するプログラムのコードをコピーした画像

コピーしたらビジュアルスタジオに戻り
現在のコードを全て選択します。

ゲームオーバーテキスト用のスクリプトの内容を全て選択した画像

その後コピーしてきたコードを
貼り付けました。

ゲームオーバーテキスト用のスクリプトにチャットGPTからコピーしたコードを貼り付けた画像

今回使用したGameOverManagerのコード

using UnityEngine;
using UnityEngine.UI;

public class GameOverManager : MonoBehaviour
{
    public Text gameOverText;

    void Start()
    {
        gameOverText.gameObject.SetActive(false);
    }

    public void TriggerGameOver()
    {
        gameOverText.gameObject.SetActive(true);
    }
}

そこまでできたら上にあるメニューから

「ファイル → 保存」

とクリックしてセーブをしました。

これでゲームオーバーの時にテキストを表示する
プログラムを書いたスクリプトもできたので、
Unityに画面を戻します。

そして、ゲームオーバーキャンバスに、
先ほど作ったスクリプトをつけていきましょう。

ヒエラルキーでゲームオーバーキャンバスを
クリックしてインスペクターを表示。

そしてプロジェクトウインドウにある
スクリプトをクリックしたまま、

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

ゲームオーバー用のキャンバスにゲームオーバーテキストを表示するプログラムを書いたスクリプトをつける画像

これでインスペクターにスクリプトが
表示されたらOKです。

そして、インスペクターに表示された
スクリプトを見てみると、

「ゲームオーバーテキストを設定できる欄」

ができています。

ゲームオーバーテキストを表示するスクリプトのテキストを設定する場所はここ

ここに表示したいテキストオブジェクトを
設定する必要があるんですね。

ということで、ヒエラルキーから
薄い表示になっている

「ゲームオーバーテキスト」

をクリックしたまま動かしていって、
インスペクターのテキストを設定する欄に
持っていってクリックを離します。

ゲームオーバーになった時に表示するテキストを設定する画像

これで設定がされたらOKです。

6、GameOverTriggerスクリプトを修正する

次はGameOverTriggerスクリプトを
修正していきます。

GameOverTriggerスクリプトは
下の壁についていて、

ボールが当たった時に、ゲームオーバーの
処理を行うというプログラムが書かれています。

これを修正して、ボールが下の壁に当たった時に
ゲームオーバーのテキストを表示するように
変更するんですね。

ということで、プロジェクトウインドウにある
ゲームオーバートリガースクリプトを
ダブルクリックして開きましょう。

ゲームオーバートリガースクリプトを開いた画像

開いて内容が表示されたら次は、
ChatGPTで生成されたプログラムの
コードをコピーしてきます。

チャットGPTでゲームオーバートリガースクリプトの修正コードをコピーした画像

そうしたらまたゲームオーバートリガーの
内容に戻って全て選択します。

ゲームオーバートリガースクリプトの内容を全て選択した画像

その後、コピーしてきた修正コードを
貼り付けました。

ゲームオーバートリガースクリプトにコピーしてきた修正コードを貼り付けた画像

今回使用したGameOverTriggerの修正コード

using UnityEngine;

public class GameOverTrigger : MonoBehaviour
{
    private GameOverManager gameOverManager;

    void Start()
    {
        gameOverManager = FindObjectOfType<GameOverManager>();
    }

    void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.CompareTag("Ball"))
        {
            // ゲームオーバー処理
            Debug.Log("Game Over");
            // GameOverManagerのTriggerGameOverメソッドを呼び出す
            gameOverManager.TriggerGameOver();
        }
    }
}

コードが上書きできたら上のメニューから

「ファイル → 保存」

とクリックしてセーブします。

これでスクリプトの修正は完了です。

7、テストプレイをして動作を確認する

ここまでの作業で、テキストのオブジェクトと
それを表示するためのプログラムができました。

あとはテストプレイをして、

ちゃんとゲームオーバーのテキストが表示されるのか

ということを確認していきましょう。

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

テストプレイを開始するプレイボタンの位置はここ

そしてテストプレイが始まったら
ゲームオーバーになってみます。

ゲームオーバーになった時に
ゲームオーバーテキストが
表示されたら確認はOKです。

ゲームオーバーのプログラムの処理を確認できた画像

前回のゲームオーバーの処理と比べると、
リスタートの機能は無くなりました。

また、ゲームオーバーのテキストが
表示されていますが、ゲームは停止
していないのでパドルが動かせます。

今後、上記2点の追加・修正を
行なっていくかもしれませんが、
今回の作業はこれで完了となります。

8、まとめ

ということで、今回の記事では、

ブロック崩しでゲームオーバーになった時にテキストを表示する

という処理を作るための内容について
お伝えさせていただきました。

全部で7個の作業に分けて説明をしましたが、
今回行ったことを大きく分けると、

・テキストオブジェクトの作成

・ゲームオーバーのテキストを表示するプログラムの作成

といった2つの作業になりますね。

この2つの作業、

・オブジェクトを作成する

・そしてプログラムを作ってオブジェクトにつける

というのは、Unityでのゲーム制作の
基本となるので、改めて覚えておくと
いいかなと思います。

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

次の記事では、ブロック崩しのゲームクリアの
プログラム作成についてお伝えしていきますね。

それでは次の記事に進んでいきましょう!

次の記事はこちら → ChatGPTとUnityでブロック崩しを作る基礎講座7「ゲームクリアのプログラムを作る」

スポンサーリンク

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