private void FixedUpdate()
 {
     GameLine.SetCellState(0, GameLine.Size, GameCell.CellState.Free);
     for (int i = 0; i < SubjectInstances.Count; i++)
     {
         VehicleGameSubject gameSubject = SubjectInstances[i];
         gameSubject.transform.Translate(Speed, 0, 0);
         int newPosition = Mathf.CeilToInt(SubjectInstances[i].transform.position.x + GameLine.Size / 2);
         if (newPosition >= GameLine.Size)
         {
             gameSubject.transform.localPosition = new Vector3(-GameLine.Size / 2, 0);
         }
         else
         {
             GameLine.SetCellState(newPosition, gameSubject.Size, GameCell.CellState.Dangerous);
         }
     }
 }
    public override void GenerateObjects()
    {
        SubjectInstances = new List <VehicleGameSubject>();
        for (int i = 0; i < GameLine.Size; i++)
        {
            VehicleGameSubject prefab = SubjectPrefabs[Random.Range(0, SubjectPrefabs.Length)];
            bool needGenerate         = Random.Range(0, 10) < 1;
            if (needGenerate)
            {
                VehicleGameSubject gameSubject = PoolsContainer.PullObjectByPrefab <VehicleGameSubject>(prefab.gameObject, GameLine.transform);
                gameSubject.PrefabForPulling = prefab.gameObject;

                gameSubject.transform.localPosition = new Vector3(i - GameLine.Size / 2, 0, 0);
                SubjectInstances.Add(gameSubject);

                GameLine.SetCellState(i, gameSubject.Size, GameCell.CellState.Dangerous);
                i += (gameSubject.Size);
            }
        }
    }
    public override void GenerateObjects()
    {
        float gs2 = GameLine.Size / 2;

        SubjectInstances = new List <GameSubject>();
        for (int i = 0; i < GameLine.Size; i++)
        {
            GameSubject prefab = SubjectPrefabs[Random.Range(0, SubjectPrefabs.Length)];

            bool needGenerate = Random.Range(0, gs2 - Mathf.Abs(gs2 - i)) < 1;
            if (needGenerate)
            {
//                GameSubject gameSubject = Instantiate(prefab, GameLine.transform);
                GameSubject gameSubject = PoolsContainer.PullObjectByPrefab <GameSubject>(prefab.gameObject, GameLine.transform);
                gameSubject.PrefabForPulling        = prefab.gameObject;
                gameSubject.transform.localPosition = new Vector3(i - GameLine.Size / 2, 0, 0);
                SubjectInstances.Add(gameSubject);

                GameLine.SetCellState(i, GameCell.CellState.Busy);
            }
        }
    }