예제 #1
0
    public void trocarArma(int id)
    {
        gameController.idArma = id;

        switch (gameController.idClasseArmas[id])
        {
        case 0:     //espadas, machados, macas, martelos
            armas[0].GetComponent <SpriteRenderer>().sprite = gameController.spriteArmas1[id];

            ArmaInfo tempInfoArma = armas[0].GetComponent <ArmaInfo>();
            tempInfoArma.danoMin  = gameController.danoMinArma[idArma];
            tempInfoArma.danoMax  = gameController.danoMaxArma[idArma];
            tempInfoArma.tipoDano = gameController.tipoDanoArma[idArma];

            armas[1].GetComponent <SpriteRenderer>().sprite = gameController.spriteArmas2[id];
            tempInfoArma          = armas[1].GetComponent <ArmaInfo>();
            tempInfoArma.danoMin  = gameController.danoMinArma[idArma];
            tempInfoArma.danoMax  = gameController.danoMaxArma[idArma];
            tempInfoArma.tipoDano = gameController.tipoDanoArma[idArma];

            armas[2].GetComponent <SpriteRenderer>().sprite = gameController.spriteArmas3[id];
            tempInfoArma          = armas[2].GetComponent <ArmaInfo>();
            tempInfoArma.danoMin  = gameController.danoMinArma[idArma];
            tempInfoArma.danoMax  = gameController.danoMaxArma[idArma];
            tempInfoArma.tipoDano = gameController.tipoDanoArma[idArma];
            break;

        case 1:
            arcos[0].GetComponent <SpriteRenderer>().sprite = gameController.spriteArmas1[id];
            arcos[1].GetComponent <SpriteRenderer>().sprite = gameController.spriteArmas2[id];
            arcos[2].GetComponent <SpriteRenderer>().sprite = gameController.spriteArmas3[id];
            break;

        case 2:
            staffs[0].GetComponent <SpriteRenderer>().sprite = gameController.spriteArmas1[id];
            staffs[1].GetComponent <SpriteRenderer>().sprite = gameController.spriteArmas2[id];
            staffs[2].GetComponent <SpriteRenderer>().sprite = gameController.spriteArmas3[id];
            staffs[3].GetComponent <SpriteRenderer>().sprite = gameController.spriteArmas4[id];
            break;
        }
        gameController.idArmaAtual = gameController.idArma;
    }
    void OnTriggerEnter2D(Collider2D col)
    {
        if (died == true)
        {
            return; // se remover esse bloco e a variável died, o cadáver ainda pode ser espancado
        }
        switch (col.gameObject.tag)
        {
        case "Arma":

            if (getHit == false)
            {
                getHit = true;
                barrasVida.SetActive(true);
                ArmaInfo armaInfo = col.gameObject.GetComponent <ArmaInfo>();

                inimigoAnimator.SetTrigger("hit");

                float danoArma   = Random.Range(armaInfo.danoMin, armaInfo.danoMax);
                int   tipoDano   = armaInfo.tipoDano;
                float danoTomado = danoArma + (danoArma * (ajusteDano[tipoDano] / 100));
                vidaAtual -= Mathf.RoundToInt(danoTomado);                                          //reduz da vida a quantidade de dano tomado

                percVida = (float)vidaAtual / (float)vidaInimigo;

                if (percVida < 0)
                {
                    percVida = 0;
                }

                hpBar.localScale = new Vector3(percVida, 1, 1);

                if (vidaAtual <= 0)
                {
                    //deixar o corpo do inimigo sem poder ser arrastado depois de morto
                    this.gameObject.layer = 12;
                    died = true;
                    inimigoAnimator.SetInteger("idAnimation", 3);

                    StartCoroutine("loot");
                }

                GameObject danoTemp = Instantiate(danoTxtPrefab, transform.position, transform.localRotation);
                danoTemp.GetComponent <TextMesh>().text = Mathf.RoundToInt(danoTomado).ToString();
                //danoTemp.GetComponent<MeshRenderer>().sortingLayerName = "HUD"; //fazer o texto ficar em primeiro plano

                GameObject fxTemp = Instantiate(gameController.fxDano[tipoDano], transform.position, transform.localRotation);
                Destroy(fxTemp, 1);

                int forcaX = 50;
                if (playerEsquerda == false)
                {
                    forcaX *= -1;
                }
                danoTemp.GetComponent <Rigidbody2D>().AddForce(new Vector2(forcaX, 210));
                Destroy(danoTemp, 1f);

                GameObject knockTemp = Instantiate(knockForcePrefab, knockPosition.position, knockPosition.localRotation);
                Destroy(knockTemp, 0.02f);

                StartCoroutine("invuneravel");

                this.gameObject.SendMessage("tomeiHit", SendMessageOptions.DontRequireReceiver);
            }
            break;
        }
    }