ゲーム制作   Unity ソフトウエア 

Unity ソフトウエアでゲーム制作#1モグラたたき編(21.ライフや残機をハートで増減するアレ)

キャッチ画像モグラたたきライフや残機をハートで増減するアレ

本投稿は2024年9月時点の内容になります。アップデートにより変更となる場合があります。また環境によって違いがあると思いますのであくまで参考として、ご了承ください。

様々な書籍、ブログや動画を参考にさせていただきました。多すぎて一つ一つはtお紹介できませんが感謝です。

初心者の自分がUnity ソフトウエアでゲームを作ってみました。とりあえずシンプルなものということでモグラたたきに挑戦です。ゲーム作ってみるかという感じになったときに、いいタイミングで某ゲームのイベントシナリオ内ミニゲームにモグラたたきが実装されていたのでUIとかエフェクトとか、諸々の仕様をぱくって参考にして作ってみましたよ。様々なHowToの中の選択肢のひとつとして、同じ初心者さんの参考になればよいです。

\ チェック /

プレイヤーのライフや残機をアイコン(ハートとかキャラクターとか)で増減するアレを作成します。

引き続きUIを実装していきます。今回はプレイヤーのライフや残機をハートで増減するアレを作成します。

難しそうに見えますが簡単です!

UI実装解説「19.TextMeshPro編」もチェックしてみてください。

本記事のポイント

  • プレイヤーのライフや残機をアイコン(ハートとかキャラクターとか)で増減するアレを作成
  • ついでにUIでこのオブジェクトをきれいに整列させる方法も解説
  • コンポーネントのアクティブ/非アクティブを「enabled」を使ってスクリプトから制御する

残機表示作っていきます。

画像(ハート)を用意します

ドット絵お絵かきアプリとかで作ってもいいですが、今回はフリーのアセット「Heart in pixel」のハート画像を使わせてもらいました。

※フリーアセットを使う場合必ずバックアップを取っておきましょう。簡単なバックアップ方法はこちらを参考にしてみて下さい。

ゲームオブジェクトとスクリプトの準備

残機表示の実装例(その1オブジェクトの設置)

  1. ヒエラルキー上で、Canvas「UI」の子に「空のオブジェクトを作成」。作成された空のオブジェクトに任意の名前を付けます。今回は「PlayerLifeUI」としました
  2. インスペクターでアンカープリセットでアンカーとピボットを「Left,Top」に設定してX「-160」 Y「-100」、幅「180」、高さ「80」としました。
  3. 同名のスクリプトを作成して「PlayerLifeUI」にアタッチします。
  4. 「PlayerLifeUI」の子にハート画像を置きます。「PlayerLifeUI」で右クリック>「UI」>「画像」をクリック。名前は「Heart1」にしました。
  5. インスペクターで「Image」の「ソース画像」に使いたいハートの画像をドラッグしてアサインします。大きさを調整します。今回は幅「50」、高さを「50」にしました。
  6. 「Heart1」を複製して「Heart2」、「Heart3」を作ります。
  7. 複製しただけなので3つのハートの画像が重なってると思います。これをきれいに配置する方法を紹介します。

UIの子要素をきれいに並べる方法

UIを作ってるとボタンや画像などをきれいに並べたいときが結構あります。

インスペクターで位置を揃える方法もありますが、大変ですよね。

実は親の要素にコンポーネントを追加するだけで並べることができます。

残機表示の実装例(その2UIの子要素をきれいに並べる方法)

  1. 親のオブジェクトに「xxxLayoutGroupコンポーネントを追加します。
  2. グリッド状に並べたいときは「GridLayoutGroup」、に並べたいときは「VerticalLayoutGroup」、に並べたいときは「HorizontalLayoutGroup」を追加します。
  3. 今回は横に並べたいので「HorizontalLayoutGroup」コンポーネントを追加しました。
  4. 「子を整列」を「Middle,Center」に設定しました。
  5. 親オブジェクトの「PlayerLevelUI」内にきれいにハートに画像が並んだと思います。

あとはハートの画像の「Image」コンポーネントのアクティブ/非アクティブをスクリプトから実行します。

コンポーネントのアクティブ/非アクティブを「enabled」を使ってスクリプトから制御する

残機表示の実装例(その3コンポーネントのアクティブ/非アクティブをスクリプトから制御する)

  1. スクリプトは以下のようにします。
class PlayerLifeUI
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//UIを扱うためのnamespace
using UnityEngine.UI;

public class PlayerLifeUI : MonoBehaviour
{
    //PlayerとハートのImageを取得
    [SerializeField] Player Player;
    [SerializeField] Image Heart1;
    [SerializeField] Image Heart2;
    [SerializeField] Image Heart3;

    public void updatePlayerLife(int life)
    {
        //Imageのメンバ変数「enabled」を使って、lifeの大きさによってアクティブ/非アクティブにする
        switch (life)
        {
            case 0:
                Heart1.enabled = false;
                Heart2.enabled = false;
                Heart3.enabled = false;
            break;

            case 1:
                Heart1.enabled = true;
                Heart2.enabled = false;
                Heart3.enabled = false;
            break;

            case 2:
                Heart1.enabled = true;
                Heart2.enabled = true;
                Heart3.enabled = false;
            break;

            case 3:
                Heart1.enabled = true;
                Heart2.enabled = true;
                Heart3.enabled = true;
            break;

            default:
                throw new ArgumentOutOfRangeException
    (nameof(life), life, $"PlayerLifeUIにて予期せぬステート{life}が指定されました");
            
        }

    }

    // Update is called once per frame
    void Update()
    {
        updatePlayerLife(Player.PlayerStatus.CurrentHp);
    }
}

スクリプトざっくり解説

  • (5)UIを使うためのnamespaceの宣言
  • (15-51)Imageの「enabled」変数を使ってlifeの大きさでハートをアクティブをOnOffする。if文でやってもOK
  • PlayerとHeart1,2,3にそれぞれのオブジェクトをアサイン

ゲーム再生します。何もしないとUnitychanがかくれる度にハートが減るはずです。

どうですか?かなり簡単だったと思います。

まとめ

まとめ

  • コンポーネントはメンバ変数「enabled」でアクティブをOnOffできる。
  • 子要素をきれいに整列させるには親のオブジェクトに各種「LayoutGroup」コンポーネントをつけると簡単便利
ユニティちゃん公式ホームページへ
ユニティちゃん公式ホームページ
ユニティちゃんライセンス
ユニティちゃんの画像、素材、ライセンスロゴはユニティちゃんライセンス条項を元に使用しています

\ 初学に使った書籍です /

動画×解説でかんたん理解! Unityゲームプログラミング超入門

大角 茂之/大角 美緒

マケイヌ的おすすめ度

わかりやすい度

提供素材がよくてテンション上がる度

〇おすすめポイント

素材が良くてモチベがあがります。

×よくないポイント

動画解説前提なので図版が小さいのが玉に瑕

おすすめ記事

 

プロフィール

マケイヌ

人生のメインストリームから外れた40代の♂。

90年代オルタナにはまり、文字通りメインストリームから逸脱。 その後もたびたび人生から逃亡。

心が動いた作品の紹介や 自分のちいさな経験、HowToを発信できればと日々模索中。

1年後までにイラストと写真のポートフォリオをつくりたい。

記:2019年12月

▼プロフィールはこちら

Follow me

アーカイヴ