예제 #1
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);
        }
    }