Как в юнити создать объект если касаются 2 других?

Хочу сделать игру, но столкнулся с проблемой. У меня есть код который создает яйцо из префаба. Префаб яйца имеет коллайдер и тег "Egg". Я хочу создать код, который будет узнавать касаются ли 2 яйца. И если они касаются, то они должны исчезнуть а на ихнем месте должен появится ОДИН другой объект. Проблема в, том что если я создам простой код, который будет проверять касание и повешу его на префаб с яйцом, то когда они соприкоснутся от каждого из яиц будет по одному новому объекту. Потому что на префабе яйца есть этот код и он будет срабатывать одновременно на двух яйцах сразу. Вопрос: как сделать чтобы был к примеру один код на пустом объекте, который узнавал касаются ли 2 яйца и создавал на ихнем месте один другой объект?


Ответы (1 шт):

Автор решения: Latiya Canemi

Данный код должен решать проблему:

using UnityEngine;

public class OneCollisionExecutor : MonoBehaviour
{
    private bool _hasExecuted = false;

    public void MarkAsExecuted()
    {
        _hasExecuted = true;
    }

    private void OnCollisionEnter(Collision collision)
    {
        if(!_hasExecuted && collision.gameObject.CompareTag("Egg"))
        {
            collision.gameObject.GetComponent<OneCollisionExecutor>().MarkAsExecuted();

            InstantiateSomething();

            Destroy(collision.gameObject);
            Destroy(gameObject);
        }
    }

    private void InstantiateSomething()
    {
        //Код создания необходимого объекта
    }
}
→ Ссылка