예제 #1
0
    IEnumerator SpawnMinions(GameConfig config)
    {
        Vector3 spawnPosition = RandomVector3(config.gameAreaWidth, config.gameAreaHeight);

        for (int i = 0; i < config.numUnitsToSpawn; i++)
        {
            GameObject go     = Instantiate(minionPrefab);
            float      radius = Random.Range(config.minUnitRadius, config.maxUnitRadius);
            go.transform.localScale = new Vector3(radius, radius, 1.0f);
            go.transform.position   = spawnPosition;
            spawnPosition           = RandomVector3(config.gameAreaWidth, config.gameAreaHeight);
            go.GetComponent <MinionController>().Init(Random.Range(config.minUnitSpeed, config.maxUnitSpeed), RandomVector3(config.gameAreaWidth, config.gameAreaHeight).normalized, i % System.Enum.GetNames(typeof(MinionTeamsEnum)).Length);
            yield return(new WaitForSeconds(config.unitSpawnDelay / 1000.0f));
        }
        SimulationController.OnSpawnFinished?.Invoke();
        OnMinionsNumberChanged?.Invoke();
    }
예제 #2
0
    public void RemoveMinionFromList(MinionController mc)
    {
        switch (mc.Team)
        {
        case MinionTeamsEnum.Blue:
            blueMinions.Remove(mc);
            break;

        case MinionTeamsEnum.Red:
            redMinions.Remove(mc);
            break;
        }
        OnMinionsNumberChanged?.Invoke();
        if (redMinions.Count == 0 || blueMinions.Count == 0)
        {
            SimulationController.OnFinishSimulation?.Invoke();
        }
    }