public void FireRifle() { if (HuntingRifleTimer < 1) { if (HuntingRifleMagazine > 0) { NPCmanager.GetComponent <NpcManagement>().JustFired(); //lets NPCs know you fired, so they can look for you HuntingRifle.GetComponent <Animator>().SetTrigger("Fire"); //HuntingRifle.GetComponent<Animator>().SetTrigger("Fire"); //plays a firing animation Instantiate(muzzleflash, HuntingRifleMuzzle.position, HuntingRifleMuzzle.rotation); //muzzleflash Instantiate(smoke, HuntingRifleMuzzle.position, HuntingRifleMuzzle.rotation); //gunsmoke //stores location of raycast hit RaycastHit hit; //makes raycast avoid game-layer with player and ui int layerMask = (1 << 8) | (1 << 9); layerMask = ~layerMask; //casts ray if (Physics.Raycast(cam.transform.position, cam.transform.forward, out hit, HuntingRifleRange, layerMask)) { //makes an impact particle effect HitBox target = hit.transform.GetComponent <HitBox>(); // this checks to see if object hit has a certain script if (target != null) { target.HitByProjectile(HuntingRifleDamage); GameObject blik = Instantiate(blood, hit.point, Quaternion.LookRotation(hit.normal)) as GameObject; blik.transform.SetParent(target.transform); GameObject smokes = Instantiate(sparks, hit.point, Quaternion.LookRotation(hit.normal)) as GameObject; smokes.transform.SetParent(target.transform); } else { Instantiate(sparks, hit.point, Quaternion.LookRotation(hit.normal)); } } cam.transform.rotation *= Quaternion.Euler(-.1f, 0, 0.0f); HuntingRifleMagazine -= 1; activemagazine = HuntingRifleMagazine; hud.AmmoUpdate(); HuntingRifleTimer = 4; } } }