Example #1
0
    public override void Use()
    {
        if (CanUse() && ammo.SpendAmmo())
        {
            base.Use();
            MuzzleFlash();

            Vector3   dir;
            Transform hit;

            for (int i = 0; i < projectileCount; i++)
            {
                dir = rayShooter.GetRandomDirection(fireFrom, accuracyVariance);
                dir = _angle * dir;
                hit = rayShooter.ShootRay(fireFrom.position, dir);
                Shoot(fireFrom, dir);
                if (dealDamage && hit != null)
                {
                    var damageable = hit.GetComponent <IDamageable>();
                    if (damageable != null)
                    {
                        int damage = damageCalculator.CalculateRandomDamage();
                        damageable.TakeDamage(damage);
                    }
                    forceApplier.ApplyForce(hit, dir);
                }
            }
            EventManager.RaiseOnPlayerNoiseMade(noiseLevel);
        }
    }
Example #2
0
    public override void Use()
    {
        if (CanUse())
        {
            base.Use();
            Vector3   dir;
            Transform hit;

            dir = rayShooter.GetRandomDirection(fireFrom, accuracyVariance);
            hit = rayShooter.ShootRay(fireFrom.position, dir);
            if (hit != null)
            {
                var damageable = hit.GetComponent <IDamageable>();
                if (damageable != null)
                {
                    int damage = damageCalculator.CalculateRandomDamage();
                    damageable.TakeDamage(damage);
                }
                forceApplier.ApplyForce(hit, dir);
            }
        }
    }