Unreal Engine 5 - Curso para principiantes | 3D College | Skillshare

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Unreal Engine 5 - Curso para principiantes

teacher avatar 3D College, A perfect place to grow!

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      INTRODUCCIÓN

      2:52

    • 2.

      Descarga de UE5

      3:10

    • 3.

      Crea tu proyecto

      2:06

    • 4.

      Navegación de UE5, atajos y fundamentos

      13:43

    • 5.

      Actores de UE5

      8:42

    • 6.

      Manejo de actores y objetos

      4:49

    • 7.

      Modelado

      10:26

    • 8.

      Trabajar con materiales

      8:45

    • 9.

      Materiales personalizados

      25:18

    • 10.

      Sistema de iluminación

      18:30

    • 11.

      Conceptos básicos de diseño

      16:50

    • 12.

      Gráfico de eventos

      22:00

    • 13.

      Variables de BP

      23:57

    • 14.

      Funciones de BP

      39:48

    • 15.

      Crear paisaje

      12:07

    • 16.

      Material maestro

      12:59

    • 17.

      Vegetación

      31:59

    • 18.

      Configuración de la escena

      37:19

    • 19.

      Planos para juegos 01

      34:32

    • 20.

      Planos para juegos 02

      10:32

    • 21.

      Planos para juegos 03

      26:54

    • 22.

      Interacciones con actores

      43:28

    • 23.

      Interfaz de blueprint

      44:26

    • 24.

      Juego

      32:20

    • 25.

      Personaje en tercera persona

      33:41

    • 26.

      Widget BP

      23:37

    • 27.

      Editor de widgets

      16:19

    • 28.

      Sistema de puntuación

      15:14

    • 29.

      Temporizador

      12:54

    • 30.

      Funciones adicionales

      22:08

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

104

Estudiantes

--

Proyectos

Acerca de esta clase

Comienza tu viaje como desarrollador de juegos con Unreal Engine 5: curso completo para principiantes, posiblemente el curso más actualizado y completo disponible en línea.

¿Por qué elegir este curso?

Cuando comencé mi experiencia con Unreal Engine, tuve acceso a una gran cantidad de información sobre cómo trabajar con él. Sin embargo, rápidamente me di cuenta de que la mayoría de los recursos disponibles, incluso los cursos completos, no describían todo el proceso de una manera lógica y comprensible. Por eso creé este curso: para dar a los principiantes como tú una ruta clara y paso a paso para dominar los fundamentos.

Esto es lo que aprenderás:

  • Aprende a desarrollar juegos con Unreal Engine 5 y Blueprints
  • Aprende a descargar e instalar Unreal Engine 5
  • Aprende los fundamentos de UE5: navega por la interfaz, usa las herramientas esenciales y configura tu primer proyecto.
  • Aprende sobre los actores, las mallas y los objetos esenciales para crear tu juego
  • Cómo usar Blueprints para construir interacciones, eventos y mecánicas de juego; no es necesario programar
  • Crea y personaliza materiales de Unreal Engine 5
  • Cómo crear un paisaje y llenarlo de vegetación usando materiales maestros
  • Crea minijuegos, configura el movimiento de los personajes, las interacciones y los bucles del juego
  • Crear sistema de widgets

Si quieres trabajar con Unreal Engine para tus proyectos o incluso convertirte en un desarrollador independiente, esta clase será la elección perfecta para ti. Tanto si eres un completo principiante como si quieres perfeccionar tus habilidades, este curso está diseñado para proporcionarte los conocimientos esenciales y la experiencia práctica necesarios para crear y gestionar proyectos en Unreal Engine 5 con confianza, de la manera correcta.

¡Vamos a sumergirnos y empezar a crear con Unreal Engine 5!

Conoce a tu profesor(a)

Teacher Profile Image

3D College

A perfect place to grow!

Profesor(a)

Hello,

3D College was created with beginner artists in mind, those who want to start their journey with Unreal Engine or become indie developers. We design courses that have helped hundreds of students gain new knowledge and skills. As 3D artists with years of professional experience, we strive to share the expertise we've gained while working on professional productions. In the coming months, new artists will join our team of instructors, currently preparing courses for both beginner and intermediate level students.

My name is Martin Grochowiak, and I am the founder of 3D College. I have been involved in photography, 2D, and 3D graphics for many years. I specialize in working with Unreal Engine 5 and, over the years, have had the privilege of creating and leading projects... Ver perfil completo

Level: All Levels

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. Promoción de UE5 FC01 01: Hola, y bienvenidos al curso completo para principiantes de Unreal Engine five Mi nombre es Alona Bazade y seré tu instructora. Si quieres trabajar con Unreal Engine y convertirte en desarrollador de juegos, este curso será la elección perfecta para ti. Esto es lo que aprenderás. Fundamentos. En esta sección, aprenderás los conceptos básicos de Unreal Engine five Comenzaremos explorando la interfaz, las herramientas de navegación esenciales y teclas de acceso rápido para mejorar su flujo de trabajo. Actores. Los actores son los bloques de construcción de cualquier proyecto de motor Unreal En este capítulo, te sumergirás en el concepto de actores, mallas y objetos Entenderás cómo interactúan y cómo administrar sus dependencias. Materiales. Los materiales son la clave para crear un proyecto visual atractivo. En esta sección, aprenderás a construir y modificar materiales en Unreal Engine Modelado. Unreal Engine ofrece potentes herramientas de modelado, y esta sección te las presentará Aprenderás a modelar directamente dentro del motor, crear activos y manipularlos para que se ajusten a las necesidades de tu proyecto. Sistema Lightning. sistema de iluminación Unreal Engines es una de sus características más potentes Aprenderás a crear configuraciones de iluminación usando puntos direccionales y focos También exploraremos la iluminación dinámica y declarada y aprenderemos a optimizar su escena. Planos. Los planos te permiten crear complejas mecánicas de juego sin escribir una sola línea de código Cubriremos en detalle las secuencias de comandos visuales, enseñándote cómo configurar interacciones, eventos y desencadenantes entre actores y objetos Paisaje y material maestro. Esta sección trata sobre la creación del entorno. Aprenderás a construir vastos paisajes y terrenos para tus proyectos Luego aplique el sistema de materiales maestros para poblar automáticamente su entorno con biomas y texturas. Jugabilidad. En este capítulo, nos centraremos en la mecánica del juego. Aprenderás a crear interacciones entre tu personaje y el entorno. Mini juego. En esta sección final, pondrás todo junto para crear un minijuego Este proyecto práctico te ayudará a entender todo el flujo de trabajo, desde configurar un proyecto hasta crear entornos, programar interacciones y finalizar un nivel jugable Este curso está estructurado para brindarte un enfoque paso a paso para aprender Unreal Engine Con ejemplos prácticos del mundo real, obtendrás no solo habilidades técnicas, sino también una comprensión más profunda de cómo abordar un proceso de desarrollo de juegos. Vamos a sumergirnos y comenzar a crear con Unreal Engine five. Mm. 2. UE5 FC02 01: Bienvenido a Unreal Engine cinco tiendas básicas. Durante las próximas horas, pasaremos por la configuración del proyecto, navegación de la interfaz, la configuración ambiental y la creación de objetos y actores interactuables Al final de este curso, deberías poder usar cómodamente Unreal Engine five y tener una comprensión básica de todas las funciones principales de Unreal Este curso no requiere ningún conocimiento previo sobre muerte irreal del juego o C plus o CSA Antes de que podamos seguir adelante con la conferencia, necesitamos descargar UnreleEngine Si ya tienes instalado Unreal Engine, dudes en ignorar este video y saltarte la siguiente conferencia Para descargar Unreal Engine, primero, necesitamos descargar Epicamesauncher Puedes hacerlo yendo a unrealengine.com y haciendo clic en el botón Descargar Si no sabes cómo hacerlo o tienes problemas para entenderlo, haz clic en WatchoWT Instalar tinta en la pantalla a la derecha Esto te enviará a un video de YouTube el cual te explicará y recorrerá el proceso. Ahora que Epic Games está instalado, instalemos el propio motor. Haga clic en el toque Unreal Engine en el lado izquierdo y vaya a Biblioteca Aquí, puedes elegir qué motor Unreal necesitamos. Estaremos usando Unreal Engine cinco puntos cuatro para este curso Para fines de demostración, descargaré cinco punto tres. Pero aquí, es necesario hacer clic en cinco Punto cuatro. Después de hacer clic y seleccionar la versión de su motor, haga clic en el botón Instalar Y ahora necesitamos seleccionar una carpeta para el motor Unreal. Asegúrese de seleccionar la unidad SSD si tiene una y haga clic en Opciones. Si te desplazas hacia abajo, es posible que tengas estas cuatro opciones seleccionadas por defecto. A menos que estés interesado en desarrollar para esa plataforma específica, compruébalos ya que esto reducirá el tamaño requerido para tu motor irreal Asegúrese de mantener habilitados el contenido inicial, paquetes de plantillas y funciones los paquetes de plantillas y funciones y la fuente del motor. No necesita símbolos de editor para depurar. Haga clic en Aplicar y haga clic en Instalar. El motor real cinco ahora se va a instalar en tu PC. 3. UE5 FC02 02: Ahora, comencemos por crear un nuevo proyecto. click en el botón de inicio y dale un momento mientras se inicializa Aquí, tenemos una selección de plantillas que podemos usar, las cuales son proporcionadas por Unreal Tenemos múltiples selecciones aquí para juegos, cine, video, arquitectura, automoción y simulación. Para los fines de este curso, utilizaremos la plantilla de juegos de persona cert Asegúrate de nombrar tu proyecto y ten en cuenta que no puedes usar espacio y el nombre debe tener menos de 20 letras caracteres. Ahora tenemos que seleccionar los valores predeterminados del proyecto. Haga clic en el blueprint, desktop, Maximum y manténgase en el contenido inicial No usaremos las carreras de tarifas, pero a tener en cuenta si tu proyecto lo requiere, deberías. Todos estos pueden ser cambiados desde el proyecto después de su creación. Entonces en caso de que necesites cambiar algo que se pueda hacer después. Haga clic en el botón Crear. Dale un momento para crear tu proyecto. Y ahora tu proyecto irreal está listo. Nos vemos en la próxima conferencia. 4. UE5 FC02 03: Ahora, hablemos de las ventanas que tenemos disponibles para nosotros. En el lado izquierdo, tenemos la ventana de Place Actors. Es una ventana que te permite arrastrar y soltar cualquier actor, objeto o forma o luz, cualquier cosa realmente a tu escena fácilmente. Puedes tener tu propio SSP creado aquí también que puedes simplemente arrastrar y soltar en la escena En el lado derecho, tenemos outliner mundial. ¿Qué hace World Outliner? World Outliner es una lista de todos los objetos o actores existentes en tu escena en el nivel Puedes hacer click sobre ellos aquí, y los tendrás seleccionados automáticamente en el nivel. Puedes dar click aquí y podrás ver el nombre. Es bastante útil para organizar tu maquetación. Entonces, por ejemplo, todos los bloques están dentro de la carpeta de bloques. Puede ocultarlos en combinación en lugar de hacer clic en ellos individualmente y ocultarlos del nivel o eliminarlos o moverlos. Puedes hacer clic o así, múltiples objetos al mismo tiempo para moverlos al mismo tiempo. Es bastante útil. Puedes moverte por todas las ventanas en tu escena irreal del motor Por ejemplo, puedes tomar el outliner, separarlo, hacer una ventana separada, hacer una ventana separada, o puedes colocarlo en otro lugar, parte inferior de la pantalla tal vez o tal vez la quieras a la izquierda Depende de ti, de verdad. Se puede quitar. Si quieres. Y si lo quieres de vuelta, siempre puedes ir a la ventana, tocar en la parte superior y encontrar la ventana que acabas de quitar. También puedes tener múltiples ventanas de la misma cosa. Entonces outliner ya está de vuelta, y lo prefiero a la derecha. Contamos con detalle spanel también. Entonces, cuando tienes un objeto seleccionado, obtienes información detallada aquí. Entonces déjame mover esto aquí. Encima, como prefiero. Y ahora tenemos acceso a la información sobre este objeto. Como pueden ver, a medida que me muevo esto, la ubicación de transformación aquí cambia. Puedo ingresar manualmente cualquier valor que quiera. Puedo rotarlo desde aquí si así lo deseo, o escalarlo hacia arriba o hacia abajo. Si quiero escalarlo de manera uniforme, puedo hacer clic en este botón de bloqueo y escalarlo de esta manera. También hay materiales aquí y malla. Entonces aquí, si tienes un objeto en la escena que quieres mantener toda la ubicación transformada y el exceso de escala, pero quieres cambiar la malla, puedes hacer clic aquí y buscar o simplemente elegir la malla a la que quieres cambiarla. Entonces ahora quiero cambiarlo a esta silla. Entonces hice clic en la silla. Ahora tenemos una silla. Vamos a verlo de cerca. Y sí, ahora tenemos una silla en la escena. Si quiero deshacerlo, siempre puedo controlar Z. Ahora tengo mi cubo Si quiero cambiar material, sólo puedo elegir un material de aquí. Probemos esta reina 01. Y ahora nuestro cubo se ve diferente. Vamos a tener un up amarillento con algo metálico por ahora. Es el mismo material que se utilizó para la silla. Ahora que hemos terminado de mirar los detalles y outliner, hablemos de Cajón de contenido Puedes hacer clic en el Cajón de contenido aquí, que te permitirá ver todos los activos disponibles para ti en tu proyecto. El contenido de inicio contiene una gran cantidad de mallas útiles, materiales, utilería, partículas para aprender motor irreal, y si solo quieres prototipo de nivel para Aquí, vamos a los apoyos, y tenemos múltiples mallas de las que podemos usar Entonces pongamos una mesa. Y solo arrástralo y suéltelo a la escena, dale un momento para compilar shaders Y ahora tienes una silla en tu pantalla. Si quieres tener tu navegador de contenido visible en todo momento y no bajar y esconderte, puedes hacer click en el botón Doc in Layout aquí. Esto te permitirá tener un navegador de contenido en tu pantalla en todo momento. Puedes ponerlo en tu segunda pantalla o como todas las demás ventanas, simplemente puedes adjuntarlo en alguna parte. Entonces prefiero tenerlo en la parte de abajo de mi pantalla. Si tienes algún problema con tu diseño o digamos que de alguna manera eliminaste las ventanas y no recuerdas sus nombres ni cómo restaurarlas, lo que puedes hacer es hacer clic en la pestaña Ventana en la parte superior. Haga clic en Cargar diseño y haga clic en Diseño del editor predeterminado. Esto restaurará el diseño real. Puedes hacer clic en Control Space y recuperarás tu navegador de contenido, tu panel de Detalles y outliners Obac Podrán notar que ya no tenemos tabulación de actores de lugar. Eso es porque ese es el diseño predeterminado para Unreal four classic, que realmente no necesitamos También se puede acceder a la pestaña Place Actors desde aquí. Todo lo que está en el lugar actores, más o menos se puede acceder aquí, y siempre puedes simplemente hacer clic en una forma que quieras o un objeto y simplemente puedes hacer que aparezca en tu escena. Hay muchas otras ventanas en la pestaña de Windows de las que hablaremos en las próximas conferencias. Algunos detalles más sobre la interfaz irreal. Si tienes un objeto seleccionado y lo mueves alrededor, verás que se mueve en cierto incremento, como si estuviera rompiendo Esto se debe a que tenemos esta opción aquí habilitada. Si aumentas el chasquido, solo se romperá en los incrementos de 100. Si lo pones como uno, verás que tienes un movimiento suave. Y si solo lo deshabilitas, tienes aún más movimiento incremental. mí personalmente me gusta que la guarden a una o diez con el propósito de tener una ubicación uniforme para mis objetos en la escena. Se puede hacer lo mismo con rotación y escalado. También tenemos opciones de viewport aquí. Si haces clic en las opciones de ventana gráfica aquí, tres líneas en el lado izquierdo, tendrás muchas opciones disponibles para ti Hablaremos de ellos en las futuras conferencias, pero la que probablemente deberías tener en cuenta es el porcentaje de pantalla. Si tiene activado el porcentaje de pantalla, puede hacer clic en Anulación personalizada y hacer clic en el porcentaje de pantalla que desee. Si miras el fondo aquí en las líneas de los objetos, si reduzco mi porcentaje de pantalla, las líneas se desenfocarán en rojo. Esto se debe a que ahora se está renderizando solo el 25% de los polígonos disponibles en la piel Si pones 200, los renderizará a mayor resolución. Recomiendo mantenerlo al 100 para tener una buena calidad. Lo cual es una buena referencia de cómo se verá tu juego. Por supuesto, si tu juego tiene menor resolución, ajustes habilitados, también puedes esencialmente hacerte una buena idea respecto poniendo en, digamos, si tu juego va a tener una resolución del 50%, solo puedes ponerlo aquí, y ahora así es como si tu juego va a tener una resolución del 50%, solo puedes ponerlo aquí, se verá si tu juego tiene solo 50% de resolución o 25 o 200 digamos cuatro K. Discutiremos esto en futuras conferencias También hay modo de selección, paisaje, follaje, malla, modelado, fractura, cepillado y pestañas de animación, que también discutiremos en la futura conferencia Aquí, si presionas el botón de reproducción u OP en tu teclado, esto entrará en modo de reproducción. Lo que hace el modo de juego es esencialmente simula tu juego. Tenemos seleccionada la plantilla de tercera persona, así que tenemos todo preconfigurado para una tercera persona. Puedes moverte usando WAST jump. Y si dependiendo de la plantilla, algunas plantillas pueden tener una pistola que pueda disparar o un vehículo con el que puedas moverte o volar objetos con los que puedas volar. Ahora, hablemos de interfaz irreal y navegación. Para moverte por tu cámara, mantén pulsado el botón derecho del ratón. Si quieres avanzar, haz clic en W S hacia atrás, izquierda, A, derecha, T, abajo Q E para arriba. Puedes desplazarte hacia arriba para aumentar o disminuir la velocidad de movimiento de tu cámara. O puede hacer clic y seleccionar la velocidad de su cámara aquí. También tenemos Gizmos para movernos alrededor de los objetos de la escena Por defecto, si has seleccionado Objetos Gizmo, no verás nada Si haces clic en W o haces clic en el icono Seleccionar y traducir Objetos en la parte superior, obtendrás estas flechas. Estas flechas se pueden utilizar para moverse alrededor del objeto. O puedes hacer click en el círculo, moverlo en tres espacios D. También puedes hacer click en Iki o en este icono en la parte superior, seleccionar y rotar objetos, lo que te permitirá usar que Gizmo También hay objetos a escala Gizmo. Haga clic en R o haga clic en este icono en la parte superior y podrá escalar sus objetos como desee. Para ocultar tu Gizmo, siempre puedes hacer clic en el botón Cue o hacer clic en el icono Seleccionar objetos en la parte superior aquí para ocultar tu Gizmo y asegurarte de no mover tus objetos por accidente 5. UE5 FC03 01: Bienvenidos a la conferencia. En esta conferencia, vamos a platicar más a fondo sobre cómo manipular actores y objetos en la escena. Ya tocamos el tema en el video anterior, pero en este video, vamos a profundizar más en cómo usar las teclas de acceso rápido y los parámetros para manipularlo. Entonces tenemos una mesa aquí, cual puede ser manipulada con nuestros artilugios como se discutió en el Movimiento, rotación y escala También podemos hacer clic y mantener pulsada la tecla All Alt para duplicar el objeto. Puede desplazar el clic a varios objetos, mover la tecla Alt para duplicar varios objetos también. Si mantienes pulsada la tecla Mayús y mueves tus objetos, tu cámara se moverá junto con ella. Si presionas Mayús y Alkey al mismo tiempo que mueves tu objeto, crearás un duplicado y tu cámara se moverá con un duplicador recién creado del Si eliges varios objetos, como lo hice ahora e intentas girarlos, la rotación ocurrirá alrededor del último objeto seleccionado. Puedes definir fácilmente cuál es buscando dónde está tu artilugio Si queremos cambiar la malla del objeto manteniendo su ubicación y los parámetros transforman los parámetros, puede hacerlo aquí en la malla estática. Digamos que queremos cambiar esta mesa en una silla. Agradecidamente, se proporciona en contenido de inicio, así que simplemente podemos hacer clic en él aquí y tenemos una silla Ahora bien, si tratamos de encontrar la ubicación del activo para la que usamos esta mesa o silla, y no estás seguro dónde se encontraba en tu navegador de contenido, siempre puedes hacer clic en este icono de aquí, y te llevará directamente a la ubicación del activo. Así que ahora podemos ver contenido, contenido iniciado y props es la carpeta Y lo que podemos hacer aquí, podemos dar click sobre un objeto. la segunda tabla y hagamos clic en el sofá en nuestro navegador de contenido y aquí en el panel de detalles. Si bien esto está seleccionado en el navegador de contenido, da clic en este arochy Esto cambiará automáticamente la malla seleccionada en el activo que hemos seleccionado en el navegador de contenido. Esto funciona no sólo para mallas, sino también para materiales y otros tipos de activos que son log se pueden utilizar desde el navegador de contenido Digamos que queremos cambiar esto a otra cosa. Entonces vamos a repetir el proceso. Digamos, tomemos una estatua y cambiemos este objeto por estatua. Y ahora tenemos una estatua para colocar sobre la mesa, lo cual podemos hacer muy bien. Y digamos que queremos una segunda silla. Manera fácil de hacer esto. Haga clic automáticamente en obtener seleccionado. Da click en esto y sé. Ahora tenemos nuestra silla y el sofá y la lámpara o lo que sea que se supone que sea este cristal. Ahora, hablemos de cómo manipular sus materiales. Entonces de manera similar. Digamos, selecciona este sofá y tenemos carpeta de materiales aquí. Estos son materiales estándar que vienen con contenido de arranque del motor Unreal Y aquí tenemos opciones. Como pueden ver, tenemos un material llamado Chair, que se está utilizando para este sofá. Cambiemos este material por otra cosa. Ahora, vamos a probarlo. Como pueden ver, todo lo que necesito hacer es simplemente dar clic en el material y dar clic en el icono. Pero también se puede arrastrar el material sobre el propio objeto. También puedes seleccionarlo de la lista si así lo deseas. Puede que tengas que esperar a que se compile y siempre puedes, como dije antes, simplemente hacer clic en él y dictarlo encima de algún material. Tengámoslo dorado. Hay opciones adicionales aquí en el panel de detalles sobre su objeto. En primer lugar, si notas que hay una báscula y cerca de la báscula, hay un icono de candado. Si no lo tienes bloqueado e intentas escalar un objeto, solo escalará en una dirección en un eje para ser precisos. Si lo bloqueas y te mueves a lo largo de tu transformación, lo hará de manera uniforme. Ten en cuenta, siempre puedes simplemente escribir la resolución que quieras, los valores que deseas. Y si lo estás usando con algunos números o escalas complicados , ten en cuenta. Puedes hacer cosas así. Digamos uno más 00 punto cinco. Lo irreal hará la misa por ti. Si quieres duplicar la escala, simplemente puedes hacer click en multiplicar y dos. Así que duplicarlo. Se puede dividir así como multiplicar. Puedes hacer todas las operaciones masivas con los valores que te da lo irreal Y no se limita solo al panel de detalles. Se puede usar prácticamente en todas partes en lo irreal. Tenemos otras opciones aquí en el panel de detalles, que no van a ser cubiertas ahora. Los cubriremos más adelante. Ahora, hagamos una tarea. Tienes acceso a tu contenido de inicio y a todos los apoyos que contiene. Ve a la carpeta Props y selecciona las mallas que quieras, mallas estáticas Arrástralos, sumétalos a la escena y crea un pequeño conjunto de la manera que desees. Solo prueba tus herramientas y acostúmbrate a ellas. 6. UE5 FC03 02: Si. Ahora, hablemos de cómo mantener organizada nuestra escena. Como pueden ver, he montado aquí una escena sencilla con tres sillas, una mesa y una lámpara. Así que vamos a recogerlos a todos y moverlos. Entonces, si quieres mover nuestros objetos como un conjunto durante el nivel, tenemos que hacer click en cada uno haciendo click en ellos uno por uno o moverlos de forma independiente, lo que lleva mucho tiempo e ineficiente Lo que te gustaría hacer en cambio es hacer clic en todos ellos. Y presiona Control G, agruparlos. Ahora son un grupo de actores, por lo que se mueven como uno y son seleccionados como uno solo. Puedes cambiar G para desagruparlos y Control G para agruparlos. Puede hacer clic derecho, ir a grupos y grupo o hacer clic derecho y hacer clic en grupo. Lo mismo. También puedes hacerlo desde outliner desde el lado derecho aquí Como pueden ver, aquí tenemos una ficha de actor grupal , que es esta. Ahora, antes de movernos uno, hay una propina que me gustaría darle. Si quieres mover un solo objeto de todos los demás objetos, pero no quieres desagruparlos todos y agruparlos de nuevo, lo que puede llevar mucho tiempo cuando tienes tal vez 40 mallas en un solo grupo, lo que puedes hacer es hacer clic en estos ajustes en estos ajustes en Ir a Una selección de grupo. Haga clic en él, y ahora la selección de grupos está deshabilitada. Este sigue siendo un grupo de actores, pero ahora puedes seleccionarlos individualmente. Entonces ahora digamos que quiero acercarlo y éste también. Y ahora puedo hacer clic en Ir a configuración y hacer clic en Permitir selección de grupo, y ahora puedo seleccionarlos nuevamente como grupo. Esto es bastante eficiente cuando tienes muchas medidas en la escena que están agrupadas y no quieres desagruparlas y agruparlas nuevamente Y ahora podemos moverlo fácilmente a donde queramos. La escena, vamos a guardarla aquí. Ahora, otra forma en la que podemos organizar a nuestros actores es mediante carpetas. Escena irreal de este nivel ya tiene carpetas predeterminadas, pero los actores que agregamos no se agregan a la carpeta Así que vamos a crear una carpeta. Puedes crear una carpeta haciendo clic en esta carpeta con un icono más en la parte superior derecha. Haga clic en él, y si tiene el objeto seleccionado, se agrega automáticamente a la carpeta. Cambiemos el nombre de esto para digamos por mueble. Y agreguemos este sofá aquí también. Lo que podemos hacer es hacer que esto sea más grande más fácil de ver. Tenemos esta carpeta aquí. Simplemente puedes arrastrar esto a la carpeta. Ahora nuestros muebles están agrupados con otros. Pero este mobiliario no forma parte del actor agrupado. Es un actor separado en la misma carpeta. Así que no mezcles agrupar actores con solo tener los mismos actores en la misma carpeta. Hay cosas diferentes. Si quieres, puedes crear subcarpetas haciendo esto. Entonces digamos set one, y pongamos a nuestro actor de grupo en el set uno. Otra pequeña tarea. Hagamos un poco de limpieza. Toma tus escenas creadas anteriormente y organízalas. Crea carpetas, crea grupos, si tiene sentido tenerlos agrupados, y solo asegúrate de tener una escena fácil de limpiar que pueda ser fácilmente navegada a través de outliner Una vez que hayas terminado, pasa a la siguiente conferencia. 7. UE5 FC03 03: Bienvenida de nuevo. Como pueden ver, he creado una pieza de conjunto simple usando los accesorios en la carpeta de contenido de inicio E hice algo de follaje afuera, los agrupé, agregué algunos muebles en el interior, y obviamente los agrupé también con sondas adicionales, fuentes de luz, y pared de vidrio , algunos pilares, como puedes ver, e hice algunas limpiezas quitando mucho desorden de la escena Se agregó una puerta y un marco de puerta, y modeló esta sencilla caja usando herramientas de modelado irreales Ahora hablemos brevemente sobre las herramientas de modelado dentro de unrele Unreal tiene sus herramientas básicas de modelado que puedes usar, pero Unreal five dot four tiene herramientas de modelado adicionales disponibles para ti, pero necesitas habilitarlas desde los complementos Si hace clic en Editar y vaya a la sección de complementos. Estos son todos los complementos disponibles dentro de unrele. Algunos están integrados, lo que significa que UnRel los proporciona por defecto Pueden estar encendidos o apagados. Y algunos se instalan desde marketplace o plugins personalizados que tú o alguien más puedan haber creado. Así que aquí hay muchos plugins, así que no vamos a pasar por todos ellos uno por uno , el modelado de búsqueda. Después de buscar modelado, obtendrá múltiples herramientas de modelado. Recomiendo herramientas de modelado Modo Editor, y modo de modelado Editor de mallas estáticas. Ambos. Ambas son versiones beta, por lo que es muy probable que se mejoren en el futuro por el consejo irreal de desarrollo Después de habilitarlo, te pediré un reinicio. Como ya lo he habilitado, no tengo que hacerlo, sino simplemente hacer clic en el botón Reiniciar y darle un minuto para que se vuelva a inicializar Después de que tu irreal se haya vuelto a inicializar, ve a la pestaña en la parte superior y haz clic en Modo de modelado Como también puedes cambiar cinco para cambiar instantáneamente a él. En las herramientas de modelado, tenemos muchas cosas. No entraremos en detalles para cada uno, pero cualquiera que esté familiarizado con modelado verá muchas herramientas familiares. Entonces, si solo quieres crear una forma básica para bloquear bloqueando, me refiero solo a mallas de marcador de posición que se usarán para diseñar tu nivel Solo puedes usar herramientas de modelado dentro del carrete. Entonces, de la forma en que creé este, lo recrearemos en menor escala En primer lugar, basta con hacer clic en una forma que desee. En nuestro caso, una caja. También podrías hacer rectángulo, pero como puedes ver, es solo un avión, no es útil. Obtenemos caja. Y necesitamos definir la altura, anchura del libro. Por defecto, va 1-2 mil, pero puedes escribir valores más altos si es necesario. Entonces en nuestro caso, hagámoslo 500. Mantenlo simple. Vamos a moverlo hacia arriba. Muévelo por ahí. Y no lo quiero así de pequeño, así que vamos a hacerlo más grande vertical y horizontalmente, y no quiero que sea así de enfermo, así puedo reducir la altura. Entonces hagámoslo 20. Se puede incrementar la subdivisión para aumentar la calidad del modelo, pero como solo lo estamos usando para prototipos, no tenemos que hacerlo Ahora, después de que hayamos terminado con la selección de la forma general que queremos. Y tenemos un tipo de salida, una malla estática, que es exactamente lo que necesitamos. Podríamos asignar un material aquí de inmediato, pero lo dejaremos para más tarde y haremos clic en Aceptar. A menos que haga clic en Aceptar, esta malla no se generará. Y después de hacer clic en Aceptar, ahora es una malla generada existente en nuestro nivel. Y si das click en él y das click aquí para encontrar esta malla, veremos que tienes una carpeta generada y tu carpeta generada como todas las mallas que necesites Ahora, volvamos al modelaje. Entonces como puedes ver, es solo una forma. Puedes pensar que la mejor manera de hacerlo es simplemente crear otra forma para hacer una pared en el lado derecho en el lado izquierdo. Pero si prestas atención, esta es una malla entera. Entonces, si tuviéramos que moverlo, es una malla entera. No es sólo un avión. Entonces, la forma en que hacemos esto usando la forma más sencilla posible, es hacer clic en la malla e ir a modelar. Bueno, modelar formas, y haga clic en grupo de poli Editar. Estas opciones en la parte superior, y la mayoría de las opciones, realmente, no estarán disponibles para usted a menos que haya habilitado el plugin de modelado de complementos desde la sección plug in. Después de haber seleccionado la malla y dar clic en la edición de poligrupos Lo que tenemos que hacer es hacer clic en una cara. Para información, estos puntos se llaman vértices. Estas líneas se llaman bordes, y esta cara al lado de las mallas, esencialmente, se llaman caras Entonces damos click en la cara aquí y damos click en Extruir. Lo que hace Extrude es crear una nueva cara y pongámosla así La razón por la que hicimos esto es si miramos el modelo desde abajo, si tratamos de extruirlo aquí, lo extruirá Necesitamos algo más pequeño. Entonces lo extruimos ligeramente, y ahora tenemos un ritmo de línea que podemos usar para extruir nuestra parte Y ahora tenemos un lado de la pared. Podemos repetir este proceso aquí y extruir de nuevo. Y otra vez, Y ahora tenemos una forma similar. En este caso, no he modelado la parte trasera del Ya era un muro ahí, pero podemos hacerlo aquí si así lo desean. Puede utilizar herramientas de extrusión para hacer cualquier tipo de forma que desee Como puedes ver, podrías hacer formas complejas si quieres. Aquí hay muchas herramientas que puedes usar para modificar tus modelos. Se puede utilizar push pull, que es similar, pero técnicamente diferente función que en realidad puede reducir. Técnicamente, como se le llama. Tira o empuja el modelo. Hay bisel, lo cual no es realmente útil aquí porque no he seleccionado ningún borde, haga clic y seleccione el bisel a No hay muchos polígonos, así que no se ve bien, pero como pueden ver, hemos modificado la forma del modelo No vamos a tocar esto y solo podemos cancelarlo y yo también lo cancelaré. Otra vez, porque no he guardado el modelo. En el momento en que lo cancelé, los canceló a todos. Asegúrate de hacer clic a excepción de tu modelo para que te guardes. No necesito este modelo, así que simplemente lo voy a quitar. Pero me gustaría ver lo que has creado. Y no olvides limpiar tus modelos. Como ya no lo voy a usar , solo lo eliminaré. Probablemente podría cambiarle el nombre a algo más razonable, pero como no voy a quedarme con esto por mucho tiempo, no me voy a molestar. Ahora, tenemos un conjunto sencillo que no se ve realmente tan atractivo por el color y la iluminación. Es simplemente gris con rejilla, no el mejor look. Y vamos a cambiar todo eso en la futura conferencia. 8. UE5 FC04 01: Bienvenido de nuevo. En esta conferencia, vamos a hablar sobre los materiales, cómo aplicarlos, cómo crearlos y cómo modificar los materiales existentes. Por suerte, Unreal nos ha proporcionado materiales en el contenido inicial, que usaremos para fines de demostración inicial Y después de eso, te mostraré cómo crear materiales básicos. Como puedes ver en este nivel, el material de textura basado en cuadrícula vez que es útil para el desarrollo al globo ocular el tamaño y ubicación de los activos que colocas, no es muy guapa Entonces vamos a cambiarlo. En primer lugar, este piso aquí no se ve tan bien. Me gustaría convertirlo en algo que tenga más sentido estar sobre el terreno, y aquí tenemos algunos materiales. Me vendría bien, supongo, concreto molido. A ver. Usemos adoquines, lisos, como, y coloquemos aquí. Hmm. Esto se ve bastante raro. Y la razón por la que esto sucedió es porque el material está estirado. Si abres el material en sí, puedes verlo aquí, se ve bien. Y si pones una forma básica simple de digamos, un cubo y aplicas el mismo material. Esto también se ve bastante bien. La razón por la que esto sucede es porque la diferencia UV. Este piso no está realmente optimizado para este material. Entonces lo que podemos hacer aquí, podemos abrir nuestro material y este es un nodo material para este material en particular. Esto es bastante complicado, pero no necesitamos mucho de aquí. Lo que necesitamos encontrar es encontrar el nodo de coordenadas de textura. Entonces todo lo que necesitas hacer es encontrar esto y tejas tu material. Cuanto mayor sea el número, más aplaste las texturas. Puedes hacerlo aquí o aquí. Haga clic excepto. Dale el momento para que sea seguro. Y ahora veamos. Es mucho mejor, pero sigue siendo demasiado grande. Así que vamos a multiplicarlo por diez veces otra vez. Tal vez 50 y 50. Y ahora a salvo. Vamos a darle un momento. Idealmente, no querría editar mosaico en los materiales individuales y usar material de instancia Pero voy a explicar qué son los materiales de instancia más adelante. Bien. Esto podría ser mejor si lo aleatorizamos pero esto debería estar bien para fines de demostración Ahora tenemos una planta baja lisa. Y ahora veamos esto aquí. Realmente no me gusta este material. Entonces usemos otra cosa. Podríamos usar algo elegante como este material aquí para tener este aspecto futurista Este material utiliza luces emisivas. Lo siento, material emisivo que produce luces. Si vas al material, verás que hay un noid de color emisivo que se está aplicando Pasaremos por ello más adelante con más detalle. Pero por ahora aumentemos el alicatado. Digamos que cinco por cinco debería estar bien. Vamos a aceptar. Nuevamente, dale un momento. Se ve mucho mejor. algo de una película de Ciencia Ficción. Pero como vamos a agregar luces a esta escena más tarde, no queremos que esto sea contradictorio con las fuentes de luz Entonces, a pesar de que se vea tan genial, escoja un material más simple. Digamos, por ejemplo, ¿qué tal esto? Se ve similar, pero no hay luces. O tal vez. Deberíamos hacerlo de la madera. Podríamos hacerlo de la madera, también. Hagámoslo de la madera. Dar el momento. Pero, no se ve bien. Vamos a quedármela. Metal negro, rejilla metálica. Esto es un poco demasiado grande, así que vamos a tejearlo un poco más. Entonces hagamos 88 y veamos. Debería ser lo suficientemente bueno. Este piso. Lo siento, todo esto necesita tener material cambiado, también. Apliquemos aquí también. Esto debería estar bien. Quizá un poco demasiado oscuro, pero a quién le importa. Lo suficientemente bueno. Como pueden ver, hemos cambiado el aspecto de toda la escena. Pero estos son todos los materiales que ya existen en el kit de inicio. No siempre se proporcionan materiales, y habrá momentos en los que quieras crearlos tú mismo. Así que vamos a crear un material. Vamos a nuestra carpeta de contenido. Crea una nueva carpeta llamada material. Ábrelo y haz clic derecho o haz clic en Más. Puede hacer clic derecho y crear un material yendo a aquí material y haciendo clic en el material. Aquí hay muchas cosas que son para los futuros cursos. Haga clic en el material. Vamos a llamarlo básico M entendido puntaje básico. M de pie para material. Es bueno tener convenciones de nomenclatura para tus materiales en general M suele ser para materiales. Entonces lo abrimos, y esto es lo que obtenemos. Tenemos salida, esencialmente, y antes de salida, tenemos sustrato. El sustrato es una función material específica irreal que se agregó recientemente 9. UE5 FC04 02: Es posible que notes que el aspecto de tus materiales es ligeramente diferente al mío. Tiene un nodo de salida diferente, y eso se debe a que no tiene habilitados los materiales de sustrato. No tienes que usar esto específicamente, e independientemente de si lo usas o no, la funcionalidad básica del material, cómo crearlo es la misma. El sustrato es una función de material expandido para crear materiales en capas que son muy útiles y muy únicos para el motor irreal He habilitado por defecto, que recomendaría aprender si te interesa la creación material. Ahora, volviendo a los materiales. Tenemos algunas opciones aquí. Ignoraremos todo en el lado derecho, que en su mayoría son específicos del sustrato, y nos centraremos principalmente en aquí. Color base, metálico, rugosidad especular, color MSF normal El color base es, como se le llama color base. El lado izquierdo, tenemos una vista previa de malla SR. Como puedes ver correctamente, no hay nada en él, así que es simplemente blanco. Vamos a agregar un color a esto. De la forma en que lo puedes hacer, puedes clic derecho sobre la gráfica del material. Esta es la gráfica de materiales, como se menciona aquí. Y puedes intentar encontrar el nodo de textura, etcétera, pero simplemente puedes sostener tres en tu teclado, teclado numérico y clic Lo que esto hace, esto crea un valor constante que puedes usar para seleccionar un color. Entonces esto es basado en RGB. Entonces, seleccionemos el rojo. Podemos ajustar el color aquí de la manera que queramos. Si tienes un código X o un código X RGB, ya lo sabes, puedes simplemente copiar y pegar, escríbalo. Y digamos rojo. Como puedes ver, aquí nada ha cambiado porque aún no hemos enchufado nuestro nodo Vamos a enchufar nuestro nodo de color base aquí. Y ahora nuestro material es rojo. Pero digamos que queremos hacerlo más metalizado. Necesitamos agregar valor al metal. Por lo general, el valor no siempre es, sino que suele ir 0-1, lo que significa que necesitamos un valor de one float para ponerlo en Se trataba de valores sic, los cuales generaban un color. Pero aquí sólo necesitamos un valor. Entonces lo que tenemos que hacer hold one y click, lo que creará un solo valor, que será el float. Pongamos nuestro nodo de valor cero en el metálico. Nada cambió mucho porque el valor metálico actualmente está en cero, lo que significa que es tan poco metálico como puede ser Y como mencioné antes, uno suele ser el valor máximo. Entonces pongamos uno aquí y haga clic en N. Dale un momento. Ahora, de pronto, es muy diferente. Siempre podemos poner un valor entre cero punto cinco. Así que mantengámoslo a la una o ahora. Lo queremos brillante y queremos que sea diferente. Entonces, por cierto, puedes verificar los valores predeterminados aquí. Entonces, como puede ver, valor especular predeterminado es cero punto cinco, lo que significa que este es un valor especular de 05 en este momento Agreguemos líquido adicional y lo pongamos en especular. Ahora tenemos valor especular de cero. Y hazlo uno puedes notar mucha diferencia en la pantalla, pero es bastante útil para superficies no metálicas. Como lo hicimos metalizado, no vamos a poder verlo. Entonces hagamos cero metálico y uno especular. Y ahora reduce especular a cero para ver la diferencia. ¿Ves? El material es muy mate ahora. Ya no brilla porque es un material no metálico sin especular Por lo que no va a estar brillando y reflejando la luz hacia atrás. Pero por ahora prefiero que mi material sea metálico, así que hagámoslo uno. Y especular no importa cuando el material es completamente metálico en la mayoría de los casos Entonces ahora echemos un vistazo a la aspereza. El valor de difusión de rugosidad también es cero punto cinco. Entonces ponemos la rugosidad a cero, lo que significa que es tan lisa como un vidrio, y es muy reflectante porque es un material metálico, completamente metálico con una superficie completamente lisa Si se reduce el valor metálico, repente, es solo un objeto liso. Si tienes uno para especular, hay algo de brillo, pero no es tanto como lo era cuando era completamente metálico Entonces ahora vamos a phot uno, cero. Y nuevamente, esta es una esfera metálica muy lisa. Especular no importa cuando tenemos un objeto metálico, así que simplemente lo mantendremos en cero ¿Y qué pasa si levantamos nuestra aspereza? Si le pones rugosidad a uno, es la misma textura que una tiza Lo más parecido que está al valor de uno en la vida real es la tiza. Para los que no saben lo que es la tiza, es una herramienta utilizada para escribir en la pizarra Pero esto es demasiado. Entonces pongamos en menor valor. Digamos 07. No queremos que sea muy reflexivo, pero queremos que sea reflexivo. Quizá un poco más. Lo sentimos, tenemos que hacerlo más bajo porque está a la inversa. Cuanto menos valor tenemos, más reflexivo es. No, un poco más. Y, sí, esto está bien. No demasiado reflexivo. No y ahora tenemos una normalidad. Entonces en este caso, debido a que solo estamos haciendo un material de color simple, normal no es tan útil para nosotros, sino que las normales se utilizan para calcular ciertos valores en el espacio tangente Por lo general, las texturas normales se utilizan junto con normal, y el valor de cero, uno rara vez se usa por defecto. Entonces veamos una aplicación de una normal. Digamos, Oh, sí, este adoquín que recientemente le echamos un vistazo Entonces tenemos este nodo normal viniendo aquí. Entonces tenemos una textura normal. Esta textura normal es importante para que la textura cobbledon se muestre correctamente Entonces ahora veamos el mapa. Tenemos este material, o. Y en este material, si vamos y echamos un vistazo a la textura normal, esta es una textura normal para el material que usamos en el piso. Y digamos que lo quitamos o lo cambiamos por otra cosa, ¿verdad? Entonces cambiémoslo a normal de un adoquín diferente o incluso guijarros. Y aplicar. De pronto, se ve un poco diferente. Hay algo mal con el material. Hagámoslo otra vez. Esta vez, vamos a cambiarlo de plano en textura de un concreto y Ahora bien, estas líneas raras sobre el material, que son de lo normal del adoquín Es muy importante que las normales coincidan con la textura. Tenemos que aplicarlo. Yo controlo las dos veces para restaurar lo que teníamos inicialmente. Las texturas normales suelen ser creadas por artistas de texturas o modeladores. Si quieres aprender a hacerlo tú mismo, te recomiendo buscar la información relacionada con el modelado y la textura o los cursos en nuestra lista de cursos. Es muy profundo y puede ser lo más complicado que puede ser, así que no lo estaremos cubriendo en este curso. Pero si estás interesado, por favor da tu opinión. Podemos precipitar un nuevo curso en este tema en particular. Entonces cerremos esto y volvamos al material. Ahora, se ve igual que antes. Volvamos a nuestro material básico. Estábamos creando aquí, tenemos algo interesante. Tenemos un color emisivo. ¿Qué significa? El color emisivo es esencialmente un material que brilla y produce luz Entonces si agregamos un valor y lo ponemos aquí, y a cero, no hace nada. Si lo pones a tal vez a las cinco, ahora está brillando de manera brillante Si lo metes, digamos, 5 mil, podemos quedarnos ciegos. Como se puede ver, en estos momentos está emitiendo mucha luz. Y este material no está destinado a ser brillante, así que simplemente no vamos a hacer esto. Y mantenerlo en cero es, que es por defecto. Entonces quitamos esto. También tenemos opacidad Si agregas una nota flotante, mis disculpas, agrego otro valor flotante y lo pongo en opacidad y lo pongo en cero, el color del material simplemente no aparecerá porque está en cero Si lo pones en digamos cero punto siete, tienes un poco opaco. Es un poco difícil de ver, así que se deja en cero punto dos. Es menos opaco. En este caso, no vamos a usar esto, pero independientemente, es importante entender cómo funcionan los materiales en general. Si quieres hacer un material opaco o translutar, veamos el material del vidrio Entonces el vidrio que teníamos es un contenido inicial materiales, el material de vidrio. Echemos un vistazo al material de vidrio. Tenemos refracción del índice de reflexión. Mis disculpas. Contamos con nuestro modelo de sombreado de sustrato Y aquí tenemos opacidad, y la opacidad es También tenemos refracción adicional, etcétera, que hacen modificaciones adicionales para editar la superficie del objeto Esto está muy por encima del nivel intermedio, así que nos saltaremos eso. Si le echas un vistazo aquí, tenemos un material muy interesante que es prácticamente casi todo negro Tenemos un valor especular de diez Como dije, por lo general, va también entre cero, pero a veces se puede ir más alto. En el caso de especular, es un valor de diez Tenemos una rugosidad de cero porque esto es vidrio, y tenemos opacidad de punto cero 35 Debido a que es un material negro con opacidad, parece un vaso Y si se quita esta refracción aquí, como se puede ver, no cambió casi nada Así que no te molestes demasiado con la refracción en este momento Y si cambiamos esta opacidad a una, esta ya no es una clase transparente Cambiamos lo especulativo a uno, es demasiado tenue. No hay forma garantizada de obtener el resultado específico que deseas, con un material. Entonces, el mejor curso de acción es simplemente entender las funciones básicas del material, lo que significan, e intentar juguetear hasta que consigas lo que quieres Ahora, por ahora, vamos a cerrar esto. No vamos a salvar. Y volvamos a esto. Entonces aquí estamos de vuelta, y tenemos ahora este material. Y queremos que este material se aplique en el bajo. Aquí hay opciones adicionales para el aditivo enmascarado, etcétera, que se cubrirán en los cursos futuros Y vamos a guardar esto y vamos a mac el amor. Ahora, digamos que queremos que estas cajas sean del mismo color que el material recién creado. Vamos aquí y lo seleccionamos, y lo aplicamos. Oh, ahora de pronto tenemos dos cajas con un material que acabamos de crear. Es bastante así de sencillo aplicar el material creado al nivel. Pero digamos que queremos tener un material metálico, pero queremos que cada uno tenga un color diferente o diferente cantidad de rugosidad o especularidad Queremos que algunos tal vez este sea amarillo, este sea verde, este sea blanco. No importa. ¿Eso significa que creamos un nuevo material para uno único, cada tipo y variación? No. Aquí es donde entran las instancias materiales. Entonces si tienes un material, y quieres tener múltiples versiones de ese material, por ejemplo, como dije, quiero que todo esté aquí para que sea exactamente igual, aparte del color. Entonces quiero la misma cantidad de superficie reflectante, metálica, etcétera, y lo único que quiero ser diferente es el color en sí Lo que puedo hacer es hacer clic derecho sobre el material y crear una instancia de material. Ahora bien, ¿qué significa esto? La instancia de material es hijo de un material, y toma todos sus parámetros del propio material. Entonces ahora apliquemos esto a todas estas medidas. Entonces ahora tenemos una instancia material. Hay múltiples beneficios al tener una instancia material. Está más optimizado y es más fácil de cambiar en tiempo de ejecución. Entonces ahora separemos esto por un segundo y echemos un vistazo a esto, ¿verdad? Correcto. Entonces ahora mismo, no tenemos nada en nuestro material. Porque no agregamos ninguna propiedad que se supone que debemos estar agregando y cambiando del material. Hay algunas opciones por defecto que real tiene para ti, pero no son lo que queremos. Entonces, ¿cómo agregamos opciones aquí para cambiar durante el proceso? Vamos al material en sí y encontramos los parámetros que queremos. Y en este caso, este, queremos cambiar de color. Por lo que hacemos clic derecho sobre él. Y convertir a parámetro. Entonces tenemos que nombrarlo. Esto es color, por lo que es sencillo de nombrar. Y ahora tenemos un parámetro llamado color, ¿correcto? Y el valor por defecto para este material es rojo. Esto es todo lo que tenemos que hacer. A tener en cuenta, puedes hacerlo por cualquier otro parámetro. Podrías hacerlo por aspereza, metálica, etcétera. Regresamos y volvemos a abrir el material. Hagámoslo más grande. Ahora tenemos un color. Entonces, si hacemos clic en esto y cambiamos el color aquí, instantáneamente cambia el color de todas las mallas aplicadas con este material exacto Se puede cambiar fácilmente. Pero quizá te estés preguntando, espera, pero no quiero que todos sean del mismo color. Bastante justo. Crea más instancias de ese mismo material. Y ésta puede ser instancia material, dos, y aplicar ésta. Y ésta puede ser instancia material tres. Y digamos que esto se aplica a éste y éste es amarillo. Hagamos, una vez más, crear instancia material, nómbrala. Este, vamos a hacer el nombre cuatro, abrirlo, cambiarlo, verde. Y apliquemos esto a esto. Ahora tenemos cuatro materiales de diferente color. Entonces tal vez te estés preguntando, ¿cuál es el beneficio de hacer esto? Porque esencialmente creamos múltiples instancias de material. ¿No podría simplemente crear múltiples materiales? No. Entonces, antes que nada, las instancias materiales están más optimizadas, lo que significa que toman menos recursos de los que lo harían si tuvieras múltiples materiales. En segundo lugar, ahora, tenemos cuatro materiales, instancias, para ser correctos, que se está aplicando a estas cajas. Y digamos que tomamos esta instancia material y queremos cambiar algo. Pero aquí hay beneficio adicional si quieres cambiarlos todos. Digamos que hubo una diferencia de opinión más adelante, y queremos asegurarnos de que ninguno de estos materiales de color sea metálico. Entonces queremos que sean rudos, y lo cambiamos en el parent save dale un momento. Regresa y ahora todos ellos son no metálicos. Entonces ahora tenemos flexibilidad para editar materiales en el padre, lo que cambiará instantáneamente todos los valores no siendo modificados en instancia o si quieres cambiar un material específico solo en instancia específica de la malla, solo puedes editar eso Como dije, podemos hacerlo no solo con color, podemos hacerlo con cualquier cosa. Entonces digamos que este es un metalizado, así que podemos hacer click derecho sobre él, convertir a parámetro. Llamar a este parámetro metálico, guardar. Tenga en cuenta, este es un material padre. Ahora bien, si abres alguna de las instancias que creamos anteriormente, tenemos una opción aquí o metálica, que podemos cambiar. Así que ten en cuenta. Hagámoslo más visible. Mantén tus ojos en esta caja azul, y cambiemos la metálica. Ahora solo tenemos uno de ellos, no metálico. Obviamente, es mejor solo tener cero en lugar de negativo. Así podemos modificar fácilmente nuestros materiales y nuestras instancias materiales de esta manera. Y esta es la forma recomendada de hacerlo. Entonces ahora vamos a guardar esto y echemos un vistazo. Es simple. No es nada demasiado difícil, y se ve bastante bien para algo que creamos en pocos minutos. Ahora, antes de pasar a la siguiente conferencia, hagamos otra tarea. Con los conocimientos que adquiriste, crea materiales y decora tu escena. Buena suerte y nos vemos en la próxima conferencia. 10. UE5 FC05 01: Bienvenidos de nuevo al curso. En esta conferencia, vamos a hablar sobre los relámpagos, sus diferencias, y cómo colocarlos en la escena. Antes de hablar de relámpagos que se pueden configurar en la escena, echemos un vistazo al que ya existe en la escena por defecto en esta plantilla, que es la luz direccional. Y este relámpago de aquí es el sol. Si vas a los ajustes, panel de detalles para ser más precisos y cambiar la intensidad. Aumentaré la luz solar o la disminuiré dependiendo del valor que pongas. A cero, no hay luz, esencialmente. Y a la una, es muy baja. Yo personalmente prefiero tres, como puedes ver, pero puedes cambiar el valor como quieras. El color claro, como es comprensible de nombre, cambia la luz del color. Lo siento, el color de la luz. Ya ves, podemos darle a nuestra escena una vibra diferente, o ahora la mantendremos tal como está. El ángulo de origen en realidad no importa tanto. El ángulo predeterminado aquí, el ángulo de origen es el mismo que el propio sol. Y si tu principal fuente de luz es el sol, bien podrías mantenerlo a este valor. Esto tampoco es algo que te deba preocupar. Se puede aumentar la temperatura o disminuirla, lo que afectará el matiz del color. Nuevamente, no es algo que realmente te deba preocupar en este momento. Y podemos ignorar el resto de esto. Podríamos eliminar las sombras, lo que eliminará todas las sombras que la proyecten por esta fuente de luz. Cuando tienes múltiples fuentes de luz en la escena, es posible que prefieras una sombra específica de esa fuente de rayos específica. Entonces en ese caso, solo puedes desactivar otras y quedarte con esa, o puedes tener múltiples luces proyectando sombra de múltiples fuentes. Y este objeto tendrá múltiples sombras de ellos. Pero es mejor no tener cientos de luces, que todas ellas están proyectando sombras en un espacio reducido porque eso es solo un desperdicio de cómputos, como la optimización para tu juego Y obviamente afectar al mundo es algo obligatorio en la mayoría de los casos. Bien, ahora hablemos de las luces que en realidad son algo que puedes colocar en la escena de una manera más pequeña. Entonces si volvemos a este set que tenemos aquí, está muy oscuro. Y digamos que queremos que el sol no esté tan alto en el aire. Queremos algo como puesta de sol. Podemos cambiar la dirección del sol fácilmente presionando Control E, perdón, control L y girando la dirección del sol. Entonces, vamos a algo como esto. Me estoy moviendo alrededor del mouse mientras mantengo presionada la tecla de control. Sí, hagámoslo Lexis. Cada vez el lado más oscuro, y ahora tiene más sentido tener un rayo aquí. Siempre podrías tocar luces, hacer clic en este icono en la parte superior e ir a las luces. O puede hacer clic en la pestaña Ventana aquí, colocar actores e ir a la bañera de luz. Lo guardaré Lexis solo para que sea más fácil explicar lo que hace cada uno de ellos. Ya hablamos de luz direccional. Personalmente no querrías tener demasiadas luces direccionales en la escena. Entonces, por lo general, una luz direccional de la fuente de luz principal, el sol es suficiente, pero es posible que desee tener varias luces más pequeñas. Entonces hablemos primero de la luz puntual. Esta es la luz puntual. Esta luz tiene un radio. Vamos a sacarlo afuera, la cámara por un segundo. El círculo alrededor define su radio. Ocultemos nuestra luz solar por un segundo, que podamos tener más fácil ver. El radio de origen y el radio de origen suave están interconectados. Si tu radio fuente es cero, radio de fuente suave no hace nada. Entonces, para fines de demostración, hagámoslo más pequeño y aumentemos la radio fuente. No tiene que ser tan grande para tener algún efecto en las radios de fuente blanda. Puede ser literalmente uno. Cuando aumente esto o lo disminuya, notará la diferencia en el relámpago sobre estos objetos lejanos. Hagámoslo así. Lo que cambió es la caída en que radio comienza a tener cada vez menos luz. Por lo general, no es algo sobre lo que tengas que moldear demasiado. Puedes mantenerlo sencillo. Y por ahora, echemos un vistazo al último, que es la longitud de la fuente. Entonces, si ponemos el radio fuente así, eso es demasiado grande. Hagamos que esto haga esto. Esencialmente le da la altura. Entonces en lugar de una bombilla aquí, ahora es un gigante parece un elevador gigante que emite luz En realidad no es algo que tengas que entrometerte demasiado, y puedes ignorarlo la mayor parte del tiempo Y restituyamos esta luz a algo propio. Se hace más grande. Hagámoslo un poco más grande, supongo. Y de nuevo, es lo mismo que antes, el mundo afecta queda ensombrecido o no. Podemos ignorar todo eso. Ahora, echemos un vistazo al siguiente tipo de luz, que es el foco. Quizás te estés preguntando qué hace Spotlight. Es una fuente de relámpago que como puedes ver en la forma Aumentemos la intensidad de la misma. Es una luz que afecta sólo a una determinada zona. Xis. Movamos el panel de detalles hacia arriba para que sea más fácil de ver. Se puede aumentar el radio de atención lo que aumenta la lente. Se puede rotar. Como se puede ver, el eje X realmente no hace mucho. Pero puedes girarlo en los ejes Y y Z, echa un vistazo a M para colocar tu luz de la manera que quieras. Es el tipo de luz más utilizado en los juegos en general en las escenas ya que si tu lámpara está en una dirección determinada o supone que tu fuente de luz se acuesta sobre un actor o dirección específica, es la luz más fácil de usar para estos fines. Y tenemos cosas adicionales aquí, que es el ángulo del núcleo interno, como se puede ver, aumenta o disminuye el co ángulo. Lo que hace el cono interno y el cono externo es cono interior es donde la luz está más brillante Entonces la intensidad de 160 que tenemos aquí se aplica al cono interno. Entonces, ¿vamos a hacerlo 40? Y con exterior es donde comienza la caída. Entonces, si somos 40 40, tendremos un flujo muy agudo. Si tenemos núcleo interno a 20, mientras que f apagado en 40, tendremos una luz suave más suave con una f off después del núcleo interno de 20. Si estamos en cero, todo será suave. Entonces podrías convertirlo esencialmente en cinco para enfocarte en un determinado objeto si hay alguno. Digamos que aquí tenemos estos cubos. Y si dejo de hacer clic en la luz, entonces ahora tenemos una luz que se enfoca en los objetos. Entonces podemos aumentar el radio porque parece un poco demasiado pequeño, y podemos hacer ángulo de cono exterior aún más pequeño. Pero no tan pequeño, tenemos un objeto que sospechosamente se ilumina en tu escena El resto de las opciones son las mismas que antes. Fuente de longitud realmente no hace mucho en este caso. Y podemos pasar a nuestra siguiente luz, que es la luz rectangular. Entonces, lo que hace la luz rectangular, es una fuente de luz en forma de rectángulo. Entonces, rotemos esto para que brille la luz en el suelo. Y aumentemos el tamaño de la fuente para que sea más fácil de ver. Y también, cambiemos la radio de acenación. De más fácil ver el tiempo. A diferencia de las diapositivas anteriores, esta es una forma particular. Entonces, si cambiamos la altura de la fuente o el ancho de la fuente, tendremos una forma específica para nuestra fuente de luz. Entonces la luz ahora está enfocada en esta dirección. Si cambias esto, segundo, así y pones el ángulo de la puerta de tu granero como más pequeño, será una sombra rectangular muy nítida. Después disminuye la longitud o aumentala dependiendo de qué tan nítidas o cuadradas quieras que sean tus sombras. Y puedes hacerlo así para conseguir un tipo de sombra muy específico. Ahora, antes de pasar a la siguiente conferencia, agrega algunos puntos de luz a tu escena. Esta será su tarea por ahora. Si no tienes ninguna fuente de luz, asegúrate de agregar algunas. Sé creativo. Puedes agregar cualquier cosa. Puede ser una lámpara. Puede ser una antorcha. Puede ser una chimenea. Haz lo que quieras con él, ponte creativo. No lo pienses demasiado y ve camino a complejo. Simplemente mantenlo simple. Hablaremos de cómo hacer relámpagos complejos con interactividad en la próxima conferencia Así que por ahora, solo asegúrate de tener algún espacio donde puedas agregar tus luces y moverlas. Tal vez agrega algo de color a tu escena. Es posible que desee hacer una discoteca, color, lo que sea que usted decida. Diviértete y nos vemos en la próxima conferencia. 11. UE5 FC06 01: Bienvenido de nuevo. En esta conferencia, vamos a hablar de planos. Entonces, para empezar, donde las dejamos, estas lámparas en la pared, queremos agregarles luz, pero queremos agregarles luz, digamos, de diferentes colores o diferentes fortalezas, o tal vez incluso formas. Podríamos simplemente agregar uno manualmente a cada uno, como hicimos con esta lámpara en el techo. Pero esto lleva mucho tiempo. Y ¿y si no tienes seis sino 600 luces en tu escena? Aquí es donde entra en juego el plano y la funcionalidad. Para convertir este objeto en un plano, hagamos clic en este botón aquí Esto convierte a este actor en clase de planos reutilizables. Entonces vamos a hacer clic en esto. Esto te pedirá una subclase. Simplemente puede hacer clic en Seleccionar. Este es un Masacor estático y este es un actor, va a ser un Mahcor estático de todos modos, así que está bien Y obtenemos esta vista. Esta es una ventana gráfica donde podemos mirar nuestro objeto, modificarlo, etcétera. Y quizás lo que es aún más interesante es este gráfico de eventos. También tenemos un guión de construcción, que hablaré en la próxima conferencia. Entonces esta es nuestra gráfica de eventos. Antes de seguir adelante, necesito explicar qué es un plano, qué es un actor y cómo funciona todo Los planos son un sistema de código visual hecho para ayudar a las personas que quieren ahorrar tiempo o que tienen problemas para codificar, hacer su trabajo sin tener que codificar en C plus o C sharp en algún otro motor La forma en que esto funciona es que estos planos son esencialmente una función integrada en tus actores Y la pregunta, ¿qué son los actores? Cada objeto de tu escena es un actor, y la escena es tu nivel. Entonces este vasto vacío, ya ves, que es mi nivel, cada cubo, vidrio, luz, Todo, hasta los pedazos de hierba estropeados , son todos actores Si bien puede crear una idea errónea por parte de actores como actores humanos o personajes en el lenguaje del código en el motor, los actores lo son todo en tu escena tres D como con algunas pequeñas excepciones Por ejemplo, este material, el color no es un actor. Es solo una adición visual a tu actor. Sería lo mismo para calcomanías o partículas que se producen, como todos los subproductos de otros actores de la escena que no son realmente O propósito, aunque sean interactables, no son algo que solo puedas colocar en tu nivel como son Por ejemplo, digamos que tenemos un personaje que dispara bolas de fuego El personaje en sí es actor. La bola de fuego que disparó es un actor si se hace como proyectil Pero las imágenes de llama alrededor del objeto, que es un proyectil, no son actores Son solo componentes, y ese componente en particular es la partícula. La siguiente pregunta es, ¿cuál es el propósito de los actores en el nivel? Los actores, como dije antes, pueden ser cualquier cosa en tu nivel. Hay pasto, sus paredes, sus pisos, sus personajes. Son todo lo que necesitas tener en tu nivel. Y los actores son diferentes. Algunos actores ni siquiera son visibles. Actor no tiene que ser visible para ser relevante. ¿Y qué son los planos? Y veamos cuál es la diferencia entre esta lámpara, que es solo una malla estática y esta lámpara p, que ahora es un plano La diferencia es que esta malla estática está limitada en funcionalidad a lo que puede hacer una malla estática. Entonces como pueden ver, tenemos nuestro panel de detalles. Tenemos nuestros parámetros, transformar, etcétera, algunos ajustes de base sobre cómo deben interactuar los motores con este objeto Puede ser bastante complicado pasar repentinamente por todos ellos, así que no vamos a tocarlo en este momento. Y honestamente, no necesitas tocar la mayoría de las cosas en el panel de detalles a menos que sepas exactamente lo que estás haciendo. Pero los actores, que son planos, pueden contener cualquier tipo de funcionalidad Por ejemplo, si quiero explotar esta lámpara, puedo. Si quiero que se mueva o vuele o haga cualquier cosa, realmente, puedo hacer todo esto a través del plano Obviamente, hay limitaciones lo que puedes y lo que no puede hacerlo y cómo quieres hacerlo. Pero la libertad es tuya para hacer lo que quieras con este objeto. En nuestro caso, queremos que este objeto emita luz. Esto es una lámpara. Y lo que podemos hacer para hacer esto es lo mismo que hicimos en la conferencia anterior, podemos agregar una luz. Entonces agreguemos una luz direccional. Oh, mis disculpas. Foco. Y queremos que el foco esté mirando hacia arriba, y queremos que esté exactamente donde está la fuente de luz. Si tiene problemas para moverse con el mouse y hacer zoom, puede desplazarse hacia abajo, reducir o aumentar la velocidad del mouse, o simplemente puede hacer clic en la parte superior aquí y reducirla aquí Pongámoslo así. Verás que la velocidad de la boca es ahora más baja, lo cual es bastante útil cuando estás trabajando con objetos más pequeños. Además, si te pierdes y no estás seguro de dónde está tu objeto, siempre puedes hacer clic en él y presionar el FK. Y si solo presionas FK, se acercará y podrás ver tu objeto. Esta función también obviamente funciona en el amor. Entonces, si tienes el seleccionado y te mueves, presiona FK, éste se ajustará de nuevo al objeto que hayas seleccionado, lo cual es bastante útil cuando tienes múltiples objetos en la escena o tu nivel es demasiado grande para tener en cuenta dónde estaba el objeto o perdiste el objeto mientras lo estabas arrastrando A lo mejor es bajo el piso y echas de menos seleccionados y ya no puedes verlo. Y solo puedes presionar esa tecla o tu objeto está correctamente. Entonces ahora volvamos al plano. Y agregamos esta luz a la escena, ¿verdad? Correcto. Y puede notar que este foco está bajo el componente de malla estática, lo que significa que el foco ahora está unido a la malla estática misma. Si bajamos el objeto, etcétera, los hijos mayores del mismo se moverán Entonces agreguemos un cubo. Este cubo es demasiado grande, así que hagámoslo un poco más pequeño. Este cubo ahora está unido al componente de malla de pila. Entonces, si escalas el componente de malla de pila, mientras que es cinco, este cubo también aumentará de tamaño. Entonces esto es bastante útil porque esencialmente estás creando un actor escalable, uniformemente escalable que heredará todas sus propiedades del padre cuando lo modifiques en el nivel Eliminemos este cubo y compilemos, guardemos por si acaso. Ahora tenemos la lámpara de luz y la propia fuente de luz, el foco. Podemos editarlo aquí y ahora cambiando las radios, etcétera Entonces vamos a reducir el radio. No quiero que sea una luz demasiado fuerte. Pongamos el valor de 500 y compilemos. Después de compilar, puedes volver al nivel y echar un vistazo. Oh, tenemos una luz muy débil. A mí me gustaría que fuera quizá un poco más fuerte. Así que aumenta la intensidad hasta, digamos, t. Y sube. Sigue siendo un poco más fuerte, pero no me gusta la forma. A lo mejor es porque lo extravié. Un poco, sí. Es un poco mejor. Y digamos que quiero que sea de color rojo. Ahora es rojo. Pero también podríamos haber hecho esto por el método habitual con sólo adjuntarlo, ¿correcto? Aquí. ¿Por qué lo haríamos así si es demasiado molesto? lo haríamos así si es demasiado molesto Porque podemos agregar funcionalidad. Entonces en lugar de hacerlo rojo por defecto, lo haré blanco, y haré que la intensidad sea 20 K, solo para que coincida con la lámpara vendedora. Perdón. El radio de atención está bien para mí, y lo compilaré y pasaré al gráfico de eventos Y aquí es donde sucede lo más interesante. Antes de seguir adelante, explicaré qué son los eventos. Entonces estos son los tres eventos predeterminados que Unreal pondrá para ti enseguida. Y los eventos son esencialmente desencadenantes que comienzan como script. Entonces, por ejemplo, este evento comenzar a jugar va a comenzar cuando este actor esté en el nivel y comience el nivel. Entonces, si este actor no está en el nivel, esto no hará nada. El actor necesita estar en el nivel para que esto comience. Entonces esto comienza, y digamos agregar un nodo de cadena de impresión, podemos agregar un nodo de cadena de impresión aquí y solo hacer que diga hola hola. Entonces print string es una función de error que te permite depurar esencialmente probar las funciones si se activan o no. En este caso, sólo vamos a mantenerlo en hola hola y compilar y volver al nivel. Cuando presionamos play, obtenemos hola porque el evento comenzó en el momento en que el nivel nosotros si fuera a quitar esto del nivel y presionar play, no hay hola porque el nivel la lámpara en sí no está en el nivel, así que esto no disparará. Si de alguna manera engendro o creo este plano en la mitad del nivel, esto comenzará Esencialmente, esto es lo que sucede cuando este actor se inicializa y se crea A continuación se superpone el actor del evento. Entonces, para entender la superposición, primero, necesitamos entender la colisión. Si miramos el objeto, escojamos esta tienda. Digamos esta tienda. Esta tienda tiene colisión. Entonces, la manera fácil que puedes verlo es simplemente dar clic aquí y hacer clic en colisión de jugador, lo que significa colisión que afecta al personaje del jugador. También hay colisión de visibilidad. Es posible que hayas notado que hay una ligera diferencia entre la colisión visible y la colisión del jugador. Esto se debe a que esta hierba en el suelo no tiene colisión contra jugador. Entonces, si nos movemos, no nos detienen, no pueden interactuar con ellos. Pero con esta historia y con toda honestidad, resto de los objetos de la escena sí. Esto se debe a la forma en que se configura la colisión para estos objetos, que atravesaremos en el próximo capítulo. Pero independientemente, volviendo al grano, este objeto tiene colisión. Y por defecto, este objeto no hace nada. Si quieres agregar funcionalidad a la tienda, antes que nada, necesitaremos convertir la tienda a un blueprint Entonces qué podemos hacer para hacer esto, damos click en este botón aquí, y yo sólo voy a mantener el nombre ahora mismo como está. Es una buena práctica hacer nuestros archivos de nombres mediante la convención de nombres. Por lo general, los planos se llaman BP. Y ahora tenemos este nuevo plano, y este plano es una puerta Si cierras el proyecto y no encuentras tu blueprint, siempre puedes ir a tu navegador de contenido y encontrar tu blueprint En este caso, no me gusta que esté en esta carpeta específicamente. Entonces lo que voy a hacer, lo voy a mover a la carpeta de contenido y moverme aquí ir a mi contenido. Y nuevamente, no está organizado si tenemos múltiples planos aquí, todos ocupando espacio, todos ocupando espacio, así que voy a crear una carpeta, llamarlo blueprint Um, vamos a hacer planos, sólo para ser. Y cambiemos el nombre de esta lámpara, también. Y ponlos en nuestra carpeta de planos. Entonces es más fácil para nosotros encontrarlo en el futuro. Bien, ahora, esta puerta no tiene colisión. Para ser más específicos, tiene una colisión, pero solo está bloqueando al jugador. Realmente no podemos abrir la puerta. Si queremos abrir la puerta, idealmente, cuando nos acerquemos a ella, la puerta simplemente debería abrirse. Podríamos haber agregado alguna interactividad como presionar E para abrir la puerta, como en la mayoría de los juegos, pero también podríamos convertirla en una puerta automatizada Entonces, ¿cómo hacemos esto? Entonces antes que nada, vamos al evento Craft y no vamos a estar ing tick o evento comenzar a jugar. Así que vamos a eliminarlos. 12. UE5 FC06 02: Antes de que en realidad solo empecemos a codificar aquí, lo que sea, es una buena práctica probar simplemente si tus suposiciones son correctas. Así que pongamos en una cadena de impresión diciendo hola. Por lo que estamos esperando que cuando el actor se superponga con la puerta, obtengamos el gatillo hola Entonces pasemos a la puerta y no pasa nada. Podemos preguntar ¿por qué? Porque hay una diferencia entre colisión y superposición. Superposición supone que los objetos pasan entre sí y esencialmente se superponen en cierto punto. Pero la colisión impide que esto suceda. Entonces, lo que hacemos volvemos al plano y echamos un vistazo al viewpo Como esta puerta es un objeto sólido, no podemos simplemente atravesarla para superponerla con nuestro personaje jugador. Por cierto, acabo de notar que la puerta está invertida. Así que vamos a solo. Esto es vergonzoso, pero vamos a disculparnos Mira, gírela en la dirección correcta. No sé, a lo mejor hay algunas puertas que han tenido una a la izquierda. Nunca he visto uno hasta ahora. Aparte de puertas dobles. Bien, entonces volvamos a la puerta. Y aquí, necesitamos agregar una caja de colisiones. No usaremos esta caja para colisiones específicamente. Esto es solo una caja para desencadenar un evento. Entonces vamos a escalarlo del tamaño que queramos. Donde se activará si el personaje del jugador lo golpea. Simplemente puedes hacerlo así. Y no quiero que este evento se active después de que entramos en la sala. Quiero que siga abierto. Así que hagámoslo así, así no tengo que preocuparme por el otro lado de la puerta. Entonces, lógicamente hablando, ahora el propósito de esto es cuando nosotros, el personaje jugador, nos superponemos con esta caja invisible la puerta se abrirá Pero antes de que podamos hacer esto, eliminemos esto y hagamos clic en el cuadro que creamos. Esta es la caja que hemos creado. Y del lado derecho abajo en el panel de detalles, verás que tenemos eventos. Estos se hacen automáticamente por irreal para hacerte la vida más fácil así que solo puedes ahorrar tiempo y simplemente hacer clic en lo que necesites En nuestro caso, necesitamos que los componentes comiencen a superponerse. Puedes preguntar, qué quieres decir con componente y ese componente lo es todo dentro del actor. Este plano en sí mismo está actuando como actor. Este componente de malla estática aquí es el núcleo, esencialmente el componente raíz del actor. No se puede eliminar. No se puede quitar. Se puede cambiar pero idealmente, la raíz del componente es qué se centra todo. Y la parte de la puerta en sí es parte de la puerta, y el marco de la puerta es en realidad la raíz de la escena. Entonces esta parte interna de la puerta es solo un componente de malla estática tocado. Y lo mismo va para la caja. Podríamos agregar cantidad infinita de bien, no realmente infinito por razones computacionales, sino muchos componentes adicionales, pero en este caso, no los necesitamos. Y podemos ver aquí, dice, En componente comienzan solapamiento, y en el al final, puede ver que hay caja. Este es solo un nombre de la colisión que hemos creado. Entonces, si cambiamos el nombre por digamos, obtendrás esto. A mí me gusta más la caja, tenía más sentido. Ponemos esto ahora a aquí, imprimir cadena, y para probar si esto realmente desencadenará el evento de superposición. Entonces volvemos al nivel, pulsamos play, volvemos a la caja. Oh, tenemos el hola arriba a la izquierda. Tenemos como puedes ver, esto se dispara varias veces cada vez que entramos en el solapamiento. Entonces volvamos al plano. Ahora confirmamos que esto realmente funciona como queremos. Podríamos agregar muchos límites sobre lo que específicamente puede desencadenar esta apertura de puerta o cuántas veces se puede abrir, cerrar o ¿queremos abrirla y cerrarla automáticamente después? Podemos hacer cada uno de estos escenarios, pero vamos a mantenerlo sencillo. Apenas vamos a abrir la puerta cuando nos acerquemos a la puerta. Entonces, ¿cómo dirías que se supone que la puerta se abre aquí? Para que la puerta se abra, digamos que queremos que esta puerta se abra digamos con palabras, solo necesitarías rotar esto en un ángulo de 90. Quizás de manera realista, sería algo así como 80, pero prefiero 90 grados. Entonces lo que podemos hacer es que podemos ir aquí, destrozar este nodo puerta SM aquí Por cierto, este nodo tor ahora es una variable. Actúa aquí en la gráfica de eventos. Y antes de la luna, déjame explicarte qué son las variables. Las variables son la parte más básica del proceso de codificación, no sólo en irreal sino también en SimplusPlst sharp Las variables son esencialmente se podría decir colocar soldaduras o contenido de información que se utilizan para codificar Por ejemplo, como en la masa digamos, estarías como X más Y o X multiplicado Y, Y es igual a Z. Esta es la misma lógica. Esta es nuestra X. Esta es nuestra Y. La otra será nuestra Z. Y cuando codificamos, no tenemos que cada vez de alguna manera hacer referencia o poner toda la información asociada al objeto Podemos simplemente poner esto como un asa o una etiqueta o como sea que quieras aceptarlo más fácil para que lo entiendas. Esta es ahora nuestra puerta. La puerta AEM aquí, esta es una referencia a este AMDR y esta puerta asm ahora se hace referencia aquí en el plano Ahora bien, qué podemos hacer con esto antes necesitamos entender lo que estamos tratando de hacer. Queremos girar esta puerta en 90 grados en el eje Z. -90 grados para ser más específicos el eje Z. ¿Cómo podemos hacerlo? Entonces para esto, necesitamos obtener una línea de tiempo. Entonces timeline y agrégalo aquí. Ahora, puede preguntarse, ¿cuál es la línea de tiempo? Esencialmente, las horas extras se desencadena como eventos, la puerta. No queremos que la puerta se abra de repente. Entonces si nosotros, por ejemplo, tomamos esta puerta SM y digamos, tomar nota de ella y establecer perdón, rotación. Y poner en el conjunto la rotación relativa a -90 en el disparador de eventos Se abrirá instantáneamente, pero este no es el aspecto que queremos. No querrías tener este tipo de gatillo repentino en tu puerta. Entonces ahora, ¿cómo solucionamos esto? Entonces queremos que esta puerta se abra con el tiempo. Entonces terminado, digamos, 2 segundos. Y la forma en que lo hacemos es con una línea de tiempo. Entonces tenemos este nodo que se establece rotación relativa del componente al que está unido. En este caso es una puerta SM. Esta puerta es el objetivo de esta función. Y lo que hace esta función es rotar objeto en cualquier valor que pongamos en. Podemos hacerlo más grande para los nodos adicionales, pero ahora no es relevante. Entonces echemos un vistazo a lo que estamos modificando aquí. Estamos modificando el eje Z. Realmente no nos importan X e Y. Entonces, qué podemos hacer, podemos hacer clic derecho y dividir este pin de estructura Entonces, lo que hicimos es esencialmente dividir este valor vectorial de rotación en tres valores flotantes, que esto convierte automáticamente de nuevo en rotación. La razón por la que estamos haciendo esto de esta manera es porque solo estamos modificando un valor específico de cada tres, por lo que no necesitamos enchufar tres valores. Tomamos este pin de ejecución y lo ponemos en juego. La razón por la que lo pongo en juego y no juego desde principio es porque queremos que esto suceda esencialmente solo una vez. Esto jugará, terminará, y se quedará terminado. Si lo ponemos en juego desde el principio, comenzará cada vez que esto se activará, esta línea de tiempo comenzaría desde el principio, pero no la queremos, así que solo la vamos a tener en juego. Y ahora tenemos este conjunto de puertas ASM ubicación relativa, y necesitamos actualizar esta ubicación relativa establecida con un valor que obtendremos de la línea de tiempo. Entonces tenemos que decidir qué valor vamos a sacar de esto a esta flotación relativa Hacemos doble clic en la línea de tiempo y esto se abrirá así y damos click en esta pista más. Porque estamos modificando un solo valor. Realmente no necesitamos una pista vectorial que contenga tres vals. Simplemente puede usar un simple en la pista de flujo. Entonces tenemos esta pista, y vamos a cambiarle el nombre del eje Z. Y aquí necesitamos agregar un tiempo. Por lo que la duración del tiempo es actualmente de 5 segundos. Vamos a probarlo con 5 segundos. Y el valor, aquí no tenemos ningún valor. Es sólo una línea recta, no pasa nada. Entonces la forma en que lo hacemos, desplazamos click una vez para agregar un nodo. Entonces el comienzo va a ser cero. No es rotación. Entonces lo ponemos en cero, el valor también será cero. Y agreguemos un segundo nodo, que estará a cinco marcador. Alejemos el zoom. Se va a sumar 5 segundos. Se puede poner tiempo manual, y el valor será de 90 -90 porque vamos a un número negativo Entonces esta es una gráfica muy recta de cero a -90 en 5 segundos. Y vamos a compilarlo, volver a Gráfico de eventos. Y ahora tenemos este eje Z de la línea de tiempo. Es una salida del valor que esta función nos va a dar cada segundo, no sólo cada segundo, como cada fotograma que necesitaremos ingresar aquí. Entonces ahora, este valor Z del que es responsable esta función de rotación relativa establecida está siendo actualizado por esta línea de tiempo. Así que compilamos esta caja fuerte por si acaso y volvemos a nuestro amor. Ahora, cuando activemos esto, la puerta se abrirá lentamente muy, muy lentamente. Y ahora estamos aquí. Si no hemos jugado, sino jugamos desde el principio para el gatillo, y pulsamos, volvemos a las pruebas, tendríamos esta situación rara donde, esto se está abriendo, y me mudo y vuelvo y bien, está abriendo de nuevo. Vuelvo y bien, como pueden ver, esto es en el mejor de los casos, una broma Al principio, una puerta automatizada que funciona mal. Entonces no queremos esto. Entonces hacemos esta obra. Y se puede pensar, ¿y si quiero cerrar la puerta? Y es una pregunta razonable. Y si la primera vez que paso por el yo cuando entro, quiero que se abra, y cuando salga, quiero que se cierre. Se puede hacer. La forma en que se puede hacer es bastante fácil. Entonces podríamos agregar variables adicionales que digan si es cierto o no que estemos dentro o fuera, etcétera, en caso de que haya múltiples salidas del edificio En nuestro caso, solo tenemos una entrada, así que vamos a mantenerlo sencillo. Si salgo entrado desde este punto, y necesito salir también de este punto, ¿correcto? Y vamos a tener la puerta abierta. A lo mejor sólo queremos que tenga algo de aire. Lo que podemos hacer es crear un nodo aquí llamado flip flop. Chanclas. Lo que hace este nodo es la primera vez que se activa este evento, este jugará desde el inicio. Y la segunda vez que se desencadena este evento, se revertirá desde el final. Ahora, probémoslo y echemos un vistazo. Como puede ver, esto se está disparando cada vez. El actor se superpone, y esto no es lo que queremos de nuestra puerta Entonces, ¿qué podemos hacer para arreglarlo? Hay múltiples formas de hacer esto como siempre. Lo que podemos hacer es agregar una variable muy sencilla que diga si la puerta está abierta en este momento o si la animación dejó de reproducirse o no. Entonces lo que podemos hacer es crear una variable que diga que puedo abrir puertas cerradas. El valor del lingote Entonces los valores de lingotes son valores que simplemente dicen sí o no Entonces en este caso, ¿podemos abrir el valor de cierre y Bulim? Queremos que esto sea sí cuando la animación haya dejado de reproducirse. Entonces, ¿cómo implementamos esto? Puede presionar P y hacer clic, lo que creará un nodo de rama. Entonces, lo que hace la rama es poner esto en rama. Y agrega este valor a aquí. Queremos que el valor predeterminado de esto sea cierto porque la puerta suele estar cerrada. Al principio, queremos que esto se active al menos una vez. Y si es cierto, queremos que esto juegue. Y si está jugando, queremos que sea falso, por lo que no puede desencadenar una segunda vez. Entonces lo que hacemos antes de pasar a aquí, creamos y arrastramos esto y colocamos puerta cerrada abierta aquí y ponemos el valor de yo también fs. Crea una copia de ésta, la segunda, y haz lo mismo. Queremos que esto sea falso en ambos casos porque de esta manera, esto no puede desencadenar la segunda vez, pero queremos que se cierre después que ya haya terminado de abrir. Entonces, lo que hacemos lo hacemos de nuevo. Al terminar, esto pondrá esto en verdad, y este será el final de esta línea. Ahora, vamos a probarlo de esta manera. Y vamos. A. Esto no vuelve a desencadenar, como se puede ver. Y cuando lo vuelvo a activar, se cerró. Entonces podemos desencadenar esto. Entra. Y cuando salgamos, lo volveremos a activar, y esto se cerrará de nuevo. Obviamente, esta no es la solución más ideal para esto. No querrías tener tu puerta abierta y, bien, volveré y volveré, y ahora la puerta se te está cerrando a la cara. Hay formas más razonables de hacer esto. Podemos agregar disparadores a ambos lados de la puerta, por ejemplo, puedes duplicar esto y agregar otro aquí. Este se abrirá cuando entremos, esto se activará y cerraremos la puerta después de que estemos dentro o viceversa, o podemos revertirlos usando la combinación de planos o nodos Pero esto es lo suficientemente bueno para lo que estamos tratando de lograr aquí. Esta es una forma muy básica, no optimizada de abrir una puerta. Y esto es que hay demasiados detalles a esta sencilla función que se trata solo de abrir la tienda. Podríamos haberlo hecho de una manera mucho más sencilla, pero habría menos que explicar, así que tuvimos que seguir con esta solución extraña sobre complicada. Ahora bien, así es como abrimos la puerta y nos metimos dentro. Como pueden ver, esto es gracias a los planos. Los planos nos permiten crear funciones de la manera que queramos Podría hacer esto es solo una puerta sencilla con animación de apertura y cierre. Podríamos hacerlo de múltiples maneras. Podemos hacer que esta puerta reconozca a este personaje y se abra sólo a este personaje. Podrías tener, digamos, MPC o personajes no jugables en el juego, y estos personajes pueden o no activar la tienda, dependiendo del nivel de acceso que A lo mejor quieres que un personaje específico pase por esta tienda, pero otros lo saben. Tal vez necesites un artículo específico para hacer esto. Todo depende de cómo quieras hacerlo y de tu creatividad. 13. UE5 FC06 03: Bueno, esto suele llamarse simplemente exponer la variable al editor, esencialmente. Este no es realmente el nombre correcto de la misma. Es instancia editable. Quizás preguntes ¿qué hace el desove de Eposon? Entonces, si tenemos un actor que engendra a otros actores al nivel Entonces, por ejemplo, en este caso, engendremos actor de clase y seleccionemos al actor spawn como esta misma lámpara Ahora tenemos esta lámpara que podemos engendrar, ¿no? Y si establecemos esto. Mis disculpas. Sólo tenemos que poner un valor aquí. Y en este caso, sólo voy a saltarme el proceso y exponer en spawn Si compilo, pero esta exposición en span no está disponible. Digamos que solo lo selecciono. Esto no va a aparecer aquí, aunque lo compile. Pero si pongo spawn expuesto, ahora de pronto tengo esta función Entonces esto significa que puedo crear un actor que genere un actor específico con los parámetros que quiero ¿Cómo es esto útil, puedes preguntar? Digamos que tienes un juego donde disparas proyectiles, fuego, hielo, eléctrico, no sé, rayo láser El color es lo único que es diferente entre tus proyectiles Y este color se define por actor sobre engendro, similar al que tenemos aquí Cuando llegan a existir, establecen su color claro, etcétera Pero si quieres establecer el color de luz para ese proyectil al desove, específicamente, dependiendo de los parámetros, ciertos parámetros que puedas tener en tu juego, puedes usar esta exposición en spawn para tener esa opción disponible para ti cuando la expongas para tener esa opción disponible para ti cuando Y obviamente, a menos que necesites esto, dejas esto fuera. Bien, ahora volvamos a lo que estamos tratando de hacer aquí en nuestro nivel. Volviendo a estos planos que tenemos, ¿y si quieres no configurarlos individualmente, sino cada vez para tener un color aleatorio posible que solo quieras buscarlo y buscar color aleatorio, y obtendrás esto. Juego de colores lineales tonalidad aleatoria. Lo que tienes que hacer es poner tu color claro aquí. Y esto de vuelta aquí y pon esto s para aquí y presiona play, y son aleatorizados cada vez Para entender lo que hace este nodo, cada vez que se ejecuta este nodo, establece un valor aleatorio a esta variable, y esta variable se establece como un color claro en un evento que comienza a jugar. Quizás te preguntes por qué el conjunto de colores no es el mismo para todos ellos. Solo editamos una opción, un plano, y todos están en el mismo plano Entonces, ¿por qué el valor es diferente para cada uno? Esto se debe a que este proceso es llamado para cada actor de manera individual. Entonces, si juegas a jugar, y ve al Blueprint Verás este nodo. Repetimos este proceso. Esta línea roja es una función que acaba de activarse. Y si echas un vistazo a la parte superior aquí, tenemos diferentes laboratorios, y puedes seleccionar cualquiera de ellos. Seleccionemos el segundo y hagamos clic en el color claro, etcétera, todo está en su lugar, y es posible que note una diferencia E incluso puedes revisar los otros. Pero si prestas atención aquí, cuando vuelo el cursor sobre el color claro, los valores aquí son diferentes para cada uno Y esto se debe a que si bien todos son el mismo plano, son individualizados sus actores individuales en la escena Entonces, cuando se ejecuta un evento, el evento se ejecuta para cada uno por separado. Entonces, si tienes un objeto con, digamos, este evento específico muy simple de dos nodos, y tienes 100 del mismo objeto, debes tener en cuenta durante el evento comenzar a jugar, no ejecutas dos nodos de función de complejidad, sino 200. Así que asegúrate de no abarrotar demasiado tu escena. Hay formas de optimizar esto, obviamente. Se puede secuenciar. Se pueden combinar todos los actores en actores de grupo. Por ejemplo, en lugar de tener 100 planos individuales de una luz, quizás podrías tener un sistema de luz para toda tu ciudad y hacer que todas las luces compartan el mismo plano Entonces, en realidad, se convierte en un plano que se está aplicando a todas las luces de tu ciudad Pero nuevamente, ya sea optimizado o no, más fácil de usar o no, si es necesario depende de tu juego, tu creatividad, y lo más importante, cuando se trata de optimización, de tu ingenio Ahora tenemos esta función que no está mal. Cada vez que echamos un vistazo a esta habitación, es de un color diferente, y tal vez esto sea lo suficientemente elegante Quizás esto es todo lo que quieres. Quiero que sea un poco más brillante, así que eso es 240. A ver si eso cambió algo. Sólo un poco. Cambiemos poco el radio y ángulo del atentan, tal vez 16 Sí, esto es más de mi agrado. Pero quiero que esto no se vuelva rancio. Entonces esto seguirá siendo exactamente de la misma manera durante el resto del juego hasta que lo apague y lo vuelva a comenzar. Esto era un juego, esto sería parecido a entrar a una habitación, y la habitación tiene todos estos colores diferentes, y cada vez que entras a esa habitación y esa habitación se carga en el juego o se abre el nivel, obtienes diferentes colores. Puede ser un poco aburrido. Entonces hagamos que cambien los colores constantemente. Si recordamos Evento tick, si agregas esto todo aquí tenemos en el evento ik, lugar de eventos comienzan a jugar, obtendremos algo muy diferente. Pero creo que todos podemos estar de acuerdo en que esto es demasiado. Esto me está lastimando los ojos. Como tal, esto no es lo ideal. Sí, cambia constantemente, pero no quiero que cambie tanto. Y esto lo hace sólo una vez. Necesitamos un término medio entre las horas extras, función de reajuste y solo las individuales al principio Hay bastantes formas de hacerlo. Puedes agregar líneas de tiempo, puedes llamar a eventos, etcétera. Pero la forma más fácil en este caso particular es agregar una nota de retraso. Qué retraso hace, espera una cierta cantidad de tiempo, y ese tiempo se hace referencia aquí, duración por duración Y transcurrido ese tiempo, se ejecuta. Digamos, pongámoslo en 1 segundo. Ahora, echemos un vistazo a esto y pensemos lo que hace. Durante el inicio del juego, es decir, cuando este actor está en la escena y comienza el juego o cuando este actor es creado o engendrado, esto desencadena Establecimos un color aleatorio a nuestra variable de color de luz, que se establece como un color de luz para nuestro componente de foco. Y hay un retraso. Aquí. Y transcurre 1 segundo y este retraso se ejecuta, pero aquí no hay nada Queremos repetir este proceso. Queremos seleccionar un nuevo color aleatorio y seleccionar configurarlo como una nueva luz. Entonces lo que podemos hacer es tomar este pin de ejecución y ponerlo aquí. Pero de pronto esto es muy incómodo de ver. Lo que podemos hacer aquí es agregar un nodo reescrito. Agreguemos este nodo aquí y hagamos un seguimiento de esto hasta aquí. Rastrea este nodo de aquí a aquí. Y organizar esto un poco mejor. Ahora, tenemos un nodo que vuelve a ejecutar aquí por retraso después de 1 segundo Y veamos qué pasa. Volvamos al nivel y pulsemos play. Esto es mucho más agradable a la vista. Ahora, hablemos un poco sobre la organización de planos. Si no eres el único en el equipo o si solo quieres mantenerlo organizado, lo cual es una buena práctica en general para tener siempre tu código organizado, hay cosas que puedes hacer. Uno de ellos como he mostrado antes, es un nodo reescrito para que sea fácil ver a dónde van los pines de ejecución Entonces, en este caso, el pin de ejecución pasó de retardo a conjunto de colores lineales nodo de tono aleatorio. Pero esto realmente no explica lo que hace esto. Y para una persona que la vea por primera vez, necesitará pasar por el código para entenderlo. Y si tienes un código muy complicado que tiene cientos de nodos en él, lo cual no es raro, tendrás a la persona que eche un vistazo al código lo pasará mal. Para que sea más fácil para ellos, puedes seleccionar todo tu código y hacer clic en el botón C. Esto es común. Para las personas que están familiarizadas con la codificación en plus plus o C sharp, o cualquier lenguaje de programación, esto está haciendo exactamente lo mismo. Esto no agrega ningún costo al proyecto que se empaqueta para su implementación. Aquí en la sección de comentarios. Simplemente nombramos esto. Digamos Luz Pero cambia la función. No estoy seguro de lo que está pasando con mi teclado. Y ahora tenemos esto y podemos cambiar el color también. Queremos que sea diferente o simplemente código de color o funciones. Prefiero el verde, y no queremos agregar estos eventos comienzan a jugar en esto porque el evento begin play funcionará independientemente de este código dentro. Y ahora, como todo esto dentro de esta sección de comandos, puedes simplemente moverlos todos juntos. Lo cual es útil cuando tendrás muchas notas en tu lave. Hay una cosa más sobre esto que debo mencionar antes de seguir adelante. Esta nota de retraso aquí, debes prestar atención. Esto tiene icono aquí. Si lo lees, hay un texto al final las notas latentes solo se pueden colocar en gráficas de eventos Quizás te preguntes por qué está esto aquí. Para estas notas familiarizadas con la codificación, tendré que explicar qué es una macro. Una macro y funciones son son prácticamente las mismas que las que tenemos aquí, pero la diferencia es que tienen están sucediendo instantáneamente y no pueden ser sensibles al tiempo. Con eso, quiero decir, digamos que tenemos una función, y no me refiero a esto. Estos son nodos en una secuencia. Una función, si tuviéramos que crear una aquí, digamos, creamos pulsamos sobre este icono de planes y creamos una función y llamamos a esta función, vamos a llamarla prueba como estamos probando. Ahora tenemos una función llamada test. Una función se puede llamar como un evento o un nodo para ser más precisos dentro de su blueprint Y quiero que todo esto suceda dentro de la función. Podría simplemente copiar esto y arrastrar esto a la prueba. Pero es mucho más fácil eliminar esto y hacer clic en todos ellos y hacer clic derecho y colapsar para funcionar. Notarás que esto fallará. La razón por la que esto falló es por el nodo de retardo. Descartamos esto Hagámoslo otra vez. Esta vez sin nodo de retardo seleccionado, contraer la función. Ahora tenemos una nueva función, y vamos a copiar el nombre de ésta. Y renombrar esta nueva función en función de cambio de luz. Y luego comenzar a jugar esto parece más organizado, y también es muy buena manera de hacerlo si vas a reutilizar esta función específicamente en múltiples lugares. Imagina que tienes una luz y tienes múltiples disparadores posibles para cambiar de color. lo general, lo que tendrías que hacer, tendrías que copiar y pegar. Puedes eliminar este nodo reescrito, realmente. Tendrías que copiar y pegar esta función. A cada uno de estos disparadores. Entonces, para cada evento que tenga la posibilidad cambiar el color de la luz a color aleatorio, necesitaríamos copiarlos, pegarlos y colocarlos alrededor del gráfico del evento, lo que muy rápido, lo hará muy desorganizado Pero lo que es más importante un optimizado. Una función optimizada es una función lenta y una función lenta lo convierte en un juego lento, y a nadie le gusta un juego lento. Ahora tenemos esta función de cambio de luz, y podemos engañar exactamente este mismo código por múltiples medios. Quizás tengas un juego donde, digamos, cuando tocas la luz, cambia a un color aleatorio. Cuando tal vez realizas una determinada acción como saltar cambia a un color diferente. O tal vez le disparas. Y digamos que tienes las tres posibilidades mencionadas en mismo juego y quieres hacer las tres con el mismo actor. ¿Crearás tres eventos separados para y copiarás y pegarás ese mismo espagueti de código a todas partes? No. Lo que usarás es esta función de cambio de luz. Ahora, tal vez se pregunten, pero, bien, si tengo múltiples formas de activar esta función, me gustaría tener más control sobre ella Por ejemplo, en el siguiente escenario mencionado, si puedes disparar como una luz, y quieres que la luz cambie a, digamos, color rojo como si estuviera dañada, no puedes hacer esto con esta función porque la configuramos al azar cada vez. Entonces no habría diferencia real entre disparar esto, digamos, lámpara, que desencadena esta función, o digamos simplemente caminar por ahí, o tal vez solo haya otro disparador, no importa. Necesitarías más control sobre él. Querrías establecer este color de luz dependiendo de cómo se active el evento sin copiar todas estas funciones en todas partes. Aquí es donde entran las entradas y salidas de las funciones. Entonces como puedes ver aquí, tenemos función de cambio de luz, y ahí no hay entradas. Target es auto en este caso, obviamente, pero puede ser otra cosa si es elenco, cast cast se explicará en la siguiente estructura. Podemos hacer clic en la función de cambio de luz y agregar una entrada. Además, podemos agregar una salida, pero en este caso, nos vamos a centrar en la entrada. Vamos a agregar una entrada. La entrada, en este caso, es una variable. Ahora bien, este color claro es una variable llamada color lineal claro. Entonces queremos que esto sea exactamente lo mismo. Entonces solo podemos escribirlo de color lineal. Y llamémoslo solo color. Y ahora de pronto tenemos una función de cambio de luz con un nodo de color que podemos poner en set light color en lugar de usar la variable de color claro. Yo por ahora, desapegaré esto. Podemos reutilizarla más tarde. Y podemos compilar. Ahora, si vuelves a tu gráfica de eventos, te darás cuenta, espera, tenemos un color. Ahora tenemos una manera de dictar de qué color será a través de una función Entonces hagámoslo. Digamos, durante los eventos comienzan a jugar cuando se llama a la función , se vuelve roja. Guardar, compilar, volver al nivel, presionar play. Bien, funciona. Pero solíamos tener colores aleatorios. Entonces esto es lo que nos estaba permitiendo hacerlo. Entonces lo que podamos hacer, podemos cortar esto de aquí, compilar, volver. Y esto llegó aquí por ahora. 14. Funciones de BP: Ahora, tenemos esto como una función separada. Entonces esto es vamos a hacer la función colapsada, llamarlo color aleatorio. Y ahora tenemos este color aleatorio. Y para esta función de color aleatorio, queremos tener salidas en lugar de entradas. Ahora tenemos este nodo de retorno de salida. Y cuando arrastramos esto aquí y color claro esta compilación, guardar por si acaso. Y ahora tenemos esta función con una salida. Para probar, podemos hacer esto fácilmente. L et's asegúrese de que todo esté adjunto. Vamos a asegurarnos. Bien. Volvamos al nivel. Sí. Funciona como debería. Pero no había ninguna razón real para separarlos, tal vez penséis. Eran una función. Estaba más optimizada para ser una función en lugar de dos funciones. Pero aquí es donde viene la utilidad. Lo que estoy tratando de hacer ahora, cuando abramos la puerta, todos los colores serán rojos. Cuando se cierre la puerta, todos los colores serán verdes. Y cuando estás justo dentro de la habitación o incluso afuera y no se está interactuando con la puerta, van a cambiar sus colores al azar a partir del tiempo, digamos, en un retraso de cinco segundos Para que esto suceda, reorganicemos nuestro código. Tenemos función de cambio de luz, y esta función de cambio de luz, todo lo que necesita es una entrada de color. Tenemos evento comenzar a jugar, y lo que podemos hacer es meter esto aquí y agregar cinco segundos de retraso aquí. Quizás ni siquiera cinco segundos de retraso, vamos. Sí, vamos a trabajar en ello más adelante. Entonces, lo que podemos hacer aquí es agregar un nuevo evento, y tiene que ser un evento personalizado. Y vamos a llamar a este evento Puerta Abierta. Puerta. Vamos a crear otro evento, y otra vez, evento personalizado y llamarlo puerta cerrada. Vamos a asegurarnos de que se vea bien. Aquí, tenemos esta función que toma este color aleatorio. Ahora bien, ¿necesitamos tener esta función aquí? Es la pregunta. En realidad no. Puedes quitar esto y esto. Y separémoslos todos unos de otros y cantemos sobre esto lógicamente Comienza el juego, obtenemos un color aleatorio. Entonces obtenemos este color aleatorio. Por ahora no vamos a agregar aleatorización. La puerta se abre y obtenemos color verde. ¿Bien? Entonces necesitamos de nuevo esta ligera función de cambio. Pero esta vez, lo predefinimos para digamos puerta abierta, color rojo como en una señal de advertencia de que alguien está entrando a la habitación Y para puerta cerrada, digamos que es sólo verde. Sí, estoy de acuerdo. Y digamos que no podemos cambiar el color ni para ser más específicos, aleatorizar el color de las luces mientras esto se está abriendo o Entonces agreguemos una variable. La puerta está interactuada. Y agrégalo como toro en. Y vamos a hacer rama. Al final de este color. Si se está interactuando con la puerta en este momento, el tono por defecto debe ser falso Aleatorizamos nuestro color y lo cambiamos a colores aleatorios con retraso Retraso F. Y vamos a tener este retraso sea de 30 segundos debería estar bien. O, sí, debería estar bien. Si no se está interactuando con la puerta , no hace nada Para puerta abierta y puerta cerrada. Cuando se desencadenan estos eventos, queremos establecer esta puerta se está interactuando en verdad Entonces, lo que hacemos, obtenemos dos conjuntos de interacción de conjuntos. Los establecemos verdaderos, para que no quede aleatorizado en el medio, y continuamos en nuestro proceso Y si revisamos nuestro plano de puerta, teníamos una línea de tiempo de 5 segundos. Entonces, para que la puerta termine de abrirse o cerrarse, toma 5 segundos. Entonces lo que podemos hacer es agregar un retraso de 5 segundos. Una vez por segunda vez o simplemente puedes combinarlos porque estas dos operaciones no pueden suceder al mismo tiempo que lo hemos configurado en el blueprint Tor con este plop, ya que no se puede interactuar con ellas mientras una función no haya Ahora, volvamos. Y después de 5 segundos de retraso, disparamos set de nuevo. Y después de que lo pusimos en caídas, y hayan pasado 5 segundos, queremos recuperar colores aleatorios. Así que volvamos a propósito esto y arrastremos esto a color aleatorio. Y para que se vea bien, tal vez incluso en un nodo re rot para hacer las curvas un poco más fáciles a los ojos solo para tener un tiempo más fácil. Bien. Ahora bien, ¿será esta obra la pregunta principal? La respuesta es no. ¿Por qué? Sí, las luces están cambiando de color, pero no interactuaron con la puerta. La razón por la que esto sucedió, realmente no activamos la puerta. Lo nombramos puerta abierta puerta cerrada, pero eso es solo una cosa de nombrar Acabamos de llamarlo de esa manera. Realmente no agregamos nada para desencadenar esto. Ahora bien, la pregunta es, ¿cómo activamos esta función? Aquí es donde nosotros por la simplicidad del curso, simplemente no usaremos interfaces y usaremos moldes. Y voy a explicar lo que son en un momento. Pero antes de eso, tomemos esto y esto cuando tengamos aquí este plano, tenemos en la A, jugando desde el principio y en la B, al revés desde el final Entonces cuando B está sucediendo, estamos cerrando la puerta y A está pasando, estamos abriendo la puerta. Queremos tener color rojo en abierto y color verde en el cierre. Para ello, necesitamos agregar pin de ejecución aquí que nos permita hacer esto, pero ya está aquied. La forma en que lo hacemos secuenciando, haga clic derecho en la secuencia y haga clic en ella. Y lo que hacemos es que lo metemos aquí y ponemos primero nuestra jugada desde el principio. Queremos que esto suceda primero, y lo hacemos de nuevo, y en una secuencia y cero inversa de fin a nuestro plano Esto se está convirtiendo en código de espagueti, pero solo estamos haciendo esto con el propósito de aprender, así que está bien. Idealmente, optimizarías todo este código, pero es bueno para la creación rápida de prototipos Ahora tenemos esto en su lugar. La pregunta es qué hacemos aquí. Secuencia nos permite hacer ciertas ejecuciones una por una. Realmente no espera a que uno termine de comenzar el otro. Es más un disparador. Voy a estos disparadores cero primero, 1 segundo. Obviamente, queremos abrir la puerta, así que ponemos cero a siete play desde el inicio. Y en una, tenemos que llamar de alguna manera a estas dos funciones. Tenemos que llamar a esta función de puerta abierta. La forma en que podamos hacer esto, en nuestro nivel particular, esta tienda y esta lámpara siempre existirán al mismo tiempo. Como tal, ya están en la memoria de tu PC. Entonces podemos usar el casting. Permítanme primero fundir el plano de dos lámparas fundidas. Clase. La razón por la que no vamos a lámpara y clase porque queremos usarla en todas las lámparas no en una específica. Entonces estamos lanzando a la clase de planos, y obviamente necesitamos plano lampll Esto sí. Este casting, aunque no hagas nada en el otro extremo del mismo, o incluso si simplemente lo dejas así , sin pin de ejecución, esto siempre cargará la lámpara en la memoria. Como tal, hay que tener cuidado al usarlo, no solo casting a clase, sino también casting a instancias individuales del mismo actor. A medida que lo carga a la memoria, cada vez que la tienda existirá en la escena, la lámpara estará en la memoria y ocupará algo de espacio. E incluso si no tienes ninguna lámpara en la escena, si tienes esta puerta de plano específico, que tiene un yeso a la lámpara que estará en la memoria Entonces, si haces clic derecho y vas a Mapa de tallas, esto te mostrará cuánto ocupa espacio en tu juego. Esto no es mucho, se puede pensar. Son sólo 3 megabytes. Nuevamente, este es un plano muy simple, pero esto es en tamaño de disco Esencialmente cuánto espacio ocupa en tu disco duro. Y si quieres comprobar cuánto espacio ocupa en tu RAM, tu memoria, das click aquí, tamaño de memoria. Y como puedes ver, se necesitan 11 megabytes de tu memoria. Si solo tienes uno de esos objetos, no es tanto de un trato, pero si tienes cientos de objetos que todos están lanzando a cada objeto diferente, y por lo general serán mayores de 11 megabytes, de repente, tu RAM se llena de archivos y datos que ni siquiera va a usar porque estas clases no siempre están en el nivel Entonces debes asegurarte si vas a lanzar a algo que algo siempre esté en el nivel, con cualquier actor que realmente esté haciendo el casting. Por ejemplo, lanzar al personaje jugador suele estar siempre bien porque tu personaje jugador está en la mayoría de los juegos, siempre cargado en el nivel como tu personaje que estás jugando como. Puede ser un problema si tienes varios personajes y cada uno de tus personajes funciona manera diferente y tiene sus propios planos Pero en el caso de solo tener un personaje de jugador, un mismo personaje de jugador para todos los niveles, puedes lanzar con seguridad a tu personaje de jugador. Pero como dije, en este caso, esta lámpara, aunque la quites de la escena, la puerta puede quedar pero la lámpara seguirá siendo cargada en la memoria. Por lo que debes asegurarte de tenerlo en cuenta. Bien, ahora lo echamos a la lámpara, y desde la lámpara, queremos una función específica. Pero puede notar que realmente no podemos hacer esto directamente porque esta clase de planos son todos planos de la lámpara No es una instancia o una instancia específica. Entonces necesitaríamos conseguir a todos los actores de clase en su lugar. cual está haciendo exactamente lo mismo, pero vamos a obtener una matriz en su lugar. Entonces hacemos exactamente lo mismo, que de nuevo, es muy simple. Esto va a conseguir una referencia a todos ellos, a todos los actores. Esto simplemente no es obtener la referencia a la clase misma directamente. Entonces hagamos lámpara y ahora tenemos todas las lámparas aquí, pero ahora son array en forma de array. Entonces, ¿qué es una matriz? Array es un conjunto de múltiples variables en un solo lugar. Por ejemplo, una matriz de, digamos, mallas puede contener una cantidad infinita de mallas, y son una matriz que comienza desde cero, como indexando desde cero, uno, dos, tres, cuatro, etcétera, Y las matrices son muy importantes para entender si vas a hacer un juego complejo o incluso un juego simple. Ahora bien, en este caso, esta matriz aquí que estaba siendo generada por esta función está obteniendo todos los activos, a todos los blueprints de esta clase Entonces todas las referencias de esta clase en el nivel. En nuestro nivel, tenemos seis lámparas, y esto nos va a conseguir seis actores en la matriz. Lo que vamos a hacer, vamos a sumar para cada bucle, lo que significa que para cada elemento de la matriz, vamos a lanzar al plano de la lámpara Ahora bien, puede notar que esto tiene un color diferente porque ahora esta no es una clase específica. Este es un objeto específico en la matriz. Entonces por ejemplo, en el primer bucle, vamos a conseguir lampara de pared en el índice cero. Lámpara de índice cero esto va a dar una nota, pero la razón por la que esto nos está dando esta nota es porque estamos lanzando a algo que ya está lanzando. Pero puede notar que no hay otros errores. Podrías ponerlo directamente así, y a tener en cuenta, esto sigue siendo casting. Pero el esto es solo una manera de usar el casting en un actor individual. Si solo tienes una lámpara en el nivel, plano vol, solo puedes usar cast directo. No hay problema. Pero si tienes múltiples, es posible que quieras usar un elemento array y ver si es el mismo objeto. Por ejemplo, si tienes, digamos, un conjunto de múltiples actores, pero no todos los actores son iguales. Por ejemplo, tenemos una matriz que contiene cinco puertas y cinco lámparas. Si solo arrastras esto aquí así, puede que no encuentre al actor requerido. Pero si lo hacemos así y lo hacemos así, esto sólo se activará si el elenco tuvo éxito. Y si el elenco por ese éxito, quiero decir, si el yeso es lámpara y no la puerta, esto va a funcionar. Y si es algo más en la matriz, esto fallará. Pero ten en cuenta, puedes crear tus propias variables en forma de array. Puede hacer clic en la variable. Seleccionemos una variable de float. Y aquí en la parte superior derecha, puedes hacer click sobre él y convertirlo en una matriz. Y puede usar después de compilar esta matriz, puede agregar tantas instancias de esta matriz que desee. Entonces queremos, digamos, una matriz de valores, cinco, 12, 14, ocho, dos y uno. Y si agregas esta matriz al mínimo y obtienes un nuevo R, por ejemplo, así, puedes usar para cada función p para cada función de bucle para obtener siguiente valor en el orden de cero, uno, dos, tres, cuatro, cinco, para cualquier otro propósito que necesites como tal, ten en cuenta, matrices, sí, puedes obtener una matriz de elementos, esencialmente obteniendo múltiples elementos por algún tipo de funcionar como información y uso para cada bucle en ellos, o puede hacer sus propios arrays con valores específicos o referencias de actores, y puede usarlos. Independientemente, en este caso, vamos a usar esta nota porque quiero la validación de que la matriz que estoy obteniendo es en realidad el plano de caída de lámpara, aunque sea innecesario en este caso, porque todos sabemos que específicamente estamos obteniendo los elementos específicos de la matriz y todos ellos serán laboratorios Y vamos a compilar ahora, ¿qué hace esto? Cuando abrimos la puerta, obtenemos todos los actores de las lámparas, y todas las lámparas son una a una en la misma instancia esencialmente de marco instantánea, pasan por en la misma instancia esencialmente de marco instantánea, este bucle, y estos bucles llama la función llamada no todos función, mi evento de puerta abierta en el plano Entonces volvamos al poste de la lámpara y presionemos play. Bien, ahora estamos viendo que todo está bien, todo está siendo aleatorizado Ah, mientras se abre la puerta, es roja. Ahora esperemos. Después de que la puerta se haya cerrado, comienza de nuevo Y digamos espera 5 segundos, y funciona. Y cuando salimos afuera, todavía no está funcionando porque no le agregamos nada a eso. Entonces veamos y volvamos a hacerlo. Podemos simplemente copiar esto para ahorrar algo de tiempo. Y podemos llamar al mismo evento y al final, cambiarlo para cerrar puerta. Creo que lo nombró. Y si ves sensible al contexto ahora es una especie de problema. Cuando haya habilitado, mientras busca un nombre de función o un nombre de evento específico para un blueprint diferente, es posible que no aparezca Así que podemos simplemente desactivarlo y se ve clase Pvolve blueprint, y vamos a usar esto y podemos hacer Además, puedes arrastrarlo directamente aquí y cerrar puerta. Nuevamente, como pueden ver, no va a aparecer. Entonces tenemos esto ahora funcionando también, y todo está como debería ser. Y tenemos esto. Se abre la puerta. Cuando entramos en él. Ahora, de nuevo, son colores aleatorios. Cuando salimos de esto, es verde. Ahora, vamos a agregar una pequeña modificación más a nuestra puerta para que podamos tener una puerta más funcional. Tenemos esto en principio componente comenzar superposición. Y cuando entramos por primera vez en él y salimos de él, estas chanclas. Teníamos dos salidas o si queremos cerrar la puerta después de entrar a la habitación, necesitaríamos hacerlo de una manera diferente porque el gatillo para ello está afuera. Y aunque no lo fuera, la puerta que se nos cierra a la cara, realmente no tendría mucho sentido. Cuando estamos tratando de hacer algo raro como, hagamos esto una vez, espéralo. Digamos que abrimos la puerta, vamos a otro lado, y la próxima vez que volvamos, la puerta se nos cierra a la cara. Esto realmente no tiene sentido. Entonces, lo que queremos hacer en cambio es tener una puerta que se abra cuando nos acercamos y se cierre automáticamente cuando nos vamos. ¿Cómo hacemos esto? algo similar a competente comenzar solapamiento. Pero en cambio, vamos a dar click en esta puerta SM, volver aquí y el final incompetente se superpone Esto hace lo mismo que esta función. Pero tenemos que asegurarnos de obtenerlo para el evento correcto. Lo necesitamos para la caja. Esta es exactamente la misma funcionalidad. Pero ahora, cuando terminemos de superponernos, esto se activará. que significa que ya no necesitamos realmente esta rama desde el principio o esta chancleta. Porque ya no es una pregunta si podemos o no podemos hacerlo volteando en una secuencia Ahora, ahora tenemos un tema diferente. Cuando queremos comenzar esta funcionalidad, necesitamos tener ahora dos ramas. Entonces copiamos esto y esto agregado aquí, y hacemos esto y hacemos esto. Pero vamos a probarlo y ver cómo funciona después de editar nuestra caja. Ahora, porque queremos que contenga la puerta por ambos lados, necesitamos precisamente ella y vamos a hacerla más grande por si tenemos a alguien diciendo: No hagamos demasiado grande y hagámoslo xis y probemos cómo funciona Nos acercamos, empieza a abrirse. Si te acercas a algún lado, comienza de nuevo. Ahora la razón de que esto suceda es que no tenemos nuestro anterior, puede desencadenar propiamente para ello. Echemos un vistazo a nuestro gráfico de eventos. Entonces cuando se superpone, si puede abrir, cerrar la puerta, se dispara y pone esto No, no se puede abrir cerrar. Y empieza esta línea de tiempo y cuando vuelve a activarse, esto sucede. Pero lo que necesitamos ahora es un poco diferente. Ya no queremos que esto suceda de esta manera. Si separamos nuestro abierto aquí y lo expandimos xis Aquí es donde su segundo monitor es muy útil cuando se trabaja con planos irreales Podrías acoplarlo a tu pantalla. En lo personal, me gusta tener pantalla. A mí mismo. Empecemos. Y es un poco difícil de ver, pero estamos abriendo la puerta. Bien, ahora se abre. Y nos movemos, se está cerrando. Pero cuando volvemos a entrar, no se activa. Pero es empezar de nuevo. Y ahora vamos a darle un segundo y volver. Al instante se nos mete en la cara. Ahora bien, la razón por la que sucedió esto, la siempre tenemos jugar desde el principio y jugar al revés desde el final, lo cual no tiene mucho sentido en este caso, porque ¿y si la puerta está medio abierta cuando nos acercamos a ella? Entonces, en cambio, vamos a hacerlo jugar y revertir. Lo que va a pasar ahora es cuando jugamos o ahora está jugando Y luego pasamos por versos. Pero ahora tenemos un tema diferente. Cuando me voy, no empieza a cerrar de inmediato. Lo remata. Y la próxima vez que me vaya, se cierra. Tal vez quieras mantenerlo así. Esto es más que funcional, y se cierra y se abre. Pero vamos a retocarlo un poco. En lugar de tener ahora esta sucursal, que nos dice cuándo podemos abrir o cerrar la puerta, vamos a quitar esta y tenerla directamente en secuencia así. Esto elimina cualquier apertura condicional de la función, y veamos qué pasa ahora. Presionamos play, estamos cerrados, y se abre, y cuando nos vamos, se cierra. Y podemos entrar. Está sin los labios y entramos y se abre El único problema es que lo hicimos demasiado lento. Así que volvamos a nuestra línea de tiempo, y hagamos que sea 3 segundos en lugar de cinco. Y tenemos que cambiar también el valor de la segunda una vez sabia y hacerla tres. Por lo que gira en los 3 segundos. Pero eso significa que también necesitamos editar los retrasos en puerta abierta, y vamos a hacerlo 3 segundos también. Esto es dentro de la función de toro de la lámpara. Entonces veamos qué pasa ahora. Empezamos el juego. Vemos las luces cambiando de colores al azar. Nos acercamos a la puerta. Se está abriendo. Al abrir, todo es rojo. Cuando está cerrando, es verde. Y ahora estamos en el telar con muchas luces. Ahora también podemos cambiar el material para esta caja aquí y digamos, agregar esta. Con emisión reducida. El material emisivo es como mencionamos antes, es un material brillante Aquí se multiplica el brillo del material, como puedes ver. Para que podamos reducirlo. Simplemente dividimos este valor. Algo que recomendaría hacer en la instancia material en lugar del material mismo. Pero digamos que vamos a dividirlo por diez veces. Veamos qué pasa. Sí, es menos brillante. Entonces hay menos brillo, pero tal vez un poco demasiado. Entonces comamos cuatro veces menos aplicar. Todavía quiero algo de brillo para estar ahí. Sí. Y vamos a aplicar el mismo material aquí también. Quizás no. Nuevamente, al gusto. Lo dejaré aquí tal como está, salvo esto. Y ahora tenemos una escena extraña donde tenemos esto a algunas luces aleatorias en medio de la nada para nuestro placer. Los planos son un tema muy, muy caro. Se puede hacer cualquier cosa en el plano. Hay una gran cantidad de nodos en los que puedes hacer twitch, twit y agregar tu Hicimos esta sencilla función de puerta de múltiples maneras. Echamos un vistazo a las luces, cómo podemos hacerlo de múltiples maneras. Y lo más importante que debes entender es lo flexible que es todo en el desarrollo de juegos. No vas a encontrar soluciones simples, y aunque en el futuro, intentes encontrar información sobre cómo hacer algo específico, por ejemplo, aquí tenemos estos cubos, y cuando los toco, ellos bajan. Se trata de cubos simples con su física habilitada y sin planos. Pero también podrías hacer esto con planos. La diferencia a la hora de hacer esto son planos y cuando solo se puede habilitar la física, que se explicará en la próxima conferencia, es lo que diferencia a un buen desarrollador de uno malo Necesitas entender cuándo necesitas usar qué y cómo y por qué. Hay infinitas formas de hacer lo mismo. Y la complejidad en la que quieras hacerlo depende de lo que necesites y de cuál sea tu marco de tiempo. En este caso, echemos un vistazo a nuestras lámparas. Sí, esto funciona, y así es como lo mostré para hacerlo. Pero esto no es lo ideal. Tenemos muchos nodos. Nuevamente, no los organizamos. Tenemos variable que en vez de llegar hasta aquí, podríamos haber heredado de otra parte. No tuvimos que usar realmente elencos para esto. Podríamos haber utilizado interfaces, que se explicarán en la próxima conferencia. Y todo esto estuvo a la altura de crear libertad. Has hecho múltiples cosas de múltiples maneras, y todo se reduce a lo que quieres hacer y cómo quieres hacerlo No te limites con tus planos. Y cuando buscas información en foros en formularios comunitarios, tal vez en YouTube, Google, y encuentras lo específico que necesitas, ten en cuenta, es posible que tengas una mejor manera de hacerlo. Como he expuesto en esta conferencia, esta tienda y esta lámpara, y lo hicimos de múltiples maneras Es algo muy sencillo, pero todavía tiene infinitas formas de hacerlo. vemos en la próxima conferencia donde realmente vamos a hacer una escena interactable, pequeña, que puede ser utilizada para crear prototipos de un juego sencillo, y tendrás total libertad sobre lo que quieres hacer y cómo quieres hacerlo Pero antes de eso, tendremos una tarea. Esta tarea va a ser un poco más difícil. Y en esta tarea, vamos a utilizar todos nuestros conocimientos que hemos aprendido hasta ahora y crear y animar aún más tu escena Te he enseñado algunas cosas con cómo puedes hacer en planos No fue mucho ya que los planos son un tema muy caro. Pero puedes aplicar lo que he mostrado en la conferencia hasta ahora a tus escenas que hayas creado previamente, o simplemente puedes ser creativo y experimentar con la funcionalidad de blueprint y crear lo que quieras No tengas miedo de equivocarte o experimentar. La única manera de aprender realmente irreal es intentar hacerlo y ver si funciona Incluso los mejores desarrolladores probarán las cosas varias veces antes de que puedan hacerlo funcionar. Nos vemos en la próxima conferencia. Y que se diviertan. 15. UE5 FC07 01: Bienvenido de nuevo. En este capítulo, vamos a pasar por cómo hacer una escena desde cero. Vamos a intentar crear algunos elementos de juego utilizando todos los conocimientos que hemos adquirido hasta ahora. Y también, voy a cubrir un poco más de funcionalidad de cada aspecto de irreal Hasta este punto, hemos creado materiales. Hemos aprendido a aplicarlos y a ejemplificarlos, a configurar el relámpago en nuestra escena, a crear planos y a crear interactividad entre planos Pero lo hicimos todo encima de nuestra plantilla ya existente. ¿Y si quieres crear algo desde cero? Entonces para hacer esto, primero que nada, decidamos qué queremos evitar de esta creación que ya hicimos. Si tienes algún actor u objeto en tu escena, te gustaría transferirte a la siguiente. Téngalo en mente. Y en mi caso, quiero llevar algunos de estos cubos conmigo al siguiente nivel. Y los voy a usar como plano, así que simplemente voy a hacer clic en él, convertirlos en un plano, cambiar el nombre, y simplemente llamarlo Cubo Voy a salvarlo. La razón por la que estoy haciendo es porque la voy a necesitar en la siguiente sección de la conferencia. Entonces, para crear un nuevo mapa, antes que nada, mantengámoslo organizado, cree una carpeta, llámalo nivel. Y ahora vamos a crear un nuevo nivel. Podrías crear un nivel a partir de aquí y simplemente hacer clic en el nivel, pero esto siempre va a estar en blanco ya que no hay nada en el nivel. Si quieres tener una plantilla para un nivel, puedes hacer clic en Nuevo nivel en la parte superior, y obtendrás una opción. ¿Quieres un nivel de partición de mundo abierto? ¿Quieres un nivel de partición de mundo abierto vacío? Quieres básico o con algunos activos en él o nivel básico vacío. La diferencia entre las particiones y los niveles básicos son los niveles de partición generalmente destinados mundos abiertos que son demasiado grandes. Y te gustaría optimizar tu juego esencialmente cortando este mundo en particiones, esencialmente partes para descargar y cargar en juego depende de la proximidad o el estado del juego En nuestro caso, no vamos a hacer eso. Solo podríamos usar básico, pero voy a seleccionar Nivel vacío para mostrarte cómo se hace desde cero. Hagamos clic en Crear y guardar. Y ahora estamos en el nivel vacío. A lo mejor difícil de ver, pero aquí no hay nada más que esta grilla. Y primera idea quizá agreguemos algo de luz a la escena. Pero si solo añades luz, digamos, luz reaccional, no va a hacer mucho Tenemos que añadir el sol, la esfera del cielo, todo lo que por defecto existía en el nivel anterior. Para ello, necesitas ir a ventana y mezclador de luz ambiental. Haga clic en él, y obtendrá esto. Primero creemos el tragaluz, la luz atmosférica. Ya podrías editar ajustes si quieres, pero solo estoy para mantenerlos por defecto por ahora, crear atmósfera, crear multitud volumétrica y crear niebla de altura. Y de pronto tenemos algo muy parecido a lo que teníamos en el nivel anterior. Estos son solo marcadores para en el outliner donde tenemos nuestro cielo claro Entonces pongámoslos todos en una carpeta. Y llamemos a esta carpeta tragaluz. A continuación, vamos a aprender a crear ambiente para nuestra escena. Hay dos formas en las que podemos crear nuestro entorno. Primero es solo usar algunas medidas básicas para crear paredes de piso como en la plantilla anterior. O puedes crear un paisaje. Para crear un paisaje, da clic en la parte superior aquí, modo de selección y da clic en Paisaje. Obtendrás esta cuadrícula en tu viewport. Y en el lado izquierdo, tenemos nuestras opciones para la grilla. Así de grande será tu paisaje. Esto puede parecer pequeño, pero si tienes en cuenta que tus mallas no deberían ser demasiado grandes en primer lugar, esto es bastante grande Y los paisajes mientras están optimizados todavía están permitidos en tu rendimiento. Entonces, a menos que los necesites, no debes hacerlos demasiado grandes. Quiero esto más pequeño. Así que vamos a reducir este tamaño por vamos a dividir por y dividir por dos de nuevo. Esto es más que suficiente para mí. Podríamos hacerlo más pequeño, pero por ahora, debería estar bien. Y también podemos preseleccionar nuestros materiales. Entonces, seleccionemos tierra. Veamos, grava. A mí me gusta más la grava. Y vamos a hacer clic en Llenar mundo. Mis disculpas. No llenar el mundo. Crear. Vamos a hacer clic en Crear. Si haces clic en Fill World, llenará el mundo entero con el paisaje, que no es lo que queremos. Genial. Y ahora tenemos un paisaje. Como pueden ver, ahora es más evidente que es bastante grande. Pero esto es demasiado recto. Y quiero agregar algunas montañas y cosas lado para poder bloquear la visión para que quede clara. No es esto. No hay extremo sur de la Tierra. Esta no es una Tierra plana. Entonces lo que podemos hacer es usar escultóles. Así que vamos a darle clic. Y tenemos un cepillo. Lo quiero más grande. Entonces voy a aumentar el tamaño del pincel, y solo voy a dar click con el botón izquierdo del ratón. Quizás mi cepillo era demasiado grande. Sí. Aumentemos la cadena de herramientas de pincel. Y vamos a esculpir este paisaje al azar. Todo lo que necesito es no tener una línea final que se vea mal y algo así. Quizá un poco más aquí. Ahora bien, si miramos desde esta visión, hagámosla más grande aquí. Yo por error, hice clic en este lugar, pero lo arreglaremos. Podría controlar para deshacerlo. Pero también puedo Shift haga clic en él para revertir para en su lugar crear este hoyo. O puedo hacer clic en esta herramienta de aplanar aquí en la parte superior y dar clic en ella. Ahora, la forma en que funciona la herramienta de aplanar, haces clic en un lugar y después mover el mouse mientras mantienes ese botón del mouse, los aplanará a Por lo que vamos a dar click aquí y nos moveremos, y como pueden ver, todo se está aplanando hasta este punto Fy palabra haga clic aquí primero y mueva mi mouse alrededor, se aplanaría a la posición inicial Entonces ahora tenemos esta tierra. Ahora solo agreguemos colinas y cimas aleatorias, solo una especie de falsificaciones que estamos haciendo Agreguemos uno grande aquí. A lo mejor es un poco demasiado grande, así que vamos a agregar algunas abolladuras en el suelo, caerse Y ahora tenemos un Paisaje que puedes usar para nuestros propósitos. Obviamente, esto es algo que hice en unos minutos rápidos sin poner mucho pensamiento o esfuerzo en ello, pero puedes crear lo que quieras. Aquí hay muchas herramientas disponibles para ti. Puedes erosionarlo. Se puede utilizar hidro para crear una simulación de erosión. Por ejemplo, escojamos esta roca aquí, y es posible que veas que está cambiando ligeramente de forma. Esto está simulando la erosión por lluvias. Esta es solo la erosión del suelo que se mueve de mayor a menor. Entonces esto es solo un montón de herramientas que puedes usar. Solo puedes usar ruido. Puedes seleccionar qué tipo de ruido quieres, etcétera. Podrías usar mapas de altura si sabes cómo obtenerlos o usarlos. Hay muchas cosas que puedes hacer y puedes crear. Y por ahora, lo vamos a mantener aquí. Y lo que podemos hacer también, si no queremos tener todo justo este terreno y tal vez queremos un color o montaña diferente y tal vez queremos que lo más alto sea esta grava, pero debajo de alguna hierba, podemos hacer eso. Para estos dos, necesitamos crear un material en capas, lo que haremos en breve. 16. UE5 FC07 02: Ahora, vamos a crear nuestro material. La forma en que haremos esto, vamos a crear un material maestro para el paisaje. Entonces vayamos al soporte de materiales. Hemos creado previamente, crear un nuevo material llamado M subrayado MM significa material maestro, y llamémoslo paisaje. Subrayar Matt. Guarde esto. Cuando guardemos algo en el nuevo nivel por primera vez, va a pedir un nombre. Asegúrate de hacer esto en caso de que estés en choques reales y perderás todo tu progreso en el nivel. Y lo vamos a llamar considera que eres libre de llamarlo como quieras. Y ahora esto se salva. Ahorre de nuevo solo gase o guarde todos los materiales. Abrimos esta ranura de material. Realmente no nos importa el sustrato en este punto. Lo dejaremos para más adelante. Necesitamos ahora crear un material. Entonces la forma en que decidí usar grava y pasto y vamos a tener dos capas. Puedes tener tantas capas como quieras. Pero ten en cuenta no hacerlo demasiado complejo debido a los costos de rendimiento. La forma en que lo hacemos es que necesitamos mezclas de capas o paisajes. Mezclas de capas de paisaje. Agregamos esto, y arrastramos esto a nuestro color base, obtenemos a y agregamos elementos iguales a las capas que queremos en nuestro caso, también. Y duplicamos esto y volvemos a copiar el pase para las normales. Si tu juego no tiene normales, como tal, si todo es simplemente plano, por ejemplo, como en Minecraft, por ejemplo, realmente no necesitas tanto normales Y debido a que es un material de paisaje, es bueno no tener mucho brillo en el paisaje Así que vamos a forzar hacia abajo el valor de uno. Esto también se puede modificar con la capa Billions como todas las demás cosas, pero vamos a mantenerlo muy simple. Y ahora tenemos dos capas. Digamos grava para el primero. Probablemente debería haberlos nombrado antes de duplicar solo para no tener que hacer este proceso dos veces Y vamos a llamar a éste, segundo uno latón. Simplemente copia pase a aquí y t por ahora. Esto lo guardamos, y ya he abierto el material de pasto y el material de grava que voy a usar. Y lo que realmente necesito hacer es copiar lo que hay aquí para el color base y las normales. Estos dos materiales están hechos por defecto por unreil. Por lo que convenientemente para nosotros los han separado ya. Todo en la parte inferior aquí va a la normalidad junto con la nota de coordenadas de texto Entonces lo que podamos hacer, podemos simplemente copiar todo esto. Ve a nuestro material de paisaje, pega todo esto aquí. Asegurémonos de que tenemos todo correctamente. Entonces, fuera del nodo larp, tenemos que basar colores. Entonces hacemos exactamente lo mismo. Lo agregamos a la mezcla de capas de pasto. O el nodo larp. Y de este nodo lp en la parte inferior, lo tenemos normal. Esto puede parecer un poco desorganizado porque este material irreal predeterminado tiene muchos nodos en él Pero vamos a mantenerlos un poco a un lado. Y pongámoslos todos un poco abajo tienen un espacio despejado. Cierre este material de pasto ahora. Sí, no nos importa este material. Y hagamos lo mismo con la grava, y nosotros hacemos exactamente lo mismo. Copiamos esto. Aquí pegamos esto. Vamos a arrastrarlo al material. Y aquí, arrastramos esto. Echemos un vistazo a esto. Tenemos multiplicar al color base. Y veamos qué teníamos aquí. Se modificó la rugosidad. Y tenemos esta normal. Puede haber sabido esto porque este material de grava tiene rugosidad y el pasto tiene una rugosidad de defecto No podemos usarlo tal como está, por lo que agregaremos mezcla de capas adicional esta vez para obtener rugosidad. Vamos a agregar esta rugosidad a la grava. Y debido a que el pasto tiene rugosidad de uno, solo agregaremos el valor de uno No hay necesidad de complicar demasiado esto y ahorramos. Le damos un segundo volvemos a nuestro mapa Demo, seleccionamos nuestro paisaje. Bajamos en el panel de detalles y tenemos un material de paisaje. Haga clic en nuestro material maestro y póngalo aquí. Verás que realmente no tenemos ningún color en nuestro material maestro. Vayamos al paisaje y vayamos a pintar. Actualmente, si tratamos de pintar, no va a funcionar. Para ello, necesitamos crear información de capa. Haga clic en el icono más. Se puede hacer una capa de mezcla de peso, capa mezclada sin peso. Realmente no nos importa demasiado el peso en este caso. Así que vamos a hacer un mapa de demostración. podemos ponerlo en la carpeta de material , solo por conveniencia. Y lo hacemos de nuevo por la hierba. Y nuevamente, lo pondré en el material. Y ahora puedo seleccionar un material, digamos, grava y pintura. Te das cuenta de que esto se ve raro. Si presiono aquí y pasto, esto es muy brillante. Esto es un poco demasiado brillante para mi gusto. Así que volvamos al modo de selección y hagamos clic en la luz direccional, la reduzcamos a tres, como prefiero. Y ahora tenemos menos luz. Guárdala por un segundo. Y echemos un vistazo a nuestro valor especular metálico y rugosidad Nuestra rugosidad debe ser fina, especialmente para el pasto. Tenemos que echar un vistazo a nuestro peso del mapa. Entonces tenemos grava, pero primero pintemos los lugares que queremos tener pasto. Podemos encargarnos de ello más tarde. Quiero que estas áreas abajo tengan pasto con menor elevación. Las elevaciones de Ira pueden estar llenas de grava. O. Interesante. Yo solo desplazaré clic en él y eliminaré esta parte. El hecho de que la grava no se vea correcta es motivo de preocupación. Vamos a previsualizar el nodo. Puedes previsualizar el nodo del material haciendo clic en este icono, y lo tenemos en negro. Lo cual es motivo de preocupación. Et le echa un vistazo al material de grava. Bien. Tenemos un nodo que no está adjunto. Oh, nos falta una nota. Puede que haya estropeado y copiando el nodo. No puede, he estropeado el nodo. Veamos cómo se ve ahora. Esto todavía no parece correcto. Volvamos a echarle un vistazo. Por el bien de la simplicidad, sólo voy a quitar esta parte del nodo. Regresa a este nodo multitudinario, copia todo esto otra vez, vuelve al material. Copiar pase. Tenemos un Bien, A tiene que venir de esto, y B tiene que venir de esto. Creo que me he perdido esta nota aquí la última vez. Aplicar. Echemos un vistazo. Sí. Esto está más en línea con lo que quería. Y ahora puedo cambiar clic para borrar esta capa o simplemente hacer clic para agregar. Aquí no lo vamos a pintar perfectamente. Pero como se puede, todavía tenemos estos valores aquí, broches, aplana, etcétera También puedes asignar foiliage para generar en una determinada capa si quieres En este caso, no lo vamos a hacer por ahora. Vamos a ahorrar. Y por ahora, esto debería estar bien. Por ahora, esto debería estar bien. 17. UE5 FC07 03: Ahora bien, este campo de aquí se ve muy estéril. Esto se debe a que no tenemos ningún follaje. No tenemos pasto, no tenemos arbustos, no tenemos nada. También podríamos ir al foiliage, y crear un engaño o conseguir un foilage activo. Podríamos crearlo. Podríamos hacerlo nosotros mismos y plantarlos manualmente por todo el lugar. Eso no es algo difícil de hacer. Podemos crear solo, digamos, follaje de malla estática. Y vamos a ver. Vamos a crear una nueva carpeta. Llámalo. Foilge. Y llamémoslo Folage Underscoe Mm. El actor de Wolage subraya a Bush Abramos esto y vayamos a mallar y seleccionar algunos Bush. Ahora, nosotros salvamos esto. Y si hace clic y empieza a pintar, pintaremos manualmente este empuje alrededor del nivel. Dale un segundo para que termine de descargarse. Compilando shaders, sea más preciso. Y ahora podemos simplemente ponerlos por todas partes. Podemos eliminarlos si queremos y borrarlos, etcétera. La eliminación es bastante diferente al borrado. Y puedes agregar parámetros aquí. Digamos que queremos que sea menos densidad. Entonces digamos diez radios o 100. ¿Y qué es lo que hay aquí ahora? Mis disculpas. Debería haber seleccionado pintura. Ahora obtenemos menos follaje. Tenemos parámetros adicionales aquí, o es escala. Puede que no tengas media y max. Esto es para aleatorizar Entonces digamos que tenemos cero punto cinco, y sólo para demostración, digamos ocho. Algunas láminas son ahora muy grandes, algunas tontas son muy pequeñas Podemos hacerlos móviles, etcétera, pero honestamente, no se recomienda tenerlos móviles. Es mejor tenerlos estáticos. Y tenemos colisión. Realmente no quieres tener colisión en el follaje debido a problemas obvios de optimización. No quieres que tu auto se mueva y se quede atascado en un trozo de hierba a menos que se requiera un tipo particular de follaje para tener colisión, no debes usar colisión. Independientemente, no quiero usar esto de esta manera. Lo que voy a hacer en cambio, iré y quitaré parte de los rayos. La forma de eliminar funciona, es necesario seleccionar el foiage y hacer clic en Quitar, pero no lo tenemos guardado ahí Entonces simplemente lo borraremos manualmente para limpiar la escena. Podríamos pintar manualmente todo el nivel con esto, pero esta no es realmente una forma eficiente de nuestro tiempo. Obviamente, si estás tratando crear un paisaje hermoso, quieres microgestionar cada detalle La colocación manual tiene mucho sentido. Puedes colocarlos en singles con solo hacer clic en este solo botón, o puedes colocarlos en relleno, simplemente llena toda el área con él. Pero no quiero perder el tiempo en ello. Entonces lo que vamos a hacer es en cambio engendrar papel de aluminio con el material Para eso, primero, necesitamos crear un actor llamado Landscape Grass type. Ya creé uno, pero volveré a demostrar. Vamos a Foolage. Ir a la sección Foolage, y tenemos el tipo de pasto Landscape Nosotros creamos esto. Vamos a llamarlo LG. Vamos a pasto y T y llamémoslo empujar. El motivo por el que lo llamo push es porque solo vamos a tener push, pero puedes tener múltiples elementos de pasto aquí. En nuestro caso, sólo voy a agregar a Bush, así que lo acabo de llamar Bush. Pero podrías tener un conjunto de pasto diferente juntos, así que puedes simplemente desovar con una sola hierba Aquí, seleccionamos a nuestro actor Busch. Y la razón por la que estoy usando es porque es solo una disponible en contenido de inicio. Puedes crear tus propios Arbustos. Puedes agregar algo desde Asset Store, desde Fab, donde quieras. Y vamos a guardar esto. Podemos editar la densidad del pasto. Podemos usar, nuevamente, el mismo concepto similar aquí, tamaño maxmin. Y hagamos la talla máxima dos. La distancia de llamadas es importante. A qué distancia quieres ver tu pasto. Lo dejaré por ahora en diez K, pero es posible que quieras reducirlo o aumentarlo dependiendo de lo importante que sea este tipo de pasto para ti. Y puede notar que aquí no hay colisión. La desventaja, bueno, quizás desventaja, dependiendo de tu juego de usar esto para desovar tu pasto o papel de hoja no puedes agregarles colisión Así que volvamos a nuestro material maestro. Ni siquiera lo sé. Eso era grava. Así que volvamos a nuestro material maestro. Haga clic derecho y llame a Grass Landscape salida de pasto. Podrán notar que no hay lugar para esto. No hay ningún nodo de salida para esto. Esto actúa nodo de salida final adicional. Y tenemos que agregar nuestra hierba aquí. Empuje LTG Ahora, echemos un vistazo a nuestro Just give a moment. Se puede notar que en realidad no pasó nada. Esto se debe a que no tenemos nada en la sección de entrada. Ahora, necesitamos explicar a los materiales dónde generar los mensajes estáticos para el arbusto. Anteriormente nos hemos convertido en tipo de pasto. No podemos simplemente poner aquí esta información porque se trata de una combinación de mezclas de capas, y no hay una manera real generar ubicación a partir de nuestros nodos anteriores. Para ello, necesitamos un nodo de muestra, sampler. O capa Paisaje muestra de capa. Y tenemos que poner esto. Y aquí tenemos que escribir el nombre de la capa. Esa capa, en este caso, es pasto. Simplemente puedes copiar pastas o teclearlo. Y seguro. A ver. De pronto, tenemos mucha hierba generada donde estaba nuestro material de pasto. Sigo pensando que es un poco demasiado brillante. Déjame reducir un poco más el brillo. Sí. Y como pueden ver, no tuve que pintar esto, y puede argumentar que es demasiado denso. Podemos reducir la densidad del pasto. Entonces digamos que no quiero mucho, solo quiero diez y ahorrar. Y ahora tengo algo de pasto. Quiero que en general sean un poco más pequeños. Entonces, vamos a decir 02 y máximo a la una. Ahora tenemos pasto que está optimizado hasta cierto punto, y podemos simplemente colocarlos automáticamente usando un material. Obviamente, podemos crear múltiples capas y cada una de ellas puede tener sus propias notas. Para producir mallas. Entonces hagamos otra esta vez por grava. Quiero rocas pequeñas. A ver si tengo alguna roca como mallas en el contenido de inicio Roca. Tenemos una roca, creo. Vamos a echarle un vistazo. Es una roca. Entonces, volvamos a pasar por el proceso esta vez más rápido. Vayamos a nuestro foilage, creamos un tipo de vestido filage landscape Llámalo LGTUnderscore, rock. Abre esto, agrega un elemento, haz que este elemento se rock, reduce, digamos, tamaño 0-2 a uno como antes, y no quiero que sea denso también, pero hazlo 20 Guarde esto, y vayamos a nuestro material de paisaje. Aquí, podemos agregar un segundo elemento. Y podemos crear un nuevo nombre de parámetro, sampler, ponerlo en Podríamos hacer directamente dos desove de tipo foolige diferente en una muestra de capa, pero queremos que haya tierra en capa de grava y pasto o en esta específicamente arbustos en Entonces lo que tenemos que hacer es lo mismo que antes, copiamos la grava, nombre del parámetro, ponemos en un segundo nodo, vamos a aquí, vamos nuestro segundo elemento, llamado grava. Entrar, guardar. Volvamos a nuestro nivel. No hay nada. Quizás preguntándose por qué. Volvemos a nuestro material. Tenemos grava, pasto, y tenemos paisaje, pero no tenemos este segundo tipo de paisaje seleccionado, roca LGD seleccionada, y tenemos rocas Ahora, puede notar que también está produciendo rocas en el pasto porque estos materiales están en capas uno encima del otro. Son capas. Lo que significa que la información que el material está recibiendo aquí es incorrecta. Nosotros tenemos rocas, y tenemos rocas y pasto. Quizás te preguntes por qué está pasando esto. En primer lugar, vamos a reducir la cantidad de rocas y su tamaño es demasiado. Hagámoslo tal vez cuatro y el tamaño puede ser cero punto uno. Parece que lo he deshecho por error y cero punto f. no quiero rocas grandes Quiero rocas pequeñas. A lo mejor tal vez agreguemos un poco más de rocas aquí o tal vez demasiadas. Sí, pequeñas rocas aquí y allá. No se ven bien. El hecho de que todos sean la misma escala, no me gusta, así que agreguemos una gratis haciéndola libre, significa que su escalado en todas las direcciones está aleatorizado Hagamos esto así, ahorren, y probablemente las rocas se verán más diferentes. Y no me gusta que sean altos, así que vamos a introducir esta escala a cero d dos. Entonces no tenemos rocas altas. Sí. Ahora tenemos guijarros, etcétera, y editemos también sus cúmulos, lo que podemos hacer aquí, tal lo que podemos hacer aquí No, esto es apenas necesito casi ninguna diferencia. Vamos a restaurarlo tal como es. Haz un poco más. No quiero distancia fría. Quiero rotaciones aleatorias. Lamentablemente, esto es más o menos una limitación de que no tengamos muchas variaciones rocosas. Independientemente, dejémoslo como está. Y ahora la pregunta principal es ¿por qué tenemos rocas en el pasto? Esto se debe a que la forma en que funcionan las capas. Cuando estábamos pintando, teníamos estas dos fortalezas aquí en cero punto tres, lo que significa que esta hierba aquí está ponderada. A pesar de que usamos capas no ponderadas, esta hierba aquí en realidad está ponderada y ahora tenemos el valor de cero punto tres en la hierba y cero punto siete en la grava. La forma más fácil de arreglar esto es quitar la información de grava de aquí o encordar una herramienta y hacer clic en hierba y simplemente pintarla de nuevo. Pero aunque tengamos una hierba, todavía no es lo ideal. Queremos eliminar la información de grava. Así que hacemos clic en Shift y eliminamos la información de grava. Ahora bien, si quitamos información de grava, no tendremos rocas, y nuestra hierba se pondrá más verde. Unreal es mezclar nuestros dos materiales juntos, lo cual es una gran funcionalidad para tener Pero cuando se usa esto para producir rocas y pasto, esto puede ser un desmurado Entonces depende de ti si los vas a usar como material para producir el follaje, o vas a usar follaje para pintar el tolete y colocarlos manualmente en el nivel Ahora, limpiemos un poco la escena de una manera rápida. Vamos, no quiero hierba aquí a un lado. Vamos a tener una fuga principal vamos a quitar la grava aquí. También quitamos la hierba, será negra. Entonces significa negro, lo que significa que aquí no hay información. Entonces si pongo grava y pasto aquí, verás en el medio, se mezclan. Podemos usar esto para antes que nada, eliminemos esto. Haga clic Mayús para eliminar la información de la capa. No quiero que haya grava aquí. Lo que podemos hacer aquí es que podemos agregar una capa de grava. Los costados. Las colinas y la hierba también se acoplan a los lados, y solo la hierba en el medio. Lo que nos daremos es una capa con follaje de pasto solo en una mezcla de pasto y grava. Entonces rocas y follaje y solo rocas. Puedes, de nuevo, usar múltiples capas, usarlas como quieras, crear lo que quieras crear. Ahora, vamos a salvar esto. No vamos a perder más tiempo en esta generación de paisajes. Y ten en cuenta que la información de capa para esta colocación para la pintura en el paisaje son estos dos archivos. Asegúrate de no eliminarlos ni moverlos desde donde se supone que deben hacerlo. Generalmente, no es buena idea tocarlos. Realmente no necesitas hacer nada con ellos, generalmente. Como tal, no los toques a menos que sea absolutamente necesario y estés consciente de lo que estás haciendo. Ahora podemos pasar a crear en nuestra escena. Entonces ahora tenemos un paisaje. Y a continuación, quiero crear algo a donde podamos crear nuestros elementos de juego, pero no tenemos mallas Y con eso, quiero decir, no tenemos bloques, etcétera, y honestamente, no quiero usar múltiples box para esto Así que vamos a volver a la herramienta de modelado. Y una herramienta de modelado, creémonos nosotros mismos. Vamos a crearnos una plataforma. Podemos comenzar con un cubo o una caja, si desea llamarlo. Pongámoslo aquí y podemos hacer su altura 100. Mis disculpas. Mil. Quizás sea un poco demasiado grande. Hagámoslo 500. Y veamos, podemos alinearlo al suelo. Alineamos los objetivos en el suelo directamente. Debería dejarla solo a nivel local. No hay necesidad de ser demasiado creativo aquí. Ahora, tenemos esto habilitado. Vamos a ponerlo un poco en el suelo y podemos modelar esto más a fondo para crear nuestra propia plataforma Podemos grupo poly editar esto podemos agrandar para ser precisos, extruir este ritmo Selecciona el espacio y vamos a ver. Lo que podemos hacer aquí es empujar o jalar esta cara aquí. Hagamos esto más allá. Hagámoslo una plataforma grande. Ninguna razón real para hacerla pequeña. Y extruirlo de nuevo. Puede que haya hecho un clic erróneo en algo. Volvamos a dar click en este ritmo, extruirlo ligeramente y darle click sobre este, extruirlo de nuevo extruirlo ligeramente y darle click sobre este, extruirlo de Esta será nuestra parte de nuestra plataforma. Ahora vamos a empujar esta fase. Quizás debí haber empujado un poco más. Lo estoy haciendo grande por si acaso lo necesitamos. Pero honestamente, eres libre de hacerlo como quieras, cualquier forma que quieras. Te habrás dado cuenta de que cometí un error. No tengo patas para esta parte porque no extruí una cara adecuada Podría agregar borde adicional, etcétera, pero en cambio, lo que voy a hacer, voy a hacer clic en esto y extruir todo el camino Y voy a extruir ligeramente otra vez, crear pase adicional Voy a dar click en la cara inferior de la fase recién creada extruirla nuevamente, el suelo Y ahora tengo esto aquí, que fácilmente puedo extruir de nuevo. Mira, ten en cuenta. La razón por la que estoy haciendo esto es sólo por el bien de ahorrar algo de tiempo. Como no deseo modelar, toda la plataforma. Esto es muy útil para bloquear y crear las muestras para el entorno, que posteriormente, puedes pedir tus modeladores o creativos que hagan o si te vas a admirar a ti mismo, tú mismo puedes hacer Ahora, tenemos esto, y las ideas esto se adjunta aquí a la montaña y tienen esto. Probablemente deberíamos mover esta parte hacia adentro. Entonces hagámoslo. Lo que podemos hacer es seleccionar todas estas caras. Y sólo muévalos a aquí. Ahora tenemos una plataforma en la que se hace clic en Aceptar. Y podemos seguir editando grupos poli , eso es crear pilares. Si quieres, como puedes ver, simplemente no puedes mover esto. Se puede extruir después de seleccionarlo correctamente, a diferencia de lo que hice Entonces extrudimos esto, hagamos solo arena de algún tipo Esa es la idea, al menos en mi caso. Es sólo un poco más grande. Extruir de nuevo para crear polígonos adicionales o para ser caras de mayor precio, necesito empujar todo el camino hasta Esto puede haber sido demasiado largo, pero lo sabremos en un segundo. Se puede empujar de nuevo. Edita esto solo un poco. Se puede hacer lo mismo aquí. Ahora, en este caso, sólo estoy mirando todo el proceso. Entonces no es lo ideal. No. Yo sólo voy a hacerlo aquí. En el pilar extruye ligeramente, es una cara inferior extruir de nuevo Profundo en la pared. Está un poco desalineado, así es y vamos a moverlos todos juntos. Y es que debería estar bien. Ahora, vamos a ser edición de poligrupos, extruir la cara. Seleccione el pilar, extrúyelo de nuevo. La altura es un poco apagada. Entonces hagámoslo un poco más alto. También puede seleccionar los bordes. Para moverlos, desea cambiar el tamaño, y puede cambiar seleccionarlos para seleccionar varios bordes al mismo tiempo. Desea modificar el tamaño de la cara. Esto es de conocimiento común cuando tienes experiencia con el modelado. Y ahora podemos extruir. Nuevamente, está un poco desalineado, pero no estamos tratando de ser perfectos aquí, así que solo podemos hacer esto Y voy a dejarlo así. va a modificar un poco esta colocación de estos vértices reduciendo sentándolos aquí. Sí, no soy el mejor arquitecto, pero esto está bien. Excepto ahora vamos a seleccionar un material para esta plataforma. Creo que algo así como una canica debería estar bien. Podríamos Vamos a ver cómo se ve. No es ideal ya que no tenemos UVs adecuados. Así que vamos a crear un nuevo material para esto. Ir a materiales. cómo se ve nuestro material básico sobre esto. Sí, los UV básicos están bien. Se puede crear un material. Llámalo subrayado plat form. Guardar Los un material de plataforma. Y ahora podemos trabajar en material para esta plataforma. Guardar. 18. UE5 FC07 04: Ahora, vamos a hacer un material de sustrato para nuestra plataforma. Usted puede preguntar ¿por qué? Porque nunca hemos tocado el tema, y esta es una buena oportunidad. El material de sustrato es un nuevo tipo de material o se podría decir función material que introdujeron en irreal, y es una forma capas de materiales sin usar realmente múltiples fuentes de material, y se ve y calcula las capas con sus alfas, con las luces y reflejos juntos para darnos resultados de muy alta calidad Entonces, antes que nada, necesitamos una losa ya que eliminé las entradas de material predeterminadas anteriores, y necesitamos una segunda si estamos haciendo losa de dos capas lo que vamos a hacer. Y necesitamos una capa de sustrato vertical. Lo ponemos así, esto aquí, y esto aquí. Esto es lo que vamos a hacer por ahora. Ahora bien, esto tiene algunas opciones similares y a la original. Entonces, primero agreguemos nuestros colores. El albedo difuso es lo mismo que tu nota de color anteriormente. Entonces hagámoslo por ahora sin azul, agreguemos uno diferente y agréguelo para difundir albedo aquí Y vamos a hacerlo amarillo por ahora. Lo cambiaremos más tarde. Agreguemos una rugosidad porque quiero que este material superior sea muy brillante Hagámoslo 05005. Y lo tenemos como azul brillante. Pero realmente no podemos ver el amarillo. Para ello. Necesitamos agregar este ayudante de nodo en particular. Hay dos de ellos. Necesitamos el segundo. Y aquí los dejamos caer hasta aquí. Y dale un momento. Ahora, de pronto, este material se ve muy diferente. Vamos a guardarlo. Se puede ver que esta es una capa de dos materiales. Y si miras desde arriba donde se refleja la luz, puedes ver el brillo con bastante facilidad. Y si nos fijamos en el fondo, tenemos un color más oscuro. Podríamos cambiar el color para que quede más claro. Digamos, azul oscuro y digamos, morado oscuro. Es bastante fácil de ver de esta manera. Pero lo que es más importante es que podemos sumar normales. Las normales son para agregar texturas, así que solo podemos agregar una muestra de nodo de textura, agregar una normal Y creo que teníamos algunos de irreal Sartbrek para adoquines Oh, sí, tenemos normales. Para adoquines también tenemos lisos. Agreguemos unos lisos y le demos un segundo. Y ahora tenemos un material en capas con suavidad al mismo. Ahora hagamos del color algo que realmente nos gustaría ver. Quiero un color más brillante con algunos tonos más oscuros. Hagámoslo en azul. Quiero esencialmente dos capas. Ahora aplicamos esto. Volvamos al nivel y veamos cómo se ve. Demos el momento. Y vamos a seleccionar nuestro nuevo material y ponerlo aquí. Obviamente, necesitamos ajustar el mosaico, pero ahora tenemos un material muy diferente Es un alicatado ajustado. Significativamente. Así que coordenada extra. Agregar MAR, el único que tengo aquí. Hagamos que sea un número muy alto. Vamos a amarrar diez veces. Guardar Guardar automáticamente también se aplica. Y ahora tenemos este material. Parece que hay una lámina de vidrio y la miras desde una dirección, que es el punto de los materiales del sustrato. Esto sería muy difícil conseguir este efecto específico si lo hicieras con materiales regulares. Pero esto puede ser bastante duro para los ojos. Entonces, qué podemos hacer, vamos a probarlo con diferentes colores. Pero tenemos negro con algunos, digamos, rojo brillante por debajo. Volvamos a Bueno, negro en sí no es mucho de un color, pero el hecho de que tengamos este parámetro de rugosidad aquí afecta cómo se ve Entonces, si fuéramos a aumentar la rugosidad, digamos a uno y aplicar este material de repente tenemos un material rugoso Pero no lo queremos así de rudo. Vamos a revertirlo, y en realidad no lo queremos negro. Hagamos algo elegante y hagamos que dos colores brillantes choquen entre sí como tales Y tenemos esta nota de estilo. Vamos a aumentarlo aún más. Quiero aún más rocas más pequeñas en el pavimento. Y vamos a darle un momento. Y ahora tenemos este material, que creo que estoy bien con él. Podrías agregar múltiples colores, múltiples capas, y ser creativo y obviamente el sustrato por sí mismo tiene múltiples opciones. Podrías, por ejemplo, editar también la rugosidad de la segunda capa Entonces, si haces que la segunda rugosidad real sea cero, la segunda capa será muy brillante Entonces ahora de pronto hay más brillo en la segunda capa, y si invertimos esto un poco La capa superior no le va a tener ningún brillo, pero la capa inferior lo será. Entonces se comerá el brillo. Pero si también podemos hacer esto, y la aspereza aquí puede ser de un valor similar Y agrega una enfermedad a la capa. Entonces, qué tan gruesa es la capa superior. Entonces, cuando tenemos este mal superior a cero significa que esencialmente el mal superior no existe, realmente no lo veremos. Entonces, probemos un punto, apliquemos y veamos. Tenemos un material amarillo muy brillante. Pero si lo ponemos en algo así como uno, esto es demasiado enfermo para ver el amarillo. Pero si punteamos cero punto cinco, todavía demasiado enfermos. Punto cero uno. A lo mejor todavía es demasiado grande. La lógica aquí es demasiado enferma para ver a través del objeto. En zero.01, apenas se puede ver y apenas se ve y apenas se Y si se reduce un poco más, apuesto a que me refiero diez veces. Ahora todo es amarillo. Podrías simplemente ponerlo en algo cinco y puedes ajustar cuánto quieres que sea Cro el material. Pero debería ser un número muy pequeño. Lamentablemente, irreal no tiene documentación sobre lo pequeño que debería ser el valor predeterminado, pero podemos probarlo y echarle un vistazo a medida que estamos dando vueltas. 02 es demasiado grueso, y tal vez deberíamos tener un valor de siete Y nuevamente, también podríamos desactivarlo y ver la diferencia, como pueden ver, un poco más amarillo, un poco más azul. Tristemente, no estoy al tanto de cuál es la enfermedad por defecto de la misma, pero voy a asumir que es en algún lugar 1-2. Lo más probable es que uno.500 15. Sí. Algo a lo largo de los lados. Quiero que sea más amarilla, así que la voy a poner a las 05. Aplicar. Échale un vistazo. Ahora bien, el azul y el amarillo no es una buena combinación, pero la vamos a dejar por ahora porque quiero probar y mostrarte cómo se ve con una normal diferente aplicada. Entonces, la segunda capa que tenemos esencialmente parece una capa de rocas debido a esta normal que tenemos aquí, textura normal. Pero también podemos agregar una textura en la primera capa. Entonces si ponemos esto aquí y lo enchufamos a la normalidad, mis disculpas, necesitamos un nodo de textura Lo ponemos aquí. Y agreguemos un nodo de textura diferente para que solo podamos buscar N. No queremos arcilla. ¿Hay alguna normalidad interesante? Echemos un vistazo a la roya. El óxido como textura normal. Vamos a aplicarlo. Es posible que necesitemos agregar el alicatado. Ahora tenemos esta cosa rara de la roya en la parte superior. No me gusta el mosaico de esto, así que vamos a agregar un nodo de textura Vamos a dentatizar esto también. Aplícalo. normales de los nodos de óxido pueden no ser las mejores, pero de repente tenemos estas imperfecciones en el material Se siente como si un bloque de agua congelado sobre el camino adoquinado, pero el camino en sí también está en capas Y todo esto se hace por material sencillo. Si solo tuvieras que quitar este material, parece una piedra de bloque. Pero aquí. Ahora bien, lo que podemos hacer es en cambio seleccionar algo que tenga más sentido. Con un adoquín, normales de basalto. Y cambiemos los colores también. El azul no es un buen color. Hagámoslo algo así como color marrón marrón mezclado con Veamos. Hagamos un material de color a color, aplique esto Quizás sea un poco demasiado brillante. Sí, esto es un poco demasiado brillante. Así que vamos a reducir la saturación de misma y tenerla un poco más oscura, tal vez un poco más. Puedes escoger el color esto también. Tomemos saturación y pongamos a continuación. Son muy similares a los colores lo cual es completamente fino para nuestro propósito. Sí, esto debería estar bien. Esto ahora parece que la combinación de colores no está tan lejos. Podríamos hacerlo un poco más oscuro en ambas cuentas. Podemos, lo que es más importante reducir aumentar la rugosidad para que sea menos brillante Entonces, vamos a llegar tan lejos. Y éste puede ser recto. Guardar Bien, ahora es mucho menos brillante. No queremos que sea metálico ni nada. Hay parámetros adicionales como por ejemplo, si pones aquí la rugosidad de la pelusa y digamos cantidad de pelusa Vamos a echarles un vistazo y ponerlo en uno y pelar la rugosidad en cero. Hagámoslo uno también y agreguemos un color. Digamos rojo. Obtendremos un tinte adicional. Pero esto es un poco demasiado, así que vamos a reducir la cantidad de pelusa a cero punto cinco, tal vez incluso cero punto dos para simplemente agregar algo de enrojecimiento al material Y ahora tenemos un material que es una combinación de tres colores, dos normales. Tiene múltiples parámetros para la rugosidad. Y no tocamos muchos ajustes adicionales aquí. Y el hay múltiples formas en las que puedes hacer esto. Podemos agregar capa vertical adicional y agregar una losa de sustrato más y colocarlas nuevamente y agregar aún más normales, incluso más colores, incluso más como rugosidad adicional, UV, etcétera Hay infinitas formas en las que puedes usar esto para hacer materiales guapos, y Unreal tiene una demostración de material de sustrato que puedes descargar gratis y comprobarlo desde su sección de educación y tutorial en fab o en el Unreal Lunch, hay muestras Sección en la que puedes hacer click y echarles un vistazo. No creo que Unreal tenga muestras de sustrato en el contenido de inicio Sí, no lo tienen, pero puedes descargarlos y echarles un vistazo. En fin, por ahora, digamos que hemos terminado con nuestra escena. A continuación, queremos agregar elemento de jugabilidad en la escena. Entonces primero, tenemos que asegurarnos de que nuestro personaje funcione. Presionemos play, y nuestros personajes aparecen en medio de la pantalla ¿Por qué? Si vamos más alto y presionamos play, nuestro personaje engendra desde donde está nuestra cámara La razón por la que esto sucede es porque no tenemos un cierto indicador en la escena. Y a ese actor se le llama aquí, déjame ver. Carácter. 1 segundo. Nodo de inicio del jugador, este. Así que este nodo de inicio del jugador define dónde empieza de nuevo tu personaje. Obviamente, puedes sobrescribirlo como en el juego guardando archivos o simplemente algunos disparadores Pero por lo general, esto es sólo un punto de partida. Y ahora, independientemente de dónde esté nuestra cámara, nuestro jugador siempre va a desovar en ese punto Asegúrate de que esto realmente no esté en una posición adecuada. Si pones algo como esto, caerás por el suelo. Por lo tanto, debes asegurarte inicio de tu jugador esté en la posición correcta para no solaparse demasiado con otros objetos. Y si, tenemos esto ahora podemos hacer algunas cosas de jugabilidad. Podemos movernos por nuestra escena porque creamos estas rocas con nuestros materiales. No tienen colisión, que, para ser sinceros, no queremos en primer lugar. Y antes de comenzar, agreguemos algún tipo de forma de escalar esta parte aunque no la vamos a usar solo con fines visuales. Así que vayamos a nuestro lugar ficha actor. En las ventanas, vayan a colocar actores. Y vamos a las formas básicas. Creo que teníamos una escalera en alguna parte sí. Curva señor líneas señor. Y vamos a usar esto. Esta es una malla de cepillo. Entonces esto no es realmente una malla. Es más como una herramienta de modelado combinada con malla estática. Y solo puedes aumentar la cantidad de pasos que tiene. Aumentemos la altura para 80 y el número de escalones a, digamos, 50. Oh, puede que lo haya exagerado. Digamos que el número de pasos debería ser algo así como 35, 32, uno. Hazlo. Debería estar bien. A lo mejor vamos a hacerlo más amplio. Es menos de la escena. Y vamos a usar vamos a quedárnoslo Lexis. Y después de haberlo alineado como queramos, podemos crear malla estática, y veamos, mantenerla en la malla generada. Y ahora esto se convierte en malla, y podemos usar nuestro material, que usamos aquí, simplemente puede hacer clic en Bowe, dar y podemos usar nuestro material, que usamos aquí, simplemente puede hacer clic en Bowe, clic en esta malla, y dar clic en Usar Seleccionar activo desde el navegador Y ahora tenemos la misma malla aplicada aquí. Debido a que esta malla es mucho más pequeña, el mosaico también es muy pequeño , pero está bien Y ahora, por si nos caemos, como lo hice hace un momento, podríamos subir, pero esta malla no tiene colisión. Entonces hacemos clic en él, hacemos clic en la colisión, y necesitamos seleccionar el preajuste de colisión para bloquear todo ya que es una malla Y yo solo lo quería. Ahí tenemos algún espacio vacío. Podemos arreglarlo en un segundo. Pero todavía no funciona. Ahora bien, la pregunta puede ser, ¿por qué no funciona esto, que te mostraré en un segundo Entonces este es un pincel. Lo creamos a partir del pincel básico, ¿verdad? Y si revisas el encendido y vas a colisión de jugador, esto no tiene colisión. La razón por la que creamos esta malla, pero nunca le pusimos colisión. Entonces lo que puedes hacer es ir a abrir la malla que hemos generado y hacer clic en colisión del jugador, y no hay nada, y hacer clic en la colisión inferior en la parte superior para crear una. Entonces hay en colisión de esfera. Hay cápsula, hay caja. Entonces, si haces clic en el cuadro de colisión simplificada, esto no es lo ideal. Entonces solo para demostrar cómo se verá, movamos nuestro inicio de juego cerca para que no tengamos que caminar demasiado. Ahora nos estamos moviendo en el aire. El motivo es porque hay una colisión, es la forma de una caja debajo de nosotros. Y eso no es lo ideal para nuestros propósitos. Sólo una regla general, ten en cuenta, las únicas cosas que puedes tocar en la escena son las escenas que tienen colisión. Unreal genera ciertas colisiones por defecto, asumiendo que las necesitarás Pero hay ciertos casos en los que así, no se está generando porque esto se suele utilizar para la creación de prototipos, no para el layout real de la escena Ahora, para hacer una colisión adecuada para esto, idealmente, lo crearías a medida en un software de modelado o simplemente moverte por tu cuenta usando algunas herramientas, herramientas de modelado, etcétera Pero en cambio, lo que vamos a hacer, vamos a eliminar nuestra colisión ineficiente C en la colisión y convertir bookis colisión y Haremos clic en Oto cuadro colisión, fuera colisión convexa, mi disculpa Y en el lado derecho, seleccionamos la calidad, y realmente no nos importa demasiado esta calidad, y haremos clic en Aplicar. Es posible que desee reducir ciertas colisiones hasta pero ahora esto está mal configurado Si lo haces muy bajo, esto se verá muy mal. Como puede ver, esto ni siquiera es una colisión total. Así que vamos a poner en los valores por defecto y pre suministro. Esto no es realmente ideal. Como se puede ver, hay vértice extra, etcétera. Hay líneas de colisión que no tienen sentido, pero esto es solo para propósitos de prototipado, así que simplemente podemos dejarlo como está, y ahora podemos movernos Ahora tenemos esta escalera, que, para ser sinceros, realidad no vamos a usar porque pretendo abarcar toda esta zona con una caja de colisiones. Así que el jugador no puede simplemente saltar fuera de la capa. Muchos juegos, tal vez recuerdes si eres un jugador competente tiene áreas fuera de límites con paredes invisibles, etcétera Y la razón por la que se hace es los desarrolladores no quieren que vayas a donde se supone que no debes ir. Por ejemplo, en este caso, estoy escalando esta montaña y si voy más allá de esta montaña, ahí no hay nada, y me caeré fuera de límites y cuando llegue a cierto punto del mapa, el actor quedará destruido Estaré infinitamente atrapado en una siguiente animación. Obviamente, esto no es lo ideal y no queremos que eso suceda. Entonces usualmente agregamos colisiones invisibles, por lo que no puedes moverte fuera de ella. Nuevamente, esto se puede hacer fácilmente, yendo a colocar actores y solo podemos buscarlo escribiendo bloqueo. Ahora tenemos bloqueando el volumen. Entonces agregamos esta caída al nivel, podemos eliminar nuestros sectores de juego. También podrías dar click aquí e ir a volúmenes e ir a bloquear volumen o simplemente buscar aquí. Entonces ahora tenemos este volumen de bloqueo, que todo lo que realmente necesitamos hacer es dimensionar escalar para ser más precisos, y hagamos esto. Y sólo para fines de demostración, voy a hacerlo muy grande todos lados y poner esta pared invisible en el medio. Así que vamos a presionar play, y vamos a tratar de entrar en el medio de la escena. Quizá veas algo familiar. No estoy en condiciones de ir más allá de este punto. Visualmente, no tiene ningún sentido, pero aquí hay un volumen bloqueante que está impidiendo mi movimiento. Entonces, lo que tenemos que hacer en cambio, simplemente lo reduciremos, lo haremos más largo y lo pondremos para que abarque el nivel. La forma más fácil de hacerlo podemos usar colisión de jugadores para ver exactamente dónde el jugador no puede moverse. Y no queremos que el jugador se mueva más allá de esto. Hagámoslos más grandes. Y podemos desplazar los clics con todos los sentidos. Podemos cambiar haga clic en esto de nuevo. Gira es de 90%. Bonito. Titular y cambiar de nuevo y moverlo todo el camino hasta aquí. Y ahora, si bien esto puede parecer una clave porque no están perfectamente alineados, para ser honestos, no importan tanto como no los vamos a ver aquí. Obviamente, querrías tener tus cajas de colisión precisas. Pero para la creación de prototipos, ya te han visto, realmente no debes preocuparte por ello. En el tema de la creación de prototipos, durante el desarrollo del juego, es muy importante prototipar y probar sus juegos rápidamente En la mayoría de los casos, la razón por que se lanza el juego y no es divertido es porque no fue prototipado y probado correctamente en la etapa inicial Y cuando los desarrolladores dan cuenta de que su juego no es realmente divertido, se encuentran con una opción. Necesitan o bien seguir desarrollando el juego que saben que no es divertido o intentan de alguna manera hacerlo divertido. O simplemente lo empujan y lo liberan tal como es, o si bien son los más ideales desde el punto de vista de, ya sabes, la moralidad, necesitan reiniciar todo el proyecto Entonces, la mejor manera de saber si lo que estás haciendo es divertido o no es haciendo un juego. Y para hacer tu concepto central de jugabilidad, aunque tus modelos no parezcan nada, lo que necesitas hacer es simplemente usar lo que tienes a mano, hacer un prototipo rápido de lo que intentas hacer y convertirlo en un juego. Entonces, lo que estamos haciendo aquí ahora, solo tenemos un ambiente aleatorio con algo de follaje y escombros aleatorios, etcétera rocas, y esta muy aleatoria, muy probablemente, en opinión de la mayoría de la gente, plataforma muy fea que vamos a usar como área de juego Estoy tratando de asegurarme de aprovechar todas las oportunidades posibles para explicar la funcionalidad adicional de las herramientas disponibles para ti en la escena. Como tal, vamos a hacer algunas cosas distintas. No queremos que sea tiempo de luz. Entonces lo que vamos a hacer, vamos a controlar L y hacerla más oscura. Lo haré aún más oscuro más tarde. Vamos a agregar fuentes de luz encima de aquí en todas estas líneas. Y estas fuentes de luz actuarán serán nuestras principales fuentes de luz. Y este será en su mayoría elemento visual, y el color de la luz cambiará dependiendo de lo que hagamos en el juego. Entonces mi idea actualmente es muy sencilla. Vamos a tener algunos objetos de física como esferas, y vamos a empujar estos objetos de física a cierta parte de la arena que se moverá. Y tu objetivo es meter cierta cantidad de pelotas en la arena, y una vez que hayas terminado con eso, eres libre de ir por esta plataforma. Y este será el final de nuestro juego. Vamos a tener algunos interactables. Y vamos a tener una puerta de entrada aquí donde está nuestra escalera. Y lo más probable es que agreguemos algunas paredes aquí para asegurarnos de que realmente no puedas salir sin depender demasiado del volumen de bloqueo que es solo bloques rectos aquí Vamos a agregar algún marco, esencialmente, y vamos a agregar algunas puertas aquí, algo que funcione como una puerta, como algo que sea portón o una barda. Sí, la cerca es más así que ahora vamos a discutir lo que necesitamos para esto. Necesitamos una fuente de luz. Vamos a reutilizar nuestro plano anterior con algunas diferencias Vamos a usar una barda para simplemente agregar una ilusión que diga tener una colisión y está bloqueando nuestro movimiento afuera. Vamos a usar utilería que tenemos a mano y necesitaremos objetos físicos, que serán formas básicas regulares como esferas Y necesitaremos crear algunos planos para movernos por nuestra zona que esencialmente va a actuar como puerta Necesitas anotar puntos en. Y este va a ser el concepto básico de jugabilidad de esta demo. Sentialmente este es un prototipo de juego muy simple que estamos haciendo solo para ver si es uno, que probablemente sea la parte más importante del desarrollo del juego para ver si puedes hacer algo divertido Si bien te estoy enseñando cómo hacer todo esto, no estás obligado a repetir mi paso a paso. Puedes crear algo divertido de inmediato. Estoy tratando de asegurarme de que podamos aprender lo más posible sobre el proceso de desarrollo de juegos en lo irreal, bueno, también tratando de no perder demasiado tiempo Y a tener en cuenta, todos estos son conceptos básicos básicos. Cada elemento en lo irreal es muy complicado si cavas lo suficiente, excavas lo suficientemente profundo Instancia, ¿cómo funciona la luz, cómo funcionan las sombras? ¿Cómo funcionan las funciones del material? ¿Cómo puedo crear materiales que se muevan? Imagina cada juego que hayas jugado o visto en tu vida. Cada cosa incluso relativamente simple en los juegos, lógicas, funciones, si intentas implementarlo en un juego, de pronto, aparecen muchos puntos que aparecen que no tienes idea de cómo hacer o cómo funcionan Lo más importante como desarrollador de juegos para entender cómo los engranajes hacen clic juntos. Cómo interactúa un objeto con otro, cómo un material refleja la luz, cómo las sombras trabajan junto con la luz, cómo el paisaje, las mallas, las mallas estáticas, los personajes pueden interactuar entre sí ¿Cómo puedes simplemente abrir una puerta sencilla que es diferente para cada juego? Ten en cuenta cómo se hace todo. Y en la próxima conferencia, vamos a crear nuestros elementos de juego. Por ahora, terminemos de configurar nuestra escena. 19. UE5 FC07 05: Ahora, comencemos agregando algunas luces a nuestra escena. Ya usé nuestra lámpara creada anteriormente, escalé hacia arriba, la giré hacia abajo y dependiendo de tu escena, siéntete libre de hacer lo mismo Sólo para encontrar una posición relativa donde te gustaría tener tus luces. Ahora, puedes echar un vistazo a la pantalla y darte cuenta de repente, Oh, hay mucho espacio que cubrir. Tendría que agregar manualmente esta luz, digamos, cada cien unidades o cada 500 unidades para cubrir toda mi escena. Puedes, por todos los medios, hacer eso. Pero el tema es estas luces que vamos a agregar a nuestra escena van a estar va a haber muchas de ellas por el tamaño de la escena que hice, y me tomaría mucho tiempo colocarlas todas manualmente. En cambio, lo que vamos a hacer, vamos a crear una función y tener un guión de construcción que funcione para esa función que pueda colocar a estos actores en nuestra escena. Entonces hagámoslo. Primero que nada, creamos un nuevo actor. Y va a ser sólo un actor. Lo llamaremos llave de luz BP. Ábrelo, guárdalo por si acaso. Para fines visuales, agreguemos aquí algo que pueda actuar. Solo agreguemos una flecha para que podamos ver en qué dirección se encuentra la X. Si te estás preguntando cómo se vería en el nivel, si solo añadimos esto aquí vamos a hacer default syn root, compilar Vamos a tener esta flecha roja que muestra dónde está buscando este plano, lo cual va a ser útil Podemos escalar esto, así es más fácil de ver. El propio actor no importará ya que esto sólo va a ser utilizado para la construcción. Entonces, la razón por la que creamos este actor es porque si lo creamos aquí en el guión de construcción, esto se ejecutará en cada copia de este plano Pero solo quiero un actor que spa cierta cantidad de actores ligeros, y después de eso, simplemente eliminaré a este actor para que no pueda hacer esto incitando Entonces lo que vamos a hacer es que vamos a ir al guión de construcción, y algunos de ustedes ya lo han intentado, pero si van a spa actor de clase, tal pero si van a spa actor de vez estén pensando, tal vez simplemente haga clic en Lámpara, Plano, y para, digamos, conseguir que el actor se transforme, adjuntarlo aquí, y aquí Quizá estés pensando, bien, todo lo que necesito hacer es esto. Y si voy a mi mapa de niveles y presiono play, habrá una segunda luz. Lo simularé, así no tengo que enfriarme de esa manera. Bueno, técnicamente tienes razón. Está engendrado Obviamente, no dijimos cómo desovar, pero hay un problema Todavía coloqué a un solo actor y ese actor está apegado a este actor. Entonces lo hicimos con un paso extra. Ahora bien, tu idea puede ser, bien, ¿y si usamos script de construcción? De esto se trata. No se puede copiar directamente al actor engendrado en el guión de construcción Esto es por razones de comp, razones computacionales porque puede romper fácilmente el motor Si creas un actor que crea un actor que crea un actor, entonces no suele ser una buena idea. Ahora bien, ¿qué podemos hacer para que esto suceda? No podemos usar esto, y no podemos usar esto porque no queremos que esté en juego, queremos que sea antes del juego. Y el guión de construcción ocurre antes de que se cree el actor. Sucede antes de comenzar el juego o incluso hacer cualquier cosa en la jugabilidad. Para ello, necesitamos crear una función. Así que vamos a crear una función. Lo llamaremos actor de engendro. El de alguna manera logró estropearlo. Y vamos a ir a guión de construcción y llamar función de actor spawn Y copiaremos esto y lo pondremos dentro de nuestra función de actor spawn Aquí no. Actor span. Sólo vamos a hacerlo así por ahora, Compilar y volver al nivel, y tal vez veas, espera no pasa nada. Esto se debe a que esta función no es algo que deba ser llamable por el script de construcción en primer lugar Entonces lo que vamos a tener que hacer, vamos a hacer click en spawn actor y dar click en call en Editor Esto significa que esto ahora se puede llamar antes de que el evento comience a jugar durante el editor. Así que vamos a volver. Y tenemos a este actor seleccionado engendrador de luz. Y ahora tenemos un botón llamado spawn Actor. Se da click en él, tenemos actor que engendran. Esto es exactamente lo que necesitamos, y justo ahora puedes mover a este actor, hacer clic una vez más y volver a engendrar Ahora bien, esto todavía no es exactamente lo que necesitamos. Pero antes que nada, obtengamos valor o resista la rotación y la escala. Aquí tenemos que asegurarnos de obtener los valores adecuados para el actor spawn Entonces actor estamos tratando de engendrar. Para entender cómo funciona, primero, echemos un vistazo a este nodo. Este nodo se llama get actor transform. Transformar significa la rotación, ubicación y escala del actor. En este caso, el destino para este nodo en sí. Entonces significa que está consiguiendo a estos actores. Con esto, quiero decir, este actor de flecha que creamos. Y está obteniendo sus valores para rotación, ubicación y escala, y lo estamos poniendo aquí en este nuevo nodo, que está creando el nodo de lámpara con los parámetros descenso. Por lo que es esencialmente copiar exactamente los mismos valores del propio actor. Pero esto no siempre es lo que necesitamos. Entonces en este caso, particularmente, necesitamos editarlo es rotación y ubicación. Podemos mantener la escala tal como es porque la escala por defecto para este actor es cinco, como hemos configurado anteriormente aquí, y la escala para la lámpara también es cinco, así que realmente no tenemos que cambiarla, pero podríamos hacerlo desde la función aquí si queremos. En primer lugar, vamos a dividir pegados. La razón por la que lo hacemos es porque no podemos editar todos estos nueve valores al mismo tiempo fácilmente. Entonces los dividimos, y ahora tenemos parámetros individuales que podemos adjuntar entre sí. Podemos simplemente poner en escala tal como es, pero necesitamos modificar nuestra ubicación y rotación. Entonces, qué podemos hacer por rotación tal vez quieras Oh, bien, solo agregaré el valor que quiero encima y tal vez incluso solo más. Pero puede notar que esto no funciona con la rotación. Si lo haces con vector, funcionará. Ahora bien, la razón es porque la rotación no suele ser solo un valor. Entonces la rotación de los actores es en grados y no en realidad valores flotantes, generalmente. Entonces lo que tenemos que hacer en cambio, vamos a poner esto aquí como es por ahora y vamos dividir más strtin y vamos a escupir strtin aquí Entonces, si le echas un vistazo a nuestros rotadores, aquí tenemos una rotación -180 para lámpara y 179, bueno, que en realidad es solo un error de flotación, 180 para nuestra Z. Pero si movemos a nuestro actor aquí y digamos, rotarlo Ahora es 90, 180 Entonces lo que queremos que sea es que queremos que sea -180 siempre, pero queremos que el eje sea modificable Entonces lo que vamos a hacer, vamos a mantener Y tal como está. No hay razón real para cambiarlo. Y para X, sólo podemos poner en el valor de -180. En cuanto a Z, vamos a agregar Y lo que vamos a agregar aquí es, echemos un vistazo. Si tuviéramos que revertir Z, esto va a mirar hacia arriba y tenemos que mirar hacia abajo. Así que hazlo 108. Puede que haya cometido un error, pero pronto lo sabremos. Entonces echémosle un vistazo yendo a nuestro nivel. Eso es por ahora. Y da click en esto y haz clic en Spawnctor Sí, he cometido un error. Puede notar que este es un valor incorrecto. Son los 90. El motivo es porque el valor predeterminado para esto es 90. Entonces debería haber calculado la diferencia entre ellos en su lugar, y para 180 y 00 cien 80. Entonces para que sea exactamente como quiero que sea necesitaría rotarlo extra. Necesito un extra de -90 grados. Entonces hagámoslo -180 y veamos cómo funciona ahora. Nuevamente, esto no es correcto. Estamos obteniendo la X correcta, pero aquí no estamos obteniendo la rotación correcta porque estamos sumando el -180 encima de Probemos -170. Compile, y probemos ahora. Eliminemos este y engendremos actor. Ahora es como debería. Entonces el tema fue que teníamos 90 grados positivos por defecto en este actor, y necesitamos que la diferencia entre este y este vector span sea 270. Ahora, volvamos y tratemos de hacer uso de este actor. Entonces, si quiero que todos los actores se alineen con este, necesito los ases para esto y ponlo aquí. Copiar y pegar. Y probémoslo ahora. Sí, es más o menos lo mismo. Ahora, para asegurarnos de que nuestros otros excesos también sean correctos, simplemente los copiaremos y los colocaremos hasta que estén uno encima del otro y después de eso, simplemente lo moveremos Ahora, sus puntos de origen son los mismos, y ahora podemos moverlo y hacer clic en Span actor. Ahora, es solo sector span, y está lleno de actor funcional que podemos usar. Ahora bien, todavía no es exactamente lo que necesitamos. Esto todavía significa que técnicamente será un poco más fácil que arrastrar al actor requerido cada vez, todavía significa que necesitamos arrastrar esta flecha por todas partes y repetir este proceso Hay una manera de hacerlo aún más fácil. Entonces ahora que podemos engendrar este sector en cualquier lugar que queramos, pongámoslo hasta aquí como punto de origen y modifiquemos más nuestro plano Es posible que hayas notado que tenemos este nodo de ubicación de transformación. Entonces, si ponemos aquí valor adicional, digamos que esto está en el eje Y actualmente. Entonces si pones eje Y adicional como digamos 500 unidades y presionas spawnctor lo engendramos Digamos que queremos generar 500 una lámpara cada 500. Unidades. Ahora echemos un vistazo a nuestro plano aquí. Tenemos esto aquí que es responsable de nuestra ubicación Y, ubicación del eje Y. Y lo que queremos que haga para el primer actor que se está creando, sea a los 500. El segundo estará en 1,000, tercero a 1,500 y así así, así sucesivamente y así sucesivamente. Eso significa que necesitamos sumar 500 a este valor cada vez que se repita, pero también necesitamos agregarle algún tipo de límite porque no queremos que suceda infinitamente Entonces lo que podemos hacer aquí, podemos presionar la tecla N y dar click en el plano Esto creará este nodo llamado D N, lo que significa hacer cierta cantidad de veces y esa cierta cantidad de tiempo es este valor por aquí. Lo conseguiremos y lo pondremos en un comienzo muy claro. Y este va a ser nuestro contador. Lo que vamos a hacer es hacerlo, digamos, por ahora tres veces. Y cada vez que lo hacemos, y el entero va a ser obviamente cero, uno, dos, tres. La razón por la que comienza con ceros con el entero y los enteros comienzan desde Y tenemos que asegurarnos de editar este valor, ¿verdad? Entonces vamos a dividir esta estructura, y vamos a obtener este valor multiplicar por 500 y ponerlo aquí. Lo que está sucediendo ahora es dependiendo de qué iteración de este proceso sea, tomará este valor, lo multiplicará por 500 y colocará a este actor en el valor de esa ubicación Entonces volvamos al nivel y veamos cómo funciona. Quitemos primero esta lámpara y hagamos clic en Spawn Actor. Ahora bien, puede notar que esto no funciona correctamente. Porque no tenemos esto volviendo a la. Este spa en sí no lo repite. Necesitas tener el final de Esto solo limita cuántas veces esto puede suceder. Entonces lo que vamos a agregar, vamos a agregar un nodo re root aquí para que quede limpio, y lo vamos a volver a poner aquí y vamos a mover esto para tener algunos sembolanos de organización, que podemos usar más en este proyecto Y ahora volvemos, compilamos, y vamos a eliminar esto ahora y pulsamos Spactor que tenemos ahora si echas un vistazo al valor de ubicación aquí, la diferencia va a ser exactamente 500 Ahora bien, esto es exactamente lo que necesitamos. Ahora, solo necesitamos tener algún tipo de cálculo sobre cuántos de estos actores necesitamos. Y digamos, sólo lo voy a hacer un globo ocular y digamos que quiero 15 Yo solo puedo hacer clic en 15 aquí, compilarlo, guardarlo por si acaso guárdalo también. Generar múltiples actores puede fallar tu PC dependiendo tu lógica que hayas puesto y las especificaciones de tus PC, actor de generación. Y creo que me negué correctamente. Sí, ahora tenemos 15 lámparas con una. Hay algo de brillo dando vueltas por las luces que creamos por los materiales que tenemos, que arreglaremos todo más adelante. Ahora, queremos que esto repita de nuevo pero esta vez en otras paredes, y podemos simplemente tomar a este actor que tenemos, moverlo por ahí. Y ahora esta vez lo pondremos aquí todo el camino del lado izquierdo. Ahora, cuando volvamos a hacer clic en este fondo, tendremos este spawn en esta línea específica Quizás te estés preguntando, Bien, ¿por qué engendró de esta manera y no en la misma dirección que la flecha en la hora anterior El motivo por el que esto sucede es porque mientras la rotación de este actor en el plano que hemos creado, controlamos tesis Es a partir del actor transformar. Estamos agregando forzosamente ubicación de transformación en un eje diferente Realmente no estamos usando ninguna direccionalidad sobre dónde debería desovar Podríamos hacer que suceda. Podríamos obtener la rotación actual del actor, obtener la rotación de la flecha, por ejemplo, y ponerla como valor. Pero lo único que estamos tratando de hacer aquí es hacerlas en línea recta. Y esta línea verde es el eje Y, y la azul es Z, y la roja es X, y nuestra gran flecha roja está en la X. Entonces, si quieres desovar en la X, todo lo que tenemos que hacer es realmente ponerla aquí, compilarla y presionar néctar de spa Ahora bien, la colocación de mi flecha es poco fluida. Así que vamos a ponerlo así de nuevo. A ver si se ven bien. Están bien. Y ahora lo que podemos hacer, podemos simplemente moverlo todo el camino hasta allí. Ahora, necesitamos rotar esto y asegurarnos de que ignores las fluctuaciones de luz. Esto se debe a los ajustes de claraboya y exposición. Y ahora, de nuevo, necesitamos que suceda en el eje Y. Pero esta vez, si lo hacemos así, compilamos y damos clic en Spawctor, se revertirá La razón por la que esto sucede es porque tenemos un valor positivo y pasamos del Y X positivo a uno negativo. Mis disculpas de uno negativo a uno positivo, mayor valor Entonces, en cambio, lo que puedes hacer es poner un menos aquí, compilar, como spactar y ahora tenemos luces Obviamente, no se colocan correctamente en este momento. Sí, mucho mejor. Y ahora hacemos exactamente lo mismo. Nuevamente, lo movemos por ahí. La razón por la que estamos rotando esto y moviéndonos es porque estamos obteniendo una rotación real de la rotación del actor. De esta manera no tenemos que volver a rotarlo cada vez. Y ahora volveremos a spactor, y obviamente, va a estar equivocado Necesitamos que ahora estén en el eje X. Entonces lo que vamos a hacer como antes, sólo vamos a mover esto de Xxxs y si lo intentamos de nuevo, bueno Entonces haciendo un guión de construcción una vez, y creo que extravié ligeramente estas lámparas, así que tengo que bajarlas manualmente Oh, no, hice la geometría un poco mal. Debería estar bien. Aquí no estamos buscando la perfección, solo estamos en un prototipo Y la mejor parte aquí es de hacer un guión de construcción, solo unos actores de spa como lo hicimos ahora es que el actor span sí no es necesario para permanecer en el nivel. Podemos quitarlo del nivel, y tenemos todas estas luces de actor blueprint puestas y ahora podemos ajustarlas. Entonces, antes de hacer eso, seleccionémoslos todos. Y me gustaría agregarlos todos a la carpeta. Luces. Y ahora sólo podemos entrar en cualquier plano. Lo sentimos, no ningún plano, da clic en cualquier plano de lámparas, saltamos directamente a él, y ahora podemos ajustar el foco Entonces ajustemos los valores. Podríamos hacer editables estos valores y hacerlo desde el editor, etcétera, pero podemos simplemente hacerlo también programas aquí Entonces hagámoslo. Veamos cómo se ve cuando lo hacemos de esta manera, compilar. Debido a que tenemos muchos vectores , puede tomar mucho tiempo compilar. Y vamos a reducir el rango de cono. Quiero que sean como focos y que sean 30. Yo también quiero que sean 30. Compilar. Mira cómo se ven ahora. Me gustaría rotar un poco este foco así que selecciona este foco específicamente y rotarlo. Veamos las caras aquí de esta manera. Entonces cuando ustedes siete grados, compilen con el momento, no quiero. Creo que aquí tenemos luz extra. Retirarlo. Sólo para comprobar si tienen alguna luz extra aquí. Nosotros lo hacemos. Y ahora tenemos la configuración de la luz tal vez incluso un poco más 60. Estas diapositivas ahora necesitan un poco más de radio. Entonces hagámoslo 35. Y en cuanto a una adherencia, hagámoslo 35. El núcleo interno puede ser Let's just one. El sufrimiento puede ser de 25. Compilarlo, volver atrás. Esto no es lo que quiero del cono. Volvamos a tal vez 25 y 2,500 deberían funcionar. Y ahora si juegas, hay diferentes colores, y deberían cambiar de color porque así es como los configuramos en nuestro plano anterior Ahora, echemos un vistazo a nuestro foco de atención, y cambié mis valores por 15 15 en la autentación de 2004 Y ahora tenemos este resultado donde tenemos focos, estos colores. Y ahora lo que voy a tratar de hacer es moverlos a medida que están moviendo la escena. Pero antes de eso, no me gusta que nuestro material sea de este color. Si tienes luces móviles alrededor, me gustaría tener mi material un poco más oscuro. Y tal vez esto sea un poco demasiado oscuro en primer lugar. Hagámoslo un poco más brillante pero no tan brillante. Para que podamos ver todo, pero no tener algunos cegando nuestros ojos No quiero sombras del sol, así que vamos a moverlas hasta llegar a la posición en la que estemos contentos. ¿Algo así? No. Este tipo de cosas solo te dan vueltas hasta que las consigas de la manera que quieras. Sí, esto es mucho mejor. Ahora, no quiero porque vamos a tener mucho color para las luces, no quiero que los colores choquen, así que voy a hacer que sea un color más oscuro. Y vamos a poner los roughnes a uno porque no quiero que el material brille demasiado. Hagámoslo de un color más oscuro para el que te avise, hagamos C azul. A ver. Azul oscuro. El primero. El segundo color puede ser mucho más oscuro. Quizás podrías hacerlo aún más oscuro. Guárdalo y échale un vistazo. Está bien. Y ahora presiona play. Ahora tenemos colores que son bastante fáciles de ver, y ahora quiero moverlos un poco. Entonces vamos a crear una nueva función para ello. Y hagámoslo aquí con una línea de tiempo. Entonces lo que vamos a hacer aquí es que vamos a crear una línea de tiempo, y vamos a agregar un nodo de secuencia aquí. Tendremos una secuencia. Vamos a hacer esto una vez, y vamos a agregar un nodo do once. Hacerlo una vez. Espera, disculpas. No necesitamos hacerlo una vez. Solo necesitamos cronograma. Tiempo Sí. Mis disculpas. No estoy seguro de por qué tengo que buscarlo tanto tiempo. Pero hagámoslo así para que no se interponga en el camino. Vamos a tener una línea de tiempo. Y esta línea de tiempo, la vamos a jugar desde el principio y vamos a después de que esté terminada, vamos a un retraso de, digamos, 1 segundo y lo volveremos a jugar. Ahora, vamos a hacer una obra de teatro. Entonces la razón por la que vamos a hacer esto, vamos a agregar una pista, y vamos a agregar una pista vectorial. Y vamos a ser un poco creativos con la línea de tiempo. Así que podemos tenemos ahora Z, X e Y, y vamos a hacer algo bastante diferente. Vamos a crear una variable y vamos a aleatizar estos valores la 20. UE5 FC07 06: Ahora bien, si echamos un vistazo a esta línea de tiempo que acabamos de crear, tenemos algunos vectores que podemos poner aquí, y podemos transferir estos vectores a nuestra rotación de focos de luz para movernos alrededor de las luces Pero debido a que esto es solo un conjunto de valores que pones en ellos serían los mismos cada vez. Así que cada vez que terminaría la línea de tiempo. Jugaríamos desde el inicio o donde se detuvo la última vez, y volverá a comenzar. Esto no es lo que quiero para este nivel. Quiero que las luces se muevan un poco en ciertas direcciones al azar y retrocedan. Entonces vamos a cambiar la forma en que usamos nuestra línea de tiempo. Abriremos nuestra línea de tiempo, y eliminaremos esta pista que acabamos de crear para vectores verte y agregaremos una pista flotante. Y esta pista de flotación estará entre digamos por ahora, mantengámosla como está. Vamos a llamarlo Alfa. Vamos a compilarlo, volver a Gráfico de eventos. Y ahora tenemos un valor flotante que no va a ninguna parte en este momento. Vamos a hacerlo Vamos a ponerlo en Vamos a hacerlo. Las luces giran durante 8 segundos, y en 8 segundos, el valor pasará de los clics de cambio de unidad. El valor pasará de cero, 28. Ocho segundos. Marca de ocho segundos, vamos a ir a ocho. Y vamos a asegurarnos de que lo tenemos configurado correctamente. Sí, tenemos está configurado correctamente. Entonces cambiamos clic en él en el punto clave a cero valor de tiempo cero a a 8 segundos valor uno Entonces ahora este nodo Alfa aquí nos está dejando poner el valor 0-1, y el valor irá 0-1 en 8 segundos Bueno, vamos a quitar estas líneas para mantenerlo organizado. Y vamos a agregar un nodo arp vector. Así vector arp. Y aquí vamos a poner nuestro Alfa. Ahora bien, para explicar lo que hace arp, función arp va esencialmente del valor A al valor B gradualmente dependiendo del valor Alfa Alfa suele ser un valor 0-1. Y a cero, es A, a la una, es B. Y esto es útil cuando se usa esta línea de tiempo para cambiar gradualmente la ubicación o rotación o cualquier cosa realmente. Quieres hacerlo a lo largo del tiempo sin usar eventi. Como eventi es, en primer lugar, no será tan suave como usar LAP Y en segundo lugar, es más rendimiento. Entonces vamos por ahora, pruébalo , vamos a tener un valor. Jugaremos desde el principio e imprimiremos cadena de este valor. Oh, no, no podemos predecir. Tenemos demasiadas luces en la escena. Entonces, en cambio lo que vamos a hacer, vamos a mover las luces. Ahora, necesitamos obtener rotación, pero por mi error, cometí un vector larp Vamos a arreglar este rotador arp en su lugar, ya que vamos a trabajar con Y vamos a conseguir la rotación del foco. No te disculpes, mis disculpas. Establecer rotación. Establecer rotación relativa, creo, es la correcta. La diferencia entre una rotación relativa y una rotación mundial es que la rotación relativa a su padre sería la rotación del foco en relación con la malla estática. Pero la rotación mundial sería es rotación en el mundo mismo. Puede ser un poco complicado de entender de inmediato, pero es justo lo que es. Necesitas probarlo las diferencias a medida que usas irreal, así que vamos a poner esto aquí Entonces, qué va a hacer esto, obtendremos un valor entre cero y B y el Alfa lo hará por nosotros, rotará lentamente. Ahora, por ahora, pongamos valores fijos. El valor de foco actualmente es de 90 Y, y el resto de ellos es cero, cero. Digamos que queremos que esto vaya 90-30. Lo compilaremos, lo guardaremos, volveremos al nivel y presionaremos play. No está pasando nada. Ahora bien, la pregunta interesante es que no pasa nada porque no estamos cambiando el valor o Interesante. Vamos a parar. Sí. El tema es que actualmente los focos no son móviles. Así que volvamos, haga clic y movible. Ahora esto es más pesado computacionalmente, pero por lo que estamos tratando de hacer Ahora tenemos focos que se mueven por ahí. Como desaparecieron porque no tienen suficiente radio, podemos aumentar ese radio con bastante facilidad. Entonces vayamos a viewport. Y actualmente tenemos 2000. Hagámoslo 8 mil por ahora, resto compilar, volver. Veamos cómo funciona ahora. Y veamos cómo se configuran las luces actualmente. Así que estamos recibiendo esta luz rara. Nuevamente, es principalmente por la forma en que se gira. Ahora echemos un vistazo a nuestras luces y veamos por qué empiezan a suceder estos artefactos raros. No obtenemos la sombra adecuada. Entonces, cuando giramos esto, la luz misma, es una multa, pero en realidad estamos rotando solo el foco del plano En realidad no giramos la lámpara. Entonces cuando hacemos esto, obtenemos un corte y la razón de ese corte es porque la luz está colisionando con la malla, y nos está dando este extraño Para evitar esto, podemos modificar los canales de luz, etcétera, para no chocar con la luz de la malla, ignorarla en los canales de luz, y tal vez incluso podamos crear una nueva malla que no nos dé este problema Pero la forma más fácil de hacer correcciones es ir al centro de atención, moverlo un poco fuera de la malla, guardar y prespy Y ahora, vamos a tener este tipo de gama. Ahora bien, está cubriendo completamente toda el área, que es exactamente lo que quería. Pero no queremos que esto suceda cada vez exactamente de la misma manera. Lo que vamos a hacer ahora, antes que nada, voy a organizar esto un poco. No me gustó lo desordenado que está. Y vamos a tener este lenode y vamos a mover todo esto hacia abajo. Spotlight aquí. Ahora bien, el valor que obtenemos del que ponemos con fuerza es ubicación original o rotación de la luz, que es 90, y la reducimos a 30 para moverla por la escena Pero si quisiéramos dar el rango más amplio, necesitamos cambiar también otro valor. Entonces, si lo pones así y aumentas rotación en el eje Z, también podemos darle movimiento de izquierda y derecha. Entonces veamos ahora, la rotación que nos gustaría darle es entre 90 y -90 Entonces tenemos un rango de rotación. Entonces, lo que podemos hacer, podemos dar una rotación Z menos, por ejemplo, y una rotación P 90. Nuevamente, esto no es definitivo. Sólo lo estoy haciendo para una demostración. Y si presionamos play, ahora tenemos luces giratorias. 21. UE5 FC07 07: Aquí tenemos nuestra luz, y queremos sustituir todas nuestras referencias de esto por esta. Entonces lo que podemos hacer es ir a nuestras lámparas, seleccionarlas todas, hacer clic derecho y reemplazar a los actores seleccionados con BPight Podemos copiar propiedades o ignorarlas, vamos a no vamos a copiar propiedades, así que solo vamos a hacer clic en esto, y vamos a reemplazarlas. Le daremos un segundo, y ahora los tenemos a todos reemplazados. Todos están escalados con demasiado. Entonces, bajémoslos. Hagamos una báscula Y ahora todos ellos también están escalados de manera. También me gustaría hacerlas un poco sí, vamos a poner un poco de ella abajo y cambiemos. Sin rotación, reinicio de rotación. Además, vamos a rotar 90 grados -90 grados. Y ahora tenemos todas nuestras luces recién reemplazadas, y podemos probar nuestra lógica de cubo nuevamente. Pongámoslo de esta manera y volvamos a seleccionar nuestras luces. Y podemos simplemente dar clic en Target y apuntar a este cubo. Presiona play. No pasa nada ya que eliminamos Incluso tick de esto. Vamos a agregarlo por un segundo. Descansarlo, compilar, guardar, guardar también. Ahora, todas las luces de nuestra escena siguen a este cubo. Lo cual es bastante bonito. Ahora, vamos a dejar esta eventiq estas notas solas por Esta es nuestra función para seguir el objetivo. Vamos a agregarlos todos bajo un solo comentario. Seguir objetivos. Lo vamos a mantener así por ahora. Y vamos a volver a nuestro plano de lámpara y comenzar a copiar alguna funcionalidad Eliminemos esto ya que no lo necesitamos. Vamos a necesitar esto para luces aleatorias como tales. Vamos a usar esto. No deseo usar array para ello, ya que usaré enteros aleatorios, valores flotantes para ello en su lugar. Entonces voy a copiar esto y ponerlo aquí. Si compilo, obtendré algunos errores, crearé variable, crearé variable nuevamente, compilaré nuevamente. Ahora es trabajo como se supone que debe hacerlo. Y ahora sí tenemos un foco, así que esto solo obtiene valor de nuestro foco aquí ya que comparten el nombre. Y vamos a probar esto y ver cómo funciona. Desde el inicio del evento comienza a jugar, no hay valor aquí actualmente, así que vamos a agregar algo pronto, vamos a presionar play. No está pasando nada. En realidad no. Las luces solo están buscando en un lugar extraño. Entonces hagámoslo flexionar esto. Entonces se supone que es -90, veamos. Nuestras luces son Interesantes. Oh, si no lo tienes pegado al plato de inicio de Evan. Mis disculpas. Esta no es la correcta. Sigo mezclando el plano de la lámpara con uno nuevo. Vamos. Todavía no funciona como debería. Entonces echémosle un vistazo. Fuimos a jugar la línea de tiempo. Y en la línea de tiempo, estamos haciendo algo mal yendo directamente a este valor, se suponía que íbamos a ir a establecer la rotación relativa. Después de eso, yendo a ese valor vamos a jugar. Bien, ahora están mirando todos hacia abajo. Aún no tenemos colores aleatorios ni lo que sea configurado, así que vamos a arreglarlo en un segundo. Y tenemos nuestra línea de tiempo, nuestro retraso. Esto está desorganizado demasiado, y lo hace más complicado de lo que debería, así que vamos a organizar esto un poco Cambiemos toda esta colocación de la misma. Agreguemos un comentario encima de él ahora y lo llamemos lo al azar mover pero. Vamos a compilar esto, y ahora lo tenemos organizado. Vamos a dividir este pin de estructura, y vamos a aleatorizarlo Ranura aleatoria en rango. X, como nos enteramos anteriormente, no importa demasiado para las luces. Mm. Ahora, busquemos nuestros valores. ¿Qué? Seleccionemos los valores de los descansos de foco solo en caso de que también podamos seleccionar todos los planos, ya que pueden tener la verificación de que la actación es correcta para todos Y nos aseguraremos de que nuestros focos sean Nuestros focos aquí unas rotaciones raras Vamos a arreglarlos también. Lo arreglamos desde el plano Lo arreglaré para todos ellos. Así que solo asegúrate de que no tenemos rotaciones aleatorias raras. Vamos a hacer clic en el foco para probarlo y echarle un vistazo. Y X claro como los XXs importan también, y Z importará cuando lo estemos tomando de cero Entonces todas nuestras Xs importan en este caso, como debería. Ahora la pregunta es ¿cuánto es el rango que queremos que tengan? Entonces digamos que esto es que no quiero que la lámpara tenga más de 40 -40 o cero. Ahora, -90 y 40. Entonces para el eje Y, que es este, mínimo debe ser -90, MX debe ser -40 Vamos a restaurarlo. Por nuestro valor X. Nuevamente, hagamos 40 y -40. No quiero que tenga demasiado rango ya que hace que las luces se difuminen entre sí -40 y y en cuanto al entre sí -40 y y eje Z, es de 180 grados más o menos. Entonces vamos a hacer -90, sigue siendo positivo 90, es solo rotación gradual, y lo queremos solo de un lado, así que estamos limitando el rango Entonces ahora, guarda todo por si acaso, espía. Tengo luces moviéndose al azar. Mira lo que está pasando con nuestros focos aquí. Tenemos dos. Veamos, asegurémonos. Este es un valor de cero en este momento, luz, foco y tal Esto es cero, y es -90 y más 40 ¿Nos equivocamos con YXS? Menos oh, oh, este es el tema. -40 a -90. Cometí un error de poner peso. Esto debería ser correcto, creo. El número que queremos está entre -90 y -40. Volvamos a probar. Interesante la forma en que se mueven fuera de las radios. Z está bien. X. También está bien. Estoy adivinando que es una combinación de tres valores aleatorios que está creando este problema Entonces si pones X en cero a No, cero, no. Así que tal vez vamos a asegurarnos de que no podemos ni siquiera entrar en -90. Hagámoslo menos digamos cero. Cero puede ser demasiado. Entonces digamos menos y obtener un valor que esté bien. La razón por la que algunas de las luces empiezan a salir es por la forma en que Spotlight está obteniendo sus números. Entonces, si copia este número, pega, y da clic en Spotlight y pega este número, vamos a obtener el mismo valor, y el valor X no es la razón. El valor de Y es. Como pueden ver, ahora copiamos este valor porque a diferencia de los actores de luz anteriores, estos actores comparten la forma en que se les da forma. Y la forma en que implementamos a nuestro actor esta vez hace que sea difícil salir a la calle usando los mismos parámetros. Entonces lo que tenemos que hacer es que tenemos que manejar el eje Y. Hagámoslo de esta manera. Tenemos los ejes X y Z para nuestras Shenanigans. Entonces si pones eje Y a 50, por ejemplo, estoy seguro que ni siquiera funcionará correctamente. Nuestro foco va 50, que es 50 todo el camino arriba en el cielo. Entonces hagámoslo -50. Compile y presione play. Nuevamente, -50 en esta parte de la escena está todo el camino ups. La única forma en que realmente podemos arreglar esto es yendo a nuestro centro de atención aquí. Nos separamos. Cambiamos la rotación a cero, tendremos mirando hacia arriba, que no es lo que queremos. Y si lo eliminas de la propia malla , compila y restablece. Ahora, debido a que lo eliminamos de la malla estática, ya no toma en la rotación de la malla estática. Entonces ahora están en cero. Entonces probémoslo ahora. Ahora tenemos el tema de que ellos vayan sólo en dirección negativa, así que vamos a volver a nuestro centro de atención y ver los valores que necesitamos ahora. El valor -60 en este lado está dentro. Y si nos fijamos en esta ubicación, ahora, positivo 60 está dentro. No queremos que aleatoriice demasiado y salga de los límites en el eje Y. Entonces, en cambio, lo que podemos hacer es que podemos hacer un valor en el medio. Dos ejes y tenerlo menos cert y cert. Vamos a compilar esto y jugar. Esto tendrá. Si bien habrá algunas luces que van afuera solo porque la forma en que funciona el aleatorizador Esto está bien. Vamos a reducir el tope de valor para todos ellos ya que no queremos que salgan demasiado de los límites, e incluso voy a reducir esto a 20 y 20, ya que preferiría que recordaran dentro la x está bien ya que es solo rotación sobre los cien 80 grados Y vamos a tener estas luces raras dando vueltas, algunas de ellas apagándose, lo cual está bien. Como puedes ver, simplemente van por ahí al azar. No es la solución más ideal, obviamente, pero está bien. También podríamos agregar funcionalidad adicional para hacerlos apuntar solo a esta ubicación en el medio, pero eso requeriría que hagamos muchas matemáticas vectoriales complicadas, lo cual no vamos a hacer En este caso, también podríamos hacer cálculos basados en el vector forward. Entonces, por ejemplo, podríamos hacer que calculen su vector forward y solo apunten en la ubicación donde están mirando, pero eso no es lo que vamos a hacer en este caso. Ahora, vamos a probar esto. Tenemos nuestro cubo seleccionado, y ahora vamos a conseguir el evento B y jugar. Y aquí, por ahora agreguemos tick de evento y veamos cómo funcionaría. Y funciona como debería, aparte de esta luz, creo, y esto es porque modifiqué sus ajustes de luz, y olvidé volver a ponerla ésta también. Asegúrate de tener en cuenta qué actores has modificado. Tener esta modificada, que no funcionaba correctamente, y esta, que no funcionaba correctamente. Y ahora, todo debería estar como es. Ahora, esencialmente hemos terminado con la colocación de luz aleatoria, lo cual está bien por ahora. Aquí vamos a agregar una secuencia, y esto será 01. Para cero, vamos a agregar nuestro color aleatorio. Vamos y comencemos a jugar y en cero, teníamos habilitada esta función de cambio de color aleatorio. Entonces vamos a copiar esto y volver a copiarlo aquí. Cuando estés copiando función, te pedirán crear o no hacer nada. Nosotros lo creamos y vamos a tener esto en la cima. Lo vamos a poner aquí. Quita esta nota por ahora. Tenemos esto primero y tenemos nuestra sucursal. Vamos a crear esta variable ya que la necesitaremos más adelante. Cambiaremos el nombre más adelante. Y tenemos esta funcionalidad de color aleatorio incorporada y compilada por si acaso. Asegurémonos de que nuestras variables estén nombradas correctamente. La rotación con rotación relativa, tenemos objetivo. Las plantas no son necesarias. Compile, y echemos un vistazo a nuestro nodo de color aleatorio. Y echemos un vistazo a nuestra función polar aleatoria aquí. Tenemos esto, que sólo vamos a copiar. Probablemente podrías copiar todo y volver a ponerlo aquí escala. A su vez, retire de nuevo en. Vamos a crear esta variable, crear color de luz variable. Compilar. Volver a la luz puede cambiar de color, establecer color claro, amapola, ir a ser educado Esa función de cambio de luz, ese color claro, pila pop que va a poner su. Ahora vamos a probarlo. Y está funcionando. Y tenemos un cambio de color aleatorio cada pocos segundos como lo habíamos hecho anteriormente. Las luces que van fuera de límites es aunque molesto no afectará tanto a nuestra jugabilidad porque vamos a tener una funcionalidad de luz adicional, lo que hace que la luz siga a ciertos actores Ahora, teníamos esta funcionalidad aquí para cierre de puerta abierta también Vamos a copiar esto, pero vamos a reutilizarlo más adelante Cambie la función y no pudimos copiar el retraso. Sólo podemos agregarlo nosotros mismos. No podemos. Mis disculpas. No podemos porque está en la función. Tendremos que añadir ere. Y comentemos esta sección también. Color aleatorio. Hagámoslo morado. Tesaro color aleatorio Y ahora tenemos evento de puerta abierta y evento de puerta cerrada, pero voy a cambiarles el nombre. Uno de ellos será objetivo localizado. El otro será Target score. Y vamos a cambiar esto es dos. Veamos cuál sería el nombre correcto para un objetivo que se genera Target. Llamado blanco engendrado. Y vamos a tener esto. Por ahora, vamos a dejarlo en esto. Vamos a reutilizar más adelante esto ahora, tenemos nuestro sistema para la luz Vamos a seleccionar un Speedbard, presione play. Y desde la vista en primera persona, esto se ve bien. Hay algo de luz dando vueltas en la escena, y tenemos nuestro cubo en el medio. Una de las cosas que quiero hacer ahora es que la luz apunte a nuestro personaje cuando el personaje se mueve. Entonces vamos a agregar un nodo I. Y si el objetivo está cerca, la luz seguirá al jugador objetivo. Y si el objetivo no está lo suficientemente cerca, vamos a aleatorizar la luz Entonces, si recuerdas este objetivo que teníamos, eliminemos este nodo objetivo de aquí ahora. O para ser más específicos, necesitamos agregar un nodo actor conjunto, establecer nodo objetivo. Así que vamos a establecer el nodo de destino. Y vamos a configurarlo a necesitamos un insumo aquí. Vamos a ponernos en personaje de jugador. Entonces, por ahora, hagamos esto de esta manera. Cuando los eventos comiencen el evento comienza el juego, vamos a establecerlo en nuestro objetivo. El tick del evento hará que la rotación del actor siga. O ahora vamos a eliminar la línea de tiempo. Y presiona play. Entonces comienza el juego, obtenemos todas las luces enfocadas en el personaje del jugador. Esto no es lo que queremos. Queremos que sólo las luces más cercanas estén entre, digamos, las 500 unidades más cercanas para seguir al actor. 22. UE5 FC07 08: Ahora bien, la forma en que calculas la distancia entre dos actores en los tres mundos es por vectores. Entonces, lo que tenemos que hacer para esto es vamos a conseguir el personaje del jugador. Lo tenemos aquí. Entonces, sólo por ahora copiémoslo. Y vamos a obtener la ubicación del actor. Copia esto de nuevo, coloca esto y aquí. Y vamos a restar uno de otro y obtener vector Oh, no necesitamos enlaces vectoriales vectoriales. Así que vamos por ahora, imprimir cadena este valor. Y pongámoslo en un ventiq ahora. Compilar, guardar, res play. Oh, mis disculpas. Tenemos que asegurarnos de ponerlo en la cadena, no en la duración. Compile, presione play. Entonces como puedes ver, las luces están calculando la distancia entre el personaje y ellos mismos. Y la unidad más cercana que puedo ver aquí es como mil 400. Ahora, lo que podemos hacer es que tenemos este valor que estamos obteniendo. Y si este valor es menor, h entonces digamos 2.500 o incluso digamos 2000. Es cierto si este valor es menor a 2000 en eventi, hagámoslo de esta manera Si es cierto, haremos que las luces sigan al personaje presione play. Ahora ves que tenemos luces que nos están siguiendo, y si nos movemos, las luces más cercanas nos siguen instantáneamente. Y cuando salimos del rango, como la distancia se vuelve ahora da un valor de bulling cae, ya no nos sigue. Obviamente, no queremos que sea instantáneamente sobre nosotros. Usaremos una línea de tiempo para ello en un momento. Pero por ahora, esto está bien ya que solo estamos probando el sistema de focalización. Nuevamente, me estoy dando cuenta de que aquí tenemos una luz que yo twix valora Vamos a restaurar esto, guardarlo, y otro aquí. No estoy seguro de por qué ajusté tantos valores, pero esto es lo que es Asegúrate de limpiar después de editar los valores con fines de prueba, y no lo hagas como yo. Ahora bien, esta lógica funciona. Podemos obtener la ubicación, distancia, actuar distancia para ser claros. Pero no queremos que sea en Aventi Esto está bien. Y lo que necesitamos ahora es una funcionalidad de seguimiento adecuada. Vamos a ampliar esto un poco y tener todo dentro, y agreguemos algo de espacio extra para que podamos trabajar. tema que tenemos ahora es ¿ cuándo deberíamos obtener este cheque y cuándo deberíamos empezar a obtener la rotación y cómo? No queremos hacerlo con los eventi, ya que es muy performance en En cambio, lo que podemos hacer es comprobarlo en lugar de cada fotograma cada pocos segundos. Y la forma en que podemos hacerlo fácilmente, podemos hacerlo entonces la secuencia aquí y de hecho evitar que esta línea de tiempo suceda. Segundo, eliminemos esto. Claro. Entonces vamos a conseguir esto tan bien como lo vamos a necesitar más tarde. Tenemos estos colores aleatorios que no siempre activaremos, así que no vamos a tocarlo, sino que solo queremos que esto se active. Hagamos estos segundos afuera si no hay objetivo de jugador. Entonces puedes poner aquí un nodo de sucursal y ejecutarlo por la rama. Y si es falso, vamos a tener esta función como antes. Y si es cierto, vamos a dejar esto a la sección inferior donde vamos a seguir al personaje del jugador. Ahora bien, la forma en que podemos hacer esto es dejarme ponerlo de nuevo en el valor aquí en lugar de tener dos ramas, es innecesario. Agreguemos una línea de tiempo. Y esta línea de tiempo no puede funcionar de manera similar. Vamos a tener un rotador larp Y vamos a tener nuestro Alpha establecido aquí y encontrar mirada a la rotación. Nueva rotación será ésta y la rotación de actores. En este caso, queremos que la luz siga completamente encendida, no sólo el foco. Como tal, cambiemos algunos parámetros aquí. Solo estábamos moviendo el centro de atención. Pero con nuestra nueva luz, podemos mover toda la luz misma. No nos limitamos a nuestro centro de atención, así que asegurémonos de arreglar esto antes de seguir adelante. Este parámetro relativo está bien, pero debería ser solo rotación, no relativo. Y vamos a conseguir la ubicación de los actores. Rotación de actores. Obtener rotación Actor. Vamos a poner a estos actores en rotación. Vamos a aplicar. Ellos lo van a establecer, y vamos a al final, no rotar el foco ya que no hay una razón real para hacerlo solo con spotlight, vamos a copiar esto de nuevo y establecer rotación de actor de rotación, y actor mismo, obtenemos un nuevo valor de rotación y actualizamos esto. Ahora probémoslo de nuevo, presiona play. Las luces se mueven como deberían. Algunos de ellos permanecieron en el lugar porque teníamos el nodo sucursal. Nos movemos por aquí y las luces a las que estamos más cerca no se moverán. Pero la lista de la misma está funcionando como debería. Vamos a echar un vistazo mediante el uso de simular y ver cómo se enciende. Sí, se están moviendo. Todos. Bien. Ahora bien, tuvimos un error y este modo de error porque estábamos tratando de acceder al personaje del jugador y el actor jugador no existía cuando estábamos simulando, lo cual está bien Realmente no lo necesitamos durante las simulaciones. Y aquí, cierto, probémoslo en verdad. Esto va a desencadenar aquí. Nuestra segunda línea de tiempo se activará. Y esta línea de tiempo puede ser más corta. Entonces hagámoslo 1 segundo. Y el valor para ello puede ser uno también. Queremos que las luces reaccionen instantáneamente el jugador estando cerca para mostrarle que lo bañe de luz. Y tenemos este nodo larp, que ahora está calculando la ubicación del actor y la ubicación de los objetivos, y estamos fijando nuestro objetivo como personaje jugador, que es lo que vamos a hacer Entonces, si la longitud del vector entre está lo suficientemente cerca, vamos a establecer nuestro objetivo Después de establecer nuestro objetivo, vamos a jugar desde el principio. Vamos a larp nuestra rotación actual que haremos por la justicia Al establecerlo, obviamente, vamos a establecer nuestra propia rotación. Y esta rotación se utilizará para acecho a medida que nos movemos a lo largo de la línea de tiempo, esencialmente estamos haciendo exactamente lo que hicimos aquí, pero con solo algunos ligeros cambios Entonces vamos a hacer esto de esta manera. Ahora, vamos a probarlo. PlesPlay y no está funcionando como debería Tenemos nuestros Alfas, tenemos nuestra obra de principio. No tenemos nuestras actualizaciones. Esto se debe a que aquí no agregamos este nodo. Tenemos que actualizar esto, y probablemente también deberíamos, si cuando termine, agregar volver al nodo de sucursal en la parte superior. Presiona play. Ahora bien, es bastante raro. No estamos obteniendo los valores adecuados, y como pueden ver, las luces en la parte superior van en una dirección extraña. Echemos un vistazo a lo que está pasando aquí. Estamos consiguiendo rotación de actores por lo que me refiero a yo mismo, y estamos obteniendo la ubicación entre yo y B. Pero lo estamos actualizando cada fotograma, que no es lo que queremos. Queremos establecer la rotación o RB. Sólo podemos copiar este valor. Y ponlo aquí. Pero recombinar pin de estructura. Pon aquí el valor del ritmo. B valor de rotación aquí, juega desde el principio, ponle el valor a B. Organicemos esto un poco más. Hay demasiados códigos de espagueti. Devolver valor en esto. Compilar, guardar, es jugar. Ahora, a medida que nos movemos, cuando ya no estén lo suficientemente cerca, se aleatorizarán ellos mismos Mientras están cerca de nosotros, por ellos, me refiero a las fuentes de luz. Ellos comenzarán a reaccionar. Ahora bien, el tema es que las luces que están en medio de la rotación aleatoria no volverán a dispararse y echarnos un segundo vistazo. La razón por la que esto está sucediendo es porque la forma en que configuramos nuestro nodo sucursal. Nuestro nodo sucursal comienza aquí, y nuestras luces aleatorias lo están comprobando no cada segundo, cada 8 segundos porque la forma en que se configura nuestra línea Entonces ahora tenemos un pequeño problema donde necesitamos interrumpir este proceso en el medio y activar este nodo de rama para verificar si va como debería o simplemente debería seguir. La forma en que podemos hacer esto es que podemos llamar a esta otra rama en el medio aquí. Realmente no me gusta cómo se ve este código de paquete, pero lo dejaremos por ahora. Lamentablemente, no podemos convertir nuestras líneas de tiempo en funciones. Ahora, tenemos esta luz que se está actualizando cada segundo, cada fotograma, en realidad. Entonces una vez hecho esto, después de cada actualización, podríamos volver a verificar nuestra sucursal Vamos a compilar y a ver qué pasa. Creó un bucle infinito. Como tal, esto no se puede aplicar. Los bucles infinitos se estrellarán instantáneamente en tu PC. Entonces necesitamos llegar a una manera que no esté generando bucle infinito, y la forma más fácil de hacerlo es obtener un nodo de retardo. Al final aquí, consigue que se desencadene cada 1 segundo. Podríamos hacerlo más bajo, pero esto debería estar bien. Y ponlo en la sucursal. Compilar, jugar. Porque ahí hay un nodo de retardo. Esto ya no es un bucle infinito ya que no se dispara infinitamente cada segundo Entonces ahora estamos apuntados y cuando ya no somos blanco, ellos mismos se aleatorizan, o al menos deberían Veamos qué está pasando. En el centro del mapa, no debería poder apuntarnos. Veamos qué pasa. Las luces ahora están aleatorizadas Pero debido a que no les dimos un gran rango para la aleatorización, las luces se mueven en el último lugar donde caminamos Entonces están tratando de seguirnos, y después de que terminen de mecanizarnos, solo están tratando de ir en esa dirección. Entonces, en cambio, lo que vamos a hacer es que vamos a editar los valores el rango aleatorio. Y la forma en que tenemos estos valores, aquí, ¿verdad, correcto? Tenemos estos valores aleatorios en el rango de flotación, en los ejes Y y Z. Pero lo que es más importante es, como, ¿son ejes? Como este es el responsable de ser más claro, Y y X Xs son los encargados de que las luces salgan demasiado de campo. Esa es la razón por la que reducimos su valor de rango de flotación aleatorio. Ahora, tenemos que encontrar una manera de asegurarnos de que lo que acaba de suceder no suceda. Lo que pasó aquí fue que conseguimos su rotación de actor, y después de que establecimos su rotación de actor, esta A aquí se convirtió en su nueva rotación de actor. Como esta A es su nueva rotación de actor, no se están reiniciando a sus parámetros iniciales Como tal, lo que podemos hacer es simplemente en lugar de obtener rotación del actor cada vez, o para ser claros, cuando terminemos con esta rotación, podemos volver a ejecutar un nodo de rama en la misma rama. Como no me gusta la forma en que se configura esto, solo vamos a proposicionar esto otra vez, vamos a copiarlo, poner una versión de ello aquí abajo, vamos a agregar nodo de rama, y vamos a probar lo mismo si es cierto, si es falso, y esto se acaba, cuando transcurra el 1 segundo al apuntar al personaje Si esto es falso, ya que ya no está en rango y cuando está en rango, si está en rango, solo vamos a restablecer todo aquí en la capa inferior. Y si es falso, lo que vamos a hacer es que vamos a restablecer la rotación para A, que pueda comenzar desde su punto inicial. Entonces, la rotación inicial para nuestro foco es cero, cero, cero. Podemos hacerlo exactamente igual, así podemos simplemente establecer nuestra rotación. Aquí en 000, y esto debería ser todo lo que tenemos que hacer. Después de eso, podemos simplemente enchufarlo aquí. Ahora, veamos cómo va a funcionar esto. Tenemos todos ellos disparadores sobre nosotros. Se mueven, pierden su objetivo. Y después de que pierden su objetivo, no están funcionando correctamente. Siguen siendo bastante muy altos. Y la razón es porque tomé la rotación del foco en lugar de malla real, que estamos usando, debería ser -90 Siempre asegúrate de verificar tus valores Y vamos a intentarlo de nuevo. Lo estamos haciendo de nuevo. En el momento en que pierdan los objetivos, deberían volver a sus valores iniciales. No deberían ser interesantes. Nuevamente, ellos hacen lo mismo. Si siguen correctamente el objetivo, pero son demasiado. Oh, este es otro tema que tenemos porque cambiamos los valores más adelante. Inicialmente, el rango de luz se calculó a partir del foco. Nuevamente, tengo pocos focos aquí que he tocado y no he restaurado Siempre limpia después de tus pruebas para no terminar en una situación como esta. Esto es bastante común, pero sin embargo, no es una buena práctica no limpiar. Vamos a restaurarlo. Y tenemos nuestra malla que lo siento, lo es el actor, que está siendo rotada por completo. Entonces, si nos fijamos en nuestra rotación menos xs, esto va todo el camino de regreso. No lo queremos. -90 a así que ahora tenemos puedes echarle un vistazo, también Tienes menos nueve. T la rotación original para este actor es de 180. Y. yo cero, cero, otra vez, esto son todos los temas de mis pruebas que no he limpiado previamente. Esta es más correcta. Entonces tenemos la misma situación aquí. Tienes un eje X que va todo el camino negativo. Tenemos cero y otra vez cero. No estoy seguro de por qué. Apertura Kips. Y aquí tenemos este tema. Nada de esto realmente importa demasiado. Como si solo simuláramos, estamos obteniendo un resultado similar al que teníamos anteriormente. Ahora, el mayor problema es cuando el jugador no está en el nivel, así que lo que podemos hacer es agregar un nodo es válido. Entonces tenemos lo que podemos hacer es que podemos agregar un nodo es válido. Entonces, si el objetivo es válido, lo que podemos hacer en cambio es si el objetivo es válido, no es válido, simplemente continuamos aquí. Si es válido, vamos a sucursal. Esto es temporal, ya que no quiero obtener el mismo error cada vez. Sólo vamos a revisar las luces de nuevo, asegurarnos de que estamos haciendo todo correctamente. Las luces se mueven demasiado en ciertas direcciones. Nuevamente, el mayor problema, Z va muy alto en número, mientras que solo debería permanecer en -90 Vamos a descontrolar. Ya no necesitamos esto . Probamos así que lo necesitamos y nos aseguramos de que el problema no fuera. Entonces en lugar de tener estos valores muy altos, vamos a tener mínimo de -90 y máximo de -60 Veamos qué pasa ahora. Se están moviendo muy cerca del rango. Entonces, en cambio, hagámoslo un poco más. Hagamos positivo por cinco. Juguemos. También podríamos simplemente tomar el término medio y hacerlo de 45 a -45, que lo aleatorizará en todas direcciones por Lo cual está bien. Ahora, volvamos a jugar esto, a ver cómo funciona. Y después del momento, pierden la direccionalidad. Deberían volver a cómo deberían funcionar previamente. Mm hm. Entonces veamos qué está pasando aquí. Tenemos nuestra estación. Entonces en el momento en que esto se termine, lo comprobamos si estamos más allá del rango de 2000 ya que cuando esto es falso, et's simulan esto y un vistazo a lo que está sucediendo aquí. Seleccionemos esta luz, que es el número 28. Ampliemos esto y presionemos play. Y para nuestra depuración, actor, seleccione 26. ¿Qué está pasando ahora? Esto es solo repetirse, establecer su propia rotación después de que haya terminado, y se cree el retraso. Oh, bien, este es el tema. Nunca llegamos a la nota final ya que esto siempre va todo el camino de regreso y creando este tema donde siempre está jugando constantemente Bien. Como tal, lo que tenemos que hacer es que tenemos que hacer que este retraso realmente suceda. Lo siento, el pin de ejecución de este retraso no va hasta el final y simplemente va por el camino correcto. Entonces lo que podemos hacer es, entonces tenemos esto. Cuando esté terminado, tenemos este retraso, y cuando tenemos esto, obtenemos la rotación real establecida, y necesitamos después de que todo esto haya terminado, verificar el nodo de sucursal. En lugar de redirigirlo hacia arriba todo el camino de regreso, lo que podemos hacer es agregar nuevamente este nodo de sucursal. Y antes de seguir adelante, organicemos adecuadamente todos estos nodos. La única manera de lo que tenemos que hacer es que necesitamos obtener este valor y convertirlo una variable para que no tengamos que volver a hacer todo esto, cada vez. Entonces lo que podemos hacer es que podemos obtener esto en variable, convertirlo en una variable, y necesitamos establecer esta variable. No todo esto. Al convertir todo esto en función, lo colapsaremos para funcionar. Llámalo distancia a capa. Distancia a despejar. Y cuando sí necesitamos esto, lo necesitamos ante esta rama. Y cada vez que necesitamos esto, podemos simplemente poner en esta función. En lugar de tener este espagueti de código, eso es simplemente ineficiente Entonces lo que hacemos, distancia al jugador, arrástralo soltar. Y lo hacemos de nuevo aquí, distancia al jugador. Esto solo comprobará la distancia al jugador si es Así que la forma vamos a verlo, si la distancia al jugador es menor a 2000 unidades. Menos de 2000. Establecemos este valor y devolvemos esta nota. Entonces aquí, si la distancia es menor a 2000 unidades, todo esto sucede como lo hacía anteriormente. Y aquí, después de que esto se actualice, segundos pases, pasa el retraso, y después del retraso, obtenemos una distancia con el jugador. Si la distancia al jugador actualmente, después de este 1 segundo de retraso durante la actualización de esta línea de tiempo es inferior a 2000, vamos todo el camino atrás y volvemos a verificar o ni siquiera tenemos que verificar, nos dirigimos hacia arriba a rama como ya lo hemos configurado ya Comprueba la distancia al jugador y vamos si es cae, no pasa nada, y todo esto simplemente sigue funcionando hasta que esto termine. Así que ahora intentemos ahora otra vez. Y vamos a verlas y a presionar. Esto sucede. Esto está comprobado. Esperamos hasta que termine, que serán 8 segundos. Después de 8 segundos, se termina y se restaura. Perfecto. Podrías notar si lo pruebas que tus luces no funcionarán correctamente, y esta es la razón. La forma en que funcionan estas funciones, solo producen este valor cuando realmente se activan. Y cuando tenemos la verdad aquí y vamos todo el camino de regreso, si no comprobamos el valor de la distancia al jugador, esta función no funcionará correctamente. Y lo que tenemos que hacer es asegurarnos de que solo tenemos todos los nodos que llegan a esto en realidad deberían venir a aquí, y debemos asegurarnos antes de que se active la rama, activemos el evento de distancia al jugador. De esta manera, podremos asegurarnos de que el valor, que es verdadero o falso desde la distancia a la función del jugador, sea realmente exacto. Entonces vamos a compilar, jugar, y volver al nivel y veamos cómo funciona. Y después de que no puedan encontrarnos, vuelven a sus rotaciones aleatorias, y cuando nos acercamos, nos notan y empiezan a seguirnos por ahí Ahora, obviamente, podríamos modificarlo para las luces sean más precisas mejor no querrás limitar más el alcance, etcétera, pero vamos a mantenerlo así por ahora, ya que vamos a cambiar las luces, funcionalidad dependiendo de la jugabilidad también Esto no será en realidad así aleatorizado constantemente porque las luces circundantes se enfocarán en los objetivos si los objetivos están cerca Antes de pasar a comenzar a implementar elementos de juego, modifiquemos nuestra luz una vez más. Tenemos luces que se mueven alrededor del nivel y las tenemos que van fuera del nivel. La razón por la que esto está sucediendo es porque les damos números aleatorios Como tal, realmente no tienen ningún punto en el mapa en el que están tratando de enfocarse. Es una solución fácil, sobre todo lo que ya hemos implementado. Detener la simulación. Y podríamos darles un valor y modificar ese valor por este valor aleatorio para asegurarnos de que los obtenemos en un área determinada, todas las luces se enfocan en un área determinada. Lo que también podemos hacer, podemos usar nuestro objetivo ya establecido get target y usarlo como marcador de posición para que la luz se enfoque Entonces ya tenemos aquí esta lógica que creamos previamente. Tomemos esto y aplicarlo aquí. Ahora, tenemos esta mirada final a la rotación, y tenemos estos flotadores aleatorios que dan aleatorismos a este valor de rotación que se está estableciendo aquí Lo que podemos hacer es combinar estos dos rotadores, lo que nos dará un valor que no es completamente aleatorio Ahora combinemos rotadores, A y B, y echamos en este valor de retorno combinado a P. Ahora echemos un vistazo a nuestro nivel Todavía hay algo de aleatoriedad en el nivel, pero todos van a intentar enfocarse en la luz sobre el objetivo Y cuando el objetivo se mueve, se mueven con él. Obviamente no queremos que este cubo sea el objetivo. Como tal, lo que podemos hacer es que esto siga siendo el centro del nivel, más o menos, y podemos forzar hacia abajo este valor. Y lo que podemos hacer es que podemos copiar esta ubicación. Regresa a BP Lit, quita la ubicación del actor del objetivo y divide el strcm echemos un vistazo a nuestros valores aquí X ¿Por qué? Y Z compilar presblow. Se comportarán de manera similar, pero ya no están apuntando a este cubo específico. Ahora solo están rotando en la dirección general alrededor donde se ubicó inicialmente este cubo. También podrías apuntar al nivel en sí, o también puedes simplemente hacer invisible este cubo, dejarlo y llamarlo día, pero no hay razón para complicar demasiado cuando puedes codificar duro los valores, tú podríamos hacerlo de múltiples maneras, pero esto simplemente funciona Ahora, organicemos nuestro código que tengamos un tiempo más fácil para la próxima vez que realmente necesitemos esto. Vamos a convertir algunas de las cosas aquí en funciones. No podemos agregar línea de tiempo a las funciones. Vamos a hacer esto, convertir a función, colapsar función específicamente. Llamémoslo rotación, generación aleatoria. Esto está aquí solo para mantener todo organizado. Y voy a renombrar esta función. Correctamente. Asegúrate de probar tus planos siempre. Y si funciona como debería, solo puedes continuar. Sí, la mayoría de las luces están dirigidas hacia adentro. También podemos reducir los valores de aleatoriedad para que no vaya demasiado lejos de lo que queremos a esto debería ser lo suficientemente razonable Hagámoslo de 20 a 20. Si bien los números aleatorios están bien, tenerlos yendo demasiado hacia arriba no es lo ideal. Y ahora tenemos este efecto disco como. Ignoramos el error. Es porque el jugador en realidad no está en el nivel. Se puede agregar un nodo es válido, pero eso no será realmente necesario cuando hayamos terminado con esto. Así que tomemos esto también. Y esta vez, lo que vamos a hacer, vamos a colapsar en una función también, pero es una función diferente, ya que es una función que está mirando al jugador, y vamos a seleccionarlos a todos, colapsar la función. Se encontró la ubicación del jugador. Sólo voy a nombrarlo así. Todo está bien. Podemos volver a Gráfico de eventos, ver si necesitamos organizar cualquier otra cosa. Las secciones de mando ahora son demasiado grandes, así que vamos a reducirlas. A ver. No podemos poner esta línea de tiempo en la función ya que es un evento relacionado con el tiempo, y no hay ninguna razón real para colapsar estos dos nodos en función, ya que realmente no los vamos a reutilizar demasiado. Los tenemos de cierta manera aquí, pero no son realmente manera eficiente de ponernos en una función. Esto puede quedar como está. Estos retrasos no se pueden agregar a la función o macros. Y ahora tenemos un poco más claro. Todavía tenemos estos nodos yendo hasta el final, pero está bien. Probablemente podríamos hacer que se vea mejor si reorganizamos más, pero no quiero perder demasiado tiempo aquí Aquí tenemos nuestros ajustes de color y, a continuación, los vamos a editar cuando realmente implementemos elementos de juego. Entonces 23. UE5 FC08 01: Ahora, comencemos a hacer nuestra interfaz. Haga clic derecho en la carpeta vacía. Ya creé la carpeta Interfaz, tuya propia y llamo a tu interfaz Blueprint BPI for Blueprint, y voy a llamarla llamada Compilarlo, guardarlo por si acaso, y nos metemos en nueva función aquí en la interfaz. Vamos a renombrarlo y llamarlo gol score. ¿Por qué tenía L? No lo sé. Entonces ya tenemos esta Interfaz. Vamos a crear uno más, y este siguiente no vamos a usar realmente, pero solo voy a demostrar cómo se puede usar. Vamos a llamarlo interactuado. Y esta vez vamos a agregar un nodo de salida y un nodo de entrada. Un nodo de entrada será, digamos, capa arctor Veamos qué podemos Primero, lo que podamos usar, podemos usar ese carácter de persona. Esto sólo va a ser para demostración. En realidad no vamos a usarlo, y para la salida, vamos a agregar un valor bulling de algo En realidad no vamos a usarlo. Lo voy a quitar más adelante. Entonces vamos a salvar esto. Y ahora tenemos uno con salida, uno sin salida y y veamos. Nuestro puntaje de gol no tiene salida y nuestro Interactivo tiene una salida. Entonces, lo que vamos a hacer va a BP Goal y en los ajustes de clase, vaya a las interfaces implementadas en el panel de detalles del lado derecho y haga clic aquí y encontremos nuestro puntaje de gol PPI. Lo compilamos, y ahora tenemos este paso aquí. Se llama interfaces. Amplíalo, y verás dos nuevas opciones aquí. En primer lugar, vayamos al gráfico de eventos y hagamos clic en Interactivo. Tenemos esta función que tiene entrada de jugador y algo de salida. El propósito de esto es crear una función ampliamente disponible que pueda ser modificada en cada plano Entonces la función interactuada que creamos puede ser utilizada, digamos que tenemos nuestras entradas y salidas, obviamente, y podemos en nuestros gráficos de eventos, llamar a este evento por ejemplo, digamos, quien interactuó, puede ser este actor mismo Y en el nodo jugador, podemos agregar la referencia para el jugador que hizo esto. O puedes agregar un evento interactable que diga, por ejemplo, monedas Imagina que estás usando una tienda en un juego y tienes un evento interactivo, y este valor dice monedas, que es verificar cuántas monedas tiene tu personaje. Y en esto de aquí, digamos que el artículo que estás tratando de comprar cuesta 100 monedas, puedes agregar menos que nodo. De hecho voy a cambiar este valor de lingotes aquí para flotar, solo para demostrarlo Monedas. Compilar y compilar de nuevo, compilarlo recompilar Y la razón de este error, aquí no hay valor. Y digamos que las monedas que tenemos menos de 50 o es igual al artículo con el que estás interactuando. Este será valor verdadero o falso, que esto dará salida como a través de todo falso. Entonces la entrada para la moneda que estás obteniendo, esto solo queda así porque aún no lo guardamos, así que vamos a guardarla. La próxima vez que generemos este evento, esto funcionará bien. Esto nos permite obtener información o variables, etcétera, de otros actores que tienen la interactividad habilitada por interfaz y obtener fácilmente sus variables sin tener que lanzar realmente al actor y obtener sus valores al obtener de aquí, obtener monedas, etcétera Realmente no vamos a necesitar esto. Lo que necesitamos es este objetivo. No puedes arrastrar esto lo que puedes hacer es implementar un evento. Ahora bien, lo que hace esto, cuando la puntuación de llamada de evento es llamada vía interfaz, esencialmente por un actor diferente, este evento se activará. En este caso, lo que queremos que suceda es que este evento sea anotado de gol. Eliminemos esto interactuarlo ya que no lo estaremos usando en el plano de la luz Así que vamos no bolas phon blueprint y light blueprint más adelante Vamos a ir a la configuración de clase en la interfaz, nuevamente, en la misma interfaz ya que van a tener la misma interfaz por todas partes, compilarla. No necesitamos tener un evento on que podamos jugar. Queremos que suceda en el evento de desplazamiento de objetivos. Entonces vamos a conseguir esto y ponerlo en vamos a compilar este guardado. Y aquí en el PPG. Eliminemos estas cosas, vamos al gráfico de eventos. No necesitamos esto para desencadenar aquí. Tenemos que activarlo en todas partes en otras interfaces. Entonces, si vamos a la partitura y hacemos clic en Llamar mensaje de ScorR, esto llamará a este evento en la sección objetivo de los actores que lo interactúen Ahora, tal vez te estés preguntando quién es el que desencadena este evento En nuestro caso, es este arco. Así que en realidad vamos a hacerlo solo con fines de demostración, solo voy a ponerlo como estamos llamando a este evento objetivo, así que solo vamos a arrastrar esto de aquí a aquí. Y puede estar asumiendo que esto funcionará según lo previsto, pero no lo hará porque estamos apuntando al evento de pelota, y el balón en sí no tiene nada que ver. Se trata de un actor vacío con solo un componente de malla estática encima de él. Pero necesitamos que interactúes con este engendrador de luz lo siento negrita spawner Y para que eso suceda, necesitamos interactuar con él directamente poniéndolo como blanco. Pero eso implicaría el casting, lo cual está bien, en este caso, ya que ya hemos establecido que van a existir en el mismo nivel. Pero también podemos saltarnos eso al conseguir todos los actores tengan interfaz. Y la interfaz que queremos seleccionar es el marcador de gol PPI, y lo pondremos aquí. Entonces, lo que esto hará es cuando se active esto, verificará a todos los actores del nivel, y todos los actores del nivel que tengan habilitada esta interfaz se activarán su evento de gol. Esto no se recomienda para usar en operaciones basadas en el tiempo, si estás en eventing, muy probablemente se estrellará tu PC si tienes muchos factores Y si es posible, te gustaría apuntar directamente si es una opción disponible. Y en realidad, el casting puede estar bien si hay una garantía de que estarán en el mismo nivel que aquí hemos establecido. Ahora bien, puede preguntarse si ese es el propósito, ¿por qué estamos haciendo esto de esta manera? ¿Por qué no podemos simplemente usar casting? Esto se debe a que si tienes un personaje jugador, y tu personaje jugador tiene habilitada una interfaz, y digamos que tenemos esta función llamada interactuar, digamos para recoger objetos. Entonces para esta pelota, cuando interactúo con ella, digamos, solo la recojo. Pero también puedo interactuar con esta puerta y hacerla explotar o interactuar con el MPC, hablar con él, o interactuar con algunas otras cosas Puedo tener una llamada de evento, que llamadas interactúan. Y la forma en que ese evento es funciones no está definida por mi personaje jugador, sino por los propios actores, que haremos ahora mismo. Ya agregamos este evento. ver si no me olvidé de hacer nada, esto solo debería activarse, y deberíamos conseguir una nueva pelota. Sí. Tenemos una pelota nueva. Y si podemos repetir este proceso, infinitamente, como cada vez que hagamos esto, obtendremos una bola nueva Y tenemos una nueva bombilla. Modifiquemos nuestro conejo de desove de cuenco. Vamos a agregar un nodo, que sea tres. Entonces, cuando esto se activa, retrocedemos y volvemos a pasar por el proceso. Y cada vez que esto se desencadena, vamos a la secuencia. Restablecemos nuestro conteo aquí para que pueda funcionar de nuevo, y lo rehacemos. Vamos a probarlo. Res play. Se explota. Obtenemos tres bolas nuevas, y podemos hacer exactamente lo mismo otra vez. Obtienes tres bolas más, y puedes repetir este proceso tantas veces como quieras. Ahora, es posible que hayas notado que desovan directamente uno encima del otro, y eso está bien, pero no exactamente lo me gustaría ver cada vez Como tal, voy a cambiar su ya sabes, no solo voy a cambiar su talla, sino que también cambiaré ligeramente su ubicación al lapso. Entonces voy a agregar este vector. No vamos a tocar demasiado la Z o en realidad, también podríamos. Así que volvamos a hacerlo aleatorizado. Consigamos flotar al azar en el rango. Cargar. En rango. Nuevamente, copiemos esto tres veces. No queremos tocar demasiado el eje Z. No queremos que vaya abajo. Como tal, vamos a tener que ir entre cero o en realidad eso es mezcla gota desde el cielo cero y 200. El eje Y puede ser -50 más 50. Y X puede ser lo mismo. Podrías incrementar los números para hacer más variaciones, etcétera, pero esto debería estar bien Y no olvidemos ponerlo en, compilar, presionar, jugar. Tenemos nuestra jugada de inicio. No pasa nada. Tenemos nuestra pelota. Hagámoslo una vez. Obtenemos tres bolas. Y el spund Ahora cambiemos sus tallas al azar. Podemos hacer exactamente lo mismo que hicimos aquí. Pero lo haremos en vez de usar tres nodos de rango, vamos a usar uno, y vamos a hacer mínimo uno, y máximo, vamos a hacerlo tres veces el tamaño. Vamos a introducir esto en los tres valores aquí. Compile, guarde, presione play y pruébalo nuevamente. Vamos a volver a hacer esto. Y ahora tenemos cerebrales, y son de diferentes tamaños. Y aún deberíamos poder interactuar con ellos. Estamos. Y ahora nuestra marcha confinada, obtenemos tres bolas más, y podemos repetir este proceso para llenar nuestro campo de bolas Como no le hemos puesto ningún límite, irá infinitamente Podríamos agregar un número infinito de bolas o podríamos limitarlo por cierta cantidad haciendo el asentimiento nuevamente, pero no hay necesidad real ya que no vamos a publicar realmente este esquema, ya que esto se entiende solo con fines de demostración Ahora, tenemos nuestras interfaces siendo llamadas. Hagámoslo con luces también. Ir a configuración de clase, implementar interfaz. Nuevamente, implementaremos exactamente la misma interfaz. Sólo tenemos uno, compilarlo, guardar. Quizás te preguntes cuáles son los otros. Son interfaces proporcionadas por motor por defecto que no vamos a atravesar en este curso. Pero de todos modos, así que vamos a querer agregar esta interacción a aquí. Específicamente, tenemos puntaje objetivo aquí. Entonces, primero que nada, movamos esto por ahí. Y vamos a eliminar esto en nuestra interfaz e implementarlo. Ojalá solo aparecieran frente a ti, pero esto es lo que es. Vamos a arrastrar esto, y lo que va a pasar es que vamos a modificar esto un poco ya que tenemos generación de colores aleatorios aquí, y tenemos objetivo generado aquí Mantendremos la misma lógica que usamos en el nivel anterior. Si el objetivo se está generando durante 3 segundos, durante 3 segundos, se establece falso y si es falso, continuaremos con nuestra operación para colores aleatorios Si no lo es, vamos a mantenerlo en verde. Vamos a probarlo ahora. Vamos a presionar play. Y cuando lo metamos, todas las luces cambiarán a verde por 3 segundos. Y cuando la próxima vez que se supone que el aleatorizador va a entrar en acción, todo debería volver a los colores aleatorios Pero el problema es, en realidad no tenemos un re disparador para esta operación de color aleatorio. Como tal, cuando sea cierto, volveremos al nodo de retardo y volveremos al nodo de retardo y a pasar por el proceso hasta que sea cierto, y vuelve a comenzar el bucle. Vamos a intentarlo de nuevo. Juguemos. Metamos nuestra pelota en el círculo. Uno, dos, tres, cuatro, y recuperamos nuestras luces. Colores aleatorios. Ahora bien, sería aburrido si tenemos esta enorme arena, y este objetivo siempre va a sentarse en un solo lugar. Entonces, en cambio lo que vamos a hacer, vamos a agregar funcionalidad adicional a la meta, y vamos a teletransportarla alrededor del nivel Y cada vez que se teletransporta alrededor del nivel, las luces alrededor lo echarán un vistazo, lo que nos permitirá esencialmente reconocer instantáneamente dónde está Vamos a combinar esencialmente la interfaz y el targeting, inicialmente agregamos a las luces. Con la propia puerta. Ahora, tenemos esta puerta, y nos gustaría que engendrara en, digamos, cuatro ubicaciones diferentes Podríamos hacer como ubicaciones infinitas aleatorias, etcétera, pero no es buena idea que sea completamente aleatoria Lo que vamos a hacer, vamos a crear una matriz, y en esa matriz, tendremos posibles ubicaciones para esta marcha, y vamos a pasar por ellas una por una, y cuando ya no haya elementos en la grieta del array, restablecemos Podríamos hacerlo de manera controlada para ser exactamente iguales cada vez, pero también podríamos hacerlo aleatorizado Entonces hay variaciones posibles aleatorias, y obtendremos una elección aleatoria de las posibles variaciones. Ahora volvamos a nuestro objetivo. Antes que nada, hagámoslo cada vez que termine toda la operación aquí, teletransportaremos a este actor Así que vamos a llamar personalizado y crear un nuevo evento. Evento personalizado. Vamos a llamarlo teletransporte. Y lo que vamos a hacer ahora, necesitamos establecer transformación forma para el propio actor, que es uno mismo un nuevo valor de transformación. Y lo que vamos a hacer, podemos calcular los lugares donde vamos a ponerlo cada vez. Y en este caso, creo que de alguna manera logré ahora es porque hay un error de compilación, así que no puede vomitar. Muy abajo, vamos a quitar esto. Así que podría calcular manualmente el espacio aquí, el espacio aquí, el espacio aquí y el espacio aquí y usar el plano para poner directamente a ubicaciones predefinidas O lo que puedo hacer es ir a formas básicas y encontrar creo que hay un nodo llamado target a menos que se eliminen en la última versión. Sí, lo tenemos aquí. Punto objetivo. Lo que podamos hacer, podemos usar este punto objetivo. Y voy a llamar tenemos este punto objetivo aquí. Aquí hay una marca. Es bastante pequeño, pero vamos hasta aquí del otro lado de la pantalla, y vamos a conseguir otro de estos y ponerlo de nuevo aquí y moverlo todo el camino hasta aquí. Arreglaremos sus ubicaciones después e iremos hasta el final y pondremos la última aquí. Ahora tenemos cuatro puntos objetivo. Podemos establecer. Podemos volver a nuestro objetivo. Podemos crear get location. En primer lugar, asegurémonos de que tenemos referencia para ellos. Entonces objetivo. Elenco al punto objetivo On y vamos a promoverlo a variable. O ahora, voy a quitar esto. Voy a convertir esto en array. Lo voy a compilar. Voy a añadir cuatro elementos. Y después de que haya terminado de agregar cuatro elementos, vamos a obtener esta matriz, obtener un punto stargt Vamos a sumar para cada bucle Por ahora, sólo vamos a usarlo para probarlo, y vamos a exponer esto. Y lo que vamos a hacer, seleccionaremos target. Y deberíamos tener esto como punto objetivo aquí. Vamos a seleccionarlos uno por uno. Ir al punto objetivo. Uno, dos, tres y cuatro. Ahora tenemos objetivos uno, dos, tres, cuatro. Ahorraremos, volveremos y guardaremos otra vez por si acaso vamos a conseguir que el actor se transforme y lo ponga aquí. Y este teletransportarse por ahora, solo con fines de prueba, vamos a ejecutarlo una vez en el evento comience a jugar Creo que lo tenemos en la parte superior, pero no lo estamos usando. Como tal, solo podemos probarlo, compilarlo , guardar, descansar jugar. Entonces debería desaparecer de nuestra ubicación, y aparece aquí. El motivo por el que aparece en el aire, antes que nada, porque nuestro objetivo no está colisionando y hagámoslo así Ahora volvamos a jugar. Perfecto. Y tenemos que asegurarnos de que se rote de la manera correcta. Y ahora lo tenemos. Todavía está un poco en el aire. Así que vamos a arrastrarlo por el bit objetivo al suelo. Veamos si está bien ahora y si lo es, simplemente lo haremos, se ve bien. Ahora, vamos a tomar la transformación Z de este objetivo. Vamos a copiar. Y vamos a aplicarlo a todos los demás. Esto fue alrededor de 75 705 tal solo uso esto directamente. Ahora, tenemos que asegurarnos de que nuestras rotaciones también sean correctas Como tal, lo que podemos hacer, podemos obtener uno específico primero pasando por a. en este caso, supongo que solo podemos obtener una copia. Y si lo ponemos así, éste siempre va a conseguir el primero de la línea que ya tenemos. Entonces hagamos uno, que en realidad es el segundo, compilemos, juguemos, y veamos dónde generó Se engendró en esa dirección. Transformar es obviamente incorrecto. Como tal, vamos a dar clic en este segundo y rotarlo integrarlo hacia la izquierda. Entonces la línea roja está de este lado. Y echemos un vistazo a éste también, y lo más probable es que esto sea lo mismo, así que vamos a hacer. Entonces probémoslo con el segundo, compilemos, guardemos y presionemos play. Bien, cometí un error. Vamos a intentarlo de nuevo. Volvamos. Se ve bien. Ahora, asegúrate de que tenemos lo mismo para este, que es el número tres. Compile, presione play, y está funcionando bien. Inicialmente puse esto un poco al revés, así que no se activaría, pero como lo estamos moviendo demasiado, solo vamos a mantenerlo en el medio. Sí. Compilarlo, guardarlo presione play. Ahora, arreglemos la lógica para ello. Y para no estorbarnos, cerremos éste y vayamos a BPG y agarremos al azar Interesante. Elemento de matriz aleatoria. Asegurémonos de que sea aleatorizado cada vez. Vamos a obtener un elemento aleatorio de estos cuatro puntos cada vez Ya los tenemos preestablecidos. Ya tenemos las rotaciones, etcétera. Y lo que vamos a hacer a continuación, obviamente, primero, vamos a probarlo. Desapareció en ese lugar cuando agregamos Evans baking play. Tenemos que desencadenar esto llamando al evento de teletransporte, y esto es bastante fácil Sólo vamos a llamar al evento de teletransporte desde aquí Vamos a llamar a la función Telepot. Vamos a guardar el juego, y veamos, lo tenemos frente a nosotros. Nosotros lo metemos. B tres bolas y puerta nueva. Y a continuación lo que vamos a hacer es que vamos a ir a nuestra interfaz y llamar a una nueva función y llamarla nueva interesante. Nuevo modo de andar u oro. Compilarlo, guárdalo. Esto automáticamente agregará esto a todos los actores con la interfaz. En este caso, los queremos a la luz, así que puedes simplemente dar click en cualquier luz, ir a su plano Amplíe la interfaz. Y en vez de objetivo localizado, vamos a moverlo e implementar evento llamado Nuevo gol. Y evento Nuevo gol hará múltiples cosas. En primer lugar, vamos a conseguir que esto suceda un nuevo objetivo. Y vamos a apuntar a la nueva puerta. Pero primero, vayamos a aquí. Y una vez terminado el teletransporte, conseguiremos a todos los actores con la interfaz y la enumeraremos aquí y llamaremos a este evento Nuevo mensaje de gol El objetivo son todos los actores que tienen habilitada esta interfaz. Ahora, vamos a probarlo. En el momento en que metemos la pelota, todas las luces deben ponerse rojas. Ellos lo hacen. Ahora, queremos las luces más cercanas a la nueva puerta, enfocarnos en ella, para que podamos cambiar instantáneamente nuestro enfoque hacia la nueva puerta. Y la forma en que lo hacemos es ir a nuestra luz. Ya no necesitamos la lógica de l spanner. Aquí, si recuerdas, teníamos esta funcionalidad donde teníamos distancia al jugador. Vamos a copiar esto o topcates y llamarlo distancia a puerta Vamos a compilar esto y volver al injerto de Avent. Vamos a utilizar esta distancia para portón aquí. La forma en que esto va a funcionar, necesitamos conseguir un personaje jugador aquí, inicialmente, pero lo que tenemos que hacer ahora es conseguir al actor. Podríamos codificarlo duro, pero como mencioné primero, no queremos referencias duras Entonces lo que vamos a hacer en cambio, vamos a ir BPG, y en la interfaz, vamos a agregar una entrada, y vamos a llamarlo target lo siento, referencia actor Vamos a conseguir actor objeto referencia juego y llamar actor ref compilarlo, guardarlo. Y si echamos un vistazo a nuestro objetivo de BP, ahora tenemos un techo de actor. Y en este caso, va a ser yo mismo. Como estamos consiguiendo una nueva referencia que queremos conseguir es la propia puerta. Volvemos al plano de la luz, guardamos o no, volvemos al gráfico de eventos Si por alguna razón, pierdes o tienes demasiadas opciones aquí, simplemente puedes cerrarlas y encontrar tu gráfico de eventos aquí en la parte superior izquierda. Y en la distancia a la puerta, necesitamos una entrada. Entonces vamos a agregar input. Mis disculpas. Vamos a necesitar un insumo, y vamos a llamar a esta entrada una referencia de actor, una referencia de actor. Y esta nueva referencia de actor será la puerta. Y si vuelves a graficar aquí, qué vamos a hacer, obviamente vamos a activar esto para asegurarnos nuestros colores aleatorios paren y obtengamos el color rojo por un segundo. Y como todo esto suceda, vamos a conseguir este evento de referencia Ni gol, ponerlo en puerta. El que activa este evento es la puerta, y la puerta hará referencia a sí misma, y la interfaz transferirá esa información a nuestro evento aquí en las luces Entonces vamos a tener esto aquí. Y qué más vamos a hacer, vamos a agregar salida adicional, y esa salida también será puerta o en realidad podríamos saltarnos esta parte porque ya tenemos la referencia en el blueprint No hay razón para complicarlo en exceso. Lo que vamos a hacer es que estamos consiguiendo una distancia a la puerta. Y si la distancia a la puerta es esencialmente por rama, cierto, o esta es una distancia de si está más cerca de 2000, ¿verdad? Vamos a poner esto aquí. Entonces, si la distancia entre él y la puerta es menor a 2000, obtendrá este valor, lingotes, y este lingote definirá si está cerca o Y si es así, vamos a conseguir nuestro nodo objetivo establecido, que creo que teníamos aquí en algún lugar de la sección de jugadores. ¿Establecer rotación de actor o jugador distanciado después de que lo configuramos? Sí. Teníamos esta ubicación de actor get. Oh, sí, no nos fijamos ahí. Lo fijamos aquí, y vamos a establecer nuestro nuevo objetivo que por cierto, podría haber encontrado una nota, pero siempre es mejor revisar tu plano Vamos a establecer nuestro nuevo objetivo. Esencialmente, si está lo suficientemente cerca, pondremos nuestro nuevo objetivo a la puerta y realizaremos este evento manera similar a la que teníamos aquí. Vamos a conseguir vamos a establecer nuestra nueva rotación y obtener nuestra propia rotación. Lo que podemos hacer fácilmente es que también podemos duplicar esta función y hacer que encuentre la rotación de la puerta. Y agrega una entrada aquí o actor o actor, llámalo puerta solo para asegurarnos de que aquí solo ingresamos la referencia de la marcha, desplácese hacia arriba en nuestra función de marcha, rotación de puerta Nos fijamos nuestro objetivo. Lo conseguimos como referencia Vamos a tu jugada conseguir personaje jugador y establecerlo como objetivo. Obtendrás la nueva rotación de los objetivos. no hay razón para configurarlo ya que en cambio podemos conseguir esto Y en este caso, el yo aquí no se está utilizando ya que no lo necesitábamos. Y podemos copiar la lógica exacta que tenemos para la línea de tiempo en el siguiente aquí para la línea de tiempo. Y vamos a copiar esto Vamos a copiar este lugar aquí y usarlo desde el principio. Nuestros resultados serán A y B, y todo lo demás debe quedar como está. Por ahora, vamos a probarlo. Nosotros hacemos esto. Ponemos esto en. Yo explota. Las puertas cercanas deberían enfocarse en ello, pero no lo hicieron. Veamos por qué sucede esto. Y volvamos a la impresión de plumín. Ahora, esto se desencadena. Esto también se desencadena. Esto lo activamos. Establecemos el engendro objetivo y la razón por que esto sigue activándose es que en realidad no estamos impidiendo que esto suceda Con esto, me refiero al movimiento aleatorio de la luz. Tenemos que agregar esta nota aquí y agregarla aquí. Y si esto es falso, como lo dijimos aquí, esto no debería desencadenarse, y esto solo debería desencadenarse si es cierto. Y por defecto, parece ser vamos a comprobarlo por si acaso. Bien, no está pasando actualmente. Vamos a mis habilidades de juego superiores no brillaron por aquí. Nos estamos poniendo rojos. Y estos actores están buscando en direcciones distintas a las que deberían. Veamos qué está pasando aquí. Nuestra salida A está aquí, que es nuestra rotación actual. Oh, no necesitamos obtener la rotación de los objetivos. Esto es un error de mi parte. Vamos a intentarlo de nuevo. Y ahora nos llega este interesante interactivo. Tenemos rotación B aquí. Vamos a dejarlo abajo, y tenemos una rotación, que debería ser su propia rotación actual. Echemos un vistazo a nuestro evento, la forma en que se juega aquí. Obtenemos nuestros valores de salida, A y B, lo metemos y tenemos Alpha tenemos Alpha rotador, y obtenemos rotación setter, la misma manera que lo hacemos aquí La única diferencia sería cuando lo actualizamos y lo terminamos, necesitamos asegurarnos de que esto vuelva a ser verdadero terminado. Cierto. Y el cronograma para ello es de 1 segundo. Hagámoslo 3 segundos. Compilar, guardar, volver a Gráfico de eventos. 24. UE5 FC08 02: Echemos un vistazo a lo que está mal con nuestro plano. Sólo para verificar dos veces. Tenemos este span objetivo cuando es cierto, esto debería dejar de activarse, ya que no queremos topin por lo que no debe activarse en Debería aparejar en falso. Y en verdad, no debería pasar nada, y deberíamos estar obteniendo colores aleatorios a menos que ya se genere durante los próximos 3 segundos. Aquí hacemos exactamente lo mismo. Tenemos un retraso. Después del retraso en serie, vuelve a caer, por lo que todo esto puede funcionar como lo hacía anteriormente. Echemos un vistazo a nuestra distancia a la puerta. Es como debe ser. Veamos esto, y aquí está el tema. Tenemos que ponerlo aquí también. Muéstralo, guárdalo. A ver si funciona ahora. Solo necesitamos luces más cercanas a la puerta para avistar sobre ella. Lo que hicieron, pero se retrasó bastante. Esto puede deberse principalmente a que tenemos demasiadas líneas de tiempo funcionando al mismo Y si bien esta reproducción desde el principio está bien, necesitamos evitar que estos otros eventos o líneas de tiempo jueguen cuando hacemos esto, ya que necesitan ser pausados Ahora bien, la forma en que podemos hacer esto es asegurarnos, primer lugar, de que tengamos una manera de interactuar con ellos. Entonces agreguemos una secuencia. Y en esa secuencia, vamos a arrastrar esto. Cuando está bien, esencialmente, se está ubicando un nuevo objetivo, primero detenemos todas las líneas de tiempo existentes Y esto no debería suceder en evento para comenzar a jugar. No. Esto debería suceder en el evento, nuevo objetivo en su lugar. Entonces esto no debería suceder aquí en pliegues, donde vas a hacer. ¿Por qué eliminé esto? Podemos simplemente jalarlo aquí por ahora. Esto está muy desorganizado por el momento, pero no perdamos demasiado tiempo en ello. Tomemos esto y lo pongamos aquí. Entonces, cuando se activa una nueva meta, estos dos se detienen instantáneamente y conseguimos que nuestras luces se centren en las luces en su lugar. Entonces hagámoslo. Aparecen. Y veamos. Comienzan su movimiento aleatorio. No, ya que no agregamos ninguna información adicional. Entonces, antes que nada, vamos a asegurarnos de que más luces puedan Fox Gate ya que queremos que sea evidente que algo está pasando. A continuación, después de que todo esto haya sido finalizado y hayamos terminado nuestra jugada, tenemos que volver todo el camino regreso a la secuencia cero aquí. Juguémoslo, y volvamos a verlo. Nosotros hacemos esto. Yo vamos a enfocarnos en ello. Ahora, volvamos a cambiar algunos ajustes. Este es un código muy desorganizado, que organizaremos más adelante Echemos un vistazo a lo que hace nuestro código. Obtenemos nuestras luces, obtenemos nuestra rotación, etcétera, y sí recuerda que esto es por luz, así que no es como todas las luces se vean afectadas al mismo tiempo Las luces que no estén lo suficientemente cerca no deberían verse afectadas, por lo que necesitamos cambiar la ubicación para esto. Nodo si se genera el objetivo y si la distancia a la puerta es verdadera, esto debería activarse Y después de esto detiene a los otros dos, reutilizamos esto y las luces que están cerca la nueva puerta deberían funcionar en su lugar Nuestra puerta se centró instantáneamente. En este caso, nuestras puertas responden aquí. Vamos a asegurarnos de que lo estamos haciendo de nuevo. También lo volveremos a utilizar, y lo que vamos a hacer es que nos vamos a asegurar que solo las luces alrededor la puerta sean rojas en lugar de todas ellas, ya que no sirve para propósito para que todas sean rojas Entonces, en cambio, lo que vamos a hacer, nos estamos moviendo cuando esto activa y cuando se marca gol, cuando se marca gol, todos ellos volviéndose verdes es algo genial. Fresco. Es como animar. Y vamos a asegurarnos de que tenemos tiempo suficiente para que las luces se pongan verdes cuando anotemos. Vamos a los planos. Vayamos a nuestro objetivo. Y antes de que ocurra el teletransporte, vamos a darle retraso Retraso y tenemos 3 segundos de luz verde. Así que hagámoslo 3 segundos también. Teletransporte verde. Entonces, antes de que se llame al evento de teletransporte, que llamaremos a esto y todo esto sucederá, tendremos 3 segundos de luz verde Soy muy malo en este juego. Vamos a modificar la velocidad en el jugador un poco más adelante. Y hacemos esto, 3 segundos de luz verde. Desaparece, y después de que desaparezca, todas las luces deben enfocarse en él. Sí. Ahora, veamos cuál es el tema aquí. Este evento, distancia a puerta tiene un error, y veamos por qué ocurrió este error. Nuestro evento de distancia a puerta se llama todo el camino por aquí. Pero para que esto sea funcional, realidad no tenemos mucho que seguir. Entonces echemos un vistazo a la. Nodo de acceso Roy rojo probablemente puerta puerta. Menos de 2000, conseguimos subasta. Entonces están tratando de leer el nodo llamado puerta. Y por cierto, esto es ahora menos de 3 mil, pero es pecado. Y en vez de menos de, vamos a llamar a ss. Este es el valor que está tratando de leer. Y si le echas un vistazo a la gráfica, el objetivo después de que se crea una nueva meta, obtiene una referencia para la nueva meta, y esta referencia va a través de la distancia a la puerta. Y si está más cerca que el cierto rango, antes nada, asegurémonos de que nuestros valores de cambio de luz realmente vengan después de esto. Entonces vamos a guardar esto por ahora y conseguir que este nodo de sucursal esté antes de todo esto. Obtenemos esta distancia. Si es menor, pasamos por, y de a través, vamos a hacer esto, y de aquí, vamos a secuencia y esta secuencia de operaciones debería ser más correcta. Vamos a probarlo. Tenemos esto, se nos cae esto. Tenemos esta pantalla, una, dos, tres, desaparece. Si están cerca, deben cambiar de color y ponerse rojos. Pero por alguna razón, no lo hicieron Ahora, arreglemos todos los problemas que tenemos con esta luz y terminemos con ella. La razón por la que esto no está funcionando de la manera que queremos es porque aquí hay múltiples interacciones simplemente no siguen la secuencia correctamente. Entonces, antes que nada, asegurémonos no solo mientras necesitamos que el evento comience a jugar, no queremos que estos nodos vengan por todas partes del lugar cada vez. Entonces, en su lugar, hagamos clic en el evento constante. A eso solo puedes llamar. Llamemos a evento constante, y podemos simplemente llamarlo reinicio. Esencialmente reinicie toda la operación desde el principio. Esto se activará cada vez que se llame al reinicio, y podemos ponerlo aquí, por ejemplo, art, call function. Y aquí vamos a limpiar bastante nuestra escena. Tenemos este disparador de secuencia y tenemos este disparador de secuencia a partir de aquí, volvamos a nuestro jugador distanciado Asegurémonos que esto en vez de ir a nuestro jugador distanciado , vaya a reiniciar Entonces volveremos a llamar a esta función aquí. Podemos simplemente copiar esto y pegar esto aquí. Entonces cuando todo esto aquí termina y se termina, probamos nuestra distancia al jugador y si todo está como debería ser, reiniciamos toda la operación. Volvamos a echar un vistazo aquí. Tenemos reinicio, tenemos secuencia que diferencia aquí, tenemos eventos que corren Y cuando todo esto termine, reiniciamos nuestro nodo. Aquí paramos estos dos eventos. Pero en lugar de usar esto podemos crear eventos personalizados. Llámalo parar y podemos controlar mis bolologías podemos arruinar esto hasta aquí abajo. Y en vez de tener este nodo, ve hasta aquí, lo que podemos hacer es quitar esto. Es cierto, esto sólo sigue. Usamos el nodo stop para detener este, y agregamos una secuencia aquí. Paramos este en la parte superior y paramos este en la parte inferior. Mucho más limpio. Código espagueti. no tenemos nada que realmente necesitamos Ya no tenemos nada que realmente necesitamos limpiar aquí en la fila inferior, y solo podemos moverlo un poco. Y aquí, echemos un vistazo. Lo estamos deteniendo cuando es necesario. Tenemos este retraso que se remonta a la generación aleatoria. En su lugar, volvamos a llamar a nuestra función de reinicio. Entonces para que lo revise. Hay un retraso después de que todo esté terminado y reiniciamos todo de nuevo y el reinicio Pasaremos por todo este proceso una vez más. Obtendremos nuestro nuevo color aleatorio. Esto desencadenará. Vamos a asegurarnos de que todo aquí esté dentro de la sección de comentarios. Tenemos ramas dobles para distancia al jugador y distancia si el nuevo objetivo está disponible o no. Esto es sólo una forma más limpia de hacerlo, así que no tenemos que conseguir esa pesadilla. Podríamos crear funciones, etcétera para compactarlo aún más, pero creo que está bien Puedes, por cierto, alt click derecho e izquierdo Alt click y click derecho mantén presionado y moverte alrededor tu mouse para cambiar tus niveles de zoom. Y aquí todo está bien. Ahora, lo tenemos organizado, pero cambiemos algo. Deberíamos hacer avanzar esto. Y vamos por ahora, destruir nuestras referencias aquí y desatarse. Arrastremos toda nuestra larp, etcétera, rotación, todo aquí, al gráfico de eventos, Evento nuevo gol Y usemos nuestra variable objetivo y pongámosla aquí. De esa manera no tenemos que hacer referencia a la interfaz cada vez. Lo conseguimos una vez. Y cada vez que lo necesitamos, solo lo obtenemos del set aquí, y lo hacemos por aquí también. Y cuando jugamos, cuando terminemos de jugar, nos fijamos el objetivo girado y vamos a reiniciar. Y antes de movernos por las luces, queremos ponerlas rojas. Como tal, los vamos a trasladar aquí. Y a la derecha encontramos, lo movemos y jugamos desde el principio. Y cuando esto termine, de nuevo, apuntamos giramos, retrasamos. Y creo que tendremos que modificar esto de nuevo solo para asegurarnos. Pero vamos a compilar. Seleccione pulsar play. Veamos qué pasa. Nos movemos la pelota, todo se vuelve verde. Obtenemos bolas nuevas. Todo está enfocando esto. Pero ahora están pegados en él. La razón por la que esto sucede es porque este valor aquí. Veamos qué pasa de nuevo. Lo movemos por ahí. Soy un jugador muy malo, así que vamos a dejarlo caer directamente frente a él. Lo volamos. Todo es verde, se vuelve a activar. Y los tenemos aquí, pero no son del color correcto. Entonces esto se debe en parte a que tenemos muchos nodos de reinicio. Esto sucede cuando está terminado y son 3 segundos. Este disparador avanza y el siguiente disparador ocurre en BPG, en BPLTe Si echamos un vistazo a nuestro objetivo de evento aquí, 3 segundos retrasan el engendro objetivo Esto en realidad no es volver a activar nada. Pero esto tiene un retraso en su lugar. Entonces, en vez de esto, eliminemos esto. Y aquí quitamos la sucursal. Agregamos este retraso, pero después de esto, agreguemos nuestro nodo de reinicio, call. Y aquí, asegurémonos no nos llamen a nuestro reinicio cuando no lo necesitamos. Tenemos nuestra sucursal yendo todo el camino hasta aquí. Esto nunca debería ir al jugador distanciado. T debería ir a la sucursal inicialmente. Y si es cierto, esto no debería desencadenar. O volvamos a revisar nuestro lingote. Cuando es falso, esto debería desencadenarse. Cuando es cierto, no debería activarse. Y cuando la radiación y generación aleatorias están en su lugar, rotación del detector, la estamos retrasando. Estamos obteniendo rotación de distancia, estamos atravesando. Y cuando lleguemos esto, eliminemos esto de aquí y agreguemos el nodo de reinicio adicional aquí. Si es cierto, compilar. Tenemos la secuencia que detiene estas dos líneas de tiempo y después de que se detienen, no se están actualizando en tiempo real Como tal, podemos simplemente moverlo un poco. Estamos consiguiendo transtation real, y cuando esto termine, comprueba si está cerca del jugador o no Si es falso, establecemos nuestra rotación a default, lo que ya no tenemos que hacer porque modificamos nuestro sistema de luz, y si es falso, reiniciamos nuestro sistema de luz. Así que vamos a intentarlo de nuevo. Todo está funcionando como debería. Cuando estoy cerca de las luces, me apuntan, yo la meto, y veamos cómo reacciona de nuevo. Están reaccionando a la puerta y enfocándolo como deberían. Y después de que termine de jugar, deberían comenzar a moverse. Y la razón por la que esto no está sucediendo es porque no estamos deteniendo esta operación en ningún momento. Entonces lo estamos actualizando, y cuando termine, se está reiniciando Pero tenemos que establecer el engendro objetivo falso antes de terminarlo. Debe asegurarse de que esté configurado para caídas para que las luces afectadas por la puerta puedan volver a estar operativas. Ponemos esta pelota, dale el momento. Se apareció. Las luces lo están mirando, y las luces están funcionando de nuevo, pero ahora tenemos un tema de colores. Ahora, arreglemos eso también y terminamos con el sistema de luz. Cuando se activa el color del evento, obtenemos nuestro engendro objetivo, configuramos que las luces se vuelvan verdes Reafirmémoslo. Esto lo conseguimos, uno, dos, pero las luces apuntan al jugador cambian de color instantáneamente. Ahora bien, esto está sucediendo por una razón muy sencilla. Tenemos nuestra nota de reinicio repitiendo esta secuencia de colores aleatorios también. Entonces, si solo arrastramos esto desde aquí y lo ponemos aquí, esto debería resolver todos nuestros problemas restantes. Hagamos esto y conseguimos nuestra luz verde y nuestra luz verde está aquí, obtenemos nuestros colores aleatorios y colores de puerta. Ahora bien, no estamos recuperando nuestros colores aleatorios. La razón es que ningún evento ahora se está volviendo a activar obtener colores aleatorios, lo que podemos hacer fácilmente nosotros mismos asegurándonos de que cuando termine esta secuencia y esta secuencia termine aquí, llamamos a un evento que inicia colores aleatorios Entonces llamemos evento personalizado. Llámalo llamador aleatorio B set. Nuevamente, no es el mejor sentido de nomenclatura, sino que sólo vamos a rodar con él. Y vamos a llamar a este evento aquí en la parte superior donde editamos nuestra luz. Y aquí cuando hacemos clic en la meta, en este caso, realmente no tenemos que hacerlo porque después de que activemos este evento, conseguimos este evento en la cima, así que simplemente no puedes reiniciarlo aquí, y debería funcionar bien. Esto lo activamos, las luces nos siguen cuando estamos cerca. Las puertas giraron ahí, las luces se vuelven rojas a alrededor y se mueven de nuevo. La luz verde aquí se queda como debería porque después de que esta luz verde se active por sí misma, si no están cerca, no se reinician Entonces sí necesitamos agregar este reset de luz verde aquí. Ahora bien, si lo agregamos directamente, esto lo sobrescribirá. Es por ello que es tan importante comprender la secuenciación en el plano Se puede pensar, Oh, ya lo hice, pero la secuenciación en sí puede ser un problema. Obtienen colores aleatorios y éste se vuelve verde. Solo para asegurarse de que el resto de los permanezcan verdes mientras se está enfocando el verde. Hagámoslo un retraso de 6 segundos. Esto dice 3 segundos y tenemos tres segundos de retraso antes de que esto comience. Por lo que las luces que no están cerradas se volverán rojas. Y sólo para asegurarnos estamos siendo capaces de ver definitivamente el verde mi rojo. Consigamos el spot y fijemos la intensidad. Vamos a restablecerlo. De nuevo, por lo que normalmente tenemos 40 mil. Hagámoslo 80 mil. Y volveremos a copiar esto. Y cuando hayamos terminado y estemos haciendo todo esto, lo volveremos a poner en 40 mil. Entonces, cuando terminemos con nuestra operación y para el evento de puerta, los regresamos a. Vamos a bajarlo. Lo conseguimos en. Obtenemos nuestro color, mientras que la marcha. La marcha tiene la luminoidad incrementada, y vamos a conseguir que nuestro atentan reduzca también está Ahora, lo único que hay que cambiar es el color mismo. Y no lo hagamos rojo brillante, hazlo rojo más oscuro, combinemos, jueguemos, guardemos. Y metemos esto. Obtenemos nuestras luces, dónde está nuestro git. Es nuestra puerta. Diferencia, pero esto debería ser suficiente. Podríamos y supongo que deberíamos cambiar el nivel de intensidad de lumen predeterminado para este 20, y hagamos que sea un rango más corto para que no tengamos demasiadas luces en cascada por todas partes Y ahora vamos a intentarlo de nuevo. Tenemos estas luces, y pronto tenemos luces rojas aquí. Y supongo que podríamos hacer que las luces rojas permanezcan más tiempo, pero de nuevo, esto es solo cuestión de elección en este momento, y no quiero perder más tiempo con la luz. Así que vamos a dejar aleatorizar todo en la luz aquí ahora, y vamos a usar comentarios y esas cosas para organizar el evento Así anota luz verde. Y éste serán serán nuevos objetivos. Vamos a hacer que este sea rojo. Y éste verde. Vamos a alterarlos, a ver si tenemos algo más. Tenemos nuestro objetivo, seguir objetivo o ser específicos. Sigue claro tenemos nuestro movimiento de luz aleatorio y nuestro color aleatorio para las luces. Y esto es suficiente. Tenemos nuestros nuevos eventos, somos nuestros dispensadores de eventos que llaman a estos eventos Y ahora vamos a asegurarnos de que tenemos suficientes albercas en la escena al inicio del juego. Entonces qué podemos hacer, podemos agregar No, podemos dejar éste en el campo. El mensaje de error fue porque hemos hecho referencia a él por defecto. Realmente no necesitamos hacerlo en este punto, pero podemos dejarlo adentro. No es problema. Así que vamos a tenerlo aquí. Quiero generar múltiples bolas durante el evento comenzar a jugar Así que vamos a agregar muchas más bolas a la escena. Sólo para tener ing la escena. Y lo que voy a hacer porque agregué tantos bolspwers y no quiero realmente hacer un juego equilibrado También lo estamos haciendo con fines de demostración. Después de todo, lo que voy a hacer es en lugar de hacer este evento N veces, voy a agregar comenzar a jugar y al comenzar a jugar, voy a hacer N, esencialmente haciendo este evento tres veces. Y en el marcador de gol del evento, restableceré y lo volveré a hacer. Entonces, al comienzo del juego, esto generará muchas bolas para que las use Y si marco un gol, lo cual es un poco duro para mí por alguna razón, probémoslo. A nosotros le sumamos esta bola y Bam. Tenemos muchas más pelotas. Lo que también podemos hacer, podemos llevarnos aquí a todos nuestros esponjadores de pelota Haga clic en Shift y colóquelos en el aire. Y creo que vamos a centrarlo un poco más. Y ahora caerán del cielo, y vamos a agregarlos a una carpeta, llamarlo A subrayado Spooners No tengo que usar guión bajo en los nombres de carpetas, pero es solo una fuerza de hábito, y vamos a tener una bola verde a muy y nuestro comido de partida está ahí, así que solo podemos comenzar colocando estos dos aquí, y podemos comenzar nuestro juego lexis Y a medida que comenzamos nuestro juego, tenemos muchas pelotas con las que trabajar. Podemos moverlos. Y a medida que metemos una, obtenemos aún más pelotas, y las bolas no pueden salir de campo porque ahí tenemos colisión. Y ahora tenemos un juego de infinitamente generar bolas hasta que te ahogues en él Ahora, hemos terminado con los relámpagos, los elementos de la marcha y el juego, las interacciones entre ellos, y vamos a detener adiciones de juego allí en este curso 25. UE5 FC08 03: Ahora, hablemos del personaje en tercera persona y de lo que podemos hacer con él. En este caso, el personaje de tercera persona es nuestro maniquí irreal que se nos proporciona por defecto. Te explicaré algunos de los parámetros que puedes agregar en él y algunos componentes útiles que podemos usar para nuestros actores, y tal vez incluso podamos poner pocos como decoración en la etiqueta. Si vuelves a tu carpeta de contenido, planos de tercera persona, encontrarás tu personaje en tercera persona, ábrelo Y notarás que aquí hay muchas cosas para saltar, movimiento, acciones de entrada mejoradas, entrada mejoradas, que no se explicarán en este curso, pero son la nueva forma irreal de agregar insumos a los actores Es un tema para el próximo curso. Y aquí tenemos nuestra ventana gráfica, nuestro personaje, nuestros personajes caja de colisión o componente cápsula, y nuestra cámara que sigue al personaje nuestro componente de movimiento de personaje Entonces esto es en lo que hoy vamos a enfocarnos. Tenemos componente de movimiento de personajes aquí, y si echas un vistazo al panel de detalles, verás muchas cosas que te pueden resultar útiles. Entonces tenemos nuestra aceleración. Tenemos nuestra velocidad de movimiento, velocidad de natación, etcétera No nos vamos a centrar en cada una de ellas. Lo que necesitamos es nuestra velocidad. Por lo que tenemos una velocidad máxima de 500 en este momento, que no encuentro lo suficientemente alta como para navegar por esta enorme área Se siente muy lento. Vamos a aumentarlo. Entonces aumentémoslo en, digamos, y que sea 1,500 y que sea 2000. Veamos jugar ahora. Ahora, nuestro personaje se mueve mucho más rápido, y tal vez incluso podamos anotar algo. Y cuando golpeamos algo, nuestra velocidad de movimiento baja un poco, pero podemos atrapar nuestras pelotas y navegar por ellas. Vamos a intentarlo de nuevo. Ahora podemos encontrar nuestra forma de andar diferente y volver a hacerlo por sí Y podemos repetir esto tantas como queramos y llenar toda la pantalla visible. Ahora, puede notar que ahora tenemos Max lk velocidad de 20 k como la puse anteriormente Pero si controlo Z y lo vuelvo a poner a 500 o controlo Y, también, las diferencias aquí son enormes. El hecho de que solo puedas ir a una mayor velocidad mayor es porque tenemos cierta cantidad de aceleración, y a menos que golpee algo, va a caer vamos a disminuir la velocidad máxima, digamos, vamos a dividirla por dos. Creo que ese número era demasiado alto para nuestros propósitos. Entonces veamos, y todavía tenemos una velocidad lo suficientemente alta. Pero y si quieres tener cierta cantidad de aceleración pero no quieres ir instantáneamente a alta velocidad posible. Aquí es donde entra nuestra aceleración. Y si le das un vistazo a nuestra aceleración, nuestra aceleración máxima es actualmente de 1,500. Si lo ponemos en un número mayor, digamos, 5,000, compilar, presionar play. Obtendremos velocidad de impulso instantánea, y va a ir más y más y más alto hasta que alcancemos nuestra velocidad máxima, que creo que ya es demasiado alta. Entonces pongamos la aceleración a 3,000 y asegurémonos nuestra velocidad máxima no se acerque a este número ridículo. Lo reiniciamos, es muy lento, así que pongámoslo como ¿qué podemos hacer aquí? ¿Por defecto? Fueron, creo, 500. Y vamos a multiplicarlo por digamos seis. Y nuestra aceleración máxima se puede multiplicar por dos. Aquí tenemos opciones adicionales para la gravedad, cuánta gravedad debería aplicar a este personaje, podríamos reducirla, lo que nos permitiría saltar más alto y nuestra caída será más lenta. Lo que podemos hacer, podemos aumentar nuestra velocidad de salto. Entonces, dupliquemos nuestra velocidad de salto, y digamos que la tripliquemos. Compilarlo, presionar play, y ahora tenemos un salto de Superman, y en realidad podemos saltar fuera de límites, que no es algo que me gustaría tener Así que vamos a reducir nuestro salto en 300 incumplidos, y vamos a hacerlo 800 Paso. Así que volvamos. Tenemos alto me gustaría tener salto lo suficientemente alto como para saltar por encima de las bolas, pero no lo suficientemente alto para poder salir del nivel. Siempre podría agregar una pelota caminando encima del nivel, pero no vamos a hacer eso, ya que a propósito limitamos nuestro salto Instancia. Tenemos control aéreo que nos permite ajustar cuánto podemos controlar al personaje mientras se mueve, y tenemos muchos más ajustes para volar, para nadar, para interacciones físicas. Y esto es en lo que quiero enfocarme. Tenemos un juego donde estamos moviendo objetos basados en la física. Así que vamos a ocultar todas estas opciones que en realidad no necesitamos. Y nos vamos a centrar sólo en nuestra física. Como puedes ver, aquí hay muchas opciones que tardarían una eternidad en pasar. Entonces, solo busquemos la física. Y tenemos nuestras opciones de interacciones físicas. Hemos habilitado la interacción física, lo cual es cierto, la necesitamos. Y lo que tenemos para Alvin limita a un objeto de física. Entonces cuando golpeamos un objeto o colisionamos con él para ser específicos, le aplicamos una fuerza de 500 Si lo aumentamos a algo así como 5,000 compilar y jugar, e interactuamos con un objeto, digamos, se está aplicando mucha más fuerza que antes. Y si aquí agregamos una cantidad ridícula, digamos, sucederá, simplemente se evaporarán instantáneamente en el momento en que los toquemos, lo que puede parecer gracioso, pero no es ideal cuando todo lo que tocas explota y entra en el olvido en Pero sí quiero algún impacto extra cuando toquemos las esferas. Como tal, vamos a presionar play, y veamos. Nuestra fuerza ahora es suficiente para arrastrar hacia abajo múltiples bolas al mismo tiempo y solo podemos movernos. Y con nuestra mayor velocidad, podemos repetir esto tantas termas que queramos Ahora, aquí también podríamos hacer click sobre esto y si aumentamos la fuerza mínima de contacto, esencialmente la cantidad mínima de fuerza podemos aplicar a algo como digamos 2000 y digamos que también es nuestro máximo ahora. Si compilas y presionas play, obtendremos esta extraña interacción. En realidad no lo estamos haciendo muy diferente. Quizás te preguntes qué es esto en este caso. ¿Es esta la cantidad de fuerza aplicada, no la fuerza de empuje? Como tal, no es exactamente lo mismo. Se trata de un cálculo basado en la cantidad de fuerza. Si estás tratando de agregar fuerza adicional por kilogramo, lo cual es útil para la simulación física, pero no es algo que te ayude a la hora empujar objetos reales. Asegurémonos de que todavía tenemos nuestras opciones habilitadas como queríamos, y ahora saldremos de esta sección. Y vamos a hablar muy brevemente sobre objetos, componentes, componentes actores para ser claros. Entonces ya creamos pocos planos. Y vamos a crear uno más. Y ésta sólo vamos a hacer actor, vamos a llamar a prueba por ahora porque no la vamos a quedar. Vamos a agregar una malla, y digamos que agregamos una malla estática aquí, y podemos hacer esta malla estática en hagamos esta pirámide. También agreguemos el material para ello porque ¿por qué no? Nosotros compilamos esto. Y si haces clic en Agregar aquí arriba, encontrarás una gran cantidad de componentes que puedes agregar. Tenemos elementos de IA, tenemos señales de audio, tenemos formas adicionales, cámara, brazo de resorte, etcétera Todos ellos son muy útiles y están superando por su cuenta. Pero de lo que vamos a hablar aquí es movimiento. Tenemos flotación, entierro, proyectiles y movimiento giratorio Movimiento de proyectiles cuando se aplica a un actor, vamos a ponerlo de nuevo al nivel Si eres un movimiento de proyectil, aquí. Aplicado. Entonces vamos a la velocidad del proyecto, y digamos que la velocidad del proyecto es de 10,000. Hagámoslo un número menor para que podamos no tengamos problemas para verlo, y la velocidad máxima es como 2000, mismo punto que antes, aceleración y velocidad máxima. Y lo que podemos hacer es que podemos desactivar la gravedad sobre esto si queremos para que no tenga nunca tirón gravitacional ni nada, pero vamos a dejarlo como está y presionar simular Estos eventos nos van a dar muchos errores ya que no hay personaje jugador, pero te habrás dado cuenta, pero te habrás dado cuenta, lugar de quedarte en un solo lugar, se empujó hacia adelante. La razón por la que este ahorro es por el movimiento de proyectiles Esto es considerado como un proyectil. Y si reducimos la escala de gravedad a cero, compilamos, presionamos play. Esto simplemente avanzará al infinito ya que no tiene ninguna gravedad de proyecto aplicada a él, a menos que esto realmente golpee algo y se destruya sí mismo como un proyectil que necesitarías agregar en la sección de planos del proyectil, esto simplemente irá infinitamente Esto es bastante útil para hacer juegos, obviamente. Donde quieres tener proyectiles, balas, tal vez algún tipo de esfera u objetos, si estás haciendo dos juegos D, no dos D como A, donde quieras tener algunos actores interactuables que puedas engendrar y destruir y necesitan moverse en cierta dirección Puedes usar solo movimiento de proyectil. Ahora, echemos un vistazo a la otra opción de movimiento. Este es el movimiento giratorio, y lo que hace el movimiento giratorio es, que es que gira cierta velocidad en una dirección determinada. Entonces, si volvemos al nivel y vamos a hacerlo más grande, hagámoslo mucho más grande. Y vamos a presionar play. Notarás que se está moviendo en su espacio. Se puede utilizar esto como decoración en el ambiente. Si quieres que algunos objetos simplemente roten, o puedes usarlo como elemento de juego. Depende de ti. Pero todo lo que hace es simplemente rotar al actor en un solo lugar. Se usa más comúnmente para camionetas, como monedas, heltrops, kits met y cosas en los juegos donde tienes esta camioneta simplemente girando en un solo Esto se puede usar con el propósito de no tener que agregar elementos adicionales a su plano que no sea solo un movimiento giratorio para girarlos alrededor. Y eso es un ahorro de tiempo para una cosa muy sencilla, que suele tardar mucho más porque se necesita llamar a un evento que gira un objeto en un cierto radio en una dirección, cada fotograma del juego. Simplemente puedes saltarte todo eso y solo agregar esto. Entonces, si necesitas algo para solo rotar en un solo lugar, usa movimiento giratorio. En cambio, no es necesario usar matemáticas vectoriales complicadas. Y eso es prácticamente todo lo que necesitamos recordar que Unreal es una herramienta muy, muy cara para el desarrollo de juegos Tiene de todo. Al igual que, tiene tantas cosas de las que ni siquiera hemos hablado, ni siquiera mencionado. Traté de cubrir todo lo que pude, y lo voy a mantener al mínimo, complejidad. Pero todos necesitan arrancar en alguna parte para aprender este motor. Y para seguir adelante, es necesario antes que nada, aprender estos conjuntos de habilidades muy básicas. Y lo que es más importante que necesites entender cómo los actores, cómo el código, cómo todo en el mundo de los CD interactúa entre sí Para que puedas diseñar tu camino hacia lo que realmente estás tratando de crear. No empieces con ideas demasiado complejas. Incluso las cosas más simples en los juegos suelen ser un proceso complicado de integrar, y algunas cosas muy complicadas en realidad pueden ser simples. Es contraintuitivo en la mayoría de los casos. Lo más difícil en este prototipo que hicimos fueron en realidad las interacciones ligeras, el hecho de que tuviéramos que hacerlas tantas veces en tantas variaciones es solo un testamento de lo difíciles son los sistemas de luz en todos los juegos en general. Por lo general, ni siquiera querrías tener tantas luces ya que es experto en rendimiento Y en este nivel, lo más sencillo de hacer era realidad el elemento de juego en sí, que era simplemente meter las bolas en la puerta de entrada y hacerlas explotar. En el momento en que agregas cualquier cantidad de complejidad a tu nivel, ya que tener múltiples luces interactúan con algún otro actor, etcétera, el juego de repente se convierte en una tarea de ingeniería donde intentas asegurarte de no usar muchos recursos, pero al mismo tiempo, estás tratando de hacer algo que se vea bien, sea divertido, y para todos los efectos y propósitos, el juego de tus sueños. Hay mucho más que cubrir. Como tal, estaremos lanzando cursos de nivel intermedio y experto en el futuro. Y también tendremos cursos individuales para algunas materias que requieren de sus cursos individuales para recorrerlas, como material, relámpago por sí mismo, animación, que ni siquiera hablamos en este curso, cómo crear animaciones, cómo aplicar animaciones, cómo hacer IA dentro de irreal Y por IA, me refiero no solo a la IA para el movimiento de los personajes en el juego, sino también a la IA misma, como la programación basada en notas generativas de IA Se pueden hacer muchas cosas en irreal, aparte de los juegos, se puede hacer producción cinematográfica Puedes hacer simulaciones por razones científicas si quieres Y Unreal sigue agregando más y más funciones al motor Así que siempre hay nuevos temas por explorar. Y hay una miríada de oportunidades para que usted mismo mejore Ten en cuenta, no tienes que saberlo todo en irreal Necesitas entender lo irreal a un grado donde puedas trabajar con ello. Pero a menos que seas un desarrollador de juegos indie o estés tratando de estar en el desarrollador de juegos, no tienes que conocer todos los aspectos del motor. Lo que recomendaría para que empieces a aprender lo básico. Y después de que confíes en tus conceptos básicos, empieza a experimentar alrededor. Intenta crear algo interesante, busca información. Si no entiendes algo o necesitas una guía adecuada para ello, siempre estamos encantados de responder tus preguntas y no dudes en consultar nuestros otros cursos nuevos. Siempre habrá más por aprender. Y en un momento, es posible que tengas que decidir si vas a especializarte en cierto campo en el motor y trabajar equipo con otras personas para desarrollar tu juego, o vas a profundizar tu juego y trabajar en él solo. No tocamos el uso activos de marketplace en este curso, ya que quiero usar la menor interferencia externa posible. Porque cuando estás aprendiendo, es importante aprender lo básico antes de poder saltar y descargar material maestro complicado que ni siquiera entenderás aunque lo veas. De nuevo, siéntete libre de experimentar. No hay nada malo en eso, pero asegúrate de que tus conceptos básicos sean sólidos. Mi nombre es Al Jun Ab lazade y estoy feliz de que hayas terminado mi curso, y estoy feliz de ayudar a los nuevos desarrolladores de juegos y quizás solo a los usuarios casuales de motores irreales mejorar su conjunto de habilidades Y si tienes alguna duda, no dudes en preguntarlas en la sección de comentarios, y estaría más que feliz de ver tus propias creaciones y no hay razón para ser tímido al respecto. Todo lo que compartes es mejor que nada. Gracias por su tiempo, y espero verlos a todos en mis nuevas conferencias. Pocos temas adicionales para cualquiera que esté interesado en el desarrollo de juegos. Cuando estás iniciando el proceso de desarrollo del juego, puede parecer muy complicado y puede parecer muy aterrador y es complicado, pero no hay que tenerle miedo. El proceso de desarrollo del juego es una interacción muy compleja de diferentes campos como la masa, la creatividad, la representación artística de tu propio gusto. Habilidades de codificación combinadas con animación, modelado , cualidades de producción como planificación , escritura de cuentos, hay muchas cosas en un solo juego, y honestamente, el juego puede ser tan complejo y tan difícil como quieras que sea o tan simple como quieras que sea. No tienes que hacer un juego difícil para aprender a hacer un juego. Es mejor empezar con algo pequeño. Y la razón principal por la que muchos desarrolladores de juegos están teniendo muchos problemas es la mala planificación, alcance demasiado amplio y el intento de hacer demasiado a la vez Y en el proceso de este proyecto, ya que están desarrollando este juego, pierden la motivación, pierden el tiempo, pierden dinero. Y todo esto es parte del viaje. Están tratando de completar para entrar en el objetivo final de ser un desarrollador de juegos, tal vez lanzar un juego muy exitoso y hacerse rico, o puede que solo estés tratando de hacer un juego tú mismo o te gustaría jugar o alguna otra gente a la que te gustaría mostrarle tu juego. Independientemente de tu razonamiento sobre lo que intentas hacer, cuando comiences a aprender cualquier motor de juego, no limitado a motor irreal específicamente, sino que aún aplica, comienza pequeño Elige una idea simple, elige un juego simple, que puedas terminar en idealmente pocos meses, como máximo medio año, terminarlo. No tiene que ser bueno. No tiene que ser perfecto. Puedes tener tantos bichos y errores como quieras. Solo asegúrate de que el juego tenga un inicio, un medio y un final, y que todo esté más o menos funcionando como debería. Y eso por sí solo es un gran logro donde la mayoría de los desarrolladores de juegos fallan. Lanzar un juego incluso uno malo es un logro cuando lo estás haciendo solo. Es un tema diferente si eres parte de la empresa y eres como una gran empresa con cientos de trabajadores, estás tratando de hacer un juego. Ese es un tema diferente. Pero cuando estás aprendiendo y dónde estás en el desarrollador del juego, comenzando simplemente no saltes de inmediato a los MMORPG o juegos multijugador o mecánicas demasiado dónde estás en el desarrollador del juego, comenzando simplemente no saltes de inmediato a los MMORPG o juegos multijugador o mecánicas demasiado complicadas para tu juego. Simplemente empieza simple. Haz un juego de terror, haz que un Mio haga un juego de plataformas, lo cual puede ser complicado, pero solo mantenlo simple El proceso de desarrollo del juego puede ser uno de los campos más duros en general, porque requiere de muchas disciplinas que no suelen interactuar entre sí. Es posible que necesites música muy jazzy para el juego que tengas en mente Pero quizá no tengas las habilidades para producir esa música. Entonces tendrás que aprender a hacer esa música además de cómo hacer el juego tú mismo, o tal vez necesites comprar activos que no siempre son exactamente lo que quieres ser, que es la opción más razonable. En la mayoría de los casos, encuentra a alguien que pueda hacer esa música y esté dispuesto a ayudarte en tu proyecto. No tienes que hacerlo solo. Siempre puedes conseguir que algunas personas te ayuden. Te puede costar dinero a menos que sean tus amigos o familiares. Y hay que recordar que si bien los juegos en sí son divertidos de jugar y fáciles de ver y ser como, Oh, ya sabes, el próximo gran juego, haré mejor copia del juego ya existente y lo haré mucho mejor que ese. Voy a tomar las mismas ideas, los mismos principios, hacerlos un poco más diferentes, ser más complejos, y hacerlo más grande. Alguien ya antes que yo, ¿qué tan difícil puede ser? Ese es un bonito escollo en el que saltar. Asume que es fácil de hacer, pero en realidad, hay mucho trabajo puesto en el fondo de muchos juegos que simplemente parecen simples. Puede echar un vistazo a juegos más simples suelen ser los juegos de disparos de la implementación y los juegos de terror. Tienes un tipo que dispara a otras personas, y tal vez estés pensando, bien, todo lo que necesito es un tipo que se mueva, un arma, una bala. Y otras personas para golpear por el Y puedes estar asumiendo que esto es todo lo que necesitas. En cierto sentido, lo es. Pero cuando empieces a implementar esto en tu juego mientras intentas pulir tu juego, notarás que muchas cosas no se sienten bien. Deberías haber ido, pero no se siente tan impresionante. Miras el medio ambiente, es algo que le falta. Esto se debe a que muchos detalles en muchos juegos no son realmente evidentes a primera vista. Por ejemplo, en el ejemplo anterior más corto que acabo de mencionar, la pistola puede tener un marco de impacto cuando le disparas. Puede ser el sonido. Puede ser el VFX Puede ser el temblor de cámara que obtienes cuando disparas el arma. El ambiente puede necesitar más viento, tal vez algunos colmillos adicionales o variación en él. IA puede parecer estúpida ya que solo te están horneando y disparando mientras estás parado en su lugar, mientras que un juego hecho por profesionales puede tener una IA que está tratando de cubrirte activamente y dispararte desde una mejor posición o huir de ti cuando están bajos en HP o altos. Lamentablemente, hay muchos juegos que ignoran muchos aspectos del juego con solo intentar copiar en juegos ya existentes. Pero no tienes que copiar los géneros de juego ya existentes o incluso los elementos del juego. Siéntete libre de experimentar y hacer lo que quieras. No hay nada que te impida hacer una especie de juego de tronos y todos son actores siendo dulces, o piedras o rocas o donas para todos como, Y solo puedes tomar este extraño concepto y convertirlo en un juego. Puedes convertirlo en un tirador, puedes hacer un juego de rol táctico, etcétera Estás mientras esta idea que acabo de mencionar puede ser compleja de implementar, no hay ninguna razón real por la que no puedas, aparte de la cantidad de esfuerzo y tiempo que vas a poner en ella. Tienes plena libertad creativa para crear lo que quieras. No te quedes atascado en solo copiar una plantilla o el trabajo de otra persona. Solo hazte creativo. Hazte apasionado por lo que estás tratando de hacer. No intentes copiar el trabajo de otra persona. Esto no es una escuela. Esto no es un examen. No necesitas aprobar cierta calificación, y no tienes forma de hacerlo simplemente copiando el trabajo de otra persona directamente. Puedes intentar mejorar el trabajo de otra persona inspirándote inspirándote su trabajo y mejorándolo hasta el punto que ahora ya no es su trabajo, es tu trabajo. Y la siguiente persona que vaya a jugar un juego mirará tu trabajo y será como, Esto es impresionante. Yo lo copiaré y ellos copiarán los elementos de tu juego. Y muy probablemente fallarán porque nada bits originales en la mayoría de los casos. Para que sea simple y breve, sé creativo. No tengas miedo de experimentar. No hay razón real para copiar y pegar el trabajo de otras personas. Y no sobrepongas el alcance en tus proyectos y solo empieza algo y lo termines. Y el primer juego que termines hacer se sentirá muy diferente, y lo más probable es que no sea bueno. No puede vender. Puede recibir malas críticas. No te lo tomes en serio. Llévala con actitud profesional, mejora. Los críticos ems y lo usan como combustible para mejorar aún más tu juego. No te rindas en medio del camino. Este es un viaje muy largo en el que estás entrando. Pero creo que merece la pena recorrer este camino y podemos recorrerlo juntos. Gracias por su tiempo. Espero verte en la próxima conferencia, y espero que aunque no esté en la conferencia, veré tu trabajo en el futuro. Como tal, siéntete libre compartir tus proyectos si estás trabajando en alguna o solo una muestra en las plataformas sociales. Y si tienes alguna duda, no dudes en ponerte en contacto. Estoy más que feliz de ayudar. Como compañero desarrollador, sería un honor para mí ayudarlos a todos a hacer algo genial. Consulta aquí y diviértete. 26. UE5 FC09 01: Hola, y bienvenidos de nuevo a la conferencia. En esta conferencia, vamos a agregar elementos de interfaz de usuario a nuestros juegos. Entonces en este juego, actualmente, tenemos nuestras pelotas, tenemos nuestras porterías, pero realmente no tenemos ningún punto ni HP ni ningún otro elemento de UI en la pantalla, y los vamos a agregar con el sistema de widgets de Unreal Entonces, para hacer esto primero, vamos a crear una carpeta. Vamos a la carpeta de llamadas de blueprint y creamos una carpeta de información y llamemos widgets O simplemente un widget debería estar bien. Aquí, hacemos clic derecho y aquí vamos a la interfaz. Interfaz de usuario y haga clic en Widget Blueprint. Solo lo llamaré UI Widget guión bajo, UI. Eso es todo. Obtendrá este menú Widget, que es su menú de diseñador para el widget. También tienes una gráfica, que es muy similar a blueprint con ligeras diferencias Entonces, para entender cómo funciona el widget, primero, necesitamos crear nuestros elementos de interfaz de usuario en el widget. Y después de que se cree ese widget, lo adjuntaremos a nuestro punto de vista. Entonces nuestra pantalla en cierta posición. Ahora, decidamos primero qué vamos a tener un widget. Por ejemplo, agreguemos una puntuación de cuántos Vamos a ver los puntos que anotamos. Obtenemos un punto por cada esfera, nos metemos en la puerta. Podemos hacer un widget para calcular nuestra velocidad para mostrarnos a qué velocidad estamos corriendo. Y honestamente, podríamos hacer muchas más cosas. Tal vez también podamos poner en el tiempo que transcurrió el allay, y en realidad podemos agregar final de juego a este mini Ahora, antes que nada, agreguemos estas cosas aquí. Ahora, ahora que tenemos esta interfaz de widget, echemos un vistazo a los elementos del lado izquierdo. Puede notar que tenemos elementos que pueden ser útiles para nuestra interfaz de usuario. Entonces tenemos deslizadores, tenemos imágenes, botones, etcétera. Como imagina esto siendo un botón que usarías. Entonces digamos que puede tener un texto en él llamado Start. Y cuando haces clic en esto, algo sucede, etcétera Por ahora, voy a eliminar esto Podrías simplemente poner en el elemento que quieras y colocarlo donde quieras en la pantalla y codificar en la lógica para ello. Pero el mejor uso de los elementos de la interfaz de usuario es cuando están en un determinado panel o lienzo, si van a tener algo así como una lista de un inventario o quieres que el widget sea movible de una parte de la pantalla a otra. Por ejemplo, imagina algunas cajas de chat en juegos multijugador. Y da clic en el cuadro de chat y muévalo para que eso sea posible, necesita tener un panel de widgets que solo puedas moverte. Y obviamente, necesitarías codificar en cómo se debe mover, pero no vamos a ir tan profundo en el widget. El widget de uso más general que tenemos se llama Panel Canvas. Y el panel de Canvas aquí es bastante pesado de rendimiento. Simplemente probablemente no sea la mejor manera de hacerlo si estás tratando de optimizar tus UI Si tienes muchos elementos de interfaz de usuario en tu juego y todos ellos están usando paneles Canvas, y los estás actualizando constantemente todos, agregará una cantidad sorprendente de costo de uso de tu CPU. E incluso puede comenzar a quedar rezagado en tu PC, etcétera, y tal vez te preguntes por qué tu juego se está retrasando cuando has optimizado Lo más probable es que se haya metido aquí metiendo demasiadas UI con paneles de lona Nuevamente, el costo de rendimiento no es muy alto, pero aún así puede llegar a ser muy alto dependiendo de lo complejo que lo hagas. Entonces por ahora, sólo vamos a usar el panel Canvas. Y como pueden ver, tenemos este panel de Canvas, pero no tenemos nada dentro. Por ahora, voy a redimensionarlo. Volvamos a nuestro nivel. Entonces imaginemos lo que vamos a necesitar. Tenemos a nuestro personaje aquí, y tenemos a nuestro personaje, y por cierto, si presionas F ocho, recuperarás tu mouse mientras este personaje aún está en medio del juego s. Y si haces clic, puedes mover cosas por ahí. Entonces es simular es una especie de mezcla entre simular y simplemente jugar. Simplemente presiona F ocho después de iniciar la simulación. Para que puedas probar cosas. Y de esta manera, las referencias al personaje jugador no se romperán porque todavía existe. Es solo que no lo estamos controlando por el momento. Entonces ahora tenemos nuestro personaje, y tuvimos una muy tenemos esta vista de cámara, ¿verdad? Y yo sólo voy a presionar Fight. Sólo para que veas mi ratón. Digamos que queremos un texto en parte superior derecha que diga cuántas puntuaciones obtuvimos, y digamos en la parte inferior derecha aquí, queremos tener un valor que demuestre lo rápido que nos estamos moviendo. En el centro de la parte superior de la pantalla, también podrías en un tiempo transcurrido, solo por el bien de ello Así te puedo mostrar cómo hacer widgets basados en la segunda vez. Ahora bien, esto deberíamos ahora tener una idea de lo que necesitamos. Así que vamos a crear nuestro widget. Primero, agreguemos un bloque de texto aquí como marcador de posición por ahora Y vamos a ver. Todo lo que necesitaremos son realmente cuadros de texto, pero solo voy a agregar una imagen también solo para poder mostrar cómo usarla. También podríamos hacer una barra de progreso. Sí, hagamos una mezcla de todos ellos, aunque sea innecesario para este mini juego que tenemos, solo para que pueda exhibir. Y llamemos a este bloque de texto. En la parte superior derecha, vamos a tener nuestro puntaje, ¿verdad? Entonces, vamos a anotar. Esto es solo un marcador de posición por ahora. Y digamos que tenemos una barra de progreso y en vez de ponerla aquí. Digamos que si llegamos a medida que nos metemos en la puntuación, obtendremos una barra de progreso. Y digamos que cuando lleguemos a la puntuación de diez, esta barra de progreso se llenará y esencialmente ganaremos el juego o haremos la misión o lo que sea. Y esta imagen solo puede ser un elemento UI que podamos usar, y pongámoslo aquí. Simplemente lo vamos a tener en cierto color o con cierta imagen con algunos números en él. Entonces necesitaremos un texto. Y si lo arrastro y lo suelto aquí, notarán que no se apegó a la imagen porque mientras los Lienzos pueden tener hijos, esta imagen en sí no puede tener Así que necesitaría colocarlo perfectamente en la parte superior, idealmente. O necesitaría pero puede que no, dependiendo del tamaño de la pantalla, esto puede llegar a la posición. Entonces si pongo un texto justo aquí como marcador de posición, sólo va a cambiar. 1 segundo Oh, sí, cambiemos el color del texto para que lo veas. Si muevo mi pantalla, el texto puede salir de posición con bastante facilidad, especialmente si no pongo el panel adecuado en un panel adecuado. Entonces lo que puedo hacer, puedo crear una caja o una superposición. Entonces puedo agregar superposición aquí. Y dentro de esta superposición, puedo agregar esta imagen, y puedo agregar este cuadro de texto. Ahora bien, esta superposición está actuando como una frontera para nuestro libro de texto y nuestra imagen, y hagamos nuestra imagen más grande Vamos a meterlo en el centro. Y vamos a ver. Podrán notar algo interesante aquí. No puedo redimensionarlo directamente fácilmente porque es muy pequeño Así que vamos en cambio lo que podemos hacer, podemos dar click aquí en este botón, llenar. Si solo lo centras, esta imagen, imagen vacía que hemos agregado no tiene ninguna imagen real dentro de ella, así que no hay referencia para que obtenga. Entonces, lo que puedes hacer, puedes simplemente telón de fondo esto y agrandarlo. Este bloque de texto puede estar en el medio. Podríamos agrandarlo, pero realidad no hace mucho por el texto, y lo colocamos directamente de centro a centro alinearlo. Podríamos editar el relleno, etcétera, para hacerlo. Por ejemplo, si tenemos esto así y agregamos un padding de 50, se moverá 500 sería algo así, pero no hay razón para hacerlo. Si solo quieres centrarlo, solo puedes centrarlo haciendo esto. Y ahora, esto siempre permanecerá en el centro de este widget de superposición, y solo puedes poner este widget de superposición donde queramos. Y este widget de superposición que vamos a usar se puede seleccionar y poner exactamente donde queremos que esté. Ahora, me gusta que mis posiciones sean valores sólidos, pongámoslo así. Ahora, nuestro bloque de texto siempre estará aquí independientemente del tamaño, etcétera, la pantalla o el dispositivo con el que estés jugando, y que está bien Panel de lienzo en sí, como pueden ver, es que ponemos estos widgets en fuera de él, y cometí un error de hacer clic en Debería clic en la superposición en lugar de solo imagen, y vamos a moverlos adentro. Puedes verificar tu tamaño de pantalla específicamente si quieres aquí si estás intentando que coincida con un tamaño de pantalla específico, o simplemente puedes hacer clic en el ajuste personalizado y poner, por ejemplo, digamos, 180, 54 como 180, ¿verdad? Entonces este es un tamaño de pantalla al que estoy apuntando. Obviamente, sólo puedo hacer clic en Ajustar pantalla, que sería mi pantalla. Y aquí en la parte inferior, se nos muestra nuestra escala DPI, que puedes configurar si quieres. Pero no es necesario, así que vamos a saltarnos esa parte y centrarnos en lo que estamos haciendo aquí. Entonces, volvamos a lo que estamos haciendo. Tenemos nuestro puntaje. Tenemos nuestra barra de progreso. Podemos agregar tiempo después de esto también, hagamos mis disculpas ¿Por qué lo estoy arrastrando desde aquí? Lo necesito de aquí. Bien, así que vamos a tiempo transcurrido aquí o tal vez para mantenerlo limpio, vamos a agregarlo No, no, no, solo hagámoslo en medio de la pantalla. Ahora, tenemos Este va a ser nuestro tiempo, así que por ahora sólo voy a cambiar el nombre, así que recuerdo por qué lo puse ahí. Esto no va a ser Podrías poner en el contenido para tus contenedores aquí desde aquí y puedes modificarlos, su posición. Su color, su sombra, si necesitan alguna imagen, aquí hay un montón de cosas que puedes echar un vistazo. Se pueden cambiar los fones. Tendrías que descargar teléfonos si quieres tus teléfonos personalizados. Podrías usar tipografía, etcétera, como los tamaños de letra itálica, todo lo que quieras cambiar, puedes hacerlo aquí Y siempre, puedes simplemente llamarlo click en contenido de tamaño. En este caso, el tamaño del widget coincidirá con el contenido, lo cual es importante si tienes un widget que tenga una mecánica como click en el elemento en el elemento widget del widget. Digamos que tienes un ícono. Y si quieres hacer clic en el icono y quieres, digamos, arrastrarlo en el inventario o simplemente activarlo o lo que sea, tal vez quieras simplemente dimensionarlo al contenido, el widget. De esa manera, el widget es exactamente del mismo tamaño que lo que ves. Obviamente podrías fingirlo haciendo una imagen transparente en el fondo la daba más grande, pero eso es solo por qué harías esa tontería, ¿verdad? Así que solo ten en cuenta, esta es una buena manera de asegurarte de que el tamaño de tu interfaz de usuario coincida con lo que es el contenido. Entonces esta vez, si agrego letras extra y por centro, ahora mi widget es más grande. Lo que significa que solo puedo presionar en la parte X de este widget, y seguirá activando el evento que vamos a crear para que sea función o lo que sea. Ahora, volvamos. Ahora, tenemos nuestro widget, que en este momento no es realmente funcional. Entonces hagámoslo. En primer lugar, asegurémonos hacer algo con esta etiqueta de imagen aquí. Tenemos este widget, que es sólo un pincel de color blanco. No tenemos una imagen puesta para ello. Así que vamos a seleccionar una imagen o textura aleatoria que tengamos. No tengo ningún widget subido, pero honestamente, podría hacerlo con cualquier textura. Entonces vamos a ver. Solo usemos widget irreal por ahora El solo uso de re logo puede no ser la mejor opción. Hagámoslo, sí. Y podemos mover esto con aquí. Ahora que lo pienso, puede ser una mala idea usar este logo porque está haciendo difícil ver la textura. Encontremos que también podrías usar materiales, pero esto no va a ser funcional. Tendrías que crear un material de interfaz de usuario, que hablaremos más adelante. Así que vamos solo por ahora, solo escoja este color. Simplemente elige una textura aleatoria. Y sí, hagámoslo. Textura extraña. Ni siquiera estoy seguro para qué sirve. Vamos a usar esto. Y aquí tenemos esta barra de progreso. La forma en que funciona la barra de progreso es similar a la que esperas, pero necesitas poner los valores que necesita para, ya sabes, completar el progreso. En primer lugar, tenemos su color por defecto, y tenemos color de relleno. Y lo que hay que hacer para lograrlo. Bien, vamos por ahora quitemos esto. Vigila esta barra de progreso. Tenemos el avance del 0%. Si aumento esto, verás que está aumentando en la pantalla aquí. Pero puedes notar mientras dice por ciento, es el valor de cero, uno, siendo cero cero, siendo uno 100%. Por lo que no se puede simplemente ingresar un valor del 50%. Tendrías que convertir tu valor a un porcentaje y convertir ese porcentaje a un valor 010-1, y poner el valor aquí de esa manera Te mostraré cómo vincular valores más adelante. Tenemos nuestras opciones, cómo queremos que se sienta nuestro progreso. Entonces digamos llenar desde el centro será algo así. Completo desde horizontal. Este puede ser un buen sistema no solo para las personas para el progreso, sino también la cantidad de ruido que estás haciendo si quieres Esto es desde la vertical desde el tope inferior. Obviamente, puedes cambiar la forma de esta barra de progreso, así que solo podrías hacer algo como esto o tope inferior, obviamente. Vamos a mantenerlo de izquierda a derecha, y vamos a hacerlo como era antes. Hay cosas adicionales que puedes hacer, pero no nos vamos a molestar también con ellas. Podríamos agregar frontera. Entonces, ¿cuánto de la barra de progreso se puede llenar, etcétera? Nosotros no vamos a preocuparnos por ellos. No me gusta el color azul para esto. Hagámoslo rojo. Por ahora, quizá debería hacerlo verde, pero mantengámoslo así. Y aquí tenemos nuestra puntuación y nuestro tiempo, y tenemos nuestro bloque de texto para la velocidad Por lo que tendremos que crear alguna funcionalidad adicional para que todos ellos se actualicen en el juego. Los widgets se pueden utilizar como elementos de menú, pueden ser como elementos de la interfaz de usuario. Su propósito es permitirte activar algo algún código que hayas precodificado o simplemente para mantenerme actualizado y disponible para ti como fuente de información, ¿verdad Imagina un juego sencillo como la cantidad de HP que tienes, cuántas vidas te quedan, como tus artículos de inventario, inicio, menú de pausa, menú de configuración, todo lo que sea interactable o simplemente dándote información como elemento de la interfaz Es un widget en irreal. Entonces tenemos esto, pero no tenemos ninguna lógica asociada a ellos. El motivo es porque no los creamos. Tendremos que crear nuestros elementos de interfaz de usuario. Lo siento, lógica de interfaz de usuario. En primer lugar, vamos a eliminar este eventi Y tenemos aquí evento pre constructo y evento constructo. Es similar al evento comenzar a jugar, pero la diferencia es que las UI necesitan ser construidas para funcionar Entonces puedes preguntar cuando me construya, ¿no sucede automáticamente cuando empiezo el juego? No. Entonces responder a eso es no. Es necesita ser generado y unido a la pantalla, esencialmente, a nuestra ventana gráfica a través Y la forma más común de hacerlo es hacerlo en el personaje jugador. Entonces, si vamos a nuestro contenido y vamos a nuestro plano en tercera persona, este es nuestro personaje Solo para asegurarme de que estoy viendo el bleprint correcto, solo voy a escalarlo, presione play. Sí, soy gigantesco A lo mejor este es el tamaño adecuado. Entonces estamos viendo el plano correcto. Aquí, necesitaríamos agregar un evento para crear nuestro widget de UI y adjuntarlo a nuestro viewpoard que haremos en el siguiente video 27. UE5 FC09 02: Ahora, vamos a crear nuestro widget. Vamos a crearlo aquí. Primero, encontramos un nodo llamado create widget y agregamos a. Lo unimos juntos. Y aquí seleccionamos el Widegit que creamos. Entonces lo llamamos subrayamos UI, no el mejor nombre para ello, pero vamos a querer agregar esto para que el evento comience a jugar Así que vamos a cortarlo. Tengo evento empezar a jugar, y tenemos algunas cosas pasando aquí, lo cual está completamente bien. Podemos simplemente agregarlo como solo para asegurarnos de que no lo estropeamos. Podemos agregar un nodo secuenciador. Podemos ponerlo aquí, esto, y aquí podemos agregar nuestra lógica de widget create UI. Entonces el juego comienza el juego agrega entradas predeterminadas a nuestro personaje jugador, que es solo tener en cuenta, esto es creado por Unreal, y el contexto de mapeo y sistema de entrada mejorado van a ser parte del curso intermedio en el futuro Como hay muchos detalles, no quiero complicar demasiado este curso. Solo debes saber que esto aquí es responsable asegurarte de que tus entradas estén registradas cuando estés jugando al juego. Así que saltando, moviéndose, etcétera, todo. Toman su subsistema local de entradas mejoradas y le agregan el contexto de mapeo para que pueda trabajar con él. Entonces lo que hacemos aquí, el juego comienza jugador se crea disculpas Y la primera secuencia hace entrada y la segunda secuencia hace la ventana gráfica Y esto sucede instantáneamente, más o menos, por lo que notarás diferencia. Entonces, por ahora, compilemos, guardemos y pulsemos play. Nuestra interfaz de usuario está en realidad en la pantalla. Pero puedes notar que está un poco en una posición extraña. Y esto se debe a que necesitamos ajustar nuestro diseñador de UI así que antes que nada, asegurémonos de anclar nuestros elementos. Entonces, lo que hace el anclaje, el anclaje asegura que tus elementos permanezcan en cierta parte de la pantalla, y puedes hacerlo dando click aquí y dando clic arriba a la derecha. O simplemente puede hacer clic aquí y hacer clic aquí. Por lo que este puntaje ahora siempre está anclado a este punto. Podría moverlo, pero no tiene sentido. Por lo que esta puntuación ahora siempre está anclada a este punto. Sólo hagámoslo con nuestro y quiero que sea de tamaño uniforme. Simplemente voy a dimensionarlo contenido, hacer que sea más fácil de administrar. Así que los tamaños aquí ya no importan ya que es el tamaño del contenido, y vamos a hacerlo alrededor de 100 en Z, lo siento, X, y digamos 100 no lo quiero todo el camino hacia arriba en la pantalla. Esto tiene el mismo problema. Tenemos que anclarlo hasta cierto punto. Entonces haz clic en Anclar, haz clic en la parte superior derecha y ahora está anclado en la parte superior derecha Quizás te preguntes cuál es la diferencia entre anclar algo y no anclarlo. La diferencia es si el tamaño de la pantalla es diferente, emergencia es una pantalla móvil. ¿Dónde se debe colocar este widget en relación con el tamaño de su pantalla? Entonces, si tu esquina de pantalla es esta línea correcta de aquí, una pantalla móvil tendría una diferente vamos. Digamos, tamaño de iPhone móvil, en muchos de no en el momento en que lo cambié a tamaño de pantalla móvil, este widget de interfaz de usuario lo he abandonado de la ventana gráfica Entonces, si estuviera jugando esto en un móvil para ser específico saco el iPhone five S, este widget no se vería porque de todos modos no lo anclé. Pero este widget aquí se movió junto con la pantalla porque está anclada la parte superior derecha de la pantalla Ese es el punto de anclar. Anclas tus widgets a una parte específica de tu pantalla. Entonces cuando tu pantalla está en diferentes tamaños, supuesto diferentes dispositivos, siempre permanece en una posición relativa a esa parte de la pantalla Entonces, si quieres que algo esté siempre en la parte superior derecha, anclalo a la parte superior derecha. Si quieres que algo esté siempre en el centro de la pantalla, anclarlo al centro. Tienes opciones aquí. Entonces solo hazlo. Ahora, tomemos esto, por ejemplo, y lo que vamos a hacer, antes que nada, vamos a no me gusta el tamaño de pantalla, obviamente, así que vamos a restaurar. Y lo que vamos a hacer es que te des cuenta que realmente no puedo anclar este texto o esta imagen porque están dentro del panel de superposición. Entonces este panel de superposición es el que necesita ser anclado, no los widgets dentro Entonces lo haré abajo a la derecha. Y obviamente, cuando muevo mi overlay, también mueve mi widget. Hagámoslo -100 y menos 150. En realidad, supongo que 200 serán mejores. Ahora, también vamos a trasladar esto al mismo lugar, así podríamos hacerlo 100. A lo mejor no. Por el contenido de tamaño, será muy pequeño porque no tiene su tamaño real. Hagámoslo por 100 y cero. No 100. Y en cuanto a Y, hagámoslo 200. En realidad, vamos a hacer 400. Y el tiempo, queremos que esté anclado al centro, arriba, o podrías hacerlo así Pero lo quiero a la mitad de la parte superior, no toda la parte superior. Entonces voy a hacerlo así. Entonces también, esto da una buena indicación de dónde está el centro del nivel, así que sólo puedo ponerlo aquí. Podría posicionarme en cero, cero, pero eso va a estar en el ancla superior, que no es ideal. Entonces vamos a moverlo así, que sea 100. Vamos a dimensionar el contenido, y lo vamos a poner -50 -25 mejor Bien, ahora están bien colocados. Ahora compilamos, guardamos, presionamos play y nuestros widgets están en su lugar. Pero puedes notar que los widgets no están haciendo nada en este momento porque aún no les agregamos ninguna lógica. Hicimos todo lo que necesitamos aquí en el segmento de interfaz de usuario del widget, así que vamos a guardarlo por ahora y salir. Primero, necesitamos entender cómo va a funcionar esto. Estos dos esencialmente están tratando de obtener un valor similar e información similar. Esta es una barra de progreso fuera del total. Entonces, ¿qué te gusta ? Digamos que necesitas diez puntos. Por lo que este será un valor porcentual de tu puntaje actual y un valor de diez. Entonces digamos que tienes cuatro anotaciones, cuatro puntos. Esto debería ser del 40%. Por lo que estos dos requieren el mismo valor para hacer sus cálculos. Este requiere velocidad. Entonces nuestra velocidad actual, que obtendremos en un segundo. Y éste es justo el tiempo transcurrido desde que comenzó el juego. Entonces este es un momento Delta. Esto es velocidad, y estos dos solo buscan un valor que puedan usar para mostrar tus puntuaciones. Ahora bien, la forma en que hicimos nuestro marcador fue pateando una pelota en esta puerta Lo que podemos hacer es algo bastante sencillo, de verdad. Podríamos lanzar a esta interfaz de usuario. Esta interfaz de usuario siempre está disponible en el nivel porque forma parte de tu UI principal, ¿verdad? Hay otras formas de hacerlo para que quede muy claro. Podrías hacerlo dentro del propio widget, podrías agregar la lógica aquí. Pero la forma más común de anotar puntos y calcular es haciendo casting a la UI o haciéndolo desde el jugador, ya que ya tenemos una referencia a esto dentro del personaje jugador, que es a lo que vamos a hacer cuando vamos a agregar nuestra interfaz a nuestro personaje jugador. Entonces agreguemos una interfaz. Y creo que lo llamamos Tutorial Interfaz BP. Oh, no, no, no. Mis disculpas. Olvidé el nombre de la interfaz que estamos usando, así que asegurémonos de seleccionar la correcta. Hay un montón de interfaces irreales. Vamos a revisar. Si te olvidaste como yo, ¿cuál era el nombre del plano Al igual que acaba de recibir el plano y comprueba el nombre de la interfaz Bien, entonces marca de gol BPI. Bien. Vayamos aquí y agreguemos nuestra interfaz. Gol BPI anota, compila, guarda, y aquí tenemos nuestro marcador de gol Entonces lo que vamos a hacer es cuando ocurra el marcador de gol , evento llamado marcador. Vamos a obtener esta referencia del widget aquí. Entonces para que eso lo haga, solo asegurémonos de tener este valor siempre a mano. Nosotros lo llamamos widget. Subrayar la interfaz de usuario. Y lo pondremos aquí. Y obviamente, nosotros también lo configuramos. Entonces esto probablemente se haga a la inversa. Vamos a configurarlo y después de establecerlo, obtener este valor y ponerlo de esta manera. Obviamente, si no estás seguro de tu código, es mejor idea probarlo. Volvamos. Entonces ahora tenemos una referencia de widget que podemos usar, ¿verdad? Por lo tanto, la puntuación de llamada del evento. Cuando esto sucede, queremos que la puntuación cambie en el widget de interfaz de usuario. Entonces lo que vamos a hacer, vamos a volver a nuestra interfaz de usuario y pasar a nuestro modo de edición gráfica. Eliminemos estos dos. Por ahora, no tenemos ningún evento planeado para GameStar Y aquí, vamos a crear una variable, y vamos a llamarla score. Y vamos a convertirlo en valor flotante o valor entero dependiendo de lo que necesitemos, pero vamos a hacer float en este caso. Simplemente mantenlo simple. Y lo que va a pasar cuando ocurra este evento evento llamado score sucede, obtendremos nuestro valor, el valor de puntaje y más uno de él. Entonces vamos a conseguir este puntaje y ponerlo en más uno. También tenemos que obviamente conseguirle puntaje. Así que solo podrías hacer esto. No creo ahí, hay un plus directamente. Oh, no, ¿nosotros? Ya que sólo vamos a hacer más uno, usted puede hacer esto. Entonces, qué hace esto en cambio, esto es por cierto, me tomó mucho tiempo encontrarme con ello. No sé por qué eso me facilitó tanto la vida. Entonces si solo más uno y pones establece esto aquí, ¿verdad? Esto en la parte superior, tomando este valor, agregando un plus uno al valor existente y configurándolo también se puede hacer por este nodo. Si todo lo que estás haciendo es agregar un plus uno a un valor flotante, solo haz un seguimiento de algo o lo que sea, solo puedes usar esto. Esto agrega uno al valor de puntaje que ya tenemos en el widget y lo establece en lo que sea. Entonces si es uno, se convierte en dos, si son dos, se convierte en tres, etcétera Entonces vamos a saltarnos esta parte y en su lugar, vamos a establecer este valor directamente más uno. Y obviamente, tendremos que probarlo después de tener nuestra funcionalidad. Ahora, volviendo a nuestro diseñador, voy a mostrar cómo vincular valores a los no valores, mis disculpas, variables a la lógica que creaste 28. UE5 FC09 03: Bienvenida de nuevo. Continuando por donde nos quedamos. Vamos solo por ahora, llevemos aquí el texto de la partitura. Y vincula este texto a nuestro valor flotante. Entonces, la forma en que funciona el enlace es que vincula este texto aquí, es decir, en lugar de ingresar manualmente este texto aquí como tal, lo que hacemos en cambio, solo lo vamos a reemplazar con una variable o algún otro resultado Entonces en el momento en que hago clic en Enlazar, obtenemos una función aquí llamada get text. Y puedes notar que aquí no hay nada en el gráfico de eventos, pero tenemos esta función. Esta función está destinada a funcionar solo para este específico con texto de partitura específica aquí. Y se llama Obtener texto por defecto. Va a resultar confuso si tenemos múltiples textos get, así que vamos a reemplazar el nombre por algo así como la puntuación de subrayado Bueno, aquí no necesito subrayado. Pero vamos a conseguir puntaje, y necesitamos un valor de retorno en la forma del texto. Aquí tenemos nuestro puntaje, y lo que vamos a hacer es que vamos a conseguir nuestro puntaje. Y este valor de puntuación se convierte automáticamente en un texto y se pone en la interfaz de usuario. Entonces nuestro valor de puntaje predeterminado es cero, y comencemos. Ahora tenemos un cero en la parte superior de nuestra pantalla. Así que asegurémonos de que de alguna manera pueda meter una pelota en la puerta. Y cambió a uno. Nuestra marcha se movió, y ahora son dos Y ahora podemos volver a hacerlo y esta vez, van a ser tres. Entonces esta interfaz de usuario superior ahora en realidad muestra nuestra puntuación, pero es solo un número. Tal vez quieras, solo voy a agregar otro widget que agregue un texto que diga, Oh, puntuación. Entonces es como anotar dos puntos y número que viene después de él. Ese es un error común. Como hacen las personas que no conocen ciertos nodos en los widgets. Lo que hay que hacer en su lugar es anexar. Mis disculpas. Ese es éste. Sí. Así que tenemos que añadir, pero tenemos que asegurarnos de que esta es la función correcta Entonces aquí está el texto. Lo que necesitamos agregar es una cadena. Así que anexar cadena. Y ponemos esto A a B. Lo sentimos, ponemos este valor en B, y lo ponemos aquí en nuestro valor de retorno. Y aquí a A, anotamos puntaje y ya está. Lo que esto hace, esto cambia el valor del texto en valor de cadena, lo pone en B, y a partir de aquí, ponemos este valor y lo combinamos con una puntuación de texto la cadena aquí, escribimos, y devuelve la salida como un texto después de convertirla de la cadena Voy a explicar la razón por la que estamos haciendo esto después de probarlo. Entonces ahora tenemos asustar subrayado cero. Y si justo entonces conseguimos anotar uno. Podemos hacerlo tantas veces como queramos, y siempre funcionará como debería. Ahora, puede notar que recibimos un mensaje de texto. Tomamos ese texto, lo convertimos en cadena, lo convertimos de nuevo en texto. La razón por la que hicimos esto es a menos que primero cambie esto a texto, esto sucederá. Si lo cambias a string, a string, y lo ingresamos directamente aquí así. Compile, presione play. Notarás que ahora tenemos cero punto cero. El valor flotante por defecto, tiene un punto cero cero adicional después de él, que se elimina cuando lo hacemos vía conversión a texto. Como no necesitaba el valor punto cero, solo usé Lexis También podríamos, por supuesto, tratar de hacer esto con valores enteros. Por ejemplo, si quieres hacer, digamos, una variable de valor entero, vamos a tener una variable score, ¿verdad? Así que si tomamos esto y vamos a duplicar esto eliminar más nuevo y hacer un valor entero y poner en el valor entero. Y para fines de prueba, voy a hacer el valor por defecto en esto. Una vez más, obtener pre default. Eso está bien. Cambiamos este valor por digamos uno, compilar. Y si tuviera que sacarle una cuerda, como Cp, presione play, voy a conseguir una. Que tal vez lo que deberíamos usar aquí con toda honestidad, pero quiero que recuerdes la diferencia. Los valores flotantes tienen sus como hay números adicionales que puedes tener después de cero, como cero punto algo. Los valores enteros son números enteros. No puedes simplemente tenerlos como cero punto cinco. O un punto cinco o dos puntos dos o lo que sea. Entonces en este caso, ya que estamos usando un sistema basado en puntaje, podemos simplemente usar un valor entero en lugar de float, y podemos saltarnos este punto. Pero si tu juego requiere un valor que hay que tener poder dividirlo, multiplicarlo, etcétera Entonces, si vas a hacer algún tipo de operaciones masivas sobre él, por ejemplo, necesitas un valor de cero punto dos o cinco punto siete o algo así, no puedes usar entero como un todo. Tendrías que usar flotador. Y si usas flotador, necesitas asegurarte de hacerlo de esta manera, o siempre puedes verificar estos valores, ¿verdad? Entonces volveré a mostrar una manera de usar float si quieres si necesitas usar float, pero no quieres mostrar duramente los valores enteros Lo que puedes hacer es hacerlo por lo cual reducimos los dígitos fractales Presionamos play, y ahora no vemos nuestros dígitos fractales, pero sigue siendo un valor flotante Entonces seguimos usando un flotador, pero ya no tenemos un punto cero o 20 o lo que sea. Y puedes usar este mismo valor para hacer otras operaciones y aplicar el mismo valor en otro lugar sin estropear estética visual de tu UI donde no quieres que se vean cero punto cero, etcétera, fractales. Entonces vamos a eliminar este entero porque ya no lo necesitamos. Lo voy a mantener como flotador. No hay razón real para no y obviamente lo convertimos a flotar, etcétera, pero aún así podríamos ponerlo directamente también, y aún así estaría bien. Entonces no hay punto uno, ni punto nada. Y podemos simplemente usarlo tal como es, y poner en uno. Y obviamente, queremos que esto sea así. Y mantengámonos un poco organizados. Es una línea simple. Juguemos, pruébelo. Todo está bien. Nuestra función funciona. Oh, me equivoqué. Solo con fines de prueba, probablemente debería haber hecho las puertas más grandes. Bien, sí, funciona. Ahora bien, esta es nuestra lógica de widget para este widget, ya no vemos aquí, esta, la partitura. Podrán notar que es muy pequeño en este momento porque me aseguré de que sea de tamaño de contenido, cual me gusta hacer a menos que no tenga que hacerlo, pero aún así no importa realmente en nuestro caso, así que solo voy a guardarlo lexis Más fácil para mí. A continuación, queremos gestionar éste. Progreso, barra de progreso. No estoy seguro de por qué lo moví. Y esta barra de progreso, usaremos el mismo valor. Por valor, me refiero al valor de susto, el flotador creado. Pero aquí necesitamos vincular no el valor directamente porque como expliqué en el video anterior, lo estamos haciendo por progreso, y nuestro avance es 0-1 Entonces si vamos y vinculamos este valor para anotar, como lo hice ahora mismo y compilamos y presionamos play. Actualmente está en cero, y en el momento en que anote algún punto, se llenará hasta el completo completo porque nuestro valor de uno significa 100%. Así que tenemos que asegurarnos de crear un nuevo enlace para esto. Y esta nueva encuadernación conseguirá nuestra puntuación. Y digamos vamos a crear otro valor de hilo dental y llamarlo digamos marcar gol Entonces este es el marcador que estamos tratando de alcanzar para terminar el juego. Por lo general, no lo harías directamente en el widget. Obtendrías este valor desde el modo juego o en algún otro lugar donde tu lógica esté dictando cuántos puntos necesitas, pero no vamos a aplicar múltiples niveles con múltiples lógicas, así que solo voy a mantenerlo muy sencillo Necesitamos diez puntos para este juego se considere completo, como nivel terminado. Y como tal, lo que vamos a hacer, lo vamos a compilar y poner el valor por defecto de gol de marcador a diez. Ahora, necesitamos obtener un porcentaje de este valor. Podrías intentar buscar como porcentaje, pero esto es sólo un texto. Se convierte a texto. Entonces lo que vamos a hacer en cambio es que vamos a tomar nuestro valor y vamos a dividirlo por puntuación. Lo siento, multiplícalo por puntuación y divídalo por 100. Entonces lo multiplicamos por puntaje, 100. Lo sentimos, multiplicamos por puntaje, y lo dividimos por 100. Esto debería darnos el valor. A menos que recordara mal cómo funciona el porcentaje, esto debería darnos un valor que necesitamos Vamos a probarlo. Ahora, cada vez que ponga otra esfera, obtendré una barra más de progreso. Porque cada vez que obtengo una puntuación, ahora, me da el 10% de la barra, que es exactamente lo que queríamos. Y si fuera bueno en este juego, quizá lo haría más fácil. En fin, así que ahora tenemos nuestro segundo widget funcionando. Y lo único que realmente hicimos, acabamos de agregar este cálculo de porcentaje de flotación, y agregamos una variable que es nuestro objetivo final. Podríamos obtener esto del modo de juego o instancia de juego o cualquier actor que estés haciendo que necesite que algo suceda o widget para reaccionar para ser más específico. Pero eso no es necesario para nuestro minijuego así que vamos a dejar un set A continuación, echemos un vistazo aquí. Tenemos tiempo. Si tu juego tiene elementos relacionados con el tiempo, digamos que tienes un juego de carreras, tienes un necesitas algún tipo de mecanismo de interfaz de usuario de tictac de tiempo, así es como lo vamos a lograr en el siguiente video 29. UE5 FC09 04: Bienvenido de nuevo. En este video, vamos a convertir este marcador de posición de widget que tenemos aquí en un temporizador real que solo se activa. Ahora bien, el problema con esto haciendo esto es que el temporizador es algo que sucede en cada tick. Así que idealmente, no querrías tener muchas acciones de temporizador, porque si vas al gráfico de eventos y obtenemos nuestro tick, Esto necesita desencadenarse esencialmente cada segundo y actualizar nuestro valor para el temporizador, que es idealmente no es algo que te gustaría. Y si estás haciendo esto, independientemente, es mejor probablemente tener alguna forma de detenerlo, el proceso de tick cuando no lo necesitas o opciones alternativas de tictac si está relacionado con algún tipo de evento o algo así para que puedas habilitar deshabilitar este tick incluso podrías agregar una línea de tiempo si son solo 10 segundos o 20 segundos, así que no tienes que preocuparte sobre Evan tomando cada vez. Evan Ts agrega mucho tiene mucho costo cuando hay demasiados de ellos. Ahora, para el propósito de esto, vamos. Tenemos este tiempo aquí, y tenemos que atarlo. Y antes de que me olvide, asegurémonos de cambiar el nombre al anterior. G score, consigue por ciento. Ya lo hicimos. Así que vamos a crear un nuevo enlace. Para este tiempo. Y esto va a nuestra nueva encuadernación, y vamos a llamarlo tiempo transcurrido. Tiempo transcurrido. Ahora esta función se supone que nos da un valor de texto de un tiempo que ya ha pasado. Así que vamos a crear una variable, llamar a asegurarse de que es flotar después. Vamos a llamarlo tiempo vamos a convertirlo a flotar y agregar este valor. Necesitamos actualizar nuestro valor de tiempo por el tiempo de juego en milisegundos. Entonces, consigamos tiempo Delta. Y lo que hace Delta Time, Delta Ts es la cantidad de tiempo transcurrido después de que haya comenzado el juego esencial. Entonces si además de esto por Delta Delta Time y set, más fácil hacerlo así y configurarlo e ingresamos esto como un valor de texto. Veamos qué pasa. 1 segundo. Contexto. Oh, esta no es la hora correcta de Delta. Necesitamos un tiempo Delta para que esto obtenga segundos mundiales de Delta. Lo cual es bastante confuso con su denominación sea tan similar Pero de todos modos, así que nuestro widget está demasiado arriba. Vamos a asegurarnos de que realmente lo puedas ver. Y veamos posición amplia pongamos en alguna parte lex. Compile, presione play. Entonces ahora tenemos un tiempo que está haciendo tictac, y va a seguir haciendo tictac Pero esto no es lo que queremos exactamente. Entonces lo que vamos a hacer, vamos a convertir este tiempo a segundos de tiempo en cadena. Esto lo convertirá automáticamente al formato de minutos, etcétera Entonces ahora, segundos, minutos ahora tenemos un tiempo en la cima. También podrías hacer un temporizador de cuenta atrás, por ejemplo, si quieres tener, digamos, 20 segundos para anotar un punto, y si no anotas un punto en segundos, pierdes el juego, etcétera, o si solo quieres tener una cantidad máxima de tiempo que puedan pasar en cierto nivel, puedes hacerlo de la manera que quieras Si quieres darle la vuelta a la cuenta regresiva, todo lo que necesitarías hacer sería restar este valor, sacarlo todo lo que necesitarías hacer sería restar este valor, de segundos y aplicar este valor en Y necesitarías establecer un valor predeterminado para el tiempo a la cantidad que quieres que sea el segundo máximo. Entonces digamos si quiero tener 30 segundos al máximo. Entonces lo hago 30 segundos, y ahora mi tiempo está saliendo, sólo tengo 22 segundos. Obviamente, no tenemos ninguna lógica aplicada a él para que realmente se acabe el juego o lo que sea, y realmente no lo queremos en este caso, así que voy a quitarlo. Y ahora, lo que podríamos hacer es también si no quieres que sea tan discorante de alguna manera, si no quieres este valor flotante al final, todo lo que tenemos que hacer es hacer lo mismo que mencioné anteriormente Convertimos en lugar de usar valores flotantes, usamos enteros, y solo voy a demostrar uno simple Vamos a dar tiempo. Vamos a convertirlo a entero. Vamos a poner esto un tiempo. Y en realidad, lo que podemos hacer en cambio es convertir esto en entero. Conversión. Oh, no esta diversión. Vamos a hacer esto. Será más rápido. Y establecemos este valor y ponemos este valor como 2 segundos segundos a cadena. Ese fue un error raro, pero ahora obtenemos esto por segundo. Podrán notar que todavía no es lo que queremos. Todavía tenemos ceros de punto. Entonces lo que podemos hacer en su lugar, podemos quitar esto y eliminar esto también, girar puertas. Si recuerdas nuestra función anterior, la forma en que te muestro, tenemos esto aparente y tuvimos que texto flotar aquí. Entonces, lo que podemos hacer en cambio, tenemos que texto cadena aquí de todos modos, pero queremos que sea de float a string. Lo que podrías hacer es crear un append by, vamos a copiar nuestros nodos append para que no tenga que teclearlo vamos a copiar nuestros nodos append para que no tenga que teclearlo Entonces lo que podríamos hacer es simplemente anexar y hacer una combinación de apéndices para ser como, Oh, bien, este primer valor de tiempo es minutos, el segundo valor de tiempo es Por eso, necesitaríamos sujetarlo, dividirlo. Cada vez que llega a los 60 segundos, lo pones a cero, lo pones en un valor. Puedes de múltiples maneras. Si no quieres ese cero ahí solo para que quede claro. Y obviamente, si conoces C plus plus, también puedes editar la funcionalidad de Ciplus plus y hacer una en la que haga exactamente lo mismo que esto, pero urnicar menos Y también siempre podríamos simplemente quitar parte de la cuerda para hacerla de manera que no tengan ningún valor fracturado Pero personalmente no me importa. No me importa que el tiempo tenga milisegundos, sobre todo si eres corredor de velocidad o algo así Asegurémonos de volver a poner nuestro valor de tiempo a cero. Comenzamos en el tiempo cero, y eliminamos nuestro entero, compilamos y guardamos. Ahora tenemos un widget que nos dice el tiempo pasado. Tenemos nuestro progreso var, nuestro puntaje total, todos ellos están desalineados, tristemente Entonces tendré que alinearlos si quiero alguna claridad visual. Entonces pongamos 20 sólo un poco. Quiero que el punto final de la misma sea lo mismo que la puntuación. Sí, en realidad, lo suficientemente bueno. No es ideal, pero no tiene por qué serlo. Sólo estamos prototipando cosas. Y ahora tenemos nuestra línea de tiempo. Tenemos nuestro puntaje. Tenemos nuestra barra de progreso. Ahora cambiemos nuestro valor de velocidad. Ahora bien, esta va a ser un poco diferente porque la velocidad que estamos obteniendo es del personaje en tercera persona. Entonces el movimiento estamos tratando de obtener la velocidad del personaje en tercera persona. Entonces lo que tenemos que hacer, digamos, comprobar lo siento. Velocidad. Entonces lo que vamos a hacer, vamos a calcular la velocidad. Y como pueden ver, esto no es lo que necesitamos. Esta no es una salida que podamos usar. Entonces, en cambio, lo que vamos a hacer Para todos los fines previstos, podríamos obtener fácilmente nuestra velocidad actual personaje de persona Sirt dentro del plano estelar Pero esto no es lo que queremos, en realidad. En un juego, normalmente tendrías en un juego donde querrías ver tu velocidad, normalmente tendrías algún tipo de valor para ello. Por ejemplo, si estás manejando un auto o es un juego donde estás calculando la velocidad o lo que sea, cuando estás volando, ya tendría algún tipo de valor de hilo dental que dictaría qué tan rápido va o no va tu personaje En este caso, no lo tenemos. Solo estamos usando un sistema de movimiento básico irreal, y lo que podemos hacer es obtener nuestra velocidad Si yo 1 segundo, obtener mi pregunta. Esto va como parámetros, así que tampoco es correcto. Entonces vamos a hacer vamos a gráfico de eventos aquí. Y en gráfico de eventos, por cierto, si te has dado cuenta no usamos este tick que teníamos antes lo haremos, asegúrate de eliminarlo si no lo necesitas. Esto agrega costo solo por existir. Vamos a ir a la velocidad, y vamos a crear una nueva encuadernación. Y vamos a llamar a esta encuadernación donde vamos a conseguir velocidad. Ahora, la velocidad que estamos tratando conseguir pertenece al personaje del jugador, y te mostraré cómo se hace en el siguiente video. 30. UE5 FC09 05: Bienvenida de nuevo. Ahora, continuando, estamos tratando de obtener un valor por nuestra velocidad que vamos a tener aquí en la parte inferior derecha en la parte superior del widget. Necesitamos obtener la velocidad de movimiento de nuestro personaje de tercer jugador. Y como he mostrado en el video anterior, no hay manera directa de conseguir como, Oh, consígueme la velocidad de movimiento. Tenemos que pasar por algunas popas, y voy a moverlo del personaje de jugador en tercera persona al propio widget Entonces, si quiero modificar las propiedades del widget, solo puedo hacerlo desde el widget. Lo que vamos a hacer, vamos a conseguir personaje jugador. Y la razón por la que estamos consiguiendo este personaje jugador es porque estamos tratando de encontrar una velocidad para el personaje jugador. Si estuvieras intentando conseguir algún tipo de enemigo u objeto en el nivel, lo ideal sería obtener el valor directamente de ese objeto y de alguna manera transferirlo al widget a través de interfaz o modo de juego. Instancia, si es necesario, por lo general no es buena idea que todos estos cálculos sucedan constantemente a menos que sea parte integral de tu juego, probablemente no deberías hacerlo. Nuevamente, es mucho costo por muy poco retorno. Pero nuevamente, en algunos juegos se requiere, entonces lo haces. Entonces necesitamos la velocidad de nuestro jugador, así que estamos obteniendo nuestro personaje de jugador, y lo que necesitamos es su velocidad. Si obtenemos velocidad y tenemos aquí en la parte inferior, obtener velocidad. Y si solo lo ponemos en retorno, y compilamos press play, verás que estamos obteniendo valores XYZ porque la velocidad suele estar bien, no usualmente se calcula en XYZ. Nos movemos a cierta velocidad, X a XY o Z en el mundo de las tres D. Pero esto no es lo que necesitamos. Como si no quisiéramos poner nuestro XYZ en la ventana gráfica. Entonces, lo que tenemos que hacer tenemos que obtener enlace vectorial. Y ahora este valor es nuestra velocidad. A ver, presiona play. Y ahora, esta es nuestra velocidad. Quizás te estés preguntando por qué se está atascando a 3,000 y por qué se mueve más lento, subiendo. En primer lugar, tenemos un valor fractal al final, lo cual es normal, pero puedes notar también que tenemos una velocidad máxima de 3,000, y eso sucede por el plano, el movimiento del personaje y la velocidad máxima hemos enviado anteriormente Por lo que nuestra velocidad máxima de vax es de 3,000. Es de 3,000 centímetros. Es esencialmente de 30 metros/segundo. Ahora bien, no queremos que se ponga directamente en ese tipo de valor. Entonces lo que vamos a hacer en cambio, vamos a convertirlo a texto en texto. Vamos a asegurarnos de que no tenemos fractales. No los quiero en mi UI por velocidad. Y para los suyos, incluso antes de que hagamos eso, dividiré este valor por 100 porque no quiero que mi velocidad se muestre en centímetros. Quiero que importe. Ahora bien, lo que esto nos va a dar es un valor de uno a 30 siendo nuestra velocidad. A veces va un poco más arriba porque estoy volando y esas cosas, pero eso es comprensible. Esto es sólo calcular mi velocidad total. Entonces ahora vamos a hacer algo que ya hicimos en la anterior. Vamos a anexar Vamos a anexar el valor y después del valor, vamos a sumar hagamos menos Y voy a añadir espacio extra el espaciado. Voy a ponérselo de nuevo. Lo compilaré, lo guardaré, presionaré play. Y ahora tengo un widget que me dice mi velocidad. Hay mucho más que puedes hacer con los widgets. Así que los Widgets también actúan como elementos del menú. Entonces, si quieres hacer clic en un botón o, ya sabes, administrar tu inventario, consultar el mapa, hacer clic en los elementos del mapa, etcétera en los juegos, necesitarías algún tipo de interactabilidad con Y normalmente crearíamos diferentes widgets y los aplicaríamos, los eliminaríamos de la escena como pantalla según los necesites o quitando el widget. Entonces, por ejemplo, tenemos nuestro widget aquí, creamos este widget. También podríamos eliminar el widget. Entonces Widget si vas a los comandos del widget aquí. Has eliminado del padre, puedes usarlo para simplemente eliminarlo o establecer la visibilidad en invisible o simplemente moverlo fuera de la pantalla. Idealmente, si se trata de un widget que consume CPU, etcétera, querría simplemente eliminarlo por completo Así es eliminar y si lees la descripción, está quitando de todo, esencialmente. Se está quitando de containerus, etcétera. A menos que lo necesites, probablemente deberías quitarlo. Y en nuestro caso, este widget es algo que debería permanecer siempre en la pantalla. Es posible que desee si desea ocultar ciertos elementos del widget, puede hacerlo dentro del propio widget agregando algunas llamadas, etcétera, yendo al widget y llamando a eventos directos Tenemos nuestra referencia de interfaz de usuario de Widget aquí. Entonces si quiero, digamos, obtener cierta función. Vamos a tener el uno por tiempo. Así que tenemos co función tiempo transcurrido. Así podrás acceder a tu elemento widget, como funcionalidad por la referencia que tenemos aquí cuando creamos el widget. Así que siempre puedes simplemente administrar tus elementos de widget , partes específicas de él o elementos con solo lanzarlo Lo siento, solo por usar la referencia de la misma. Ahora bien, si quieres hacer click en crear algún tipo de interactividad aquí, lo que tendríamos que hacer es, por ejemplo, solo podríamos agregar un fondo voy a agregar un botón aquí Y en este botón, agregaría un evento llamado On clicked Entonces cuando se hace clic en este botón, se supone que algo va a suceder Así que sólo voy a hacer una cadena de impresión. Y aquí vamos. Y quiero que me diga hola cuando haga clic en este botón. Compilar, PrescoPlay presione play, y como pueden ver, puedo dar click en él Pero cuando empiezo mi juego, perdería la entrada de mi mouse. La razón por la que pude hacer clic en él porque cuando juego, todavía tenía mi mouse, pero no tendrías este mouse cuando realmente comienzas el juego si estás jugando con un teclado, etcétera, porque esto solo va a funcionar dentro del editor irreal hasta que haga clic en Y ahora si quiero volver a hacer clic en el widget, necesito Fight y da click aquí. Pero esta no es la forma en que funcionaría en el juego, sobre todo si se trata de un widget que se genera en medio del juego Para asegurarte de que realmente puedes hacer clic en esto, qué harías, los widgets que requieren tu capacidad para ser clicado tendrían un evento que te permite hacer clic en él Entonces agregaré un evento llamado Construct me and my my miserable typing event construct. Lo que esto hace es que se activa cuando se crea el widget. Esto es esto de ninguna manera debe ser parte de los elementos del widget de la interfaz de usuario. Sólo lo estoy mostrando aquí para que sepas cómo se hace. Idealmente, crearías esto en un widget diferente. Entonces, cuando se contrata el evento, obtenemos el controlador del jugador. Vamos a moverlo. y establecer el ratón Espera. Esto no es así. Mis disculpas. Necesitamos obtener el controlador del jugador de esto, no de los bits de ejecución. Esto es sólo una función pura. Y aquí, lo que hacemos es conseguir el cursor del ratón. Y lo hacemos y compilamos, presionamos y presionamos play. Entonces ahora, mientras este widget está en la pantalla o no mientras es cuando este widget empieza a crearse, todavía tengo mis entradas disponibles para mí en mi teclado, pero también puedo hacer clic en este botón y crear el botón Hola. Pero obviamente, imagina que esto es un inventario o un mapa, etcétera, y no quieres que esté constantemente en pantalla, ¿correcto Por lo que querría desactivar esta entrada del mouse y eliminar ese elemento del widget de la pantalla. Entonces, antes que nada, vamos a anclar esto para que no esté en medio de la pantalla. Sí, mucho mejor. Entonces, cuando presiono play ahora, esto es ahora abajo a la derecha. Primero, ahora que ya está hecho, tomemos este widget. Y sabemos que este widget es nuestro Button 01. Vamos a nuestro Button 01 y aquí consigue. En lugar de vender hola, vamos a ver qué podemos hacer con esto. Esto es solo un widget, así que podemos, supongo, eliminarlo. Sí. Entonces veamos qué pasa cuando hacemos clic en él ahora, cuando lo eliminamos del padre, y ya no está. Pero todavía tenemos nuestro mouse en medio de la pantalla, obviamente esa es una solución bastante fácil. Obtenemos este cursor del ratón y lo configuramos en fs. Y el objetivo debería ser el controlador del jugador, obviamente. Y cuando pulsamos Reproducir ahora y clic en este botón, ahora desaparece. Ahora bien, esto es útil cuando tienes, digamos, una interfaz de usuario en la que quieres tener un click que tenga algo así como, digamos, cuando tienes un determinado elemento, aparece en tu UI. Le das click, lo consumes y desaparece. Obviamente, podrías escribirle toda la lógica, como, Oh, si ya no tienes de este artículo, quítalo, o si quieres, pasó el tiempo, caducó. Depende de ti. Puedes crear lo que quieras con él. Pero personalmente no necesito esta funcionalidad en esta. Y como tal, me lo quité todo. Pero solo ten en cuenta. Así es como puedes crear tus elementos de menú. Se puede poner un texto, se puede hacer clic en los botones. Puedes agregar una cuadrícula, que es si vas a nuestro Canvas aquí, tenemos nuestro panel de cuadrícula, por ejemplo. Y dentro de este panel de rejilla, puedo agregar muchas otras cosas. Entonces puedo agregar el botón uno, el botón dos, el botón tres Es difícil de ver en este momento, pero lo verás en un segundo. Y yo sólo los voy a dimensionar. Puedo ponerlos en filas. Y ahora tengo cuatro botones. En una fila diferente. Puedo moverlos si quisiera. Como se puede ver. Ahora bien, si quieres que tu talla sea más grande, etcétera, simplemente lo harías en el panel de cuadrícula, vamos a dimensionar el contenido en sí mismo Entonces solo va a ser el tamaño del contenido, o en su lugar puedes ir a tus botones y desde los botones, puedes cambiar cómo están acolchados, son pasados, etcétera Y no estás limitando a solo agregar botones. También podrías agregar una imagen aquí. Y si tu imagen es, digamos, Espera. Esto no es imagen. Esta es una imagen HDR. Mis boologis. Solo agreguemos una textura, textura regular. Y esta textura es muy grande, por lo que de pronto está cubriendo todo el widget. Se puede reducir el tamaño. Si quieres, y en mi caso, yo no quiero ninguna imagen, así que sólo voy a quitarle los botones. Si voy al panel de rejilla, verás que tenemos nuestro tamaño aquí. Voy a aumentar el tamaño a algo así, y podemos posicionarlo donde tú quieras. Voy a anclar en la parte inferior izquierda por ahora y colocarlo 000 y luego moverlo como quiero algo como aquí, lo cual está bien. Ahora podemos dar click sobre los botones. Podemos cambiar sus colores si queremos. Entiendo que es un poco difícil de ver desde aquí y Así que tenemos nuestras columnas. Tenemos nuestras filas donde queremos que se coloque esto. Y ten en cuenta, esta es una grilla. Entonces hay como este es un sistema basado en cuadrícula, y hay botones en la cuadrícula. Si quieres elementos de menú que estén más alineados a lo que estás acostumbrado, lo que puedes hacer es de 1 segundo. Creo que fue éste. Y si agrego botones aquí, sí. Si agrego botones aquí. Ahora, quiero que sean horizontales, no verticales, así que lo siento, los quiero verticales, no horizontales. Ahora los tengo horizontales. No, sólo voy a pegar este fondo. Y ahora tengo cinco espacios de elementos UI dentro de esta superposición, y puedo agregar textos encima de ellos si quisiera hacer cada uno. Y digamos, este es el juego de inicio. Sí, no juego de estrellas, entendiste el punto. Opciones, dejar el juego como extras, etcétera, lo que quieras de tu caja de juego Stack Siéntete libre de experimentar. Hay muchas cosas que puedes hacer. Imagina cualquier juego que hayas jugado o hayas visto alguna vez, ahí tienes los ojos y trata pensar en cómo lo hicieron suceder. ¿Cómo hicieron cómo usarías el sistema de widgets en irreal para obtener los mismos resultados y si tendría sentido que estuvieran en el mismo widget o parte de un widget diferente Además, ten en cuenta, puedes agregar otros widgets a tus widgets. Entonces si tienes un widget diferente, que vamos a crear en un segundo. Nuevamente, solo con fines de demostración, en realidad no voy a hacer clic y crear un widget, y vamos a llamar al widget de usuario y vamos a ir Cty Eso es solo SS, solo para que pueda encontrarlo fácilmente. Y aquí, si quiero agregar un widget, podría simplemente agregarlo aquí. Y tengo mi widget SS aquí. Y si abro mi widget SS ahora, y en esto de aquí, agrego un panel, solo voy a agregar un lienzo solo porque es más rápido. Y voy a añadir una imagen o en realidad un texto. Voy a anclar el centro de texto y simplemente escribir texto, compilar, presionar guardar, vamos a jugar. Y puede que no en la parte superior izquierda, tengo SSSS. Yo lo anclé aquí. Se puede preguntar por qué no está aquí, y en la parte superior izquierda gal no la he anclado aquí Yo lo ancla aquí en el centro también y lo posiciona Así que ya ves, tengo un widget dentro de un widget, lo cual es útil cuando tienes sistema de inventario o algún tipo de menú que se superponga a sí mismo, como un menú con múltiples capas y esas cosas Eso es muy útil. Además, te permite codificarlos independientemente unos de otros y puedes eliminarlos cuando no sean necesarios, etcétera, o si algunos widgets son específicos de ciertos niveles, puedes usarlos allí y eliminarlos después Hay muchas maneras en las que puedes usar tus widgets, y el sistema de widgets en general es muy caro. Al igual que aquí hay muchas cosas que puedes usar, pero que solo necesitarías probarlas para ver qué quieres hacer. Y no hay una solución única para todos. Puedes agregar un trober círculo, etcétera, que es solo un buen widget. Me gusta usar. Puedes usar esto como pantalla de carga o lo que sea. Se pueden agregar más elementos, menos elementos. Al igual que, imagina que haces un juego y la cantidad de puntos representa la cantidad de HP que tienes Simplemente puedes aumentarlos o disminuir la cantidad con la cantidad de HB que tengas. Hay mucho que puedes hacer. La imaginación no tiene limitaciones, así que siéntete libre de experimentar. Eso va a ser todo para la introducción de widgets en este curso básico. Tendremos una explicación más profunda sobre los widgets y cómo hacer elementos complicados del juego en el curso intermedio que se lanzarán en el futuro. Espero que hayas aprendido algo y disfrutes tu tiempo aquí. Si tiene alguna pregunta, no dude en comunicarse. Haré todo lo posible para ayudarte. Gracias, y espero que tenga un buen día.