Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Transformaciones tridimensionales 3
Terminando el movimiento. 12
1.- Crear un Proyecto nuevo
1
2.- Cambiar Lenguaje del Editor
Las traducciones al español del editor tienen muchas deficiencias y no alcanzan a representar
correctamente las acciones que se realizan dentro de UE. Por ello, les recomiendo cambiar el lenguaje
para evitar confusiones. El inglés del editor es muy simple y bastante intuitivo, no requieren de
conocimientos avanzados de inglés para utilizarlo.
Control Acción
Mouse izquierdo + arrastrar Mueve la cámara adelante y hacia atrás, y rota izquierda y derecha
Mouse derecho + arrastrar Rota la cámara
Mouse derecho + arrastrar + W Mueve la cámara haca enfrente
Mouse derecho + arrastrar + S Mueve la cámara haca atrás
Mouse derecho + arrastrar + A Mueve la cámara haca la izquierda
Mouse derecho + arrastrar + D Mueve la cámara haca la derecha
Al navegar con WASD + mouse derecho, se puede girar la rueda del mouse para incrementar o
decrementar la velocidad de movimiento de la cámara.
https://docs.unrealengine.com/en-US/Engine/UI/LevelEditor/Viewports/ViewportControls
2
4.- Transformaciones tridimensionales
Los objetos tridimensionales que ocupen un lugar tridimensional dentro del espacio de UE contienen
tres transformaciones: Locación, Rotación, Escalamiento.
Dentro de UE estas tres transformaciones se representan con a través de estos gizmos respectivamente.
Las transformaciones se pueden aplicar a cada eje tridimensional, para hacerlo en un solo eje basta con
dar clic en el eje deseado y jalar con el mouse en la dirección de adentro hacia afuera o de izquierda a
derecha para realizar la operación.
Para aplicar en dos ejes hay que encontrar las líneas que conectan ambos ejes y realizar el mismo
movimiento.
Para cambiar de transformación, podemos hacerlo a través de las teclas W (Locacion), E (Rotacion), R
(Escalamiento). También seleccionando los botones mostrados a continuación.
3
Otra forma de modificar las transformaciones es a través del panel de “Details” del objeto (la cual aparece
al hacer clic en él), y establecer los valores manualmente.
4
5.- Dar forma al blanco
Para aprovechar la plantilla propuesta por UE de primera persona haremos un blanco movible para jugar
al tiro al blanco.
Procedemos a transformar el cubo para darle forma de tabla a través del escalamiento, seleccionando la
cantidad de unidades que queremos escalar a través del siguiente botón ubicado en la esquina superior
derecha de la ventana de la escena.
5
6.- Programación del comportamiento
Por ahora no programaremos en C++, por lo que la programación la llevaremos a cabo utilizando
Blueprints.
Dando clic al cubo, y desde el panel de Detalles daremos clic en el botón azul Blueprint/Add Script.
Escribimos un nombre para el código empezando por el prefijo “BP_” según la convención de nombres
de UE.
6
Event Graph es donde haremos la programación del blanco en movimiento.
Para navegar, haremos clic derecho dentro del espacio cuadriculado y moveremos el mouse.
• BeginPlay: Todo lo que se coloque aquí correrá una sola vez, antes de la primera trama del juego
(Al principio del juego)
• ActorBeginOverlap: Pendiente
• Tick: Aquí se colocará todo lo que necesitamos que se ejecute una y otra vez mientras el juego
siga corriendo. Todo lo que coloquemos aquí se ejecutará cada trama del juego, lo cual quiere
decir que la velocidad de ejecución será muy rápida (Fracciones de segundo).
Para empezar a programar, buscaremos los nodos que necesitamos haciendo clic derecho para que
aparezca una lista de acciones. En el cuadro de búsqueda escribiremos “Location” ya que queremos mover
el blanco y el movimiento está relacionado con la transformación de locación. La lista se reducirá, sin
embargo, seguirá bastante extensa para poder seleccionar una acción. Procederemos a escribir “Set” ya
que queremos modificar la locación. <En términos de programación cuando queremos modificar algo se
hace a través de los Setters, cuando queremos obtener algo, a través de los Getters>. Esto reducirá la lista
aún más y podemos empezar a discernir entre las opciones disponibles. Si nos vamos por la opción que
describe de manera más simple y concreta lo que queremos realizar, encontraremos la función que dice
Set Actor Location. Todo objeto que realice alguna acción dentro de UE que no reciba entradas de usuario
ni características de la Inteligencia Artificial será considerado un actor. Es por esto que la función incluye
la palabra Actor.
Al dar clic en la opción de “Set Actor Location” nos aparecerá el nodo (función).
7
Una función o método puede definirse como un bloque de código que ejecuta una acción determinada y
puede llamarse cuando se desee.
En vista de que la función establece al actor en la locación que nosotros le indiquemos, necesitamos una
forma de estarle estableciendo una nueva locación a partir de la que ya tiene para simular un movimiento.
En otras palabras, necesitamos preguntar al blanco por su ubicación actual, y a partir de ella sumarle una
cantidad cada vez que la función se mande a llamar. Para ello conectaremos la función a Event tick desde
el pin de ejecución (Exec) para que esta pueda ejecutarse constantemente. Partiendo del pin de ejecución
damos clic izquierdo y arrastramos la liga al pin de ejecución de la función. Si por alguna razón queremos
quitar la liga conectada entre dos bloques debemos dar clic izquierdo sobre uno de los pines conectados
+ ALT.
8
Diagrama de flujo del algoritmo.
Del diagrama de flujo anterior podemos notar que nos faltan dos elementos. La locación actual y la suma.
Para establecerlos en el blueprint procederemos a buscar la función que nos entregue la locación actual
del blanco, llamada Get Actor Location.
9
A continuación, crearemos una variable de tipo Vector para que el tipo de dato coincida con el que nos
está entregando la función Get y podamos realizar operaciones con ambas. Recordemos que para conocer
el tipo de dato que recibe o devuelve un bloque de blueprint basta con poner el mouse encima del pin y
esperar a que salga la descripción. Otra forma es identificando el color del bloque.
Para ello iremos al panel del lado izquierdo llamado “My Blueprint” y daremos clic en el icono “+” del
apartado “Variables”. Le estableceremos un nombre significativo que nos indique inmediatamente el
propósito de la variable. Al terminar este paso y teniendo seleccionada la variable, nos iremos al panel
“Details” (Si no tenemos seleccionada la variable, el panel no aparecerá), y en la opción “Variable Type”
daremos clic para desplegar la lista de los tipos de datos disponibles en UE y seleccionaremos el tipo de
dato Vector (Color amarillo).
Para poder establecerle un valor a la variable, necesitamos dar clic en el botón “Compilar” ubicado en la
parte superior de la ventana, y nos regresaremos al panel “Details” en la opción “Default Value”, donde
escribiremos la unidad de movimiento, en este caso será de una unidad en el eje “Y” ya que el blanco
resultó tener un movimiento horizontal enfrente del personaje con este eje.
El siguiente paso es realizar la suma de vectores. Utilizando la sensibilidad de contexto de los blueprints
daremos clic a la salida de cualquiera de los dos componentes que nos entregan Vectores y escribiremos
el signo + para obtener el nodo de suma de vectores (Vector + Vector) y conectaremos ambos nodos para
aplicarles la operación, y el resultado conectarlo a la función de Set Actor Location.
10
Finalmente compilaremos y regresaremos a la escena para asegurarnos de que la opción de movilidad
está puesta en “Movable”, y daremos Play para visualizar que nuestro blanco se mueve.
11
7.- Terminando el movimiento.
Para hacer que nuestro blanco se mueva de un lado a otro a partir de cierto tiempo, necesitamos contar
cuánto tiempo ha transcurrido (reloj), y también establecer un límite de ese tiempo para el cambio de
dirección. Una vez que el tiempo ha superado el límite, el blanco cambiará su dirección, y el reloj tendrá
que resetearse para que el conteo vuelva a empezar.
Analicen el siguiente código y determinen qué parte hace qué cosa de este proceso y cómo funciona en
general. Si quieren ir más lejos pueden intentar replicarlo y ver su resultado. Recuerden que si
acumulamos Delta Seconds podemos llevar un conteo del tiempo transcurrido (Obtener segundos).
Guíense también por los colores de los nodos los cuales indican el tipo de dato que contienen.
Hay un nodo que no hemos visto aún, que sirve para tomar decisiones a partir de condiciones, para
encontrarlo en la lista de acciones sólo búsquenlo por su nombre.
Finalmente, los valores como el tiempo límite de cambio, velocidad de movimiento, etc. pueden
establecerse aleatoriamente en tiempo de ejecución para incrementar el dinamismo en el
comportamiento.
12