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

Porque usar o Vector3 do Input.mousePosition não funciona?

Olá, fiz meu projeto conforme o vídeo e funcionou perfeitamente. Minha dúvida fica com relação a utilização do mousePosition.

Se Input.mousePosition já é um vetor com x, y e z da posição do mouse no jogo, porque o script abaixo não funciona?

    Vector3 mousepos = Input.mousePosition;

    mousepos.Set(mousepos.x, transform.position.y, mousepos.z);
    Quaternion novaRotacao = Quaternion.LookRotation(mousepos);
    GetComponent<Rigidbody>().MoveRotation(novaRotacao);

Sei que não funciona pois já testei, mas não entendi o motivo do personagem ficar olhando para um ponto fixo.

Obrigado.

4 respostas

Oi, Guilherme, tudo bem?

No caso as coordenadas do mouse são relativos a posição da tela 2D então elas são instáveis para lidar com objetos 3D, mas isso acho que você entendeu.

Sobre o script você tá trocando o valor da variável baseada nela mesma, talvez uma alteração para algo como:

Vector3 mousepos = new Vector3(Input.mousePosition.x, 0, Input.mousePosition.z);

Faça a movimentação acontecer, já que a nova variável pega os valores atualizados baseado em outro local.

Oi Henrique, não funcionou, mas encontrei a explicação na documentação do Unity:

*Input.mousePosition is a Vector3 for compatibility with functions that have Vector3 arguments. The z component of the Vector3 is always 0.

The bottom-left of the screen or window is at (0, 0). The top-right of the screen or window is at (Screen.width, Screen.height).***

Com isso habilitei o eixo y: Vector3 mousePos = new (Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z); e o personagem girou no eixo Y conforme esperado, porém sem fazer sentido a direção da arma.

Ou seja, a rotação relativa de um personagem de um jogo 3D não pode ser baseada somente na coordenada x,y do mouse na tela, pois como existe um ângulo de inclinação da câmera com relação ao personagem, para a correta rotação deve ser considerado um vetor do centro da câmera até o ponto de rotação. O que no curso está sendo feito com o ray.

Faz sentido?

solução!

Isso, eu que errei na ordem ali haha

Exato, o que a gente tem que fazer é calcular relacionado a angulação de como estamos vendo o jogo + onde o personagem está por isso

E isso só vale para jogos top down como o nosso, se fosse FPS a gente teria que se basear em outros parâmetros, lateral em outros, então tudo depende da forma com que usamos para visão de jogo.

Obrigado!