Unity本の作例改造-Chapter3-4:ボールを連続して発生できないようにする

スポンサーリンク

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


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

スタートボタンをクリックしたらタイトル画面を消去してゲームを開始する

前回作成したタイトル画面のスタートボタンのクリックでタイトル画面の消去とゲームスタートの処理を追加します。

タイトル画面UIオブジェクト”Canvas”にスクリプトを作成して割り当てる

今回はスクリプトコンポーネントをUIオブジェクト”Canvas”に割り当てることにしました。
[Hierarchy]ウィンドウ > Canvasを選択。
[Inspector]ウィンドウ > [Add Component]ボタン > New Script を選択。
下記の通りに設定。
Name: ButtonStart / Language: C Sharp

[Create and Add]ボタンをクリック。[Project]ウィンドウに作成したスクリプト”ButtonStart”が表示されていることを確認します。

スクリプトの編集

スクリプト”ButtonStart”をダブルクリックしてエディターを起動。下記のコードを入力します。
ゲームスタート直後にゲームは一時停止。スタートボタンを押すと一時停止が解除されます。

スクリプト”PanelTitle”の変数”panelTitle”フィールドにタイトル画面のUIオブジェクトを割り当て

[Hierarchy]ウィンドウ > Canvas を選択。
[Inspector]ウィンドウ > ButtonStart (Script) > Panel Titleフィールドの右側にある◎ボタンをクリック。
ファイル選択ウィンドウが開いたら”Panel Title”オブジェクトをダブルクリックで選択して割り当てます。

スタートボタンをクリックしたらスクリプトを実行する設定

[Hierarchy]ウィンドウ > Canvas > Panel Title > Button Start を選択。
[Inspector]ウィンドウ > Button (Script) > On Click () パネル左側のフィールドに[Hierarchy]ウィンドウ > Canvasをドラッグして割り当てます。
On Click () パネル右側の[No Function] > Panel Title > StartScene を選択します。

動作確認

ここまでの内容をWebGLでビルドしてみました。タイトル画面のスタートボタンをクリックするとタイトル画面が非表示になってゲームが開始。ボールが発生します。

ゲームの設定を管理するオブジェクトとスクリプトを作成する

これらか色々とゲーム機能を追加していきますが、あらかじめゲーム機能として必要になるボール残数やスコアなど、各種パラーメータ処理のためにゲーム管理用のスクリプトを用意しておくことにしました。

ゲーム管理オブジェクトの作成

まずはゲーム管理スクリプトを割り当てるオブジェクトをシーンに作成します。
[Hierarchy]ウィンドウ > [Create]ボタン > Create Empty を選択。
オブジェクトを右クリック > Rename を選択。オブジェクト名を”Manager”に変更。
[Inspector]ウィンドウ > Transform の右側にある 歯車アイコンをクリック > Reset を選択。

ゲーム管理スクリプトの作成

[Hierarchy]ウィンドウ > オブジェクト”Manager”を選択。
[Inspector]ウィンドウ > [Add Component]ボタン > New Scriptを選択して下記の通り入力。
Name: Manager / Language: C Sharp
[Create and Add]ボタンをクリック。

ゲーム管理スクリプト”Manager”の編集

作成したスクリプト”Manager”を編集します。ひとまず下記の変数を用意します。

public static int ballCount
ボール残数管理用の変数
public static int score
スコア管理用の変数
public static bool ballExist
シーンにボールが存在するかチェックする変数
public static bool gameTitle
ゲームタイトル画面が表示されているかチェックする変数
public static bool gameOver
ゲームオーバー画面が表示されているかチェックする変数

ボール残数とスコアについては ゲームの難易度や動作調整のために[Inspector]ウィンドウから初期値を入力できるよう、下記の変数を用意しました。

public int initialBallCount
ボール残数の初期値を設定する変数
public int initialScore
スコアの初期値を設定する変数

コードは下記の通りになります。

スクリプトを保存するとオブジェクト”Manager”の[Inspector]ウィンドウは下記の通りになります。

ボールを連続して発生できないようにする

ゲーム管理スクリプト”Manager”が用意できたので、まずはマウスを連続してクリックしてもシーンにボールが存在する場合はボールを発生させないように改造してみましょう。

ボールを発生するスクリプト”Spawner”を変更する

ボールを発生するスクリプト”Spawner”の中でゲーム管理スクリプト”Manager”の変数”ballExist”を呼び出して値を変更します。
[Project]ウィンドウ > スクリプト”Spawner”をダブクリクリックで開き、コードを変更します。下記コードのマーカー行が変更した部分です。

ボールを消去するスクリプト”DestroyBall”を変更する

スクリプト”Spawner”の処理内で変更した変数”Manager.ballExist”の値をボールを消去する時に変更して、再びボールを発生させることができるようにします。
[Project]ウィンドウ > スクリプト”DestroyBall”をダブクリクリックで開き、コードを変更します。下記コードのマーカー行が変更した部分になります。

動作確認

ここまでの内容をWebGLでビルドしてみました。マウス左クリックでボールが発生しますが、ボールが消去されるまでは次のボールを発生させないようにできました。

スポンサーリンク
スポンサーリンク

スポンサーリンク

フォローする