CapersProject/Assets/02.Scripts/Liquid.cs

47 lines
1.3 KiB
C#
Raw Normal View History

2024-08-14 10:52:35 +00:00
using UnityEngine;
using UnityEngine.Pool;
namespace BlueWater
{
public class Liquid : MonoBehaviour
{
[SerializeField]
private SpriteRenderer _spriteRenderer;
2024-08-19 08:14:35 +00:00
[SerializeField, Range(0f, 2f)]
private float _distanceThreshold = 0.5f;
2024-08-14 10:52:35 +00:00
private IObjectPool<Liquid> _managedPool;
2024-08-19 08:14:35 +00:00
private LiquidController _liquidController;
private Collider2D _targetCollider;
2024-08-14 10:52:35 +00:00
public void SetManagedPool(IObjectPool<Liquid> pool) => _managedPool = pool;
public void Destroy() => _managedPool.Release(this);
2024-08-19 08:14:35 +00:00
public void Initialize(LiquidController liquidController, Collider2D targetCollider, Color color)
{
_liquidController = liquidController;
_targetCollider = targetCollider;
_spriteRenderer.color = color;
}
private void Update()
{
if (!_targetCollider) return;
var closestPoint = _targetCollider.ClosestPoint(transform.position);
var distance = Vector2.Distance(transform.position, closestPoint);
if (distance < _distanceThreshold)
{
OnReached();
}
}
private void OnReached()
{
Destroy();
_liquidController.OnLiquidReached();
}
2024-08-14 10:52:35 +00:00
}
}