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;
 }
示例#2
0
    // 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);
     }
 }