Unityゲームの作り方メモミニゲーム

【Unity 2D】初心者向けじゃんけんゲームの作り方!簡単ステップで解説

Unity

1. はじめに

「Unityでゲームを作りたいけど、何から始めたらいいかわからない…」という方も多いのではないでしょうか? そんな初心者の方にぴったりなのが、じゃんけんゲームの作成です!

じゃんけんゲームはシンプルながら、UIの使い方・スクリプトの基礎・ランダム処理・ゲームの管理など、Unityの基本を学ぶのに最適な題材です。

この記事では、以下のような流れでじゃんけんゲームを作っていきます。

ボタンを配置して、プレイヤーが「グー」「チョキ」「パー」を選択できるようにする
敵の手をランダムに決定し、画像を変更する
勝敗を判定し、結果を画面に表示する
リセットボタンでゲームを最初からやり直せるようにする

ボタンを押すだけで遊べるシンプルなゲーム」なので、初心者の方でも楽しく学べます!
Unityの基本的な操作方法を身につけながら、オリジナルのゲームを作ってみましょう!

それでは、早速じゃんけんゲームを作成していきます! 🚀




2. UIの配置

じゃんけんゲームには、「グー」「チョキ」「パー」の3つのボタンと、勝敗を表示するテキスト、リセットボタンを用意します。まずは、これらのUIを配置していきましょう。


2.1 ボタンの作成

最初に、プレイヤーがじゃんけんの手を選べるように、「グー」「チョキ」「パー」のボタンを作成します。

  1. ボタンの作成
    • Hierarchyウィンドウで 右クリックUIButton を選択。
    • 作成されたボタンを InspectorGuButton にリネーム。
    • 同じ手順で ChokiButtonPaButton も作成。
  2. ボタンのデザイン調整
    • 各ボタンの Text を「グー」「チョキ」「パー」に変更。
    • ボタンの Image を変更する場合は、InspectorSource Image で任意の画像を設定。
  3. ボタンのサイズと配置
    • Rect Transform でサイズを 幅 200、高さ 100 に変更。
    • AnchorBottom Center に設定し、3つのボタンを横並びに配置。

2.2 勝敗表示の作成

じゃんけんの結果をプレイヤーに伝えるために、テキストを追加します。

  1. Hierarchy ウィンドウで 右クリックUIText を選択。
  2. InspectorJudgeText にリネーム。
  3. Text 欄に「結果表示」と入力(デフォルトで空でもOK)。
  4. Font Size40 に設定し、文字が見やすくなるよう調整。
  5. Alignment中央揃え にし、Color を設定。
  6. Rect Transform で位置を 画面中央の少し上 に配置。

2.3 リセットボタンの作成

試合をリセットできるように、リセットボタンを追加します。

  1. Hierarchy ウィンドウで 右クリックUIButton を選択。
  2. InspectorResetButton にリネーム。
  3. Text 欄の内容を「リセット」に変更。
  4. Rect Transform画面の下中央 に配置。
  5. サイズを 幅 200、高さ 80 に調整。

これで、じゃんけんのプレイに必要なUIの配置が完了しました!次のステップでは、敵のUIを配置していきます。




3. 敵のUIを配置

じゃんけんゲームでは、プレイヤーの手と対戦する「敵」の手を画面に表示する必要があります。このステップでは、敵の手を表現するUIを作成していきます。

3.1 空のオブジェクトを作成

まず、敵の手を表示するためのオブジェクトを作成します。

  1. ヒエラルキー(Hierarchy)ウィンドウで右クリックし、「Create Empty」を選択します。
  2. 名前を「Enemy」に変更します。
  3. Inspector(インスペクター)ウィンドウで「Add Component」をクリックし、「Sprite Renderer」を追加します。

3.2 スプライト(画像)を設定

次に、敵の手(グー・チョキ・パー)を表示するスプライトを用意し、設定します。

  1. プロジェクト(Project)ウィンドウの「Assets」フォルダ内に画像をインポートします。
    • じゃんけんの「グー」「チョキ」「パー」の3つの画像を準備してください。
    • 画像は「Sprites」フォルダを作成して、その中に整理すると管理しやすくなります。
  2. Inspectorウィンドウの「Sprite」フィールドに何も設定しない
    • まだ敵の手は決定していないため、最初は「None(空の状態)」にしておきます。

3.3 位置とサイズの調整

敵の手が表示される位置を調整します。

  1. ヒエラルキーで「Enemy」オブジェクトを選択します。
  2. Inspectorウィンドウの「Transform」からPositionを変更します。
    • 例えば、X: 0, Y: 2, Z: 0 のように設定すると、プレイヤーの手より少し上に表示されます。
  3. 必要に応じてScale(大きさ)を変更して、見やすいサイズに調整します。

