Udemy学習記録 Unity2D脱出ゲーム開発入門(5日目)

えにあです

島津さんのUnity2D脱出ゲーム開発入門をやっていきます。 前回は46までやりましたので、No47~進めていきます。 今回からセクション7: 脱出ゲームテクニック集:アイテムギミック編に入ります。

No.47 はじめに

鍵を手に入れたら宝箱を開けられる、といったギミックを作っていくよ、という話

No.48 はじめに&ギミック(たぬき)の配置

アイテムボックスの配置

  ItemCaseという画像ファイルの名前をItemBoxに変更 Canvasを右クリック -> UI -> Imageでオブジェクトを追加 オブジェクトの名前もItemBoxにする。

ItemBoxのSourceImageに画像ファイルを設定。 SetNativeSizeする。

ItemBoxを画面の一番下に配置する。 f:id:enia:20210902130441p:plain

アイテムボックスは全画面で共通なので、Panel0やらPanel1やらではなく、PanelParentの下に置いてるんだな。

たぬきの配置

Panel1を右クリック -> UI => Image Tanukiに名前を変更

SourceImageにTanuki01を設定。Set Native Size。 Pixels Per Unitを138にするの忘れずに。

穴を隠すようにタヌキを配置する。 f:id:enia:20210902130321p:plain

葉っぱの追加

Panel0を右クリック -> UI -> Image Leafに名前を変更

SourceImageにLeafを設定。Set Native Size。 Pixels Per Unitを138にするの忘れずに。

とやってみったら、動画の葉っぱより全然でかい。 Width140 Height 144に手動で設定するほうが良い。 葉っぱをいい感じの位置に配置する。

f:id:enia:20210902130400p:plain

No.49 ギミック(たぬき)の簡易実装

タヌキをクリックしたときに、Playerが葉っぱを持っていたらタヌキが消えるようにする

簡易スクリプト作成

プロジェクトウィンドウで、Scritpsの下にTanukiを追加。

public class Tanuki : MonoBehaviour
{
    public void OnThis()
    {
        bool hasItem = true;
        if(hasItem) {
            gameObject.SetActive(false);
        }
    }
}

この時点ではhasItemの実装はできていない。

オブジェジェクトの関連付け

TanukiスクリプトをTanukiオブジェクトに関連付ける

Tanukiオブジェクトにボタンコンポーネントを追加

TanukiのOnClick時に、上述のOnThisを呼び出すようにする。

試してみると、確かに葉っぱが消える。

No.50 アイテム(Leaf)の実装

前回まででは葉っぱを持っていなくてもタヌキを押したら消えちゃう。 ここでは葉っぱを取得する処理の簡易実装をしてみる。

葉っぱをクリックしたら非表示にする

プロジェクトウィンドウでScritpsの下にItemスクリプトを追加

public class Item : MonoBehaviour
{
    public void OnThis()
    {
        gameObject.SetActive(false);
    }
}

関連付け

いつもの繰り返し

LeafにItemスクリプトドラッグアンドドロップ LeafにAdd Component -> Button Onlickで上述のOnThisを呼び出す

まだ簡易実装なので、アイテムボックスに移動させないといけない。

No51. アイテムBoxの簡易実装

葉っぱをクリックされたらアイテムボックスに追加されるようにしていく

ItemBoxの下にイメージ作成

ヒエラルキでItemBoxを右クリック => Image Box0に名前を変更。 コピーしてBox0~5を作る。

以下の画像のように、いい感じの位置に配置する。 f:id:enia:20210902140438p:plain

全部手作業での配置なので修正入るとめんどくさそうなやり方ではある。 しかし、一番シンプルな方法。

アイテムを取得したら、このボックスに追加されるようにしていくようだ。

Box0のSourceImageにLeafを設定する

Box0~4のどの位置に、どのアイテムが来るかは固定の様子。 Box0 = Leaf としておくことで、Leafを取得したらBox0をActiveにするだけでよくなる。

 スクリプト作成

ItemBoxスクリプトを作成する ボックスを格納する配列を作る

public class ItemBox : MonoBehaviour
{
    public GameObject[] boxes;
}

関連付け

ItemBoxにItemBoxスクリプトを割り当てる。 BoxesのSizeを5にすると、以下のようにオブジェクトの設定画面が表示される。 f:id:enia:20210902141232p:plain

こんな感じで割り当ててあげればOK f:id:enia:20210902141330p:plain

おわりに

今回はNo51まで終わらせました