Exemple #1
0
    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;
    }
Exemple #2
0
    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();
    }
Exemple #3
0
    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);
    }
Exemple #4
0
    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);
    }
Exemple #5
0
    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;
    }