ども!カトサンラボのかとこうです。
この記事は、
「ChatGPTとUnityでブロック崩しを作る基礎講座」
の5番目の記事です。
今回は、
「ブロック崩しのゲームオーバーの作成」
についてお伝えしていきますね。
この記事で行っていく作業は、
といった6つの工程に分かれています。
まずは1つ目の作業から解説していきますね!
1、ChatGPTでゲームオーバーの作り方を確認する
それでは最初に、ChatGPTを使って
ゲームオーバーの作り方を
確認していきましょう。
ChatGPTを開いたら、チャット欄に
「 ボールが下の画面外に出た時にゲームオーバーとなる処理を作りたい。作り方を教えて」
という文章を入力して送信しました。
![チャットGPTにブロック崩しのゲームオーバーの作り方を聞きます](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake1.jpg)
今回はブロック崩しでのゲームオーバーなので、
「下の画面外に出た時にゲームオーバーになる」
という風に書いています。
そしてChatGPTの返答が表示されました。
ChatGPTの返答
![ブロック崩しのゲームオーバーの作り方のチャットGPTの返答1](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake2.jpg)
![ブロック崩しのゲームオーバーの作り方のチャットGPTの返答2](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake3.jpg)
![ブロック崩しのゲームオーバーの作り方のチャットGPTの返答3](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake_3.jpg)
これを見てゲームオーバーの作り方を
確認していきましょう。
2、下側の壁のゲームオブジェクトを作る
作り方の確認をしたら、
次はUnityで
「下側の壁のゲームオブジェクト」
を作っていきましょう。
Hierarchy(ヒエラルキー)の+ボタンを
クリックして表示されたメニューから
「Create Empty(クリエイトエンプティ)」
をクリック。
![Create Emptyを選んでクリックしました](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake5.jpg)
そして作られたゲームオブジェクトの名前を
「BottomWall」
に変更して決定をします。
![オブジェクトの名前を変更した画像](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake6.jpg)
これで下側の壁のゲームオブジェクトが作れました。
今回はクリエイトエンプティという、
何の機能もついていない
ゲームオブジェクトを作りました。
何の機能も付いていないので
画像も無い見えないオブジェクトです。
そこに当たり判定を追加して
見えない壁を作っていきます。
BottomWallを作ったら、
ドラッグ&ドロップをして
Wallsの中に入れておきましょう。
まず、位置の調整をしておきます。
細かい数値が入っている場合もあるので、
Transform(トランスフォーム)の
Position(ポジション)をみて、
XYZの数値を全て「0」に設定しました。
![見えない壁の位置情報を調整した画像](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake7.jpg)
そしてその後、BottomWallを
ドラッグ&ドロップして
Wallsの中に入れました。
![作成した見えない壁を壁をまとめるオブジェクトの中に入れた画像](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake8.jpg)
3、当たり判定をつける
次は、「下側の見えない壁に当たり判定をつける」
という作業を行います。
ヒエラルキーでBottomWallをクリックして
Inspector(インスペクター)を表示させます。
![BottomWallをクリックしてインスペクターを表示させました](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake_9.jpg)
そうしたら、インスペクターの
Add Component(アドコンポーネント)を
クリックして、表示された検索窓に「b」と入力をします。
![Add Componentの検索窓に「b」と入力した画像](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake10.jpg)
そして表示された候補の中から
「Box Collider 2D(ボックスコライダー2D)」
を選んでクリックしましょう。
![Box Collider 2Dを選んでクリックした画像](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake11.jpg)
これで見えない壁に当たり判定を
つけることができました。
また、今回はインスペクターの
ボックスコライダー2Dを見て
「 isTrigger」
にチェックをつけておきます。
![Box Collider 2Dの項目にあるIs Triggerのチェックをつけました](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake12.jpg)
チェックをつけると当たり判定で
跳ね返らずに、すり抜けるように
できるんですね。
これで、当たり判定をつける作業は完了です。
4、サイズと位置の調整をする
当たり判定をつけた次は、
見えない壁のサイズと位置の調整を
していきましょう。
まず大きさを変更します。
BottomWallのインスペクターにある、
トランスフォームのScale(スケール)を
見ていきます。
そしてそこの横幅、Xの数値を18に変更します。
![見えない壁を横に長くした画像](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake13.jpg)
大きさの変更をしたら、
位置を調整していきましょう。
画面の下に持っていきたいので、
トランスフォームのポジションの
Xの数値を0、Yの数値を-6に設定しました。
![見えない壁の位置を変更した画像](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake14.jpg)
これで、サイズと位置の調整は完了です。
5、ゲームオーバーのプログラムを作る
壁の外見ができたら次は、中身である
ゲームオーバーのプログラムを
作っていきましょう。
プロジェクトウインドウの
+ボタンをクリックして
表示されたメニューから
「C# Script(Cシャープスクリプト)」
をクリックします。
![ProjectウインドウのメニューからC# Scriptをクリックした画像](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake15.jpg)
そうすることで新しいスクリプトが
作られるので、名前を
「GameOverTrigger」
に変更します。
![新しく作られたC# Scriptの名前を変更した画像](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake16.jpg)
そしてダブルクリックをして
スクリプトを開きましょう。
ビジュアルスタジオなどで
ファイルの中身が開いたら、
![ビジュアルスタジオなどのコードエディターでゲームオーバーのプログラムの中身が表示された画像](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake17.jpg)
ChatGPTの返答に書かれている
プログラムのコードをコピーして、
![チャットGPTが生成したゲームオーバーのプログラムのコードをコピーした画像](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake18.jpg)
その後、スクリプトの内容を
全て選択してから、
![ゲームオーバー用のプログラムのコードを全て選択した画像](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake19.jpg)
ChatGPTからコピーしてきた
コードを貼り付けていきます。
![ゲームオーバー用のプログラムにコピーしてきたコードを貼り付けた画像](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake20.jpg)
タイトルテキスト
using UnityEngine;
using UnityEngine.SceneManagement;
public class GameOverTrigger : MonoBehaviour
{
void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.CompareTag("Ball"))
{
// ゲームオーバー処理
Debug.Log("Game Over");
// ゲームオーバーシーンに切り替えるか、現在のシーンをリロード
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
}
}
そして、コピーしたプログラムを貼り付けたあと
上にあるメニューのファイルから保存を
クリックしてセーブをしたらOKです。
プログラムができたらUnityに戻リます。
プログラムを変更したことでUnityの
コンソールウインドウに警告文が
表示されているかもしれません。
![Consoleウインドウを表示したら警告文が表示されていた画像](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake21.jpg)
今回は特に気にせず、コンソールウインドウの
クリアボタンをクリックして表示を消しました。
![ConsoleウインドウのClearをクリックして警告文の表示を消した画像](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake22.jpg)
内容が気になる場合には、警告文をコピーしてから
インターネットの翻訳を開いて貼り付けて翻訳する
ことで確認をしてみてもいいと思います。
そしてその後、BottomWallに
スクリプトをつけていきましょう。
まず、ヒエラルキーにある
BottomWallをクリックします。
![BottomWallをクリックしてヒエラルキーを表示した画像](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake23.jpg)
そしてプロジェクトウインドウにある
スクリプトをクリックしたまま動かして、
インスペクターのアドコンポーネントの
あたりに持っていったらクリックを離します。
![ゲームオーバー用のスクリプトを下の壁のオブジェクトにつけた画像](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake24.jpg)
これでスクリプトが付いたらOKです。
![ゲームオーバー用のスクリプトがBottomWallに付いた画像](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake25.jpg)
6、テストプレイをして確認する
スクリプトをつけることができたら、
テストプレイを行ってゲームオーバーの
プログラムの処理の確認をしていきます。
シーンビューの上にあるプレイボタンを
クリックしてテストプレイを開始します。
![シーンビューの上にあるプレイボタンをクリックしてテストプレイを開始した画像](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake26.jpg)
テストプレイが始まったら、
ゲームオーバーになるか確認をしました。
今回のプログラムでは、 ボールが
パドルより下の画面外に行くと
初期画面に戻り自動で再スタートします。
そして、コンソールウインドウを開くと、
ゲームオーバーのログも表示がされます。
![ゲームオーバーのプログラムの処理を確認した画像](https://katosanlaboratory.jp/wp-content/uploads/2024/08/breakoutgameovermake27.jpg)
これらの処理が確認できたらOKです。
ただ、今回の処理を見てゲームオーバーに
なった時に、もっとゲームオーバーが
わかりやすくなるようにしたいと思いました。
その点を今後改善していきますね。
7、まとめ
今回の記事は、
「ブロック崩しのゲームオーバーを作る」
という内容についてお伝えしてきました。
作業内容としては、
といった6つの工程に分けて
解説をしてきましたね。
今回お伝えした内容の中で、
・見えない壁を作る方法
・壁に跳ね返らない当たり判定をつける方法
については、ゲームを作るときに
結構使うことがあるので、
覚えておくと役に立つかなと思います。
ということで、今回の内容は以上となります。
次の記事では、
ゲームオーバーの処理の手直しとして、
「ゲームオーバーになった時にテキストを表示する方法」
についてお伝えしていきますね!
それでは、次の記事に進んでいきましょう!