He visto muchas preguntas como esta, y el problema es que la pregunta no tiene sentido. No son lo mismo, es un poco como decir "¿cómo convierto una manzana en un ladrillo"?

Pero, por lo general, la pregunta subyacente tiene sentido, es la redacción la que resulta sospechosa.

Lo que quiero hacer es esto:

  • Tengo un objeto en el marco de referencia del espacio mundial con una rotación representada por el Quaternion R.
  • si ese objeto se moviera hacia adelante en relación con su marco de referencia local, es decir, directamente a lo largo de su eje Z local, en una cantidad nominal ...
  • ... ¿cuál sería el Vector3 cuyos componentes (normalizados) representan ese movimiento en el marco de referencia mundial?

Ahora, creo que la respuesta es

    Vector3 ans = R * Vector3.forward;

¿Es esto correcto y, de ser así, por qué? (Si no es correcto, ¿cuál es la respuesta?)

2
nmw01223 12 jul. 2020 a las 09:03

1 respuesta

La mejor respuesta

Si, eso es correcto.

Quaternion * Vector3 toma un vector dado y lo rota de acuerdo con el dado. rotación.

Entonces, si su R es básicamente el espacio-mundo transform.rotation del objeto, entonces el resultado será el vector de avance local del objeto (Z positivo) como un vector en las coordenadas del espacio mundial.


También puede utilizar directamente el vector transform.forward del objeto que básicamente equivale transform.rotation * Vector3.forward

4
derHugo 12 jul. 2020 a las 15:08