UIヘルスバー
メニューを表示するにはスワイプしてください
Playerクラスには、プレイヤーの現在の体力に基づいてヘルスバーUIを更新するコードが含まれています。これは、UIHealthTransform、HealthUIScale、startingHealthUIWidthの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 / 100f は 0.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機能のまとめ
初期化: ゲーム開始時にヘルスバーの初期サイズを取得。
ヘルスバーの更新: プレイヤーがダメージを受けると体力値が減少し、それに応じてヘルスバーの幅が再計算・更新されます。
プレイヤーの死亡: 体力がゼロになると、プレイヤーは死亡状態となり、死亡アニメーションとパーティクルが再生され、ゲームが終了します。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください