void MudarParaAnimaBracoFinalizado() { MonoBehaviour.Destroy(raio); MonoBehaviour.Destroy(luz); estado = EstadoDoAnimaBraco.AnimaBracoFinalizado; }
public bool AnimaTroca( bool eItem = false ) { GameObject gerente = manager.gameObject; tempoDecorrido += Time.deltaTime; switch (estado) { case EstadoDoAnimaBraco.manipulandoCamera: if (mCamera.FocarPonto(VELOCIDADE_DE_MOVIMENTO_DE_CAMERA * Mathf.Max(Vector3.Distance(gerente.transform.position, alvo.transform.position), VELOCIDADE_MINIMA_PARA_MOVIMENTO_DE_CAMERA))) { estado = EstadoDoAnimaBraco.animaTroca; } break; case EstadoDoAnimaBraco.animaTroca: animador.AnimaTroca(); estado = EstadoDoAnimaBraco.AnimandoTroca; tempoDecorrido = 0; break; case EstadoDoAnimaBraco.AnimandoTroca: if (tempoDecorrido > TEMPO_DA_PRIMEIRA_ANIMACAO) { luz = ParticulasDeSubstituicao.InsereParticulaDaLuva(gerente, true); raio = ParticulasDeSubstituicao.InsereParticulaDoRaio(posCriature, gerente); estado = EstadoDoAnimaBraco.InsereRaioDeLuva; tempoDecorrido = 0; } break; case EstadoDoAnimaBraco.InsereRaioDeLuva: if (tempoDecorrido > TEMPO_PARA_INSTANCIAR_PARTICULA_CHAO && alvo.transform.localScale.sqrMagnitude > 0.01f) { ParticulasDeSubstituicao.ParticulaSaiDaLuva(alvo.transform.position); if (!eItem) { estado = EstadoDoAnimaBraco.DiminuiEscalaDoCriature; } else { mCamera.InicializaCameraExibicionista(alvo.transform, alvo.GetComponent <CharacterController>().height); estado = EstadoDoAnimaBraco.TerminaORaio; } tempoDecorrido = 0; } break; case EstadoDoAnimaBraco.DiminuiEscalaDoCriature: if (tempoDecorrido < TEMPO_DE_REDUCAO_DE_ESCALA) { alvo.transform.localScale = Vector3.Lerp(alvo.transform.localScale, Vector3.zero, 2 * Time.deltaTime); } else { estado = EstadoDoAnimaBraco.TerminaORaio; tempoDecorrido = 0; } break; case EstadoDoAnimaBraco.TerminaORaio: if (tempoDecorrido < TEMPO_PARA_FINALISAR_RAIO) { if (!eItem) { MonoBehaviour.Destroy(alvo); } ParticulasDeSubstituicao.ReduzVelocidadeDoRaio(raio); } else if (!eItem) { MudarParaAnimaBracoFinalizado(); return(false); } if (eItem) { if (mCamera.FocarPonto(VELOCIDADE_DE_MOVIMENTO_DE_CAMERA * Mathf.Max(Vector3.Distance(gerente.transform.position, alvo.transform.position), VELOCIDADE_MINIMA_PARA_MOVIMENTO_DE_CAMERA))) { MudarParaAnimaBracoFinalizado(); return(false); } } break; case EstadoDoAnimaBraco.AnimaBracoFinalizado: return(false); //break; } return(true); }