これで、敵の手を表示するためのUIが準備できました。次のステップでは、この「Enemy」オブジェクトにスクリプトを追加して、ランダムで手を表示できるようにしていきます!




4. 敵の手をランダムに決定する

じゃんけんゲームでは、プレイヤーの手に対して敵(CPU)がランダムに「グー」「チョキ」「パー」のどれかを出す必要があります。そのために、EnemyManagerスクリプトを作成し、ランダムで手を決定し、対応する画像を表示できるようにしていきましょう。


4.1 EnemyManagerスクリプトの作成

まず、C#スクリプト「EnemyManager」 を作成します。

スクリプトを作成する

  1. プロジェクトウィンドウを右クリック
  2. 「Create」→「C# Script」を選択
  3. スクリプト名を「EnemyManager」 に変更

次に、このスクリプトを開いて、以下のコードを入力してください。


4.2 スクリプトの記述

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class GameManager : MonoBehaviour
{
    public EnemyManager enemyManager;
    public Text judgeText;

    public void GuButton() 
    {
        enemyManager.Judge();
        switch (enemyManager.enemyHand)
        {
            case 0: judgeText.text = "あいこ"; break;
            case 1: judgeText.text = "かち"; break;
            case 2: judgeText.text = "まけ"; break;
        }
    }

    public void ChokiButton()
    {
        enemyManager.Judge();
        switch (enemyManager.enemyHand)
        {
            case 0: judgeText.text = "まけ"; break;
            case 1: judgeText.text = "あいこ"; break;
            case 2: judgeText.text = "かち"; break;
        }
    }

    public void PaButton()
    {
        enemyManager.Judge();
        switch (enemyManager.enemyHand)
        {
            case 0: judgeText.text = "かち"; break;
            case 1: judgeText.text = "まけ"; break;
            case 2: judgeText.text = "あいこ"; break;
        }
    }

    public void ResetButton() 
    {
        SceneManager.LoadScene("SampleScene");
    }
}

4.3 スクリプトの解説

enemyHand 変数

  • enemyHand は、敵の出す手(グー・チョキ・パー)を数字で管理するための変数です。
  • 0 = グー1 = チョキ2 = パー とします。

Start() メソッド

  • Start() メソッド内で、UnityEngine.Random.Range(0, 3) を使い、0〜2のいずれかの数字をランダムに選択します。
  • これにより、敵の手がランダムに決まるようになります。

Judge() メソッド

  • Judge() メソッドでは、ランダムで決まった手に対応するスプライト画像をセットします。
  • switch 文を使って、enemyHand の値に応じて正しい画像を設定します。

4.4 スクリプトをオブジェクトにアタッチ

作成した EnemyManager スクリプトを Unity 内で使うために、オブジェクトに設定しましょう。

手順

  1. ヒエラルキーウィンドウで空のオブジェクトを作成
    • 「Hierarchy」ウィンドウで 右クリック →「Create Empty」
    • 名前を 「Enemy」 に変更
  2. 「Enemy」オブジェクトにスクリプトをアタッチ
    • 「Enemy」オブジェクトを選択
    • 「Inspector」ウィンドウで「Add Component」をクリック
    • EnemyManager スクリプトを追加
  3. 敵の画像(スプライト)を設定
    • sprites 変数に 「グー」「チョキ」「パー」用の画像 をそれぞれセット

4.5 動作確認

Playボタンを押して確認してみましょう!

  • シーンを再生すると、敵の手がランダムに変わるようになります!
  • ただし、Judge() メソッドは Start() の段階では呼ばれていないため、後ほどボタンを押したときに表示されるようにする処理を GameManager で実装します。

これで、敵がランダムにじゃんけんの手を決める仕組みができました!次は、プレイヤーがボタンを押したときに勝敗を判定する仕組みを作るために、GameManager スクリプトを作成していきます。




5. 勝敗判定とゲームの管理

じゃんけんゲームの一番重要な部分は、プレイヤーの選択に応じて敵の手と勝敗を判定する仕組みです。このステップでは、GameManagerスクリプトを作成し、各ボタンが押されたときに適切な処理を行うように設定します。


5.1 GameManagerスクリプトの作成

まずは、新しく GameManager というC#スクリプトを作成し、勝敗判定の処理を実装していきましょう。

スクリプトの作成

プロジェクトウィンドウを右クリックし、「Create」→「C# Script」を選択して、新しいスクリプトを作成します。名前は GameManager にしましょう。

