示例#1
0
    protected override PhysicsObject CreateProjectile()
    {
        RRProjectile playerLaser = new RRProjectile(20, 3, 0.1, new Color(255, 55, 128, 128));
        playerLaser.Damage = 8;
        playerLaser.Tag = "Z";
        playerLaser.CollisionIgnoreGroup = 2;
        playerLaser.explosionUponDestruction = false;
        playerLaser.CanRotate = false;
        this.Power.Value = RampageRebellion.PLAYER_WEAPONPOWER;

        return playerLaser;
    }
    public RRProjectile projectile()
    {
        RRProjectile proj;

        if (imageMode)
        {
            if (rectMode)
            {
                proj = new RRProjectile(pWidth, pHeight, pMass, pImageName);
            }
            else proj = new RRProjectile(pRadius, pMass, pImageName);
        }
        else
        {
            if (rectMode)
            {
                proj = new RRProjectile(pWidth, pHeight, pMass, pColor);
            }
            else proj = new RRProjectile(pRadius, pMass, pColor);
        }

        proj.Angle = slateAtAngle;
        proj.Damage = damageCaused;
        proj.CollisionIgnoreGroup = defaultCollisionIgnoreGroup;
        proj.IgnoresCollisionResponse = ignoresCollisionResponse;
        proj.Tag = defaultTag;
        proj.explosionUponDestruction = this.explosionUponDestruction;
        proj.explosionRadius = explosionRadius;
        proj.CanRotate = this.canRotate;
        proj.customDestroy = this.customDestructor;
        shotSound.Play();

        if (projectileShape != null) proj.Shape = projectileShape;

        return proj;
    }
示例#3
0
    public void BombExplosion(PhysicsObject bomb)
    {
        SoundEffect BombExplosion = LoadSoundEffect("Bomb");
        BombExplosion.Play();

        RRProjectile bombExplosion = new RRProjectile(5.0, 999999999999, "explosion");
        bombExplosion.Position = bomb.Position;
        bombExplosion.Damage = 150;
        bombExplosion.Tag = "BX";
        bombExplosion.IgnoresCollisionResponse = true;
        bombExplosion.IgnoresGravity = true;
        AddCollisionHandler<RRProjectile, RREnemy>(bombExplosion, playerCollisionHandler);
        Add(bombExplosion);

        RRProjectile bombShockwave = new RRProjectile(5.0, 999999999999, new Color(212, 0, 52, 30));
        bombShockwave.Position = bomb.Position;
        bombShockwave.Damage = 0.1;
        bombShockwave.Tag = "BS";
        bombShockwave.IgnoresCollisionResponse = true;
        bombShockwave.IgnoresGravity = true;
        AddCollisionHandler<RRProjectile, RREnemy>(bombShockwave, playerCollisionHandler);
        Add(bombShockwave);

        Timer growExplosion = new Timer();
        growExplosion.Interval = 0.02;
        growExplosion.Start();
        growExplosion.Timeout += delegate
        {
            if (bombExplosion.Width >= 2500 & bombExplosion.Height >= 2500) { growExplosion.Reset(); bombExplosion.Destroy(); bombShockwave.Destroy(); }
            else { bombExplosion.Width = bombExplosion.Width * 1.05; bombExplosion.Height = bombExplosion.Height * 1.05; bombShockwave.Width = bombShockwave.Width * 2.5; bombShockwave.Height = bombShockwave.Height * 2.5; }
        };
    }