示例#1
0
    protected void Fire()
    {
        //TODO: fire sound
        Bullet newBullet = (Bullet)bullet.Instance();

        GetTree().Root.AddChild(newBullet);
        newBullet.GlobalTransform = barrel.GlobalTransform;
        newBullet.damage          = -8;
        newBullet.ApplyImpulse(new Vector3(0, 0, 0), -newBullet.GlobalTransform.basis.z * newBullet.speed);
        parent.UpdatePath(parent.playerPos);
        snd.PitchScale = fireRate;
        snd.Play();
    }
    protected void Fire(int i)
    {
        Bullet newBullet = (Bullet)bullet.Instance();

        newBullet.Transform = GlobalTransform * barrels[i];
        GetTree().Root.AddChild(newBullet);
        newBullet.ApplyImpulse(new Vector3(0, 0, 0),
                               -newBullet.GlobalTransform.basis.z * newBullet.speed * (launchSpeedByDistance ? ToGlobal(Translation).DistanceTo(player.Translation) : 1));
        //parent.GetTarget(); //find a new target
        //parent.UpdatePath(parent.targetNavPos); //start over pathfinding using new target
        //snd.PitchScale = fireRate; // should I use different randoms for pitchscale later?
        if (snd != null)
        {
            snd.Play();
        }
    }
示例#3
0
 protected void FireFlame()
 {     /*Flames aren't done using the particle system because Godot does not support per-particle collission
        *    so what we have instead is an extremely rapid fire bullet with short lifespan, effectively limiting its range */
     if (player.fuel > 0)
     {
         coolMeter.Value = 100;
         player.fuel--;
         int fuelInt = (int)player.fuel;
         ammoNum.Text = fuelInt.ToString();
         Bullet newBullet = (Bullet)instanceFlame.Instance();
         newBullet.Transform = GlobalTransform * barrels[0];
         //newBullet.Translate(barrels[0].origin);
         GetTree().Root.AddChild(newBullet);
         newBullet.ApplyImpulse(new Vector3(0, 0, 0), -newBullet.GlobalTransform.basis.z * newBullet.speed);
     }
 }
示例#4
0
    protected void FireGrenades()
    {
        if (grenades > 0)
        {
            switchSnd.Stream = fireGren;
            switchSnd.Play();
            coolMeter.Value = 100;
            grenades--;
            ammoNum.Text = grenades.ToString();

            Bullet newBullet = (Bullet)instanceGrenade.Instance();
            newBullet.Transform = GlobalTransform * barrels[0];
            GetTree().Root.AddChild(newBullet);
            newBullet.ApplyImpulse(new Vector3(0, 0, 0), -newBullet.GlobalTransform.basis.z * newBullet.speed);
        }
    }
示例#5
0
    protected void FireRepeater()    //this one is gonna need extra parameters when we add multiple weapons
    {
        if (bullets > 0)
        {
            switchSnd.Stream = fireRep;
            switchSnd.Play();
            coolMeter.Value = 100;
            bullets--;
            ammoNum.Text = bullets.ToString();

            Bullet newBullet = (Bullet)instanceRepeater.Instance();
            newBullet.Transform = GlobalTransform * barrels[0];
            GetTree().Root.AddChild(newBullet);
            newBullet.ApplyImpulse(new Vector3(0, 0, 0), -newBullet.GlobalTransform.basis.z * newBullet.speed);
        }
    }
示例#6
0
 protected void FireFlame()
 { /*Flames aren't done using the particle system because Godot does not support per-particle collission
    * so what we have instead is an extremely rapid fire bullet with short lifespan, effectively limiting its range */
     if (player.fuel > 0)
     {
         coolMeter.Value = 100;
         player.fuel    -= 2;
         int fuelInt = (int)player.fuel;
         ammoNum.Text = fuelInt.ToString();
         PackedScene newWeapon = (PackedScene)ResourceLoader.Load("res://Prefabs/Bullets/Player_Flame.tscn");
         Bullet      newBullet = (Bullet)newWeapon.Instance();
         newBullet.GlobalTransform = barrel.GlobalTransform;
         GetTree().Root.AddChild(newBullet);
         newBullet.friendly = true;
         newBullet.ApplyImpulse(new Vector3(0, 0, 0), -newBullet.GlobalTransform.basis.z * newBullet.speed);
     }
 }
