//Chamado em intervalos que dependem da sua inteligencia private void Pensar() { //o personagem está "ocupado", adiar if (Apaixonado) { Invoke("Pensar", 3f); } else { //cobrar o preço energético GastarComida(Genes.GetCost() * custoEnergeticoMultiplyer); //FoodAmount -= Genes.GetCost(); TargetTransform = null; TargetType = ""; //se não estiver DESESPERADO por comida, procura predador if (FoodAmount > Genes.GetCost() * custoEnergeticoMultiplyer) { Transform inimigo = SearchFor("Inimigo", Genes.Visao * QualidadeDaVisao); if (inimigo != null) { //fugir TargetPos = (transform.position - inimigo.position).normalized * Genes.Visao * QualidadeDaVisao / 2; } } //se tiver comida o suficiente, procurar parceiro if (PodeReproduzir() && TargetType == "") { Transform parceiroT = SearchFor("Parceiro", Genes.Visao * QualidadeDaVisao * 2); if (parceiroT != null) { Criatura parceiro = parceiroT.GetComponent <Criatura>(); //enviar msg para o parceiro if (parceiro.QuerCasarComigo(transform)) { //o parceiro aceitou! Apaixonado = true; //andar até ele TargetTransform = parceiroT; TargetType = "Parceiro"; //emitir corações LoveParticles.Play(); } } } //se não tiver comida suficiente ou não achar parceiro, procurar comida if (FoodAmount < MaxFoodAmount && !Apaixonado && TargetType == "") { Transform comidaT = SearchFor("Comida", Genes.Visao * QualidadeDaVisao); if (comidaT != null) { //achou comida! Comida comida = comidaT.GetComponent <Comida>(); if (comida.Comido == false) { TargetTransform = comidaT; TargetType = "Comida"; } } } //se não conseguir comida nem namoro, vagar if (TargetTransform == null) { if (TargetType == "Inimigo") { DeterminarDestino(TargetPos); } else { TargetType = ""; TargetPos = new Vector3( transform.position.x + Random.Range(-VagarDistancia, VagarDistancia), transform.position.y, transform.position.z + Random.Range(-VagarDistancia, VagarDistancia)); DeterminarDestino(TargetPos); } } else { DeterminarDestino(TargetTransform.position); } //pensar novamente depois //"2" é o tempo mínimo de descanso Invoke("Pensar", 2 + ((100 - Genes.Inteligencia) / 10)); } }