void Update() { switch (fase) { case FasesDesseTrigger.movimentoDePersonagem: CaminheHeroi(transform.position); break; case FasesDesseTrigger.movimentoDeCamera: CameraAteFalas(); break; case FasesDesseTrigger.falas: if (DisparaT.UpdateDeTextos(T, Fota)) { movNPC = new MovimentoControladoParaNPC(); movNPC.InsereElementosDeControle(Alvo.gameObject, alvoDaCaminhada); AplicadorDeCamera.cam.FocarBasica(Alvo, 10, 10); fase = FasesDesseTrigger.npcEmMovimento; } break; case FasesDesseTrigger.npcEmMovimento: if (movNPC.UpdatePosition()) { AplicadorDeCamera.cam.FocarBasica(Manager.transform, 10, 10); Invoke("MudaPosDoNPC", 0.25f); Invoke("VoltaControleDoHeroi", 0.3f); Destroy(Destrutivel.gameObject); fase = FasesDesseTrigger.finalizar; } break; } }
// Update is called once per frame void Update() { switch (fase) { case FasesDesseTrigger.movimentoDoHeroi: CaminheHeroi(primeiraPosHeroi.position); break; case FasesDesseTrigger.movimentoDeCamera: CameraAteFalas(); break; case FasesDesseTrigger.falas: if (DisparaT.UpdateDeTextos(T, Fota)) { Manager.Estado = EstadoDePersonagem.movimentoDeFora; fase = FasesDesseTrigger.movimentoAteAPedra; } break; case FasesDesseTrigger.movimentoAteAPedra: Vector3 pos = segundaPosHeroi.position; if (Vector3.Distance(Manager.transform.position, pos) > 0.5f) { Manager.Mov.AplicadorDeMovimentos((pos - Manager.transform.position).normalized); } else { EntrarNaFaseDoEmpurrao(); conjuntoDePoeira.SetActive(true); } break; case FasesDesseTrigger.empurrando: if (Vector3.Distance(pedraRemovivel.position, posParaPedra.position) > 0.5f) { pedraRemovivel.position += Vector3.forward * Time.deltaTime; } else { Manager.transform.parent = null; Alvo.parent = null; Manager.Mov.Animador.ForcarPadrao(); movNPC.Mov.Animador.ForcarPadrao(); Destroy(conjuntoDePoeira); DisparaT.IniciarDisparadorDeTextos(); T = bancoDeTextos.RetornaListaDeTextoDoIdioma(ChaveDeTexto.continueMeSeguindo).ToArray(); fase = FasesDesseTrigger.falaPraSeguirDenovo; } break; case FasesDesseTrigger.falaPraSeguirDenovo: if (DisparaT.UpdateDeTextos(T, Fota)) { AplicadorDeCamera.cam.FocarBasica(Alvo, 10, 10); movNPC.InsereElementosDeControle(Alvo.gameObject, segundoPontoParaNPC); fase = FasesDesseTrigger.NpcParaNovoPonto; } break; case FasesDesseTrigger.NpcParaNovoPonto: if (movNPC.UpdatePosition()) { AplicadorDeCamera.cam.FocarBasica(Manager.transform, 10, 10); Invoke("MudaPosDoNPC", 0.25f); Invoke("VoltaControleDoHeroi", 0.3f); Destroy(Destrutivel.gameObject); fase = FasesDesseTrigger.finalizar; } break; } }