Esempio n. 1
0
    // Update is called once per frame
    void Update()
    {
        if (controlador.colisoes.abaixo || controlador.colisoes.acima)
        {
            velocidade.y = 0f;
        }

        if (contadorTempoEntrePulos <= 0 && controlador.colisoes.abaixo)
        {
            velocidade.y = velocidadePulo;

            contadorTempoEntrePulos = tempoEntrePulos;
        }

        if (contadorTempoEntrePulos > 0)
        {
            contadorTempoEntrePulos -= Time.deltaTime;
        }

        if (controlador.colisoes.abaixo)
        {
            estaPulando = false;
            estaParado  = true;
            estaCaindo  = false;
        }
        else if (velocidade.y <= 0)
        {
            estaPulando = false;
            estaParado  = false;
            estaCaindo  = true;
        }
        else
        {
            estaPulando = true;
            estaParado  = false;
            estaCaindo  = false;
        }

        animador.SetBool("estaParado", estaParado);
        animador.SetBool("estaPulando", estaPulando);
        animador.SetBool("estaCaindo", estaCaindo);

        velocidade.y += gravidade * Time.deltaTime;
        controlador.Mover(velocidade * Time.deltaTime);
    }
Esempio n. 2
0
    void Update()
    {
        if (controlador.colisoes.abaixo || controlador.colisoes.acima)
        {
            velocidade.y = 0f;
        }

        contadorIntervaloEntrePulos -= Time.deltaTime;

        if (contadorIntervaloEntrePulos <= 0f)
        {
            if (controlador.colisoes.abaixo)
            {
                velocidade.y = velocidadePulo;
            }

            contadorIntervaloEntrePulos = intervaloEntrePulos;
        }

        velocidade.y += gravidade * Time.deltaTime;

        controlador.Mover(velocidade * Time.deltaTime);
    }
Esempio n. 3
0
    // Update is called once per frame
    void Update()
    {
        // Experimente o código e depois remova o comentário do trecho abaixo. Consegue notar o que mudou? *Para remover múltiplas linhas remova o /* e o */.
        if (controlador.colisoes.abaixo || controlador.colisoes.acima)
        {
            velocidade.y = 0f;
        }

        // Armazena o estado do personagem em um atributo dessa classe. Você consegue visualizar ele no Inspector enquanto o jogo roda :D Útil para entender se a sua movimentação está correta.
        estaNoChao = controlador.colisoes.abaixo;

        // Armazena os Inputs verticais do jogador (a, d, seta para esquerda e direita)
        float inputHorizontal = Input.GetAxisRaw("Horizontal");

        // Checa se a seta para cima foi apertada e se o jogador está no chão. Caso tudo seja verdadeiro, modifique nossa velocidade.y para podermos pular.
        // https://docs.microsoft.com/pt-br/dotnet/csharp/language-reference/operators/boolean-logical-operators
        // http://www.inf.ufpr.br/cursos/ci067/Docs/NotasAula/notas-6_Operadores_Logicos.html
        if (Input.GetKeyDown(KeyCode.UpArrow) && controlador.colisoes.abaixo)
        {
            velocidade.y = velocidadePulo;
        }

        if (velocidade.y != 0)
        {
            estaPulando = true;
            estaAndando = false;
            estaParado  = false;
        }
        else
        {
            if (inputHorizontal == 0)
            {
                estaAndando = false;
                estaParado  = true;
            }
            else
            {
                estaAndando = true;
                estaParado  = false;
            }

            estaPulando = false;
        }

        animador.SetBool("estaParado", estaParado);
        animador.SetBool("estaAndando", estaAndando);
        animador.SetBool("estaPulando", estaPulando);

        // Você consegue entender o que o código abaixo faz?
        // Tente substituír as duas linhas abaixo por a seguinte:
        // velocidade.x = inputHorizontal * velocidadeMovimento;
        // Você nota alguma diferença?
        float velocidadeAlvoX = inputHorizontal * velocidadeMovimento;

        velocidade.x = Mathf.SmoothDamp(velocidade.x, velocidadeAlvoX, ref suavizacaoXVelocidade, controlador.colisoes.abaixo ? tempoAceleracaoNoChao : tempoAceleracaoNoAr);

        // Adiciona nossa gravidade à velocidade.y
        velocidade.y += gravidade * Time.deltaTime;

        // E finalmente move nosso personagem.
        controlador.Mover(velocidade * Time.deltaTime);

        AtualizaOlhar(inputHorizontal);
    }