Как в юнити создать объект если касаются 2 других?
Хочу сделать игру, но столкнулся с проблемой. У меня есть код который создает яйцо из префаба. Префаб яйца имеет коллайдер и тег "Egg". Я хочу создать код, который будет узнавать касаются ли 2 яйца. И если они касаются, то они должны исчезнуть а на ихнем месте должен появится ОДИН другой объект. Проблема в, том что если я создам простой код, который будет проверять касание и повешу его на префаб с яйцом, то когда они соприкоснутся от каждого из яиц будет по одному новому объекту. Потому что на префабе яйца есть этот код и он будет срабатывать одновременно на двух яйцах сразу. Вопрос: как сделать чтобы был к примеру один код на пустом объекте, который узнавал касаются ли 2 яйца и создавал на ихнем месте один другой объект?
Ответы (1 шт):
Данный код должен решать проблему:
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()
{
//Код создания необходимого объекта
}
}