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

Alguma função para tirar a diferença entre 2 Vector3 em um novo Vector3 ?

queria saber se existe uma função como EX criado : Vector3 variavel = Vector3.diferença (posição da camera , posição do jogador)

no modo ensinado na aula , se colocarmos a posição do jogador e subtrair da posição da câmera , o resultado pode ser um vector3 com valores negativos ja que por exemplo , 5-2 != 2-5 , então eu gostaria de saber se existe um modo de tirar a diferença entre 2 números em c# mesmo que tenha que fazer isso para cada eixo do vector3 X , Y e Z .

4 respostas

Oi, Daniel, tudo bem?

Não entendi muito bem o que você quer fazer pode dar um exemplo?

Porque a subtração ou adição de dois Vector3 faz exatamente isso e podemos trabalhar a ordem dos fatores para querermos a diferença relativa.

é só que eu achei um pouco confuso o porque a ordem de subtração dos fatores ser a mencionada na aula , porque subtrair a posição da camera pela a do jogador e não a do jogador pela a da camera ?

solução!

É que nesse caso é uma operação de vetores então a ordem dos fatores faz a diferença porque um vetor tem modulo, direção e sentido.

Então a ordem pode interferir nesses fatores. No caso a gente quer um vetor que representa a distancia da camera até o jogador por isso usamos posição final (camera) - posição inicial (jogador). Isso vai dar a diferença entre as duas,

Não tem problema trocar a ordem mas depois na hora de compensar teria que mudar a operação.

Pensa assim:

Nossa personagem tá na posição 1, 0, 1 do mundo em x, y, z certo. E nossa camera está em algo como 1, 3, 3 pra poder ver a personagem um pouco mais alto e atrás.

Se eu faço final - inicial eu teria 1, 3, 3 da camera menos 1, 0, 1 = 0, 3, 2 então a camera tem que compensar 0 em X, 3 em Y e 2 em Z da personagem nessa posição

Agora se eu inverto a ordem inicial - final = 1, 0, 1 - 1, 3, 3 = 0, -3, -2. Não fez diferença nos números mas agora o fato de ser negativo muda a direção do vetor em função do 0, 0, 0 do mundo esse vetor estaria abaixo do chão enquanto o outro estaria acima então temos que inverter a conta depois no offset pra compensar essa mudança

Não sei se ficou muito claro, mas se quiser posso colocar essas contas em um plano cartesiano desenhado pra fazer mais sentido. Só me avisa :)

ficou sim , obg