protected void Acelerar() { _Animator.SetTrigger("avancar"); UltimaAcelerada = Time.time; TempoDecorrido = 0; DirDaAceleracao = Vector3.ProjectOnPlane(GameController.g.Manager.transform.position - transform.position, Vector3.up).normalized; Mov.ChangeSpeed(InvestSpeed); OnActionActivate();//estado = EstadoDaqui.investindo; }
// Update is called once per frame void Update() { switch (estado) { case EstadoDaqui.movendo: UpdateMovendo(); break; case EstadoDaqui.esperandoMovimento: TempoDecorrido += Time.deltaTime; if (TempoDecorrido > TempoEsperando) { estado = EstadoDaqui.movendo; } break; case EstadoDaqui.telegrafandoPulo: TempoDecorrido += Time.deltaTime; if (TempoDecorrido > TEMPO_TELEGRAFANDO_PULO) { DirDaAceleracao = Vector3.ProjectOnPlane(GameController.g.Manager.transform.position - transform.position, Vector3.up).normalized; UltimaAcelerada = Time.time; Mov.ChangeSpeed(InvestSpeed); Mov.Pulo(); estado = EstadoDaqui.pulando; TempoDecorrido = 0; } break; case EstadoDaqui.pulando: Mov.AplicadorDeMovimentos(DirDaAceleracao); Debug.Log(Mov.NoChao); TempoDecorrido += Time.deltaTime; if (Mov.NoChao && TempoDecorrido > 0.5f) { TempoDecorrido = 0; estado = EstadoDaqui.tempoDepoisDoPulo; } break; case EstadoDaqui.tempoDepoisDoPulo: TempoDecorrido += Time.deltaTime; Mov.AplicadorDeMovimentos(Vector3.zero); if (TempoDecorrido > TempoEsperando) { Mov.ChangeSpeed(StandardSpeed); estado = EstadoDaqui.movendo; } break; } PositionChangeWithAndador(); }
protected void UpdateAcelerando() { TempoDecorrido += Time.deltaTime; if (TempoDecorrido < TEMPO_ACELERANDO) { Mov.AplicadorDeMovimentos( Vector3.ProjectOnPlane(DirDaAceleracao, Vector3.up)); } else { TempoDecorrido = 0; _Animator.SetTrigger("retornarAoPadrao"); OnFinallyAccelerate();//estado = EstadoDaqui.finalizandoInvestida; Mov.ChangeSpeed(StandardSpeed); } }