Transform Location, Coordenadas Relativas a Mundo en Unreal
Índice de contenido
¿Cómo podemos mover este personaje del punto A al punto B en Unreal engine?
Esto es útil cuando tenemos un enemigo o similar y queremos que se desplace automáticamente entre los puntos A y B.
Para esto, usamos un par de vectores, el A que es global:

Y el B, que es relativo y en el cual, activamos el widget para poder visualizarlo y moverlo:

Ahora bien, como hacemos que se mueva del punto A a B. Es muy sencillo. Realmente esta no es la parte principal que quiero explicar, pero igual te la voy a mencionar.
El Cronograma y la Interpolación
Aquí tenemos el cronograma. Como siempre, hay muchas formas de hacerlo, pero esta sería la más tradicional:

Posiciones Globales y Relativas
La posición A la inicializo en el constructor, obteniendo la posición global del personaje. Hasta aquí todo bien, ya que A siempre será el punto de retorno.
El problema surge con la posición B, que es dinámica y relativa.
Si B está en 0,0,0, equivale a la posición A.
A partir de ahí se desplaza, pero sigue siendo relativa.
Una posición global sería la de un objeto en el mundo (ejemplo: la araña).
Una posición relativa depende de otra (ejemplo: la luna respecto a la tierra) y en este ejemplo, la tierra tendría una posición global en el universo.
Por eso, si muevo B a (300,0,0), esa no es una posición global, sino relativa a A. Para convertirla en global tendría que sumar las coordenadas de A y de B.
El Problema de las Rotaciones
Hasta aquí parece sencillo, pero el verdadero dilema aparece con las rotaciones.
Si solo sumara A y B, funcionaría bien para posiciones, pero no para rotaciones.
Probé varias soluciones. Una de ellas era:
- Obtener la rotación del personaje.
- Multiplicar esa rotación por B.
- Luego sumar la posición de A.

Esto funcionaba hasta cierto punto, pero al aplicar rotaciones más complejas, los resultados se rompían.
La Solución Correcta: Transform Location
Finalmente descubrí un nodo que resuelve este problema: Transform Location.
Este nodo transforma una posición local a una posición global.
El flujo es simple:
- Obtengo la posición A (global).
- Uso el nodo GetWorldTransform para acceder a la escala, traslación y rotación.
- Paso B (relativo) por el nodo Transform Location.
- Voilà, ahora B está convertido a coordenadas globales.
- Con esto, cualquier rotación funciona correctamente y el movimiento se mantiene estable.

Conclusión
Si quieres mover un objeto de posiciones locales a globales, lo más práctico es usar el nodo Transform Location.
De esta forma puedes trabajar con interpolaciones, movimientos relativos y rotaciones sin romper el sistema.
Acepto recibir anuncios de interes sobre este Blog.
Mostramos como podemos desplazar un mesh de A a B en donde A tiene una posición de mundo y B una posición relativa.