UI Health Bar
The Player class includes code to update the health bar UI based on the player's current health. This is managed through three variables: UIHealthTransform
, HealthUIScale
, and startingHealthUIWidth
. Below is an explanation of how these variables are used to manage the health bar.
Script for Health Bar
csharp// Initialization in Start methodprivate void Start(){HealthUIScale = UIHealthTransform.sizeDelta;startingHealthUIWidth = HealthUIScale.x;}// Updating health in GetAttacked methodpublic 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();}}
Initialization in Start Method
In the Start
method, the initial size of the health bar is captured and stored.
csharpprivate void Start(){// ... other initializations ...HealthUIScale = UIHealthTransform.sizeDelta;startingHealthUIWidth = HealthUIScale.x;}
Health Update in GetAttacked Method
The GetAttacked
method updates the health bar UI whenever the player takes damage.
Health Reduction:
csharphealth -= damage;
The player's health is reduced by the amount of damage taken.
Health Bar Scale Calculation:
csharpHealthUIScale.x = health * startingHealthUIWidth / 100f;
Explanation
This line of code updates the width of the health bar based on the player's current health. Here’s how it works:
Health:
health
is a float representing the player's current health. Let's assume it ranges from 0 to 100.
Starting Health Bar Width:
startingHealthUIWidth
is a float representing the initial width of the health bar when the player has full health.
Scaling the Health Bar Width: The goal is to proportionally reduce the width of the health bar as the player's health decreases; To achieve this, you need to calculate what percentage of the player's health remains and then apply that percentage to the initial width of the health bar.
Step-by-Step Calculation
Percentage of Health Remaining:
Divide the current health by 100 to obtain a value between 0 and 1 representing the percentage of the player's health remaining. For instance, if the player's health is 75, health / 100f
would yield 0.75
.
This calculation translates the health value into a percentage format suitable for UI representation.
Apply Percentage to Initial Width:
Multiply the percentage of health remaining by the initial width of the health bar. For example, if the startingHealthUIWidth
is 200 (the full width), and the player's health is 75%, the new width of the health bar would be 150 units (0.75 * 200 = 150
).
By using this calculation, the health bar's width dynamically and accurately represents the player's current health, providing clear visual feedback to the player.
Update Health Bar UI:
csharpUIHealthTransform.sizeDelta = HealthUIScale;
The size of the RectTransform
representing the health bar is updated.
Check for Player Death:
csharpif (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();}
If the health drops to 0 or below, the player is marked as dead, and the death animation and particles are triggered.
Summary of Health Bar UI Functionality
Initialization: The initial size of the health bar is captured at the start.
Updating Health Bar: When the player takes damage, the health value is decreased, and the width of the health bar is recalculated and updated accordingly.
Player Death: If health reaches zero, the player is marked as dead, triggering the death animation and particles, and finishing the game.
Tack för dina kommentarer!