protected override void Fire()
    {
        float face = (float)characterMotor.FaceDirection;

        foreach (var fireStyle in fireStyles)
        {
            GravityProjectileController projectileController = projectileType.Get <GravityProjectileController>();
            fireOffset   = fireStyle.offset;
            fireRotation = fireStyle.rotation;
            gravity      = fireStyle.gravity;
            LoadUpProjectile(projectileController);
            float   rad      = fireStyle.direction * Mathf.Deg2Rad;
            Vector3 velocity = new Vector3(Mathf.Cos(rad) * face, Mathf.Sin(rad), 0).normalized *firePower;
            projectileController.Fire(velocity);
        }

        if (attackSound)
        {
            _audioSource.PlayOneShot(attackSound.Source);
        }
        if (fireShake != Vector3.zero)
        {
            CameraManager.Shake(transform.position, fireShake);
        }
        if (fireEffect)
        {
            BurstParticleController explosion = fireEffect.Get <BurstParticleController>();
            explosion.transform.position = transform.position + new Vector3(transform.lossyScale.x / 2f, 0, 0);
            explosion.Burst();
        }
    }