1. はじめに
Unity AIが Unity6.2 ベータ版で利用できるようになりました
ゲームを作ってみたい!でもUnityはよくわからない…
使いこなせない状態でも、AIが手取り足取り教えてくれたら作れるのかを試してみたいと思います
今回は、ゲーム内容はシンプルにしたいので「じゃんけん」を作りたいと思います
2. なぜAIツールを使うのか?
AIツールを使えば、まったくプログラムを知らなくても、Unityの操作を知らなくても、教えてもらいながら学べるのではないかと思いました
3. AIツールと一緒にじゃんけんゲームを作ってみよう!
3.1. ゲームの企画・設計
どんなじゃんけんゲームにするか考えて、最終工程は、カイジのようなカードを使ったじゃんけんゲームにしようと思います
- 手札からカードを選んで出す
- CPUも同時にカードを出す
- 勝敗を判定して表示する
3.2. Unityプロジェクトの準備と基本構成
-
新規プロジェクトの作成
-
AIの準備
- メニューに「AI」があり、クリックすることで利用できるようになります
-
- 使用制限はあるように見えますが、ベータ版では無料のようです
- https://docs.unity3d.com/6000.2/Documentation/Manual/ai-menu.html
3.3. AIツールとの協業:じゃんけんゲームの実装
では、AIアシスタントの画面で、以下のような文章でお願いしてみました
Unityの初心者です。カードをつかったCPUとのじゃんけんゲームをつくりたいです。
フォルダ構成もわからず、ヒエラルキーの操作方法とかもわからないので、詳しく丁寧に作り方を教えてください
AIの返事
// 2025/06/30 AI-Tag
// This was created with the help of Assistant, a Unity Artificial Intelligence product.
Unityでカードを使ったCPUとのじゃんけんゲームを作る方法を、初心者向けに詳しく説明します。以下の手順に従って進めてください。
1. プロジェクトの準備
-
Unityプロジェクトを作成
- Unity Hubを開き、「新規プロジェクト」をクリック。
- テンプレートは「2D」を選択し、プロジェクト名を「RockPaperScissors」に設定。
- 保存場所を選んで「作成」をクリック。
-
フォルダ構成を作成
- Unityエディターの「Project」ウィンドウで、右クリックして以下のフォルダを作成します。
- Assets
- Scripts: スクリプトを保存するフォルダ。
- Sprites: 画像素材を保存するフォルダ。
- Prefabs: プレハブを保存するフォルダ。
- UI: ユーザーインターフェース関連のオブジェクトを保存するフォルダ。
- Assets
- Unityエディターの「Project」ウィンドウで、右クリックして以下のフォルダを作成します。
2. ヒエラルキーの基本操作
- ヒエラルキーは、ゲーム内のオブジェクトを管理する場所です。
- 右クリックで新しいオブジェクトを作成できます。
- 例: 「右クリック」→「UI」→「Button」でボタンを作成。
3. ゲームの基本構成
じゃんけんゲームの基本的な流れは以下の通りです:
- プレイヤーが「グー」「チョキ」「パー」のいずれかを選択。
- CPUがランダムで「グー」「チョキ」「パー」を選択。
- 勝敗を判定して結果を表示。
4. ヒエラルキーにオブジェクトを配置
-
背景を作成
- ヒエラルキーで右クリック → 「2Dオブジェクト」 → 「スプライト」を選択。
- 名前を「Background」に変更。
- 「Inspector」ウィンドウで「Sprite Renderer」の「Sprite」に背景画像を設定(画像がない場合は空白のままでOK)。
-
UIを配置
- ヒエラルキーで右クリック → 「UI」 → 「Canvas」を選択。
- Canvasの下に以下を作成します:
- Text (UI): 勝敗結果を表示するテキスト。
- 名前を「ResultText」に変更。
- 「Text」フィールドに「結果がここに表示されます」と入力。
- フォントサイズを調整して中央に配置。
- Button (UI): プレイヤーの選択肢を作成。
- ボタンを3つ作成し、それぞれ「RockButton」「PaperButton」「ScissorsButton」に名前を変更。
- ボタンの「Text」を「グー」「チョキ」「パー」に変更。
- Text (UI): 勝敗結果を表示するテキスト。
5. スクリプトを作成
-
スクリプトを作成
- 「Scripts」フォルダを右クリック → 「Create」 → 「C# Script」。
- スクリプト名を「RockPaperScissorsGame」に変更。
-
スクリプトを編集
以下のコードを「RockPaperScissorsGame.cs」に記述します。using UnityEngine; using UnityEngine.UI; public class RockPaperScissorsGame : MonoBehaviour { public Text resultText; // 結果を表示するテキスト public Button rockButton, paperButton, scissorsButton; // ボタン private string[] choices = { "グー", "チョキ", "パー" }; void Start() { // ボタンにクリックイベントを登録 rockButton.onClick.AddListener(() => PlayerChoice(0)); paperButton.onClick.AddListener(() => PlayerChoice(1)); scissorsButton.onClick.AddListener(() => PlayerChoice(2)); } void PlayerChoice(int playerChoice) { // CPUの選択をランダムに決定 int cpuChoice = Random.Range(0, choices.Length); // 勝敗を判定 string result = DetermineWinner(playerChoice, cpuChoice); // 結果を表示 resultText.text = $"あなた: {choices[playerChoice]} | CPU: {choices[cpuChoice]}\n結果: {result}"; } string DetermineWinner(int player, int cpu) { if (player == cpu) return "引き分け"; else if ((player == 0 && cpu == 1) || (player == 1 && cpu == 2) || (player == 2 && cpu == 0)) return "あなたの勝ち!"; else return "あなたの負け..."; } }
-
スクリプトをアタッチ
- ヒエラルキーで右クリック → 「空のオブジェクトを作成」。
- 名前を「GameManager」に変更。
- 「GameManager」に「RockPaperScissorsGame」スクリプトをドラッグ&ドロップでアタッチ。
- 「Inspector」で「ResultText」「RockButton」「PaperButton」「ScissorsButton」に対応するオブジェクトをドラッグして設定。
6. ゲームをテスト
-
再生ボタンをクリック
- Unityエディターの上部にある「再生ボタン」をクリックしてゲームを実行。
- ボタンをクリックして、じゃんけんの結果が表示されることを確認。
7. 改善案
- デザインを調整: ボタンやテキストの配置、色、フォントを変更して見た目を改善。
- サウンドを追加: 勝敗時に効果音を再生。
- スコア機能: 勝敗の回数を記録してスコアを表示。
これで、Unityでのじゃんけんゲームの基本的な作成方法が完成です!
すごい事細かに教えてくれています!!
教えてくれたことのままでは、うまくいかなかった部分
- Textのオブジェクトを
TextMeshProUGUI
作成したこと - それに合わせて、コード内の
public Text resultText;
の型をTextMeshProUGUI
に変更したこと - 日本語表示
うまくいかなかった部分もAIに聞いて解決しました
「Inspector」で「ResultText」に対応するオブジェクトをドラッグして設定。ですが、入りません
// 2025/06/30 AI-Tag
// This was created with the help of Assistant, a Unity Artificial Intelligence product.
ResultText
オブジェクトをresultText
フィールドにドラッグ&ドロップしても設定できない場合、以下の原因が考えられます。それぞれの原因と解決方法を確認してください。
原因 1: スクリプトのフィールド型が間違っている
ResultText
オブジェクトにはTextMeshProUGUI
コンポーネントがアタッチされていますが、スクリプトのresultText
フィールドがUnityEngine.UI.Text
型になっている可能性があります。
解決方法
resultText
フィールドの型をTextMeshProUGUI
に変更してください。
修正前(間違った型の場合):
using UnityEngine.UI; // UnityEngine.UI.Text を使用している場合
public class RockPaperScissorsGame : MonoBehaviour
{
public Text resultText; // これが原因でドラッグ&ドロップできない
}
修正後(正しい型に変更):
using TMPro; // TextMeshProUGUI を使用するための名前空間
public class RockPaperScissorsGame : MonoBehaviour
{
public TextMeshProUGUI resultText; // TextMeshProUGUI 型に変更
}
修正後、スクリプトを保存してUnityに戻ると、Inspector
ビューのresultText
フィールドがTextMeshProUGUI
型として認識され、ResultText
オブジェクトをドラッグ&ドロップできるようになります。
原因をいくつかあげてくれましたが、1つめで解決することができました
他、日本語はAIに聞いたのですが、まだ解決できていないです
4. 開発を終えて
- 知識なしでゲームは作れたのか?
- 簡単なじゃんけんですが、AIのサポートを受けて見た目はどうであれ、じゃんけんっぽいのができました
- AIツールのメリット
- これまでネットで調べたり、本を読んだりしないとわからないことがAIに聞くだけで作れました
- Unityの用語のまま聞いたりすることで操作方法までわかる
- 困ったときは追加で聞いたりしたら、それらしい解決方法を提示してくれる
- AIツールの限界や注意点
- 出してくれたコードの正しさなどは、自分で調べるなり、検証する必要はありそうです
- 今回のも、よく見てみるとCPUのチョキ・パーの値と、プレイヤーのチョキ・パーの値がズレてます
- 勝敗判定も間違っています
- 出してくれたコードの正しさなどは、自分で調べるなり、検証する必要はありそうです
5. まとめと今後の展望
- まとめ
- 試してみたことで、Unityでゲームが作れるかもしれないという気持ちになることができました
- AIに教えてもらえばコードの内容だって1行単位で説明してくれるし、Unityの使い方だって教えてくれます
- また、どうしてそういうコードにしたのか聞くことで、プログラミングの作法とかも学ぶこともできます
今まで作りたいけど…と思っていた人は、ベータ版の今からゲーム開発してみるのはどうでしょうか?
- 今後の展望
- 全然カードっぽくないので、アニメーションとか音とか付けてみようと思います
- AIの機能に生成AIがあるので、音や画像、アニメーションとかも作れるようです
- 全然カードっぽくないので、アニメーションとか音とか付けてみようと思います