Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Modelo do jogador rotacionando para baixo apos usar plane para mirar

Em um dos topicos desse curso, teve um que ajudou a arrumar a mira usando o plane em vez da mascara do chão, mas depois de eu fazer aquilo o personagem começou a rotacionar para o chão e eu estou bem perdido com isso. Aqui ta o codigo da rotação do jogador:

public void RotacaoJogador(Plane plano)
    {
        Ray raio = Camera.main.ScreenPointToRay(Input.mousePosition);
        Debug.DrawRay(raio.origin, raio.direction * 100, Color.red);

        float impacto;

        if (plano.Raycast(raio, out impacto))
        {
            Vector3 localColisao = raio.GetPoint(impacto);
            localColisao.y = 0;

            Vector3 posicaoParaOlhar = localColisao - transform.position;

            Rotacao(posicaoParaOlhar);
        }
public void Rotacao(Vector3 direcao)
    {
        Quaternion novaRotacao = Quaternion.LookRotation(direcao);
        meuRigidbody.MoveRotation(novaRotacao);
    }
3 respostas

Eu recomentaria você criar o Plane dentro do método porque ele é algo que não muda no jogo então não faz tanto sentido receber ele como parâmetro:

Plane plano = new Plane(Vector3.up, posicaoMira.transform.position);

Mas pode falar como está criando seu Plano? Porque é a peça que falta pra montar a chamada desses métodos :)

Obrigado pela recomendação depois eu vou fazer isso depois de tentar entender o porque do bug. E pra fazer o Plano criei a variavel do Plano e depois preenchi ela no start e como referencia eu usei o cano Da Arma

public GameObject CanoArma;
 public Plane Plano;
Plano = new Plane(Vector3.up, CanoArma.transform.position);
solução!

Eu fiz um novo projeto e tentei fazer a movimentação pela LayerMask Do chão pra tentar refazer os passos de como fiz o plano e percebi que eu zerei a variavel errada, eu devia ter zerado o posição pra olhar e não o localColisao:

 if (plano.Raycast(raio, out impacto))
        {
            Vector3 localColisao = raio.GetPoint(impacto);

            Vector3 posicaoParaOlhar = localColisao - transform.position;
            posicaoParaOlhar.y = 0;

            Rotacao(posicaoParaOlhar);
        }