Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
11
respostas

[Bug] Personagem não anda

O script está de acordo com as aulas. Anteriormente o personagem se movia de forma contraria as teclas, e após adicionar o FixedUpdate o personagem não anda ou executa animação de andar

11 respostas

Oi, Ana, tudo bem?

Pode colar seu script aqui?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ControlaJogador : MonoBehaviour {

    public float Velocidade = 10;
    Vector3 direcao;

    // Update is called once per frame
    void Update () {

        float eixoX = Input.GetAxis("Horizontal");
        float eixoZ = Input.GetAxis("Vertical");

        direcao = new Vector3(eixoX, 0, eixoZ);

        if(direcao != Vector3.zero)
        {
            GetComponent<Animator>().SetBool("Movendo", true);
        }
        else
        {
            GetComponent<Animator>().SetBool("Movendo", false);
        }

    }

    void FixedUpdate()
    {
        GetComponent<Rigidbody>().MovePosition (GetComponent<Rigidbody>().position +(direcao * Velocidade * Time.deltaTime));
    }
}

Algum erro no console ou tudo certo?

Onde fica os componentes, em script, aparece a mensagem: "The associated script cannot be loaded, please fix any compile errors and assign a valid script", mas não apresenta erros no código e já tentei deletar o script e criar outro. O personagem fica parado na animação de idle

Dá o Play então e aí abre o console usando ctrl+shift+c e cola os erros em vermelho que aparecem lá aqui pra darmos uma olhada

em vermelho nenhum, porém aparecem esses Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Pode mandar uma foto da personagem?

Parece ter varias referencias faltando, o que seria o MovimentaJogador? Você criou em algum momento?

A Rua_Canto(1) parece ter um script que não deveria.

ok, consegui resolver. o script "movimentajogador" deveria se chamar controla jogador, por isso o código estava errado e não fazia os comandos. Mas agora o personagem voltou a se mover de forma contraria as teclas ('a' vai pra direita, 'd' pra esquerda, 'w' para trás e 's' pra frente)

Tudo certo então? :)

Faltou algo?

Sim, os comandos estão invertidos ('a' vai pra direita, 'd' pra esquerda, 'w' para trás e 's' pra frente)

solução!

Isso é porque a personagem deve estar rotacionada, no Inspector zera todas as rotações da personagem.

Se você quiser continuar com ela virada você teria que inverter o Input fazendo algo como:

-1 * Input.GetAxis...