Categories: Unity

Unity本の作例改造-Chapter3-9:タイトル画面が消えてからボールを発生させる

こんにちは!Unityの入門書で通称”ヒヨコ本”として親しまれている”Unity5入門 最新開発環境による簡単3D&2Dゲーム制作 “の作例に色々とゲーム要素を追加してオリジナルゲームに仕上げる内容を連載をしています。


Chapter1:Unityの概要と基礎知識
Chapter2:インターフェイスと使い方
Chapter3:Unityを使ってみよう!
Chapter4:キャラクターを動かしてみよう!
Chapter5:ゲームのUIを作ってみよう!
Chapter6:ゲームを作ろう!(1)
Chapter7:ゲームを作ろう!(2)
Chapter8:2D機能を使ってみよう!

リトライボタンをクリックしたらゲームオーバー画面を非表示する

前回は”リトライボタンをクリックしたらゲームをリセットする“というのを行いました。今回はタイトル画面でスタートボタンをクリックすると同時にボールが発生しているのを修正し、タイトル画面が非表示になってからもう一度クリックしたらボールが発生するように改造します。

スクリプト”Spawner”を編集する

ボールを発生させる条件にタイトル画面表示の判定を追加します。
スクリプト”Spawner”をダブルクリックしてエディターを起動。下記のコードのマーカー部分が修正箇所になります。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Spawner : MonoBehaviour
{
    // シーンに発生させるオブジェクトを格納する変数"prefab"を宣言
    public GameObject prefab;

    // ゲーム実行中の繰り返し処理
    void Update()
    {
        // マウス左クリック(ボタン"Fire1")したとき
        if (Input.GetButtonDown("Fire1")
            // シーンにボールが存在しなければ
            // (スクリプト"Manager"の変数"ballExist"の値を参照)
            && !Manager.ballExist
            // ゲームオーバー画面が表示されていなければ
            // (スクリプト"Manager"の変数"gameOver"の値を参照)
            && !Manager.gameOver
            // ゲームタイトル画面が表示されていなければ
            // (スクリプト"Manager"の変数"gameTitle"の値を参照)
            && !Manager.gameTitle
            )
        {
            // 変数"prefab"に格納されたプレハブをシーンに発生させる
            Instantiate(prefab, transform.position, transform.rotation);
            // シーンにボールが存在するかチェックする変数を"true"にする
            // (スクリプト"Manager"の変数"ballExist"の値を変更)
            Manager.ballExist = true;
            // ボールの残数を管理する変数の値を減らす
            // (スクリプト"Manager"の変数"ballCount"の値を変更)
            Manager.ballCount--;
        }
    }
}

動作確認

スクリプトを保存したら再生して動作確認してみます。タイトル画面でスタートボタンをクリックするとタイトル画面が非表示になり、ボール残数が初期値のままであればOKです。いまはマウスクリックしても変数”gameTitle”の値が”true”なのでボールを発生することができません。

スクリプト”PanelTitle”を編集する

では、タイトル画面を制御するスクリプト”PanelTitle”を編集してボールを発生できるようにしましょう。
スクリプト”PanelTitle”をダブルクリックしてエディターを起動。下記のコードのマーカー部分が修正箇所になります。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PanelTitle : MonoBehaviour
{
    // タイトル画面UIオブジェクトを格納する変数
    public GameObject panelTitle;

    // ゲームの初期処理
    void Start()
    {
        // ゲーム時間の進行速度を"0"に設定して一時停止
        Time.timeScale = 0;
    }

    // ボタンをクリックした時に実行する処理
    public void StartScene()
    {
        // ゲーム時間の進行速度を"1"に設定して再生する
        Time.timeScale = 1.0f;
        // タイトル画面を非表示にする
        panelTitle.SetActive(false);
        // タイトル画面が表示されているかチェックする変数の値を変更
        // (スクリプト"Manager"の変数"gameTitle"の値を変更)
        Manager.gameTitle = false;
    }
}

動作確認

ここまでの内容をWebGLでビルドしてみました。スタートボタンクリックでタイトル画面が非表示になり、もう一度マウスクリックするとボールが発生できるようになりました。

corevale