Unity3D でヘルスバーを設計およびコーディングする方法

Unity3D でヘルスバーを設計およびコーディングする方法

世界で最も初期のビデオ ゲームのいくつかで先駆けとなった健康は、今日の最も人気のあるタイトルの多くに引き継がれている一般的なメカニズムです。ヘルスは、複雑な戦闘メカニズムを採用し、プレイヤーの進行を作成し、ゲームをより直感的にすることを可能にします。しかし、自分のゲームにヘルス システムを追加するにはどうすればよいでしょうか。

Unity3D を使用すると、2D UI 要素を 3D ゲームに簡単に追加できるため、初めてヘルスバーを探索するのに最適な場所です。

学習内容

表面的には、このプロジェクトは複雑に見えないかもしれません。それでも、有効なヘルス バーを作成するには、いくつかの主要な Unity3D コーディングの概念を理解する必要があります。これは、このプロジェクトを通じて学ぶべきことがたくさんあることを意味します。

  • Unity3D で 2D UI 要素/スプライトを作成する方法。
  • ゲーム オブジェクト コンポーネントをコードで編集する方法。
  • Unity3D でスクリプト間で変数を共有する方法。

ステップ 1: シーンを設定する

ヘルス バーのコーディングを開始する前に、それを適用するプレーヤー モデルを含むシーンが必要です。開始するには、物理​​ベースの Unity3D キャラクター コントローラー ガイドに従って、基本的なコントロールを備えたプレーヤー モデルを作成します。

シーンとプレーヤー モデルが整ったら、UI 要素を追加します。Hierarchy ウィンドウ内を右クリックし、UI > Imageを選択します。これにより、階層内に Canvas 親オブジェクトと Image 子オブジェクトの 2 つの新しい項目が作成されます。子オブジェクトの名前を Healthbar に変更します。インスペクタを使用して、ヘルス バーの幅、高さ、および位置を選択します。

Unity は ui 画像を追加します

ヘルスバーの背景/境界線として機能するように、色を黒に設定した少し大きめの UI 画像を追加できます。階層内のヘルス バーの上にあることを確認して、その後ろに表示されるようにします。

この UI 要素は、ヘルス バーの基盤として機能しますが、それをアニメーション化するにはスプライトも必要です。[プロジェクト] ペインに移動し、右クリックして [作成] > [ 2D ] > [スプライト] > [正方形] を選択します。

Unity 新しいスプライトを追加

階層から Healthbar を選択し、作成したばかりのスプライトをインスペクタ内のソース イメージ選択ボックスにドラッグします。画像の種類を塗りつぶし、塗りつぶし方法を水平、塗りつぶしの原点を左に変更することもできます。ここで、ゲームを実行してFill Amountスライダーを使用すると、ヘルス バーが縮小および拡大するのを確認できます。

スプライトをオブジェクト コンポーネントとして追加する

ステップ 2: ヘルス変数を追加する

状態を指示するヘルス変数を配置せずにヘルス バーを作成しても、あまり意味がありません。他のスクリプトはこの変数にアクセスできる必要があり、中心的な場所に配置することは理にかなっています。これをパブリック フロートとして Character Control スクリプトに追加します。

public float playerHealth = 1.0f;

この変数に float を使用すると、0 から 100 までの任意のパーセンテージを簡単に表すことができ、ヘルス バー UI 画像の Fill Amount 変数と一致します。たとえば、0.5f の playerHealth は、ヘルス バーの幅の 50% です。

ステップ 3: Unity のスクリプト間で変数を共有する

変数は通常、独自の関数およびスクリプト内で動作します。これにより、操作する変数の場所をコードに指示する手順を実行しない限り、他の関数やスクリプトからアクセスできなくなります。

まず、Health という名前の新しいスクリプト ファイルを作成して、コードを格納します。このスクリプトを、最初の手順で作成した Healthbar UI 要素にドラッグ アンド ドロップできます。次のコードは、void Update() 関数に入ります。

このプロセスは、変数を所有するゲーム オブジェクトを見つけることから始まります。この場合、Character_Model オブジェクトです。

GameObject Character_Model = GameObject.Find("Character_Model");

