En este tutorial, crearás lógica para impulsar una plataforma móvil y la activarás con los objetos de jugabilidad que construiste en Rompecabezas: interruptores y cubos. También incorporarás el tiempo de la mecánica de juego en tu rompecabezas.
Con un proceso de trabajo modular, podrás modificar la escala, el movimiento, el destino y la velocidad de la plataforma desde el visor. También podrás elegir en qué plataforma quieres activar cualquier interruptor con un solo clic.
Con esta flexibilidad, puedes realizar cambios en tu nivel y probar su función sobre la marcha mientras diseñas. Las opciones de diseño eficientes y flexibles mejoran la velocidad y la resistencia de tu proceso de desarrollo.
Antes de empezar
Este tutorial asume que ya conoces los siguientes temas que se han tratado en las secciones anteriores de El diseño de una aventura de puzles:
Materiales
Blueprints
Variables
Interfaces de blueprint
Modo Reproducir en el editor
Necesitarás los siguientes recursos que creaste en Creación de una llave y Rompecabezas: interruptores y cubos:
BP_SwitchBP_CubeBP_KeyBPI_InteractionM_BasicColorM_EmissiveColorM_BasicColor_Blue
Creación de una plataforma móvil
Si aprendes a crear una plataforma móvil y a activarla con un interruptor, podrás diseñar funciones sencillas, como transportar a un jugador por un nivel. El interruptor, el cubo y la plataforma se pueden combinar para crear funciones complejas, por ejemplo, un rompecabezas de plataformas completo, como el que ofrecemos al final de este tutorial.
Para que tu proceso de trabajo sea modular, primero crearás una instancia de material y una clase de blueprint para la plataforma.
Creación de una instancia de material
Si quieres crear una instancia de material para la plataforma, sigue estos pasos:
En el explorador de contenido, en AdventureGame > Diseñador > Materiales, haz clic derecho en M_BasicColor y selecciona Crear instancia de material.
Dale a la instancia el nombre
M_BasicColor_Orange. Haz doble clic en la instancia para abrirla en el editor de materiales.Amplía Valores de parámetros vectoriales globales y activa Color para anularlos.
Establece el parámetro Color en el valor sRGB hexadecimal
F76E00FF.Guarda la instancia y ciérrala.
Ahora tu carpeta Materiales debería tener este aspecto:
Configura una clase de blueprint
Para crear una clase de blueprint para la plataforma, sigue estos pasos:
En el explorador de contenido, ve a AdventureGame > Diseñador > Blueprints y crea una nueva carpeta llamada
Plataformas.Dentro de la carpeta Plataformas, haz clic derecho y crea una nueva clase de blueprint.
En el cuadro de diálogo Elige clase padre, selecciona Actor y dale al nuevo blueprint el nombre
BP_Platform.Haz doble clic sobre él para abrir
BP_Platformen el editor de blueprints.En la pestaña Componentes, crea una malla estática haciendo clic en Añadir, busca el
cuboy selecciónalo.Dale a la malla el nombre
Plataforma.En el panel Detalles, bajo el encabezado Materiales, define Elemento 0 como
M_BasicColor_Orange.
Para personalizar rápidamente la escala de tu plataforma desde el editor de niveles y crear plataformas de distinto tamaño, puedes usar una variable editable:
En la pestaña My Blueprint, ve al encabezado Variables. Haz clic en el botón + para crear una variable y dale el nombre
PlatformScale.Selecciona Vector como tipo de pin y haz clic en el icono del ojo para que se abra el ojo.
En el panel Detalles, junto a Categoría, añádelo a la categoría
Configuración.Compila tu blueprint y establece el predeterminado de PlatformScale en
2,2,0.1.En el grafo Secuencia de comandos de construcción, arrastra el pin Ejecución del nodo Construction Script y crea Set World Scale 3D (Platform).
Arrastra el pin Nueva escala del nodo Set World Scale 3D y crea un nodo Get PlatformScale. Esto aplica nuevos valores de escala al componente de malla de la plataforma.
Guarda y compila.
Tu grafo de la secuencia de comandos de construcción debería tener este aspecto:
Si copias este fragmento en tu grafo, tendrás que conectar el nodo de entrada Construction Script a Set World Scale 3D.
Si vuelves a la pestaña visor del blueprint, verás que la secuencia de comandos de construcción se aplica a los nuevos valores de escala de la plataforma.
Desde el explorador de contenido, arrastra una instancia de tu plataforma a tu nivel o a la sala 1 si vas a usar el nivel que te hemos proporcionado. Para este tutorial, asegúrate de tener también una instancia de BP_Switch y BP_Cube en el nivel:
Crea con lógica
Cuando un objeto se superpone con el interruptor, la plataforma debería moverse hacia delante y atrás entre dos posiciones. Antes de empezar a compilar, vamos a elaborar un borrador de la lógica que impulsa esta interacción respondiendo a las siguientes preguntas: ¿qué tiene que pasarle a quién y cuándo?
Aquí tienes un desglose de la lógica de la plataforma:
Si BP_Platform está activa, entonces:
Si
BP_Platformestá en su posición inicial, avanza hasta su posición final y espera 2 segundos.Si
BP_Platformestá en su posición final, muévete hacia atrás hasta su posición inicial y espera 2 segundos.
Si BP_Platform no está activa, BP_Platform se detiene.
El motivo para designar el tiempo de espera es dar tiempo al jugador para empujar algo hacia la plataforma o subirse a ella. Puedes escalar el tiempo de espera en función de lo difícil que quieras que sea la tarea del juego. Más adelante en este tutorial, usarás el tiempo para establecer la velocidad de la plataforma, la cual también puede afectar a la dificultad.
Como ya has creado BP_Platform, necesitas un valor booleano para determinar si está activa o inactiva.
Para crear un booleano, sigue estos pasos:
En la pestaña My Blueprint de
BP_Platform, haz clic en el botón + para crear una nueva variable y nómbralaActiva.Establece que su tipo de pin sea booleano y haz clic en el icono del ojo para que se abra.
En el panel Detalles, cambia la categoría a
Configuración.Compila tu blueprint y comprueba que el predeterminado de Activa tiene una marca de verificación (verdadero).
A continuación, definirás las ubicaciones entre las que se moverá la plataforma.
Define las ubicaciones
Tu lógica preliminar establece que la plataforma necesita dos posiciones:
Posición inicial
Posición final
Para que tu trabajo sea modular, definirás la posición inicial haciendo referencia a la instancia de la plataforma. La posición final se definirá haciendo referencia a un actor de punto objetivo.
Un punto objetivo es un actor que no se renderiza y que tiene datos de coordenadas. Puedes usar puntos objetivo como puntos de aparición, para establecer rutas de animación, para guiar el movimiento de la IA o para controlar la orientación de las articulaciones en rigs de IK.
También necesitarás vectores para almacenar los datos de coordenadas de la instancia de la plataforma y el actor de punto objetivo, e implementarlos dentro de BP_Platform:
Nombre de la variable | Clase | Explicación |
StartLocation | Vector | Almacena las coordenadas de BP_Platform. |
EndLocation | Vector | Almacena las coordenadas del actor de objetivo. |
TargetPoint | Punto objetivo | El actor de objetivo que designa tu EndLocation en el nivel. |
Para configurar tus variables, sigue estos pasos:
En la pestaña My Blueprint, haz clic en el botón + dos veces para crear dos nuevas variables.
Dale a las variables los nombres
StartLocationyEndLocation.Establece los tipos de pin como Vector.
Crea una variable llamada
TargetPointy define el tipo de pin como Target Point (Object Reference). Este tipo de variable se usa para hacer referencia a actores de punto objetivo dentro de blueprints.Con la variable
TargetPointseleccionada, ve al panel Detalles. Cambia la categoría Categoría aConfiguracióny marca la casilla Editable por instancia.
Ahora tu lista de variables debería tener este aspecto:
Una vez creadas las variables, puedes añadir lógica:
Ve al grafo de eventos y elimina los nodos Event ActorBeginOverlap y Event Tick. No los necesitarás. Conserva Event BeginPlay.
En el pin Ejecución del nodo Event BeginPlay, arrastra y crea un nodo Set StartLocation.
Desde el pin Ubicación inicial, arrastra y crea el nodo Get Actor Location. Comprueba que el campo Objetivo esté establecido como Sí mismo.
Desde el pin Ejecución de Set StartLocation, arrastra y crea Set EndLocation.
Desde el pin Vector de ubicación final, arrastra y crea Get Actor Location.
Desde el pin Objetivo de Get Actor Location, arrastra y crea Get TargetPoint.
Guarda y compila.
Tu grafo de eventos debería tener este aspecto:
Ahora puedes crear un actor de punto objetivo en tu nivel como referencia para el blueprint:
En la barra de herramientas principal del editor, haz clic en el botón Añadir.
Busca el punto objetivo y selecciónalo para crear uno en tu nivel.
Mueve el punto objetivo hasta donde quieras que acabe la plataforma. Para seguir lo descrito en el nivel de muestra, define la ubicación del punto objetivo como
-6200,570,-5.5(en la parte inferior de la sala 1).En el visor, selecciona la instancia de
BP_Platformy muévela donde quieras que empiece la plataforma.Con
BP_Platformseleccionado, en la sección Configuración del panel Detalles junto a Target Point, busca la instancia de punto objetivo en tu nivel (o usa el gotero para seleccionarla en el visor).
A continuación, compilarás el movimiento de la plataforma.
Compila el movimiento
Tu lógica preliminar requiere que la plataforma se mueva de cuatro maneras:
Hacia delante
Wait
Hacia atrás
Detener
Para señalar los eventos de avance, retroceso y detención (forward, backward y stop), crearás eventos personalizados. El evento de espera wait se puede crear usando una variable más adelante.
Para crear eventos personalizados, sigue estos pasos:
En el
grafo de eventosde BP_Platform, haz clic derecho y crea Añadir evento personalizado.Llama al nuevo nodo
evMoveForward. El evento debería aparecer bajo el encabezado Grafo de eventos de la pestaña My Blueprint.Crea dos eventos personalizados más. Nómbralos
evMoveBackwardyevStop.Como solo quieres que la plataforma se mueva si el booleano
Activoes verdadero, arrastra desde el pin Ejecución del nodo Set End Location y crea un nodo Branch.En el nodo Branch, arrastra desde el pin Condición y crea un nodo Get Active.
Desde el pin Verdadero del nodo Branch, arrastra y crea un nodo EvMoveForward para que active ese evento.
Guarda y compila.
Tu grafo de eventos debería tener este aspecto:
Si pruebas tu plataforma en modo PIE, la plataforma no hará nada. Esto se debe a que los eventos personalizados solo señalan un evento; necesitan más lógica para describir el movimiento de la plataforma.
Crea un movimiento hacia delante
Para potenciar tus eventos personalizados, usarás un nodo de cronograma Timeline. Dentro de un cronograma, puedes crear dos fotogramas clave que representen las posiciones inicial y final de la plataforma.
Para crear un cronograma, sigue estos pasos:
Haz clic derecho en el grafo de eventos, busca y crea Añadir cronograma.
Asegúrate de no seleccionar Añadir componente de cronograma.
Llama al nodo del cronograma
TM_MovePlatform.Al crear el nodo de cronograma, aparece una referencia TM_MovePlatform en la lista de componentes del panel My Blueprint. Al igual que con otros componentes, puedes usar esta referencia en el grafo para obtener o establecer sus propiedades.
Conecta el pin Ejecución de evMoveForward al pin Reproducir de TM_MovePlatform.
Conecta el pin Ejecución de evStop con el pin Detener de TM_MovePlatform.
Conecta el pin Ejecución de evMoveBackward al pin Invertir.
Haz doble clic en TM_MovePlatform para abrir el editor de cronograma. Como tu cronograma está vacío, pulsa el botón Pista y selecciona Pista float como tipo de pista.
Dale a esta nueva pista el nombre
Alfa.Establece la duración de la pista en
1.00. Indica el número de segundos que se reproduce el cronograma de principio a fin.Para añadir un fotograma clave, haz clic derecho en el cronograma y selecciona Añadir fotograma clave a CurveFloat_0.
Establece la duración y el valor del fotograma clave en
0.0.Haz clic derecho en el fotograma clave y cambia Interpolación de clave a Automática. Esto añade suavizado a las curvas del grafo y logra que tu plataforma se mueva más despacio al principio y al final de su movimiento.
Añade un segundo fotograma clave, pero ajusta Duración y Valor en
1.0e Interpolación de clave en Automática.Guarda y compila.
Tu cronograma debería quedar así:
Para crear movimiento, le indicarás a la plataforma que establezca una nueva posición de forma incremental para cada fotograma del juego a lo largo de una ruta lineal, entre la posición inicial y final. Si ya has trabajado con software de animación previamente, sabrás que esto también se denomina interpolación de movimiento. Para ello, usarás un nodo Lerp (interpolación lineal).
Los nodos Lerp usan un alfa, como el que creaste en TM_MovePlatform, para mezclar de forma incremental dos valores. Puedes usar lerps para interpolar colores, materiales o, en este caso, posiciones.
Para crear un lerp y conectarlo a tu lógica existente, sigue estos pasos:
Vuelve a la pestaña Grafo de eventos. Arrastra desde el pin Actualizar de TM_MovePlatform y crea un nodo Set World Location (Platform).
En el pin Nueva ubicación del nodo Set World Location, arrastra y crea Lerp (Vector).
Desde el pin A del nodo Lerp, arrastra y crea Get StartLocation.
Desde el pin B del nodo Lerp, arrastra y crea Get EndLocation.
Para utilizar el alfa que has creado en TM_MovePlatform, conecta el pin Alfa de TM_MovePlatform al pin Alfa de Lerp.
Guarda, compila y cierra el editor de blueprints.
Tu grafo de eventos debería tener este aspecto:
Ahora tienes suficiente lógica para probar tu plataforma. En la barra de herramientas principal del editor, haz clic en el botón Reproducir para pasar al modo PIE. En tiempo de ejecución, tu plataforma debería desplazarse hasta la posición final. Ahora mismo la plataforma se mueve rápido, por lo que puede resultarte difícil observarla. A continuación, añadirás movimiento hacia atrás para que la plataforma se mueva continuamente cuando esté activa. Posteriormente, añadirás una variable para ralentizarla.
Puedes experimentar moviendo el punto objetivo por tu nivel para ver el efecto.
El cronograma que has creado dura un segundo, por lo que la plataforma siempre tarda un segundo en moverse desde su posición inicial hasta el punto objetivo. Cuanto más lejos esté la plataforma del punto objetivo, más rápido tendrá que moverse para cubrir esa distancia.
Hasta ahora, la plataforma solo se mueve en una dirección. A continuación, compilarás su movimiento hacia atrás.
Crea un movimiento hacia atrás
Para invertir el movimiento de la plataforma, necesitarás una lógica que compruebe en qué dirección se mueve su cronograma. Si se está moviendo hacia delante, la lógica debería realizar una llamada a evMoveBackwards. Si no avanza, la lógica debería realizar una llamada a evMoveForward. Puedes usar un nodo Branch para realizar esta comprobación.
Para crear un nodo Branch y conectarlo a tu lógica existente, sigue estos pasos:
En el pin Finalizado de TM_MovePlatform, arrastra y crea un nodo Branch.
Desde el pin Condición de nodo Branch, arrastra y crea Equal (Enum).
Conecta el pin Dirección de TM_MovePlatform con el pin A de Equal.
Verifica que la condición esté establecida como Adelante.
Desde el pin Verdadero del nodo Branch, arrastra y crea evMoveBackwards.
Desde el pin Falso del nodo Branch, arrastra y crea evMoveForward.
Como solo quieres que se produzca movimiento si el booleano
Activoes verdadero, compruébalo primero con otro nodo Branch:Para añadir un nuevo nodo entre TM_MovePlatform y el nodo Branch, arrastra desde el pin Finalizado y añade un nuevo nodo Branch. De este modo, se mantienen las conexiones existentes y se añade un segundo nodo Branch en el medio.
Desde el pin Condición del nuevo nodo Branch, arrastra y crea Get Active.
Guarda y compila.
Tu grafo de eventos debería tener este aspecto:
Sin embargo, tu lógica preliminar establece que la plataforma debe esperar un tiempo antes de cambiar de dirección. A continuación, compilarás este retraso.
Crea un retraso
Puedes usar un nodo de retraso para indicar a la plataforma que espere y una variable de tipo float para definir la cantidad de tiempo que quieres que espere.
Para crear un nodo de retraso y un float, sigue estos pasos:
En la pestaña My Blueprint de
BP_Platform, haz clic en el botón + para crear una nueva variable y nómbralaWaitDuration.Establece que el tipo de pin sea Float.
En el panel Detalles, añádela a la categoría Configuración y habilita Editable por instancia.
Compila para acceder al valor predeterminado de la variable y establécelo en
2segundos. Este es el tiempo que estamos usando en el nivel de muestra.Para añadir el retraso antes de que la plataforma cambie de dirección, arrastra desde el pin Finalizado en TM_MovePlatform, y crea un nodo Delay.
Desde el pin Duración del nodo Delay, arrastra y crea un nodo Get Wait Duration.
Guarda y compila.
Ahora tu lista de variables debería tener este aspecto:
Tu grafo de eventos debería tener este aspecto:
Prueba tu plataforma en modo PIE. Debería moverse hacia delante, esperar, luego retroceder, esperar y repetir la acción de forma indefinida.
Por último, debes activar tu plataforma a través de BP_Switch.
Conecta el interruptor a la plataforma
La plataforma solo debería moverse cuando un jugador u otro objeto active BP_Switch. Usarás las funciones de la interfaz de blueprint que creaste en Rompecabezas: interruptores y cubos y tu booleano Activo para señalar cuándo la plataforma debe avanzar y detenerse.
Para hacer que los mensajes de BPI_Interaction del interruptor inicien y detengan el movimiento de la plataforma, sigue estos pasos:
En
BP_Platform, en la barra del menús del editor de blueprints, haz clic en Ajustes de clase.En el panel Detalles, debajo del encabezado Interfaces, elige Interfaces implementadas en el menú desplegable. Busca y añade BPI_Interaction.
Esto crea un nuevo encabezado Interfaces en la pestaña My Blueprint.
En el encabezado Interfaces, haz clic derecho en fnBPISwitchOn y selecciona Implementar evento para rellenar el grafo de eventos como un evento.
Haz lo mismo con fnBPISwitchOff.
En el pin Ejecución de fnBPISwitchOn, busca y crea un nodo Set Active. Marca la casilla de verificación junto a Activo para establecer su valor como verdadero.
En el pin Ejecución del nodo Set, busca y crea un nodo EvMoveForward.
En el pin Ejecución de fnBPISwitchOff, busca y crea un nodo Set Active.
En el pin Ejecución del nodo Set, busca y crea un nodo EvStop.
Guarda y compila.
Se ha completado toda la lógica que alimenta a BP_platform. Ahora que ya has hecho el trabajo pesado, puedes modificar qué plataforma(s) activa(n) un interruptor, hacia dónde se mueve la plataforma y desde dónde se desplaza, así como la escala de las plataformas, todo ello desde el visor. Con estos ajustes disponibles desde el visor, puedes diseñar y probar tu nivel sin tener que editar los blueprints continuamente.
A continuación, rellenarás la matriz de interruptores que creaste en Rompecabezas: interruptores y cubos.
Rellena la lista de objetos de interacción
Puedes rellenar la matriz de la lista de objetos de interacción del interruptor con cualquier objeto de tu nivel que quieras que el interruptor active, siempre que tenga lógica para activarlo. En este caso, seleccionarás la instancia de BP_Platform en tu nivel.
Para rellenar la matriz, sigue estos pasos:
Selecciona tu plataforma en el visor. En el panel Detalles, establece Activo como falso (desmarca la casilla). Esto hará que deje de activarse durante el tiempo de ejecución y esperará a la señal del interruptor.
Selecciona tu interruptor en el visor. En el panel Detalles, en Configuración, junto a la lista de objetos de interacción, haz clic en el botón Añadir elemento (+) para crear un nuevo índice en la matriz.
En el desplegable, busca
BP_Platformo usa la herramienta gotero para seleccionarlo en el visor.
Entra en el modo PIE para probar tu objeto de jugabilidad final. Cuando tú o un cubo de física os superpongáis con el interruptor, la plataforma debería moverse hacia delante y hacia atrás (y detenerse cuando el cubo o tú os alejéis).
Prueba a activar ActivateOnce en BP_Switch. Como verás, como el interruptor permanece activo, la plataforma sigue moviéndose aunque te alejes del interruptor.
En función de dónde hayas colocado el punto objetivo en el nivel, es posible que detectes algún problema. Si colocas el cubo de física sobre la plataforma y pisas el interruptor, la plataforma se moverá tan rápido que el cubo se caerá. Las físicas poco prácticas pueden frustrar a los jugadores e impedir que completen tu rompecabezas.
En la siguiente sección depurarás este problema.
Debugging
En esta sección, harás ajustes y añadirás funcionalidad adicional a tu plataforma y cubo de física para mitigar los problemas que podrían frustrar a tus jugadores mientras resuelven tu rompecabezas.
Ajuste de la amortiguación
Al empujar el cubo, notarás que es muy ligero y fácil de empujar. Esta sensibilidad a la fuerza puede plantear problemas cuando los jugadores maniobren el cubo a través de un rompecabezas o cuando se desplacen por una plataforma.
Para aumentar la amortiguación en el cubo, sigue estos pasos:
Abre
BP_Cubeen el editor de blueprints y selecciona la malla estática Cubo.En el panel Detalles, en Física, establece Amortiguación lineal en
0.7y Amortiguación angular en0.8. Esta es una cantidad sugerida que varía en función de las necesidades de tu proyecto.Guarda y compila.
Prueba el cubo de nuevo. Si el objeto sigue cayéndose de la plataforma, ajusta la velocidad de la plataforma.
Ajuste de la velocidad
Dado que la velocidad de la plataforma afecta al cubo de física, reducir la velocidad de la plataforma puede ayudar a que el cubo permanezca dentro.
Para ajustar la velocidad de la plataforma, sigue estos pasos.
En el grafo de eventos de
BP_Platform, crea una nueva variable y nómbralaTimeToTarget.Establece que el tipo de pin sea Float.
Compila tu blueprint.
En el panel Detalles, habilita Editable por instancia, añádela a la categoría Configuración y establece Valor predeterminado en
2.0. Esta es una cantidad sugerida que varía en función de tu nivel.Ve al grupo de nodos de la parte superior de tu grafo que empieza por Event BeginPlay.
Arrastra desde el pin Ejecución del nodo Set End Location. Busca y crea un nodo Set Play Rate (Timeline).
Puede que tengas que desmarcar la opción Sensible al contexto para encontrar este nodo.
En el pin Objetivo del nodo Set Play Rate, busca y crea un nodo Get TM Move Platform.
En el pin Nueva velocidad de Set Play Rate, arrastra y crea un nodo de operador Divide. Establece su valor A en
1.0.Desde el pin B del nodo Divide, arrastra y crea el nodo Get TimeToTarget.
Guarda y compila.
Tu grafo de eventos debería tener este aspecto:
Prueba tu nivel en el modo PIE y verás cómo cambia la interacción entre la plataforma y el cubo. El cubo debería quedarse en la plataforma mientras se mueve.
Como has incluido la variable TimeToTarget en la categoría Configuración, puedes ajustar fácilmente la velocidad de la plataforma y probarla desde el visor mientras diseñas tu nivel.
Rompecabezas de ejemplo
Hemos creado un rompecabezas para la sala 1 usando los recursos de interruptor, cubo, plataforma y llave descritos en este tutorial. Si prefieres copiar nuestro rompecabezas en lugar de crear el tuyo propio, en las siguientes secciones se explica cómo colocar los recursos exactamente donde los hemos colocado nosotros. Cada sección destaca una idea que descubrimos durante las pruebas de juego y que influyó en nuestras elecciones de diseño.
Para poder copiar nuestro rompecabezas, tus blueprints deben tener el siguiente nombre:
BP_Switch
BP_Cube
BP_Platform
BP_Key
Si no has creado los recursos siguiendo este tutorial, es posible que el fragmento no se copie del modo esperado.
Los obstáculos, los cubos y la llave
Durante las pruebas, descubrimos que a los jugadores les costaba controlar el movimiento del cubo de física. Hemos añadido paredes para guiar al cubo a medida que el jugador lo empuja por la sala y hemos añadido amortiguación para reducir la reactividad del cubo. Esto mitiga la frustración y evita castigar injustamente al jugador por un comportamiento físico inusual.
También nos dimos cuenta de que necesitábamos encontrar una forma de reiniciar el rompecabezas si el jugador fallaba. Dado que es probable que los jugadores derriben los cubos de las plataformas mientras juegan, rellenamos las ubicaciones clave con más cubos para reducir la cantidad de retroceso necesaria para reiniciar el rompecabezas y reemplazar los cubos destruidos.
Secuencia de desarrollo de la sala 1
Para copiar los obstáculos en tu nivel, sigue estos pasos:
Copia el siguiente fragmento haciendo clic en Copiar el fragmento completo.
Command LineFragmento de línea de comandosBegin Map Begin Level Begin Actor Class=/Script/Engine.StaticMeshActor Name=StaticMeshActor_32 Archetype="/Script/Engine.StaticMeshActor'/Script/Engine.Default__StaticMeshActor'" ExportPath="/Script/Engine.StaticMeshActor'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.StaticMeshActor_32'" Begin Object Class=/Script/Engine.StaticMeshComponent Name="StaticMeshComponent0" Archetype="/Script/Engine.StaticMeshComponent'/Script/Engine.Default__StaticMeshActor:StaticMeshComponent0'" ExportPath="/Script/Engine.StaticMeshComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.StaticMeshActor_32.StaticMeshComponent0'" End Object Begin Object Name="StaticMeshComponent0" ExportPath="/Script/Engine.StaticMeshComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.StaticMeshActor_32.StaticMeshComponent0'" StaticMesh="/Script/Engine.StaticMesh'/Game/LevelPrototyping/Meshes/SM_Cube.SM_Cube'" StaticMeshImportVersion=1 StaticMeshDerivedDataKey="STATICMESH_FD1BFC73B5510AD60DFC65F62C1E933E_228332BAE0224DD294E232B87D83948FQuadricMeshReduction_V2$2e1_6D3AF6A2$2d5FD0$2d469B$2dB0D8$2dB6D9979EE5D2_CONSTRAINED0_100100000000000000000000000100000000000080FFFFFFFFFFFFFFFFFFFFFFFF000000000000803F00000000000000803F0000803F00000000000000003D19FC1626C9B248DECA64C7201D34D790CF7B09D3C0873700000000010000000100000000000000010000000100000000000000000000000100000001000000400000000000000001000000000000000000F03F000000000000F03F000000000000F03F0000803F00000000050000004E6F6E65000C00000030000000803FFFFFFFFF0000803FFFFFFFFF0000000000000041000000000000A0420303030000000000000000_RT00_0" RelativeLocation=(X=-5940.000136,Y=1669.999995,Z=-400.499900)En Unreal Editor, haz clic en Editar > Pegar o pulsa Ctrl + V en el visor.
Las plataformas
De la misma manera que añadir más cubos de física funcionaba como un reinicio del rompecabezas, hemos añadido una plataforma que vuelve a elevar al jugador a la posición inicial de la sala. Al usar la variable Activa, esta plataforma de restablecimiento se activa en tiempo de ejecución.
Para copiar los obstáculos en tu nivel, sigue estos pasos:
Copia el siguiente fragmento haciendo clic en Copiar el fragmento completo.
Command LineFragmento de línea de comandosBegin Map Begin Level Begin Actor Class=/Game/AdventureGame/Designer/Blueprints/Platforms/BP_Platform.BP_Platform_C Name=BP_MovingPlatform_C_16 Archetype="/Game/AdventureGame/Designer/Blueprints/Platforms/BP_Platform.BP_Platform_C'/Game/AdventureGame/Designer/Blueprints/Platforms/BP_Platform.Default__BP_Platform_C'" ExportPath="/Game/AdventureGame/Designer/Blueprints/Platforms/BP_Platform.BP_Platform_C'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_MovingPlatform_C_16'" Begin Object Class=/Script/Engine.SceneComponent Name="DefaultSceneRoot" Archetype="/Script/Engine.SceneComponent'/Game/AdventureGame/Designer/Blueprints/Platforms/BP_Platform.BP_Platform_C:DefaultSceneRoot_GEN_VARIABLE'" ExportPath="/Script/Engine.SceneComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_MovingPlatform_C_16.DefaultSceneRoot'" End Object Begin Object Class=/Script/Engine.StaticMeshComponent Name="Platform" Archetype="/Script/Engine.StaticMeshComponent'/Game/AdventureGame/Designer/Blueprints/Platforms/BP_Platform.BP_Platform_C:Platform_GEN_VARIABLE'" ExportPath="/Script/Engine.StaticMeshComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_MovingPlatform_C_16.Platform'" End Object Begin Object Class=/Script/Engine.TimelineComponent Name="TM_MovePlatform" ExportPath="/Script/Engine.TimelineComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_MovingPlatform_C_16.TM_MovePlatform'" End Object Begin Object Name="DefaultSceneRoot" ExportPath="/Script/Engine.SceneComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_MovingPlatform_C_16.DefaultSceneRoot'"En Unreal Editor, haz clic en Editar > Pegar o pulsa Ctrl + V en el visor.
Conecta las plataformas al punto objetivo correspondiente:
BP_Platform1hace referencia a TargetPoint1BP_Platform2hace referencia a TargetPoint2BP_Platform3hace referencia a TargetPoint3BP_Platform4hace referencia a TargetPoint4BP_Platform5hace referencia a TargetPoint5
Los interruptores
Usamos la matriz InteractObjectList para conectar algunos interruptores a varias plataformas. De esta forma, conseguimos que el rompecabezas fuera conciso y desafiante, evitando pasos adicionales que pudieran aburrir o frustrar al jugador.
Para copiar los obstáculos en tu nivel, sigue estos pasos:
Copia el siguiente fragmento haciendo clic en Copiar el fragmento completo.
Command LineFragmento de línea de comandosBegin Map Begin Level Begin Actor Class=/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.BP_Switch_C Name=BP_ActivationPlate_C_9 Archetype="/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.BP_Switch_C'/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.Default__BP_Switch_C'" ExportPath="/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.BP_Switch_C'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_ActivationPlate_C_9'" Begin Object Class=/Script/Engine.SceneComponent Name="DefaultSceneRoot" Archetype="/Script/Engine.SceneComponent'/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.BP_Switch_C:DefaultSceneRoot_GEN_VARIABLE'" ExportPath="/Script/Engine.SceneComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_ActivationPlate_C_9.DefaultSceneRoot'" End Object Begin Object Class=/Script/Engine.StaticMeshComponent Name="Switch" Archetype="/Script/Engine.StaticMeshComponent'/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.BP_Switch_C:Switch_GEN_VARIABLE'" ExportPath="/Script/Engine.StaticMeshComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_ActivationPlate_C_9.Switch'" End Object Begin Object Class=/Script/Engine.BoxComponent Name="Trigger" Archetype="/Script/Engine.BoxComponent'/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.BP_Switch_C:Trigger_GEN_VARIABLE'" ExportPath="/Script/Engine.BoxComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_ActivationPlate_C_9.Trigger'" End Object Begin Object Name="DefaultSceneRoot" ExportPath="/Script/Engine.SceneComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_ActivationPlate_C_9.DefaultSceneRoot'"En Unreal Editor, haz clic en Editar > Pegar o pulsa Ctrl + V en el visor.
Conecta cada interruptor a la plataforma correcta:
BP_Switch1hace referencia aBP_Platform1.BP_Switch2hace referencia aBP_Platform2y aBP_Platform 3.BP_Switch3hace referencia aBP_Platform5.
Ahora, prueba tu nivel para asegurarte de que funciona correctamente y ver si puedes resolver el rompecabezas. Puedes comparar tu trabajo con el nivel completado que ofrecemos al final de esta serie de tutoriales.