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; void Start() { healthScript = transform.parent.GetComponent(); initialScale = healthVisual.transform.localScale; initialPosition = healthVisual.transform.position; targetScale = initialScale; targetPosition = initialPosition; targetActualColor = actualHealthVisual.GetComponent().color; } void Update() { if (healthScript.gameObject.transform.localScale.x <= 0f) { transform.localScale = new Vector3(-1 * Mathf.Abs(transform.localScale.x), transform.localScale.y, transform.localScale.z); } else { transform.localScale = new Vector3(1 * Mathf.Abs(transform.localScale.x), transform.localScale.y, transform.localScale.z); }// float healthRatio = 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.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; } }