Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ UIヘルスバー | ゲームを改良する
Unityでの格闘ゲーム

bookUIヘルスバー

メニューを表示するにはスワイプしてください

Playerクラスには、プレイヤーの現在の体力に基づいてヘルスバーUIを更新するコードが含まれています。これは、UIHealthTransformHealthUIScalestartingHealthUIWidthの3つの変数によって管理されます。以下に、これらの変数がヘルスバーの管理にどのように使用されているかを説明します。

ヘルスバー用スクリプト

// Initialization in Start method
private void Start()
{
    HealthUIScale = UIHealthTransform.sizeDelta;
    startingHealthUIWidth = HealthUIScale.x;
}

// Updating health in GetAttacked method
public void GetAttacked(int damage)
{
    if (isDead) return;
    health -= damage;
    HealthUIScale.x = health * startingHealthUIWidth / 100f;
    UIHealthTransform.sizeDelta = HealthUIScale;
    if (health <= 0)
    {
        isDead = true;
        animator.SetBool("death", true);
        var deathParticle = Instantiate(deathParticles, transform.position, Quaternion.identity);
        deathParticle.Play();
        Destroy(deathParticle.gameObject, 5);
        GameManager.instance.FinishGame();
    }
}

Startメソッドでの初期化

Startメソッド内で、ヘルスバーの初期サイズを取得し、保存します。

private void Start()
{
    // ... other initializations ...
    HealthUIScale = UIHealthTransform.sizeDelta;
    startingHealthUIWidth = HealthUIScale.x;
}

GetAttackedメソッドでのヘルス更新

GetAttackedメソッドは、プレイヤーがダメージを受けた際にヘルスバーUIを更新します。

ヘルスの減少:

health -= damage;

プレイヤーのヘルスが受けたダメージ分減少します。

ヘルスバーのスケール計算:

HealthUIScale.x = health * startingHealthUIWidth / 100f;

解説

このコード行は、プレイヤーの現在のヘルスに基づいてヘルスバーの幅を更新します。仕組みは以下の通りです。

ヘルス: healthはプレイヤーの現在のヘルスを表すfloat型です。0から100の範囲と仮定します。

初期ヘルスバー幅: startingHealthUIWidthは、プレイヤーが全快時のヘルスバーの初期幅を表すfloat型です。

ヘルスバー幅のスケーリング: 目的は、プレイヤーのヘルスが減少するにつれてヘルスバーの幅を比例して減少させることです。 このために、プレイヤーの残りヘルスの割合を計算し、その割合をヘルスバーの初期幅に適用します。

ステップバイステップの計算

残り体力の割合: 現在の体力を100で割り、プレイヤーの残り体力を0から1の値で表現します。例えば、プレイヤーの体力が75の場合、health / 100f0.75 となります。 この計算により、体力値がUI表示に適したパーセンテージ形式に変換されます。

初期幅に割合を適用:

残り体力の割合に体力バーの初期幅を掛けます。例えば、startingHealthUIWidth が200(全幅)で、プレイヤーの体力が75%の場合、新しい体力バーの幅は150ユニットになります(0.75 * 200 = 150)。

この計算を用いることで、体力バーの幅がプレイヤーの現在の体力を動的かつ正確に表現し、プレイヤーに明確な視覚的フィードバックを提供します。

体力バーUIの更新:

UIHealthTransform.sizeDelta = HealthUIScale;

体力バーを表す RectTransform のサイズが更新されます。

プレイヤーの死亡判定:

if (health <= 0)
{
    isDead = true;
    animator.SetBool("death", true);
    var deathParticle = Instantiate(deathParticles, transform.position, Quaternion.identity);
    deathParticle.Play();
    Destroy(deathParticle.gameObject, 5);
    GameManager.instance.FinishGame();
}

体力が0以下になると、プレイヤーは死亡状態となり、死亡アニメーションとパーティクルが再生されます。

ヘルスバーUI機能のまとめ

初期化: ゲーム開始時にヘルスバーの初期サイズを取得。

ヘルスバーの更新: プレイヤーがダメージを受けると体力値が減少し、それに応じてヘルスバーの幅が再計算・更新されます。

プレイヤーの死亡: 体力がゼロになると、プレイヤーは死亡状態となり、死亡アニメーションとパーティクルが再生され、ゲームが終了します。

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  4

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 4.  4
some-alt