private void CreateCars()
    {
        if (Cars.Length == 0)
        {
            return;
        }
        var points  = new RandomQueue <GameObject>(GameObject.FindGameObjectsWithTag("StartPoint"));
        int numCars = points.Count / 100 + 10;

        numCars = Mathf.Min(numCars, 1050);
        numCars = Mathf.Max(numCars, 1000);
        Debug.Log($"# of cars: {numCars}");
        Debug.Log($"Queue Size: {points.Count}");
        for (int i = 0; i < numCars; i++)
        {
            var newCar     = Instantiate <Car>(Cars[Random.Range(0, Cars.Length)]);
            var spawnPoint = points.Dequeue();
            while (spawnPoint != null && spawnPoint.GetComponent <RoadPoint>().IsTrafficLightRoad)
            {
                spawnPoint = points.Dequeue();
            }
            if (spawnPoint == null)
            {
                break;
            }
            // newCar.SetNextPoint(spawnPoint, spawnPoint);
            newCar.SetNextPoint(spawnPoint);
            newCar.transform.position = spawnPoint.transform.position + Vector3.up * 5;
            newCar.transform.rotation = spawnPoint.transform.rotation;
            // Camera.main.transform.position = newCar.transform.position;
        }
    }