【第8回】超入門!Unityで2D脱出ゲームを作ろう!「アイテムの入手編」

第8回アイテムの入手編
ゆくすぃ

ごきげんよう、Budding Lab.編集部のゆくすぃです!
「MONSTER HUNTER WILDS」が盛り上がっていますね。
今回もオトモアイルーが反則的に可愛いです!

ゲームが大好きな皆さんなら、一度は「自分でゲームを作ってみたい!」と、思ったことがあるのではないでしょうか?

本連載では、ゲーム開発初心者のゆくすぃが、基礎的なスクリプトだけを使って、超入門・2D脱出ゲームの作り方を解説します!

本記事は、第8回「アイテムの入手編」です。

プログラミングの専門知識がなくたって、画像や音楽作成アプリが使えなくたって、案外、ゲームって作れるものです。興味が湧いたなら、ぜひ挑戦してみてください!

目次

ゲーム開始時の画面を作る

現時点では、Unity上に配置されたお菓子(Candy1 – 6)や脱出口(Exit)がすべて表示された状態です。まずは、ゲーム開始時の画面になるよう、お菓子や脱出口の表示・非表示を整えましょう。

ゲーム開始時に表示されているもの

  • Room1のCandy1
  • Room2のCandy2
  • Room3のCandy3

ゲーム開始時に非表示のもの

  • Room1のExit
  • InventoryのCandy4, Candy5, Candy6

Hierarchyウインドウで非表示にしたいゲームオブジェクトを選択し、Inspectorウインドウにあるゲームオブジェクト名左横のチェックボックスを外します。

画像を非表示にする

これだけで表示・非表示を切り替えることができます。
非表示にする必要のあるゲームオブジェクトすべてで、このチェックボックスを外してください。

ゲーム開始時の画面

ゲーム開始時の画面

アイテム入手の表現方法

画面上でクリックされたアイテムが消えて、アイテム欄にアイテムが入る・・・これがアイテム入手の一連の動きです。これを基礎的なスクリプトで行うには、どうすれば良いでしょう?

  1. クリックされたアイテムを非表示にする
  2. アイテム欄のアイテムを表示させる

このように、アイテムの表示・非表示を切り替えるだけで、あたかも、画面上のアイテムを入手して、アイテム欄に取り込んだように見せることができます。

アイテムの入手表現

アイテムの表示・非表示を制御する

スクリプトを書く

早速、アイテムの入手・・・もとい、アイテムの表示・非表示を制御するスクリプトを書いていきます

まず、ProjectウインドウのScriptsフォルダの中に「C# Script」を新規作成し、名前を入力して確定します。ここでは「ItemController」としました。

1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4
5 public class ItemController : MonoBehaviour
6 {
7     [SerializeField] private GameObject _getitem; // GameObject型の変数_getitemを定義
8    
9     public void ItemShow()
10    {
11        _getitem.SetActive(true);
12    }
13
14    public void ItemHide()
15    {
16        this.gameObject.SetActive(false);
17        ItemShow();
18    }
19 }

7行目で「GameObject変数:_getitem」を定義しています。
これにより、Inspectorウインドウの「変数:_getitem」で、表示・非表示を制御したいゲームオブジェクトを指定できるようになります。

9行目から12行目の「ItemShowメソッド」で「変数:_getitem」に指定したゲームオブジェクトを表示しています。SetActive関数の引数に「true」を与えると、ゲームオブジェクトは表示した状態(アクティブな状態)になります

14行目から18行目の「ItemHideメソッド」で、このスクリプトがアタッチされているゲームオブジェクト(this.gameObject)を非表示にしています。SetActive関数の引数に「false」を与えると、ゲームオブジェクトは非表示(非アクティブな状態)になります
さらに「ItemShowメソッド」を呼び出して「変数:_getitem」に指定したゲームオブジェクトを表示しています。

スクリプトをアタッチする

Room1に配置したCandy1を例に説明します。

Candy1入手の流れ
  1. Room1のCandy1をクリックする
    → Candy1を非表示にする
  2. 入手したCandy1がInventoryに入る
    → InventoryのCandy5が表示される

※Candy1はCandy5と、Candy2はCandy4と、Candy3はCandy6と対応させている。

HierarchyウインドウでCandy1を選択し、Inspectorウインドウで「Add Component」から「スクリプト:ItemController」をアタッチします。すると「変数:GetItem」を指定できるようになるので「Candy5」を参照させます。

CandyにItemControllerをアタッチする

OnClickイベントの「+(Add to the list)」をクリックし「None(Object)」にHierarchyウインドウのCandy1をドラッグ&ドロップします。「NoFunction」のドロップダウンメニューから「ItemController >ItemHide」を選んでクリックします。

OnClickイベントにItemHideメソッドを指定する

このように設定することで「ItemHideメソッド」により「Candy1を非表示 / Candy5を表示」という処理が一度に行われ、Candy1を取得することができます。

設定ができたら、再生モードにして動作確認してみましょう。
同様に、Room2に配置されたCandy2、Room3に配置されたCandy3についても設定してください。

ゆくすぃ

以上で、アイテム入手の表現はバッチリです!
意外と簡単で拍子抜けしたのではないでしょうか?
でき得る限りシンプルな方法でやりたいことを実現する・・・これがとても大切なんです!

まとめ

今回の記事では、アイテムの入手について解説しました。
脱出ゲームにおいて「アイテムの入手」は特に重要なイベントの一つですが、実現方法はとてもシンプルでした。
一見、込み入っていそうな現象を、実現可能なものに分解して捉えることが、ゲーム開発では大切ですし、常に求められる視点だと感じています。

次回は、【第9回】超入門!Unityで2D脱出ゲームを作ろう!「クリア判定編」です。

以上、最後まで読んでいただき有難うございました!

よかったらシェアしてね!
  • URLをコピーしました!
目次