Проблема в том, что вы полностью случайным образом меняете положение стен на экране.
b.transform.position = new Vector2(screenBounds.x *-2, Random.Range(-screenBounds.y, screenBounds.y));
y.transform.position = new Vector2(screenBounds.x *-2, Random.Range(-screenBounds.y, screenBounds.y));
r.transform.position = new Vector2(screenBounds.x *-2, Random.Range(-screenBounds.y, screenBounds.y));
Что вам нужно сделать, так это сначала рандомизировать порядок цветов. Также нам нужна высота стены
float wallHeight = 5; //arbitrary number for example purpose
int orderBlue = 0;
int orderRed = 0;
int orderYellow = 0;
do {
colorBlue = Random.Range(0, 2);
colorRed = Random.Range(0, 2);
colorYellow = Random.Range(0, 2);
} while ((orderBlue == orderRed) || (orderBlue == orderYellow) || (orderRed = orderYellow))
Определите, какой цвет будет первым, затем добавьте другие стены под ним
if (colorBlue == 2) {
b.transform.position = new Vector2(screenBounds.x *-2, Random.Range(-screenBounds.y, screenBounds.y));
if (colorYellow == 1) {
y.transform.position = new Vector2(b.transform.position.x, b.transform.position.y - wallHeight);
r.transform.position = new Vector2(b.transform.position.x, b.transform.position.y - 2 * wallHeight);
}
if (colorRed == 1) {
r.transform.position = new Vector2(b.transform.position.x, b.transform.position.y - wallHeight);
y.transform.position = new Vector2(b.transform.position.x, b.transform.position.y - 2 * wallHeight);
}
}
if (colorRed == 2) {
// add same code as above but switch colors
}
if (colorYellow == 2) {
// add same code as above but switch colors
}