using UnityEngine; namespace BinxForge.CoinRoom { [RequireComponent(typeof(SpriteRenderer))] public sealed class IdleSprite : MonoBehaviour { public Texture2D sheet; public CoinRoom room; private Sprite[] frames; private SpriteRenderer view; private float phase; private void Awake() { view = GetComponent(); if (sheet == null || sheet.width != 160 || sheet.height != 32) { Debug.LogError("Use the included 160x32 five-frame idle sheet.", this); return; } frames = new Sprite[5]; for (int i = 0; i < frames.Length; i++) frames[i] = Sprite.Create(sheet, new Rect(i * 32, 0, 32, 32), new Vector2(0.5f, 0.5f), 32); view.color = Color.white; view.sprite = frames[0]; } private void Update() { if (frames == null || room == null || !room.Active) return; phase = (phase + Time.deltaTime * 10) % frames.Length; view.sprite = frames[(int)phase]; } private void OnDestroy() { if (frames != null) foreach (var frame in frames) if (frame != null) Destroy(frame); } } }