using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; public class TerribleHealthBarScript : MonoBehaviour { public Color fullHealthColor; public Color fullDeathColor; public Color subtractionColor; public GameObject healthVisual; public GameObject actualHealthVisual; public GameObject deathVisual; public float smoothSpeed = 0.1f; public TextMeshProUGUI text; private Damageable healthScript; private Vector3 initialScale; private Vector3 initialPosition; private Vector3 targetScale; private Vector3 targetPosition; private Color targetActualColor; public GameObject player; void Start() { if (player == null) { return; } healthScript = player.GetComponent(); if (healthScript == null) { return; } Initialize(); } void Update() { if (player == null || healthScript == null) { return; } float healthRatio = (healthScript.maxDamage - healthScript.damage) / healthScript.maxDamage; targetActualColor = Color.Lerp(fullDeathColor, fullHealthColor, healthRatio); targetScale = new Vector3(Mathf.Lerp(0, 1, healthRatio) * initialScale.x, healthVisual.transform.localScale.y, healthVisual.transform.localScale.z); targetPosition = new Vector3(Mathf.Lerp(-0.5f, 0, healthRatio), healthVisual.transform.localPosition.y, healthVisual.transform.localPosition.z); text.text = (healthScript.maxDamage - healthScript.damage).ToString() + "/" + healthScript.maxDamage.ToString(); actualHealthVisual.transform.localScale = targetScale; actualHealthVisual.transform.localPosition = targetPosition; healthVisual.transform.localScale = Vector3.Lerp(healthVisual.transform.localScale, targetScale, smoothSpeed); healthVisual.transform.localPosition = Vector3.Lerp(healthVisual.transform.localPosition, targetPosition, smoothSpeed); actualHealthVisual.GetComponent().color = Color.Lerp(actualHealthVisual.GetComponent().color, targetActualColor, smoothSpeed); deathVisual.GetComponent().color = Color.Lerp(deathVisual.GetComponent().color, targetActualColor * 0.5f, smoothSpeed); healthVisual.GetComponent().color = subtractionColor; } public void SetPlayer(GameObject player) { this.player = player; if (this.player == null) { return; } healthScript = player.GetComponent(); if (healthScript == null) { return; } Initialize(); } private void Initialize() { initialScale = healthVisual.transform.localScale; initialPosition = healthVisual.transform.position; targetScale = initialScale; targetPosition = initialPosition; targetActualColor = actualHealthVisual.GetComponent().color; } }