void Atira() { arma.EfeitoDisparo(); arma.municaoAtualNoPente--; AtualizaMunicao(); RaycastHit objetoAcertado; float distancia = arma.alcance; if (Physics.Raycast(cameraFPS.transform.position, cameraFPS.transform.forward, out objetoAcertado, distancia)) { GameObject buracoBala = (GameObject)Instantiate(marcaBala, objetoAcertado.point + objetoAcertado.normal * configuracao.distanciaBuracoBala, Quaternion.FromToRotation(Vector3.up, objetoAcertado.normal)); Destroy(buracoBala, configuracao.duracaoBala); buracoBala.transform.parent = objetoAcertado.transform; Rigidbody corpoAtingido = objetoAcertado.transform.gameObject.GetComponent <Rigidbody> (); if (corpoAtingido != null) { corpoAtingido.AddForce(-objetoAcertado.normal * arma.dano * configuracao.forcaImpacto); } IDanificavel danificavel = objetoAcertado.transform.gameObject.GetComponent <IDanificavel>(); if (danificavel != null) { danificavel.TomaDano(arma.dano); } } if (arma.municaoAtualNoPente == 0) { Recarrega(); } }