protected void Fire() { if (hammer.cocked && !barrel.isOut) { // check cylinder to be fired, check filled for fire / blank bool firedBullet = barrel.GetCurrentCylinder().Expel(); hammer.Reset(); if (firedBullet) { muzzleFlash.Flash(); Camera.main.GetComponent <CameraBehavior>().Shake(); audioSource.PlayOneShot(SoundManager.LoadSoundClip("shot" + Random.Range(1, 3))); Vector3 dir = (body.sightPoint - Camera.main.transform.position) * 100f; Debug.DrawRay(body.sightPoint, dir, Color.red, 100f); int layerMask = 1 << LayerMask.NameToLayer("Enemies"); RaycastHit hit = new RaycastHit(); if (Physics.Raycast(body.sightPoint, dir, out hit, 100f, layerMask)) { SlimeEnemy slime = hit.transform.gameObject.GetComponent <SlimeEnemy>(); slime.Damage(100); score += 1; } } else { audioSource.PlayOneShot(SoundManager.LoadSoundClip("dryfire")); } } }