using UnityEngine; // 取得した相手のHPを回復し、使用後はプールへ戻る public class HealItem : MonoBehaviour { [Tooltip("取得した相手を回復する量")] [SerializeField] private int healAmount = 3; private HealItemPool _pool; private bool _isCollected; // このアイテムを管理するプールを記録する public void Initialize(HealItemPool pool) { _pool = pool; } // プールから貸し出される前に取得可能な状態へ戻す public void PrepareForSpawn() { _isCollected = false; } public bool TryCollect(ItemCollector collector) { if (_isCollected) return false; // 回復先は、取得した相手のItemCollectorから受け取る var receiver = collector.DamageReceiver; // 死亡中やHPが満タンの場合は取得しない if (receiver.IsDead || receiver.CurrentHealth >= receiver.MaxHealth) return false; _isCollected = true; receiver.ReceiveHeal(healAmount); // Destroyせず、管理元のプールへ返す _pool.Release(this); return true; } }