void spawnBoss() { var rand = new StaticRandomGenerator <DefaultRandomGenerator>(); for (int i = 0; i < GameInfos.bossKillCount + 1; i++) { Vector2 pos = Vector2.zero; for (int j = 0; j < 10; j++) { pos = new UniformVector2SquareDistribution(-m_spawnRadius, m_spawnRadius, -m_spawnRadius, m_spawnRadius).Next(rand); if (pos.sqrMagnitude < m_dontSpawnRadius * m_dontSpawnRadius) { continue; } break; } var mob = Instantiate(m_bossPrefab); mob.transform.position = new Vector3(pos.x, pos.y, -1); } var exit = Instantiate(m_exitPrefab); exit.transform.position = new Vector3(0, 200, -1); exit.name = m_exitPrefab.name; }
private void Awake() { if ((GameInfos.level + 1) % m_bossLevel == 0) { spawnBoss(); return; } var rand = new StaticRandomGenerator <DefaultRandomGenerator>(); int nb = m_enemyCountBase + new UniformIntDistribution((int)(m_minEnemyCountPerLevel * GameInfos.level), (int)(m_maxEnemyCountPerLevel * GameInfos.level) + 1).Next(rand); for (int i = 0; i < nb; i++) { Vector2 pos = Vector2.zero; for (int j = 0; j < 10; j++) { pos = new UniformVector2SquareDistribution(-m_spawnRadius, m_spawnRadius, -m_spawnRadius, m_spawnRadius).Next(rand); if (pos.sqrMagnitude < m_dontSpawnRadius * m_dontSpawnRadius) { continue; } break; } List <float> weights = new List <float>(); foreach (var en in m_enemy) { weights.Add(en.baseWeight + en.levelWeight * GameInfos.level); } var index = new DiscreteDistribution(weights).Next(rand); var e = m_enemy[index]; var mob = Instantiate(e.enemyPrefab); mob.transform.position = new Vector3(pos.x, pos.y, -1); Modifier m = new Modifier(); m.life = (int)(e.levelLife * GameInfos.level); m.speed = (int)(e.levelSpeed * GameInfos.level); m.fireRate = (int)(e.levelFireRate * GameInfos.level); m.power = (int)(e.levelPower * GameInfos.level); var s = mob.GetComponent <ShipLogic>(); s.modifiers.Add(m); s.updateModifierStats(); } spawnExit(); }
void updateTarget() { m_time = m_updateTime; int x = Mathf.RoundToInt(m_pacman.transform.position.x); int y = Mathf.RoundToInt(m_pacman.transform.position.y); var gen = new StaticRandomGenerator <DefaultRandomGenerator>(); if (new BernoulliDistribution().Next(gen)) { var dir = new UniformVector2SquareDistribution(m_radius).Next(gen); x = Mathf.RoundToInt(transform.position.x + dir.x); y = Mathf.RoundToInt(transform.position.y + dir.y); } m_ghost.setTarget(x, y); }
protected override void onStart() { m_target = GameObject.FindObjectOfType <PlayerShipControlerLogic>().transform; m_headRenderer = transform.Find("Head").GetComponent <SpriteRenderer>(); m_tailRenderer = transform.Find("Tail").GetComponent <SpriteRenderer>(); m_d = new UniformVector2SquareDistribution(-m_randomRadius, m_randomRadius, -m_randomRadius, m_randomRadius); if (m_parentNode != null) { m_parentNode.nextSegment = this; } Modifier m = new Modifier(); m.life = m_ship.life * GameInfos.bossKillCount; m.fireRate = m_ship.fireRate * GameInfos.bossKillCount / 2; m.power = m_ship.power * GameInfos.bossKillCount / 2; m_ship.modifiers.Add(m); }
void spawnExit() { var rand = new StaticRandomGenerator <DefaultRandomGenerator>(); Vector2 pos = Vector2.zero; for (int i = 0; i < 10; i++) { pos = new UniformVector2SquareDistribution(-m_spawnRadius, m_spawnRadius, -m_spawnRadius, m_spawnRadius).Next(rand); if (pos.sqrMagnitude < m_dontSpawnRadius * m_dontSpawnRadius) { continue; } break; } var mob = Instantiate(m_exitPrefab); mob.transform.position = new Vector3(pos.x, pos.y, -1); mob.name = m_exitPrefab.name; }