Pregunta

Estoy empezando a aprender el marco de desarrollo de juegos Unity3D. Estoy tratando de hacer un "punto" de cilindro otro objeto cuando se presiona una tecla.

public GameObject target;
void Update () {
    if (Input.GetKeyDown(KeyCode.A)) {
        ???
    }
}

Sé que tengo que usar la posición del objetivo y el cilindro para alterar la rotación del cilindro, pero no puedo entender cómo, no creo que entiendo cuáles son esos cuaterniones.

¡Realmente apreciaría cualquier ayuda! Gracias,
Manuel

¿Fue útil?

Solución

Primero, su cilindro necesita alguna noción de 'adelante' o su 'dirección de apuntar' (mis palabras) en el espacio local del cilindro. Para esto, puede asumir (o ver visualmente) ya sea +x, +y, +z, -x, -y o -z; O puede especificar su propio vector arbitrario apuntando en otra dirección.

En segundo lugar, necesita un vector que apunte desde el centro de su cilindro al centro del otro objeto (ya mencionó esto).

Ahora puedes usar Unity's Quaternion.FromToRotation(...) Generar un cuaternión que, si se aplica a la rotación del mundo de su cilindro, girará su dirección de apuntar para estar en la dirección de su otro objeto. Hecho.

Tenga en cuenta que si su cilindro es más de un par de transformaciones profundas, entonces es posible que deba alterar la mecánica de este enfoque ligeramente para explicar posiblemente las transformaciones de los padres.

Otros consejos

¿Hay una razón por la que está utilizando cuaterniones? Usaría cuaterniones. Ángulos eulares que representan los cuaterniones como un vector 3, que es cómo comúnmente entendemos los ángulos.

Lo que dijo Ducky es correcto, sin embargo, si tiene problemas con los cuaterniones, recomendaría no usarlos hasta que comprenda mejor estos conjuntos de ángulos.

Espero eso ayude

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top