Пример #1
0
    public override void PerformOrderUpdate()
    {
        if (deltaTimeSinceLastDirChoice > dirChoiceUpdatePeriod)
        {
            float angle = GlobalRandom.GetRandomNumber(0, 360);

            moveDir = new Vector2(0, 1).Rotate(angle);

            deltaTimeSinceLastDirChoice = 0;
        }

        deltaTimeSinceLastDirChoice += Time.deltaTime;
    }
Пример #2
0
    private void spawnEnemy()
    {
        List <Enemy> enemyPrefabsForLevel   = enemyPrefabsPerLevel[curLevel];
        List <int>   enemySpawnRateForLevel = enemySpawnPercentagePerLevel[curLevel];

        Debug.Assert(enemyPrefabsForLevel.Count == enemySpawnRateForLevel.Count, "Enemy prefabs for level count does not match enemy spawn rate for level count for level " + curLevel + ". Should never happen");

        int randPerc = GlobalRandom.GetRandomNumber(0, 101);

        int spawnIdx = 0;
        int curRate  = 0;

        foreach (int rate in enemySpawnRateForLevel)
        {
            curRate += rate;

            if (randPerc <= curRate)
            {
                break;
            }

            spawnIdx += 1;
        }

        Enemy enemyPrefab = enemyPrefabsForLevel[spawnIdx];

        int range = GlobalRandom.GetRandomNumber(minSpawnRange, maxSpawnRange);
        int angle = GlobalRandom.GetRandomNumber(0, 360);

        Vector2 spawnDir = new Vector2(0, 1).Rotate(angle).normalized *range;

        Vector3 newPos = ObjectRefHolder.Instance.PlayerRef.transform.position + (Vector3)spawnDir;

        Enemy enemyInstance = Instantiate(enemyPrefab, enemyRoot, false);

        enemyInstance.transform.position = newPos;
    }