private void usarPocao(GameObject pocao, int i, int j) { Pocao pocaoUsada = pocao.GetComponent("Pocao") as Pocao; pocaoUsada.portador = this.player; pocaoUsada.recuperarPlayer(); Debug.Log(pocaoUsada.getQuantidade()); pocaoUsada.setQuantidade(pocaoUsada.getQuantidade() - 1); if (pocaoUsada.getQuantidade() == 0) //caso acabem as poções elas são removidas do inventário { this.removerItem(i, j); } }
//Verifica se o item é repetido(com o mesmo nome e status) e caso seja adiciona ao inventario //como um incremento na quantidade atual de itens private bool addItemRepetido(GameObject itemAtual, GameObject itemAdicionado) { bool resultado = false; if (itemAtual.name == itemAdicionado.name) { if (itemAtual.tag == "arma") { Arma armaAtual = itemAtual.GetComponent("Arma") as Arma; Arma armaAserAdd = itemAdicionado.GetComponent("Arma") as Arma; if (armaAtual.status.ehIgual(armaAserAdd.status)) { armaAtual.setQuantidade(armaAtual.getQuantidade() + 1); resultado = true; } } else if (itemAtual.tag == "escudo") { Escudo escudoAtual = itemAtual.GetComponent("Escudo") as Escudo; Escudo escudoAserAdd = itemAdicionado.GetComponent("Escudo") as Escudo; if (escudoAtual.status.ehIgual(escudoAserAdd.status)) { escudoAtual.setQuantidade(escudoAserAdd.getQuantidade() + 1); resultado = true; } } else if (itemAtual.tag == "pocao") { Pocao pocaoAtual = itemAtual.GetComponent("Pocao") as Pocao; Pocao pocaoAserAdd = itemAdicionado.GetComponent("Pocao") as Pocao; if (pocaoAtual.status.ehIgual(pocaoAserAdd.status)) { pocaoAtual.setQuantidade(pocaoAtual.getQuantidade() + 1); resultado = true; } } } return(resultado); }
private void comportamento() { if (player != null) { distanciaDoPlayer = Vector3.Distance(transform.position, player.transform.position);//pega a distancia do inimigo para o jogador switch (estadoAtual) { case Estado_Do_Inimigo.idle: { distanciaDoPlayer = Vector3.Distance(transform.position, player.transform.position);//pega a distancia do inimigo para o jogador if (distanciaDoPlayer < 100 && distanciaDoPlayer > 0) { if (distanciaDoPlayer < distanciaMinimaDoPlayer) { setEstado(Estado_Do_Inimigo.attack); } else { seguirPlayer(true); } } else { seguirPlayer(false); } if (status.hpAtual <= 0) { setEstado(Estado_Do_Inimigo.morrer); } } break; case Estado_Do_Inimigo.attack: { if (distanciaDoPlayer >= distanciaMinimaDoPlayer || player.getStatus().hpAtual == 0) {//caso o player se afaste d+ durante um ataque o mob vai voltar a segui-lo enemyAnimator.SetBool("attack", false); setEstado(Estado_Do_Inimigo.idle); } else if (numDeGolpes >= numDeAtaquesMax) {//para os ataques quando numero de golpes deferidos for igual ao número máximo de golpes enemyAnimator.SetBool("attack", false); atrasarAtaque = true; } else { enemyAnimator.SetBool("attack", true);//inicia a animação de ataque } if (status.hpAtual <= 0) { setEstado(Estado_Do_Inimigo.morrer); } if(this.player.getEstado() == "morto" && this.contMorte==0) { this.receberXp(this.player.getXp()); Debug.Log(this.player.getXp()); this.contMorte = 1; } } break; case Estado_Do_Inimigo.morrer: { if (this.estaMorto == false) { Debug.Log("aki"); enemyAnimator.SetBool("morrer", true); this.player.receberXp(this.getXp());//passa o xp para o player //teste de drop this.drop.numItensDropados = 2; Pocao pocao1 = new Pocao(); pocao1.setNome("pocaoDeVida"); pocao1.setTipo("pocoes"); this.drop.getListaItens().Add(pocao1); this.drop.getProbabilidades().Add(1f); Debug.Log(pocao1.getQuantidade()); /*Arma espadaBasica = new Arma(); espadaBasica.setNome("Abbadon"); espadaBasica.setTipo("Armas"); this.drop.getListaItens().Add(espadaBasica); this.drop.getProbabilidades().Add(0.3f);*/ this.drop.droparItem(transform.position); } this.estaMorto = true; Destroy(gameObject,1);//faz o inimigo desaparecer ao morrer. 1 indica que deve possui um delay de 1 segundo. } break; } } else { this.voltarPosicaoInicial();//caso não esteja vendo o player volte a posição inicial; } }
void GUIinventario(int windowID) //funçao que cria a GUI do inventario { GUI.BeginGroup(new Rect(0, 20, 200, 200)); GUI.Box(new Rect(0, 0, 200, 200), ""); for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (inventario[i, j] != null) { //captura a imagem do item SpriteRenderer render = inventario[i, j].GetComponent("SpriteRenderer") as SpriteRenderer; //captura o render do prefab Texture2D imagemItem = render.sprite.texture; //a partir do render ele obtem a imagem do prefab(Sprite) if (GUI.Button(new Rect(40 * j, 40 * i, 40, 40), imagemItem)) { //aqui fica o código resposanvel por equipar os itens //ao personagem if (Time.time - lastClick < 0.3) //só usa o item ao se dar um "double click" { if (this.inventario[i, j].tag == "arma") { this.equiparArma(inventario[i, j]); } else if (this.inventario[i, j].tag == "escudo") { this.equiparEscudo(this.inventario[i, j]); } else if (this.inventario[i, j].tag == "pocao") { this.usarPocao(inventario[i, j], i, j); } } else //um click exibe o status do item { if (this.inventario[i, j].tag == "arma") { Arma armaSelecionada = inventario[i, j].GetComponent("Arma") as Arma; Arma arma = armaSelecionada.GetComponent("Arma") as Arma; arma.setPortador(objEstatus); statusText = "Dano:" + armaSelecionada.getDanoBase() + "\n" + "Quantidade:" + armaSelecionada.getQuantidade(); } else if (this.inventario[i, j].tag == "pocao") { Pocao pocaoUsada = inventario[i, j].GetComponent("Pocao") as Pocao; statusText = "Recupera:" + pocaoUsada.recuperacao + "\n" + "Quantidade:" + pocaoUsada.getQuantidade(); } } lastClick = Time.time; } } else { if (GUI.Button(new Rect(40 * j, 40 * i, 40, 40), "" + i + "" + j)) { //caso nao tenha itens o slot ficara default } } } } GUI.EndGroup(); GUI.Box(new Rect(200, 20, 200, 200), statusText); //box de informaçao dos itens }
private void comportamento() { if (player != null) { distanciaDoPlayer = Vector3.Distance(transform.position, player.transform.position);//pega a distancia do inimigo para o jogador switch (estadoAtual) { case Estado_Do_Inimigo.idle: { distanciaDoPlayer = Vector3.Distance(transform.position, player.transform.position); //pega a distancia do inimigo para o jogador if (distanciaDoPlayer < 100 && distanciaDoPlayer > 0) { if (distanciaDoPlayer < distanciaMinimaDoPlayer) { setEstado(Estado_Do_Inimigo.attack); } else { seguirPlayer(true); } } else { seguirPlayer(false); } if (status.hpAtual <= 0) { setEstado(Estado_Do_Inimigo.morrer); } } break; case Estado_Do_Inimigo.attack: { if (distanciaDoPlayer >= distanciaMinimaDoPlayer || player.getStatus().hpAtual == 0) //caso o player se afaste d+ durante um ataque o mob vai voltar a segui-lo { enemyAnimator.SetBool("attack", false); setEstado(Estado_Do_Inimigo.idle); } else if (numDeGolpes >= numDeAtaquesMax) //para os ataques quando numero de golpes deferidos for igual ao número máximo de golpes { enemyAnimator.SetBool("attack", false); atrasarAtaque = true; } else { enemyAnimator.SetBool("attack", true); //inicia a animação de ataque } if (status.hpAtual <= 0) { setEstado(Estado_Do_Inimigo.morrer); } if (this.player.getEstado() == "morto" && this.contMorte == 0) { this.receberXp(this.player.getXp()); Debug.Log(this.player.getXp()); this.contMorte = 1; } } break; case Estado_Do_Inimigo.morrer: { if (this.estaMorto == false) { Debug.Log("aki"); enemyAnimator.SetBool("morrer", true); this.player.receberXp(this.getXp()); //passa o xp para o player //teste de drop this.drop.numItensDropados = 2; Pocao pocao1 = new Pocao(); pocao1.setNome("pocaoDeVida"); pocao1.setTipo("pocoes"); this.drop.getListaItens().Add(pocao1); this.drop.getProbabilidades().Add(1f); Debug.Log(pocao1.getQuantidade()); /*Arma espadaBasica = new Arma(); * espadaBasica.setNome("Abbadon"); * espadaBasica.setTipo("Armas"); * this.drop.getListaItens().Add(espadaBasica); * this.drop.getProbabilidades().Add(0.3f);*/ this.drop.droparItem(transform.position); } this.estaMorto = true; Destroy(gameObject, 1); //faz o inimigo desaparecer ao morrer. 1 indica que deve possui um delay de 1 segundo. } break; } } else { this.voltarPosicaoInicial();//caso não esteja vendo o player volte a posição inicial; } }