public void Fire() { //print("Fired"); //shotTrail.Play(); muzzleFlash.Play(); RaycastHit hit; Ray ray = new Ray(shootPoint.transform.position, shootPoint.transform.forward); // Cast a ray that ignores triggers so we don't hit player trigger objects if (Physics.Raycast(ray, out hit, Mathf.Infinity, layerMask, QueryTriggerInteraction.Ignore)) { //if (!hit.collider.CompareTag("Enemy")) var hitPoint = hit.point; if (hit.collider.CompareTag("Destructible")) { Destructible destructible = hit.transform.GetComponent <Destructible>(); if (destructible != null) { destructible.DestroyIntoPieces(); } //AddExplosionForce(hit.point, explosionRadius, explosionForce); } else if (hit.collider.CompareTag("Enemy")) { //print("Enemy Hit: " + hit.collider.gameObject.name); //var hitDir = shootPoint.transform.position - hit.point; var hitDir = shootPoint.transform.forward; var parentObj = hit.collider.transform.parent; while (parentObj.GetComponent <Enemy>() == null) { parentObj = parentObj.transform.parent; //print("Going through while loop. Current Parent:" + parentObj.name); } //print("Enemy Hit: " + parentObj.name); Enemy enemy = parentObj.GetComponent <Enemy>(); enemy.EnemyTakeHit(_damage, hitDir, hit.collider.gameObject); //print("Enemy hit part: " + hit.collider.gameObject.name); //AddExplosionForce(hit.point, explosionRadius, explosionForce); //Collider[] colliders = Physics.OverlapSphere(hitPoint, 5f); //foreach (var col in colliders) //{ // print(col.gameObject.name); //} //print(colliders[0].gameObject.name); //if (colliders[0].transform.root.GetComponent<Enemy>() != null) //{ // colliders[0].transform.root.GetComponent<Enemy>().EnemyTakeHit(_damage); // print("Shot enemy - damage:" + _damage); //} //Enemy enemy = hit.transform.root.GetComponent<Enemy>(); //enemy.EnemyTakeHit(_damage); } else if (hit.collider.CompareTag("Rigidbody")) { AddExplosionForce(hit.point, _explosionRadius, _explosionForce, _explosionForceUp); } else { AddExplosionForce(hit.point, _explosionRadius, _explosionForce, _explosionForceUp); SpawnDecal(hit); } //_audioSource[0].PlayOneShot(clips[0]); //_audioSource[1].PlayOneShot(clips[1]); PlaySound.PlayAudio(_audioSource[0], true, -.15f, .15f); PlaySound.PlayAudio(_audioSource[1], false, 0, 0); clickSoundPlayed = false; HapticFeedback.HapticAmount(1000, true, false); //globalLowPass.GunShotLowPass(3000); //Debug.Log(hit.transform.name); gunBody.transform.localRotation = Quaternion.Euler(gunBody.transform.localRotation.x, gunBody.transform.localRotation.y, gunBody.transform.localRotation.z + recoilZAngle); } }