次に、操作する必要のある変数を含むスクリプト コンポーネントを見つけます。

Character_Control character_Control = Character_Model.GetComponent();

最後に、探している特定の変数を抽出できます。この場合は、キャラクター コントローラーに追加した playerHealth 変数です。これを currentHealth という現在のスクリプト内の float 変数に割り当てます。

currentHealth = character_Control.playerHealth;

必要な変数を取得するのに数行のコードしか必要とせず、プレーヤーのヘルスにアクセスする必要があるときはいつでもこのメソッドを適用できます。完了すると、コードは次のようになります。

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

public class Health: MonoBehaviour
{
    public float currentHealth;

    void Start()
    {
    }

    void Update()
    {
        GameObject Character_Model = GameObject.Find("Character_Model");
        Character_Control character_Control = Character_Model.GetComponent();
        currentHealth = character_Control.playerHealth;
    }
}

ステップ 4: UI Health Bar ゲーム オブジェクトをプログラムする

ヘルス バー UI 要素を作成し、プレーヤーのヘルス変数にアクセスできるようになったので、これらを連携させます。まず、ヘルス バーの画像コンポーネントを含むプライベートな静的変数を追加します。

private static Image Healthbar;

次に、1 回だけ実行される void Start() 関数内で、この変数に画像コンポーネントを割り当てることができます。

Healthbar = GetComponent();

すべての変数が配置されたので、前の手順のコードを使用して、ヘルス バー UI オブジェクトの塗りつぶし幅を設定できます。ここで変換を実行する必要はありません。プレイヤーのヘルスとヘルス バーの塗りつぶし量は両方とも float 変数です。

Healthbar.fillAmount = currentHealth;

このコードを配置すると、Character_Control コードで見つかったヘルス変数に基づいて、ヘルス バーが上下します。ただし、これは少し退屈です。間違いなく、いくつかの色を使用できます。

まず、新しい色を追加して、プレイヤーの体力が多いときにヘルス バーを明るい緑色にします。

Color greenHealth = new Color(0.6f, 1, 0.6f, 1);

次に、if ステートメントを追加して、プレイヤーのヘルスが 0.3f を超えているかどうか、つまり 30% 以上かどうかを確認します。0.3f よりも高い場合は、追加したばかりの色と一致するようにヘルス バーを設定します。0.3f 未満の場合は、ヘルス バーを赤くします。

if (currentHealth >= 0.3f) {
    Healthbar.color = greenHealth;
} else {
    Healthbar.color = Color.red;
}

ステップ 5: コードのテスト

以下の完全なコードからわかるように、このプロジェクトはすべてをまとめると非常に単純です。もちろん、コードをテストする方法が必要です。

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

public class Health: MonoBehaviour
{
    private static Image Healthbar;
    public float currentHealth;

    void Start()
    {
        Healthbar = GetComponent();
    }

    void Update()
    {
        GameObject Character_Model = GameObject.Find("Character_Model");
        Character_Control character_Control = Character_Model.GetComponent();
        currentHealth = character_Control.playerHealth;
        Healthbar.fillAmount = currentHealth;

        Color greenHealth = new Color(0.6f, 1, 0.6f, 1);

        if (currentHealth >= 0.3f) {
            Healthbar.color = greenHealth;
        } else {
           Healthbar.color = Color.red;
       }
    }
}

Character_Control スクリプトに 1 行のコードを追加して、テストを可能にすることができます。プレイヤーが W キーを押して前進するたびに、少量のヘルスを取り除きます。同じ結果を得るために、playerHealth 変数にアクセスできる任意のスクリプトに同じコードを追加できます。

playerHealth -= 0.001f;

Unity プロジェクトに独自のアセットを追加することも検討できます。ウェブ上で無料の Unity アセットを見つけることができるため、お金をかけずにプロジェクトを盛り上げることができます。

Unity3D でヘルスバーを作成する

キャラクターのヘルス バーが設定されたので、ゲームは形になり始めています。やるべきことはまだたくさんありますが、実際に進歩を遂げるために必要ないくつかの重要なスキルを身につけているはずです。もちろん、より多くのガイドを読んでも損はありません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です