void ComportamentoDoMago() { switch (fase) { case faseDoMago.rirDoHeroi: ProcureRisada(); break; case faseDoMago.rindoDoHeroi: tempoDecorrido += Time.deltaTime; if (tempoDecorrido > TEMPO_RINDO) { OcupandoPosicao(); } break; case faseDoMago.ocupandoPosicao: if (Vector3.Distance(transform.position, pontoDeGuarda) < 3f) { fase = faseDoMago.emPOsicaoDeAtaque; } break; case faseDoMago.emPOsicaoDeAtaque: RotinaDeAtaque(); break; } animator.SetFloat("velocidade", nav.velocity.magnitude); transform.LookAt(tHeroi); transform.position = Vector3.Lerp(transform.position, transform.parent.position, Time.deltaTime * VELOCIDADE_PARA_VOLTAR_AO_PAI); }
void ProcureRisada() { if (Vector3.Distance(transform.position, tHeroi.position) > DISTANCIA_PARA_RIR) { nav.destination = tHeroi.position; } else { nav.destination = transform.position; animator.SetTrigger("darRisada"); audioX.clip = risadas[Mathf.Clamp(Random.Range(-2, 2), 0, 1)]; audioX.Play(); fase = faseDoMago.rindoDoHeroi; tempoDecorrido = 0; } }
void OcupandoPosicao() { fase = faseDoMago.ocupandoPosicao; nav.destination = pontoDeGuarda; }