Защита от пересечения генерируемых объектов — Unity 2d?

Нужно сделать так, чтобы созданные объекты не пересекались (то есть не накладывались друг на друга).

введите сюда описание изображения

Код генерации:

public GameObject player;
public GameObject platformPrefab;

public float minY = -4.5f;
public float maxY = 4.7f;

Vector2 spawnFix;

void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.CompareTag("Platform"))
    {
        Vector2 targetPosition = new Vector2(Random.Range(-1.8f, 1.8f), player.transform.position.y + Random.Range(4.5f, 4.7f));
        GameObject p = Instantiate(platformPrefab, targetPosition, Quaternion.identity);
        Destroy(collision.gameObject);
    }
}

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

Автор решения: Сherubim

Ну, есть простой способ, и как на меня довольно колхозный, можно сделать отдельный скрипт и повесить его на платформу, в самом скрипте уже проверять коллизию, а именно с тегом платформы

private void OnCollisionEnter(Collision collision)
{
    if(collision.gameObject.tag == "Platform")
    {
        return;
    }
}

вместо return можно к примеру уничтожить обьект, ну или заново высчитать случайное место спавна, надеюсь поможет

→ Ссылка