Esempio n. 1
0
    public bool TryShoot()
    {
        if (shootingDelay > 0.0f)
        {
            return(false);
        }

        if (!HasAmmo())
        {
            return(false);
        }

        var directions       = directionController.GetDirectionParams();
        var projectile       = projectileController.GetBulletPrefab();
        var propulsionParams = propulsionController.GetParams();

        foreach (var direction in directions)
        {
            var dir            = direction.direction;
            var shootingSpread = propulsionParams.spread;
            var speed          = direction.speed;

            var spread = Random.Range(-shootingSpread, shootingSpread);
            dir = Quaternion.Euler(0, 0, spread) * transform.rotation * dir.normalized;

            Shoot(projectile, dir, speed, propulsionParams.damageMultiplier);
        }

        shootingDelay = propulsionParams.reloadingSpeed;

        if (limitedAmmo)
        {
            ammo--;
        }

        return(true);
    }