示例#7
0
 protected void FireGrenades()
 {
     if (grenades > 0)
     {
         switchSnd.SetStream(fireGren);
         switchSnd.Play();
         coolMeter.Value = 100;
         grenades--;
         ammoNum.Text = grenades.ToString();
         PackedScene newWeapon = (PackedScene)ResourceLoader.Load("res://Prefabs/Bullets/Player_Grenades.tscn");
         Bullet      newBullet = (Bullet)newWeapon.Instance();
         newBullet.GlobalTransform = barrel.GlobalTransform;
         GetTree().Root.AddChild(newBullet);
         newBullet.friendly = true;
         newBullet.ApplyImpulse(new Vector3(0, 0, 0), -newBullet.GlobalTransform.basis.z * newBullet.speed);
     }
 }
示例#8
0
 protected void FireRepeater()//this one is gonna need extra parameters when we add multiple weapons
 {
     if (bullets > 0)
     {
         switchSnd.SetStream(fireShot);
         switchSnd.Play();
         coolMeter.Value = 100;
         bullets--;
         ammoNum.Text = bullets.ToString();
         PackedScene newWeapon = (PackedScene)ResourceLoader.Load("res://Prefabs/Bullets/Player_Repeater.tscn");
         Bullet      newBullet = (Bullet)newWeapon.Instance();
         newBullet.GlobalTransform = barrel.GlobalTransform;
         GetTree().Root.AddChild(newBullet);
         newBullet.friendly = true;
         newBullet.ApplyImpulse(new Vector3(0, 0, 0), -newBullet.GlobalTransform.basis.z * newBullet.speed);
     }
 }
示例#9
0
 protected void FireBuckshot()    //this one is why I gave the player 9 barrel transforms
 {
     if (shells > 0)
     {
         switchSnd.Stream = fireShot;
         switchSnd.Play();
         coolMeter.Value = 100;
         shells--;
         ammoNum.Text = shells.ToString();
         for (int i = 0; i < barrels.Count; i++)
         {
             Bullet newBullet = (Bullet)instanceBuckshot.Instance();
             newBullet.Transform = GlobalTransform * barrels[i];
             GetTree().Root.AddChild(newBullet);
             newBullet.ApplyImpulse(new Vector3(0, 0, 0), -newBullet.GlobalTransform.basis.z * newBullet.speed);
         }
     }
 }
