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; }
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; }