public virtual void Fire(Player player) { if (AmmoClip.EnoughAmmoToFire()) { if (IsReloading) { ReloadingInterrupted(player.playerNumber); } PlayFireAnimation(player); var x = Instantiate(bullet, player.shootPosition.position, player.shootPosition.rotation); x.SetDamage(projDamage); x.setShooter(player.gameObject); Debug.Log("FireSound = " + FireSound); x.setSound(FireSound); x.GetComponent <Rigidbody2D>().AddForce(x.transform.right * projSpeed); AmmoClip.Decrement(); EventAggregator.GetInstance().Publish <OnWeaponAmmoChangedEvent>(new OnWeaponAmmoChangedEvent(player.playerNumber, AmmoClip.GetCurrentAmmo())); } else { // Fire OnReloadMessage Event if (IsReloading && !ReloadCancel) { Debug.Log(this.name + " is still reloading"); } else { AudioManager.Play(NO_AMMO_SOUND); Debug.Log("Not enough ammo in clip to fire, need to reload " + this.name + "\nAmmoUsePerBullet: " + AmmoClip.AMMO_USE_PER_BULLET + ", but in clip: " + AmmoClip.CurrentAmmoRaw); } } }
public override void Fire(Player player) { if (AmmoClip.EnoughAmmoToFire()) { Bullet[] bulletArr = new Bullet[5]; //currentPlayer = player; PlayFireAnimation(player); for (int i = 0; i < bulletArr.Length; i++) { bulletArr[i] = Instantiate(bullet, player.shootPosition.position, player.shootPosition.rotation * Quaternion.Euler(projAngles[i])); } foreach (Bullet b in bulletArr) { b.SetDamage(projDamage); b.SetDistance(20f); b.GetComponent <Rigidbody2D>().AddForce(b.transform.right * projSpeed); b.setShooter(player.gameObject); b.setSound(FireSound); } AmmoClip.Decrement(); EventAggregator.GetInstance().Publish <OnWeaponAmmoChangedEvent>(new OnWeaponAmmoChangedEvent(player.playerNumber, AmmoClip.GetCurrentAmmo())); } else { // Fire OnReloadMessage Event if (IsReloading && !ReloadCancel) { Debug.Log(this.name + " is still reloading"); } else { AudioManager.Play("No_Ammo_Sound"); Debug.Log("Not enough ammo in clip to fire, need to reload " + this.name + "\nAmmoUsePerBullet: " + AmmoClip.AMMO_USE_PER_BULLET + ", but in clip: " + AmmoClip.GetCurrentAmmo()); } } }