示例#10
0
 protected void FireBuckshot() //this one is SUPER hacked together for now but I don't see any easier way to implement spread shots at the current moment
 {                             //because Godot's C# support isn't complete enough to it the same way I did in the Unity version
     //forgive me master, but this code is going to be super messy.
     if (shells > 0)
     {
         switchSnd.SetStream(fireShot);
         switchSnd.Play();
         coolMeter.Value = 100;
         shells--;
         ammoNum.Text = shells.ToString();
         PackedScene newWeapon = (PackedScene)ResourceLoader.Load("res://Prefabs/Bullets/Player_Buckshot.tscn");
         //center
         Bullet newBullet = (Bullet)newWeapon.Instance();
         newBullet.GlobalTransform = barrel.GlobalTransform;
         GetTree().Root.AddChild(newBullet);
         newBullet.friendly = true;
         newBullet.ApplyImpulse(new Vector3(0, 0, 0), -newBullet.GlobalTransform.basis.z * newBullet.speed);
         //left
         Bullet newBullet2 = (Bullet)newWeapon.Instance();
         newBullet2.GlobalTransform = barrel.GlobalTransform;
         GetTree().Root.AddChild(newBullet2);
         newBullet2.RotateObjectLocal(new Vector3(0, 1, 0), buckshotSpread);
         newBullet2.friendly = true;
         newBullet2.ApplyImpulse(new Vector3(0, 0, 0), -newBullet2.GlobalTransform.basis.z * newBullet2.speed);
         //right
         Bullet newBullet3 = (Bullet)newWeapon.Instance();
         newBullet3.GlobalTransform = barrel.GlobalTransform;
         GetTree().Root.AddChild(newBullet3);
         newBullet3.RotateObjectLocal(new Vector3(0, 1, 0), -buckshotSpread);
         newBullet3.friendly = true;
         newBullet3.ApplyImpulse(new Vector3(0, 0, 0), -newBullet3.GlobalTransform.basis.z * newBullet3.speed);
         //up
         Bullet newBullet4 = (Bullet)newWeapon.Instance();
         newBullet4.GlobalTransform = barrel.GlobalTransform;
         GetTree().Root.AddChild(newBullet4);
         newBullet4.RotateObjectLocal(new Vector3(1, 0, 0), buckshotSpread);
         newBullet4.friendly = true;
         newBullet4.ApplyImpulse(new Vector3(0, 0, 0), -newBullet4.GlobalTransform.basis.z * newBullet4.speed);
         //down
         Bullet newBullet5 = (Bullet)newWeapon.Instance();
         newBullet5.GlobalTransform = barrel.GlobalTransform;
         GetTree().Root.AddChild(newBullet5);
         newBullet5.RotateObjectLocal(new Vector3(1, 0, 0), -buckshotSpread);
         newBullet5.friendly = true;
         newBullet5.ApplyImpulse(new Vector3(0, 0, 0), -newBullet5.GlobalTransform.basis.z * newBullet5.speed);
         //down-left
         Bullet newBullet6 = (Bullet)newWeapon.Instance();
         newBullet6.GlobalTransform = barrel.GlobalTransform;
         GetTree().Root.AddChild(newBullet6);
         newBullet6.RotateObjectLocal(new Vector3(1, 0, 0), -buckshotSpread / 1.3f);
         newBullet6.RotateObjectLocal(new Vector3(0, 1, 0), buckshotSpread / 1.3f);
         newBullet6.friendly = true;
         newBullet6.ApplyImpulse(new Vector3(0, 0, 0), -newBullet6.GlobalTransform.basis.z * newBullet6.speed);
         //up-left
         Bullet newBullet7 = (Bullet)newWeapon.Instance();
         newBullet7.GlobalTransform = barrel.GlobalTransform;
         GetTree().Root.AddChild(newBullet7);
         newBullet7.RotateObjectLocal(new Vector3(1, 0, 0), buckshotSpread / 1.3f);
         newBullet7.RotateObjectLocal(new Vector3(0, 1, 0), buckshotSpread / 1.3f);
         newBullet7.friendly = true;
         newBullet7.ApplyImpulse(new Vector3(0, 0, 0), -newBullet7.GlobalTransform.basis.z * newBullet7.speed);
         //up-right
         Bullet newBullet8 = (Bullet)newWeapon.Instance();
         newBullet8.GlobalTransform = barrel.GlobalTransform;
         GetTree().Root.AddChild(newBullet8);
         newBullet8.RotateObjectLocal(new Vector3(1, 0, 0), buckshotSpread / 1.3f);
         newBullet8.RotateObjectLocal(new Vector3(0, 1, 0), -buckshotSpread / 1.3f);
         newBullet8.friendly = true;
         newBullet8.ApplyImpulse(new Vector3(0, 0, 0), -newBullet8.GlobalTransform.basis.z * newBullet8.speed);
         //down-right
         Bullet newBullet9 = (Bullet)newWeapon.Instance();
         newBullet9.GlobalTransform = barrel.GlobalTransform;
         GetTree().Root.AddChild(newBullet9);
         newBullet9.RotateObjectLocal(new Vector3(1, 0, 0), -buckshotSpread / 1.3f);
         newBullet9.RotateObjectLocal(new Vector3(0, 1, 0), -buckshotSpread / 1.3f);
         newBullet9.friendly = true;
         newBullet9.ApplyImpulse(new Vector3(0, 0, 0), -newBullet9.GlobalTransform.basis.z * newBullet9.speed);
     }
 }