Скорей всего это самый стремный вариант решения данной проблемы, НО он работает. Я поставил в левом верхнем углу камеры точку (пустой объект) и в правом нижем. И проверял, если объект заходит за их координаты, то создавать новые координаты. Внизу я привел метод который это всё проверяет. Если я кому то помог, то я буду рад. Я создал 125 объектов на сцене, которые постоянно ищут новую позицию в реальном времени и игра стабильно даёт 300 FPS поэтому меня всё устраивает
private void ExtraPos()
{
NameLaber1:
float x = Random.Range(ChunkesGenerate.instance.start.transform.position.x, ChunkesGenerate.instance.End.transform.position.x);
float y = Random.Range(ChunkesGenerate.instance.start.transform.position.y, ChunkesGenerate.instance.End.transform.position.y);
var p = new Vector3(x, y, 1f);
if (x >= ChunkesGenerate.instance.cntrl_1.transform.position.x &&
y <= ChunkesGenerate.instance.cntrl_1.transform.position.y &&
x <= ChunkesGenerate.instance.cntrl_2.transform.position.x &&
y >= ChunkesGenerate.instance.cntrl_2.transform.position.y)
{
goto NameLaber1;
}
else
{
transform.position = p;
}
}