private void ShootWeapon()
    {
        nextShotAvailable = false;
        PlayShotSoundFX();
        TypeOfBullet bullet = Instantiate(weaponBeingHeld.GetBulletPrefab(), tipOfTheGun.position, Quaternion.identity, null);

        if (!(bullet is AOEBullet))
        {
            bullet.gameObject.layer = (int)DefinedLayers.PlayerBullets;
            var playerBullet = bullet.gameObject.AddComponent <PlayerBullet>();
            playerBullet.SetDamage(weaponBeingHeld.GetBulletDamage());
        }
        else
        {
            var typeOfBullet = bullet.GetComponent <TypeOfBullet>();
            typeOfBullet.SetDamage(weaponBeingHeld.GetBulletDamage());
            typeOfBullet.SetSpeed(20);
            typeOfBullet.SetTarget(Camera.main.ScreenToWorldPoint(Input.mousePosition));
        }
        currentBulletManager.BulletFired();
        OnBulletFired(currentBulletManager.AvailableBulletsCount());
        shootingPS.Play();
        StartCoroutine(CanShootAgain());
        animator.SetTrigger(RECOIL_TRIGGER);
    }