using UnityEngine; using UnityEngine.UI; namespace Aula11 { /// Mostra a carga como a largura de uma barra, encolhendo em direção ao pivô. public class IndicadorBateria : MonoBehaviour { [Header("Referências")] [SerializeField] private Bateria bateria; [Tooltip("Imagem da carga, com o pivô na borda esquerda (Pivot X = 0).")] [SerializeField] private Image preenchimento; [Header("Cores")] [SerializeField] private Color corNormal = new Color(0.35f, 0.9f, 1f); [SerializeField] private Color corAlerta = new Color(1f, 0.3f, 0.25f); [Tooltip("Cor da barra enquanto a bateria ainda não foi ligada.")] [SerializeField] private Color corDesligada = new Color(0.5f, 0.52f, 0.62f); [Tooltip("Abaixo desta fração da capacidade, a barra fica com a cor de alerta.")] [Range(0f, 1f)] [SerializeField] private float limiarAlerta = 0.25f; private void Update() { if (bateria == null || preenchimento == null) return; float fracao = bateria.Fracao; // Escala em X em torno do pivô: a borda esquerda fica parada, como T(p)·S·T(−p) na Aula 04. preenchimento.rectTransform.localScale = new Vector3(fracao, 1f, 1f); if (!bateria.Ligada) preenchimento.color = corDesligada; else preenchimento.color = fracao < limiarAlerta ? corAlerta : corNormal; } } }