示例#1
0
    public Stack <Enemy> CreateEnemyBurst()
    {
        // Returns a Stack containing UFOs and Asteroids shuffled in a random order.
        // The size of the Stack is the sum of numUfos & numAsteroids.

        var enemyBurst = new List <Enemy>();

        for (int i = 0; i < numAsteroids; i++)
        {
            // Pick a random asteroid prefab
            int rIndex = Random.Range(0, asteroids.Count);
            enemyBurst.Add(asteroids[rIndex].GetComponent <Enemy>());
        }

        for (int i = 0; i < numUfos; i++)
        {
            enemyBurst.Add(ufo.GetComponent <Enemy>());
        }

        return(ListUtils.CreateShuffledStack(enemyBurst));
    }
示例#2
0
    void OnTriggerEnter2D(Collider2D collider)
    {
        Rock              rock   = collider.gameObject.GetComponent <Rock>();
        Projectile        bullet = collider.gameObject.GetComponent <Projectile>();
        UFO               ufo    = collider.gameObject.GetComponent <UFO>();
        ControlledShooter player = collider.gameObject.GetComponent <ControlledShooter>();
        Nebula            nebula = collider.gameObject.GetComponent <Nebula>();

        this.GetComponent <Damageable>().Damage(1);
        if (rock != null)
        {
            Color colour = rock.gameObject.GetComponent <SpriteRenderer>().color;
            colour.g *= 0.75f;
            rock.gameObject.GetComponent <SpriteRenderer>().color = colour;
            rock.gameObject.GetComponent <Rigidbody2D>().mass    *= 0.5f;
            Destroy(rock.gameObject.GetComponent <ScreenWrapped>());
        }
        else if (bullet != null)
        {
            bullet.gameObject.AddComponent <ScreenWrapped>();
            Color colour = bullet.gameObject.GetComponent <SpriteRenderer>().color;
            colour.g *= 0.75f;
            bullet.gameObject.GetComponent <SpriteRenderer>().color = colour;
            bullet.damage *= 2;
        }
        else if (ufo != null)
        {
            ufo.gameObject.AddComponent <ScreenWrapped>();
            Color colour = ufo.gameObject.GetComponent <SpriteRenderer>().color;
            colour.g *= 0.75f;
            ufo.gameObject.GetComponent <SpriteRenderer>().color = colour;
            ufo.shoot_rate     *= 100.0f;
            ufo.shoot_accuracy *= 0.01f;
            ufo.GetComponent <Rigidbody2D>().freezeRotation       = false;
            ufo.gameObject.GetComponent <Rigidbody2D>().velocity *= 8.0f;
            if (ufo.gameObject.GetComponent <Damageable>().current_health == 1)
            {
                Destroy(ufo.gameObject);
            }
            else
            {
                ufo.gameObject.GetComponent <Damageable>().current_health = 1;
            }
        }
        else if (player != null)
        {
            player.GetComponent <Rigidbody2D>().velocity = player.GetComponent <Rigidbody2D>().velocity * 4.0f;
            player.gameObject.GetComponent <Rigidbody2D>().angularVelocity = 256.0f * Random.Range(-Mathf.PI, Mathf.PI);
            player.gameObject.GetComponent <Damageable>().Heal(1);
            Destroy(this.gameObject);
        }
        else if (nebula != null)
        {
            Damageable nebula_dmg = nebula.GetComponent <Damageable>();
            nebula_dmg.max_health    *= 2;
            nebula_dmg.current_health = nebula_dmg.max_health;
            nebula.GetComponent <Rigidbody2D>().velocity *= 4.0f;
            this.GetComponent <Rigidbody2D>().velocity   *= 0.25f;
        }
        else
        {
            this.GetComponent <Damageable>().Heal(1);
        }
    }