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); } }
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); } } }