作成した GameManager.cs をダブルクリックして開き、以下のコードを入力してください。

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class GameManager : MonoBehaviour
{
    // EnemyManagerスクリプトを格納する変数
    public EnemyManager enemyManager;

    // 勝敗を表示するText
    public Text judgeText;

    // グーボタンが押されたときの処理
    public void GuButton() 
    {
        enemyManager.Judge(); // 敵の手を決定

        switch (enemyManager.enemyHand)
        {
            case 0: 
                judgeText.text = "あいこ"; 
                break;
            case 1: 
                judgeText.text = "かち"; 
                break;
            case 2: 
                judgeText.text = "まけ"; 
                break;
        }
    }

    // チョキボタンが押されたときの処理
    public void ChokiButton()
    {
        enemyManager.Judge();

        switch (enemyManager.enemyHand)
        {
            case 0: 
                judgeText.text = "まけ"; 
                break;
            case 1: 
                judgeText.text = "あいこ"; 
                break;
            case 2: 
                judgeText.text = "かち"; 
                break;
        }
    }

    // パーボタンが押されたときの処理
    public void PaButton()
    {
        enemyManager.Judge();

        switch (enemyManager.enemyHand)
        {
            case 0: 
                judgeText.text = "かち"; 
                break;
            case 1: 
                judgeText.text = "まけ"; 
                break;
            case 2: 
                judgeText.text = "あいこ"; 
                break;
        }
    }

    // リセットボタンが押されたときの処理
    public void ResetButton() 
    {
        SceneManager.LoadScene("SampleScene"); // シーンをリロード
    }
}

5.2 スクリプトの解説

このスクリプトでは、プレイヤーの選択した手に応じて、敵の手と比較し勝敗を決定 する処理を記述しています。

各処理の説明

  1. enemyManager.Judge() を呼び出す
    • これにより、敵の手がランダムに決定され、スプライトが更新されます。
  2. switch文で勝敗を判定
    • じゃんけんのルールに基づいて、enemyHand の値を確認し、勝敗を決定します。
    • 例えば enemyHand == 0(敵がグー)の場合、プレイヤーが「グー」なら「あいこ」、「チョキ」なら「まけ」、「パー」なら「かち」と表示します。
  3. リセットボタンでシーンを再読み込み
    • SceneManager.LoadScene("SampleScene"); を使って、現在のシーンをリロードし、最初の状態に戻します。

5.3 GameManagerのアタッチ

作成した GameManager スクリプトを空のオブジェクトにアタッチします。

  1. Hierarchyウィンドウで 右クリック → 「Create Empty」で空のオブジェクトを作成
  2. 名前を GameManager に変更
  3. 作成した GameManagerスクリプトドラッグ&ドロップ でアタッチ
  4. Inspectorウィンドウ で以下を設定
    • EnemyManagerEnemyオブジェクトをアタッチ
    • JudgeText → 勝敗を表示するText UIをアタッチ

5.4 各ボタンの設定

最後に、ボタンを押したときに GameManagerの関数 が呼ばれるように設定します。

  1. Hierarchyウィンドウで各ボタンを選択
  2. Inspectorウィンドウの「Button」コンポーネント を確認
  3. 「On Click ()」 に新しいイベントを追加
  4. GameManagerオブジェクトをドラッグしてアタッチ
  5. 関数を選択
    • GuButton(グーボタン)
    • ChokiButton(チョキボタン)
    • PaButton(パーボタン)
    • ResetButton(リセットボタン)

5.5 動作確認

設定が完了したら、ゲームを実行して正しく動作するか確認してみましょう。

ボタンを押すと敵の手がランダムに表示される
勝敗結果が正しく表示される
リセットボタンを押すとシーンがリセットされる


5.6 追加のアイデア

さらにゲームを発展させたい場合は、以下の機能を追加してみるのもおすすめです。

  • スコア表示(勝ち数・負け数をカウント)
  • エフェクト追加(勝ったときにアニメーションを表示)
  • サウンド効果(ボタンを押したときや勝敗が決まったときに音を鳴らす)

まとめ

このステップでは、GameManagerスクリプトを作成し、じゃんけんの勝敗を判定する処理を実装 しました。ボタンのクリックに応じて適切な関数が実行され、結果が画面に表示されるようになりました。

この基本的なじゃんけんゲームをベースに、さまざまな要素を追加して、さらに面白いゲームに発展させてみてください! 🎮




よくある質問(FAQ)

Q
Unityでボタンの画像を変更するにはどうすればいいですか?
A

ボタンの「Image」コンポーネントの「Source Image」を変更することで、オリジナルの画像を設定できます。

Q
敵の手をランダムに決める方法を詳しく知りたいです。
A

UnityEngine.Random.Range(0, 3); を使って、0(グー)、1(チョキ)、2(パー)のいずれかをランダムに選択しています。

Q
勝敗結果をアニメーションで表示することはできますか?
A

Animatorを使用すれば、勝敗のテキストをフェードイン・フェードアウトさせるなどの演出が可能です。

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