У меня есть спавн препятствий для игрока, и когда начинается игра, препятствия появляются друг в друге. Я пытался решить эту проблему с помощью 2d цикла while и Physics, но когда я запустил игру, Unity вылетела. И еще я попробовал через Raycast2D проверить, когда луч сталкивается с каким-то коллайдером, и изменить его положение. Но лучик маленький не всегда работал.
Первый способ
while (!Physics.CheckBox(pos, BlotPref[1].transform.localScale))
{
pos = new Vector2(Random.Range(-1f, 1f), YPosSetter());
}
Второй способ
while (hit.collider == null)
{
transform.position = new Vector2(Random.Range(-1f, 1f), YPosSetter());
}
Спаунер
private void SpawnerPaper()
{
for (int i = 0; i < PlaningSpawn; i++)
{
if (rndType <= _dbPaperSpawn)
{
var blot = Instantiate(BlotPref[Random.Range(0, BlotPref.Length)], new Vector2(Random.Range(-1f, 1f), Random.Range(30f, 70f)), Quaternion.identity);
blot.transform.SetParent(paper.transform);
}
}
}