예제 #1
0
    protected void TestadorDePosicaoBase()
    {
        if (Mathf.Abs(transform.position.x - PosAnterior.x) == 0)
        {
            Mov.Pulo();
        }

        PosAnterior = transform.position;
    }
예제 #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();
    }