private void RayCastShooting(int bulletCount, int shootCost, float damage, Vector2 dispersion, GameObject decal, AudioClip shootClip) { for (int i = 0; i < bulletCount; i++) { Vector3 rayOrigin = mainCam.ViewportToWorldPoint(new Vector2(0.5f, 0.5f)); Vector3 rayDirection = GetDirection(dispersion); RaycastHit shootHit = new RaycastHit(); if (Physics.Raycast(rayOrigin, rayDirection, out shootHit, 100f, ~(1 << 8))) { HitboxComponent tempHitbox = shootHit.collider.GetComponent <HitboxComponent>(); if (tempHitbox != null) { tempHitbox.ApllyDamage(damage); } else { Instantiate(decal, shootHit.point + shootHit.normal * 0.001f, Quaternion.FromToRotation(Vector3.forward, shootHit.normal)); } } } ammoCounter.ChangeAmmoCount(Data.WeaponType, -shootCost); }