예제 #1
0
    // Update is called once per frame
    void FixedUpdate()
    {
        if (GameController.instance.currentState == GameController.GameState.PLAYING)
        {
            bool noEnemies = true;
            foreach (Entity entity in Entity.entities)
            {
                if (entity.team == Entity.Team.ENEMY)
                {
                    noEnemies = false;
                    break;
                }
            }

            if (currentSpawnPattern == null && gapStartTime + gapTime < Time.time ||
                currentSpawnPattern == null && noEnemies)
            {
                if (GameController.instance.score < 1000)
                {
                    switch (Random.Range(0, 2))
                    {
                    case 0:
                        currentSpawnPattern = new DoubleSpawnPattern(chaserPrefab, 2f, 3);
                        break;

                    case 1:
                        currentSpawnPattern = new SingleSpawnPattern(chaserPrefab, 1.5f, 6);
                        break;
                    }
                }
                else if (GameController.instance.score < 3000)
                {
                    switch (Random.Range(0, 4))
                    {
                    case 0:
                        currentSpawnPattern = new DoubleSpawnPattern(chaserPrefab, 2f, 3);
                        break;

                    case 1:
                        currentSpawnPattern = new LineSpawnPattern(chaserPrefab);
                        break;

                    case 2:
                        currentSpawnPattern = new CircleSpawnPattern(chaserPrefab);
                        break;
                    }
                }
                else if (GameController.instance.score < 7000)
                {
                    switch (Random.Range(0, 5))
                    {
                    case 0:
                        currentSpawnPattern = new DoubleSpawnPattern(chaserPrefab, 2f, 3);
                        break;

                    case 1:
                        currentSpawnPattern = new LineSpawnPattern(chaserPrefab);
                        break;

                    case 2:
                        currentSpawnPattern = new CircleSpawnPattern(chaserPrefab);
                        break;

                    case 3:
                        currentSpawnPattern = new SingleSpawnPattern(jumpPrefab, 0.5f, 10);
                        break;

                    case 4:
                        currentSpawnPattern = new LineSpawnPattern(jumpPrefab);
                        break;
                    }
                }
                else if (GameController.instance.score < 15000)
                {
                    if (laser1 == null)
                    {
                        SpawnLaser1();
                    }
                    switch (Random.Range(0, 6))
                    {
                    case 0:
                        currentSpawnPattern = new LineSpawnPattern(chaserPrefab);
                        break;

                    case 1:
                        currentSpawnPattern = new CircleSpawnPattern(chaserPrefab);
                        break;

                    case 2:
                        currentSpawnPattern = new SingleSpawnPattern(jumpPrefab, 0.5f, 10);
                        break;

                    case 3:
                        currentSpawnPattern = new LineSpawnPattern(jumpPrefab);
                        break;

                    case 4:
                        currentSpawnPattern = new LineSpawnPattern(avoiderPrefab);
                        break;

                    case 5:
                        currentSpawnPattern = new CircleSpawnPattern(avoiderPrefab);
                        break;
                    }
                }
                else
                {
                    if (laser1 == null)
                    {
                        SpawnLaser1();
                    }
                    if (laser2 == null)
                    {
                        SpawnLaser2();
                    }
                    switch (Random.Range(0, 6))
                    {
                    case 0:
                        currentSpawnPattern = new LineSpawnPattern(chaserPrefab);
                        break;

                    case 1:
                        currentSpawnPattern = new CircleSpawnPattern(chaserPrefab);
                        break;

                    case 2:
                        currentSpawnPattern = new SingleSpawnPattern(jumpPrefab, 0.5f, 10);
                        break;

                    case 3:
                        currentSpawnPattern = new LineSpawnPattern(jumpPrefab);
                        break;

                    case 4:
                        currentSpawnPattern = new LineSpawnPattern(avoiderPrefab);
                        break;

                    case 5:
                        currentSpawnPattern = new CircleSpawnPattern(avoiderPrefab);
                        break;
                    }
                }
            }

            if (currentSpawnPattern != null)
            {
                if (!currentSpawnPattern.IsDoneSpawning())
                {
                    currentSpawnPattern.Tick();
                }
                else
                {
                    gapStartTime        = Time.time;
                    gapTime             = currentSpawnPattern.GetGapTime();
                    currentSpawnPattern = null;
                }
            }
        }

        /* if(isSpawning)
         * {
         *      if (Random.Range(0, 2f/Time.fixedDeltaTime) < 1)
         *      {
         *              int enemy = Random.Range(0, 4);
         *              GameObject spawnPrefab = chaserPrefab;
         *              switch (enemy)
         *              {
         *                      case 0:
         *                              spawnPrefab = chaserPrefab;
         *                              break;
         *                      case 1:
         *                              spawnPrefab = sprinterPrefab;
         *                              break;
         *                      case 2:
         *                              spawnPrefab = avoiderPrefab;
         *                              break;
         *                      case 3:
         *                              spawnPrefab = jumpPrefab;
         *                              break;
         *              }
         *              SpawnEnemy(spawnPrefab);
         *      }
         *      if (Random.Range(0, 10f/Time.fixedDeltaTime) < 1)
         *      {
         *              SpawnEnemy(turretPrefab);
         *              SpawnEnemy(laserTurretPrefab);
         *      }
         * }*/
    }