сделай общий класс Item и наследуй печеньки и стаканы от него и уничтожай при юзе
public abstract class Item : MonoBehaviour
{
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.layer == 6)//тут введи номер слоя игрока
{
UseItem();
}
}
protected abstract void UseItem();
private void OnDestroy()
{
transform.parent.GetComponent<Spawner>().OnItemUse?.Invoke();
}
}
public class Spawner : MonoBehaviour
{
[SerializeField] private float spawnDelay = 2f;
[SerializeField] private GameObject[] items;
private float lastSpawn;
public Action OnItemUse;
private int lastItemIndex = -1;
private void Start()
{
var index = UnityEngine.Random.Range(0, items.Length);
SpawnItem(index);
OnItemUse += delegate { StartCoroutine(SpawnItemCoroutine()); };
}
private IEnumerator SpawnItemCoroutine()
{
int index = 0;
while (index != lastItemIndex)
{
index = UnityEngine.Random.Range(0, items.Length);
}
if (lastSpawn + spawnDelay > Time.time)
{
float waitTime = Time.time - lastSpawn + spawnDelay;
yield return new WaitForSeconds(waitTime);
}
SpawnItem(index);
}
private void SpawnItem(int index)
{
Instantiate(items[index], transform);
lastSpawn = Time.time;
}
private void OnDestroy()
{
OnItemUse = null;
}
}
public class Cookie : Item
{
protected override void UseItem()
{
//твой код
Destroy(gameObject);
}
}
не проверял, но по идее должно работать