Spawn random obiect 3d

Hey, I search forums and YouTube but can’t find a tutorial on how to do that.

We have a spawner, a random cube must appear every second (red, green, blue)

green only on the axis ((x,y,z)-2 -2 0)
blue only on the axis ((x,y,z)-0 -2 0)
red only on the axis ((x,y,z)2 -2 0)

that’s exactly what it is about Unity 3D (5.3) Rhythm Game - YouTube

I’m trying to get a similar effect on a project to school
It’s just about the spawner.

In this code they appear in random positions

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SpawnBlock : MonoBehaviour
{
    public GameObject[] enemies;
    public Vector3 spawnValues;
    public float spawnWait;
    public float spawnMostWait;
    public float spawnLeastWait;
    public int startWait;
    public bool stop;

    int randEnemy;
    
    void Start()
    {
        StartCoroutine(waitSpawner());
    }

    void Update()
    {
        spawnWait = Random.Range(spawnLeastWait, spawnMostWait);
    }

    IEnumerator waitSpawner()
    {
        yield return new WaitForSeconds(startWait);
        while (true)
        {
            randEnemy = Random.Range(0, 2);
            Vector3 spawnPosition = new Vector3(Random.Range(-spawnValues.x, spawnValues.x), 1, Random.Range(-spawnValues.z, spawnValues.z));
            Instantiate(enemies[randEnemy], spawnPosition + transform.TransformPoint(0, 0, 0), gameObject.transform.rotation);
            yield return new WaitForSeconds(spawnWait);
        }
    }
}

Thank you for your help

I added an object “Plane” and its movement in a “Update” loop just to make it look like your video

using System.Collections;
using UnityEngine;

public class SpawnBlock : MonoBehaviour
{
    public GameObject[] enemies;
    public Vector3 spawnValuesRed;
    public Vector3 spawnValuesGreen;
    public Vector3 spawnValuesBlue;

    public GameObject Plane;
    
    public float spawnWait;
    public int startWait;
    public float Speed;

    private int randEnemy;
    private Vector3 spawnPosition;

    void Start()
    {
        StartCoroutine(waitSpawner());
    }

    void Update()
    {
        Plane.transform.position -= transform.forward * Time.deltaTime * Speed;
    }

    IEnumerator waitSpawner()
    {
        yield return new WaitForSeconds(startWait);
        while (true)
        {
            randEnemy = Random.Range(0, 3); // 0 - green, 1 - red, 2 - blue

            switch (randEnemy)
            {
                case 0:
                    spawnPosition = spawnValuesGreen;
                    break;
                case 1:
                    spawnPosition = spawnValuesRed;
                    break;
                case 2:
                    spawnPosition = spawnValuesBlue;
                    break;
            }
            Instantiate(enemies[randEnemy], spawnPosition + transform.TransformPoint(0, 0, 0), gameObject.transform.rotation, Plane.transform);
            yield return new WaitForSeconds(spawnWait);
        }
    }
}

180294-img.gif