Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Personagem mirando para baixo

Preciso de ajuda com um negócio que tá bem esquisito no meu jogo, eu desenhei o raio, lancei e testei onde ele colide com algo, coloquei a posição do eixo y da mira igual a do personagem, gerei a rotação e passei para o Rigidbody do meu personagem e criei o LayerMask do chão

public class ControlaJogador : MonoBehaviour {

    public float velocidade = 10;
    Vector3 direcao;
    public LayerMask MascaraChao;


    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() {
        //movimentar pela fisica

        GetComponent<Rigidbody>().MovePosition(GetComponent<Rigidbody>().position + 
            (direcao * velocidade * Time.deltaTime));

        //transform.Translate(direcao * velocidade * Time.deltaTime);
        //nao preciso mais


        Ray raio = Camera.main.ScreenPointToRay(Input.mousePosition);

        Debug.DrawRay(raio.origin, raio.direction * 100, Color.red);

        RaycastHit impacto; //toque do raio em qualquer coisa



        if(Physics.Raycast(raio, out impacto, 150, MascaraChao))
        {
            Vector3 posicaoMiraJogador = impacto.point - transform.position;

            posicaoMiraJogador.y = transform.position.y;

            Quaternion novaRotacao = Quaternion.LookRotation(posicaoMiraJogador);

            GetComponent<Rigidbody>().MoveRotation(novaRotacao);
        }
    }

}

maaas, meu jogador fica mirando para baixo, muito inclinado mesmo :( o que será que está faltando?

Obrigada!

2 respostas
solução

Oi, Thaís, tudo bem?

Tenta mudar esta linha:

posicaoMiraJogador.y = 0;

Dessa forma você tá tirando modificações na posição em Y. O que faz com que ele não olhe para cima ou para baixo e mantendo ele sempre olhando para frente.

Porque na hora de dar o LookRotation deixamos de levar em conta essa posição.

No meu acredito que não fiz assim porque meu personagem já estava no Y zero, mas acredito que solucionei esse problema nas outras partes do curso.

Veja se isso soluciona o problema?

Bons estudos! :)

Simmmm! Eu nem tinha prestado atenção nisso mesmo.

Muito obrigada!