using System; using UnityEngine; using UnityEngine.Serialization; namespace BlueWater.Tycoons { public abstract class LiquidIngredient : MonoBehaviour { [FormerlySerializedAs("_spriteRenderer")] [SerializeField] protected SpriteRenderer SpriteRenderer; [FormerlySerializedAs("_rigidbody2D")] [SerializeField] protected Rigidbody2D Rigidbody2D; [SerializeField, Range(0f, 2f)] protected float _distanceThreshold = 0.5f; protected bool CanInteraction; protected Collider2D TargetCollider; public static event Action OnReachedTarget; private void Update() { if (!TargetCollider || !CanInteraction) return; var closestPoint = TargetCollider.ClosestPoint(transform.position); var distance = Vector2.Distance(transform.position, closestPoint); if (distance < _distanceThreshold) { OnReachedTarget?.Invoke(); ReachedObject(); } } public abstract void ReachedObject(); } }