Example #1
0
    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();
        }
    }