//similar to EnemyHealth.SetupHealthBar()
    public void SetupDurabilityBar(RectTransform healthBarCanvas)
    {
        durabilityBar = Instantiate(durabilityBarPrefab);
        durabilityBar.SetTarget(durabilityBarPosition);
        durabilityBar.transform.SetParent(healthBarCanvas);

        if (indestructibleShield)
        {
            Color indestructibleShieldColor = Color.gray;
            indestructibleShieldColor.a = 0.8f;
            durabilityBar.ChangeBarColorTo(indestructibleShieldColor);
            indestructibleShieldColor.a = 0.95f;
            durabilityBar.ChangeBarEndColorTo(indestructibleShieldColor);
        }
    }
示例#2
0
    //works very similarly to spawning a normal enemy with the exception that it
    //can spawn multiple bosses with a single method call
    IEnumerator GenerateBossWave()
    {
        bossWave++;
        bossesSpawning = true;
        bossesAlive    = true;
        int bossesToSpawn = (bossWave + 1) / 2;

        for (int i = 0; i < bossesToSpawn; i++)
        {
            Vector2 randomOnCircle = Random.insideUnitCircle.normalized;
            Vector3 position       = new Vector3(randomOnCircle.x, 0, randomOnCircle.y) * (Random.Range(maxEnemySpawnRadius - 1f, maxEnemySpawnRadius));

            Enemy newBoss = Instantiate(standardEnemyPrefab, position, Quaternion.identity).GetComponent <Enemy>();
            newBoss.gameObject.transform.SetParent(transform);

            EnemyType      randomBossType = bossTypes[Random.Range(0, numBossTypes)];
            EnemyCurvePath randomPath     = enemyCurvePaths[Random.Range(0, numEnemyCurvePaths)];

            newBoss.SetupEnemy(randomBossType, randomPath);
            HealthBar bossBar = newBoss.SetupBars(healthBarCanvas);

            Color bossBarColor = Color.magenta;
            bossBarColor.a = 0.8f;
            bossBar.ChangeBarColorTo(bossBarColor);
            bossBarColor.a = 0.95f;
            bossBar.ChangeBarEndColorTo(bossBarColor);

            newBoss.gameObject.name = "B" + numEnemyToSpawn + " - " + randomBossType.GetShortHand();

            bosses.Add(newBoss);

            numEnemyToSpawn++;
            yield return(new WaitForSeconds(1.0f));
        }
        numEnemyMax   += (bossWave % maxEnemyIncreaseRate == 0) ? 1 : 0;
        bossesSpawning = false;
    }