Transcripciones
1. INTRODUCCIÓN: En este curso,
vamos a aprender a
desarrollar un multijugador
a la
plataforma pixel off sobre el uso de blueprints
y Unreal Engine phi phi recreando una mini versión
del conocido
juego 2D Maple Story. Este curso contiene
todo lo que necesitas saber para comenzar con desarrollo
multijugador al
juego en Unreal Engine cinco, incluyendo y Unreal Engine cinco, visión general y navegación. Importar al diseño del
entorno de activos utilizando mapas de mosaico, ¿verdad? Algunos flip books para
animar los activos de píxel. Los fundamentos de planos, creación de
personajes y
movimientos como saltar, correr, y golpear un
sistema de cámara para el personaje, crear enemigos al
trabajar con IA. Mecánica cegadora para
cuerdas y letras. daño a la salud y la muerte son tanto el jugador
como el enemigo. Y experiencia y sistema de
nivelación, creación de interfaces de usuario,
carga de combate, texto, efectos
visuales y efectos de
sonido, y recursos útiles
que
te ayudarán en tu proceso de
desarrollo de juegos. También te proporcionaré el proyecto
terminado para que puedas inspeccionarlo como
desees mientras sigues el curso. Mi nombre es más asunto
y soy el CEO, director de
juegos, y
diseñador de cascos pixel. Llevo trabajando en
Unreal Engine durante los últimos ocho años y
recientemente he lanzado
fan tail on steam, que ha recibido
muy positivamente. También he pasado dos
años desarrollando mi artesanía personal de la junta de proyecto. Y actualmente estoy dirigiendo y programando el nuevo título de mi
empresa, que es un juego de plataformas
3D sin previo aviso. Al final de este curso, podrás crear
con confianza tu propio proyecto de
juego multijugador 2D desde cero. Diseñé este curso
para cualquiera que esté interesado en crear
juegos y Unreal Engine cinco luchas por
crear un juego que
esté a la altura de los estándares actuales de la
industria. Espero que se inscriban y
se unan a mí en este curso. Y recuerda que estoy aquí
todo el camino a lo largo del curso para ayudarte.
Espero verte pronto.
2. Descargar Unreal Engine 5: Go Instale Unreal Engine cinco, tienes que ir a
Epic games.com. Entonces, derecha, Epic games.com, dentro de tu navegador de Internet. Y dentro de aquí tienes un botón azul a la
derecha llamado download. Por lo que al hacer clic en este botón de
descarga, instalará el lanzador
Epic Games. Ahora voy a cancelar la instalación porque ya la
he instalado. Y aquí está el
lanzador en mi escritorio. Entonces voy a lanzar
el lanzador de Epic Games. Ahora te pedirá que inicies
sesión y podrás registrarte con una
cuenta gratuita de Epic Games si no tienes una, también puedes iniciar sesión con
todas las otras opciones. Pero voy a iniciar sesión con mi cuenta de Epic Games porque ya
he hecho una. Por lo que haciendo click aquí, estoy escribiendo mi e-mail, ejecutando mi contraseña. Y una vez que inicies sesión
en el lanzador de Epic Games, así es como se ve. Dentro de aquí, lo
que quieres hacer es click en esta pestaña Motor Unreal. Y dentro de aquí
quieres hacer click en biblioteca. En lugar de biblioteca, puedes ver todas las Epic Game son todas
las versiones de Unreal Engine. Y puedes hacer click en
este botón plus si
quieres instalar y versión
Unreal Engine. Por lo que al hacer clic en él, se
puede ver éste aparece y haciendo
clic en el número, puede seleccionar qué versión de Unreal Engine
desea instalar. Ahora ya puedes ver que ya he instalado el
Unreal Engine 55.2. Este podría ser un número diferente en el momento en que estás
viendo este video, tal vez sea 0.4 o 5.1, y eso realmente no importa. Este curso va a funcionar en cualquier versión que
haya instalado aquí. Así que
solo asegúrate de instalar Unreal Engine cinco aquí abajo podrás ver
tus proyectos anteriores. Entonces estos son mis
proyectos anteriores y esto
estará vacío si no has
usado el motor antes. Entonces una vez que haya instalado Unreal Engine cinco,
sigamos adelante.
3. Crea un nuevo proyecto: Vamos a seguir adelante y lanzar
Unreal Engine cinco. Una vez que haya
puesto en marcha el motor, aparecerá
esta ventana. Aquí. Puedes abrir
tus proyectos recientes, pero ahora mismo estamos creando un proyecto completamente nuevo
y un juego completamente nuevo. Así que pinchando aquí
en la pestaña de juegos, también
puedes ver un implacable, puedes hacer cosas
como cine y video, automotriz, diseño,
arquitectura y así sucesivamente. Tan genial. Pero ahora mismo
nos interesan los juegos. Por lo que pinchando aquí y
a la derecha se pueden
ver diferentes plantillas con las
que puedes empezar. Entonces, por ejemplo, puedes comenzar con una plantilla en
primera persona. Si estás creando un
shooter en primera persona, puedes comenzar con una plantilla de
tercera persona, una plantilla de vehículo y así sucesivamente. Pero se puede ver que no
hay uno para picks slot o un juego 2D.
Y eso está bien. Todas estas plantillas, en realidad
puedes crearlas tú mismo desde cero si
sabes lo que estás haciendo. Entonces esto no es muy
difícil de crear. Y lo que suelo hacer por mis
proyectos, para mis cursos, suelo empezar con
un proyecto en blanco porque quiero enseñarte
todo desde cero. Y una vez que aprendes
todo desde cero, eres capaz de crear todas
estas plantillas tú mismo. Así que vamos a crear
un proyecto en blanco. Y para la codificación
estamos seleccionando blueprint. La plataforma de destino es de escritorio, la calidad preestablecida es máxima. Y para estos datos consiente si esto está marcado para
ti Sólo en boletos, por lo que no tenemos nada aquí. Solo queremos un proyecto en
blanco, en blanco y ahora seleccionar
un nombre para el proyecto. Y para éste estamos creando una pequeña versión
de una historia de arce. Así que llamémoslo historia de
Maple así. Y puedes, por supuesto seleccionar
donde quieras guardarlo. Pero solo lo guardo en
la ubicación predeterminada. Así que adelante y da clic en Crear. Una vez que el proyecto se lanza, así es
como se ve y dice, ¿Te
gustaría
actualizar este proyecto? Sólo voy a hacer
click en la actualización. Y para los plugins, solo
voy a hacer click en despedir. Y esto probablemente
no esté abierto para su uso encendido. Voy a esconderlo rápidamente. Tu motor probablemente
se vea así. Y ahora que hemos
creado nuestro primer proyecto, pasemos a
la siguiente lección.
4. Descripción general de Unreal Engine 5: Antes de empezar a crear
nuestro proyecto 2D, tomemos una
visión general rápida de este motor. Lo más importante aquí en medio es la ventana gráfica. Y dentro de la ventana gráfica, puedes ver tu
juego de visualmente. Recuerda, este es un motor 3D, por lo que estamos dentro de un mundo 3D. Este es el mapa de inicio predeterminado dentro de Unreal Engine cinco. Y aquí dentro del
puerto de vista se puede navegar alrededor. Así que manteniendo pulsado el botón
derecho del ratón, así que manteniendo pulsado el botón
derecho del ratón y haciendo clic
en W en el teclado, te
moveremos hacia adelante. Y manteniendo pulsado el botón derecho
del ratón hacia abajo y haciendo clic en S te
moverá hacia atrás. Al hacer clic en D te moverá hacia la derecha y haciendo clic en una te
moverá hacia la izquierda. Así que recuerda mantener presionado el botón derecho del ratón
y puedes ver, puedes mirar a tu alrededor, puedes moverte con W. D es una a, y esto es lo que
uso todo el tiempo. Así es como navego
por dentro del motor. Pero también puedes mantener presionado
el botón derecho del ratón y puedes mantener presionado el botón
izquierdo del ratón. Por lo que sosteniendo ambos botones
puedes ver también puedes moverte
así. mantener pulsado solo el botón
izquierdo del ratón, puedes avanzar y
retroceder así. Y manteniendo pulsado el botón
derecho del ratón, pulsando E en el teclado, te
moveremos hacia arriba y manteniendo pulsado
el botón derecho del ratón y pulsando hasta que
te moveré hacia abajo en tu teclado. Y como última cosa, puedes acercar y alejar
con la rueda del ratón. Si tienes eso en tu mouse, puedes acercar y outs. Y de nuevo, el control más
básico que uso es mantener presionado el
botón derecho del ratón y hacer clic en W, D, S, y a. así es como lo encuentro, la forma más fácil de
navegar por ahí, pero eres bienvenido para
encontrar tu propio estilo. Eso está bien. A continuación tenemos unos botones aquí
arriba en la ventana gráfica. Así que al hacer clic en el
primero de
aquí , puedes, por ejemplo, mostrar los fotogramas por segundo
y puedes ver cómo, cuántos fotogramas por segundo se está ejecutando
tu juego
en este momento. Por lo que basta de eso en este momento, vamos a quitar el FPS. También hay algo
llamado vista de juego. Y la vista del juego altera todos los iconos
dentro del juego. Por lo que al hacer clic en éste de aquí, se
puede ver que el
icono desapareció. El atajo es una G en el
teclado, así que da click en G. Puedes ver y ocultar
todos estos iconos. Y esto es bastante genial
cuando realmente
quieres visualizar tu juego
sin ningún íconos. Te imaginas si
tienes un juego grande, puedes tener muchos iconos
dentro de tu nivel. Por lo que al hacer click en G, podrás ver tu juego sin
todos estos iconos. También puedes ir al modo
inmersivo aquí abajo, el atajo es si 11, y esto maximizará
la ventana gráfica. Por lo que haga clic en G va a
ocultar los iconos. Al hacer clic en si 11 minimizará
o maximizará la ventana gráfica. Y en realidad se puede
ver el juego aquí en pantalla completa sin ningún íconos y se puede ver
cómo se ve. Por lo que volveré a hacer clic en F7, y volveré a hacer clic en G
para ver los iconos. A continuación, estamos dentro
del modo perspectiva, pero también hay algo
llamado vistas ortográficas. Para que podamos ver el
juego desde la izquierda. Entonces así es
como se ve desde la izquierda. Si alejas el zoom, así es como
se ve desde
arriba y así sucesivamente. Volvamos al modo de
perspectiva. Sólo quiero
mostrarles que esto existe. Así que volvamos
al modo de perspectiva. Tienes los
modos de vista aquí en este momento lo
estamos viendo en modo Dalit. Entonces con la iluminación, también
podemos verlo
sin ninguna iluminación. Por lo que al hacer clic en Unlit, así es como se ve el
juego. Sin ninguna iluminación aplicada, se puede utilizar en
el modo wireframe. Puedes volver al modo
lead y así sucesivamente. A continuación, muy importante,
tenemos diferentes herramientas que
usamos todo el tiempo. El primero es
la herramienta de selección. Y antes de hacer esto, en realidad
quería engendrar algo dentro de mi nivel. Así que sigamos adelante
y haga clic en esto rápidamente botón Agregar al proyecto. Haciendo click aquí yendo formas. Y sólo quiero
agregar un cubo simple. Por lo que pinchando sobre este
cubo y
lo agregará a tu ventana gráfica
aquí en el nivel. Seleccionar herramienta es sólo una herramienta
donde se pueden seleccionar elementos. Tan autoexplicativo. Al hacer clic en la herramienta
Mover, se pueden mover elementos. Así que pinchando en este
cuadro aquí o este cubo, y se puede ver un punto de
pivote aquí arriba. Y puedes arrastrar desde el tamaño diferente y
puedes moverlo. O podemos dar click en esto, este círculo blanco en
el medio y puedes moverlo a todas las
direcciones todo a la vez. Pero si quieres
moverlo a una sola dirección, puedes arrastrar estas flechas. A continuación tienes la herramienta de rotar. Y de nuevo, puedes
rotar esta caja arrastrando
por
estos ángulos aquí. Y luego tienes la herramienta de
báscula donde podemos escalar la caja en
diferentes ángulos. Y si quieres
escalarlo uniformemente de nuevo, puedes hacer click aquí
en el medio. Y se puede escalar
a todos los lados a la vez. Ahora, es muy, muy importante recordar los
atajos para estas herramientas. Por lo que al hacer clic
en q en el teclado, seleccionaremos la herramienta Seleccionar. Al hacer clic en w
seleccionará la Herramienta Mover, pulsando en E en el teclado, seleccionaremos la
herramienta Rotar y pulsando en R seleccionará la herramienta de escala. Y se puede ver
que esto lo hace mucho más rápido. En lugar de hacer clic
aquí arriba y moverlo, haciendo clic aquí de nuevo y
girándolo y así sucesivamente. Esto lleva una eternidad. Por lo que haciendo click en w, Por ejemplo, podemos moverlo como una
E. Podemos rotarlo. Haciendo click en nuestra tal vez
quieras escalarlo, haz click en W para moverlo
por encima del suelo de nuevo. Y puedes ver que esto es
mucho más rápido para trabajar, por lo que no tienes que hacer click
aquí todo el tiempo. Pero recuerda que
puedes usar los atajos Q, W, E, y R. Así que si quieres un documento completo
de todos estos atajos, puedes encontrarlos en mi página web. A continuación tenemos las herramientas de snapping. Entonces éste es el
movimiento chasqueando. que puedas ver cuando
hago click en w para mi herramienta de mudanza y muevo mi caja, puedes ver que no se está
moviendo sin problemas, es chasquear a algo. Y esta es la
herramienta de snapping si lo deshabilitas. Por lo que al dar click aquí, se
puede ver ahora puedo
moverlo sin problemas. Si lo habilito de nuevo, ahora
estoy chasqueando. También puedes aumentar este
snapping haciendo clic en este número y luego
aumentando el número. Ahora se puede ver que
encaja mucho más. Y esto es muy útil de
usar si quieres colocar artículos como uno al lado del
otro en un lugar específico. Por lo que otro atajo
es que puedes sostener Alt en tu teclado y
puedes hacer clic y arrastrar. Y esto básicamente copiará pegar el elemento así así. Y tal vez quieras colocar artículos como este,
como sostener Alt, arrastrarlos y
colocarlos así. Esto es muy cool donde
puedes usar el snapping aquí. Pero si quieres mover
algo sin problemas, solo
puedes desactivarlo. Y tal vez quieras
colocarlo
específicamente así o lo que sea
que estés haciendo aquí. A continuación tenemos la
rotación chasqueando. Por lo que de nuevo da click en E. Se
puede ver que gira
cada diez grados. Puedes desactivarlo, y ahora podemos
rotarlo sin problemas. Nuevamente. También puedes aumentar
las cantidades de snapping, por ejemplo, cada 30 grados. Ahora se encaja cada 30 grados. Ahora puedes
ponerlos de nuevo a la normalidad, por ejemplo, diez aquí, y no fue hasta aquí. Y lo mismo se aplica
con el escalado. También puedes hacer el snapping
para el escalado. Lo último que tenemos
es la velocidad de la cámara. que puedas ver cuando muevo
mi cámara en la ventana gráfica, digamos que tienes este
gran mundo abierto y me
llevará una eternidad moverme
todo el camino por ahí. Así es como se puede
aumentar las velocidades de la cámara. Entonces, por ejemplo,
puedes ponerlo a ocho. Puedo ver ahora puedo moverme
mucho más rápido en mi mundo. Y esto es muy útil de
usar una vez que tengas un mundo grande. Pero dudo que
usemos tanto para nuestro juego 2D porque
realmente no tenemos tan
grande de un mundo. Pero en un juego 2D, tal vez quieras enfocarte
en algo muy pequeño. Y aquí es muy
útil reducir la velocidad de la cámara a
algo muy lento. Porque quizá
a veces en juegos 2D, estás mirando detalles
muy pequeños. Y esto es bueno para
configurarlo a muy lento para que en realidad
pueda moverse
cerca de los artículos. Bien, basta de la ventana gráfica. Esto fue lo más
importante dentro del motor. Aquí es donde
se puede ver el juego. A continuación tenemos el panel Detalles, y dentro de aquí puedes
ver diferentes detalles sobre los ítems que has
seleccionado en la ventana gráfica. Para que puedan ver cuando selecciono
el suelo aquí abajo, obtengo diferentes detalles. Cuando selecciono este cubo. Nuevamente, diferentes detalles. Detalles como ubicación, ¿dónde se encuentra este cubo
dentro de mi mundo? ¿ Cuál es la rotación
de este cubo? ¿ Cuál es la escala? Y recuerda que
escalamos estos cubos. Sólo voy a aumentar un
poco la velocidad de
mi cámara de nuevo. Entonces este cubo de aquí, recuerda que
lo escalamos arriba y abajo. Y si quieres restablecerla, solo
puedes bajar aquí a la escala en el panel Detalles. Y se puede escribir
111, así como eso. Y ahora estamos de vuelta en
lo que era este cubo. Por lo que fue a la escala de 111. Si has girado,
puedes ver que hemos girado el cubo por diez grados
y el eje z. Y se puede ver qué es x, es sujetando
el ratón sobre él. Entonces el rojo es el eje x
y el verde es el eje
y, y el z es el azul. El azul aquí arriba es la Z, la X es esta flecha roja, y la verde
aquí es el eje y. Nuevamente, se puede restablecer la
rotación escribiendo 000, y ahora hemos restablecido
su rotación. Y si quieres colocar el
cubo en una ubicación específica, puedes editar la ubicación aquí. Puedes ver las ediciones de
ubicación cuando mueves este cubo así
en la ventana gráfica, solo mira aquí
es el valor y ahora. Pero si quieres colocarlo
específicamente en mil, también
puedes solo
Mil así. Y se puede ver que
el cubo se ha colocado específicamente
en 1 mil. Por lo que muy útil utilizar el panel
Detalles de aquí. Si tienes números específicos
quieres que los artículos estén en. Y si desplázate hacia
abajo, puedes ver todos estos diferentes detalles que puedes ver y editar sobre este elemento que
has seleccionado. Así que no te preocupes por todos
estos detalles por ahora. Vamos a trabajar con todo esto más adelante
en el proyecto. Aquí arriba en el World Outliner, puedes ver lo que tienes
actualmente dentro de tu nivel. Por lo que en este momento, si haces
click en este cubo, por ejemplo, puedes verlo también lo
selecciona dentro
del outliner. Si seleccionas este cubo
aquí en seleccionado, automáticamente dentro
del outliner. También puedes seleccionar los artículos haciendo clic aquí
en el outliner. Y uso esto mayormente
cuando quiero
encontrar un ítem específico y
hago click en ese ítem. Por ejemplo, la
luz de dirección es la luz solar. Y cuando hago clic en él,
puedo ver que está aquí
abajo con todos
los otros iconos. Tan muy, muy básico. The World Outliner muestra todos los artículos que
actualmente tienes dentro
de tu nivel. Si hago clic en este cubo y hago clic en Eliminar en mi teclado, hago clic en este cubo también, y hago clic
en Eliminar en mi teclado. Se pueden ver que desaparecen
del World Outliner porque
ya no los tienes dentro del mundo. Aquí arriba tenemos la barra de herramientas
con los botones básicos. Por lo que al hacer clic en el archivo, se
puede crear un nuevo nivel. También puedes guardar el proyecto y puedes
crear un nuevo proyecto. Dentro de la edición, tienes las preferencias del editor. Y dentro de las preferencias de la
pestaña de edición
puedes editar ajustes
sobre tu editor. Por ejemplo,
cuando selecciono este cuadro, se
puede ver que la
línea de selección es naranja. Básicamente puedo hacer click aquí
sobre esto, este color naranja por aquí. Puedo hacer clic en él y en
realidad puedo cambiar el color. Y se puede ver que puedo cambiar el color de selección
dentro de mi ventana gráfica. Ahora nunca he tenido la necesidad editar nada dentro de aquí, así que en realidad voy
a cerrarlo de nuevo, pero es agradable
saber que tienes esa opción dentro de
la configuración del proyecto. Puedes editar ajustes
dentro de este proyecto. Entonces, por ejemplo, puedes editar el icono de inicio
para este proyecto. Puede escribir un nombre de empresa, puede escribir un correo electrónico de
contacto de soporte. Entonces, por ejemplo, cuando
liberas el juego en Steam, gente sabe con quién
contactar si
tienen bichos dentro del juego o si realmente
quieren contactarte. También puedes agregar una película. Entonces, ya sabes, cuando
abres un juego, tienes esa
película de startup, tal vez cinco segundos. Por lo que en realidad puedes agregar
uno dentro de aquí. Entonces muchas cosas que puedes editar aquí para este
proyecto específicamente. Por lo que las preferencias del editor
son configuraciones para tu editor y la configuración del proyecto son configuraciones específicamente
para este proyecto, los proyectos Maple Story
que estamos creando en este momento. Y luego tenemos plugins y queremos trabajar con
eso ahora mismo. Así que no te preocupes por esto. A continuación dentro de ventana, se pueden abrir múltiples ventanas. Esto es muy útil si
tienes múltiples monitores. Por ejemplo, podemos ir a Viewport y dar click
en Ver puerto dos. Y esto abre aquí un
segundo mirador. Y puedo ver aquí esta
ventana gráfica, esto es muy útil. Puedo ver mi juego en pantalla
completa y puedo poner esto dentro de mi otro monitor. Y ahora puedo ver
este juego aquí. Y en mi segundo monitor, tengo esta ventana gráfica que
he abierto todo el tiempo. No te preocupes por todo esto. No tocaremos esto hasta
más tarde en el proyecto. Y al final
dentro de la ayuda, se
puede ver la documentación
de Unreal Engine cinco. Creo que es un poco carente en este momento y es difícil de entender, pero puedes echar un
vistazo si quieres. Aquí abajo en la barra de herramientas, tienes diferentes herramientas
que puedes cambiar entre. Por ejemplo, puedes
crear paisajes, puedes crear follaje, como pasto y
árboles y así sucesivamente. Pero realmente no queremos
tocar ninguna de estas herramientas, porque recuerda,
estamos creando un juego 2D y no un juego 3D. Así que mantengamos estas
herramientas por ahora. Para este botón, puedes
agregar diferentes artículos. Agregamos la esfera o el cubo, en realidad el cubo
dentro de aquí. Pero también puedes agregar otros
artículos como la iluminación. Y puedes sumar cinemática. Por lo que las cámaras, se pueden añadir
volúmenes, efectos visuales. Y añadiremos algunas
cosas dentro de aquí. Pero de nuevo, recuerda,
estamos creando unos juegos 2D, por lo que no vamos a estar usando
toda esta iluminación. Pero yo diría
lo genial de crear un juego 2D dentro de un motor 3D. Te puedes imaginar, puedes crear un juego 2D con efectos de
iluminación 3D. Hay algunas cosas geniales
que puedes hacer dentro de un motor 3D cuando
creas juegos 2D. Por aquí están los planos. Esta es la codificación y
vamos a trabajar con esto más adelante. Así que no te preocupes por eso. Y por aquí puedes hacer clic en el botón Play
para jugar el juego. Y en este momento
realmente no tenemos mucho pasando. Por lo que no hay mucho que ver. Al hacer clic en el escape
se detendrá el Modo Play Game. Y como última cosa, lo que quiero mostrarte
es el navegador de contenidos. Y es aquí donde estarán todos los expedientes que vamos a
importar. Entonces si vas
aquí abajo a la izquierda, tienes algo
llamado sorteo de contenido, haciendo clic en ese botón, esta ventana aparecerá
dentro de este sorteo de contenido. Todos los artículos que
importemos estarán dentro de aquí. Entonces todos los
personajes que tenemos, toda la música, todos los efectos visuales, todos los archivos estarán aquí
abajo en el Navegador de
Contenidos. Y en este momento se puede
ver hay que hacer click aquí
abajo para tener esto abierto. Y creo que para mí es un
poco molesto porque cuando hago clic en algo en la
ventana gráfica, esto desaparecerá. Algunas personas piensan que esto es genial, y que todo
depende del estilo. Pero creo que para mí es
un poco molesto que desaparezca todo el tiempo cuando hago clic en algo por aquí. Y también para el curso, creo que será genial
tener esto todo el tiempo. Por lo que voy a hacer click
en excavado en el diseño. Así también fue como fue
en Unreal Engine cuatro. Y esto se mantendrá
despierto todo el tiempo pesar de que hago clic
en las cosas por aquí. Y prefiero tenerlo
todo el tiempo para poder ver
mis archivos dentro
del navegador de contenidos. Puedes hacer click en este botón Agregar y podrás añadir cosas
diferentes. Por ejemplo, podemos
agregar una clase de blueprint, y esta es la
programación que
vamos a hacer más adelante. También puedes agregar cosas
sobre la animación, cosas sobre blueprints, efectos de
follaje, interfaces de
usuario para la interfaz de usuario. Y esto podría parecer
abrumador porque tienes tantas cosas
que puedes agregar, pero solo vas a usar, diría que alrededor del veinticinco
por ciento de todo esto. Así que no te preocupes por
todos estos botones. No lo vas a usar todo. Y yo diría que solo
debes empezar a aprender
lo básico y simplemente pasar de ahí y hacértelo más fácil
aquí y el papel 2D, esto es con lo que
estaremos trabajando. Entonces este es el pixel art, el juego 2D con el que
estaremos trabajando. También puede agregar elementos dentro del navegador
de contenido
haciendo clic con el botón derecho aquí. Para que puedas ver, puedes
ver lo mismo. Normalmente nunca hago clic
en este botón. Acabo de hacer clic derecho
aquí a la derecha. También puedes agregar
diferentes carpetas haciendo clic con el botón derecho aquí. Y en la parte superior puedes hacer clic en Nueva carpeta y
puedes hacer nuevas carpetas. Y solo voy
a eliminar este
haciendo clic en Eliminar en
mi teclado por ahora. Y si lo desea,
puede seguir adelante y dar clic en este cubo eliminado,
elimine éste también. Ahora conocemos los fundamentos de este motor y
cómo se construye. Por lo que es mucho más fácil
para nosotros trabajar con nuestro proyecto.
5. Crea un nuevo nivel: Para crear un nuevo nivel, primero
vamos a crear una carpeta. Por aquí en la carpeta de contenido. Vamos a hacer clic con el botón derecho y
haga clic en Nueva carpeta. Y simplemente llamémoslo mapas. En lugar de esta carpeta de mapas de
aquí a la derecha, puede hacer clic derecho
y luego puede hacer clic en el nivel. Ahora
llamemos a éste. Me gustaría dar todos mis
archivos que creo un prefijo. Así que sólo voy a
llamarlo mapa para empezar. Y esto hace que sea más fácil una vez que
tengas muchos archivos, en realidad puedes
buscarlos mucho más fácil escribiendo el prefijo. Entonces llamándolo mapa, y
llamémoslo principal. Yo sólo lo llamo el mapa principal. No sé qué nombre
quiero darle en este momento, así que llamémoslo Mapa Principal. Y aquí arriba, por cierto, se puede salvar todo, así que guarde todo. Y si has hecho ediciones
dentro de este nivel, así que antes editamos cubos, así que si agrego un cubano eliminado
y estás tratando de guardar, te pide
que guardes este mapa aquí porque
has hecho ediciones. Y en realidad no
queremos guardar este mapa porque no vamos
a usar estos mapas predeterminados. Voy a hacer doble clic en
mi nuevo mapa que creé. Me va a pedir que
ahorre este nivel aquí. Voy a hacer click
en Don't Save. Ahora estoy dentro de mi
nuevo nivel y puedes ver aquí en mi outliner, World, Outliner,
realmente no tienes nada porque no tienes nada dentro de este nivel en este momento. Ahora antes de terminar este video, vamos a establecer este nivel
como nuestro mapa predeterminado. Por lo que voy a editar y
dentro de Configuración del Proyecto, puedes hacer click en mapas y modos. Y aquí se puede ver el
editor Startup Map es actualmente ese mapa del mundo
abierto predeterminado. Pulsando aquí y cambiándolo a nuestro mapa que creamos, tanto el Mapa de Startup como
también el mapa de juego predeterminado. Así como eso. Ahora cuando
lo cierres, y vamos a
hacer clic en archivo y guardar todo. Ahora cuando cierres el
motor y lo vuelvas a abrir, se
abrirá por defecto en este nivel.
6. Importar los recursos del entorno: Importamos ahora los activos
ambientales que vamos a utilizar
en las futuras lecciones. Entonces por aquí, voy a volver
a hacer clic derecho en la carpeta de contenido
y hacer una nueva carpeta. Y llamemos a este uno activos. En lugar de esta carpeta de activos, voy a hacer clic derecho
y hacer una nueva carpeta. Y llamemos a éste
ambientes en restos de cables. De acuerdo, así que es muy bueno
mantenerse organizado dentro de tu proyecto porque una vez
que
el proyecto se vuelva grande, será un dolor navegar por ahí Si no
sabes dónde se encuentran
los archivos en el interior de esta carpeta de entorno,
voy a hacer click sobre ella. Queremos importar nuestros archivos. Te he dado este
curso materiales. lo que dentro de los materiales del
curso, si puedes ir dentro de
la carpeta Medio Ambiente, dentro de aquí,
te he proporcionado algunos de los archivos. Puede haber más archivos
que veas aquí. Sólo estoy poniendo estos archivos dentro de esta carpeta a medida que voy. Entonces lo que quiero que
importes como solo éste, el camino t dragon y el que se llama Sea Dragon
road, BG para fondo. Por lo que estos dos aquí, solo
puedes hacer clic y arrastrarlos y colocarlos dentro de
la carpeta Entorno. Recuerda, si tus archivos
siguen en un formato raro o zip, no
puedes arrastrar directamente desde
una carpeta zip dentro de aquí tienes que extraer esos
archivos a tu escritorio tal vez, o cualquier ubicación que
quieras. Y luego puedes simplemente, al
igual que una carpeta normal aquí, arrastrarlas dentro del proyecto. ¿ De acuerdo? Cuando estás dentro
del proyecto aquí
puedes ver tenemos nuestras dos texturas y
cuando haces click sobre ellas, así que por ejemplo, hago click en este PGY1 y dopants
en mi segundo monitor. Esta es la que
vamos a utilizar. Ahora éste podría tener, se
puede ver cuando
acerco, está borrosa. En realidad no es selecciones mucho. Y como saben, el pixel art no
es borrosa así. Es
pixeles muy claros que queremos. Y esto es lo que estamos
logrando en este momento, porque vuelves a estar dentro de un motor 3D y el motor 3D lo sopla para
que todo se vea bien. Pero en el caso de un juego 2D, realmente no
queremos
que se desdibuje. Esto es muy fácil. Basta con hacer click en ambos. Por lo que da click en éste
sosteniendo Control, dando click en el segundo, puedo hacer clic derecho, ir a acciones de
Sprite y decir Aplicar
papel a la configuración. Y esto básicamente
eliminará ese efecto de desenfoque. Entonces cuando vuelvo
aquí y me acerco, se
puede ver que el
efecto de desenfoque se ha ido ahora y se puede ver
cada píxel. Y ahora vamos a hacer click
en File and Save All, y eso fue todo para este video. Tan importante tomar
de este video cuando
importas un pixel art archivos,
recuerda hacer clic derecho,
ve a acciones de Sprite y
aplica la configuración de pepper 2D para eliminar ese efecto de desenfoque que
el motor avisa por defecto.
7. Crea un conjunto de mosaicos: Ahora que tenemos listos
nuestros activos,
estamos listos para
crear un conjunto de teselas. Y en el siguiente
video vamos
a crear algo
llamado mapa de teselas. Entonces la diferencia
entre un juego de toallas y un mapa de azulejos es que Tell
dijo que puedes imaginarlo. Si estás pintando
el juego de toallas son tus colores y el
mapa del azulejo es tu lienzo. Por lo que necesitamos contar conjuntos
para crear un mapa de teselas. Vamos a crear los juegos de toallas, los colores con los que
realmente estás deseando pintar en el mapa de azulejos
que creamos más adelante. Así que vamos a hacer clic derecho en
este primero aquí. Estos, estos son los azulejos. Vamos a hacer clic derecho en él. Vamos a la acción Sprite y hagamos clic en
Crear juego de toallas. Voy a cambiarle el nombre. Usualmente elimino ese
conjunto de teselas y el final aquí. Y yo sólo lo llamo
ts o juego de toallas. Y hagamos lo mismo
aquí con el fondo. Acude a acciones de Sprite y
aplica otro lugar. Muy grandes conjuntos de herramientas. Y de nuevo, cambiemos el nombre esos dos gradas
desde el principio. Por lo que ahora tenemos que contar sets. Vayamos en el
primero aquí, nuestros azulejos. Por lo que ahora podemos ver estos son los azulejos y no podemos hacer mucho aquí en lugar
de un juego de toallas. Recuerda ese conjunto de azulejos, solo lo creamos
para que podamos realmente usar esos azulejos para
pintar en nuestro mapa de azulejos. Y ahora puedes hacer click en estos diferentes
azulejos y en
realidad puedes ver las toallas
al hacer clic en ellas. Se mostrarán
aquí a la derecha para que
puedas ver la toalla y
cómo luce. Pero el tamaño no es correcto. Aquí se puede ver el tamaño del
azulejo a la derecha. Tienes que configurar eso
a 30 pixeles por 30 pixeles porque
sé que son 30 pixeles. Los compongo
dentro de Photoshop, así que los junté
aquí en una sola textura. Entonces sé que el
tamaño total es de 30 pixeles. Píxeles. Cuando descargas cosas
de Internet, generalmente
especifican
cuán grandes son. Entonces aquí es donde los colocaste. Por lo que 30 por 30. Ahora bien esto es correcto y al
hacer clic en los mosaicos, se
puede ver
que así es como se ven. Y lo usaremos más adelante
para pintar en nuestro mapa de baldosas. Vamos a cerrar esto hacia abajo
y pasemos al título establecido
para el fondo. El tamaño del azulejo también es de 30 por 30, lo que tenemos que cambiar
esto a 30 por 30 pixeles. Entonces esto fue lo importante. Establecemos nuestro tamaño de azulejo
dentro de este conjunto de azulejos. Y ahora que tenemos
esos conjuntos de teselas, permítanme realmente hacer clic derecho
dentro de esta carpeta, hacer uno nuevo llamado texturas. Y quiero colocar
esta textura dentro de mis texturas porque en realidad ya no
vamos a necesitar esto. No lo elimines porque estos realmente
se
derivan de esta textura. Recuerda que hicimos clic derecho
y creamos un juego de toallas. Pero acabo de ponerlos
dentro de texturas porque entonces realmente no
tenemos que volver a verla. Además, lo mismo con
este fondo uno, moverlo dentro de esta carpeta, y sólo necesitamos
ver estos conjuntos de teselas. Así que hagamos clic en Archivo, Guardar todo, y sigamos adelante.
8. Crea un mapa de mosaico: Ahora podemos hacer clic derecho
en nuestro conjunto de herramientas. Y cuando haces clic con el botón derecho, puedes ver aquí
tienes la opción crear un mapa de teselas. Así que vamos a crear un mapa de teselas. Y de nuevo, voy a eliminar ese mapa aquí al
final que pone. Y sólo voy a llamarlo TM para mapa de teselas como prefijo. Y puedes hacer doble clic en el mapa del azulejo para
entrar de aquí. Aquí antes de hacer
algo a la derecha, recuerda que hay que fijar el ancho y la
altura de la cola a 30 por 30. Así que solo asegúrate de que
esto sea correcto. Y esto es sólo para
ponerlo igual que éste. Así que sea cual sea lo que establezcas
aquí dentro del conjunto, tienes que establecer lo
mismo dentro
del mapa de teselas que para el ancho y la altura del
mapa, puedes elegir qué tan grande debe ser
tu mapa. Entonces, ¿qué tan ancho debe su mapa B? Y para éste, creo que voy
a ir con 60 y el ancho y 40 y la altura. Entonces este es el mapa
en el que estaremos trabajando a la izquierda. Se pueden ver los juegos de toallas. Por lo que en este momento, el conjunto de
azulejos activos es éste, el camino del dragón donde
tenemos nuestros azulejos. Y puedes hacer click en cualquier parte
aquí, seleccionar algo. Y cuando
lo seleccionas aquí a la izquierda, ahora lo tienes aquí como pincel
dentro de tus mapas de teselas. Para que pueda hacer click aquí y se
puede ver cuando haga clic en su pintarlo
en su mapa de azulejos. No hay una
forma rápida de eliminarlo. Tienes que
eliminarlo pero uno por uno. Por lo que haciendo clic en e para
elegir el borrador. Y también puedes hacer
click aquí arriba la pintura, maquinilla de afeitar y llenar decir haciendo click
en e para elegir el borrador. Puedes borrarlos
y hacer clic en B en el teclado para
elegir el pincel. Entonces B por el pincel
y haciendo click en IE para volver a borrar estos pinceles. Así que lo que yo también
me ha gustado aquí a la izquierda, ahora
puedes pintarlo
aquí en el mapa del azulejo. Y dentro del mapa del azulejo, se compone de capas. Entonces si has trabajado dentro de Photoshop,
ya sabes lo que es esto. Si quieres cambiar
un nombre de una capa, puedes hacer clic en F2
en el teclado. Puedes hacer clic con el botón derecho
y cambiar el nombre, pero por lo general hago clic en
F2 para cambiar el nombre de las cosas. Entonces haciendo click en F2,
y por ejemplo, puedo llamarla la capa base. Puedo hacer una nueva capa
haciendo clic en este botón. Y puedo, por ejemplo, cambiar el nombre de esto a background
en la capa base. Si tienes esto seleccionado, solo
pintemos algunos azulejos
aleatorios aquí. Vamos a fingir que estas son las
baldosas molidas que tenemos. Ahora puedo ir al fondo y digamos que quiero
pintar el fondo. Y digamos sólo al azar, mi trasfondo es este. Puedo pintar esto. Se puede ver que ahora está
en primer plano porque
así funcionan las capas. Por lo que el frente
estará en el frente. Entonces, si quieres que este
sea el fondo, tienes que ponerlo
debajo de la capa base. Por lo que haga clic en el fondo. Puedes hacer click sobre esta flecha. Dice Enviar hacia atrás, y lo pondrá al
revés aquí. Y ahora lo que
pintes, puedes ver que no puedes
pintar encima de estos porque este
es tu fondo. Ahora, cuando haces clic en la capa
base ahora pintas más. Puedes ver, puedes pintar
frente a tu fondo. Porque recuerda que este
es el fondo y estas son dos capas
separadas. Entonces si haces clic en el ojo
aquí en la capa base, puedes ver que este
es el fondo. También puedes ocultar el
fondo y así sucesivamente. Tan muy, muy útil. Estaremos usando ésos
para pintar nuestro mapa. Y esto
es básicamente para el mapa de teselas. Así que nada complejo.
Tenemos algunos azulejos. Podemos dibujar nuestro mapa aquí
y hacer que se vea impresionante. Y podemos usar esas
capas para pintarlo. Entonces el fondo, la base, tal vez
tengamos un
primer plano y así sucesivamente. Recuerda establecer el ancho y altura de tu mapa como desees. Quiero que la mía sea de 60 por 40, y la torre
tendría que ser de 30 por 30 porque esos azulejos
son de 30 por 30 pixeles, solo
puedes borrar
el fondo. Entonces haciendo clic aquí arriba, haciendo clic en
Eliminar en mi teclado, aplastó mi, mi motor. Déjame simplemente reiniciarlo. A veces sucede
con Unreal Engine. Por lo que a veces solo
aplasta al azar. Así que déjame volver a mi, a mi set de azulejos y se puede ver
todo ya lo borró. Entonces esto sucede a veces, así que Unreal Engine,
tengo que recrear. Entonces creando el mapa de teselas, solo
voy a crear
todo de nuevo, vale, ahora estoy de
vuelta donde estoy. He establecido mis ajustes
aquí y estamos de vuelta. Así que pasemos a la siguiente lección y
diseñemos el medio ambiente.
9. Diseño del entorno: Empecemos ahora a diseñar
nuestro entorno. Entonces para empezar,
volvamos a nuestro mapa de azulejos. Y dentro de aquí, si no tienes juego de toallas
seleccionado aquí a un costado, como puedes ver en mi pantalla, puedes hacer click en
este pequeño botón. Aquí también es donde
cambias entre tus fichas de fondo y
tus celdas normales aquí. Así que empecemos con estas fichas
normales por ahora. lo que voy a
empezar es simplemente llamar a esta capa cuatro bahías. Entonces voy a hacer clic en F2, llamándolo esa capa base. Dentro de aquí
vamos a pintar. Pero antes de pintar,
lo que me gusta
hacer aquí en las alturas del mapa, me gusta agregar un poco más de
fichas como fichas tampón. Porque cuando nuestro personaje es, se puede imaginar que este es nuestro mapa y estos
son los límites. Cuando el personaje está
parado aquí en el juego. Y la cámara es así,
viendo al personaje. La cosa aquí debajo del
mapa aquí estará oscura. Y no queremos que el jugador
vea esta parte inferior aquí. Quiero que el personaje esté
parado de una manera en que la cámara nunca vaya por
debajo de esta línea aquí. Me gusta añadir un poco más de fichas lo
que he escrito aquí, solo para tener algunas fichas
tampón para que la cámara y nunca
vaya por debajo del suelo. Así que me gusta agregar diez
fichas a la parte inferior aquí, y también diez fichas
a la parte superior aquí. Entonces la cámara y nunca
va por encima de esta línea aquí. Entonces lo que puedo hacer es, así que diez más diez es 20
obviamente, y son 60. Algo muy cool
y Unreal Engine. En realidad se puede escribir
más 20 y golpear enter, y lo agrega automáticamente
y dice 60. Ahora, no creo que necesitemos
un buffer aquí y aquí porque lo que voy a hacer es que voy a
detener la cámara. Cuando el jugador lo
camine de esta manera, voy a detener
la cámara aquí. Por lo que nunca va
detrás de esta línea, pero siempre podemos hacerla
más grande si quieres. De acuerdo, así que vamos a contar aquí. Hemos añadido diez tampones, diez fichas tampón aquí. Entonces 123412345678910. Entonces aquí en, a los 50. Entonces si pintamos una toalla
aquí, estoy a los 50. Entonces las fichas del buffer
van hasta aquí arriba y las fichas reales están
arriba aquí mismo. Entonces lo que puedes hacer es solo tomar estas fichas aquí y
empezar desde la izquierda. Por lo que solo puedes seleccionar
múltiples mosaicos. No tienes que
seleccionar uno a la vez. Puede seleccionar,
hacer clic y pasar el cursor y seleccionar múltiples mosaicos a la vez. Y puedes
colocarlos aquí dentro de nuestra capa base que
hemos creado. Por lo que ahora he colocado esto, puedes seguir colocando así. Pero como variedad, voy
a hacer clic en Control Z para deshacer. Como variedad, puedes ver
que tienes un par de ellos. Para que puedas elegir al azar otro como
éste y colocarlo. Se puede elegir uno al azar, colocarlo, esto le da a los
azulejos un poco de variedad. Por lo que puedes ver aquí que
tienes un poco de variación y puedes decir que
estos son el mismo título. Por lo que voy a simplemente
seleccionar al azar aquí. Realmente no importa
cuáles elijas solo para tratar de
seleccionar al azar. Entonces eliminamos esos patrones
repetitivos que
vemos a veces en lote de píxeles. Así que muy bueno tener diferentes azulejos en los que
puedas colocarla. De acuerdo, voy a
acelerar este proceso. Voy a hacer esto todo
el camino aquí. Y en realidad también hay
que hacerlo todo el camino aquí. Así que sólo sigue haciendo esto. Esto tomará
tal vez cinco minutos. Muy bien, así que ahora estoy
terminando aquí. Estoy haciendo los últimos azulejos. Por lo que ahora he terminado
esta parte inferior aquí. ¿ De acuerdo? Entonces cuando
termines con esta parte, ya para crear
la hierba aquí arriba. Entonces aquí abajo por la
hierba, lo mismo. Tienes alguna variación
que puedes agregar. Y puedes seleccionar, hacer click y seleccionar
las tres. Y recuerda también seleccionar esta parte superior porque
si haces clic aquí, puedes ver que te estás
perdiendo la hierba aquí arriba si no estás seleccionando también
esta parte superior. Por lo que al hacer clic en
ambos, seleccione tanto esto como esto por encima de él. Entonces estas seis fichas. Y luego puedes
simplemente, al igual que antes, hacer clic aquí y seleccionar otra variación
y hacer clic al lado de ella. Y sólo sigue adelante hasta que en realidad no
quiero que lo hagas
todo el camino aquí. Quiero que te detengas
en algún lugar por aquí, así que sólo voy a
avanzar un poco rápido. Ok. Entonces voy a parar aquí y
me detuve alrededor de 3947. Estas son las
coordenadas que no tienes que hacer exactamente como yo, pero si quieres, estas las coordenadas con las
que estoy parando. Puedes hacer tu propio diseño. Eso está bien. No estás obligado
a hacer lo mismo. Pero lo que quiero hacer aquí, tenemos unas rampas
aquí abajo en la textura. Y queremos sumar esos azulejos. Quiero añadir aquí una rampa para que
podamos tener alguna variación. Por lo que de nuevo, puedes hacer click aquí
y seleccionar así aquí. Y puedes sumar aquí
la rampa. Y luego de nuevo,
continuemos con los azulejos, seleccionarlos, y simplemente
seguir igual que antes. Sigue seleccionando una
variación como esta. Se puede ver que lleva algún tiempo, pero también lo es, creo que
es la parte divertida. Puedes ser creativo con
el mapa que estás creando. Y puedes crear
algo de aspecto genial. Por lo que nos faltan
algunos azulejos aquí arriba. Ahora. Vamos a seguir adelante
y al igual que antes, justo, vamos a llenar
esos vacíos vacíos. Muy bien, por lo que esta parte está hecha. Ahora, lo que quiero hacer como la última parte es en aparecer
una plataforma. Entonces, volvamos a añadir una plataforma,
seleccionemos esta parte inferior. Por lo que seleccionando uno de esos, puedes ver que tienes
variaciones aquí también. Entonces seleccionando la
parte inferior, no lo sé. Sí, en realidad necesitamos seleccionar la parte inferior aquí también porque se puede ver que hay algunos pequeños azulejos que
están debajo de esto. Así que de nuevo,
al igual que la hierba donde
seleccionamos seis piezas aquí, tenemos que seleccionar seis
piezas aquí también. Y para la plataforma, solo
tenemos que ocultarla, ver dónde está el personaje. Y creo algo
como aquí arriba. Y de nuevo, escojamos algunas variaciones y solo
sumamos las juntas. Recuerda seleccionar
todo sexo y no,
no sólo aquí arriba porque de lo contrario te faltan las
fichas aquí abajo. Así que selecciona aquí, haz
algunas variaciones y haz la plataforma va
a saltar un poco adelante. Muy bien, así que ahora que tengo
esta larga plataforma aquí arriba, se
puede agregar el pasto
y justo como antes, solo selecciona lo que
hicimos aquí abajo. Seleccione variación. Y ahora nos faltan esas
fichas aquí a la derecha. Realmente no pude encontrarlos. Lo intenté y lo
intenté y no pude encontrarlos. Pero lo que podemos hacer
es sólo añadir algunas de esas fichas para terminar
esta parte aquí, porque esto está cortado como se
puede ver y
no se ve bien. Y realmente no tengo
la, la parte de corte. Estos, estos
realmente no funcionan con esto. Entonces tenemos que hacer lo nuestro propio y solo
usemos éste. Entonces lo que voy a
hacer, puedes ver aquí, si selecciono esto y lo
agrego encima de esto, como aquí, puedes
ver que estoy eliminando mis fichas actuales y esto
no es algo que queremos hacer. Recuerda, teníamos capas con las
que podíamos trabajar. Para que puedas crear una nueva capa. Y llamemos a esta marca. Y con esta capa frontal, ahora
podemos seleccionar estas
fichas aquí, por ejemplo. Y por ejemplo, por
encima de este lado
puedes ver ahora puedes hacer clic y agregarlo y no eliminas las fichas que hacías antes. Y esto es porque ahora estás pintando en esta capa frontal. Ya no estás pintando sobre
esta capa base. Recuerda seleccionar
esta capa frontal y pintar encima de ella aquí arriba. Y también selecciona
esas fichas aquí, solo las tres aquí abajo. Y vamos a añadirlo encima de aquí. Y se puede ver
tipo de obras. Es mejor que nada. Por lo que ahora tenemos las toallas
cerrando que cortan aquí. Y voy a
seleccionar la siguiente, agregarla encima de ella, y seleccionar esa
parte inferior para ir con ésta. Ahora puedo ver que
tenemos una plataforma. Podría ser mejor si tuviéramos los títulos de cierre,
pero está bien. Es sólo para la práctica. De acuerdo, así que lo siguiente que puedes agregar aquí es el fondo. Y lo que podemos hacer es
agregar otra capa. Y en realidad lo
voy a llamar cielo. Solo voy a usar
esta capa solo para el cielo y ponerla,
puedes hacer click en esta flecha, recordar, y ponerla en la espalda porque
queremos que esto sea un fondo para este tipo. Recuerda ahora estamos dentro
de los azulejos normales. Quieres cambiar
al fondo. Nuevamente, puedes hacer click en este
pequeño botón y puedes cambiar entre el fondo
y las fichas normales. Entonces yendo al fondo, tienes este pequeño azul. Esto es en realidad el cielo. Por lo que solo
pinchando sobre éste, haciendo clic en G para la herramienta de relleno, o bien puedes seleccionarla aquí arriba. Recuerda que puedes seleccionar
las herramientas aquí arriba. Y luego recuerda hacer
clic en este tipo primero. Y aquí, puedes
hacer click sobre la parte superior de la audiencia, puedes verte llenar el vacío
y ahora tenemos el cielo. Ahora lo que podemos agregar aquí, es un poco
soso, por lo que necesitamos agregar algunos elementos de
fondo. Ahora, quieres hacer una nueva
capa porque si pintas, digamos que querías
pinchar esta hierba y pulsando en B para seleccionar la herramienta pincel y la
anexas aquí puedes ver que el cielo se está quitando porque no se puede
pintar encima de ella. Así que vamos a crear una nueva
capa y déjame
llamarla fondo y
estrecho fondo. Estos son solo apoyos de vuelta. Vamos a llamarlo
fondo y
veamos si necesitamos
cambiar el nombre de la misma. Así que vamos, intentemos
diseñar algo. Entonces voy a empezar
con este edificio. Así que solo seleccionando
todo este edificio aquí y simplemente
colocándolo en algún lugar aquí. Entonces se ve un poco
interesante así. De acuerdo, entonces ahora tenemos
éste e incluso se puede añadir un poste de luz aquí. Entonces esto se trata sólo de
ser creativo, intentó hacer lo que quieras. Realmente no tienes que
seguirme aquí. Sólo estoy tratando de
crear cosas a medida que
voy y voy a saltarme
un poco adelante. Al igual que antes. Simplemente selecciona lo que
quieras agregado en algún lugar. A lo mejor quieras agregar
este poste de luz aquí arriba. Así que intenta hacer lo tuyo y te veré
en un poquito. Muy bien, así que he añadido
un par de artículos. Puedes ver mi mapa
se ve así. Ahora, he añadido. Hay un pasto por aquí. Acabo de añadirlo
aquí a un costado. Entonces se ve un poco
cortada e interesante. Y he añadido esos
artículos aquí arriba, las flores y justo el
lado que agregué antes. Entonces no me gusta agregar
demasiado dentro del entorno. Me gusta mantenerlo
sencillo porque se
agrupará si
sumas demasiado al medio ambiente
y
no se verá bien en mi opinión. Por lo que ahora tenemos estos ítems
mínimos que insertamos dentro
de un entorno. Ahora lo que quiero
que hagas, quiero
llenar el fondo aquí para
que no sea demasiado azul. Quiero llenarlo con
estos grandes fondos. Así que adelante y selecciona aquí
esta cosa grande, así así y puedes
ver que puedes colocarlo por ahí. Ahora no queremos
colocarlo encima de nuestros artículos aquí. Entonces voy a añadir otra,
otra capa aquí, y sólo voy a
llamarla BG para el fondo 01. Creo que necesitamos hacer dos
de ellos y verás por qué. Entonces BG 0102, sólo voy
a moverme 0 a debajo del 01. Y éste, en lugar de
llamarlo fondo, llamémoslo apoyos BG, así que apoyos de fondo o
algo así. Por lo que al hacer clic en el primero, el fondo es 01. No quiero sumar
todo aquí arriba así. Lo que quiero hacer es simplemente, solo
quiero agregarlo así. Por lo que sólo veo el árbol
sin todo el, sin todo este
edificio abajo debajo de él. Por lo que sólo ver los árboles y llenar el
fondo con él. Entonces para el fondo 01, intentemos ver si
podemos hacer que parezca interesante,
algo como esto. Y 0 a, no creo que todavía
podamos llenarlo con 01. En realidad, podemos llenarlo aquí. En realidad llenemos 0 a primero, haga clic en 0 a, solo quiero
visualizarlo mejor. Entonces algo como esto, tal vez. Vamos a intentar 01 otra vez. El motivo por el que
no vuelvo a hacer 02, porque recuerda
que no puedes pintar
encima de tus capas así. Así que volver al
0101 estaba por aquí. Por lo que ahora podemos pintar por aquí
sin afectar nada. Entonces algo como esto. Creo que eso funciona,
eso, eso se ve bien. Así que volvamos aquí. Sólo estoy seleccionando
el borrador para que no tenga que ver todo esto. Pero ya puedes ver aquí, si el personaje
está caminando por ahí, esto se ve bien, nuestro
fondo está lleno. Puedes, por supuesto, no
tengo nubes, pero podrías por supuesto, si hay para que sea más
interesante en las nubes de aquí arriba. Pero creo que está bien. Eso es como cuando
caminamos por aquí, realmente no se ve mal
y se ve interesante. Incluso puedes ajustar
tus accesorios aquí, el fondo solicita
que coloques antes. Puedes ajustarlos
si quieres. Y esto fue en realidad para
diseñar el medio ambiente. Entonces la razón por la que
no agregué nada aquí, o tal vez por aquí o por aquí. Podríamos usar algunos de estos puntos vacíos para
agregar portales más adelante que podamos teletransportarnos a diferentes áreas y puedo mostrarles cómo hacer
un sistema de portal. Y con eso dicho,
pasemos a la siguiente lección.
10. Eliminar el parpadeo: Ahora volvamos
a nuestro mapa de azulejos. Quiero mostrarte algo que
puedes ver aquí cuando me muevo por ahí, cuando hago clic con el botón derecho
y pan alrededor, puedes ver que el cielo está parpadeando y así lo son mis azulejos. Es muy sutil. Pero por ejemplo, se puede
ver aquí la línea aquí, está cortando mis azulejos. Por lo que a veces
los azulejos también parpadean. Y queremos eliminar
ese parpadeo porque esto también te
sucederá en juego. Así que vamos a cerrar
este mapa de azulejos aquí. Y lo que quieres hacer es estos conjuntos de azulejos simplemente
haga clic derecho en el juego de toallas y haga clic en la condición Textura
Título XI. Ahora va a crear
algo nuevo para ti. Simplemente presione Enter y
se creará esto para usted. Por lo que estos están acolchados, por lo que almohadillas automáticamente
las toallas para ti. Para que puedas ver aquí
realmente no se ve diferente
de antes. Pero las diferencias es si
vuelvo a mi conjunto de azulejos, ahora si hago clic en mi azulejo antes de que seleccionara el
azulejo aquí a los lados, pero se puede ver el motor automáticamente acolchado
sus azulejos para que nunca parpadeará
porque tenemos esos emparejamientos en
cada baldosa. Lo mismo que hizo para todas las demás
fichas que tienes. Hagamos lo mismo
por el fondo. Vamos a hacer clic derecho en el
juego de toallas y dar click en
condiciones toallas, sábanas textura, y
hagamos click en Entrar. De acuerdo, Así que ahora había terminado de
pintar mi segunda textura. Tomó algún tiempo porque era una textura
tan ligera y
casi parece que tu motor ha estrellado, pero no lo ha hecho. Entonces volviendo al entorno y haciendo clic en mi mapa de teselas ahora, puede ver cuando
acerco y me muevo, se
puede ver que el
parpadeo se ha ido. Y esto también
aplica para el juego. Entonces hemos eliminado
ese parpadeo. Así que siempre que importe unas
toallas para agregar para tus mapas, recuerda hacer clic derecho
en el conjunto de azulejos y haz clic en la textura de la
toalla de condición. Y será automáticamente un
pad esta textura para ti. Y eliminarás todos
estos problemas parpadeantes.
11. Colocar el mapa de mosaicos en el nivel: Coloquemos ahora
nuestro nivel que
creamos aquí dentro de nuestro mapa. Entonces cerrando esto hacia abajo, recuerda que hicimos aquí un mapa, un nivel llamado main. Así que doble clic en eso para asegurarte de que estás dentro de aquí. También lo puedes ver. Aquí a la derecha, estás
dentro del mapa principal. Dentro de aquí, simplemente vaya
al entorno y haga clic
y arrastre su mapa de teselas. Entonces no los conjuntos de toallas
sino el mapa del azulejo. Así que haz click y arrastra y
puedes soltarlo aquí en
el entorno. Recuerda nuestra navegación desde
antes de poder hacer clic derecho y mantener presionado WD es una a moverse. Y se puede ver este es el mapa de
teselas que hemos agregado. Ahora me gusta quitar esta rejilla porque
realmente no puedo ver lo que está pasando. Así que al hacer click en este
mapa de teselas en el panel Detalles, puedes bajar y encontrar
aquí bajo renderizado, mostrar por cuadrícula infantil
cuando esté seleccionado, voy a desmarcar
esto para poder ver mi mapa. Y este es el mapa
que hemos creado. Lo que me gusta hacer es
colocarlo en la ubicación de
ceros, ceros 0. Entonces este es mi mapa inicial. Me gusta empezar a las 000. Esto es simplemente. Creamos el mapa. Y como se trata de un motor 3D, recuerda que esto
no es un motor 2D. Puedes ver aquí si
miras el lado de tu mapa de teselas, estos son en realidad azulejo de capa. Así que recuerda dentro
del mapa de teselas, creamos nuestras capas por aquí. Y así puedes ver todas estas capas apilándose juntas
aquí en un entorno 3D. Lo que quiero hacer,
quiero separar esas capas porque más adelante, queremos
asegurarnos de que no tengamos un problema cuando el
jugador se está moviendo. Y voy a
bajar aquí y aquí,
y esta separación por capa, sólo
voy a aumentarla a algo extremo para que
puedan ver lo que está pasando. Entonces algo así como 50
y voy a ahorrar. En realidad se pueden ver
estas capas ahora, están separadas unas
de otras. Ahora lo que me gusta hacer
aquí en la separación, me gusta escribir diez y
quiero mostrarte
por qué escribo diez, o también puedes escribir 15. Eso está bien. Realmente no importa. Pero quiero mostrarles por qué no
voy con
por, por qué voy con diez
en cambio, por ejemplo. Por lo que pinchando
aquí, se puede ver ahora hemos
separado la capa. Por lo que se puede imaginar
como el personaje está parado aquí en el
suelo, sobre estos azulejos. Técnicamente estás
parado en esto, esta capa base que creamos. Hay diez píxeles desde esta capa aquí hasta
la capa frontal aquí. Entonces ahora la separación, ya que escribimos diez, la separación es de diez
píxeles por cada capa. Por lo que tienes la libertad de
agregar cosas entre
estas capas. Entonces, por ejemplo, si
quieres agregar un elemento frente a estos
antecedentes quizás, pero quieres editar detrás
del jugador caminando por ahí. Obviamente, hay que seleccionar el número que está
entre estas dos capas. Por lo que cuanto más grandes
hagas estas capas, más libertad
tendrás colocar elementos al lado o
entre estas capas. Entonces no creo que
necesitemos más de diez. Nunca necesitaba más de diez, así que voy a escribir diez
en su lugar para asegurarme de que mi, mis fichas tierra estén en 0 porque esto nos hará más fácil más tarde cuando estemos programando. Simplemente quiero empujar
esta capa aquí. Estas son mis fichas, dos delante de aquí,
así que está en el medio. que puedas ver aquí
en el punto de pivote, cuando tienes seleccionada la Herramienta
Mover, al hacer clic en ella,
tienes seleccionada la Herramienta Mover. Puedes ver si quieres
moverte en esta dirección, tienes que moverlo por diez. Y ahora en realidad es correcto. Recuerda, nuestra herramienta de snapping se está ajustando a
cada diez grados, diez píxeles más bien no grados. Por lo que ahora en realidad no es correcto porque con el chasquido lo
hicimos a diez. Por lo que se puede ver ahora es, ahora el fondo está en 000. Cuando escribes diez
aquí en el y, tienes la
dosis, dosifica fichas novedosas como 000. Y esto nos facilitará
mucho más tarde cuando
estemos programando.
12. Volumen de posproceso: Muy bien, entonces el problema
que tenemos en este momento en nuestro nivel es que la iluminación y los colores no
son correctos. Para que como puedes ver
aquí, si abro mi mapa de teselas y si
acerco aquí, puedes ver la diferencia
entre este mapa de teselas, los colores correctos y
cómo se ve. Y este es nuestro nivel, por lo que definitivamente se ve mal y la iluminación
es demasiado fuerte. Y aquí es donde entra el volumen
post-proceso. Por lo que aquí arriba y
rápidamente añadir botón. Demos clic aquí arriba y
luego vayamos a los efectos visuales. Y agreguemos este
llamado volumen post-proceso. Entonces el volumen post-proceso, lo que es, Es
como en Photoshop. Cuando pones una imagen
dentro de Photoshop, puedes editar los estudiosos de la imagen, puedes editar la saturación, el brillo de
la imagen allí. Lo mismo va aquí
en Unreal Engine, usamos un volumen post-proceso para cambiar la iluminación y
los colores y así sucesivamente. Por lo que casi justo como la gradación de
color. Por lo que tenemos el volumen
post-proceso y lo que queremos hacer
es desplazarse hacia abajo aquí. Y queremos tomar esta
llamada extensión infinita. Lo que esto hace es que
afecta al mundo entero. Si no presionas esto, esto solo funcionará siempre que
estés dentro de esta caja. Entonces, por ejemplo, sólo para
demostrarlo por ustedes, voy a
aumentar esta floración. Entonces yendo por la intensidad
de diez, tan muy extrema. Y si voy aquí
dentro de mi caja, se
puede ver
que la floración está tomando efecto, esos efectos de ensueño. Y si salgo fuera de esta caja de volumen
post-proceso, vuelve a la normalidad para que
puedas ver la diferencia. De acuerdo, entonces en lugar de
ir dentro de esto, no esta caja de aquí y tal vez como tratar de hacer que esta
caja se ajuste al nivel. Realmente no necesitamos hacer eso. Solo queremos hacer click en
éste llamado extensión infinita. Y afectará
al mundo entero. Entonces no necesitamos estar dentro de esta caja para que surta efecto. De acuerdo, Entonces lo que queremos hacer, sólo
voy a colocar este volumen de
post-proceso en 000. En realidad,
realmente no importa, pero sólo me gusta hacer eso. Y luego empecemos a
pasar por todos estos ajustes. Y me tomó alrededor de
seis a siete horas en realmente clavar esto con
todos los ajustes correctos. Entonces aquí en la floración,
vamos a ponerlo en 0. Realmente no queremos ninguna
floración dentro de nuestro nivel. A continuación vamos a
bajar a la exposición. Y dentro de la exposición, tomemos el mínimo brillo
y el máximo brillo. Y
pongámoslos a dos. Por lo tanto 22. Y luego
bajemos a Lens Flare. Demos clic en la intensidad
y ponlo abajo a 0. Y realmente no
necesitamos unas bengalas de lente. A continuación vamos a hacer click sobre los efectos de
imagen y
otros efectos de daño. Podemos establecer la viñeta a 0 antes de hacer cualquier gradación de color. Vamos a saltarme un
poco eso por ahora. Están bajando
y voy a encontrar la oclusión ambiental. Pero la
oclusión ambiental que queremos establecer en 0, no necesitamos eso. Y el desenfoque de movimiento también, voy a ponerme a 0. De acuerdo, así que realmente no tenemos más ajustes con los que
jugar aquí abajo. Así que volvamos a
la gradación de color. Y de nuevo, pasé
siete horas haciendo esto. Entonces justificar venir con números
aleatorios. No es porque esté
adivinando correctamente, es porque he estado intentando encontrar aquí los números
correctos. Por lo que aquí primero en lo
global, podemos hacer click en eso. Y tomemos esta
llamada saturación. Para que puedas aumentar, puedes ver que puedes aumentar y disminuir la saturación
de la imagen. Y para ello, 1.980 fue
el número perfecto. Y vamos a desplazar un poco aquí
abajo en las sombras. Por lo que pinchando sobre las
sombras y tomando tanto la saturación como el
contraste y la Gamma. Entonces, ¿qué es la saturación? Queremos ir con 0.9. Y con el contraste, vamos con 0.9 para la Gamma, Vamos con 1.01. Y vamos a bajar ahora. Y en los tonos mediados realmente no
tenemos nada más que en lo más destacado, si hacemos click en ese,
solo queríamos tomar éste
llamado destaca mínimo. Entonces voy a ponerlo en uno. Y luego vamos a
bajar a miscelánea. Voy a tomar esta
llamada
cantidad de curva de tono y vamos
a poner eso abajo a 0. Se puede ver que cambia
mucho en nuestros colores. Entonces bajando a
0, y esto debería solucionar todos nuestros problemas. Ahora vamos a hacer click en el mapa de teselas y podrás
acercar y echar un vistazo. Y puedes echar un
vistazo a nuestro nivel aquí, y puedes ver que se ven
perfectamente igual Ahora. Son pequeño problema es ahora, y vamos a arreglar eso
en la próxima lección. Como se puede ver,
estos están pixelados, pero se puede ver que
hay algún tipo
de suavidad dentro de nuestro nivel, no demasiado pixelada. Y esto es por el antialiasing que
tenemos que quitar. Pero puedes ver
aquí, si vas
al modo en vivo y vas
al modo desvinculado, así es como se ve la
textura correcta. Entonces así es
como se ve sin ninguna iluminación. Entonces si vuelves
al modo lead, puedes intentar comparar los dos. Entonces esto es lo que estamos
tratando de lograr. Estamos tratando de lograr que el modo elite sea del mismo
color que el modo desiluminado. Tan muy cerca el uno del otro. Lo único es que
el modo en vivo es más suave hacia fuera por
el anti-aliasing. Y lo arreglaremos
en la próxima lección.
13. Eliminar la alivio anti: Muy bien, vamos a mover
el anti-aliasing, que está causando
ese efecto suave dentro de todo nuestro nivel. Y realmente no
necesitamos ningún suavizado cuando estamos trabajando
con lote de píxeles, queremos ver
los verdaderos píxeles. Por lo que vamos a editar y vamos dentro de la configuración de
nuestros proyectos. Dentro de aquí, podemos desplazarse hacia abajo y vamos a encontrar
éste llamado render dentro del renderizado
del motor y dentro de aquí. Ahora, esto es anti-aliasing, pero esto es para móvil y
no estamos haciendo un
juego móvil en este momento, así que esto no importa. Pero voy a bajar aquí. Y queremos encontrar esta
configuración predeterminada mientras estamos en ella. En realidad vamos a quitar un
par de cosas que florecen. Ya lo configuramos en 0, pero siempre podemos
deshabilitar aquí también, la oclusión ambiental también. Esta, la exposición automática y también podemos eliminar
el desenfoque de movimiento. Por lo que todos estos eliminaron. Y este es el importante,
el método antialiasing. No sé si se puede
ver una diferencia si
acabo de ponerla aquí de un costado y
se puede ver si
pasa algo cuando lo deshabilito. Por lo que esta
superresolución temporal, si hago clic en Ninguno,
se puede ver la diferencia. Por supuesto, puedes
mantenerlo encendido si quieres que tu juego se
suavice así. Pero para el verdadero pixel art, en realidad no tienes esto. Por lo que al hacer clic en ninguno se
verán los verdaderos azulejos, cómo se crean en
el software pixel art. Entonces ahora si vamos en el modo
desiluminado y el modo, esto ahora recuerda que
esto es lo que estamos tratando de lograr,
los mismos colores. Se puede ver que ahora
no hay diferencia, y esto es lo que queremos. Queremos que el modo Lit
sea el mismo que el desiluminado. Y si quieres ver la
diferencia haciendo click en este
volumen post-proceso
con el que trabajamos en la lección anterior. Podemos dar click en esto
habilitado para eliminarlo, y se puede ver la diferencia. Ahora este es el modo OnLoad. Este es un verdadero colores. Estos son el modo en vivo. Y cuando lo
habilitamos, lo hacemos igual que
como lo queremos.
14. Agregar colisión: Hagamos ahora
la colisión para nuestras fichas. Entonces, lo que son las colisiones, son lo que en realidad
hacen que esas baldosas se puedan caminar. Por lo que se puede imaginar si agregamos
un personaje en el futuro, el personaje en este
momento no puede caminar sobre estas fichas porque no
tienen colisión. Por lo que el personaje en realidad
seguirá a través de los azulejos y
caerá por el suelo. Por lo que necesitamos sumar una colisión para que el personaje pueda
caminar sobre estas fichas, y esto es muy sencillo de hacer. Así que vamos a pasar
al conjunto de azulejos. Entonces vamos a la carretera del dragón de
Tulsa. Y dentro de este azulejo dijo recordar lo único que hicimos la última vez fue solo para
fijar el tamaño del azulejo a 30. Las bacterias en realidad
también pueden agregar colisión. Por lo que al hacer clic en este botón
se llama azulejos colisionantes. Ahora se puede ver
la colisión. Ahora. En este momento no se puede ver
nada porque
no tenemos ninguna colisión. Por lo que al hacer clic en el primer
mosaico aquí, y éste, por ejemplo, puede hacer clic
en éste llamado Add box. Y ahora en realidad se
sumó una colisión. Entonces si hago clic en Guardar ahora, y solo quería mostrarte que en realidad
agregó colisión. Entonces si hago clic en, aparezco aquí y
haga clic en colisión, ahora no se puede ver
nada y esto es porque dentro
del conjunto de teselas, hay
que recordar hacer
click en Refresh maps. Esto refrescará todos tus mapas
de teselas. Y ahora lo puedes ver
en realidad sumar colisión. Ahora se pueden ver estas cajas aquí arriba. Y esta es la colisión, solo lo agregamos y
tenemos que hacer eso el personaje pueda realmente
caminar sobre estos azulejos. Técnicamente en programación,
ese personaje está caminando sobre estas pequeñas cajas, pero parece que el personaje
está caminando sobre los azulejos. Entonces volviendo aquí y tenemos, desafortunadamente
no
hay un método donde podamos seleccionar todo
y hacer clic aquí arriba. Tenemos que hacerlo manualmente, pero queremos llevarnos mucho tiempo. Por lo que pincha aquí, mirando cuadro, muy sencillo. Sólo estamos agregando
colisiones a estas fichas. Y hay que hacer
esto por todas
las baldosas que has utilizado. Así como eso. Por ejemplo, no
necesitamos agregar colisión para estas fichas porque no las
hemos utilizado. Pero si
los has usado en tu mapa, tienes que agregarles colisiones
también. Por lo que no agregamos colisiones
para estos porque obviamente el jugador no
va a caminar sobre estas fichas. Entonces si guardo aquí
y refresco mapas, ves aquí las
fichas son aditivas, se agregan las colisiones, y realmente no necesitamos agregar colisión aquí abajo porque entonces el jugador
nunca ir por aquí abajo. Entonces realmente no necesitamos hacerlo. Ahora, quiero hacer que mi caja de
colisión sea más grande porque se puede imaginar cuando el jugador está caminando
aquí en estas cajas, existe la posibilidad de que, recuerde que este es un motor 3D. Existe la posibilidad de que el
jugador sea empujado de una manera en que el jugador caiga aquí a
un costado y
se caiga del suelo, cayendo de las casillas de colisión. Por lo que sólo para eliminar ese riesgo, quiero aumentar la caja de
colisión es longitud. Podemos hacer eso dentro
del mapa del azulejo. Dentro del
mapa del azulejo aquí podemos ir a aquí en la parte inferior, espesor de
colisión. Vamos a establecer que es 254. Ahora hagamos click en Guardar. Y cuando minimizamos, se
puede ver que las cajas de
colisión son
mucho más largas y no tenemos oportunidad de que el
jugador se caiga del suelo porque
eso está cubierto ahora. De acuerdo, agreguemos colisión
al resto de ella. Creo que creemos, creo que nos estamos perdiendo esta parte aquí. Entonces yendo al
conjunto de herramientas y por dentro de aquí, vamos a sumar también colisión dos. Este es en realidad nos
estamos perdiendo esos, así que, agregando una
caja de colisión aquí arriba, haz lo mismo con esta. También necesitamos agregar
una colisión aquí, por lo que el costado, así que
pulsando Añadir cuadro, se
puede ver aquí a un costado, realmente no
necesitamos colisión todo el camino si refresco
el mapa para que podamos verlo. Ahora agregó colisión
todo el camino por aquí. Realmente no necesitamos eso. Sólo necesitamos cubrir el azulejo. Entonces lo que podemos hacer es hacer
clic en éste y luego lamer y roncar y seleccionar
ambos vértices. Y podemos hacer click y arrastrar. Entonces al igual que nuestra viewport, tal vez
desactivaré
el snapping. Veamos. O en realidad está bien. Así como esto, eso es perfecto. Haciendo lo mismo aquí. Voy a añadir caja de
colisión y tomar estos dos vértices y
reducirlos así. Por lo que ahora puedes refrescar el mapa y puedes ver
cómo se ve. Esto, lo que parece. Entonces la colisión es de dos aquí. Y si sentimos que
esto es demasiado, siempre
podemos volver atrás
y hacerlo más pequeño. Así que ahora nos estamos perdiendo éste. Agreguemos una caja de colisión. Y seleccionemos
estos para
acercarlas a
lo mismo de aquí. Muévelos más cerca así. Y de nuevo, recuerda hacer
click en Refresh maps. Lo último es que nos falta esta pendiente aquí porque
ésta también usamos. Por lo que voy a hacer click en este primero y vamos a añadir una caja. Ahora éste es un
poco más complicado, así que vamos a seleccionar estos vértices. Este vértice aquí arriba, haciendo clic en Eliminar en tu
teclado lo eliminará. Y ahora sólo tenemos
tres vértices. Ahora éste, puedes
moverte hacia abajo así. Y pasemos
a la siguiente. Por lo que este de aquí,
haga clic en Agregar cuadro. Queremos mover éste hacia abajo, tal vez así, y también mover
éste a un lado. Realmente no necesitamos
colisión todo el camino aquí. Y voy a reducir mi chasqueo porque no me
deja moverlo aquí
en medio. Entonces lo voy a reducir
a cinco en lugar de diez. Y creo que algo como
esto funciona para mí. Ahora vamos a hacer
click sobre éste. Se puede ver pendientes son un poco
más complicado trabajar con. Por lo que al hacer click en
éste, queremos sumar aquí
una pequeña colisión para que
el jugador no caiga. Por lo que haciendo click en el cuadro
Agregar de nuevo, podemos seleccionar este vértice, click en Eliminar en el teclado. Podemos tomar éste
y acercarlo más. Entonces si puedo golpearlo aquí, acercándome y luego
tomando este vértice y moviéndolo hacia abajo
así. Y luego podemos tomar el
siguiente aquí y añadir una caja. Podemos tomar este vértice
y moverlo hacia abajo. Y éste sólo podemos dejarlo ser. Creo que esta es una buena curva. Y el último,
hay un pequeño bicho. Lo probé antes. También tenemos que sumar una colisión muy pequeña aquí mas el jugador realmente lo
hará, si refresco el mapa
y puedo mostrarte, el jugador en realidad se quedará
atascado aquí. En la parte superior. Hay una
brecha muy, muy pequeña que no podemos ver. Y tenemos que sumar aquí
una colisión. Y obviamente esto es porque ya
he probado esto antes. Lo que solo queremos
hacer aquí es que queremos
eliminar el vértice
aquí arriba, igual que antes. Podemos moverlos muy de cerca. Ahora para ver el
número específico para esto, puedes bajar aquí. Y los datos de colisión, y el
índice, bajando dos formas. Haciendo click en este índice y
viendo estos vértices. Se puede ver cuando muevo
este vértice aquí arriba, este número de cambios. Por lo que sólo quiero que este
número sea 14.9. Para que puedan ver que si
elimino el chasquido, cuanto más cerca lo muevo hacia abajo. El último número es
15, obviamente aquí. Por lo que quiero
moverlo a un 5.9th, 14. Y éste también. Así que muy, muy, muy cerca. Éste, si sólo lo muevo para ver cuál
es, está aquí abajo. 14.9. Y no sé por qué dije
15.914, justo así. Por lo que ambos son 14.9. Por lo que hay un pequeño
colegio aquí que hace que el jugador no
pase por el suelo. Y esto se debe a
que lo probé antes en mi proyecto de preparación. Por lo que ahora tenemos toda
la colisión establecida. Acabo de recordar, recuerda
siempre hacer click en el Mapa de Refrescar y dar click
en Guardar, guardar todo. Y ahora estás listo para irte. Para que puedas echar un
vistazo a tu mapa. Se puede ver que hay
colisión aquí arriba. Podríamos necesitar
reducir éste. Tal vez esté demasiado lejos. Y también lo puedes ver aquí. Pero generalmente tenemos que
tener un personaje para correr alrededor del mundo y probar esto antes de que podamos decir con seguridad. Pero ahora tenemos la colisión
inicial hecha y podemos pasar a
crear nuestro personaje.
15. Creación de sprites: Ahora es el momento de importar
los activos del personaje. Por lo que te he proporcionado
aquí de nuevo, dentro de los materiales del curso, hay una carpeta
llamada caracteres. Por lo que haciendo clic en esa carpeta. Y empecemos con Serena. Lo que quiero que hagas por
ahora es solo importar el ocioso, el salto, y las animaciones de
carrera. Entonces primero, antes de hacer eso, pasemos a
la carpeta de activos. Hagamos una nueva carpeta
llamada caracteres. Y luego dentro de aquí, hagamos uno
nuevo llamado Serena. Y luego aquí
podemos importar nuestros activos. Entonces quiero arrastrar el salto
inactivo y correr, arrastrarlos a tu proyecto. Y cuando dejas ir,
importas esas texturas. Entonces en realidad
vamos a crear algo llamado
sprites y flip books. Así que hagamos una nueva carpeta y voy a
llamarla las texturas. Y voy a tener estos
dentro de esta carpeta. Y todos los, todos
los flip books que
hagamos estarán aquí afuera. Entonces, en lugar de texturas, recuerda cuando importas
texturas, y de nuevo, si haces doble clic
en ellas y acercas, puedes ver que Unreal Engine está
suavizando esos píxeles. Y como te dije antes, tienes que seleccionar a todas ellas. Y si quieres
seleccionarlos así, puedes hacer click en un turno de espera y
hacer click en el último. Seleccionará todos los. Y puedes hacer clic derecho en acciones de
sprite y aplicar papel a la configuración. Como antes, se puede
ver que elimina la suavidad y se pueden
ver los píxeles con mayor claridad. Ahora puedes ver la textura
viene con esta animación. Así que tienes la animación, tienes la animación corriendo, y se
juntan en una sola textura. Y ahora hay que crear
sprites de esos. Entonces empecemos con lo inactivo. Puedes hacer clic derecho
e inspirar acciones. Se puede decir extraer sprites. Y aquí, hay
que ir aquí a la parte superior derecha y hacer clic
en rejilla en lugar de auto. Y luego hay que especificar
cuán grande es la cuadrícula. Ahora, hice esto
en Photoshop así que
sé que la rejilla es de un
ochenta, uno ochenta. Y si descargas
algo de Internet, te
dirán cuán
grande es esta cuadrícula, una ochenta, una ochenta. Y extraerá esas
animaciones como fotogramas simples. Por lo que al hacer clic en
Extraer aquí abajo, se
puede ver que los extrae a marcos
individuales y estos
se llaman sprites. Los sprites son imágenes estáticas. Así que aquí en nuestro nivel, realmente no podías arrastrar una
textura y soltarla encima de aquí porque se puede ver que
reemplaza
lo que esté
arrastrando, arrastrándola encima de. Entonces voy a
hacer click en Control Z. pero los sprites son imágenes
estáticas y en realidad puede arrastrar los que están
dentro del nivel. Entonces si tienes algo
estático, por ejemplo, un barril que nunca se mueve, en realidad
puedes agregar eso
aquí dentro de tu nivel. Pero nuestro personaje
tiene animaciones, por lo que realmente no queremos arrastrar imágenes
estáticas porque en realidad
son animaciones, pero vamos a trabajar con las animaciones más adelante
en el siguiente video. Entonces vamos a eliminar.
Voy a eliminar este material que creó cada vez que arrastré esta textura encima de ella, así así. Ahora, voy a
cambiar el nombre de los sprites. Por lo general elimino
esto al frente. Solo recuerda que tienes que prestar
atención a los números. Entonces este es el número 0123. Por lo que hay que hacer eso en orden. Y aquí, el primero, lo
voy a llamar S para Sprite está inactivo y 01 así. Entonces estamos un poco más organizados. Este es 02 ahora y
0304. Así como eso. Entonces ahora tenemos el ídolo. Y hagamos
lo mismo con el salto. Puedes hacerlo tú mismo solo
para practicar si quieres. Puedes hacer clic con el botón derecho
aquí e ir a detectar acciones y
extraer sprites. Selecciona la cuadrícula aquí arriba, y de nuevo, 180, extrae los sprites. Y de nuevo, presta atención
a los números. Dice 0123. Entonces no pienses que puedas
entrar aquí y llamar a esto 10, porque éste
es el número tres. A veces lo que hago es simplemente hacer
clic de distancia de la carpeta. Así que haz clic en otro lugar
y vuelve a la carpeta. Y puedes ver que
los ordena como quieras. Entonces este es el
primero, es r1, 01. Y haciendo lo mismo
con los otros. Entonces sí toma un poco de tiempo organizar tus carpetas. Pero al final, cuando
estén organizados, tendrás un
tiempo fácil trabajando con él. Ahora el último es el salto. Y éste se puede ver el
salto sólo tiene una animación. Entonces no tiene sentido
hacer clic derecho y decir extraer sprites porque en
realidad solo tienes un sprite. Entonces lo que quieres hacer es hacer clic derecho y simplemente hacer click en Crear Sprite en lugar de extraer porque
solo tienes un sprite. Y llamemos a éste es saltar. Muy bien, entonces ahora hemos
creado nuestros sprites. Vamos a guardar todo, y pasemos
a la siguiente lección.
16. Crea libros de flippers: Entonces ahora que hemos creado
sprites para nuestro personaje, ahora es el momento de
animar esos sprites. Entonces lo que quieres hacer es, por
ejemplo,
empecemos con lo inactivo. Se pueden seleccionar todos ellos. Entonces cualquiera de ellos,
puedes sostener Control. Yo iría a tres o cuatro. O una forma más rápida de hacerlo
es hacer clic en el primero,
mantener pulsada Shift, y dar clic en los últimos en
el número cuatro. Y seleccionaremos todo el
asunto aquí en la línea. Ahora puedes hacer clic derecho. Y aquí arriba dice
crear flip book. Por lo que al hacer clic en Crear flip book, se creará uno. Y por lo general, en lugar
de S y el frente, normalmente
escribo FB
para un flip book. Este es el libro de volteo inactivo. Ahora puedes hacer doble clic
en el flip book. Y se puede ver ahora
esto está animado, pero en este momento se
anima demasiado rápido. Por lo que quiero que
cambies los fotogramas por segundo aquí
a la parte superior derecha. Así que toqué
ayer Maple Story y vi lo
rápida que fue la animación, y fue alrededor de dos
fotogramas por segundo. Entonces escribiendo a, y se puede
ver ahora está animado. Esta es la animación ociosa. Ahora, hagamos
lo mismo por la carrera. Para ejecutar el número uno a cuatro, puede hacer clic con el botón derecho,
crear un flip book, llamarlo FP run. Y puedes hacer doble clic
en él de nuevo. Y para la animación de corrida, es de seis fotogramas por segundo. Por supuesto, puedes
hacerlo más rápido. Por ejemplo, si
lo eres, si quieres que tu personaje corra tan rápido, o simplemente que la animación sea
tan rápida, puedes hacerlo. Pero para mí, estoy tratando de
imitar a Maple Story tanto
como pueda. Y parece que son
animación es de unos seis fotogramas por segundo,
así como esto. De acuerdo, vamos a cerrarlo. Y el último
tenemos el salto. Ahora podemos crear un flip book
fuera de esto y tenemos que hacerlo, porque más tarde cuando estamos
creando nuestros personajes, el personaje quiere y
entrada de un libro flip book. Así que realmente no podemos
usar este sprite de salto. Recuerda, esto es un sprite, este es un libro flip. Tenemos que hacer esto
en un libro flip porque el personaje más
adelante necesita un libro flip book. Así que a pesar de que es un marco, tenemos que crear un libro flip book. Así que vamos a hacer clic derecho y crear un libro flip
fuera del salto. Y llamémoslo
FB, salta, así. Y obviamente este
es solo un fotograma, así que voy a cambiar
este fotogramas por segundo a uno y podemos cerrarlo y podemos seguir adelante
y salvar todo. Por lo que ahora hemos creado
nuestros flip books. Voy a mover esos libros flip fuera
de la carpeta de texturas. Por lo que los voy a trasladar aquí a Tsarina y dar
click en Muévete aquí. Entonces ahora tenemos esos flip
books y estos sectores, realmente no
necesitamos
verlos de nuevo. Es por eso que creé una
carpeta Textures solo para que sea más fácil de mirar porque solo realmente necesitamos esos flip books.
17. Introducción al Blueprint: Blueprint es el lenguaje visual
de scripting en Unreal Engine. Y cuando estás escribiendo
planos, créalo o no, eres programador.
Estás programando. En lugar de escribir líneas de código
tradicionales, puedes codificar todo el juego simplemente agregando notas y
conectándolas. Entonces es un lenguaje visual
de scripting. Blueprint es tan potente como cualquier otro
lenguaje de programación por ahí, ya sea C
plus, más C-Sharp o cualquier
otro lenguaje, puedes crear lo que
quieras usando blueprint. En este momento, estamos creando una
mini versión de Maple Story. Pero también puedes crear
Fortnite, Metal Gear, Sólido, óxido, o incluso anillo Aldon. Puedes programar cualquier
idea con planos. Entonces lo único
que
te está limitando es tu imaginación. Lo que quieras programar, puedes hacerlo con blueprint. Y también está optimizado y
se ejecuta muy bien con eso dicho, vamos a saltar a la derecha en
el aprendizaje de los fundamentos de los planos.
18. Clases de Blueprint: Hablemos ahora de clases
de planos. Entonces aquí en cualquier carpeta aleatoria
voy a hacer clic derecho. Solo quería mostrarte las clases de
planos por ahora. Puedes hacer clic derecho y arriba aquí, puedes hacer click en Clase
Blueprint. También puedes encontrar esto
bajo Blueprints, éste llamado Clase Blueprint. Entonces lo mismo, pero es
más rápido sólo hacer clic aquí. Entonces estas son las
diferentes clases que puedes crear
en Blueprint. Y quiero empezar
con el primero. El primero que tenemos es un actor y se puede ver la descripción
aquí a la derecha. Dice que un actor es un objeto que se puede colocar
o engendrar en el mundo. Entonces un
actor muy simple, por ejemplo, puede
ser una mesa, puede
ser una silla, puede
ser un martillo. Entonces cualquier cosa que pueda ser engendrada en el
mundo, solo un objeto. El siguiente es un peón. Y upon es un actor que puede
poseerse y recibir la
entrada de un controlador. Y lo que esto significa está sobre, es algo que el
jugador puede controlar. Entonces en otro curso que
hice que se puede ver
aquí en la página web es que estoy creando una pelota
o una esfera. Moverse por ahí. Esta esfera que se mueve
alrededor está sobre porque
quería que el jugador controlara este miedo para moverse
con el teclado. Entonces n upon es un
actor que puede
poseerse y recibir la
entrada de un controlador. Por lo que hay que hacer lo
que quieras en un estanque. Si quieres que el jugador
controle ese objeto, no
puedes hacer un actor y quieres que el jugador
controle ese objeto, que hay que
convertirlo en un punto en su lugar. A continuación tenemos un personaje. Y un personaje es
un tipo de ****. Por lo que se puede ver
que hay una relación. Entonces un personaje en realidad está sobre. Un personaje es un
tipo de **** que incluye la
capacidad de caminar. Así que siempre que quieras
hacer un personaje, es solo que puedes
imaginar a un humano con dos brazos y dos
piernas caminando por ahí. Tienes que hacer un personaje. Pero si quieres hacer tu personaje algo
así como una pelota o una esfera rodando
alrededor en el mundo sin ella no tiene
dos brazos, dos piernas. Puedes seguir adelante
y crear un punto. Entonces esta es la
diferenciación más fácil. Entonces cuando tienes un
personaje, dos brazos, dos piernas caminando por ahí, puedes seguir adelante y crear
un personaje en su lugar. Entonces tienes algo
llamado controlador de jugador. Y aplicar controlador
es un actor que se encarga de controlar
sobre utilizado por el jugador. Por lo que hay que pensar en esto. Este no es realmente el mando
que tienes en casa, ni tu mando Xbox o
tu mando PlayStation. Esto es, se puede imaginar esto como los cerebros del personaje. Entonces este es el cerebro
del personaje. Todos los personajes
que engendréis en el mundo tendrán
un controlador de jugador. Y dentro de
aquí se pueden agregar códigos como interfaces de usuario. O si quieres hacer
un juego para un solo jugador, estás creando movimientos
impresionantes. Se puede hacer eso dentro de aquí, pero estaremos trabajando
con todas esas cartas. Así que no te preocupes por esto. Esta es sólo la
explicación básica por ahora. Entonces el último del que quiero
hablar se llama el Modo de Juego, y esto es casi
autoexplicativo. La base del modo de juego define
el juego que se está jugando, sus reglas, la puntuación, y otras facetas
del tipo de juego. Entonces por ejemplo, si
tenemos un juego de disparos, tienes captura la bandera. Tienes cuánto tiempo
tienes por ronda. Y por ejemplo, en Maple Story, si queríamos hacer un evento, por ejemplo, podemos definir cuánto tiempo
tomará este evento y así sucesivamente. Así que sólo las reglas del juego. Por ejemplo, en
Capture the Flag, cuando captes la
bandera de un equipo, te dará algunos puntos. Y estos puntos también
se pueden anotar dentro
del modo de juego porque son
las reglas del juego. Ahora, ya que estamos trabajando
con 2D en este momento. Entonces todos estos son 3D. Ya que estamos trabajando con 2D, hay
que hacer click en esto, éste llamó a todas las clases. Y aquí puedes
buscar papel. Se puede ver que tenemos muchas
clases y estas son sólo las básicas que
usamos todo el tiempo. Y casi nunca entras aquí menos que estés trabajando
con cosas avanzadas. Por ejemplo, un sistema de ahorro
y carga, que vamos a hacer
más adelante, ojalá. En todas las clases aquí, puedes buscar papel. Y el papel es solo el
lote de píxeles 2D aquí en Unreal Engine. Entonces, por ejemplo, en lugar
de este actor de aquí arriba, que es 3D, podemos crear éste llamado
Paper sprite actor. O podemos crear
un actor flip book si tenemos un libro flip book, recuerda, flip books fueron los sprites animados
juntos. Entonces si tienes una animación, quieres usar un libro flip book. Si tienes un elemento estático, quieres usar un
sprite y luego también
tienes un personaje. Entonces en lugar de usar
este personaje aquí arriba, porque este es un personaje 3D, tenemos que usar este
llamado personaje de papel. Y éste incluye
un libro flip book. Hicimos flip books para
nuestro personaje que
podemos poner aquí dentro de
nuestro personaje de papel. Por lo que estas son las
clases básicas que queremos usar, y en su mayoría no vamos
a usar las de aquí arriba. Vamos a añadir
un controlador de jugador y Modo de Juego porque
estos no son necesarios. Pero para todos estos en su mayoría
iban a funcionar aquí abajo en
nuestro personaje de
papel, sprite de papel y nuestro libro de
papel.
19. Modo de juego y controlador de jugador: Empecemos ahora creando
nuestros primeros planos. Entonces para hacer eso, vamos a ir
en la carpeta de contenido. Puedes hacer clic con el botón derecho
aquí y hagamos una nueva carpeta llamada blueprints. Y dentro de esta
carpeta, y por cierto, se
puede dar una dosis completa de colores. Entonces si puedes
hacer clic con el botón derecho aquí debajo la carpeta
Blueprints y
puedes hacer clic en Establecer color. A veces hago eso solo
para
organizarme, solo selecciono un color azul. Entonces sé que son planos
como este, por ejemplo. Y se puede ver
claramente dentro de aquí. Puede volver a hacer clic con el botón derecho
y seleccionar Clase de blueprint. Y vamos a crear un modo de juego. Cada juego que creas tiene un modo de juego y
un controlador de jugador. Estas son las cosas básicas con las
que empiezas en un juego. Así que vamos a crear un modo de juego. Y llamémoslo g, m como
prefijo para el Modo de Juego. Y por lo general lo llamo
el nombre del juego. Entonces historia de Maple para éste. El siguiente, de nuevo, haga clic derecho en Loop y clase. Haga clic en el controlador del jugador y llámala PC para el controlador
del jugador , de
nuevo,
llámela el nombre del juego. Entonces Maple Story. Ahora, obviamente,
tienes que crear múltiples modos de juego si
tienes modo de juego múltiple. Entonces, por ejemplo, en
Counter-Strike, tienes algo
llamado partido de muerte. Has capturado la bandera, tienes cinco contra
cinco jugadores. Por lo que tienes diferentes modos de
juego. Y puedes crear
múltiples modos de juego. Puedes, por supuesto, en lugar de llamarlos el nombre del juego, puedes llamarlos por algún
dn, Capture the Flag. Entonces llamándolo el nombre
del modo de juego. Pero para éste sólo
tenemos un modo de juego. Así que sólo voy a
llamarlo Maple Story. Ahora para que este
modo de juego funcione en nuestro nivel, hay
que,
primero vamos a guardar todo. So File Guardar todo. Y vamos a Editar. Y dentro de la configuración
del proyecto. Y en la
configuración del proyecto puedes hacer clic en mapas y modos aquí arriba. Así que recuerda en mapas y
modos previamente
editamos el
mapa de inicio a nuestro mat mean. Entonces ahora lo que queremos hacer
también es establecer nuestro modo de juego predeterminado. Esta es la base
que usa el motor. Por lo que voy a hacer click en él y luego haga clic en
GM Maple Story, esta es nuestra costumbre. Entonces quiero que haga clic en esta pequeña flecha al lado del modo K
seleccionado. Ahora hay que cambiar
las clases predeterminadas. Por lo que podemos ver aquí dice la clase de controlador de
jugador,
acabamos de hacer uno. Así que pinchando aquí y
cambiándolo a la historia de PC Maple. También tenemos que definir
nuestra clase de estanque predeterminada, pero realmente
no tenemos encendida en este momento, así que vamos a omitir esto por ahora. Y vamos a cerrar esto abajo. Ahora, dentro de este
mapa en el que
te encuentras, también tienes que recordar
ir a la configuración del Mundo. Entonces si no tienes esta configuración
mundial abierta, puedes hacer click en Ventana. Y luego puedes hacer clic
en esta llamada Configuración
del mundo para
abrir la ventana. Pero aquí en la
configuración mundial también hay que
recordar cambiar este modo de
juego sobrescribir. Así que pinchando aquí, haciendo
clic en GM Maple Story, y voy a hacer clic en
esta flecha solo para
asegurarme de que el
controlador del jugador sea correcto. Justo en lo que lo puse en
la configuración del proyecto. Entonces PCM capaz historia. También puedes ver aquí, si haces doble clic en el Modo de Juego, puedes ver aquí a la derecha dentro de los valores predeterminados de
clase. Aquí a la derecha, se puede
ver si hago esto más pequeño. Dice que el controlador del jugador
es PC, Maple Story. Lo decía automáticamente
porque
lo hicimos dentro de la configuración
del proyecto. De acuerdo, realmente no queremos
trabajar dentro de aquí ahora mismo, así que vamos a cerrarlo. Por lo que ahora hemos creado el modo de juego básico y el
básico un controlador de jugador. Así que vamos a seguir adelante en la siguiente lección y
crear el personaje.
20. Planos para padres y niños: Así que ahora es el momento de
sumar el personaje. Al igual que lo que te he
dicho antes. Haga clic con el botón derecho aquí y vaya a clases de
planos o clase aquí. Cuando haga clic en todas las clases
aquí, busque papel. Ahora en lugar de hacer
este personaje, recuerda que estamos trabajando en 2D, así que tenemos que hacer
un personaje de papel. Por lo que haciendo click en ese
aquí y haciendo clic en Seleccionar. Ahora tenemos que
llamarlo algo. Y por ahora quiero
explicarte cuáles son los
planos de padres e hijos. Entonces primero aquí, vamos a crearlo y
llamarlo base de caracteres. Ahora tenemos una base de personajes aquí y vamos a hacer clic derecho en ella. Y ahora se puede ver que dice
Crear clase Child Blueprint. Entonces déjame crearlo y
quiero explicarte lo que estoy haciendo. Entonces PPE,
llamémoslo base del jugador bp. Y hagamos otro
aquí desde la base de personajes. Haga clic con el botón derecho en él nuevamente y
cree la clase Child Blueprint. Llamemos a este
VP base enemiga. De acuerdo, entonces lo que estoy
haciendo aquí es dejar que en realidad
ahorre todo primero. Entonces lo que estoy haciendo aquí
mismo es que
creamos un personaje base, y a partir de eso, hice clic derecho y creé planos infantiles. Entonces, lo que son los
planos infantiles es cuando codificas algo
dentro del personaje, de
Hoy, ese código
se llevará automáticamente
a la del niño. Recuerde que la base enemiga y base
del jugador son ambos
hijo de la base del personaje. Entonces lo que tengo código
o hago dentro de base de personaje también se aplicará a cualquier base
y jugará una base. Esto es muy útil
por lo que no tienes que
codificar lo mismo una y
otra vez. Entonces si yo, por ejemplo, quiero citar algo aquí, y quiero que
lo mismo esté aquí, y lo mismo que esté aquí. Eso sería
mucho trabajo y no estaría tan optimizado. En cambio, creé
llamados planos. Entonces cualquier cosa que haga dentro
de aquí también se llevará
automáticamente
al enemigo y al jugador. Y por ejemplo, en
el carácter basado en, se
puede hacer doble clic en él. Y tenemos algo llamado componentes
de movimiento de personajes. Entonces dentro de aquí, por ejemplo, puedes controlar cualquier
movimiento del personaje. Por ejemplo, ¿qué tan rápido
debe caminar tu personaje? Y si escribo, por ejemplo, digamos 200 en lugar de 600. Y compilar es solo ahorrar. Hablaremos de eso
en la próxima lección. Entonces compilar y ahorrar aquí. Y si minimizo esto y
abro mi, digamos jugador. Y miro el componente de
movimiento de jugadores, se
puede ver que
bajó automáticamente a 200. Porque recuerda que es un
hijo de carácter basado. Así que lo que haga dentro
del personaje, se aplicará
al jugador. Entonces si vuelvo
aquí y hago clic en esta pequeña flecha para
volver a la predeterminada, y se remonta a 600. Ahora si voy al jugador, se
puede ver en el jugador
también cambió de nuevo a 600. Entonces esto es muy útil. Y lo que queremos hacer ahora, dentro de la base de jugadores, queremos hacer clic aquí. Y ahora queremos
crear a los jugadores, porque ahora tenemos una base para los jugadores.
Vamos a hacer clic derecho. Y quiero crear
éste llamado Tsarina. Y también tenemos otro
personaje llamado Luke. Trabajaremos con ellos más adelante, pero podemos crearlo en este momento. Así que crea de nuevo
Child Blueprint
del jugador y llámenlo BP Luke. De acuerdo, entonces ahora estos dos niños, cada vez que codificamos algo
en la base del jugador , por
ejemplo, el movimiento, realmente no
queremos codificar el movimiento aquí
para el bucle for. Y luego queremos codificar el
mismo movimiento para Serena, porque estos dos jugadores, tienen el mismo movimiento. Están corriendo de la misma manera. Están saltando con
el mismo botón. Por ejemplo, hacer clic
en el espacio para saltar o hacer clic en las
flechas del teclado para correr alrededor. No queremos hacer eso dos veces. Sólo tenemos que codificar esto
dentro de la base del jugador. Ahora, no tendría sentido
codificar el movimiento dentro
de la base de caracteres. Porque recuerda
que tenemos una base enemiga y el enemigo no está realmente caminando
como tú como el jugador, el enemigo no está
usando un teclado. El enemigo no tiene un
ratón con el que mirar a su alrededor, por lo que no tiene sentido
codificar el movimiento de los jugadores dentro del enemigo
porque es inteligencia artificial. Realmente no tiene
teclado, no es un humano. Por lo que tendría
más sentido codificar movimiento de
los jugadores
dentro de la base del jugador. Muy bien, entonces ahora
tenemos los planos padre e hijo creados. Y de nuevo, recuerda, si
necesitas alguna ayuda con esto alguna vez, siempre
puedes ir dentro de mi servidor de Discord y estoy más que dispuesto a
ayudarte con todo esto. Así que vamos a hacer clic con el botón derecho ahora
y crear una nueva carpeta. Y sólo voy
a llamarlo jugador. Y estoy haciendo
uno nuevo llamado enemigo. Por lo que nos estamos organizando. Voy a poner esta
base enemiga en lugar de enemigo. Vamos a
crear ai más adelante. Y luego poniendo a Luke, la base del jugador y
Serena dentro del jugador. Por lo que ahora con eso hecho, vamos a hacer click en
Archivo y Guardar todo. Y pasemos
a la siguiente lección.
21. Descripción general del gráfico de Blueprint: Seguimos, tomemos una visión general del gráfico de
planos. Así que vamos a nuestra
carpeta Blueprints dentro del atlas de jugadores. Simplemente entra en esta
llamada base de jugadores. Ahora se va a
abrir así, pero hay que hacer click en Abrir editor completo, un editor de
Blueprint. Y esto sucede
siempre que no tienes ningún código dentro de aquí todavía. Por lo que pinchando aquí y se puede ver este es el gráfico de planos. Y dentro de aquí
tienes el Gráfico de Eventos. Y dentro del gráfico de eventos, aquí es donde escribes
todo tu código. Puedes ver aquí, Unreal
Engine te
brinda eventos muy sencillos por defecto. Y para navegar por
dentro del gráfico de eventos, puede mantener el botón derecho
y puede desplazarse así y usar la
rueda del ratón para acercar y alejar. También puede hacer clic con el botón derecho
para agregar funciones. Posteriormente vamos a
usar esto para agregar algún código, pero no te preocupes por esto. Esto probablemente te parezca
abrumador. Hay muchas
cosas que
puedes agregar dentro de aquí, pero estaremos trabajando con eso a lo largo de todo
el curso. Aparte del gráfico de eventos
donde escribimos el código, también
tenemos una ventana gráfica. Y dentro de la ventana gráfica, aquí es donde agregamos nuestros artículos. Para que puedan ver aquí
a la izquierda
tenemos algo
llamado componentes. Y dentro de esta pestaña de
componente aquí, por
ejemplo, el sprite, vamos a añadir aquí un libro
flip para que
podamos ver en el panel Detalles, igual que te dije de
aquí en este panel Detalles, cuando hacemos clic en cosas
aquí en nuestro nivel, podemos editar ítems y
editar por ejemplo, la ubicación, la
rotación, la escala. También podemos editar cosas
sobre la colisión. Esto es lo mismo aquí dentro de la clase blueprint. Cuando hacemos clic en un componente, podemos agregar ajustes sobre este componente
dentro de los detalles. Entonces, por ejemplo, el sprite. Posteriormente vamos a
sumar el personaje. Y se puede ver cuando hago click en este
libro flip fuente, se pueden ver, podemos ver las animaciones para el personaje que creamos
en una lección anterior. Así mismo que antes. Contamos con un panel de detalles
donde podemos editar ajustes y posteriormente
vamos a añadir
más componentes. Y esto se puede hacer haciendo
clic en este botón Agregar. Y puedes ver que puedes
sumar muchas cosas. Por ejemplo, un cubo, una esfera. Puedes agregar iluminación, audio y montones,
muchas cosas. Aquí abajo. Podemos ver nuestros eventos que
creamos en nuestro Gráfico de Eventos. Entonces si vuelves a
la Gráfica de Eventos aquí, puedes ver Unreal Engine te
da estos por defecto. Y también puedes ver estos
eventos llamados Begin Play, actor, comienzan a
superponerse y tomar, y puedes verlos aquí. Posteriormente cuando agregamos funciones, también
puedes ver
nuestras funciones aquí. Se pueden ver las macros, se pueden
ver variables, y yo
las voy a explicar en una lección posterior. Y después de eso, también tenemos
esta barra de herramientas por aquí. Lo más importante es
este botón llamado compile. Y cada vez que escribes algún código, así que si acabo de escribir
algo por diversión, puedes ver aquí te da un signo de interrogación y dice que
sucio necesita ser recompilado. Por lo que te dice que
tienes que hacer click en este botón cada vez que hayas
terminado de escribir tu código, tengo que hacer click en este botón. Y este botón
es, solo comprueba si el código que
has escrito es bueno o no. Entonces si hago clic en él y me
da esta marca de verificación, significa que no tengo
ningún error en mi código y estoy listo para presionar
play y jugar mi juego. Pero si haces algo mal, te
dará una
cruz y te
dirá que has
hecho algo mal. Y cuando te dé un error, te
lo dará
aquí abajo y los resultados del compilador. Aquí se puede ver que tuvo éxito. En este momento no
tenemos ningún error. Pero si tienes un error, aparecerá aquí abajo y te
dirá cuál es
tu error. Ahora voy a
seleccionar este nodo en este momento esto fue
solo para probar. Voy a hacer click en eliminar. Y de nuevo, aquí en la barra de herramientas, puedes guardar tu proyecto. Por supuesto, puedes
buscar planos. Puedes ir a la Configuración de
clase, ir a los
valores predeterminados de clase y así sucesivamente. Y estaremos trabajando con todo eso a lo largo
de este proyecto.
22. Eventos y funciones: Echemos un vistazo a
los eventos y funciones. Voy a volver
a mi base de jugadores bp. Por lo que dentro de aquí como predeterminado, Unreal Engine te da estos eventos predeterminados y los eventos siempre están
marcados con rojo. Así que voy a pasar el cursor sobre estos este
momento y voy a hacer clic en Eliminar en mi teclado. No los necesito ahora mismo. Pero tienes éste, el muy básico llamado start play. Este evento. Te dice qué debo hacer
cada vez que hago clic
aquí en la jugada,
siempre que, cada vez que
empiezo a jugar mi juego. Entonces, por ejemplo, muy simple. Puedes arrastrarlo desde este pin de ejecución y
arrastrando hacia fuera y diciendo print. Entonces en busca de impresión. Esta es la función muy básica que aprenderás
desde el principio, y solo imprime algún
texto en la pantalla. Por lo que haciendo clic en esta función. Entonces esta es una
función y se puede ver por la f aquí arriba. Entonces este es un evento, esta es una función. Siempre, siempre en Blueprint
necesita eventos para disparar código. Y el código consta
de varias funciones. Siempre necesitando un evento
para disparar código más, tu motor no sabe cuándo
quieres disparar este código. Entonces si tuviera esto desconectado
y se puede hacer eso sosteniendo Alt en su
teclado y haciendo clic aquí. Esto los desconectará. Si me dirigí como
aquí, el motor, nunca
sabremos
cuándo disparar este código. Si no tienes un
evento acoplado a él,
voy a arrastrarlo aquí a la otra
pluma de ejecución y
conectándolo , haciendo clic en compilado. Recuerda hacer eso. También puedes aquí, en lugar de compilar y
ahorrar todo el tiempo, puedes hacer click en estos
tres botones son puntos y decir Guardar en compilar, solo
infructuoso. Y lo que eso significa es
cada vez que compilar ahora, se guarda automáticamente para usted
si aparece esta marca de verificación. Entonces ahora lo que pasa
es en Begin Play, mi pantalla va a saludar. Voy a minimizar esto
un poco y hay que mirar aquí arriba a la izquierda. Por lo que al hacer clic en el juego, y se puede ver que no pasa nada. Y esto es en realidad un
pequeño error de mi parte. Así que en realidad vamos
a agregar la base del jugador. Recuerda antes en realidad
te dije que queremos
sumar el estanque. Así que hagamos click en
la cruz aquí. Hagámoslo ahora
antes de que lo olvidemos. Entonces yendo a editar la configuración del proyecto y en los mapas y modos
subiendo aquí de nuevo, recuerda te dije que
necesitábamos agregar esto más adelante cuando creamos un
personaje y tenemos uno ahora. Así que pinchando aquí, y vamos a hacer nuestro
personaje Serena por ahora. Lo vamos a codificar Serena. Por lo que no vamos a crear
una base de jugadores en este momento. Por lo que queremos engendrar a Serena
al mundo más adelante. Así que sólo voy a seleccionar mi
clase de poema predeterminada, solo Serena. Pero más adelante tendremos una pantalla de selección de
personajes. Y cuando tenemos
eso, solo
lo hacemos a ninguno porque entonces
el jugador selecciona al personaje y
aparecerán como Tsarina o Luke dependiendo de lo
que hayan seleccionado. Pero en este momento no tenemos una pantalla de selección de
personajes. Entonces voy a desovar
como Tsarina por defecto. Voy a hacer click en Crosshair, ir a la configuración del Mundo
y asegurarme aquí y el modo de juego general que
Serena también se aplica aquí. Ahora, volvamos a hacer clic en Play. Y se puede ver mi
pantalla dice, hola. Ahora cayendo por el suelo. Aquí se puede ver que estoy
tirando por el suelo porque no tengo arranque
de jugador. Y podemos sumar uno también, sólo para que no caiga por
el suelo yendo aquí. Y rápidamente agregan botón, yendo a básico y agregando
este inicio de jugador. Entonces aquí es donde
podemos empezar aquí. Y si haces clic en G, puedes recordar mostrar
y ocultar los iconos. Este es el inicio del jugador. Voy a colocarlo
en mi mundo aquí en, vamos a hacer el y 0. Entonces está aquí en el frente. Y entonces podemos, voy a hacerlo más pequeño ahora mismo porque si tienes esta cápsula está en medio
de tus fichas de colisión, va a decir mal tamaño. Voy a reducir la escala aquí
abajo a 0.25.25.25. Y entonces sólo
voy a arrastrarlo aquí
abajo cerca del suelo. Ahora cuando hacemos click en Play, se
puede ver dónde cayendo
por el suelo, pero no estamos
cayendo todo el camino porque tenemos nuestra colisión. De acuerdo, así que volvamos a los planos ahora
dijimos Hola y se puede ver aquí a la parte superior izquierda
que dice Hola en mi pantalla. Entonces el código está funcionando en este
momento y está pasando por esta base de jugadores. Otros eventos que tenemos es
algo llamado tick de evento. que puedas
buscarlo aquí si haces clic derecho en el gráfico
como te dije antes, puedes buscarlo aquí. Y si acabas de escribir evento, puedes ver todos
los eventos que podemos aplicar a nuestro código. Por ejemplo, hit de evento, o si tu actor comienza a
superponer algo, o si tu personaje ha saltado, quieres hacer algo. Quizás si empiezas a
jugar el juego, esto es lo que tenemos en este momento. Y tal vez este
llamado tick de evento, esto es lo que quiero
mostrar en este momento. Éste es algo que nunca
debes usar. Y siempre que lo uses, esto es probablemente porque
tienes que usarlo en algún momento, pero trata de evitar esto, nunca lo uses en tu juego. Lo que quiero decir con eso
es porque éste ejecuta tu código 60
veces por segundo. Entonces si hago clic en
Control X para copiar esto y Control V para
pegarlo aquí abajo. Si conecto esto aquí,
por lo que el evento enfermo, puedes verla cuando hago click
en Reproducir este lugar tantas veces y juega
60 veces por segundo. Por lo que se puede imaginar si
tienes algún código que
se está jugando 60
veces por segundo, tu juego se va a retrasar. Y si tienes
varios de esos, tu juego le va a
gustar más y los jugadores sentirán la pierna. Así que trata de nunca, nunca, nunca usar esto. Siempre hay una
mejor solución que usar un evento seis. Voy a eliminar éste. Nunca lo uso en mis juegos. Y hay algunas veces en las
que tienes que usarlo, Pero esto es siempre que tu juego es muy
grande y te metes en una situación en la que en realidad no
puedes hacer
nada más que hacer esto. Pero yo diría un juego
muy grande, úselo esto solo una vez. Así que nunca, nunca uses esto. Intenta eliminarlo. Ni siquiera pienses en esto, este evento. Y como puedes ver,
hay muchas funciones que
puedes agregar a tu juego. Tenemos tablas de datos, así que tenemos novio, tenemos capas y así sucesivamente. Por lo que muchas cosas que puedes agregar tu probablemente
usaremos el 10% de todo esto. Así que ni siquiera te
preocupes por todo esto, a
pesar de que
parezca abrumador. Nuevamente, si voy aquí y
escribo cadena de impresión, hay otra
función llamada delay. Para que pueda retrasar aquí. Si escribo retraso, entonces podemos retrasar dos
segundos, por ejemplo. Y luego podemos imprimir
otra cuerda. Y aquí lo voy a llamar terminado, algo así. Y puedes hacer click en esta
flecha para que se reproduzca más tiempo. Por ejemplo, quiero
reproducirlo durante diez segundos en mi pantalla. Quiero hacer el color rojo. Por lo que tienes algunas variables
aquí que puedes cambiar. Y voy a compilar, recuerda hacer eso. Y luego puedes hacer clic
en jugar en tu juego. Puedo decir que dice hola
y después de dos segundos, va a decir terminado. Por lo que muy básico,
esto es Blueprint. puede ver que es muy
fácil trabajar con. Y una vez que aprendas lo básico, puedes crear unos juegos
muy poderosos. Entonces ahora en la base de plantas, realidad
eliminemos todo, compilemos y guardemos,
y sigamos adelante.
23. Variables: Seguimos
configurando el personaje. Hablemos de
lo último que se llama variables. Y este es el principio
principal en programación en planos y cualquier lenguaje
que estés escribiendo. Entonces
volvamos a la base del jugador y a la izquierda
como viste antes, hay algo que
se llama variables. Y quiero que
pienses en variables como contenedores que contienen
algún tipo de información. Pueden, por ejemplo, contener cuánto
personaje más saludable tiene, qué tipo de arma
está sosteniendo
tu personaje , tu velocidad de movimiento, si tienes monedas suficientes para comprar un artículo en la tienda o no. Entonces un contenedor que contiene
cuántas monedas tienes. Entonces las variables son contenedores que contienen información
específica, sea cual sea la información
que intentes almacenar. Y para crear una variable, hay
que hacer click en
este botón más. Y cuando creas una variable, tienes que darle un nombre. Y a la derecha, se puede ver
todo el tipo de variables. Por ejemplo, crea un booleano. Y llamemos a este
booleano tiene arma. Y por lo general empiezo
mis booleanos con una b. Y esto es porque esto suele ser lo que se hace
en C más plus. Y cuando arrastra esto, puedes arrastrarlo al gráfico. Y cuando lo sueltas,
puedes optar por conseguir esta variable para
configurarla en algo específico. Así que solo consigamos esta variable. Por lo que ahora tenemos esta variable
y si compila, puedes ver aquí abajo
en el panel Detalles, tienes algunos ajustes que
puedes cambiar por ella. Puedes cambiar el tipo de
variable, puedes cambiar el nombre
que acabamos de decir. Puede agregar una descripción
y replicación. Vamos a
tocar eso más adelante. Esto es multijugador. Y ahora dice por favor
compilar los planos. Y vamos a
compilar aquí arriba. Y te va a mostrar
cuál es el valor predeterminado. Lo que es un booleano,
es algo que puede ser verdadero o falso. Entonces puede ser
falso como este o
puedo tomarlo y el
valor predeterminado será verdadero. Por ejemplo, podemos comprobar si el jugador tiene el
arma o no. Y tal vez podamos empezar por
defecto a ser falsos. Por lo que el jugador
no tiene el arma, pero más tarde cuando el
jugador recoja el arma, ésta nos vamos
a poner a verdad. De acuerdo, así que por ejemplo, tomemos un ejemplo aquí. Hagamos de nuevo el evento de inicio de
juego. Entonces si sus derechos comienzan a
jugar goteando aquí. Ahora, tomemos esto y
podemos decir cadena de impresión. Ahora cuando imprimimos esta cadena, lo que puedes hacer en lugar
de decir hola, puedes arrastrar esto
y conectarlo aquí. Y
te va a decir, voy a convertir esta variable booleana
en una cadena, porque una cadena es en realidad
una variable también. Se puede ver aquí hay
una variable llamada cadena. Para que puedas arrastrar
esto y va
a convertirlo en una cadena, que simplemente significa en texto. Y voy a imprimir
este texto a la pantalla. Por lo que ahora cuando enchufes
la variable, ahora
puedes hacer clic en play. Y va a decir falso, y este es el valor
de lo booleano. Entonces más tarde, digamos
después de cinco segundos. Entonces voy a hacer el
nodo de retardo y hacer cinco segundos. Entonces después de cinco segundos, en realidad
quiero decir que el personaje ha
recogido el arma. Para que pueda arrastrar esto
y luego decir set. Puedo conectarlo aquí
y ponerlo en verdadero. Ahora, vamos, volvamos a hacer
la cadena de impresión. Por lo que voy a hacer click en
Control C, Control V aquí. Y voy a conectar
mi variable ahora, el valor. Y va a imprimir
eso a la pantalla, compilar y dar click en play. Entonces va a decir falso. Y después de cinco segundos, va a decir
verdad aquí arriba, ¿de acuerdo? Entonces va a decir falso
y luego va a decir verdad porque
lo pusimos en verdad más adelante. Y así es como establecemos
variables dinámicamente. Uno, el jugador más adelante
entra en nuestra arma, vamos a establecer que tiene
arma a verdad por ejemplo. Así que eliminemos todo
esto por ahora. Entonces tenemos este booleano
que puede ser
verdadero o falso y se pueden
revisar las cosas con él. Tienes
los otros, tienes un sesgo, tienes un entero, un
entero 64 y un flotador. Todo esto por
nuestros valores numéricos. Entonces, por ejemplo,
intentemos crear un entero. Vamos a arrastrarlo hacia fuera. Nuevamente. Haga clic en Obtener. En lugar de hacer clic en
obtener y configurar todo el tiempo, puede hacer clic y arrastrar y
mantener presionado Control en el teclado. Esto lo conseguirá automáticamente. También puedes mantener presionado Alt en el
teclado y hacer clic y arrastrar, y
esto lo configurará automáticamente. Entonces, en lugar de arrastrar y
hacer clic en conseguir configurado, puedes sostener
Control o Alt. ¿ De acuerdo? Entonces todos estos
valores numéricos, por lo que el entero, entero 60 para el float, el byte, todos estos
son valores numéricos. Y si compilo y
hago clic en esto aquí, puede ver que es un número, necesita un número en éste, tal vez
podríamos cambiar
el nombre del mismo, haga clic en F2 para cambiar el nombre. Y éste podría
decir cantidad de monedas. Entonces tal vez estamos
recolectando monedas. Y voy a
compilar dice por favor compilar el blueprint compilando. Y aquí se puede ver
la cantidad de monedas. Entonces empezamos con 0, y
mientras entramos en monedas, vamos a añadir monedas
a esta variable. Por lo que tenemos algunos operadores. Y si haces clic
y arrastra desde esto, realmente
puedes guardar,
por ejemplo, Plus. Y se puede ver
podemos sumar monedas. Si escribirás menos, puedes restar monedas. Si escribes el letrero dividido, puedes ver que dice divide. También tenemos el
multiplicar así. Entonces, por ejemplo, podemos
decir plus así. Y en Maple Story
puedes recoger las monedas. Creo que se llama micelas. Micelles, no estoy seguro. No estoy seguro de
cómo se llama. Así que llamémoslo monedas. Y por ejemplo, puedo añadir, cada vez que entro en él, puedo añadir diez monedas como esta. Ahora si acabo de arrastrar desde aquí
y escribir cadena de impresión, ahora puedo conectar esto
a mi cadena de impresión, y va a
convertir el entero a una cadena que
es una variable de texto. Ahora va a imprimir diez. Así que permítanme simplemente hacer la
duración mucho más aquí. Déjame hacer el color rojo. Esta compile save. Y cuando hago click en Play, se
puede ver que dice diez
aquí arriba porque tengo diez monedas. El entero. Muy cool. Puedes escribir números. Podemos utilizar estos operadores
para modificar estas variables. Y otro
tipo de variable es el flotador, muy importante, podemos decir por
ejemplo, la salud de la capa. Esto es lo que podemos llamarlo. Podemos arrastrarlo, manteniendo el control,
sacándolo automáticamente por aquí. Entonces si compinas ahora, lo bueno
de
nuestro flotador en comparación con un entero es que un flotador
puede contener posiciones decimales. Entonces por ejemplo,
puedo escribir 50.5 aquí. Y el valor predeterminado, en
cuanto a las monedas, si trato de escribir un decimal
lugares, por ejemplo, 50.5, va a convertirlo automáticamente
a 50 porque no se
puede escribir
decimales dentro de un entero. Así que siempre que quieras un
número con decimales, tienes que seleccionar un flotador. Este es el único, pero si quieres
algo que sea un número completo sin
decimales, puedes elegir un entero o algo que sea
más grande y entero 64. En cuanto a la mordida,
solo se puede establecer el número. Si cambio la variable aquí. En cuanto a la mordida, sólo se
puede cambiar el número a un máximo de 255. Entonces para la
salud del jugador ahora es un byte. Nuevamente, si escribo
decimales, no
lo va a aceptar. Es sólo el flotador el que
acepta decimales. Y éste sólo puede contener
el número 200 hasta 255. Entonces si escribo 256, va a
cambiarlo a 255 para que pueda escribir cualquier
número, las rodillas 255. Pero si escribo algo arriba, no
lo va a aceptar. Para que puedas imaginar
los usos de estos. Por ejemplo, si tengo una
pantalla de selección de personajes y lo tengo, digamos que tengo tal vez 60
peinados y Maple Story, puedo usar la mordida. Pero si lo tengo,
digamos el domingo tengo 600 peinados por alguna razón. Ya no puedo usar un bocado porque sólo puedo tener hasta 255 peinados. De acuerdo, Entonces estos son
los valores numéricos y también tenemos otros valores. Tenemos el nombre, la cadena, el texto, y pedimos el
nombre. Vamos a crear eso. Y si arrastro el nombre por aquí, se
puede ver
cada variable que creamos tienen
diferentes colores. Entonces si solo creo variables
aleatorias aquí arriba, y cambio
ésta a una cadena, cambie ésta por un
texto, whoops, textos. Y podemos arrastrarlos hacia fuera. Podemos, por ejemplo, llamar a
este ID de logro. Podemos, podemos llamar al
segundo nombre del servidor, y podemos llamar al
último mensaje de chat. Vale, entonces la diferencia
entre estas puedes
intentar compilar y puedes ver cuando haces click en
estas variables, sólo algunos textos
que puedes escribir aquí. Lo mismo ocurre con
el nombre del servidor y lo mismo va para el jugador. El jugador salud Ashley, tenemos que compilar. Ahora compilar esta
es la equivocada. Voy a arrastrar
éste en su lugar. Y se puede ver aquí
este ID de logro, dice ninguno en este momento. Entonces todas ellas son variables de
textos y se
puede escribir algún tipo
de textos por aquí. La diferencia entre esos
es que siempre tienes que elegir esta variable de nombre
siempre que tengas algún tipo de textos que
nunca cambien en juego. Por ejemplo, identificación de logro. A lo mejor un logro
que tengas se llama ID 273 o cualquier número
aleatorio que tengas. Este ID, nunca
tendrás la necesidad de
cambiarlo en juego. Y aquí es donde
puedes usar un nombre, porque lo que sea que escribas aquí. Nunca se puede modificar en el juego, pero este no es el caso
con el nombre del servidor. Entonces, por ejemplo, si
escribo Maple Story, mejor servidor, únete ahora,
o algo así. Ahora bien este texto que escribo aquí, usted es capaz de modificarlo. Por ejemplo a y ejemplo te
puedo dar es un nombre de servidor. Entonces si el jugador escribe
esto como el nombre del servidor, en realidad
podemos modificar el texto que el
jugador derechos aquí. Si arrastra desde esta variable de
cadena, y si solo escribes string, puedes ver todas
las funciones que
puedes usar con una cadena. Si se desplaza hacia arriba,
puede ver que esta es la categoría llamada cadena. Y aquí tienes
todas las funciones que puedes usar
con esta cadena. Entonces, por ejemplo, puedes comprobar si el texto escrito aquí está vacío. Entonces si la variable está vacía, y si está vacía,
se puede ver la roja. Recuerda que
en realidad es un booleano, por lo que puede ser
verdadero o falso. Entonces, por ejemplo, si el nombre del
servidor está vacío, le vas a dar un error
al jugador diciéndole que escriba un nombre de servidor porque no se
puede crear un nombre de servidor
vacío. Podemos arrastrar de nuevo, podemos escribir cadena y
podemos volver a comprobarlo. Por ejemplo, puede hacer que todos los caracteres en
minúsculas o en mayúsculas. O incluso puedes dividir el
texto. Y tal vez algunos. Para lo que lo uso es si el
jugador escribe una mala palabra, por ejemplo, el interior, y no quiero que el jugador escriba eso en el nombre del jugador. Puedo arrastrar aquí. Y puedo decir encontrar. Hay algo aquí en esta cadena llamada
find substring. Y puedo escribir al interior. Realmente no quiero hacer
eso aquí en el video. Y va a encontrar esa palabra dentro del servidor
del jugador. Entonces, lo que sea que el jugador
haya escrito aquí, va a encontrar esa palabra. Y si lo hace, se puede
hacer algo con él. Y en ese caso podemos usar
el que se llama reemplazar. Para que podamos reemplazar también, solo
podemos hacer eso en su lugar,
encontrar la subcadena. También podemos hacer eso. Entonces reemplazando el interior
con algo más y solo puedes dejarlo
vacío y se mostrará que lo reemplaza con nada, lo
que significa que borra la palabra y no pone
nada dentro de aquí. Cosas muy chulas. modificar las
variables de cadena como desees, pero no puedes hacer eso aquí. Si arrastra de esto
y sabías el nombre correcto, puedes ver en el nombre no tienes mucho que puedas hacer. Para que no tengas el está vacío, no
tienes el reemplazo. Por lo que sólo se pueden modificar cadenas
y no la variable de nombre. Lo último que tienes
es el texto y el texto. Lo único que
quiero decir de
esto de manera diferente a la cadena es que, uh, textos que puedes localizar, para que puedas traducirlo
a diferentes idiomas. Digamos que quieres
traducir tu juego al alemán o japonés o chino. Sea cual sea el texto que
quieras traducir, tienes que usar una variable de texto, lo que sea que escribas en
una variable de cadena. Esto no se puede traducir
más adelante en el juego. Entonces, antes de empezar a
hacer tu juego, piensa, ¿quiero
traducir mi juego al alemán? ¿ Cuando haya terminado? Si quiero, sea cual sea el texto
que quieras traducir, tienes que escribirlo
en una variable de texto. En cuanto al nombre del servidor, no
creo que necesitemos
traducir el nombre del servidor. Por ejemplo, digamos que
hemos terminado nuestro juego. Realmente no tiene sentido
traducir un nombre de servidor. Esto es justo lo que, sea cual sea
el derecho del jugador. Pero en cuanto a un
mensaje de chat, digamos, por ejemplo, alguien dice, hola, ¿cómo estás? ¿ O tal vez un NPC diciendo eso? Y ahora queremos
traducir este mensaje al japonés porque alguien de Japón necesita ver
lo que esto significa. Entonces vamos a cambiar
esto a japonés. Pero si escribes esto aquí, dentro de aquí, no
puedes traducirlo. Tienes que escribirlo
en una variable de texto. Y entonces usted podría
preguntar, ¿por qué
no sólo estamos usando
esto todo el tiempo? ¿ Por qué incluso tenemos
que usar esto o esto? Y esto es para la optimización. El nombre usa menos memoria
y luego viene la cadena. Y el que es más
caro es el texto. Por supuesto que no
va a afectar nada si solo usas
uno o dos en tu juego. Pero si tienes un juego grande
llevas trabajando durante tres años y solo lo
usas todo el tiempo. Por supuesto que va
a afectar tu juego. Entonces éste utiliza la
menor cantidad de memoria. Así que siempre trata de ir con esto. Si tienes textos que
nunca cambian, por ejemplo, un ID de logro, pero
usa una cadena después de eso. Y por ejemplo, también puedes
usarlo para un nombre de jugador. Porque el nombre del jugador, nuevo, hay que
modificar el nombre. Si escriben una mala palabra, hay
que
verificarla a su nombre. Y como última cosa, si quieres que tu juego
sea traducido y
tienes algunos textos que
necesitan ser traducidos, entonces tienes que escribirlo,
escribirlo en una variable de texto. Muy bien, basta con eso. Eliminemos esto por ahora. Y de nuevo, se pueden crear
más variables de valor. Y los últimos que tenemos son el vector, el rotador
y la transformación. Podemos usar esto más adelante
en el proyecto. No voy a
cubrir esto por ahora, sino para el vector,
muy, muy simple
si solo
lo creas en este momento y
pincha en compilar. puede ver que viene
con tres números. Y por lo general para lo que
usamos un vector, generalmente lo usamos aquí. Si hace clic en algo aquí, se
puede ver en la ubicación que generalmente usamos un vector para cambiar o comprobar si hay una ubicación porque la ubicación tiene tres números. Y generalmente usamos vectores para eso porque
tiene tres números. Por ejemplo, podemos establecer la ubicación de los personajes cada vez
que toman un portal, podemos configurarlo en una ubicación
específica. Lo mismo ocurre con el rotador. Si cambio esto a un rotador, tiene tres valores, igual que aquí en
el panel Detalles. Siempre que hago clic en algo, tienen una rotación. Por lo que este es un rotador y
se puede configurar u obtener una rotación. Y como última cosa
tienes una transformación. Y esto se usa
siempre que estás desovando cosas en el mundo. Entonces, por ejemplo, estás desova al personaje
en el mapa. Entonces hay que
establecer la
ubicación de los caracteres donde
desea engendrar el personaje, qué rotación debe tener ese
carácter, y la escala que debe tener el
personaje. De acuerdo, por lo que estas fueron las variables más importantes y voy a eliminar todas ellas. Vamos a crear
más variables personalizadas. Y quiero cubrir estos muy
básicos para empezar, porque esto te lo hará
muy fácil más adelante. Entonces voy a eliminar
todo aquí. Vamos a compilar. Ahora. Pasemos a configurar
el personaje y
aprenderás todo esto paso a paso
durante este curso.
24. Cómo configurar el personaje: Para configurar nuestro personaje, volvamos primero a nuestra carpeta Blueprints y
configuremos Serena. Entonces en lugar de jugador, hicimos esta clase de plano
llamada Tsarina. Este era un personaje de papel y esto era un hijo
de base jugador. Aquí para BP Tsarina, tenemos que sumar esos activos. Recuerda, hicimos esos
flip books y podemos agregarlos a nuestra clase de
planos. Entonces volviendo a la carpeta
del reproductor aquí, haciendo clic en Serena,
cuando esto se abre, esto es porque está vacío. Por lo que es, el panel Detalles está
llenando toda la pantalla por
lo que hay que hacer click en Abrir
todo editor de Blueprint. Y estamos dentro de aquí. Se puede ver que realmente no necesitamos codificar nada en este momento, así que voy a la ventana gráfica. Aquí. Aparecerá el libro flip book de Serena. Una vez que lo añadas. Agregas los flip books
aquí a la izquierda. Se puede ver que tenemos un
sprite y en realidad podemos agregar el
libro flip book de Serena dentro de aquí. También tenemos
movimiento de personajes donde podremos controlar el movimiento más
adelante cuando agreguemos movimiento. Entonces vamos a hacer click en el sprite
y aquí en el flip book, hay dos formas de
agregar un flip book. Puede hacer clic
aquí y seleccionarlo. Esta sería la forma
más fácil en este momento. O si minimizas esto un
poco y lo haces un
poco más grande. También puedes ir a
tu carpeta de activos, y también puedes hacer clic y
arrastrar y ver que destaca esto por ti y
puedes agregarlo a esa ranura. Por lo que depende de ti si quieres
agregarlo de esta manera o de esta manera. Puedo ver tenemos nuestro flip book agregado y
esto ya funcionará. Entonces si solo lo pruebes aquí, si solo haces clic en
Compile and Save. Y de nuevo, se asegura de
que no cometas un error aquí en
la configuración del proyecto. Al igual que antes cuando
agregamos el modo de juego. Aquí. Recuerda que también tenías la clase **** predeterminada a Serena porque esto es lo que
estamos probando en este momento, solo para asegurarte de que
has seguido esa lección. De acuerdo, así que ahora tienes que agregar un inicio de jugador de nuevo para desovar. Por lo que tienes esta arena también
puedes comprobarlo aquí en la configuración mundial para revisar la Clase de Peón Predeterminado para
asegurarte de que sea Tsarina. Y también que tengas un jugador
empieza aquí en el nivel. Por lo que al hacer clic en Jugar ahora, puede ver que estamos desovando
dentro del nivel, pero aún podemos
ver al personaje, pero el personaje en realidad
está ahí. Y esto es
porque no conoce la vista que quieres porque no
has agregado una cámara. Volvamos a Tsarina aquí. Y sobre este brillante, se
puede hacer click sobre él aquí y en realidad hacer clic
en la cápsula. No queremos colocar
la cámara encima de aquí. Por lo que da clic en la cápsula
y da clic en Agregar. Y primero que queremos
sumar es algo que se llama primavera en un
resorte sobre él aquí. Se puede imaginar esto como
el soporte para la cámara, por lo que está sosteniendo la cámara. Podemos el brazo de resorte
y luego de nuevo hacer clic en Agregar y dar click en una cámara. Entonces aquí, cámara. Por lo que tenemos este brazo ardiente y la cámara está dentro
de este brazo de resorte. Entonces es un niño
del brazo de primavera. Y se puede ver que la cámara
está un poco equivocada, girada. Actualmente estamos viendo
al personaje así. Entonces tenemos que rotar la cámara. Y recuerda, muchas personas cometen un error
haciendo clic aquí y rotando la cámara
presionando E en el teclado. Se puede ver que tiene
estas diferentes herramientas. Nuevamente, al igual que lo
tenías en la ventosa. Muchas personas cometen el error
de rotar la cámara aquí, pero en realidad hay que
girar el brazo de resorte. Por lo que al hacer clic en el brazo de
resorte y girar, girando la z para que la
cámara esté delante de él, por lo menos 90 grados. Así como esto. Y
vamos a compilar y ahorrar. Puedes hacer click en Jugar ahora
y ver qué pasa. Por lo que haciendo click en Play. Ahora podemos ver,
se puede ver el personaje. Entonces la cámara está funcionando, pero los
ajustes predeterminados están equivocados, por lo que tenemos que editarlos. Muy bien, así que
terminemos todo esto arriba. Entonces lo que hay que hacer es hacer clic
en el brazo de resorte aquí en la cámara y en
realidad hay que cambiar la cámara
a perspectiva. Entonces, lo que hay que hacer
aquí en la cámara, hay
que cambiar esto a vista
ortográfica porque no
estamos trabajando con 3D. Estamos trabajando con 2D. Por lo que haciendo clic en la vista
ortográfica. Y aquí por el ancho orto, puedes cambiar lo cerca
que estás de la cámara. Entonces cuanto menor sea, menor es el número, más
cerca estás del personaje. Se puede ver que esto
es muy enorme ahora. Y cuanto más grande sea, más lejos
estarás del personaje. Para que puedas ver aquí, si acabas probar en gran número aleatorio, te saldrás más lejos. Entonces, ¿qué quieres hacer aquí? Lo probé en Maple Story, lo
toqué y probé la longitud de la cámara
y se trata de 1304. Nuevamente, esto es algo que
miré y cuando
probé Maple Story, así que tal vez sea 201,250,
tal vez sea 1300. No puedo decir eso
seguro en el juego real, pero
parece que está alrededor de 1304. Traté de jugar el
juego un par de veces y probando la cámara. Y a continuación lo que queremos hacer
es hacer clic en el
brazo de resorte y desactivar este llamado do
pruebas de colisión porque
va a hacer errores a la cámara. Entonces quitando eso, haciendo clic en compilar,
haciendo clic en Guardar. Ahora, al hacer clic en Play, se
puede ver que este
es el personaje. Y si lo recuerdas, podemos hacer click en FL1 para
maximizar la ventana gráfica. Así es como se ve. En este momento. El jugador
no está comenzando en el arranque del jugador y podría tener
algo que ver
con nuestra colisión. Entonces si volvemos aquí en Serena, tenemos esta cápsula aquí se puede ver esta
cápsula y esta es la cápsula de colisión,
este componente de cápsula. Entonces tenemos que hacer esto
más pequeño para que se ajuste a nuestro personaje. De lo contrario chocará con los azulejos y
no funcionará correctamente. Para que puedas cambiar esta
cápsula media altura y
puede cambiar el radio para
adaptarse más a nuestro personaje. Voy a anotar 16 aquí abajo. Y el radio de la cápsula, voy a escribir 33 años. Por lo que es un poco más pequeño y
se adapta más a nuestro personaje. Ahora haga clic en Compile and Save. Veamos si ese
fue el problema. Por lo que estoy haciendo click en Jugar ahora. Y era el problema, estaba chocando con esto. Puedes ver aquí tenemos datos de
colisión aquí arriba, tenemos datos de colisión aquí arriba. Cápsula es demasiado grande, está chocando con
estos dos aquí. Y lo está molestando. Por lo que hace que empiece
aquí en la parte superior en su lugar. Pero ahora que hemos arreglado nuestra cápsula de colisión,
del tamaño de la misma, al
menos, ahora podemos
hacer click en play y se
puede ver que el
personaje está aquí. Ahora el pequeño problema
que tenemos en este momento, se
puede ver los pies
del personaje está detrás la hierba y queremos
tener los pies
frente a la hierba. Esta es una solución muy fácil. Recuerda, tenemos nuestros
azulejos aquí a las 000, porque cuando miras aquí arriba, y otra vez, también puedes
solo un buen truco. Puede hacer clic en
esta herramienta de ajuste. Y se puede aumentar el número. Y al aumentar el número a algo así como, digamos 100. Se puede ver
aquí la línea media que me interesa, esta línea muy media. Se puede ver la médula y
pasa por los azulejos. Entonces esta segunda
capa que tenemos, que hicimos antes, y la segunda capa, recuerda que
tenemos un primer plano. Estos fueron el primer plano. Y la zona media
que tenemos a ceros, ceros 0 es nuestros azulejos. Y en este momento, nuestro desove, nuestros jugadores empiezan tiene la
ubicación de 0 en la y, pero sólo tenemos que
empujarlo un poco
más adelante para que el personaje no
esté detrás de la hierba. Entonces lo que voy a hacer es que sólo voy a hacer esto abajo. Sólo voy a escribir
uno aquí en el y porque 0 está básicamente en el
nivel de esos títulos. Pero si escribes uno, técnicamente estamos
frente a esos azulejos. Entonces si solo escribes uno
para el lugar punto en la Y, y puedes hacer click en Play. Ya puedes ver que estás
frente a la hierba. Por lo que ahora que hemos
configurado a nuestro personaje, pasemos al movimiento del
jugador.
25. Movimiento básico de jugadores: Vamos a crear ahora el movimiento
básico del jugador. Así que volvamos a la carpeta Blueprints
dentro de player. Y recuerda lo que
dije antes sobre los planos infantiles y
los planos de los padres. Entonces la mejor manera de hacerlo
es codificar ese movimiento dentro de la base del jugador porque si sostienes
el ratón sobre esto, puedes ver que la clase padre
de Tsarina es el jugador, y la clase de padres para
Luke es la base del jugador. Entonces si recubrimos el movimiento
dentro de la base del jugador, Serena y look heredarán
ese código porque
son planos infantiles
de esta base de jugadores. De acuerdo, así que vamos dentro de la base
del jugador, codificar
el movimiento. Por lo que pinchando aquí. Ahora vamos a abrir el editor completo del blueprint. Y ahora estamos dentro
de este gráfico de eventos. Y nuevamente, puede hacer clic con el botón derecho, mantener presionado,
hacer clic derecho para navegar alrededor. Ahora para codificar esto, empecemos con
el muy básico, y se llama agregar entrada de
movimiento. Esta es la
que siempre estarás usando en cada proyecto si
quieres agregar movimiento. Así que haz clic con el botón derecho y
puedes buscar movimiento. Esto es algo que es
realmente útil a veces cuando codifico y no sé
cómo se llama la función. Y también lo hice
cuando era principiante. Sólo estoy pensando en
qué quiero hacer? A lo mejor quiero hacer
algo con ubicación, así que solo hago clic derecho
y busco ubicación. Entonces trato de descrejarme por ahí. A veces lleva
mucho tiempo descremarse esto. Pero entonces lo encuentro. Por ejemplo, quería conseguir esta ubicación de actores y
quiero usar esta
información para algo. Y esto es lo que puedes
hacer cuando eres principiante. Realmente no tienes que saber
cómo se llaman todos estos. Puedes intentar buscar
lo que estás tratando de hacer. Entonces, por ejemplo, puede
resolver búsqueda de rotación si estás tratando de hacer
algo con la rotación. Por lo que en este momento estamos
tratando de sumar movimiento. Entonces buscando movimiento, siempre se
puede
tratar de desnatar, sé cómo se llama, pero quería ver si lo
puedo encontrar ahora, el movimiento es un poco
difícil de encontrar aquí. Como entrada de movimiento, esto es
lo que estamos tratando de encontrar. Por lo que haciendo click en Agregar aquí,
agrega entrada de movimiento. Ahora recuerda lo que dije antes. No puedes ejecutar funciones si no
tienes un evento. Y queremos que el evento
sea las teclas del teclado. Y luego quieres ir a editar aquí y la configuración del proyecto. Y dentro de la configuración de proyectos, tienes esta llamada entradas, y aquí es donde
agregas tus teclas de teclado. Por lo que haciendo clic en las entradas. Aquí en el mapeo de acceso, también
tienes éste
llamado Action Mapping. La diferencia entre
el mapeo de acciones y el mapeo de acceso es, se
puede pensar que el
mapeo de ejes es continuo. Un clic continuo, un movimiento
continuo. Por lo que todos los movimientos
estarán aquí abajo. Y por ejemplo, haciendo clic en
W para avanzar, haciendo clic en D para moverse hacia
la derecha y así sucesivamente. Usted tiene, esos son mappings de
acceso. No obstante, si solo quieres un evento con un solo clic, por ejemplo, presionas la barra espaciadora para saltar, o presionas el
botón del ratón para disparar tu arma. Se trata de
mapeos de acción, movimientos, son asignaciones de acceso,
y eventos con un solo clic. Están arriba en los Mappings de
Acción. Aquí siempre suman los movimientos
a las asignaciones de acceso. Por lo que queremos sumar, por ejemplo, mover a la
derecha y a la izquierda. Entonces como se trata de un juego 2D, nos estamos moviendo a
la derecha y a la izquierda en este juego de plataformas. Y aquí abajo
tienes que asignar claves a lo que quieras usar para moverte
a derecha e izquierda. Ya sea puede hacer click aquí y click aquí y encontrar la clave. Pero otro
método útil es hacer clic en este botón y luego hacer clic en
la tecla de tu teclado. Por lo que voy a hacer clic
en D en mi teclado. Esto moverá al
personaje hacia la derecha, y voy a hacer click
en este botón plus, mirando este
teclado y haciendo clic en una
en mi teclado
para moverme a la izquierda. Y hay que establecer la escala
a menos una para la izquierda. Para que puedas pensar en ello como
dos direcciones diferentes. Entonces es más uno cuando
te mueves a la derecha y es menos uno cuando
te mueves a la izquierda, igual que un gráfico
con eje x e y. Muy bien, así que vamos a cerrar la configuración del proyecto
y volvamos aquí. Ahora, cuando haya agregado
el mapeo de ejes allí, ahora
puede hacer clic derecho
aquí y escribir el mismo nombre que lo ha llamado en la Configuración del
Proyecto. Por lo que lo llamo mover a la
derecha y a la izquierda. Y se puede ver aquí,
puedo ver los eventos del eje. Por lo que desea agregar este
llamado Eventos de Acceso, no los valores del eje. Y se pueden ver los eventos siempre
tienen este ícono también. Para que pueda hacer clic en él. Nuevamente. Los eventos siempre se
marcan como leídos. Para que sepas que esto es un evento. Ahora puedes conectarlo a
la entrada de movimiento aquí. Lo siguiente que hay
que aprender sobre las funciones es ese objetivo. Son muy importantes. Y se puede ver aquí
dice aquí arriba, el objetivo es ****. Por lo que quiere sumar
movimiento a un peón. Y recuerda nuestro carácter. Estamos dentro del personaje
aquí, la base del jugador. Y este plano que hicimos, es un personaje, es un personaje de papel. Y al igual que antes de lo que dije aquí en la Clase Blueprint, un personaje es un tipo de estanques. Por lo que en realidad es
un tipo de teléfono. Uno va a crear un personaje que ya tenemos
el objetivo correcto. Se puede ver que dice auto. Yo significa este plano. Ya estás dentro, así que estás tratando
de agregar movimiento al plano en el que
ya estamos, para que eso sea correcto. Y en cuanto a la dirección a la
que queremos agregar movimiento, puedes hacer clic aquí y
decir Obtener rotación de control. Entonces estamos tratando de conseguir la
rotación de nuestro controlador. Y entonces podemos decir
sacar adelante vector. Y ahora podemos conectarlo
aquí con la dirección mundial. Entonces estamos tratando de conseguir la dirección
de avance de nuestro controlador. Ahora en cuanto al valor de escala, puede conectarlo aquí este valor de
eje. Y ahora tienes el movimiento. Entonces vamos a compilar y ahorrar,
e intentemos movernos. Por lo que haciendo click en Jugar ahora, voy a la persona D para moverme a la derecha y dar click en la
edad y pasar a la izquierda. Para que puedan ver tenemos el
movimiento arrodillarse ahora.
26. Salto del jugador: Ahora vamos a sumar el
salto para los jugadores. Así que pinchando de nuevo aquí
en la base del jugador. Y recuerda que necesitamos un evento. Entonces volviendo a la configuración de edición y proyecto dentro
de aquí en entradas. Ahora, ya que el salto
es un evento con un solo clic, vamos a agregarlo aquí
en el mapeo de acción. Recuerda que son solo
movimientos los que agregamos en Mappings de Acceso. Aquí, haciendo clic en el plus
para el mapeo de acción. Vamos a añadirlo aquí. Vamos a llamarlo salto. Y voy a agregarle aquí mi
barra espaciadora. Puedes añadir otro
botón si quieres. Voy a cerrarlo. Y ahora podemos
hacer clic derecho y decir salto. Y aquí lo puedes
ver aquí abajo en los Eventos de Acción diciendo saltos. Por lo que pincha aquí, y ahora tenemos nuestros eventos. A continuación, ya
tienes una
función incorporada dentro de Unreal
Engine llamada saltos. Para que puedas arrastrar desde esta pluma de
ejecución y escribir salto, y ya tienes esta
función llamada saltos. Por lo que pinchando sobre él. Ahora, compilar save. Y puedes hacer click en play. Y se puede ver cuando presiono
en el espacio, usted está saltando. Obviamente, tenemos que sumar
la animación Slater, y también tenemos que
editar los movimientos. Entonces, cuánto estamos saltando
y cuál es la gravedad, qué es eso para después. Así que volvamos
ahora y quiero mostrarte algo
para la optimización. Por lo que voy a añadir aquí
una cadena de impresión. Por lo que va a decir Hola
cada vez que hago clic en saltar, si hago clic en Jugar ahora
y hago clic en el espacio, se
puede ver a la parte superior izquierda, está diciendo Hola cada
vez que hago clic en el espacio, ahora estoy haciendo clic en espacio todo
en todo lo que puedo ahora. Y te
puedes ver. Puedo hacer click en el espacio y saltar a
pesar de que estoy en el aire. Y no quiero hacer eso
por el bien de la optimización. No quiero ejecutar
el código todo el tiempo. Solo quiero ejecutar
el código una vez. Y cuando aterrizo en el suelo, permito que el jugador vuelva
a saltar. Porque si permito que el jugador presione en el espacio todo el tiempo, se
puede ver que podemos
pasar el código. Esto no está realmente optimizado, así que solo quiero que el jugador ejecute
solo este código
siempre que el jugador pueda, cuando el jugador esté bajo tierra. Y tenemos algo que
se llama está cayendo. Entonces, si tomas este Componente de
Movimiento de Caracteres, puedes hacer clic y
arrastrarlo a este gráfico de eventos. Y se puede ver que esto también
es una variable. Recuerda antes de aprender
esas variables muy básicas. Pero ésta es en realidad también una variable si la arrastra aquí. Por lo que ahora podemos hacer algo
con el componente de personaje. Se puede arrastrar fuera de ella
y se puede decir que está cayendo. Y ahora podemos comprobar si esto está comprobando si el
jugador está en el aire. Y recuerda que el
bolígrafo rojo aquí es un booleano. Para que puedas arrastrar desde este
booleano y puedes hacer click en b, y puede hacer que
éste se llame rama. Una sucursal es, solo está comprobando si este valor es verdadero o falso y se puede hacer
algo con él. Así que ahora estás diciendo que estás tomando el movimiento de
personajes, estás comprobando si el jugador está cayendo y si es cierto, sí, el jugador está cayendo. No queremos saltar porque el jugador
ya está en el aire. Pero sin embargo, si el jugador ya no
está cayendo, así que está revisando, ¿está cayendo
el jugador? Dice que no, el jugador no
está cayendo. De acuerdo, entonces se te permite saltar porque
estás en el suelo. Por lo que ahora se puede ver
si compilo y hago clic en play en realidad vamos a añadir una cadena de impresión
aquí arriba para que puedan ver que el jugador está cayendo
y realmente no podemos saltar. En realidad, eso es aquí abajo. Ese es un mejor ejemplo. Por lo que sólo va a
saludar dondequiera que saltamos. Así que vamos a hacer clic en salto.
Ahora. Haga clic en el espacio. Ya ves que no puedo
gastar mi espacio. Sólo puedo ejecutar el código
cada vez que estoy en el suelo. Entonces esto está optimizado. Así que ahora ese código
está optimizado y el jugador no puede ejecutar
el código todo el tiempo. No obstante,
para facilitarme la lectura, puedo eliminar esto y
puedo
desconectarme sosteniendo Alt y haciendo clic
en este pin de ejecución. Ahora, en lugar de hacerlo aquí, quiero tenerlo a la
verdad porque puedo leerla mejor si tengo esta
función establecida a true. Pero ahora tenemos que hacer
otro booleano aquí. Entonces ahora está diciendo, ¿está cayendo el personaje? Lo que queremos decir si lo
enganchamos a lo verdadero, ¿no está cayendo el personaje? Si eso es cierto, entonces el
personaje no está cayendo, los personajes en el suelo. Podemos saltar para hacer esto sólo
para hacer esto lo contrario. Podemos arrastrar aquí y decir nueces. Y se puede ver no
éste no igual, tenemos que usar
éste NO booleano. Y lo que esto está diciendo es, si el jugador se está volviendo locos cayendo, si eso es cierto, entonces adelante
y usted es capaz de saltar. Y creo que esto
es mucho más fácil leer que tener esto a falso. Muy bien, entonces
lo último que quiero enseñarte es una
creación de funciones. Entonces antes de que puedas ver, tenemos muchas
funciones que
podemos añadir que son prefabricadas, pero también puedes hacer
tus propias funciones. Y quiero hacer de éste
una función y
puedes acortar ésta. Y por lo general hacemos esto
para limpiar el código. Puedes hacer clic derecho aquí. Y se puede decir
colapso para funcionar. Entonces lo hará, en lugar de que vayas aquí y
creando la función, en realidad la
creará para ti. Entonces seleccionando todos estos tres, haciendo clic derecho y diciendo
colapso para funcionar. Ahora se puede ver que
hizo una función y por lo general escribo F como
prefijo para funciones. Llamemos a éste. No es saltar. Entonces esto es lo que es. Está comprobando si estás saltando. Solo está diciendo que ahora
puedes hacer doble clic. Por cierto, tal vez lo
hice demasiado rápido. Puedes hacer doble clic en
esta función creada. Y ahora se puede ver la
función aquí. Empieza. Voy a arrastrar esto
aquí para que esté más organizado así. Entonces esta es la función. Comienza aquí, termina aquí, y da un valor de retorno. Y el valor de retorno, si vuelves al
Gráfico de Eventos, saldrá aquí. Este es el valor que
se está revisando aquí. Entonces esto es un poco más organizado. Estás ocultando este
código dentro de esta función y solo aparecerá
esta función. Ahora recuerda, hay que
agregarlos a la
pluma de ejecución porque en blueprint, realmente no
puedes hacer así porque
tienes desconectado, una
función desconectada y esto lo hará nunca correr si lo
tienes así. Entonces la mejor manera
sería hacerlo como aquí y luego ejecutarlo
a través del código. No obstante, puedes hacer
esto un poco mejor. Sé que te he dado mucha información dentro
de este video, pero quiero enseñarte
el mejor método de codificación. Aquí creaste
ahora esta función, y se está ejecutando correctamente
a través del código. Para que puedas ver si
hago clic en Play, nada está realmente
mal con mi código. Puedo saltar y está
funcionando perfectamente. Pero realmente no tienes que
conectarlo a los pines de
ejecución aquí. Porque por lo general en
estas funciones azules, se
puede ver que tenemos funciones
verdes y tenemos funciones azules. Las funciones verdes
solo te dan alguna información que
puedes usar para algo. Por ejemplo, aquí
tenemos la rotación de control. Conseguimos el vector delantero, por lo que la dirección hacia adelante. Y luego estamos obteniendo
esta información y estamos utilizando como
nuestra dirección mundial. Por lo que las funciones verdes
se utilizan para obtener información. Y sin embargo, las funciones
azules
se utilizan para establecer información. Por lo que hemos establecido funciones
y tenemos funciones get. Por ejemplo, la
función de salto está configurando el salto. Y aquí
realmente no estamos vendiendo nada. Entonces si haces clic en
esta función que hicimos, realmente no
es
vender nada, solo
se está consiguiendo si el
jugador se está cayendo o no. Por lo que está recibiendo información. Entonces no tiene
sentido tenerlo siendo luz azul aquí
y puedes cambiarlo. Por lo que podemos hacer click en esta función y puedes hacer click en
ésta llamada pura. Así que hacer clic en puro solo significa que estoy obteniendo información
de esta función. Realmente no necesito configurarlo. No estoy configurando ninguna información, solo la
estoy consiguiendo. El jugador está cayendo o no. Entonces volviendo al
gráfico aquí, ahora, puedes conectarlo de nuevo
así y puedes ver que está
más optimizado. Ahora. Sólo te estás obteniendo si el
jugador se está cayendo o se tuerce, y si el jugador no
está cayendo, si eso es cierto,
eres capaz de saltar.
27. Animaciones de movimiento de jugadores: Ahora estamos listos para sumar las animaciones de movimiento
para el personaje. Espero que estén
plenamente despiertos porque tengo mucho que
enseñarles en esta lección. Entonces si volvemos a nuestro jugador
y dentro de la base del jugador. Por lo que queremos sumar aquí
las animaciones, por lo que estamos agregando el movimiento, pero también queremos
sumar la animación. Pero ahora se está volviendo un
poco más complejo, pero porque ahora estamos consiguiendo
un multijugador real. Si minimizo esto primero
antes de hacer nada, quiero enseñarte
sobre enumeraciones, hagamos clic derecho
aquí y hagamos una nueva carpeta llamada
enums para enumeraciones. Puedes ir dentro
de esta carpeta, puedes hacer clic derecho
aquí y blueprints, puedes crear esta
llamada enumeración. La enumeración es, es sólo
una lista de cualquier cosa. Entonces si solo lo haces
y puedo mostrarte, normalmente empiezo enumeraciones, prefijos escribiendo E, y llamémoslo
movimiento Estados. Estamos creando una lista
de movimientos estados. Entonces una enumeración es
sólo una lista de cualquier cosa. Puedes hacer click en
este botón aquí arriba. Puedes ver cada
vez que haces clic en ella, agregas una lista o agregas
un elemento a esa lista. Entonces una enumeración es sólo una lista de lo que
quieras hacer una lista de. Por ejemplo, comestibles. Puedes escribir tu Apple, naranjas o pepino o
lo que quieras escribir. Puedes escribir autos, por ejemplo, una lista de autos. Puedes escribirlas aquí y
tal vez los modelos de los autos. Se puede escribir una lista de armas
y una lista de cualquier cosa. Voy a listar de artículos. Pero por este bien, estamos escribiendo una lista de
los
estados de running o movimientos aquí más bien. El primero que
voy a llamar inactivo. Entonces tenemos una animación ociosa, y luego tenemos una animación de derechos de
carrera. Tenemos una animación de carrera a la izquierda, y luego tenemos
una animación de salto. Y también tenemos
una animación de otoño. Y en realidad
no tenemos realmente una emisión caída
porque solo hicimos, volvamos al Carácter de
Activos. Hicimos una animación ociosa,
una animación de corrida. A pesar de que se llama correr, ambos
hemos corrido a la derecha
y alrededor de la izquierda. Y luego tenemos aquí la animación de
salto. Pero realmente no
tenemos una animación de otoño. Pero en Maple Story, la animación completa es la
misma que el salto. Por lo que sólo vamos
a usar este salto como nuestra animación completa también. Así que vamos a hacer clic en guardar todo. Ahora hemos hecho
nuestra enumeración, hemos hecho la lista. Ahora volvamos
a la base de jugadores. Ahora aquí puedes agregar
la enumeración. Entonces si se crea una variable y llamémosla
movimiento Estados. Y puedes cambiar
la variable aquí. Y para encontrar tu variable
personalizada, puedes llamarla como
llamaste , el archivo de enumeración. Entonces e como prefijo y
puedes escribir movimientos, fecha, y puedes ver, puedes
ver tu enumeración aquí. Por lo general son de este color verde
oscuro. Entonces este movimientos E afirman
esta es nuestra enumeración, haciendo clic en ella, y ahora es
una variable que puedes compilar. Si quieres ver
cómo se ve, siempre
puedes
sacarlo aquí y hacer click en, Consigue esto como conseguir
la información. Puedes mirar aquí, click en set y puedes ver
que puedes configurarlo en todos
estos diferentes elementos de lista que has establecido
aquí en la lista. Entonces si agregas una
cosa más y haces clic en Guardar, puedes ver aquí esta cosa nueva en realidad necesito compilar
aquí, Compile y Save. Ahora puedo hacer click en
él y se puede ver el nuevo elemento de lista
que se ha agregado. Entonces así es como se agregan
cosas a la izquierda. También puedes eliminarlo aquí. Podemos ahorrar, de nuevo,
Compile y Save. Y ahora se puede ver esta es
la lista que tenemos. ¿De acuerdo? Entonces básicamente lo que queremos hacer es tomar este valor de eje. Ahora déjame
imprimirlo en la pantalla para que pueda mostrarte
lo que está pasando. Así que ahora vamos a imprimir. Si arrastra este valor de eje y se conecta a
la cadena de impresión. Ahora va a imprimir este valor de
eje cada vez que se ejecute. Entonces si haces clic en
play y corres, puedes ver que es
uno cuando me mudé a la derecha y es menos uno
cuando me muevo a la izquierda, recuerda que esto es lo que escribimos dentro de la
configuración del proyecto y la insumos. Uno para moverse a la derecha. Sólo quiero moverme a la izquierda y
cuando estemos quietos, es 0. ¿De acuerdo? Pero esta información
que tenemos ahora, nos estamos volviendo mucho
más astutos ahora. Entonces cuando lo es, cuando esto es igual a 0, estás parado
quieto, estás inactivo. Entonces sacando esto y
escribiendo el signo igual, o puedes escribir
igual si quieres. Puedes conseguir que este operador
aquí diga igual. Entonces si este número es igual a 0, y puedo arrastrar aquí de nuevo
y escribir b o una rama. Si este número es igual a 0, si eso es cierto,
¿qué queremos hacer? Y en última instancia lo que
queremos hacer. Queremos establecer este elemento de
lista en inactivo porque ahora sabemos
que el jugador está ralentí porque el jugador
está parado, el valor del eje es igual a 0. Pero si no es igual a 0, esto significa que te estás moviendo. Sí, te estás moviendo. Pero si acabo de copiar pegue
este control C control V. ¿Te
estás moviendo a la derecha o te estás moviendo a la izquierda? Por lo que esto, también tenemos que comprobar. Entonces, por ejemplo, se
puede arrastrar desde este valor eje y se puede decir, el signo mayor como
este, ¿es esto mayor? Para que puedas elegir éste. Es este valor eje, ¿es mayor que 0? Y podemos arrastrar este año, yo sería para la sucursal. Y whoops, se alejó. No sé qué está
pasando así. Entonces si este valor x
es mayor que 0, esto significa que nos estamos
moviendo hacia la derecha. Entonces conectemos
éste desde lo falso. Entonces ahora lo que estamos diciendo es
este valor x igual a 0. Si lo es, entonces está inactivo. Si no lo hace,
adelante y revisa éste, entonces aquí abajo, lo que estamos comprobando es,
es el exceso de valor
mayor que 0. Si es mayor que 0, entonces te estás moviendo
hacia la derecha. No obstante, si te estás moviendo, si es menor que 0, entonces realmente te estás
moviendo hacia la izquierda, así
porque es menos uno. Muy bien, entonces este es
el principio principal. Ahora tenemos que hacer un
poco más de trabajo para que funcione en multijugador. Voy a mover este salto,
saltar la función IF aquí, saltar lógica aquí abajo. Por lo que tengo más espacio aquí arriba. Entonces éste realmente quiero
convertir en una función. Entonces voy a bajar aquí y voy
a hacer clic derecho. Y también puedes, viste aquí si
escribías eventos, podrías seleccionar
un evento para agregar, pero puedes hacer
tus propios eventos. Entonces si escribes disfraz, puedes ver puedes
agregar un evento personalizado y puedes llamarlo
como quieras. Voy a llamar a este
un
estado de movimientos de conjunto porque esto es
lo que estamos tratando de hacer. Entonces establece el estado de movimiento y
tenemos ahora este evento. De acuerdo, así que quiero
tomar uno de esos, así que voy a hacer clic en Control X para cortarlo y
pegarlo aquí abajo. Ahora, alternativamente, lo que
quiero que hagan es establecer
aquí mi estado de movimientos y el evento. Y una cosa genial
que puedes hacer aquí. Ya viste, podrías
agregar variables aquí, pero también puedes agregar
variables a funciones. Puede ver todas estas funciones
prefabricadas. Todas estas son
en realidad variables. Para que puedas hacer click en
estos eventos personalizados. Puedes agregar una nueva variable, pero también puedes
agregarla fácilmente arrastrando este pin y soltarlo encima de
tu función personalizada. Puedes verlo
crea automáticamente esta variable para ti. Si quisieras
agregarlo manualmente, siempre
podrías
hacer click en el plus aquí y puedes darle un nombre. Entonces, por ejemplo, nombre. Puedes verlo cambia de nombre aquí y puedes volver a seleccionar E. Movimientos se quedaron y
podrías haberlo seleccionado así. Sólo voy a
eliminar éste. Sólo te estaba mostrando. Entonces compuestos Guardar ahora. Entonces ahora lo que puedes hacer aquí arriba. Así que ahora en lugar de tener
esta enumeración escrita, podrías sacar
esto y escribir el nombre del evento
que escribiste aquí abajo. Entonces así es como se
llama un evento personalizado. Establece los Estados de movimiento. Y se puede ver llamada función aquí, establecer estado de movimientos. Ahora, en lugar de tener esta
enumeración ejecutándose directamente, en realidad
va a
ejecutar este evento que establece esta variable a lo que
esté seleccionando aquí. Por lo que esta información que estás eligiendo aquí está
pasando por aquí. Y está configurando
tu variable a cualquier información por la que esté
pasando aquí arriba. Muy bien, tan cosas
muy, muy cool, pero tenemos que hacer un poco más porque estamos
en multijugador. Este no es un juego para un
solo jugador. Esto se habría funcionado
perfectamente en un solo jugador. Pero en multijugador, generalmente
no establecemos variables
en los clientes, por lo que tenemos un cliente
y el servidor, y generalmente el servidor, que es el tipo
que hace el juego. Entonces si juego Counterstrike, creo un servidor. Yo soy el servidor. Imd, el verdadero juego. Por lo que tengo la
autoridad del juego. Y se oye a veces que
hay tramposos o hex, eso se llama ataque del
lado del cliente. Entonces lo que normalmente hacemos es
establecer variables a través del servidor porque el
servidor controla el juego, siempre hay que recordar
que en Unreal Engine, servidor tiene el control del
juego y lo que hagas, Sea cual sea la lógica que escribas, tienes que ejecutarla
a través del servidor. Los clientes son todas
las capas conectadas. Entonces harás el servidor, eres el servidor y todos los jugadores que te
conecten a tu servidor. Se les llama los clientes. Y si no ejecutas todo el
código a través del servidor, así que si no verificas
lo que estés haciendo, por
ejemplo, saltando o haciendo
esto configurando una variable. Si no lo revisas primero, con el servidor, el cliente tiene un
tiempo más fácil hacer trampa en el juego. Entonces, si solo ejecutas esto a través del cliente y
estableces esta variable, el cliente tiene una manera fácil de hacer
trampa dentro de tu juego. Así que recuerda siempre, el servidor tiene la autoridad del juego, que el servidor
es el verdadero juego. El servidor comprueba si
has cerrado el arma, entonces el servidor dice, sí, este cliente realmente ha
disparado el arma. Después sigue adelante y aplica
daños a ese personaje. Por lo que el servidor siempre tiene que
revisar esa información para asegurarse de que el cliente
no está haciendo nada ilegal. Entonces otro ejemplo, justo
antes de continuar, por
ejemplo, el cliente, por lo que la capa conectada. Dispara un RPG y RPG
más lejano que tienen que
revisar a través del servidor. El servidor comprueba. ¿ Este jugador realmente tiene un RPG en la mano y
disparando el arma? Entonces el servidor
comprueba y dice, sí, este cliente realmente tiene un
RPG en la mano y lo cierra. Entonces enviará
esa información vuelta al cliente
que disparó el RPG. Y le dirá a
ese cliente que se le permite disparar esa
arma porque sí, tiene el RPG en la mano. Regla motor. Tiene esta
autoridad donde el servidor tiene la autoridad y
lo que haga el cliente tiene que revisarse a
través del servidor. Podemos simplemente ponerlo aquí. Esto es, puedes ver aquí este es el cliente
y también puedes comprobarlo aquí si haces clic derecho
y escribes cadena de impresión. Y recuerda que la cadena de impresión es tan, tan poderosa a pesar de que solo
está imprimiendo una cadena. Vamos a compilar y ahorrar. Y se puede ver lo que estoy diciendo. Ahora, en lugar de
hacer clic en play ahora, vamos a hacer click en estos
tres botones y cambiémoslo por un
número de jugadores. Ahora estamos dentro
de Multijugador. Vamos a escribir dos.
Aquí en modo net, haga clic en éste llamado
play as listen server. Volvamos a hacer clic en
estos botones, y voy a hacer click en
esta nueva ventana del editor. Entonces esto es lo que
voy a jugar ahora. Ya no voy a jugar en la ventana gráfica
seleccionada. Por lo que haciendo clic en la nueva ventana del
editor. Ahora podemos ver que
tenemos el servidor. Lo puedes ver en la parte superior
aquí. Contamos con el servidor. He creado este juego. Y se puede ver al
cliente conectado a mi servidor que
he creado. Si hago click aquí, se puede
ver que puedo moverme como el servidor, y también puedo moverme como
cliente por aquí. Por lo que ahora estamos dentro
de multijugador. Y como puedes ver aquí, el cliente hola y el
servidor también imprime hola. Esto significa esta información. Significa que este evento se está ejecutando en el servidor
y en el cliente. Ambos están diciendo hola. Y cuando establezco variables, solo quiero
configurarla en el servidor. Quiero asegurarme de que
el cliente no esté engañando. Por lo que nunca quiero establecer
variables en el cliente. Y eliminemos esto. Y así vamos a hacer clic aquí y decir otros eventos
personalizados. Vamos a agregar evento personalizado. Llamémoslo S RV por servidor. Normalmente los llamo como R V. Y llamémoslo el
mismo nombre que éste de aquí arriba. Dice que el movimiento afirma. Así como eso. Ahora para que se ejecute solo
por el servidor, tienes éste en
multijugador llamado replicación. Por lo que haciendo clic aquí y
haga clic en ejecutar en servidores. Por lo que sólo queremos ejecutarlo en el servidor y dar
click en confiable. Voy a desconectar
esto sosteniendo Alt, desconectando estos
y conectando el set de aquí con esto. Y ahora lo que podemos hacer
aquí es ejecutar estos eventos. Entonces aquí arriba, correr
es nuestra v así, y conectando estas
entradas así así. De acuerdo, así que ahora va
correctamente en realidad. Ahora lo que estamos haciendo es que estamos comprobando
si el valor x es 0, por lo que el jugador está al ralentí
si eso es cierto. Y esta información ídolo. Ahora estamos ejecutando
este evento llamado estado de movimiento
conjunto,
que es éste. Por lo que estamos configurando esta
información en Sur la ociosa. Esta información se está
imprimiendo al servidor. Y el servidor está
configurando esa variable a lo que haya escrito aquí o lo que
haya elegido aquí. De acuerdo, entonces este es el método
correcto para hacerlo. Entonces ahora lo que tenemos que hacer aquí, así que eliminemos esos. Y de nuevo,
solo puedes escribir aquí el nombre de este evento para
llamar a los conjuntos de eventos. Movimientos, estados
así y selecciona éste, no éste, por lo que éste de aquí. Y vamos a copiarlo,
pegarlo aquí abajo. Entonces si, si el valor del eje
es mayor que 0, significa, si eso es cierto, significa que estamos
corriendo hacia la derecha. Eso es falso. Estamos corriendo a la
izquierda, así como esto. Entonces ahora es más
correcto. De acuerdo, entonces ahora hemos puesto la
variable ¿qué ahora? Porque se puede ver si compilar y guardar y guardar todo, si puedo hacer click en Play now, realmente
nada está pasando. Y eso está bien. Porque esencialmente
lo que estás haciendo momento es que estás
configurando esta variable, pero realmente no has
definido al supervisor. Si vuelvo aquí,
realmente no has usado este flip books. Recuerda, solo estás configurando esta variable a
cualquier información que estés configurando aquí también. Entonces para las enumeraciones, tenemos algo llamado
switch on enumeration. Así que justo como prueba, si acabo de arrastrar esta
enumeración hacia fuera, y si la arrastro
aquí y digo switch, se
puede ver un interruptor
en la enumeración. Lo que es, es básicamente, solo te da unos pines de
ejecución
dependiendo de lo que hayas escrito
aquí en la lista. Y se pueden hacer
diferentes acciones. Y se puede ver aquí,
cuando estamos al ralentí, podemos ejecutar este flip book. Cuando lo estamos. Vuelvo aquí. Si estamos corriendo a la derecha, puedo ejecutar este libro
flip run y así sucesivamente. Por lo que podemos hacer diferentes acciones
dependiendo de lo que seamos, a
qué nos hemos fijado
esta variable. De acuerdo, Así que dentro de
multiplicador de nuevo, puedes hacer click en una variable. Y aquí en multijugador, al
igual que antes, donde tienes
replicación en el evento, diciendo ejecutar en servidores se están ejecutando en el
cliente específicamente. También para variables, se
pueden replicar esas. Para que como puedas imaginar, si estableces una variable
en el servidor aquí, el cliente tiene que conocer de alguna manera
esta información. Y esto es lo que usas
esta bifurcación de replicación. Porque si configuras esa
variable en el servidor, ¿cómo lo notaría el cliente? Porque el cliente no tiene posibilidad saber qué lo
has dicho también, porque eres el servidor. Ha establecido la
información en el servidor, pero hay
que enviar esa información de vuelta al cliente para que el cliente sepa a qué le
ha establecido el servidor. Y aquí es donde entra la
replicación variable. Por lo que si hago clic en esto
y hago clic en replicado, se
puede ver aparecer estas
dos esferas. Esto significa que estoy configurando la
variable en el servidor, y ahora estoy
enviando esa información al cliente para que el cliente sepa cuál es el valor
para esta variable. Esto es lo que hace replicado. Ahora un poco complejo. Lo último de lo que quiero
enseñarte antes de que
te vuele los sesos es
éste llamado Rep, notifíquelo. Y esto crea una
función para ti. Por lo que si haces clic en retinas die, puedes ver aquí
crea automáticamente esta función de desenvolver. Y lo que hace
es que va a ejecutar esa función cada vez
que establezca esta variable. Entonces cada vez que
establezcas esta variable, se va a ejecutar esta función. Entonces voy a hacer doble clic
en esta función. Y voy a
arrastrar este movimiento se quedó aquí sosteniendo Control, soltándolo aquí, y
ahora arrastrándolo aquí, diciendo interruptor en la enumeración. Así como eso. Cada vez que voy
a ejecutar este código, ejecútelo aquí a través del
servidor configurando esta variable. Cada vez que cambia este valor, se va a ejecutar esta función. Entonces lo que quiero hacer
con esta función es cambiar el libro flip book. Porque recuerda en el sprite's en realidad no aquí estamos dentro de
la base del jugador. Entonces si voy a
la jugadora Tsarina, recuerda en los sprites, tenemos esta llamada
fuente flip books. Entonces es un flip book
que estamos cambiando. Lo que tenemos aquí es algo
llamado sets flip book. Y ahora te va a decir
que es para el sprite aquí. Y vas
a hacer clic OK, Sí, esto es para el
sprite y lo
creará automáticamente para ti. También podrías simplemente haber
hecho clic y arrastrarlo desde aquí y decir flip book, eso es lo mismo. Entonces vamos a poner este
flip book al ídolo aquí. Cuando estamos al ralentí, cuando
estamos corriendo a la derecha, voy a copiar pega esto, conectando esto con el
objetivo, así. Cuando estamos corriendo
a la derecha, estamos ejecutando la
animación de corrida o ejecutando flip book. Voy a copiar pegue
esto unas cuantas veces. El recorrido a la izquierda es en realidad
también la animación de corrida. Y el salto es la
animación de salto como esta, salto, lípido como
este, y la caída. Realmente no tenemos
una nueva animación, así que voy a conectar mi otoño aquí y simplemente
usar lo mismo aquí, el libro flip jump. Vale, recuerda
tomar esto brillante, o
puedes hacer así
y conectarte a múltiples lugares o
tal vez a veces es más limpio solo usar
varios como este. También puedes hacer eso. Hagamos eso
por éste de aquí. Voy a copiar pegue
esto un poco. Y conectando el
último aquí. Voy a hacer esto más
limpio más adelante, pero vamos a trabajar con él ahora. Compuesto guardar, haciendo clic en Play. Ahora, se puede ver aquí, si corro a la
derecha, estoy corriendo. Si corro a la izquierda, mira, estoy corriendo Pero no estoy corriendo la dirección correcta
cuando estoy saltando. Saltando correctamente. Y esto es porque recuerda
que realmente no hemos hecho la animación de salto y lo
estaremos haciendo justo
después de esta lección. Pero vamos a centrarnos en la carrera. Entonces correr está funcionando, pero estoy corriendo por la dirección
equivocada cuando estoy corriendo a la izquierda. Y esto se debe a que esto es
un sprite y hay que
rotar su imagen para
que se ejecute correctamente. Así que sólo quiero rotar este
sprite cuando estoy corriendo. Entonces cuando corro a la izquierda aquí, no está corriendo la dirección
correcta. Entonces lo que puedes hacer
es tomar este sprite aquí y puedes decir rotación. Recuerda, cuando no
sepas lo que estás haciendo, solo busca la rotación
y puedes intentar
descremar a través de esos y
ver lo que quieres hacer. Y el que estamos utilizando
es la rotación relativa establecida. Queremos rotarlo. Se puede poner algunos minimizar
y hacer click en cualquier cosa aquí. Por ejemplo, este
jugador inicia y clic en E para la herramienta de
rotación. Y puedes ver que
tienes que rotar la z Entonces si quieres algo que gire
hacia el otro lado, tienes que girar la Z por 180. Por lo que voy a hacer click
en Control Z aquí. Y la z, hay que
rotar el sprite por 180. Y puedes llamar conectado aquí. Entonces lo va a rotar
antes de que ponga el libro flip book. Y recuerda, para la carrera, correcto, tenemos que
rotarlo hacia atrás. Así que copiar pegar este
código se está poniendo desordenado, va a moverse de esta manera. Entonces aquí vamos
a rotarlo de nuevo. Entonces configurándolo a 000 y
conectando correr bien, así. Ahora, debería funcionar
correctamente si compilar y en realidad
olvidé agregar un objetivo aquí. Así que vamos a copiar esto, pegarlo aquí así. Y se puede ver cuando
tienes un error,
él, escribe la flecha aquí y dice
que necesitas un objetivo. Aquellos Compila y Ahorra. Así como eso. Y ahora vamos a jugar y ver si me muevo a la derecha, me
muevo a la izquierda. Porque ahora nuestra animación
está funcionando perfectamente. Y ahora nos falta
la animación de salto, y lo haremos
en la próxima lección.
28. Animaciones de salto del jugador: Hagamos ahora la animación de
salto. Así que volvamos a
la base de jugadores. Y aquí, en el Gráfico de Eventos. Aquí hicimos este
movimiento con la OIT, con la derecha de carrera y
lo que corren a la izquierda. Lo que realmente no hemos
puesto el salto. Y saltando aún más
si arrastramos a éste llamado set movements
state de nuevo, por lo que arrastrando éste aquí
para que el estado de movimiento, podamos arrastrarlo dos veces. Por lo que tenemos tanto el salto
aquí y también tenemos la caída. Tenemos que comprobar
si el jugador está saltando o si el
jugador está cayendo. Es lo mismo. Es la misma animación
en Maple Story. Entonces realmente no importa. Pero si estás creando
tu propio juego y
tienes dos animaciones diferentes
para el salto y el doblez. Esto sería realmente
agradable saber. Así que de nuevo, al igual que
antes de aquí abajo, en la lógica de salto, estás comprobando si el
jugador está cayendo o no. Entonces tenemos que hacer lo mismo aquí. Si volvemos
al Gráfico de Eventos, tenemos que hacer lo mismo aquí. Entonces antes de que ídolo, voy a sostener Alt y
pincha aquí para desconectar esto. Voy a mover esto
un poco más lejos porque ahora
podemos sumar el salto. Por lo que voy a tomar el movimiento del
personaje y comprobar si el jugador está cayendo. Entonces estamos consiguiendo, si puedo encontrarlo aquí se está cayendo,
conseguir éste. Y vamos a crear una
rama como esta. Ahora, estamos comprobando si
el jugador está cayendo y si el jugador está
cayendo, estamos saltando. Entonces estamos en el aire. Y si el jugador no
está cayendo, decir que el jugador
está bajo tierra, entonces no estamos en el salto. Sólo vamos a ejecutar ese código en ejecución
igual que antes. Pero aquí estamos saltando
si estamos en el aire. Por lo que ahora tenemos que revisar. ¿ Está saltando el jugador o
es el jugador cayendo? ¿ Cuál es? Podemos hacerlo si obtenemos la
velocidad de estos actores. Así que voy a
hacer clic derecho y a
la derecha conseguir la velocidad, como aquí. Y estamos consiguiendo la velocidad. Y ahora esto es un vector. Ahora puedes romper este vector. Pero porque en lo que me
interesa ahora mismo, si tenemos al jugador aquí, me interesa si el jugador está saltando o cayendo. Y de nuevo, esta es la z, la flecha azul aquí es la z. en el eje z. Quiero ver, va
en la dirección más, lo que significa que
el jugador va
hacia arriba o es el
avión que va hacia abajo, lo que significa que la z está
en realidad en el valor negativo. Entonces voy a terminar por base de
jugadores, esta velocidad. Puedo tomar este vector
y puedo decir break. Puedes romper este vector
en la x, y, y z. recuerda un vector, si
puedo mostrarte aquí atrás, cuando creamos una variable
vectorial, un vector consta
de tres números, al
igual que la ubicación
aquí, tres números. Entonces si vuelvo, déjame
simplemente eliminar éste de nuevo. Entonces estamos rompiendo este
vector en el x,
y, y z porque sólo nos
interesa el valor z. Quiero comprobar si
esto va hacia arriba, lo
que significa que está en el plus, o yendo hacia abajo, lo que
significa que está en el menos. Por lo que voy a tomar
esto y decir mayor. Entonces, ¿esto es mayor que 0? Y creando una rama de
nuevo como esta. Entonces si es mayor que 0, esto significa que el jugador está
saltando porque vas hacia arriba si
no es mayor que 0, por lo que está en el menos significa
que te estás cayendo. Y si el jugador no
está cayendo, solo
ejecutarás este código
normal de ejecución. De acuerdo, así que déjame mover
esto un poco más cerca ahora. Ahora tenemos esta
lógica saltando y siempre podemos, por lo general dedicar toda una lección para una limpieza todo esto arriba, así que no te preocupes si
se ve un poco desordenado. Pero aquí sólo podemos
compilar y ahorrar. Y ahora te lo quiero
explicar. En realidad, simplemente haga clic en
Play y veamos qué pasa. Por lo que si hago clic en jugar y salté, se puede ver que estoy saltando. Está funcionando. Impresionante. Vale, entonces lo que está pasando es que estás revisando aquí y
luego te mueves a la derecha, a la izquierda. Antes de que estés ejecutando
esta animación de movimiento, estás comprobando si
el jugador está cayendo. Y si el jugador está cayendo, significa que estás saltando. Está bien, eso está bien. Entonces sí, estás saltando. Es cierto. Te estás cayendo. ¿ Entonces qué? Aquí tomas la velocidad
de este personaje y estás rompiendo este vector porque sólo nos
interesa el valor z. Estamos comprobando si el valor
z está por encima de 0. Si es así, estás saltando. Si la velocidad está por debajo de 0, lo que significa que estás bajando, eso significa que estás cayendo. De acuerdo, entonces, ¿qué pasa aquí? Estás ejecutando
este evento y lo
configuras para saltar esta información, estás sentado aquí, vamos
a pasar por este evento porque
este es en última instancia el
evento que estás ejecutando. Establezca movimientos Estados que recuerdan que está
llamando a este evento. Por lo que se está ejecutando
a través de este evento. Es poner esta información que salta al que la
has establecido aquí, corriendo por el código. Está pasando por el servidor. El servidor está configurando
esta variable. Y recuerda, configuramos esta
variable a un rep notifique. Y de nuevo, si no
recuerdas un aviso, porque en este momento
eres el servidor y el servidor establece la variable. ¿ Cómo
sabría el cliente qué
es esta variable si no haces
nada porque recuerda, estás en el servidor
y el cliente
realmente no puede ver a qué
te lo estás configurando a menos que estás en el servidor
y elcliente
realmente no puede ver a qué
te loestás configurando a menos que
están replicando
esta inflamación. Por lo que está replicando la información de nuevo al
cliente para que el cliente pueda ver el valor de
esta variable establecida. Entonces lo que sea lo que
sea notifique, notifica a todos los clientes a
qué se le ha establecido
y lo hace a través de esta función
Ribner onReceive. Por lo que un rep notifique cada vez que establezca una variable para rip notify, crea esta función de desenvolver. Y dentro de aquí,
sea cual sea lo que usted código aquí, todos los clientes
verán ese cambio. Es por eso que estamos poniendo
el libro flip book aquí. Porque queremos que
todos los clientes vean que estoy en
mi libreta ociosa. Quiero que todos los
clientes vean que estoy en mi
libro de salto flip y así sucesivamente. Por lo que estás enviando toda esta
información al cliente. Ahora, la información
se estableció aquí, es salto, pasó por el servidor
aquí, establece la variable, y va a ir dentro de la función unwrap
porque cada vez que cambias un
rep notifique variable, va a ejecutar
la función unwrap. Y puesto que usted establece este
valor ahora para saltar, sólo
va a correr a través de
este pin de ejecución de salto. Va a
ignorar todos estos porque sólo ve que
ahora lo has puesto para saltar. Entonces se va a ejecutar
este pin de ejecución, y va a
poner el flip book de este brillante para saltar. Por lo tanto, al hacer
clic en el espacio y saltar, establecerá su libro
flip book para saltar. Y para probarlo. Ya lo puedes ver, funciona. Yo también lo puedo ver en el
cliente. Para asegurarse de que funcione. También necesito correr
como cliente y saltar como cliente para ver si yo como
cliente y permitido saltar. Porque recuerda,
el servidor comprueba lo que sea que estés
haciendo como cliente. Por lo que ahora se
puede ver puedo saltar como cliente. Y además si tomo esto
un poco abajo, se
puede ver que el servidor
puede hacer todo eso. Por supuesto, el servidor, de nuevo, el servidor tiene la
autoridad para hacer cualquier cosa en el juego porque el
servidor es el verdadero juego, el servidor comprueba a todos los
clientes lo que están haciendo y el servidor
es capaz de hacer cualquier cosa. Entonces es más como el cliente. Tenemos que consultar con
el cliente también. Si el cliente es
capaz de hacer todo eso y el cliente es
capaz de hacer todo eso también. Entonces está funcionando perfectamente.
29. Entrada variable personalizada: Ahora quiero mostrarte algunas entradas variables
personalizadas. Entonces si volvemos a
la base del jugador, y aquí dentro de tu función de movimiento
no leída, puedes ver aquí antes de
configurar ahora el libro flip inactivo, configuramos el libro flip run, configuramos el
libro flip jump y así sucesivamente. Pero, ¿y si vamos
aquí a mirar, ahora? Si engendramos, mire
al servidor. Por lo que ahora podemos ver estamos
respondiendo como Tsarina. Y es decir, eso es genial. Pero, ¿y si engendramos a Luke? Luke realmente no
tiene este libro flip book. Mira. ¿No está volteada esta chica? Tenemos que hacer otro
flip book para Luke. ¿ Y cómo usamos el libro flip book de
Luke en lugar
de que Serena está aquí? Y es por eso que casi
nunca hardcode cosas en los juegos. Por lo general odio la
codificación dura como esta. Esto se llama hardcoding
o simplemente seleccionar una variable. En cambio, simplemente haga clic con el botón derecho aquí y promocione esto a una variable. Y ahora se puede llamar a esto una variable, algo
por ejemplo, lo
puedo llamar ocioso, voltear, no tan buen
espacio como ese. Voy a voltear libro. Ahora tengo esto hecho
en una variable. Ahora, si compilo, y se puede ver si hago
clic en esta variable, el predeterminado en este momento
es este flip book, porque he seleccionado aquí, hemos seleccionado
el flip book run. Ahora si hago clic derecho y
promueve una variable, va a establecer
eso como predeterminado. Ahora podemos eliminar esto
como predeterminado para éste. Ahora, déjame simplemente dar
click en Borrar. Entonces haciendo clic en el inactivo, voltea una variable
que acabas de hacer. También se puede ver que lo hizo
en un tipo de libro flip book de papel. Puedes dar click aquí,
hago click en Borrar. Ahora el defecto no
es nada. ¿De acuerdo? Entonces a partir de aquí, ¿cómo
sabemos qué flip book correr
para Serena y cómo sabemos
qué correr por Luke? Ahora, desde que
lo hiciste en una variable. Y recuerda que estamos
dentro de bajista. Jugador bajo es el padre para el bucle for y para Serena. Entonces estos son los padres. Cada variable que
hagas dentro
del padre también
aparecerá en los hijos. Entonces si hago click en Tsarina primero, y si voy a la clase
por defecto aquí a la derecha, se
puede ver que tengo tanto
el estado
de movimiento el libro flip inactivo
porque en la base del jugador, tenemos tanto el
movimientos variables, estado y el libro flip inactivo. Entonces aquí para Serena, por ejemplo, puedo elegir la animación ociosa
para el libro flip inactivo. Pero si vuelvo a Luke ahora, y abrí el editor completo de
planos para Luke. Si voy a los valores predeterminados de clase, puedo elegir otro flip books
ociosos. este momento no lo hago realmente, no
hemos importado
parece animaciones todavía. Pero puedo seleccionar una animación ociosa
personalizada. Y aquí podría seleccionar el libro de tirón inactivo de
Luke
si lo he hecho. Entonces, en lugar de codificar cosas duras a cabo variables de codificación aquí, por lo general lo hago
en una variable. Y ahora puedes configurar esas animaciones constantemente
dependiendo de si lo tienes, digamos que tienes diez
personajes ahora podemos hacer click en los diez personajes y
configurarlos como un flip
book personalizado aquí para los ociosos, puedes volver atrás
y hacer clic derecho aquí y promocionar esto a una
variable para el salto. Y luego puedes configurar
el libro de salto flip para cada uno de los personajes. Entonces podemos ver si hago clic derecho todos esos,
promueve una variable. Y si hago clic aquí, si acabo
de promover todas ellas a una variable, puedes ver que consigo muchas
variables y puedes
ahorrarte espacio de todas esas variables
mediante el uso de una estructura. Esto es de lo que vamos a
hablar en la próxima lección, vamos a
hablar de estructuras. Por lo que voy a eliminar
los de nuevo aquí. Si solo las
elimino, no quiero hacer
demasiadas variables en estas animaciones. Se llama que se puede
hacer una variable de esos, pero en realidad se puede
utilizar algo llamado estructura que
es más eficiente. Y te mostraré cómo
hacer uno en la siguiente lección.
30. Estructuras: Mega estructura. Ahora vamos a clic derecho y
hacer una nueva carpeta. Voy a hacer una
carpeta llamada structs. Estas son para las estructuras
y haciendo doble clic en eso y en lugar de aquí puedes
hacer clic derecho dentro de los planos. Puedes hacer que éste
se llame estructura. Entonces creando eso, te
mostraré lo que es eso. Empecemos con el
STS, el prefijo. Y para ésta, esta
estructura va a contener todas las variables
para los jugadores. Voy a
llamarlo info de jugador. Entonces toda la información
sobre este jugador. Ahora dentro de la estructura, puedes agregar tantas
variables como quieras. Por ejemplo, el primero, llamémoslo animación ociosa. Sin un espacio.
En realidad, sólo voy a llamarlo así. Voy a hacer click en nueva
variable y voy a hacer una para
la animación de corrida. Y solo trabajemos
con eso por ahora. Entonces aquí está la derecha. Puede cambiar el tipo de
animación. Y para las
animaciones, recuerda, estamos trabajando con 2D, por lo que es flip books de papel. Y si puedo encontrarlo aquí, si acabas de escribir papel, éste libro flip book en papel y
selecciona la referencia del objeto. Lo mismo con este
libro flip book de papel. Ahora, cuando creas
una nueva variable, configurará automáticamente para pavimentar un libro flip
porque esto es lo que seleccionaste anteriormente,
la animación de salto. Agreguemos también la
animación de otoño. De acuerdo, entonces tenemos
estas animaciones ahora. Entonces antes en lugar de hacer clic derecho y promover
todos aquellos a una variable. Y ya ves aquí teníamos
muchas variables aquí abajo. Puedes ahorrarte
espacio si pones todas estas variables
dentro de una estructura. Ahora la estructura que podemos
usar se llama información del jugador. Entonces más adelante podemos usarlo para algo así como el nombre del
jugador. Si tienes una miniatura
para el jugador, podemos poner la imagen aquí. Si tienes algunos efectos de sonido de
salto, también
podemos crear una variable
para los efectos de sonido. Entonces toda la información del jugador está dentro de esta estructura. Ahora para usar una estructura, puedes volver a
la base del jugador. Y dentro de aquí puedes hacer una nueva variable y
puedes llamarla, llamémosla info del jugador. Ahora vamos a cambiar este
tipo a lo
que llames aquí
es t info del jugador. Por lo que es t información del jugador
y se puede ver aquí. Esta es la estructura. Si estás Compile and Save, ahora
puedes arrastrar hacia fuera
esta estructura aquí, haz clic en Obtener información. Y se puede arrastrar
desde esta estructura. Y lo que normalmente, suele hacer
es hacer clic en la estructura de ruptura. Al romper esta estructura, se pueden ver todas
las variables que ha
agregado a la estructura. Y como algo muy, muy cool, ahora que
tienes esta estructura agregada, recuerda cuando añadas variables, ahora déjame borrar este
flip book por ahora, el libro flip inactivo
que hicimos antes aquí arriba, voy a borrarlo. Por lo que ahora tenemos esto solamente. Entonces ahora lo que puedes hacer, cosas
muy chulas es que ahora puedes
enchufarlas al inactivo. Entonces éste era el ídolo aquí, y esta es la animación corrida. Entonces voy a tapar la
carrera aquí, la carrera aquí. Esta es la animación de salto aquí. Y la animación de otoño
es la misma que el salto, pero sólo podemos conectarlo aquí. ¿ De acuerdo? Por lo que ahora puedo ver que tienes
todas estas variables en una estructura y se
ve mucho mejor ahora. Y al igual que lo
que te dije antes, puedes, cuando agregues una variable
a la clase padre, la clase child
también la heredará. Entonces si vas a Serena ahora, y puedes hacer click
en los valores predeterminados de clase, puedes ver esta infraestructura de
jugador. Y si haces click en él, puedes ver todas estas
variables y puedes ponerlas llevar disfraz a cualquier libro flip
que quieras agregar. Entonces para Luke,
también podemos hacer lo mismo
cada vez que agregamos bucles, animaciones, también podemos agregar los
libros flip books de papel de
Luke aquí. Entonces para que funcione,
volvamos a Serena y
puedes hacer click en inactivo aquí
para la animación inactiva. Para toda la animación de ejecución, puede seleccionar ejecutar, el salto, puede seleccionar Java. Y para el otoño, es justo el mismo que
este salto como este. Así Compile y Ahorre,
guarde todo. Vamos a probarlo.
Demos clic en Play. Y ahora cuando corremos, se
puede ver que todas
las animaciones están funcionando y estamos
usando ahora esta ruptura.
31. Finalizar el movimiento de personajes: Entonces como lo final, en realidad
vamos a
finalizar el movimiento para el jugador y seguir adelante. A partir de aquí, volvamos
al jugador, la base del jugador. Y lo que quiero hacer es sólo editar el movimiento del personaje. Por lo que haciendo clic en los movimientos del
personaje, vamos a fijar la escala, escala de
gravedad a uno. Así que ahora mismo cuando salté, creo que mis personajes volando
un poco demasiado alto. Entonces es como si la gravedad
no fuera lo suficientemente alta. Por lo que voy a aumentar la escala de gravedad por aquí en el
componente de movimiento a 1.9. Recuerda en el
espacio pleural, cuando lo cambies, va a aplicar
también para Serena y para Luke también porque son hijos
de la base del jugador. Entonces aquí en la escala de grises, 1.9 y S para la velocidad de movimiento para
Maple Story, lo probé. Estaba jugando el juego
y creo que en algún lugar alrededor de 155 en la velocidad de caminata. Y se puede ver si
hago click en Play, ahora estamos trabajando mucho más despacio. Y es más como Maple Story. Esta es la velocidad que
estarás corriendo con ella. Entonces si lo hago más grande,
puedes verlo aquí. Entonces esto es más
como Maple Story, el salto, pero creo que deberíamos
saltar un poco más alto. Por lo que voy a volver a los movimientos de personajes base de
jugadores. Y aquí abajo en el
salto Z Velocity, voy a enviarlo,
ponerlo en 500 en su lugar. De acuerdo, así que vamos a compilar y ahorrar. Y creo que eso
es todo por el movimiento. Entonces si hago click en Play y veo que este es el movimiento
y puede saltar. Entonces ahora mismo nos
estamos
bloqueando el personaje también. Tenemos
que quitar eso para que puedas ver que está molestando
a nuestro personaje, empujado, nuestro carácter bec. Pero en realidad
volvamos a la base del jugador y haciendo clic en los componentes de la
cápsula. Entonces esto está haciendo la colisión. Y vamos a desplazarse hacia abajo y
se puede ver a éste
llamado colisión. Demos clic en este
preset de colisión para ver qué está pasando, y esto es todo
de la colisión. Por lo que ahora en realidad vamos a hacer click
aquí y dar click en disfraz
porque queremos editar esto. Por lo que ahora podemos ver los
pons. Esto es lo que es. Este es un peón. Los estanques
se están bloqueando entre sí. Y no queremos eso. Queremos que los puntos se
ignoren unos a otros por ahora, simplemente
ignorémonos unos a otros. Vamos a compilar y
veamos si ese trabajo. Así que da clic en Jugar
y correr por ahí. Ya veo que no puedo
bloquearme ahora. Entonces si llevo a este cliente, así que eso está arreglado ahora, ¿de acuerdo? Por lo que los estanques ya no pueden bloquearse
unos a otros. Entonces esto es lo que queremos. Y se puede ver
que todo está funcionando bien. El salto, creo que estoy
saltando lo suficientemente alto. Pero de nuevo, este es tu juego. Si quieres correr más rápido, si quieres, la
cámara para estar más cerca. Recuerda que podrías
editar la cámara si fuiste a Tsarina y
en realidad la agregamos mal. Puedo ver que agregué la
cámara dentro de Tsarina, pero necesitamos sumar en la base del jugador porque
Luke también necesita la cámara. Entonces esta es una solución rápida. Déjame borrar este brazo de resorte. Eliminar la cámara. Déjame ir
a la base del jugador en su lugar. Haga clic en la cápsula, agregue el brazo de resorte. En la cámara, así, solo busca la cámara. Por lo que ahora tenemos el
brazo de resorte y tenemos la cámara. Y de nuevo haga clic en la cámara, suba aquí, cámbiela
a vista ortográfica. Y recuerda,
puedes cambiar lo cerca y lejos que está la cámara
cambiando este valor. Y fue en 130
por justo así. Por lo que ahora tanto Luke como
Tsarina tienen esta cámara. Así que antes de terminar esto, vamos a
pasar por el código simplemente rápido porque quiero
limpiar las cosas para que no sea un verdadero lío. Entonces solo revisando aquí, así es como se ve. Y para limpiar el código, también
puedes hacer doble clic
en estos pines. Al hacer doble clic,
crearás este nodo redireccionado, redireccionar pin. Y puedes hacer doble clic
aquí y hacer que se vea un poco más limpio. Y creo que esto se ve
bien y mira aquí, tal vez solo, solo
colocándolo aquí, así. Otro truco es que puedes seleccionar lo que quieras
aquí y hacer click en Cola. Esto enderezará todas estas notas que
haya seleccionado. Entonces seleccionándolos, Al hacer clic en Q los
enderezará. Entonces tenemos el salto y tenemos la caída aquí uno al lado del otro. Y alejémoslo un
poco más lejos. Y también tenemos
la animación a pie. Creo que esto es, esto es bueno. Ahora lo que podemos hacer,
puedo bajar esto, y puedo bajar
esto también. Nuevamente, puedes
seleccionar todos esos, pincha en la señal para
enderezarlos así. Y también puedes
hacerlo potencialmente con éste. O creo que tal vez así y podemos
mover esto más abajo. Así, esto probablemente
se ve mucho mejor. Y podemos hacer que esto se mueva
más lejos para que
no estén agrupados
uno encima del otro así. Y tal vez puedas mover esto
también encima de aquí. Al igual que también puedes
crear nieves redireccionadas para pasadores de ejecución
si lo deseas. Pero creo que voy a dejar
que sea así en realidad. Voy a ponerlo más cerca. Creo que esto se ve un
poco raro como aquí. De acuerdo, así que ahora hemos
corregido esto. Y otra cosa es que puedes pasar el
cursor sobre todos estos nodos. Puedes hacer click en ver
para crear un comentario. Por lo que haga clic en ver. Se puede llamar a este movimiento de
un jugador. Ella también puede ser más
específica de lo que quieres decir. Entonces Claire movimiento,
sólo voy a llamarlo algo corto
solo para el curso que los videos no se
alarguen demasiado. Movimiento lento FUE en realidad, no
es un juego 3D, así que derecha e izquierda, por ejemplo,
algo así. Y para éste, estas son también la etapa de
movimiento, por lo que podemos
incluirlas en el comentario. Voy a hacer click y arrastrar
el comentario hacia abajo así. Y ahora aquí abajo
tenemos el salto. Voy a hacer click
en ver y decir salto. Y ponlo aquí abajo. De acuerdo, así que ahora está un poco
más organizado. Y también puedes ir a
la función desenvolver. No olvides que
también puedes acudir a las funciones y organizar esas funciones. Entonces éste parece un
poco desordenado por
esas líneas, pero hemos llegado a hacer
mucho al respecto. Entonces realmente no podemos hacer un
más estructuras como esta. Entonces creo que esto se ve bien, pero siempre se puede
tratar de
separarlos un poco más
lejos el uno del otro. Trata de ponerlos como
unos debajo del otro, así. De acuerdo, creo que esto
se ve bien por ahora. Siempre puedes, si
quieres probar, puedes crear notas redireccionadas. Si quieres. Escucha por algunos
doble clic,
intenté, incluso puedo hacer para
redirigir notas si quieres tratar de limpiarlo tanto
como sea posible. Pero creo que voy a dejar que esté aquí por ahora sabemos
lo que está haciendo en este momento. También puedes hacer un
comentario si quieres. Y vamos a compilar y ahorrar. Y ahora todo está funcionando. Y haciendo clic en jugar aquí. Y se está oscureciendo y sé por qué olvidé
rotar la cámara. Así que volviendo a la base de jugadores aquí primero en la primavera
vuelvo a retirarme. Hacen pruebas de colisión. Y en las ventanas gráficas, hagamos clic en el brazo de resorte. Demos clic en E para rotar. Y vamos a rotar este
90 menos 90 grados, por lo que está delante de, para que
podamos ver al personaje. Y ahora vamos a hacer click en Play. Y ahora todo está
funcionando correctamente. Podemos saltar, el
movimiento está funcionando. Y de nuevo, hay que
revisarlo también en el cliente. Entonces si hago esto más pequeño, hay
que
revisarlo con el cliente. Y el cliente puede
saltar y correr
también para que puedas
jugar juntos ahora. Y ahora todo está funcionando y pasemos
a la siguiente lección.
32. Crea el segundo personaje: Ahora estamos listos para crear a
Luke como el personaje. Ahora tengo lo
importante para ti dentro de los materiales de tu
curso. De nuevo, si vas a
tus materiales del curso, personajes Luke y
dentro de Luke, quiero que importes estos aquí. Así que vamos a ir a los
personajes activos aquí. Hagamos una nueva carpeta
y la llamemos luke. Ahora vamos a importar lo que
esté dentro de esta carpeta. Y probablemente tengas
más animaciones aquí. Voy a sumar animaciones a medida que voy
junto con este curso. Así que arrástrelos a tu navegador de contenidos y los
has importado. Como ejercicio, lo que
quiero que hagan,
intente hacer usted mismo todo este proceso porque este proceso es como lo que hemos estado haciendo previamente en las lecciones
anteriores. Así que intenta, intenta aplicar configuraciones 2D en
papel, intenta extraer los sprites, intentó hacer flip
books tú mismo. Intenta importarlos al personaje del blueprint de
Luke, personaje de papel que creamos. Y así trata de hacer esto todo tú mismo y ver si tienes éxito. Y si
aún te cuesta mucho, vayamos juntos aquí
y sigamos, pero trata de hacerlo tú mismo. Es muy buena
práctica probar eso. No le hace daño a nadie. Puedes volver aquí
y lo haremos juntos. Entonces, si no estás
seguro de cómo
hacerlo, todavía es, podemos
intentar hacerlo juntos. Por lo que de nuevo, voy a
hacer click en todos ellos. Haga clic con el botón derecho en la producción,
aplique papel a la configuración, y luego pasar por cada una. Entonces el ocioso, voy
a extraer los sprites. Voy a ir un
poco más rápido porque hemos estado haciendo esto
previamente ahora vamos a Tsarina. Por lo que grilla subiendo el
180 por 180 para extraer los
sprites así. Y de nuevo, voy
a cambiarles el nombre. Muy bien, así que los he
extraído
todos en sprites aquí. Y también he
creado flip books. Así que recuerda que podrías seleccionar, ejecutar por ejemplo, y hacer clic derecho
y crear flip book. Por lo que he creado estos
tres flip books y ahora tengo que cambiar los
fotogramas por segundo. Y para la carrera o
para el salto más bien, solo
hagamos un
fotograma por segundo. Y para el inactivo, fueron dos cuadros por segundo. Y para la carrera,
creo que son seis. Sólo estoy revisando
con Tsarina aquí. Sí, seis fotogramas por segundo. Entonces estamos haciendo lo mismo. Seis cuadros por segundo como este. Ahora, hagamos aquí una
nueva carpeta. Entonces haz clic derecho, haz una nueva
carpeta llamada Textures. Y voy a llevar
todos estos aquí, tanto este brights como
las texturas dentro de aquí, sólo
tenemos los flip books. Lo siguiente que podemos hacer es ir al jugador de planos, Luke. Ahora vamos a
añadir el flip book. Tan abierto editor de planos completo. Y vamos a las ventanas gráficas. Y dentro de aquí, dando click en los sprites y luego
agregando mirada aquí. Entonces la animación ociosa por aquí. Tenemos de nuevo que ajustar esta cápsula para que
no choque con nuestros, todos nuestros azulejos. Sólo voy a referirme de nuevo a Serena para ver lo que era ella. O tal vez
algo mejor que podamos hacer es hacerlo en la base de jugadores. Por lo que aplica para
todos los jugadores Si tienes más jugadores. Por lo que 33 por 16, voy a volver al default y simplemente recordar
los números 3316. Entonces voy a hacer eso
dentro de la base de jugadores, por lo que no tenemos que
hacer esto todo el tiempo. A lo mejor añadimos muchos más
personajes más adelante. Por lo que haciendo clic en la
cápsula, escribiendo 33. Y tenemos que cambiar este
número aquí abajo en realidad primero más te
va a permitir. Por lo que 16 por 33. Y cuando compilemos estos planos infantiles
estarán todos en ese tamaño. Muy bien, por lo que se debe hacer. Y recuerda en la base del jugador dentro de nuestra función unwrap, agregamos esta estructura. Así que recuerda que hay que
tener que contar una mirada qué animaciones tiene
el personaje. Y recuerda, cuando hagas, cuando hagas variables dentro de una clase de blueprint padre, aparecerán en
el defecto secundario
aquí en los valores predeterminados de clase. Por lo que aquí hay que
seleccionar al igual que Serena donde seleccionamos
esas animaciones. Tienes que hacer eso
también, o Luke. Por lo que ahora se puede ver
lo genial que es esto. Cada personaje podemos
tener nuestra costumbre, ídolo, nuestra carrera personalizada, nuestro salto personalizado, y nuestra caída personalizada. Más adelante. Hagamos esto. Y para el salto tenemos un
salto y para la caída también
usamos lo mismo aquí. Ok. Así que no creo que nos
falte nada. Tratemos de jugar y
ver qué pasa. Y vayamos primero a los ajustes
del Mundo. Recuerda que hemos seleccionado Serena como la clase
predeterminada en este momento porque aún no tenemos una
pantalla de selección de personajes. Así que vamos a hacer clic
aquí y cambiarlo para mirar en su lugar para
que pueda probarlo. Y vamos a hacer click en Play. Ahora miran los encuestados y se puede ver que Luke también está funcionando. Todo está funcionando muy bien. Por lo que tenemos ambos mirada ahora y
tenemos a Tsarina en el juego.
33. Agregar el efecto de sonido de salto: Muy bien, entonces para el efecto
salto, de nuevo, en el curso materiales he
importado dentro de audio. He importado
éste llamado SF6 saltos. Entonces tenemos el efecto salto
y hagamos una nueva carpeta. Voy a hacer clic en
esta carpeta de contenido. Y aquí afuera,
hagamos uno nuevo llamado audio. Y dentro de aquí, volvamos al audio y vamos a arrastrarlo a esta carpeta. Y podemos tocarlo y
ver si es demasiado alto. Creo que el volumen es agradable. Así que aquí cuando importes un sonido, en realidad
vamos
a tratar de codificar esta cosa y te
mostraré cómo
hacer eso en multijugador. Entonces en última instancia, lo que quieres
hacer aquí en el plano, volvamos al
jugador, la base del jugador. Ahora, si volvemos
a la Gráfica de Eventos, tal vez estés
tentado a hacer esto. Entonces aquí por el salto. Ahora, lo voy a
hacer de la manera equivocada para que puedas aprender de esto. Entonces aquí en el salto,
en un solo jugador, estoy comparando solo jugador y multijugador para que puedas
ver las buenas prácticas. Entonces en un solo jugador,
lo que quieres que haga es como
aquí en el salto. Cuando presento salto, obviamente, vamos a hacer este efecto de
sonido aquí, pero esto está mal
en el multijugador. Y te mostraré por qué aquí. Para hacer un sonido,
podemos decir tocar sonido. Y puedes reproducir
sonido en un lugar o reproducir sonido a d. Así que si quieres que la
gente escuche el sonido, entonces cuál es la diferencia si tocas un sonido en un lugar. Entonces si eres jugador, está parado aquí
a este lado y salta, el sonido se escuchará
desde este lado aquí. Entonces si un jugador está parado aquí y aquí está tu salto aquí, escucharán el sonido que
viene de esta zona aquí. Pero si tocas sonido 2D, por lo que si eliges delay sonido 2D, no
se colocará en
una determinada ubicación, pero se reproducirá
como un efecto 2D. Por lo general usamos esto
como elementos de la interfaz de usuario. Y si quieres que se
escuche un sonido en un
determinado lugar, usamos el
sonido de reproducción en el lugar. Todo depende de si quieres que la
gente te escuche saltando. Y digamos que
queremos hacer eso. Por lo que en última instancia quieres que
reproduzca sonido en un lugar. Quieres seleccionar el sonido. Y en lugar de seleccionar
la onda de sonido, en realidad
regresemos
aquí al Audio. Vamos a hacer clic con el botón derecho. Y vamos a crear una cola. Y llamémoslo como C
para sonido taco y salto. Puedes hacer doble clic en
él ahora para abrirlo. Y esta es una túnica de sonido, por lo que puedes hacer click
en Reproducir aquí. Y puede escuchar el sonido. Algo muy cool es
que si quieres variación aquí, puedes arrastrarte de esto. Puedes ver estas son las notas
sonoras que puedes usar. Puedes arrastrar aquí
y decir modulador. También se puede ver
el modulador aquí. Así que al hacer clic en el modulador
y lo que hace es que aquí cambie el sonido
cada vez que se toca. Por lo que elegimos el terreno de juego, mínimo y máximo aquí. Entonces, por ejemplo, 0.9 a 1.1. Y cada vez que hagas
clic en Play now, va a cambiar
el tono del sonido para
que suene como si fuera un sonido
diferente cada vez. Para que puedas ver que es un poco de una variación que
puedes hacer a veces. Pero quiero que el sonido
sea el mismo, así que sólo voy a
eliminarlo y hacer esto. Entonces creo que esto está bien por ahora. Y vamos a cerrar este
sonido cue abajo. Así que aquí se juega en el lugar. Vamos a seleccionar nuestra taca de sonido. ¿ Y cuál es la ubicación? Y ahí es justo donde está
el personaje. Así que vamos a hacer clic derecho y digamos obtener ubicación de
actor así
y conectado aquí. Entonces estamos consiguiendo esta ubicación de
actriz donde quiera que estés y tú estás
tocando el sonido ahí. Vale, entonces estás
intentando hacer esto, y luego haces clic en jugar y
saltas aquí. Funciona. Y esta es la forma
equivocada de hacerlo. Porque recuerda que estás
en multijugador en este momento. Entonces cada vez que hagas esto, los demás no lo
van a escuchar. Entonces recuerda que tenemos este servidor
y las relaciones con los clientes. Por lo que tienes esto como el servidor y lo tienes
como cliente. Y quieres
tocar el sonido y luego desplegarlo a
todos los clientes. Por lo que
el servidor coloca el sonido y
lo arroja al cliente. Así que volvamos aquí y otra vez, igual que lo que te he
dicho antes, tenemos que revisar todo con el servidor para que los
clientes no engañen. El servidor es el verdadero juego. El servidor tiene la autoridad para hacer cualquier cosa
dentro de este juego. Así que cada código que hagas
necesita ser revisado por el servidor y luego
replicarlo a los clientes. Entonces veamos un ejemplo de esto. Volvamos con el jugador. Apenas eliminemos éste. Entonces tal vez
también estás tentado a decir, bien, así que antes de hacer
este movimiento aquí, y pasamos por los estados
del movimiento, entonces este estado de movimiento
pasó por el servidor. Y el servidor estableció
esta variable. Y se va a ejecutar una función
on-ramp porque recuerda que esta variable fue
replicada como un representante notifique. Entonces con el servidor se
va a notificar a todos
los clientes el
cambio de esta variable. Dentro de esta función desenvolver. Todo esto se va a
replicar a todos los clientes. Así que tal vez estás
intentando decir, está bien, todo esto se está
replicando a los clientes. Para que pueda agregar aquí el
sonido de mi lugar y se
va a replicar
a todos los clientes. Entonces tenemos un salto aquí. Tenemos el libro flip jump. Y tal vez se
intenta agregar el sonido de reproducción en la ubicación de
aquí en su lugar. Se puede hacer
eso y va a funcionar. Todos los clientes
te escucharán saltar. Entonces si eres el servidor, si eres el
cliente, está bien. Todos te van a
escuchar saltar. Esto también está funcionando correctamente. Pero hay un pequeño
error y te voy a enseñar que esto es lo
último en multijugador, y tenemos algo
llamado multicast. Entonces si voy al evento
y te voy a decir la diferencia entre una función on-ramp
y un multicast. Entonces sabemos que tenemos
algo llamado multicast. Entonces si hace clic en
el evento del servidor, lo
configuramos para que se ejecute en el servidor. Pero también tienes algo
llamado multicast. Así que intentemos crear primero
el código y puedo explicarte más
fácilmente después de eso. Así que vamos a mover esta lógica de
salto aquí abajo. Y aquí voy a
hacer un nuevo evento personalizado. Agreguemos este
evento personalizado y
llamémoslo MC para multicast. Y
sólo voy a llamarlo salto porque queremos hacer
el efecto de sonido del salto. ¿ De acuerdo? Ahora puede hacer clic en esta replicar y
seleccionar multicast, y luego seleccionar confiable. Y aquí, vamos a añadir éste llamado reproducir un sonido en el lugar. Vamos ahora por este sonido en lugar de codificarlo duro así. Recuerda que agregamos una estructura. Entonces básicamente la estructura, contiene toda la información
del jugador, por lo que incluso podemos agregar
sonidos aquí. Entonces en esta variable aquí
puedo hacer click en Agregar variable y llamarlo salto Como efectos
para el efecto de sonido de salto. Y vamos a añadir una túnica de sonido, porque en última instancia, esta fue
una túnica sonora que creamos. Por lo que es una túnica de sonido. Busquemos la túnica de sonido. Y está aquí, referencia objeto. De acuerdo, entonces ahora tenemos
un efecto de sonido de salto y podemos usar eso
desde nuestra estructura. Así que de nuevo, puedes volver a, volvamos al
jugador. Por Luke. Desde que agregamos esto, cada personaje puede tener su propio efecto de sonido personalizado, pero realmente no
lo tenemos en Maple Story. Entonces vamos a añadir este efecto de
salto, o Luke. Para Serena, voy a añadir aquí el mismo efecto de salto
o efecto de sonido. De acuerdo, entonces tenemos los
agregados ahora en la estructura. Y volvamos
a la base de jugadores. Y ahora quiero
explicarles qué es
un multicast
antes de continuar. Por lo que no estaba mal
hacer esto aquí. Entonces el servidor establece esta
variable aquí y regresas a la función de desenvolver y luego se agrega el efecto de
sonido aquí. Esto funcionará como los
clientes mayores te oirán saltar. El servidor te escuchará saltar. Por lo que esto funcionará. No obstante, la
diferencia está entre una función desenrollada
aquí y el multicast. El multicast aquí,
hace lo mismo. Entonces el multicast,
se puede imaginar como le cuesta toda la información de
vuelta al cliente. Entonces la información va
al servidor y el
servidor establece una variable. Y luego puedes ejecutar
un multicast para costar esta información de nuevo
a todos los clientes para
que los clientes sepan
lo que está sucediendo. Por lo que aquí se puede
ejecutar el multicast. Así que vamos a hacer clic aquí y
añadir aquí un salto DMC. Y lo más
importante a saber aquí es eventos
multicast solo
se pueden ejecutar a través del servidor. No se puede ejecutar esto aquí arriba, por ejemplo, esto
no va a funcionar. Recuerda, todavía estamos
en declive a saberlo. Nuevamente, si quieres
saber si
actualmente estás en el cliente
o en el servidor, puedes imprimir una cadena simplemente. Entonces esto es muy básico
imprimir una cuerda. Y whoops, arrastro
esto por error. Y aquí, Demos click en Play. Ahora, ya se puede ver que tanto el servidor como el
cliente están diciendo bajo. Entonces sé que no
sólo estoy en el servidor, sino que también estoy en el cliente, así que estoy tanto en el servidor como en
el cliente en este evento. Pero si imprimo la
cadena aquí abajo, y como estamos ejecutando
este evento en el servidor, es sólo el servidor el
que va a saludar. Así que imprimo cadena es muy útil para saber dónde realmente
se encuentra actualmente. Y un multicast sólo
se puede ejecutar a través del servidor. No se puede ejecutar un
Multicast en el cliente. Esto no va a funcionar. Y esto también te está
diciendo aquí arriba. Servidor. Entonces esto sólo
va a funcionar si
es el servidor desde el que lo
estás ejecutando. Por lo que ahora podemos multicast el efecto de sonido de salto a todos los clientes para que
puedan oír que estoy saltando. Entonces, ¿cuál es la diferencia entre esta y la función unwrap? Porque están haciendo
los dos lo mismo. Este también está
funcionando como cuando se agrega el efecto de sonido de salto
aquí también va a funcionar. Entonces, ¿cuál es en última instancia
la diferencia entre éste y éste? La diferencia es que si
estás parado lejos, digamos que tienes un
gran mapa de mundo abierto. Si estás parado lejos y estás tocando un multicast, esta es la forma correcta de
hacerlo aquí para el sonido. Porque cuando el,
cuando el jugador que está pie lejos
se acerca a ti, ya no escucharán
el sonido porque tal vez has
saltado como hace diez minutos. Entonces, pero si lo haces aquí
en la función de desenvolver y el jugador está de pie
lejos cuando saltas, está bien. El jugador no puede oírlo. Pero si el jugador
se acerca a ti, como diez minutos después, el reproductor escuchará el efecto de sonido aunque
saltó hace diez minutos. función Unwrap
actualizará el reproductor. A pesar de
que hiciste esa cosa como hace
una hora o dos horas atrás
o por mucho tiempo que sea atrás. Y digamos que un jugador
aún no se ha conectado a tu servidor y tú saltas, el jugador se conecta
diez minutos después. Entonces ese jugador que se
conecta puede escucharte saltando. A pesar de que no estás saltando, como si estuvieras quieto, pero saltó a hace
diez minutos, ese efecto de sonido de salto
será escuchado por el reproductor de
conexión. Y esto no es correcto porque saltó
a hace diez minutos. No has saltado ahora mismo. Esto sucede si
lo agregas al desenvuelto. Entonces lo que quiero que
tomen de esto es la función unwrap se
usa para cambios visuales. que puedas ver aquí el flip
book en el que estoy, por ejemplo, si estoy corriendo o IM, digamos bailando,
saltando, lo que sea. Todos los efectos visuales
se hacen en el desenvolver. Entonces digamos que tengo
un semáforo y está cambiando de rojo a verde o rojo a amarillo a
verde, ese semáforo. Quieres añadir. El efecto visual cambia
dentro de lo desenvuelto. Porque si un jugador se conecta
cinco minutos después, y digamos que eres una luz, tarda cinco minutos en
cambiar de color. Digamos que va
de rojo a amarillo. Ese jugador que
se conecta al servidor puede ver que tu
luz ahora es amarilla. Pero si agregas
cambios visuales aquí, el multicast, ese color amarillo
seguirá siendo rojo para el reproductor de
conexión. Porque el multicast solo se
actualiza para los jugadores conectados. Solo se actualiza para los jugadores
que están cerca de ti. Entonces, si un jugador está
parado lejos y la luz cambia
de rojo a amarillo, ese jugador que está de pie
lejos se acerca ahora a ti, y ese jugador
seguirá viendo que la luz es lee porque estás ejecutando
esto a través de un multicast. Esto solo se actualiza
para jugadores cercanos a ti y para jugadores
conectados al servidor. Entonces lo que solemos usar funciones
inmaduras para nuestros cambios visuales porque esto debe actualizarse visualmente
para los jugadores que se conectan. Entonces digamos que me
conecto diez minutos después y diez meses después, puedo ver que estás en el, digamos aquí en
el estado corriendo, o tal vez estás sosteniendo
unas armas diferentes. Entonces si tenemos más
flip books aquí, pero no quiero
escucharte o no
quiero escuchar el efecto de salto que hiciste hace diez minutos, no tiene ningún sentido. Entonces cualquier efecto de sonido,
cualquier efecto visual. Entonces, por ejemplo, un efecto de
partícula, un efecto de fuego y así sucesivamente. Quiero que todos estos
estén en el multicast. Esta es la
forma correcta de hacerlo. Todos los cambios visuales
se realizan en el desenvolver. Entonces aquí estamos
a través del servidor, estamos ejecutando el multicast. Y de nuevo, el multicast
sólo puede ejecutarse a través del servidor. Y en lugar de poner
el salto por aquí, déjame conectarlo aquí. Una muy buena práctica
en multijugador es ejecutar estas variables todo el camino de regreso a los eventos iniciales para
que funcione correctamente. Entonces arrastrando este sonido
y agregándolo aquí, apuntala aquí, por lo que crea una variable automáticamente para mí. Entonces si hago clic en este multicast, se
puede ver que crea
esta variable. Y sólo voy a
llamarlo aquí en lugar de efectos de salto de sonido S. Y voy a arrastrar
esta ubicación también, ponerla aquí y llamarla
tal vez ubicación del jugador. Por lo que ahora puedo hacer el efecto
sonoro aquí. Y recuerda por
el efecto sonoro, teníamos información de nuestro reproductor. Así que vamos a arrastrar nuestra estructura. Y a partir de aquí, digamos romper la pluma de la estructura para que
podamos ver las variables. Voy a mover
esto un poco para que tengamos más espacio. ¿ De acuerdo? Entonces este de aquí, voy a hacer click sobre esta
flecha para ver mis variables. Puedes arrastrar desde este efecto de sonido de
salto y
automáticamente va a
reproducir lo que tengas. Inserta aquí en el
salto como efectos para Serena y
cuatro lucen también. Así que recuerda hacer esos. Y volviendo aquí. Ahora, para aquellos que no
estás usando, puedes hacer click aquí en
Ocultar pines desconectados, y los ocultará para ti. Eso es un poco más
limpio para trabajar. ¿ Y cuál es la ubicación? De nuevo, consigue jugador o no consigue
jugador, consigue ubicación actor. Y así. Por lo que ahora va
a funcionar correctamente. Entonces ahora que lo hemos hecho, intentemos compilar
y guardar todo. Y hagamos click en Play
y veamos si funciona. De acuerdo, así que para completar esto, ahora, en lugar de
hacerlo aquí arriba, esto estará jugando constantemente porque en
este momento esto se establece a través
del estado de movimiento, que coloca todo el tiempo aquí. Entonces en lugar de hacer eso,
eso te hará daño a los oídos. Así que tomemos esto y hagamos
uno nuevo llamado servidor. Así que el servidor de paletas personalizadas salta. Y esto va a correr
a través del servidor así. Y conectemos juntos. Entonces el servidor va a
ejecutar estos eventos multicast. Y recuerda que teníamos
esta estructura. Saquémoslo y
alejémonos de esto y
digamos estructura de ruptura. Para que podamos ver los alfileres. Aquí. Puedes hacer click en
esta pequeña flecha. Voy a mover esto un poco al revés para que podamos
ver qué está pasando. Y ahora puedo arrastrar este salto como efectos
a esta variable. Y recuerda, hay que, en Tsarina en los valores predeterminados de
clase, hay
que agregar el
efecto sonoro aquí para que funcione. Así como para Luke, la clase por defecto el efecto de
sonido aquí. Simplemente asegúrate de que sean agregados. Por lo que este también funciona. Para los pines que ya
no estás usando, puedes hacer click en el éste y hacer clic en Ocultar pines
desconectados. Eso será mucho más limpio. Y la ubicación del jugador
vuelve a hacer clic y arrastrar aquí y decir
consigue ubicación de actor. Entonces así. Por lo que ahora tienes
este salto, salto evento aquí. Ahora realmente no estás
ejecutando este evento en ninguna parte. Así que recuerda que no lo
haces, realmente no tienes
frío este evento. Entonces phi y en realidad
antes de continuar, vamos a hacer click sobre esto. Replica fiable
antes de que me olvide aquí, y sólo para asegurarme de que
los otros se dañen. Entonces si hago clic en Jugar ahora, se
puede ver que
realmente no está haciendo un sonido. Y esto se debe a que
nunca lo hemos definido. Nunca hemos llamado a esta
función ni a este evento aquí. Entonces para llamar a este evento, llamémoslo
aquí abajo en el salto. Por lo que ahora podemos hacer eso. Entonces saltan servidor. Entonces, ¿ahora qué saltamos? Va a
pasar por el servidor y podemos llevar esto aquí solo para que
esté más organizado. Grupos. Voy a arrastrar
eso hacia abajo así. De acuerdo, entonces ahora lo que va a pasar es que voy
a hacer clic en salto. El efecto de sonido de salto va
a pasar por el servidor. Y entonces eso
va a pasar. Y en realidad me gustaría llevar mis variables
hasta aquí. Por lo que voy a hacer clic en Control X para cortarlas y
pegarlas por aquí. Y déjame simplemente
correr esto también, así. Me gusta ejecutarlas todo el camino regreso al evento fuente aquí. Ahora, aquí podemos
seleccionar nuestras acciones. Entonces como, conectemos esto de
nuevo aquí, así. Entonces ahora esto va a
pasar por el servidor. El servidor va a revisar, ¿
se le permite hacer esto? Y si eso es correcto, se va a correr por el multicast donde
cuesta la información, el efecto sonoro a
todos los clientes. Y luego recuerda, el multicast es para todos los clientes que están cerca de ti ya están
conectados al servidor. Para los jugadores que no
están cerca de ti, no
tendrán esto jugado más adelante cuando se
acerquen a ti. Y para los jugadores desconectados, cuando se conecten al servidor, no
escucharán esto si lo
has hecho hace cinco minutos. Entonces esto tiene sentido. Y en última instancia los jugadores
que se acercan a ti, o los jugadores que se conectan
diez minutos después. Sólo verán
los cambios aquí. Y queremos que vean eso. Queremos que vean nuestro libro
actualizado para voltear. Eso está bien. Pero no queremos que escuchen un sonido que se toca hace
diez minutos. Entonces esto es algo que corremos a través de un multicast en su lugar. Así que vamos a hacer clic en compilar y simplemente asegurarnos de que
todo esté correcto. Tratemos de hacer click en Play
y ver qué pasa. Y se puede ver que el
sonido está tocando muy bien. Muy bien, salgamos
de este juego aquí. Hagámoslo un
poco más organizado. Entonces para este salto, voy a incluir todos estos
nodos aquí juntos. Porque ahora todo
esto está saltando. Y para este de aquí, hagamos esto
más pequeño así. Compilemos y guardemos todo y sigamos
adelante con el curso.
34. Interfaz de Blueprint: Entonces antes de pasar
a la siguiente sección, quiero hablar de
Blueprint Interfaces. Las Interfaces de Blueprint se utilizan
para organizar tu proyecto. Y también son más
fáciles de trabajar cuando se habla de
comunicación Blueprint. ¿ Y a qué me refiero con la comunicación
de Blueprint? Lo que quiero decir es a veces aquí en la
base de jugadores, por ejemplo, si volvemos aquí, a veces dentro de
la base de jugadores, hay
que usar algo
de los modos de juego. Así que en este momento no hemos hecho
realmente nada
dentro de aquí. Y si voy al
modo de juego y lo abrí, en algún momento estamos codificando
algo dentro de aquí. Entonces en algún momento de
la base de jugadores, necesitamos alguna información que se almacene dentro de nuestro modo de juego. esa información podemos acceder por algo llamado Comunicación
Blueprint. Por lo que este actor de planos se está comunicando con
este actor de planos. Por lo que estos dos Planos
se estarán comunicando juntos. Y aquí es donde entran
las Interfaces de Blueprint. Pero ahora mismo, no quiero
hablar demasiado comunicación
Blueprint porque aún no la
hemos usado. Pero estaremos
clasificando nuestros eventos. Entonces aquí en la base del jugador, lo que hicimos antes
es este conjunto de movimientos estado. En lugar de hacer
eventos personalizados como este, vamos a seguir adelante y una Interfaz de
Blueprint. Así que vamos a hacer clic
aquí y vamos a los planos y crear
una Interfaz de Blueprint. En realidad necesito
hacer una carpeta para, así que hagamos una carpeta
llamada interfaces. Y dentro de aquí, déjame hacer clic derecho en planos
y Blueprint Interface. Por lo general empiezo con
int o interfaz. Y en este momento queremos hacer
uno para la base del jugador. Por lo que normalmente los llamo el
nombre del plano. Quiero usarlos para. Quiero usarlo para
la base del jugador. Voy a abrir eso ahora. Y se puede ver que es básicamente
una biblioteca de funciones. Así que dentro de aquí en el gráfico, realmente no se
puede hacer nada. No puedes arrastrar esto. Y puedes hacer cualquier cosa. Puedes ver que
tienes tus funciones aquí para que puedas agregar
una nueva función. Y puedes ver los detalles sobre esta función aquí abajo. Así que acaba de empezar, vamos a crear este
llamado estado de movimientos de conjunto. Entonces en lugar de crearlo
como un evento personalizado aquí, vamos a la interfaz
y hagámoslo aquí establece estados de movimiento como este, compilar y guardar todo. Ahora para agregar una Interfaz de
Blueprint, hay
que ir a
ese blueprint, por lo que vamos a usarlo y la base de jugadores yendo
a la Configuración de Clase. Y aquí se pueden ver interfaces
implementadas. Busquemos así, y podemos elegir
la interfaz aquí. Ahora vamos a compilar y ahorrar. Y ahora
te está dando un error. Y esto es porque
acabas de hacer una interfaz. Lo puedes ver aquí, el que hiciste establecer movimientos de estado, y ahora es porque
tienes dos de ellos, así que te está dando un error. Vamos a eliminar éste. Pero recuerda aquí, si esto
no te aparece, recuerda volver a la interfaz y
haz click en compilar. Muy, muy importante que siempre compile sus planos. Así que vamos a pasar a
la base de jugadores. Ahora, eliminemos este
movimiento conjunto Estados y compilar. Y ahora
nos está dando muchos más errores. Y en realidad son estos porque tenemos que reemplazarlos. Pero no nos preocupemos por
estas flechas por ahora. Ahora, esta interfaz, hemos
hecho algún estado de movimiento. Podemos llamar a esto haciendo
clic derecho y diciendo establece movimiento Estados. Y ahora podemos ver que tenemos este evento se establece
movimientos estado. Entonces si haces clic en él y
este ícono está en Pier, este ícono significa que es
de una Interfaz de Blueprint. Porque recuerda
que lo hicimos dentro de aquí establecer movimientos estado. Entonces cada vez que añadas la interfaz dentro
de tu blueprint, aparecerá aquí y
podrás llamarla como, como evento. Y también se puede ver aquí, realmente no
podemos arrastrarlo hacia fuera. Para que eso no funcione. Entonces tenemos que hacer clic derecho
y buscar el nombre. Lo bueno de las interfaces
es que si haces una nueva, llamémoslo al azar. Solo quería mostrarte
cuando es así. Y vuelves al
plano o a la base de jugadores, puedes ver este evento
aleatorio aquí. Si hago clic derecho y escribo
al azar y encontrar los eventos, y puedes ver aquí,
evento aleatorio aquí. Pero si yo, si pongo
una salida aquí, así que si hago clic en aleatorio
y agrego aquí una variable, así que hago clic en este botón más y vamos a añadir aquí una variable
aleatoria. Si compilo ahora y guardo, y vuelvo a mi base de jugadores, ya
puedes ver que ya
no es amarillo. Entonces si i, si agregas una
salida a un evento aquí, esto en una función. Por lo que ahora en realidad podemos
hacer doble clic este año. Y se puede ver que es
una función en su lugar, al
igual que cuando creaste funciones aquí arriba no
es saltar. Por ejemplo,
creamos eso antes. También puede crear funciones dentro de interfaces
y utilizarlas. Entonces cuando añadas una salida, dos funciones dentro de aquí, se
convertirán en funciones. Y si no agregas una salida, se
convertirán en eventos. Así que muy, muy bueno
recordar eso. Los eventos son amarillos, las
funciones son de este color, así que eliminemos ese aleatorio. Realmente no lo necesitamos por ahora. Vamos a compilar y ahorrar. Y volvamos aquí y conectemos este estado de movimiento establecido. Ahora teníamos aquí el
movimiento se quedó. Y al igual que antes para
los eventos del cliente, no
podemos hacer clic y arrastrar y agregar la variable automáticamente. Para que puedas ver aquí,
si hago clic y arrastro, no
puedo agregarlo automáticamente, así que tengo que hacerlo yo mismo. Entonces Blueprint Interfaces,
tardan un poco más de tiempo en configurarse, pero hay más optimizados. Tu juego correrá mucho más rápido. Entonces volvamos a la Interfaz de
Blueprint. Haga click en éste y
agreguemos los insumos. Y se llamaba estado de movimientos
E. Entonces esa fue nuestra enumeración. Entonces vamos a hacer clic aquí, y llamémoslo movimiento
Estados así. Y ahora se puede ver que
no me deja hacer eso. Entonces tengo que compilar
y déjame intentarlo de nuevo. A veces,
brota así. Probablemente tenga que
cerrar el proyecto
y abrirlo de nuevo. Muy bien, acabo de cerrar
y abrir el proyecto. Así que intentemos de nuevo,
pinchando aquí, etapa de movimiento. No me deja
seguir haciéndolo aquí. Creo que es porque en la base de
jugadores ya tenemos. Volvamos a una base de jugadores. Vamos a averiguarlo. Creo que es porque ya
tenemos este llamado estado
del movimiento. Permítanme borrar todos
aquellos así. A lo mejor puedes
hacerte una foto para que puedas recordar
lo que estaba diciendo. Pero ahora vamos a
compilar aquí, guardar, volver a la interfaz, y ahora intentemos
cambiarlo Estados Movimiento. Y ahora me llevó, probablemente
sea por
las otras funciones que hay. Por lo que ahora que lo tenemos, se
puede ver agregó eso
a nuestra interfaz de evento. Y de nuevo, al igual que
antes, podemos conectarlo. Y ahora podemos llamarlo aquí arriba. Entonces tengo que recordar
lo que había aquí. Estaba inactivo cuando
el movimiento era 0. Por lo que al ejecutar los
movimientos de evento de nombre se declaran aquí, así establece el movimiento Estados. Y puedes ver aquí, puedes llamar a esta función
diciendo int player base. Entonces llamándolo desde
la interfaz, puedo hacerlo aquí arriba. Pero descubrí cuando estaba
trabajando que es mucho mejor seleccionar éste
bajo int base de jugador. Cuando lo seleccionas
a través del interior en lugar de la función de carbón, ésta se actualiza automáticamente. Siempre que lo actualices
aquí en la interfaz, te va a dar un error si seleccionas el otro, solo uno se actualiza automáticamente. Por lo que siempre selecciono éste. Entonces el ídolo aquí,
sólo puedo hacer clic y copiar pegar aquí y bolsas conectadas. Por lo que era derechos de carrera
y luego correr a la izquierda. Y aquí arriba era salto. Entonces cuando no era plus
era basura y era caída. Así que así. Por lo que ahora hemos implementado la Interfaz de Blueprint y
tenemos la función aquí. Y es mucho más limpio
y puedes tener todas tus funciones para
la base del jugador. A lo mejor ya lo adivinaste. Posteriormente vamos a crear más
Interfaces Blueprint, una para el modo de juego, una para el controlador de jugador, y así sucesivamente, cada vez que
matamos cosas ahí dentro. De acuerdo, así que ahora
ya no puedo ver eventos personalizados
que hicimos aquí, así que todo está bien
y eso fue todo por ahora. Así que pasemos a
la siguiente lección.
35. Introducción al plan de trabajo: Ahora es el momento de hablar sobre el sistema de desove
y empezar, hablemos de los blueprints de
widgets y Widget Blueprint es
donde se crea la interfaz de usuario. Entonces con lo que queremos empezar, hagamos una nueva carpeta
aquí en el contenido. Voy a
hacer clic derecho hacer una nueva carpeta y llamémosla UI
para interfaz de usuario. Dentro de aquí,
vamos a hacer clic derecho. Y aquí abajo en
la interfaz de usuario, puedes crear un
Widget Blueprint. Entonces creando ese y seleccionando Widget
Blueprint aquí arriba. Redacción WB para Widget Blueprint. Y lo primero que
vamos a crear es la selección de
personajes. Así Selección de personajes. De acuerdo, Así que ya puedes
hacer doble clic en él. Y para empezar,
quiero hablar la interfaz o visión general
de en qué consiste esto. En lugar de aquí en el medio se
puede ver el gráfico. Y de nuevo, puedes
hacer clic con el botón derecho y
desplazarte para
moverte en el gráfico. Aquí es donde diseñas la interfaz de usuario. Y la segunda parte de esto
consiste en es el gráfico. Por lo que tiene el diseñador
diseñará la interfaz de usuario. Y luego tienes
el gráfico donde
agregas funcionalidad a la interfaz de usuario. Para que puedan ver, esto nos
resulta familiar. Estos, aquí es donde codificamos. Aquí. Podemos ver nuestras variables
y funciones y así sucesivamente. También puedes ver los
diferentes detalles sobre, por
ejemplo, una
variable en la que hacemos click. Esto nos resulta muy familiar ahora. Y en el diseñador, lo que tienes aquí es el gráfico. Tienes los elementos que
puedes usar para diseñar tu interfaz de usuario. Y luego se pueden ver todos
los elementos
que se suman aquí abajo. Nuevamente, tienes un
panel de detalles donde puedes cambiar detalles
sobre los elementos. Por ejemplo, puede
cambiar el estilo de fuente, el tamaño de fuente, la imagen
es estilo, y así sucesivamente. Solo por una pequeña práctica
antes de que
termináramos, intentemos agregar algo. Entonces, por ejemplo,
tienes un bloque de texto, por lo que tenemos aquí los activos
comunes y comunes. Puedes intentar hacer click a
través de ellos y ver lo que tienes por aquí. No te sientas libre de agregar
cosas a la interfaz de usuario. Se puede. Siempre es agradable probarlo. Entonces lo que puedes hacer es
con
lo que normalmente empiezo al crear UI, por lo general
creo un panel de lienzo. Entonces si buscas
aquí arriba por Canvas, tienes este panel de lienzo. Para que puedas arrastrarlo
y colocarlo aquí abajo. Se lo agregará a la
interfaz de usuario así. Y se puede ver el
lienzo se ha agregado. Ahora esto es algo muy básico. Se agrega un lienzo, el lienzo, se agregan diferentes elementos. Entonces, por ejemplo,
podemos añadir este texto. Puedes
agregarlo haciendo clic y arrastrándolo
hacia abajo sobre el lienzo. Y se puede ver el
texto se ha agregado. O puedes hacer clic y
arrastrarlo y colocarlo en cualquier lugar aquí dentro del
lienzo y lo coloques. Por lo general, lo que me
gusta hacer es simplemente arrastrar hasta aquí y
luego hago clic en él. Así que simplemente eliminemos uno de ellos haciendo clic
en Eliminar en mi teclado. Puedes hacer click en ese
texto, por ejemplo, y puedes ver diferentes
detalles sobre este texto. Para que puedas cambiar
la posición de la misma, para que pueda hacer clic y arrastrar y
puedes cambiar la posición. Por ejemplo, podemos escribir
ciento ciento y la y. y se puede cambiar el
color del texto. Puedes cambiar la fuente aquí, seleccionando qué
tipo de financiación es, qué tan grande
es el fondo, etcétera. Por lo que tienes diferentes detalles. Se puede cambiar
sobre los elementos. Aquí están
los elementos más comunes. En lo común, puedes
intentar, por ejemplo, arrastrar un botón
y puedes ver qué cosas puedes
cambiar sobre un botón. Así que siempre agradable simplemente
arrastrarlos aquí, una imagen. Siempre usamos imágenes para que
puedas tratar de
familiarizarte con ellas. Puedes ver, puedes
escalarlos aquí con estas bonitas cosas de montar para que puedas hacer clic y arrastrarlo alrededor. Puedes hacer click en este
pincel, por ejemplo, para una imagen y puedes seleccionar
qué tipo de imagen es. Entonces por ejemplo, pinchando aquí, puedo seleccionar, vamos a
ver mi sprite. Y se puede ver que el sprite se
ha agregado como una imagen. Y puedes cambiar el tamaño
de la imagen por aquí. También puedes cambiar el
color de la imagen. Por lo que tienes
muchas opciones
con las que estaremos trabajando más adelante. Otras cosas geniales antes de
que termine esto aquí, tienes algo
llamado caja horizontal. Aquí una caja horizontal, podemos arrastrar eso aquí. Y vamos, déjenme borrar
todos esos por ahora. Haga clic en Eliminar. Por lo que tenemos esta caja horizontal. Voy a arrastrarlo por
aquí y escalarlo. Entonces en esta caja horizontal, dondequiera que coloque aquí
se colocará horizontalmente. Entonces si tomo este texto y lo
coloco aquí abajo en el cuadro, ya se
puede ver que está dentro
de esta caja horizontal. Y si agrego un texto más, o en realidad vamos a añadir
una imagen en su lugar. Agreguemos una imagen en
la caja horizontal. Ahora se puede ver
que está agregando cosas horizontalmente para que
no se superpongan entre sí. Y si agrego otro texto, ahora se puede ver que agrega
elementos horizontalmente. Por lo que ahora añadí, agregué
esto por error
aquí abajo para que pueda hacer clic y
arrastrarlo a este cuadro. Y se puede ver agrega
elementos horizontalmente. Ahí. Lo mismo va para
una caja vertical. Agrega cosas verticalmente una
por debajo del otro. Y si quieres que las piezas
se superpongan juntas. Entonces por ejemplo,
tenemos un botón y tenemos una imagen en el botón. Usamos algo
llamado superposición. Para que pueda agregar una superposición aquí. Y déjame simplemente agregar un botón. Entonces si hago clic en el botón
o busco botón, agrégalo a la superposición. Ya puedes ver mi botón
está en la superposición, y ahora puedo buscar imagen y colocarla
en el botón aquí. Por lo que ahora se puede ver que estoy superponiendo cosas una
encima del otro. Tengo un botón y tengo
una imagen en los botones. Entonces por ejemplo,
puedo elegir una imagen aquí y
ya puedes ver tengo una imagen en mi botón para que puedas
ver que no se ve muy bien porque tengo que hacer click en mi superposición y
redimensionarla y así sucesivamente. Pero estaremos trabajando
con todo esto. Solo quiero
presentarte a la interfaz de usuario. Siéntete libre de solo
buscar cosas aquí, trata de poner esta barra de
progreso en. Ve qué pasa si
aumentas el porcentaje como este e intentas
jugar con la interfaz de usuario, siempre
es agradable jugar. Y cuando haya terminado, adelante y elimine
todos aquellos incluyendo
el panel de lienzo y
compilar y guardar. Y luego pasemos a
la siguiente lección y comencemos crear la interfaz de usuario de
selección de caracteres.
36. UI de selección de personajes: Empecemos a crear la interfaz de usuario de selección de
caracteres. Por lo que aquí en el
Widget Blueprint que creamos anteriormente, Demos click en eso aquí. Entonces lo que queremos crear, fui adelante y lo
creé de antemano para poder mostrarte lo que
estamos tratando de crear. Y siempre es agradable ver
ese objetivo al que estamos apuntando. Estamos apuntando a
crear este personaje. Y luego tenemos dos
botones donde puedes desovar ya sea un bucle o Serena
dependiendo de lo que presiones. Entonces esto es lo que
estamos tratando de crear. Y luego tenemos un trasfondo
que se desdibuja. Entonces este es el objetivo
que tenemos que crear. Y siempre es agradable
imaginarlo en tu mente y
tratar de descomponerlo. Así que de nuevo, hablé una caja vertical y una
caja horizontal en la lección anterior. Y por ejemplo, estos
dos botones están dentro de una caja horizontal porque llegan
tarde uno al lado del otro. La imagen y el botón
están dentro de una superposición porque se superponen cosas una
encima de la otra. Así que cosas muy básicas, así que muy bueno para imaginarse
lo que estás tratando de
hacer para que sepas qué
elementos vas a usar. Pero vamos a repasar y
crear lo nuestro propio. Entonces primero tenemos que
importar algunos activos. Primero aquí en la interfaz de usuario,
haga clic con el botón derecho y
vaya a Nueva carpeta. Hagamos uno
llamado fondos. Vamos, agreguemos otra
carpeta llamada Botones. Agreguemos
otro llamado Fonts. Y el último, llamémoslo imágenes. A lo mejor necesitamos uno
llamado iconos más adelante, pero eso es para más adelante. Entonces aquí en los antecedentes, te
he proporcionado estos materiales del
curso aquí. Entonces en los materiales del curso, salta adelante y encuentra la interfaz de usuario. Y también aquí estas
son las carpetas. Entonces en los fondos,
se puede arrastrar eso aquí. Y para éste, no haga clic derecho y
aplique configuraciones 2D. Esto no es una púa, esto no es pixelado. Esto es básicamente sólo una imagen. Así que volvamos atrás y
dentro de los botones. Aquí, vamos a importar
todos estos botones. Por lo que no vamos
a utilizar todos ellos, pero tienes una variedad
si quieres
usar diferentes colores en
tu versión del juego. Y luego vayamos a las fuentes, y volvamos aquí, vamos a los fondos y vamos a
sumar todos estos fondos. Y entonces te va a preguntar, ¿quieres crear esos fondos aquí y
simplemente haz click en Sí, Todo lo que va a crear
fondos para ti. Y lo último son las
imágenes o las imágenes. Y volvamos a sumar las imágenes, que es una chupada y Serena. Entonces agregándolos aquí,
voy a aplicar a estos ajustes porque estos
son en realidad selecciones mucho. Así que haga clic derecho en esos y aplique los
ajustes de textura 2D de papel. Así como eso. Si te estás preguntando dónde
puedes obtener fuentes como esta, siempre
puedes
buscar fuentes de Google. Yo uso esto para hacer
mis videojuegos. Tan divertido. Google Fonts busca eso. Dentro de aquí tienes impresionantes fuentes
gratuitas y puedes usarlas comercialmente para lanzar en
Steam o en cualquier otra plataforma. Por lo que todos estos son gratis. Sea cual sea lo que encuentres
dentro de aquí, puedes intentar
buscar un fondo, intentaste encontrar diferentes estilos
específicamente y así sucesivamente. Sitio web tan genial
si lo quieres, adelante y
encuéntralo en fuentes de Google. Por supuesto, puedes comprar fuentes por dinero e importarlas
dentro de aquí también. Así que hagamos clic en Archivo
y guardemos todo. Ahora que lo tenemos todo, volvamos al Blueprint
Widget y estamos listos
para empezar aquí. Entonces primero lo que quiero
hacer es agregar una caja vertical. Busquemos vertical
y agréguelo aquí. Y en realidad antes de que hagamos eso, en realidad olvidé
agregar el panel de lienzo. Entonces agrega el panel de lienzo
siempre como el primer elemento. Y luego agreguemos
la caja vertical. Siempre necesitamos un lienzo primero. Ahora tenemos esta caja vertical donde todo estará dentro. Entonces tenemos, de nuevo, si llevo esto de vuelta aquí, tenemos la
caja vertical donde teníamos este título y debajo de él
tenemos los botones. Por eso estamos
usando una caja vertical. Y primer año,
necesitamos centrar esta pieza en
medio de la pantalla. Y para ello, aquí es
donde se utilizan los puntos de anclaje. Muy importante
usar puntos de anclaje y ponerlos para todos
tus elementos. Por lo que da click en este ancla
y configurándolo a la mitad de la
pantalla así. Ahora en el puesto
si escribes 00, puedes verlo alinea
a esta parte superior aquí, pero queremos que
sea en el medio. Y aquí es donde se puede
jugar con la alineación. Se puede ver la alineación en la x y alineación en el Y. Y parece que
si escribes 0.5 en cada uno, se alineará en el
medio, así como esto. Muy bien, así que empecemos aquí. Vamos a crear una superposición
y colocarlo aquí en los bugs verticales porque ahora una superposición es
donde se superponen elementos. Por lo que quiero superponer una imagen
y un texto encima de ella. Así que busquemos imagen. Arrástralo aquí, colócalo en la superposición y ya puedes
ver que tenemos una imagen. Vamos a seleccionar qué
imagen queremos usar. Ahora, este es solo el fondo
que quieres usar. Sólo voy a usar
este botón llamado. En realidad este un
botón plano, Negro Cuadrado Plano. Entonces usando éste y voy
a hacer que llene
todo este segmentos. Para que puedas ver aquí tienes alineación
horizontal y
vertical. Horizontalmente, quiero
llenarlo a todo el asunto aquí. Por lo que ahora, dependiendo de cuán
grandes sean tus cajas verticales. Básicamente va a
llenar todo el asunto. Esto es lo que son las alineaciones verticales y
horizontales. Entonces voy a usar algún texto, y voy a dejar caer los
textos encima de la superposición. Aquí. Quiero el
texto en el medio. Por lo que voy a alinear este texto al medio
aquí, al medio aquí. Y llamémoslo
aquí en el texto. Selecciona un personaje. Así como eso. Ahora, podemos seleccionar el
color, creo que está bien. Entonces podemos seleccionar
cosas sobre la fuente. Lo que quiero hacer es,
utilicemos este
llamado Source Sans Bold. Entonces usando éste aquí. Y voy a
hacer que sea 14 de tamaño. Por lo general, cuando miro
cuando creo la interfaz de usuario, suele ser más correcto cuando tienes
Zoom Plus dos aquí arriba, si miras eso, así que
si alejas y adentro, generalmente está alrededor de
Zoom Plus dos, pero a veces
las corrijo después de que
los agrego al juego. Así que selecciona personaje y
hagamos algunas sombras. Me gusta tener algunas
sombras en mi texto. Entonces aquí abajo en
el color de la sombra, que actualizar alpha aquí el alfa es básicamente la
opacidad de la sombra. Entonces si escribes uno, puedes
ver que tienes sombra para nuestras 0.5 opacidades como 50%, voy a escribir 0.35. Por lo que 35 por ciento sombra y el desplazamiento de la sombra
voy a escribir 22. Entonces está un poco más lejos
del texto, algo como esto. Lo que voy a hacer
ahora es que también voy
a añadir una imagen
aquí arriba solo para peinar. Así que voy a agregar una imagen aquí
arriba bajo superposición de nuevo. Así que ahora estás superponiendo uno
encima del otro. Voy a seleccionar
el azul ahora, el botón, cuadrado azul plano. Entonces lo que puedes hacer ahora
es que puedas disminuir el tamaño aquí en la y,
para que sea más pequeña. Y también quiero llenarlo
horizontalmente así. Voy a hacer el tamaño sólo cinco pixeles, así como eso. Y si quieres visualizar tu interfaz de usuario sin
estas líneas
discontinuas, puedes hacer clic aquí arriba. Y creo que a veces
es genial hacer eso para que
pueda ver cómo se ve
realmente mi interfaz de usuario. Acabo de hacer eso por peinar. Puedes hacer click sobre
esta imagen aquí. También puedes hacerlo más pequeño. Entonces si hago click en
esta imagen aquí, puedes hacer más pequeña y la y Por si
acaso
crees que esto es demasiado grande, voy a hacerlo
algo así. Ahora bien, este texto no parece que esté
completamente en el medio, porque cuando lo
haces más pequeño, puede ver que casi llega a esta línea más rápido que aquí abajo. Entonces volviendo al 61, voy a empujar un poco este
texto hacia abajo. Entonces aquí arriba en el relleno, podemos empujar las cosas a los lados. Entonces desde arriba,
voy a empujarlo. Te imaginas que alguien lo está
empujando desde arriba. Puedo empujarlo a pixeles. Para que puedas ver, si escribí diez, puedes ver que está bajando. Alguien
lo está empujando desde arriba. Aquí a la derecha, alguien lo está
empujando desde la derecha. Entonces esto es
lo que significa. Y el emparejamiento aquí desde la tina, solo
quería
empujarlo hacia abajo a píxeles, así que está más abajo así. Muy bien, a continuación voy a hacer una caja horizontal para poder tener estos dos
botones aquí abajo. Entonces en busca de horizontal. Y lo voy a dejar caer
encima de mis dólares verticales porque quería debajo de esta
cosa aquí que creé. Entonces esta caja horizontal, quería tener dos botones. Vamos a crear nuestro primero. El botón consiste en
un botón y una imagen. Entonces hagamos primero una
superposición porque queremos superponer dos
elementos uno encima del otro. Queremos un botón, primer botón, y vamos a poner
ese botón en la superposición. Y luego necesitamos una imagen
en la parte superior del botón, así como esta aquí. Entonces poniéndolo hasta la superposición. Por lo que tenemos dos elementos
superpuestos entre sí. Entonces haciendo clic en el botón, vamos a seleccionar el estilo. Entonces por aquí en el
estilo, en lo normal, seleccionemos el botón y quiero usar aquí el botón
azul, botón, cuadrado azul, éste. Ahora, algunos ajustes
podemos cambiar. El tinte es genial. No quiero que haga eso. Entonces voy a cambiar
el tinte a completamente ancho para poder usar los
verdaderos colores de mi botón. Y luego en lugar
de errores redondeados, se
puede ver que hay una extraña
línea alrededor de mi botón. Y esto se debe a
que es una caja redondeada. Lo voy a cambiar a
una caja en su lugar. Puedo ver que se ve un poco de baja
resolución, es borrosa. Y puede hacerlo por, se
puede hacer eso aumentando el margen para que
parezca más claro. Entonces 0.5 es el
margen máximo que puedes hacer. Por lo que va entre 0.10123450. Entonces 0.5, el mejor para usar. En este caso, si alejo
un poco así así,
así es como se ve el
botón. Necesito hacer lo
mismo aquí por el Hubbard y presionado. Entonces en lugar de ir aquí y encontrar este mismo
botón una y otra vez, como pequeño truco, puedes hacer clic derecho y
puedes copiar esto, y luego puedes hacer clic derecho
y pegarlo aquí. Un atajo para esto.
Puedes ver si mantiene presionada Mayús en tu teclado y
haz clic con el botón derecho, puedes copiar. Así que mantenga presionada Mayús,
haga clic con el botón derecho
y copie, y luego mantenga presionada Mayús Y puedes pegarlo aquí.
Por lo que puede hacer eso con esto. Se puede hacer eso con
el color del tinte también. Así que haga clic derecho en turno
y haga clic derecho para copiar Mayús y haga clic izquierdo para
pegarlo en estos dos. A eso. Lo mismo con los márgenes
son flujo de trabajo muy rápido aquí. En cuanto al tinte cuando pongo el cursor. Entonces cuando alguien se cierne
sobre mi botón, quiero que lo hagan, quería
cambiar un poco de color. Entonces algo como esto. De acuerdo, cuando estés
contento con esto, puedes hacer click en OK. Y aquí en deprimido, quiero tener un poco de un color más oscuro cuando
alguien presiona el botón. Y ahora tenemos el botón
aquí y aquí para esta imagen, vamos a ponerlo aquí en medio
del botón así. Seleccionemos la imagen. Y lo que quiero
usar es aquí en las imágenes que queremos
usar Serena para esta. Yo voy a,
ya sea puedes encontrar Tsarina aquí en las imágenes como esta o
puedes hacer click y arrastrar. A veces es una
forma más rápida como este año. De acuerdo, entonces tenemos la imagen aquí. Voy a empujarlo
un poco hacia arriba porque se puede ver que
tenemos esto
aquí abajo y necesito
empujarlo un poco
hacia arriba para que parezca que está en
el centro del botón. Así que de nuevo, lo que te he
enseñado sobre el relleno, lo
estamos empujando desde
abajo, desde el botón, puedo empujarlo a píxeles
hacia arriba, así como eso. Lo que quiero hacer aquí, quiero dar click en
este cuadro horizontal y quiero hacer click en Rellenar. Por lo que ahora puedo ver
la caja horizontal está realmente llenando todo
el asunto. Y lo mismo
con la superposición, quiero hacer click
en llenar el agujero. superposición llena
toda la zona aquí abajo. Y por lo que respecta a este botón aquí, hagamos clic en él
y hagamos clic en
Rellenarlo horizontal y
verticalmente, así así. Y luego necesitamos un poco
de espaciamiento entre estos dos. Se pueden ver que están
montados y no queremos eso. Por lo que aquí arriba puedes
buscar espaciador. Esto, quiero ponerlo entre la oreja y la caja vertical, entre la superposición y la caja
horizontal por aquí. Y se puede ver que está entre
estos dos elementos ahora, seleccionando eso, y esta
es la x
y, y está en la y,
necesitamos algún espaciado. Voy a hacer que
sea diez, así. Y ya puedes ver que tenemos
algún espacio entre ellos. Podrías pensar,
¿por qué llenaste todo
el asunto aquí abajo? Y me gustó que mi interfaz de usuario fuera dinámica. Entonces lo que quiero decir con
eso es si hago clic en este cuadro vertical
ahora por lo cambio de tamaño, puedes ver mi UI
cambia de tamaño dinámicamente. Cambiar el tamaño que hago por aquí. Entonces en lugar de definir, si hago clic en el botón, en lugar de definir el
tamaño por esta imagen. Y más tarde me entero que
me gusta que esto sea más grande. En lugar de ir aquí
y cambiar el tamaño de las cosas, me gustaría simplemente hacer clic en mi, mi elemento superior y simplemente redimensionarlo y
hacer que se vea bien. Así que eso es una semana que tenemos que hacer. Y creo que también es
más limpio hacerlo así. Tenemos ese botón ahora
necesitamos otro botón. Por lo que si hago click en esta superposición
y hago clic en Control D, o puedes hacer clic con el botón derecho
y hacer clic en duplicado. Eso es lo mismo. Por lo que ahora tenemos dos botones. Ahora para esta imagen, quiero usar el botón rojo. Este,
botón rojo, cuadrado rojo, botón derecho mientras
mantiene pulsado Mayús para copiar, haga clic con el botón izquierdo mientras mantiene
pulsada la tecla Mayús para De acuerdo, entonces ahora tengo eso
y para esta imagen, necesito cambiarla. Entonces voy a conducir
mirada a esta imagen ahora. Voy a añadir un espaciador
entre estos dos botones. Entonces un espaciador entre estas
dos superposiciones, así. Y ahora este espaciador está en la x. voy a subir
15 por éste. Por lo que ahora tengo dos botones y se ponen muy bien juntos. Ahora puedo arrastrar esto
y hacerlo más grande. También puedo redimensionarlo por aquí. Creo que algo así
sería muy apropiado para mí. Ahora, si haces clic
en el cuadro vertical, asegúrate de que esté en el medio. puede ver que no está
completamente en el medio. Ahora, voy a
cambiar esta posición en la x e y a 00,
justo así. Y ahora está dentro
del medio. Entonces compile y
guardemos todo. Entonces lo último que tenemos que hacer aquí ahora que
tenemos nuestros botones, necesitamos agregar un fondo. Y esto es
simplemente una imagen. Entonces si minimizas esto aquí, y si acabo de arrastrar una imagen
aquí detrás de todo, quiero que llene toda
la pantalla. Nuevamente, puedes
hacer click en el ancla y dar click en éste para
llenar toda la pantalla. Y ahora solo podemos escribir
0 en las compensaciones aquí, 00. Ahora llena toda la pantalla y puedes cambiar
el fondo. Entonces dentro de la carpeta de mi
fondo, puedo arrastrar mi fondo. Y ahora está llenando toda
la pantalla aquí. Ahora quiero desenfocar la
imagen. Y tú puedes hacer eso. Si escribirás desenfoque
aquí arriba y tienes a éste
llamado desenfoque de fondo, voy a poner eso
aquí y tienes especificar la cantidad
de desenfoque de nuevo, tienes que hacer click en
los puntos de anclaje, hacer que llene toda la pantalla, a la derecha 00 y las compensaciones. Y puedes escribir la
cantidad con la que desenfocarla. Ahora podemos escribir
diez por ejemplo, y se puede ver que
no pasa nada. Y esto se debe a que el desenfoque de
fondo necesita estar debajo de la imagen para estar
encima de ella, así aquí. Por lo que ahora podemos ver el desenfoque. Y así es como se desdibujan las imágenes. Y creo que un desenfoque de diez está
funcionando muy bien para éste. Entonces ahora lo que te
aconsejaría que
hicieras, puedes, por ejemplo, hacer click en este texto aquí. Si estoy haciendo un proyecto serio, en realidad
estoy cambiando los
nombres de todos estos aquí. Porque si vas
al gráfico, puedes ver, en realidad
puedes ver los
elementos que has creado. Para que puedas ver todas las imágenes y los dos botones
que has creado. Entonces vamos, por ejemplo, a este botón si haces
clic aquí en él, y también puedes seleccionarlo aquí, puedes cambiar este
botón a btn. Usualmente uso eso
como prefijo para botones. Y lo llamo por Serena. Y hago click en el
otro y lo llamo n. mira, esto es muy bueno
hacer porque si vas
al gráfico ahora, en realidad
podemos ver cuáles son
estos elementos. Este es el botón para bucle. Este es el botón para Serena. No tengo ni idea de cuáles son si no les
doy un nombre, así que es imposible para mí
saber cuáles son estos. Y a veces
realmente no necesitamos variables. Para que puedas ver estas
son en realidad variables que puedes usar aquí
en el Gráfico de Eventos. Pero a veces no las
necesitamos como variables. Entonces, por ejemplo, este cuadro de
título de aquí, nunca
vamos a
cambiar nada al respecto. Entonces realmente no necesito
que sea una variable. Entonces es aquí donde puedes desmarcar esta llamada es variable. Por lo que puede desmarcarlo.
Puedo hacer lo mismo con este de aquí arriba es variable. Y creo que
también podemos hacerlo con estos. Hagámoslo en realidad. Así que mantenga el control,
seleccione ambos, elimine esta variable,
Compile y Save. Y se puede ver en
el gráfico ahora
hemos eliminado todos estos. Ahora tenemos una sola
imagen que queda. Podemos intentar adivinar esas imágenes y ese es
probablemente el fondo. Entonces si lo miras aquí, imagen 1026, se llama lo
mismo, 1026. Y tampoco necesitamos
cambiarlo realmente. Por lo que voy a quitar
esto es variable. Y esto hace que
todo se vea mucho más limpio. Por lo que me gusta mantenerme limpio
dentro de mis proyectos. Y probablemente sean
sólo los botones que necesitamos como variables porque los vamos a utilizar para cuando el jugador
presione los botones. Entonces esto fue todo chicos para la pantalla de selección de
personajes. Espero que te hayas divertido
creando esta interfaz de usuario, y pasemos
a la siguiente lección.
37. Cómo agregar la interfaz de usuario al Viewport: Así que sigamos adelante y agreguemos
nuestra interfaz de usuario a la pantalla. Por lo que hicimos esta pantalla de
selección de personajes y queremos agregarla
aquí a la ventana gráfica. Entonces cuando hacemos clic en Jugar
ahora mismo , realmente no pasa nada. Estamos de vuelta aquí
con nuestro personaje, pero queremos sumar la pantalla de selección de
personajes. Entonces para hacer esto, por lo general
agregamos una interfaz de usuario en
el controlador del jugador. Así que vamos a los planos, y ahora vamos a usar
nuestro control de jugador. Creo que aún no lo hemos
usado, así que todavía está vacío, abierto editor de planos completo. Y dentro del controlador
del jugador es donde agregamos UR es tan
importante recordar. Eliminemos estos eventos
predeterminados. Siempre podemos
agregarlos si queremos. Ahora, muy importante
entender, interfaz de usuario es algo de cara al cliente. Por lo que solo eres tú como jugador quien va
a ver tu propia interfaz de usuario. Entonces cada jugador en
el juego como una interfaz de usuario. Así que tal vez tengas un bar
experimentado aquí abajo. Tienes algo de
nivelación aquí abajo. No sé, alguna interfaz de usuario aleatoria. Entonces toda la interfaz de usuario que
tienes es del lado del cliente, por lo que no es del lado del servidor. Entonces toda la interfaz de usuario es individual
para cada jugador. Así que volvamos al controlador del
jugador aquí. Y lo primero, vamos a hacer unos eventos personalizados. Así que hagamos un evento personalizado y lo
llamemos inicializar widgets. Y de nuevo, te lo dije antes, en lugar de hacer
esos eventos personalizados, es bueno usar una Interfaz de
Blueprint, pero en realidad
lo hagamos primero y luego
cambiarlo con una
Interfaz de Blueprint después de eso. Así que hagamos otro, otro evento personalizado
y
lo voy a llamar CL, inicializar widgets. Por lo que esto va a
ser un cliente de lado uno que no ha usado
a un cliente a un lado. Lo único que usamos si volvemos a la base de
jugadores ahora, lo único que usamos
hasta ahora es un lado del servidor, así que ejecutándose en el servidor. Pero para la interfaz de usuario, se están
ejecutando en el cliente. Así que haciendo clic en Ejecutar en poseer
cliente y luego confiable. Y ahora para crear UI, decimos que crea widgets. Ui se llama widgets. Creamos widgets.
Así que crea widget. Y así es como se crea
una interfaz de usuario dentro de Blueprint. Entonces vamos a conectarlo aquí arriba. Y ahora tienes
que seleccionar qué interfaz de usuario quieres crear. Y obviamente
no tenemos mucho. Sólo tenemos éste, selección de
personajes. Entonces esta es la
que queremos sumar. Así que ahora que lo agregaste, siempre es agradable hacer clic derecho aquí y promoverlo
a una variable para que
puedas usar esa
variable más adelante cuando quieras ocultar o volver a
mostrar la ventana. Así promueve una variable. Llamémoslo WB,
ese es mi prefijo. Puedes elegir
lo que quieras. Y lo voy a llamar
selección de personajes. Por lo que esta es la selección de
caracteres Widget Blueprint variable. Ahora a la ventanera,
por lo que es visible. Puedes ver aquí si
hago click en Jugar ahora, no pasa nada y
esto es porque
necesitas agregarlo a la ventana gráfica. Entonces si vuelvo aquí, tengo que arrastrar desde
la variable y decir agregar dos ventanas gráficas. Y se puede ver
éste llamado Agregar a Viewport. Así como esto. Así que ahora si haces clic en play y no
va a pasar nada porque recuerda que tienes que llamar
al motor LCD de eventos no
sabe lo que estás haciendo. Así que huyendo de
este evento personalizado, tal vez ya lo hayas adivinado. Tenemos que llamar a nuestro evento
del lado del cliente aquí. Entonces CL inicializó widgets. Está pasando de un evento
normal que entra en la carrera en el cliente. Entonces desde el cliente
estás creando la interfaz de usuario y se mostrará. Pero claro que tenemos que
ejecutar este evento también porque el motor no sabe qué cuando se
quiere ejecutar este evento. Y solo quiero ejecutarlo
aquí al principio de juego. Así que cada vez que hago clic en
jugar en el juego, quiero mostrar aquí mi selección de
personajes. Así que llamemos a este evento aquí, inicialicemos widgets así. Así que ahora cuando haga clic en Play, se va a ejecutar este evento. Este evento ejecutará este evento
que se ejecuta en el cliente. Y luego vamos a crear la interfaz de usuario y luego
agregarla a la ventana gráfica. Vamos a salvar todo. Demos clic en Play. Y se puede ver cuando
hago clic en Play, ahora mi interfaz de usuario está en la pantalla. No obstante, se puede ver que
puedo pasar el puntero sobre los botones, pero mi mouse no es visible. Esto se debe a que en el controlador
del jugador, tienes en los valores predeterminados de clase. Tienes que hacer click en éste
llamado Mostrar cursor del ratón. Entonces haciendo click aquí, vamos a compilar y guardar y
ver qué pasa. Ahora puedo ver mi cursor, y ya puedes ver ahora
puedo ver mi IU y dar
click en los botones. Ya ves aquí tenemos un
pequeño bicho. Puedo pasar el cursor el botón
se puede ver cambios de colores. Pero si pongo el puntero sobre la imagen, ya no
puedo pasar el puntero. Se puede ver que el
efecto de hover desaparece. Esto se debe a que mi imagen
está bloqueando mi botón. Tenemos que arreglar eso. Entonces
volver a la interfaz de usuario aquí, y esto es muy importante. Esta imagen actualmente está
bloqueando este botón, por lo que no puedo presionarlo. Y seleccionemos tanto esta
imagen como esta imagen. Bajemos y
hay que cambiar éste. El visibilidad en
su comportamiento. Discapacidad, cambiarlo
a ninguno, golpear comprobable. Y esto significa
que no importa que
esta imagen esté ahí. Sólo quiero ignorarlo. Entonces el ratón lo
va a ignorar. Se puede ver aquí por jugar ahora, y me desplomo sobre la
imagen, no importa. Todavía estoy flotando
sobre el botón. Entonces esto para que tengas que establecer
elementos a no golpear comprobable si no quieres que bloqueen tu interacción con
los botones y el mundo. Vale, así que antes de terminar, en lugar de hacer este
evento personalizado widgets inicializados, hagámoslo en realidad en
una, una Interfaz de Blueprint
y luego puedes tener algunos ejercicios
de eso también. Entonces vamos a minimizarlo e intentar hacerlo tú mismo
si quieres. Este es el mismo
método que hicimos antes de ir a la carpeta
interfaces. Ahora habíamos hecho uno
para la base del jugador, así que tenemos que hacer uno nuevo
para el controlador del jugador. Así que vamos a hacer clic derecho, vaya a los planos aquí y seleccione Interfaz de
Blueprint. Y de nuevo, por lo general
lo llamo el nombre del blueprint en el que
quiero usarlo. Por lo que queremos usarlo en el controlador del jugador como
este y dar click sobre él. Y ahora vamos a darle
un nombre a esta función y llamarla de nuevo, inicialicemos widgets así. Compilar y Guardar. Y volvamos al controlador
del jugador. Recuerda, de nuevo, recuerda
compilar aquí, muy importante, compilar save. Volvamos al controlador del
jugador. Y dentro de aquí,
vamos a Ajustes de clase. Y aquí en las interfaces, agreguemos nuestra interfaz
para el controlador del reproductor. Y ahora lo puedes ver
aparecer aquí. A continuación, puede escribir widgets de
inicialización. Y se puede ver el evento
inicializar widgets aquí, y viene de una Interfaz
Blueprint. Esto es lo que significa el ícono. Ahora podemos conectarlo aquí arriba. Y también podemos llamar al evento
aquí, inicializar widgets. Y de nuevo, voy a
seleccionar éste bajo controlador de reproductor
int,
así como eso. Así que ahora está funcionando a la perfección. Nuevamente. Si hago clic en Play, ahora, va a funcionar como debería.
38. Funcionalidad de la selección de personajes: Así que
volvamos ahora a nuestro widget. Vamos en la interfaz de usuario y
el Blueprint Widget. Y dentro de aquí ahora queremos agregar funcionalidad
a la interfaz de usuario. Así que para agregar funcionalidad
a la interfaz de usuario, recuerde, este Widget Blueprint se
divide en un diseñador y un gráfico. Y el gráfico es donde
agregamos nuestra funcionalidad
para los botones. Por lo que al hacer clic en el diseñador, puede hacer clic en
uno de los botones. Entonces empecemos con Serena
haciendo clic en ese botón. Y si bajas
al botón, puedes ver que tienes algunos
eventos que puedes agregar. Por ejemplo, ¿qué debería pasar si hago clic en este botón? ¿ Qué debería pasar si pongo el
puntero sobre el botón? ¿ Qué debería pasar si
destapo el botón? Por lo que tenemos diferentes eventos
que podemos añadir para el botón. Ahora, quiero usar
este por ahora, ¿qué debería pasar cuando
hago clic en el botón? Por lo que haciendo click en el plus, y agregarás este evento aquí. Ahora, puedes eliminar
estos si quieres. Estos son los predeterminados. Podemos agregarlos si queremos. Entonces seleccionándolos, haciendo clic
en Eliminar en mi teclado. Así que sólo voy a
tener éste por ahora. Entonces el flujo de trabajo, antes de empezar, el flujo de trabajo con el que
vamos a trabajar es cuando se quiere
engendrar al jugador, vas a
presionar este botón. Este botón te va
a llevar a un evento en el controlador
del jugador. Por lo que tenemos que tener un evento aquí y el controlador del jugador para desove está
seleccionando al personaje. Y cuando selecciones
al personaje, va a
pasar por el modo de juego. Y muy, muy
importante recordar
que el modo de juego solo
se ejecuta en el servidor. Así que no puedes venir aquí y hacer un evento personalizado y
configurarlo en cliente run-on. Esto no funciona. El modo de juego solamente, solo existe en el servidor. Y esto es muy bueno
porque podemos usar el Modo de Juego para comprobar
lo que está haciendo el cliente. Nuevamente, recuerda,
en Unreal Engine o simplemente multijugador en general, el servidor comprueba lo que están haciendo
los clientes, por lo que evitamos hacer trampa. Y el modo de juego es muy
bueno de usar para eso porque solo se ejecuta
a través del servidor. Para que podamos
atravesar las cosas aquí y luego engendrar un jugador en el modo de juego nos
permite engendrar al jugador. Así que volvamos
al Widget Blueprint. Teniendo un evento en el controlador
del jugador, el controlador nos va a tirar al modo de juego. El modo de juego, cuando vea
eso, sí, se
le permite
engendrar al jugador, va a arrojar esa información de nuevo al controlador
del jugador. Podrías preguntar, ¿por qué no
estamos agregando esto, este código aquí? ¿ Por qué lo estamos agregando al controlador
del jugador en lugar
de la base del jugador? Porque este es el
jugador que queremos
gastar un jugador y
es Particultor Específico. Ya que no
tenemos un Pleno en, recuerda que estamos
desova al jugador. Entonces esto, este código no
existe cuando estás aquí en la pantalla de selección porque aún no has
engendrado al jugador. Por lo que no puedes agregar código aquí. No funcionará porque
esto en realidad no existe todavía si no
has engendrado al jugador. no se pueda, no podemos hacer
el código dentro de aquí, así que tenemos que hacerlo en
el controlador del reproductor, porque el
controlador del jugador genera cada vez que el jugador
se conecta al servidor. Entonces si estoy jugando Counter-Strike o si estoy jugando a la historia de Maple, cuando me conecto al servidor, automáticamente
crea un controlador de jugador
para cada jugador. El controlador del jugador
existe a pesar de que mi **** aún no ha contestado. Entonces vamos al Blueprint
Widget. Y dentro de aquí, queremos en realidad empecemos
con un control de placa. Creo que será
más fácil para ti aquí. Entonces aquí, hagamos un nuevo evento, hagamos uno aquí, y
llamémoslo. Llamemos al Select Character. Ahora, a veces cuando me
confundo de cómo
debo hacer un mecánico, suelo empezar desde atrás, así que esto es a veces
creo que es muy bonito hacerlo. En ocasiones se puede
empezar desde atrás. Entonces, ¿qué intentas
lograr al final? Lo que estoy tratando de lograr es éste llamado actor de desown. Esta es la que
vamos a utilizar. En última instancia. Queremos engendrar a un actor, quieres engendrar al personaje. Y aquí, este es el
personaje que queremos desovar. Y déjame hacer un evento
aquí abajo llamado capa de desove. Este es el evento definitivo
que queremos terminar con un resultado. Para que puedas empezar por atrás. Y en lugar de empezar aquí, en realidad a veces es
mucho más fácil de entender. Entonces ir, volver atrás es
mucho más fácil a veces, nuevo, engendrar al jugador. Esto debería venir
del modo de juego, porque como dije antes, cuando haces clic aquí, va a ir al controlador de
jugador aquí, el controlador de jugador nos
va a tirar dentro
del modo de juego, y el modo de juego nos va
a tirar aquí, responderá al jugador. Voy a arrastrar Es
variables sobre el evento aquí. Y en lugar de clase, vamos a cambiar el nombre de la misma, llamarlo jugador y
engendrar transformar. Podemos simplemente llamarlo desown
transform, eso está bien. Por lo que tenemos el evento de
reproductores de desove aquí. Esto va a venir
del modo de juego. Así que volvamos
al modo de juego ahora. Entonces estamos trabajando al revés
yendo al modo de juego ahora, voy a eliminar este
evento para que puedas empezar a jugar porque no los
necesitamos en este momento. Compuesto guardar, y
voy a hacer un nuevo evento aquí, eventos personalizados. Llamémoslo
solicitar capa de desove. Así como eso,
solicita jugador de bonos. Y va a ejecutar nuestro reproductor de
Spawn desde el controlador
del jugador. Pero en este momento no tenemos, no
tenemos una variable
para el controlador del jugador, así que no puedo llamar a este evento aquí. ¿ Recuerdas? Ahora se está poniendo un poco
más avanzado porque
necesitamos usar este jugador de desove de
eventos, que está en el controlador
del jugador, necesitamos usarlo
en el modo de juego. Y esto se llama comunicación de
Blueprint, como les dije antes, utilizamos
Interfaces de Blueprint para eso. Pero en este momento, lo que podemos
hacer es simplemente hacer click en este plus podemos agregar el controlador
del jugador. Y luego como la variable, podemos seleccionar el
controlador del reproductor y lo llamamos PC. Creo PC Maple Story, lo
llamamos sí,
una PC Maple Story. Y luego vamos a crear realmente desde el controlador
del jugador. Ahora si arrastra sobre él, porque ahora que la variable es esta clase de blueprint aquí, ahora
podemos llamar a
esta capa de desova. Entonces si arrastras de esto
y dices capa de desove, Ok, ahora podemos llamar a
este evento aquí. Y al igual que antes, voy a
arrastrarlos de nuevo. Así que arrastrando al jugador de vuelta aquí porque esta
solicitud desova jugador, vamos a
llamarlo aquí desde el controlador del jugador otra vez. Y S4, la ubicación. Usualmente descompongo esto. Así que recuerda una variable
transformada, si hago una y te
muestro aquí abajo, una variable transformada es una variable donde podemos ver
la ubicación, rotación, y escala, al igual que
en nuestra viewport aquí, cuando hacemos click en algo, podemos ver la transformación. Esta es la variable transformada. Por lo que siempre necesitamos eso para definir dónde debe desovar el jugador, cómo debe
rotarse el jugador al desovar, qué tan grande
debe ser el jugador un desove. Entonces permítanme borrar
éste por ahora. Y en lugar de tener
la transformación inversa, se
puede arrastrar desde aquí
y hacer clic en ésta, hacer esto, lo
desglosaremos en estos tres. Entonces la ubicación,
rotación y la escala. Y por lo general solo dejo que
esto esté en el modo de juego. Así también es como
prefieres como programador, algunas personas lo hacen de manera diferente, pero por lo general lo
tengo, suelo hacer el transformador y lo descompongo así. Y luego solo engancho la ubicación por aquí afuera porque la rotación es la misma y la escala es la misma. Entonces así es como se ve. También podemos, en lugar
de ubicación, podemos llamarlo ubicación de desove. Sólo para que no te confundas
más tarde en lo que es eso. De acuerdo, así que ahora tengo esta
llamada peticion spawn player. Ahora aquí afuera en
el jugador selecto, es donde va a
estar porque el jugador selecto nos
va a tirar por aquí. Y para comunicarse
con un modo de juego. Nuevamente, dije antes, el modo de juego solo
se ejecuta en el servidor, por lo que hay que ejecutar
esto en el servidor. Entonces sabemos cómo hacer esto ahora. Así que vamos a hacer un
evento personalizado y llamarlo S RV, seleccione carácter. Y ya desde aquí arriba, podemos ejecutar ese evento. Entonces SRB seleccione carácter y recuerde
ejecutarlo en el servidor, éste, seleccione carácter
y haga clic en confiable. Por lo que ahora tenemos este
selecto personaje. Va a correr
por el servidor. Y recuerda,
vamos a llamar
al jugador de desove de solicitud. Y de nuevo, necesitamos
comunicarnos con nuestro anteproyecto. Tenemos que usar el modo de decaimiento aquí dentro del controlador
del jugador, te
voy a enseñar cómo comunicar qué Blueprints. Esto es algo que no
hemos tocado antes. Para comunicarse con
el modo de juego. Tienes que decir, consigue el modo de
juego. Muy básico. Ahora, consigue el modo de juego. Este no es tu,
tu modo de juego aquí. Este es solo un modo de
juego general en el motor. Cuando dices obtener el Modo de Juego, entonces
tienes que definir. Puedes ver aquí, si
mantienes el ratón sobre
él, dice que regresa a la base
actual del modo de juego. Ahora cuando se obtiene el modo de juego, hay que definir de qué
modo de juego estás hablando, porque este es solo
el modo de juego general. Y tenemos algo
llamado casting. Entonces si arrastras
esto y dices costo
costar dos medios como el
cual, del que Blueprint hablo. Estoy hablando de
TM Maple Story. Entonces le costó a Maple
Story, éste. ¿ De acuerdo? Ahora como Maple Story, esto significa que ahora
puedo usar todo lo que hay dentro de
este blueprint. Ahora, por ejemplo, puedo usar o puedo llamar a esta
solicitud spawn player. Entonces si me arrastro y digo
solicitar reproductor de desove, puedes ver que puedo
llamar a ese evento ahora. O digamos que si hice un evento llamado una
variable llamada hola, y es una transformación, puedo volver a mi
controlador y decir, Hola. Puedo ver ahora puedo conseguir
esa variable también. Entonces así es como se
comunica entre planos para que pueda obtener
el Modo de Juego General. Y lo digo, estoy hablando
específicamente historia de
GM Maple porque a veces en juegos
tienes modo de juego múltiple, por lo que no solo
tienes uno a veces. Esto es de lo que estoy hablando. En cuanto al controlador del jugador, lo que puedes hacer aquí es
decir get player controller. Y se puede ver, se puede conseguir el controlador del jugador,
mismo principio. Entonces se puede ver, ahora este es un controlador de jugador general
y se puede ver costo también, porque estoy
hablando específicamente de esta BC Maple Story. Arces Bc. Se puede ver así es como se comunica
con los planos. Ahora, este buen control de placa
radica para un solo jugador. Te lo
explicaré en un poco. Entonces vamos a eliminar este aquí. Y en lugar de costar, así que ahora ya sabes qué es el costo. En lugar de costar, me gusta
usar interfaces de blueprint. El problema con el casting
es que crea referencias
duras y se
retrasará tu juego, muchas de ellas. Entonces si tienes un
juego grande llevas
trabajando desde hace un año y tienes mucho casting como tú causa
a esto te costaste eso. Y lo estás haciendo
mil veces en un juego, va a
ralentizar tu juego. Ahora no digo
que sea malo usar. Yo lo uso a veces y
deberías usarlo a veces. Pero siempre que puedas usar
una Interfaz de Blueprint, te recomendaría que uses una Interfaz de Blueprint
para que no creas estas referencias duras, lo que ralentizará tu juego. Entonces primero tienes que
pensar en qué estás tratando de referirte? Lo que estamos tratando de hacer
referencia al modo de juego. Por lo que en realidad podemos
usar este evento aquí. De acuerdo, así que para el modo de juego, tenemos que hacer realmente una nueva Interfaz Blueprint
para el modo de juego. Ahora, vamos a las interfaces, hagamos aquí una nueva
Interfaz Blueprint, y luego llamémosla termina el modo de juego. Ahora esta de aquí, se llama a la función que queremos hacer, yo la haré. Entonces puedo mostrarte de
lo que estoy hablando. Creo que es mucho más fácil. Así que llamémoslo
get's Game Mode ref. Entonces estamos tratando de conseguir
la referencia del modo de juego. Y esta es una función, por lo que estamos creando una salida. Aquí. La variable que
desea seleccionar es a que
esté
tratando de referirse. Tratando de hacer referencia
a mi historia de arce GM. Entonces mi modo de juego, y vamos a
llamarlo modo de juego. De acuerdo, así que ahora tengo la
función y vamos a añadir de nuevo. Salió a nuestro plano de
camo, la interfaz a un
juego o plano. Así que vamos a
Configuración de clase y seleccionemos. Salió aquí
y compuso Save. Y de nuevo, se puede ver la
interfaz apareciendo por aquí. Y como el Modo de Juego. Ahora tenemos que definir
qué es este modo de juego. Y sólo voy a
arrastrar y decir yo mismo, lo que sí significa, sea cual sea el
plano en el que estoy. Ahora mismo, estoy dentro
de la GM Maple Story. Así que ahora sabe el modo g, m, k, o este modo de juego
significa GM Maple Story. Entonces esto es lo que significa yo. Entonces yo solo significa qué, en
qué Clase Blueprint
estoy ahora mismo. Vale, ahora que
hemos creado esto, ahora
podemos volver
al controlador. Y en lugar de hacer casting, ahora
podemos llamar a esta función aquí llamada Get Game Mode rough. Así que arrastremos desde aquí
y digamos Get Game Mode ref. Y como funciones cuando
dice mensaje, esto significa que proviene de una Interfaz de Blueprint y
esta es la correcta. Por lo que siempre ve si dice
mensaje antes de seleccionarlo, si viene de una Interfaz de
Blueprint. Entonces seleccionándolo aquí. el modo de juego ahora y podemos hacer lo que queramos
igual que antes, por
ejemplo, llamando a esta variable hola
aleatoria. Por eso saludando, ya puedes
ver que funciona también. Así que solo para explicarlo rápidamente, lo que pasa es que obtienes
el modo general Okay, y luego dices
obtener el modo de juego rref. Y esta es la función
que creamos aquí. Y sabe cuál
es el Modo de Juego porque dentro de aquí, configuramos la variable Game Mode
como la autoreferencia, lo
que significa que la conoce. Historia de Arce Gm. Entonces esta es GM Maple
Story que estamos utilizando. Muy bien, entonces ese es el
modo de juego ref que ahora queremos usar. En realidad eliminemos esta
variable antes de que me olvide. Llamemos a este llamado
Solicitudes desovar jugador. Por lo que aquí, solicita reproductor de
desove. Y tengo que definir a mi jugador. Y no quiero hacer eso todavía. Quiero definir a mi jugador por aquí porque cuando
haga clic en Tsarina, mi jugador va
a ser Tsarina. Y cuando hago clic en el botón, Luke, quiero definir
mi mirada de personajes. Así que déjame simplemente arrastrar
esto y continuar aquí. Y en cuanto a la ubicación, también
podemos continuar
y arrastrarla aquí. Y entonces se puede
ver por aquí. Selecciona personaje, sólo
voy a seguir enchufándolos ahí. Ahora podemos llamar a este
llamado Select Character. Y aquí es donde quiero
llamar en el Widget Blueprint. Ahora, el Widget Blueprint, tengo que llamar a este
selecto personaje. Por lo que ahora vamos
a practicar de nuevo con nuestra Interfaz Blueprint. Entonces en el Widget Blueprint, se
puede decir consigue personaje
jugador. Ahora, esto es bueno usar en un solo jugador porque se puede ver al jugador y
este índice es 0. Pero tú, como te conectas como jugadores y el juego
en multijugador. El jugador a la conexión
debe ser planeado X1. Y luego el tercer tipo
se conecta al servidor, y está planeado x2
y 3406 y así sucesivamente. Para que a medida que más jugadores
se conecten, tendrán
diferentes índices. Así que realmente no podemos usar
esto en multijugador. Esto es solo para un solo
jugador y multijugador. Utilizamos Get Owning Player. Y si coloca el
ratón sobre él, dice, obtiene el controlador del reproductor
asociado a esta interfaz de usuario. Se va a conseguir este controlador de
jugador, tu controlador de jugador, tú como el jugador que
has conectado, va a conseguir tu controlador de
jugador, que está asociado
con esta interfaz de usuario. Por lo que ahora tenemos el
controlador de jugador, y de nuevo, tenemos que decir obtener el controlador de
jugador ref, y que aún no lo han hecho. Recuerda antes hicimos una interfaz para el controlador
del jugador. Podemos utilizar ese click aquí. Y al igual que antes, vamos a
hacer clic en Agregar función y digamos obtiene controlador de diseño ref. Y ahora podemos sumar una salida. Y al igual que lo que
dije antes, ¿a qué estás tratando de
referenciar? Esto es lo que deberías
tener como la variable que estoy tratando de hacer referencia a
mi controlador de reproductor, PC. Llamamos a la historia de PC Maple aquí y lo llamamos controlador de
jugador. De acuerdo, así que ahora recuerda entrar en el controlador y hay
que definir el controlador
del jugador. Así que al igual que antes, arrastra desde el año y dime yo. Por lo que el controlador del jugador se define como esta PC Maple Story. Ahora lo que podemos
hacer en el widget, podemos conseguir el Owning Player. Entonces ahora tenemos el controlador
del jugador, y ahora tengo que
especificar de qué
controlador de jugador estás
hablando específicamente? Estoy hablando e
hicimos este llamado consigue controlador de
jugador ref ahora aquí. Por lo que ahora tenemos el controlador de jugador y lo que queremos
hacer dentro de aquí, queremos llamar a este eventos select player, select character. Y podemos llamarlo
aquí selecto personaje. Y se puede ver podemos
seleccionar el personaje. Por lo que al hacer click en Tsarina, queremos que el personaje
sea Serena. Cuando hacemos click en Luke, queríamos una mirada placentera. Aquí en lugar de usar el Select Character,
tiene el evento normal, igual que lo que te
dije antes, hagámoslo en realidad en
una, una Interfaz de Blueprint. Entonces volviendo atrás, este es
el controlador del jugador. Entonces yendo al controlador del
jugador, vamos a hacer una nueva función aquí, llámalo selecto carácter. Y hagamos dos
nuevas variables. Uno es el jugador y el otro son
las ubicaciones de los bonos. Entonces voy a eliminar
éste aquí por ahora. Voy a compilar. Vamos al aquí, a la interfaz
y
al Select
Character que acabamos de hacer. Hagamos un actor aquí. Entonces la variable es actor, y es una referencia de clase porque es algo que
vamos a desovar. Entonces una referencia de clase, y vamos a llamarlo jugador. Y el otro es la ubicación de desove
y es un vector. Entonces la ubicación del lapso vectorial, al
igual que esto. Y ahora podemos
terminar como controlador, llámalo diciendo select character. Y es aquí viniendo de
una Interfaz de Blueprint. Y podemos conectarlo juntos. Ahora, ya que tenemos éste, ahora
podemos volver
al Widget Blueprint
aquí y
llamarlo de nuevo selecto carácter. Por lo que muy bueno para practicar. Normalmente no
lo hago directamente dentro del controlador
del jugador o
en la interfaz porque
quiero enseñarte
la diferencia. Así que hagamos éste. Entonces como personaje, esta
es la función aquí. Así como eso. Y seleccionas a
Serena como el personaje. De acuerdo, así que ahora vuelve
con el diseñador. Haga clic en Luke, el botón aquí, retroceda, haga clic
en unclicked. Y como Luke, sólo
voy a copiar pegar todo
este código de
nuevo, copiar pegar. Y voy a ponerlo
a mirar aquí en su lugar. Entonces cuando hacemos clic en bucle,
se va a engendrar mirada. Cuando hacemos click en
serina, eso va a ir y patrocinar arena. Así que pasemos por el código. Entonces cuando haga clic, voy a seleccionar
a mi personaje. Voy a ejecutar esta función. Esta función está al
final, el controlador del jugador. Entonces voy a ejecutar esta
función, este evento aquí, select carácter va
a pasar por el servidor. Los servidores, luego van a
pasar por el modo de juego. Y va a
solicitar un jugador. Y de nuevo, quiero hacer esto en una función Blueprint
Interface, como puedes ver aquí
en el modo de juego, esta es solo una
función normal por ahora. Por lo que podemos ver que lleva
un poco de tiempo crear las funciones de
interfaz, pero muy agradable hacer eso y mantiene tu proyecto
optimizado y limpio. Así solicita reproductor de desove, volvamos a la
función de interfaz de modo de juego o interfaz. Llamémoslo jugador de desove de
solicitud. Así como esto. Y para éste agregamos, Volvamos al modo de juego. Agregamos el controlador del jugador. Agregamos al actor
como el jugador. Agregamos las localizaciones de desove. Así que déjame borrarlo por ahora, compilar save, y volvamos. Sólo los estoy borrando antes de
hacerlos para que no se molesten. Entonces aquí vamos a crear tres variables
diferentes. El uno era el controlador
del jugador, el otro era el jugador. Y el tercero fue
la ubicación de desove. En la ubicación de desova es un vector y el
jugador era actor. Y es la referencia de clase porque queremos
engendrar al jugador. El controlador del jugador
es nuestra PC Maple Story. Ahora esta una solicitud capa de
desove, voy a
llamarla aquí solicitar capa de
desove, Indie Game Mode. Y entonces ahora podemos
reconectarlo así. Entonces el objetivo es el controlador del jugador y
éste en la ubicación. ¿ De acuerdo? Entonces antes
vamos a hacer click sobre Serena, va a
pasar por el modo de juego. Aquí está el
controlador del jugador, lo siento, esta carga eléctrica
va a pasar por el servidor y ahora tenemos que
llamar a la correcta aquí. Si lo elimino, necesitamos llamar
al reproductor de desove de solicitud
porque acabamos de hacerlo. Y voy a seleccionar
este mensaje. Recuerde seleccionar el mensaje cuando se trata de una función de interfaz. También puedes ver este ícono
cuando golpea una función de interfaz. Y luego vuelve a conectar esos. Y ahora hay que definir
cuál es el controlador del jugador. Porque a pesar de que en
el modo de juego has llamado el
control de placa aquí y llama a esta función aquí. Realmente no has definido
lo que es el controlador del jugador. Y volvamos. Ahora. Esto está vacío en este momento. Así que vamos a arrastrar de esto. Recuerda que estamos dentro
del controlador del jugador. Podemos simplemente arrastrar y decir yo mismo. Sólo estamos hablando de controlador
de pantalla aquí. Entonces va a
pasar por este evento. Y luego en el modo de juego, solicite reproductor de desove,
se va a ir. Y lo pasamos por
el modo de juego porque no queremos que
el cliente haga trampa. Estamos revisando todo esto y va de vuelta
al reproductor de desove, al controlador del jugador. Va a engendrar al jugador. Y va a
engendrar a un jugador aquí. Ahora en lugar de pequeño
jugador, de nuevo, podemos convertirlo en una función de
interfaz. Por lo que contiene al jugador como el actor y engendra
la transformación. Yendo a eliminarlo, vaya a la interfaz para el controlador
del reproductor. Sé que hay muchas
cosas sucediendo, pero si sacas esto abajo, intenta ver este video
dos o tres veces, obtendrás una como
serás experta en esto. Así que intenta practicar y
sé que es difícil, pero una vez que veas esto
dos o tres veces, esto se volverá mucho más fácil. Me costó mucho cuando
empecé a hacer todo esto. Así que hagamos el reproductor de desove. Y teníamos, ahora casi lo olvidé, teníamos al jugador como actor y también teníamos la transformación de
desova. Entonces esto fue una transformación y
el jugador era actor, y fue una referencia de clase. De acuerdo, así que volvamos al controlador
del jugador y seis capa de enlace de
eventos de capa de desova. Y ahora podemos conectarlo aquí. Conecto dosis y
conecto esto aquí. Y recuerda que esto
viene del Modo de Juego. Por lo que hay que cambiarlo también en los modos de juego,
probablemente va a bicho. Y recuerda, también es de
las funciones de interfaz. Entonces necesitamos esto,
este ícono de aquí arriba. Entonces déjame
borrarlo y decir desova. En realidad, déjame arrastrar desde la capa de
desove del controlador del jugador. Ahora puedo hacer clic en este mensaje de
un reproductor de desove. Y vamos a conectarlos de
nuevo aquí, así así. Entonces vamos a
engendrar al jugador. Y vamos a volver al controlador
del jugador y
va a engendrar al jugador. De acuerdo, entonces cuando engendramos a un jugador, tenemos que hacer una última cosa. Tenemos que usar algo
llamado proceso porque has
engendrado al jugador, pero no le has dicho al
motor que quieres
controlar a este jugador y esto
es lo que llamamos poseer. Así que hagamos referencia
a la base del jugador. Esto es lo que necesitamos, porque necesitamos hacer referencia
a un actor. ¿ Qué intentas controlar? Y estamos
tratando de controlar esto,
este actor engendrado que ahora es una base de jugadores porque
ahora lo hemos engendrado. Aquí. Tenemos ahora la
referencia a la base del jugador. Y creo que no hemos
hecho una interfaz para ello. En realidad tenemos
una base de jugadores. Vayamos dentro de aquí. Y
hagamos uno nuevo de nuevo. Digamos que consigue el rep de capa. Entonces estamos obteniendo la referencia
del jugador igual que lo que hicimos con el
controlador de jugador y el modo de juego. Y estamos tratando de hacer
referencia a la base del jugador bp. Aquí, llamémoslo capa. Y de nuevo, recuerda
volver a la base del jugador, volver al jugador, base del jugador. Y dentro de aquí, encontraremos el Get Player ref. Al igual que antes,
¿qué es el jugador? El jugador es auto. Entonces, sea cual sea el plano en el que estemos. Ahora, lo que estamos tratando de hacer es aquí en el controlador
del jugador. Por lo que necesitamos hacer referencia
a la base del jugador. Así consigue capa REF. Y esto es porque ahora
este es el jugador, este es el actor,
pero hay que
definir esto ya que este
es el jugador. Y como jugador, quiero poseer
esto responden jugadores. Por lo que hay que hacer esto en Blueprint para que pueda
decirle al motor. Sí, engendré al actor, pero en realidad quiero
controlar también a este actor. De acuerdo, así que ahora hemos
hecho todo esto. Entonces mucho código en este video, me disculpo por
hacerlo demasiado largo. Sé que a veces se pone agitado, pero en realidad no podíamos
hacerlo más corto. Y traté de explicar
todo lo que paso. Pero ahora que hacemos clic
en play y hacemos
clic en el botón,
en realidad estás desove. Pero esta interfaz de usuario sigue
quedando en la pantalla. Y pasemos
a la siguiente lección donde eliminamos esta interfaz de usuario.
39. Eliminar la interfaz de usuario del Viewport: Ahora que hemos terminado
nuestra selección de personajes, sigamos adelante y eliminemos
la interfaz de usuario de selección de personajes. Por lo que cuando hago clic en
el botón ahora
se puede ver la interfaz de usuario
sigue quedando aquí arriba. Entonces vamos a quitar eso primero. Pasemos a la interfaz de usuario y
el Blueprint Widget aquí. Entonces cuando hago click en Serena, cuando selecciono mi personaje, quiero eliminar la interfaz de usuario. Y esto es muy
fácil de hacer porque ahora lo hemos configurado todo. Puedo tomar este controlador de
jugador, lo que en última instancia estoy
tratando de hacer. Recuerda, agregamos
el widget aquí. Agregamos widget inicializado. Agregamos el widget de
selección de caracteres. En lugar de agregar dos viewports, hay algo
llamado eliminado de los padres y esto es
lo que estoy tratando de hacer. Entonces necesito obtener una
referencia para esta variable dentro
del Blueprint Widget. Por lo que ya tenemos
éste y tenemos el control de capa get
nuestra referencia. Por lo que ya tenemos la referencia
del controlador del jugador, por lo que podemos
llamar fácilmente a esta variable. Tenemos acceso a
este anteproyecto. Ahora, si me arrastro
de esto y digo WB, y se puede ver que
tenemos esta variable que teníamos por aquí, consigue la selección de caracteres WB. Lo único que tengo que hacer
es decir quitar de los padres. Así es como eliminas la
interfaz de usuario de la vista. Vídeo tan muy fácil, muy corto. Voy a copiar pegue
esto para Luke también. Así que copia pega aquí abajo. Y conectémoslo
juntos así. Entonces ahora estamos moviendo a Dui. Veamos qué pasa. Si hago clic en Jugar ahora, selecciono el personaje. Se puede ver que
en realidad estoy desove. Realmente no hemos fijado
un punto de desove todavía. Y si abro mi
otra pantalla aquí, el cliente, y si hago clic
en bucle por ejemplo, se
puede ver también desove como Luke y me he engendrado
como Tsarina por aquí. Ahora, la ubicación
para, como se puede ver, los pies están molestos y esto
es porque aún no hemos establecido una ubicación de desove. Y también se puede ver que engendramos
como el personaje por aquí. Y esto es porque ahora
tenemos que volver a ir, te lo dije antes, en la configuración del proyecto y en los mapas y modos
y el modo de juego. Ahora que tenemos una pantalla de selección de
caracteres, podemos eliminar esta clase de punto
predeterminada. No queremos desovar
como ningún personaje. Solo queremos seleccionar Ninguno. Y seleccionamos nuestro propio personaje de la pantalla de
selección de personajes. Por lo que no queremos engendrar
con un personaje prefabricado. Vamos a cerrarlo
y voy a
guardar todo para asegurarme de que eso esté funcionando. Y voy a
la configuración mundial y solo asegurándome en la configuración mundial que The Game Mode tampoco
diga ninguno por aquí. Ahora cuando hago clic en jugar y
desovar como look por ejemplo, se
puede ver que no tenemos
un personaje por aquí, pero porque no estamos
desovando ahí por defecto, ahora esto está funcionando. Y lo siguiente que queremos hacer es crear una ubicación de desove, porque ahora realmente no
tenemos una ubicación de desova. Sólo estamos
desovando de la nada aquí. Por lo que queremos sumar
una ubicación de desova, y esto es lo que
haremos en la próxima lección.
40. Crea la locación en el Spawn: Entonces para esta
ubicación y queremos
engendrar al jugador en
el inicio del jugador. Entonces antes de que funcionara, porque hemos establecido esta cláusula ON predeterminada a
uno de los caracteres. Pero ahora mismo cuando
engendras un jugador en la interfaz de usuario aquí en los planos
del widget. Si vuelves a ir al
gráfico, como ves aquí, cuando
engendramos al jugador, los engendramos a ceros, ceros 0. Y es por eso que
están respondiendo aquí. A la parte superior izquierda. Tenemos que definir para desovar
aquí en el inicio del jugador. Y quiero crear
puntos de desove en el modo de juego, porque recuerda que el modo de juego
solo se ejecuta en el servidor para que el controlador del jugador engañe si
hay algo dentro de aquí. Este es el
propósito completo del multijugador. Estamos tratando de
dejar de declinar de hacer trampa aquí en el lugar de
inicio. Entonces cuando empezamos a
jugar el juego, quiero definir este último
punto como mis puntos de desove. Podemos decir que consigues
actor de clase. Y lo que este conseguir
actor de clase
es, te permite obtener lo que ya
se
engendra dentro del nivel. Entonces muy, muy
importante recordar lo que ya se
engendra dentro del nivel. Este inicio de jugador ya está engendrado y podemos
intentar buscarlo. Así que consigue actor de clase, podemos conseguir lo que ya está engendrado y se puede
buscar el jugador empieza. Y puedes ver aquí, el jugador empieza, puedes seleccionarlo aquí. Por lo que va a seleccionar
un jugador
empieza, va a ser
mucho más difícil. Así que imagina si tuviéramos estadísticas de
múltiples jugadores, entonces tenías que definir
cuál estás tratando de conseguir, porque en este momento solo es
conseguir una de una en forma aleatoria. Pero esto está bien por ahora, para este propósito, sólo nos estamos
desplazando aquí. Sólo tenemos un punto
punto ahora mismo. Entonces vamos a compilar y ahorrar. Por lo que a medida que este jugador empiece, voy a conseguir la
ubicación de los actores a la ubicación. Y entonces voy a
hacer esto en una variable, promover a una variable y
llamarlo ubicación de desove jugador. De acuerdo, entonces ahora
tenemos esta variable, ubicación de desove del
jugador
dentro del modo de juego. Por lo que ahora tenemos
esta ubicación. Ahora podemos usarlo
dentro del jugador. Entonces dentro de la base del jugador, dentro del gráfico de eventos aquí. Por lo que ahora podemos engendrar al jugador en esa ubicación que
creamos en el modo de juego. Entonces cuando engendramos al
jugador arriba en la parte superior aquí, antes de hacer nada,
digamos sets. En realidad, hagamos
una variable personalizada. Llamémoslo establecer ubicación de desove del
jugador. Entonces vamos a establecer
esta ubicación de enlace dentro del jugador aquí. Y quiero ejecutar esto a
través del servidor. Entonces no es hacer trampa. Y diciendo que los servidores establecen deslumbramiento, engendran ubicación y
lo ejecutan a través del servidor, se ejecuta en servidor, confiable. Y lo que estamos tratando de
hacer es que estamos tratando de decir, como tratamos de usar esta
llamada ubicación de actor set. Esta es la función definitiva
que estamos tratando de usar, establecer la ubicación de la actriz. Recuerda, tienes que hacer esto
dentro de una costilla. Notificar. Porque recuerda
igual que lo que
dijimos antes en la función
unwrap, esto se actualizará para
todos los clientes porque momento estás ejecutando
esto a través del servidor. Entonces lo que estamos tratando de hacer aquí, así que hagámoslo
y tal vez sea mucho más claro si lo hacemos
primero por aquí, lo que estamos tratando de hacer
es que estamos tratando de conseguir esta última ubicación
del juego modo. Así que al igual que lo que dije
antes, consigue el Modo de Juego. Y entonces se puede decir
obtiene gráfico de quimio, que creamos antes. Y ahora como modo de juego, puedes tomar esta
llamada última ubicación ósea. Ahora tenemos esta
variable dentro de aquí. En realidad vamos a hacer clic derecho y promovido a una nueva
variable dentro de aquí. Y sólo voy
a llamarlo lo
mismo , ubicación de desove jugador. Pero esta vez, ya que
estoy en el servidor, vamos a replicarlo ahora a
los clientes porque
en realidad vamos a ejecutar esto aquí
y puedo decirte por qué. Por lo que el jugador del servidor establece ubicación
plasmon. Y hagamos el juego de inicio. Y cuando empiezo a jugar el
juego y el Begin Play, correrá cada vez que
engendréis al personaje. Así que cuando hago clic en el juego, la jugada inicial para el
personaje aún no ha jugado. Pero, ¿y si hago
clic en el jugador? Ahora la jugada inicial
va a jugar. Entonces cada vez que engendro a mi
personaje, esto se lanzará. Entonces para la jugada de inicio, cada vez que
engendré
al personaje, inmediatamente quiero establecer
la ubicación del jugador. Así establece la ubicación de la capa, ubicación de
desove,
en realidad no ubicación. Por lo que el jugador engendran ubicación. Y hagamos de éste también
una Interfaz de Blueprint. Por lo que establecer ubicación de desove jugador. Eliminemos éste aquí de la base del reproductor y
vayamos a la base del reproductor de interfaz. Hagamos una nueva función llamada set player spawn location. Volvamos a la base del
jugador y digamos Establecer capas ubicaciones de enlace. Entonces llamemos a ese evento. Y conectado aquí. Cuando comencé a jugar el juego, llamaré a este
evento por aquí. Entonces establece la ubicación de desove del jugador y luego va
a pasar por el servidor y
a través del servidor. Se va a conseguir
los modos de juego. Los modos de juego engendran
ubicación aquí. Y yo voy a poner
la variable aquí. Pero recuerda, estás ejecutando
esto a través del servidor. Entonces el cliente no tiene
oportunidad de saber cuál es
esta variable porque esto solo
se está ejecutando en el servidor. Por lo que sólo el servidor se puede ver aquí arriba soy el servidor ahora. Sólo el servidor sabe
lo que está pasando en este momento, el cliente no puede ver
la ubicación de desove. Y al igual que lo
que te dije antes con multijugador, tienes que replicar esta
variable de nuevo al cliente. Entonces, cuando el servidor ha
terminado de hacer la lógica, la lógica tiene que ser replicada de
nuevo al cliente. Por lo que los datos tienen que
volver a los clientes. Y al igual que lo que
hicimos con el estado de ánimo, lo hicimos en función de rampa. Podemos hacer click en esta variable
y replicarla de nuevo a los clientes con el rep notifique. Por lo que vamos a notificar a
todos los clientes. Y de nuevo,
te lo dije antes de usar el rep notificar cada vez que
tengamos cambios visuales, y es un cambio visual, estamos respondiendo al personaje, estamos moviendo al personaje de esta punto donde
respondan al personaje. Entonces en este punto de aquí,
por lo que es un cambio visual. Por lo que hay
que establecer ese cambio visual para que todos
los clientes puedan verlo. Voy a hacer un aviso de costilla, para que todos los clientes puedan verlo. Y lo que queremos
hacer aquí y las letras on-rampa
enlace ubicación. Y en realidad sólo por mi OCD, veo que hay
espacios entre aquí. Sólo voy a
borrarlo de nuevo. Quiero cambiarlo
antes de hacer nada. Voy a quitar esos espacios
aquí abajo en mi variable. Así. Voy a presionar de nuevo sobre la retina osificar,
así como eso. Ahora aquí en la función desenvolver, tomemos ahora en realidad estamos dentro
del personaje ya, por lo que sólo podemos decir
establecer ubicación actor. Esto es lo que queremos hacer. Por lo que la ubicación de la actriz
y la ubicación es, queremos configurarla a
esta ubicación actualizada, por lo que este jugador engendra ubicación. Así que vamos a ir por aquí
a la función desenvolver. Arrastra esta ubicación de plasmón. Acabo de enchufarlo en
la nueva ubicación. Por lo que esta es la nueva ubicación a la que
queremos poner al actor. Ahora, todos los clientes
podrán ver que el personaje está cambiando de
posición a esta nueva ubicación. Por lo que ahora vamos a hacer click
en Play y ver qué pasa si hemos
estropeado algo. Entonces haciendo clic en jugar aquí, y se puede ver que ahora estoy desoviendo aquí abajo,
por lo que esto está funcionando. Y si vuelvo a los labios de
Luke a mirar, así que estos son los clientes. Hagamos buscar por ejemplo. Ya se puede ver esto en realidad desove correctamente
y puedo jugar como que puedan jugar
juntos siempre bueno para probar y ver si está
bugged no lo son. Antes de continuar. Se puede ver que esto está funcionando,
respondiendo correctamente. Así que sólo para pasar por
esto muy rápido porque a veces me preocupa que
esto pueda ser confuso. Entonces empecemos aquí en la interfaz de usuario. Aquí hacemos click en
Serena, por ejemplo. Permítanme arrastrar a los
más cerca el uno del otro. Por lo que aquí hacemos click en
serena para apadrinar arena. Se va a ir al controlador
del jugador y
seleccionar al personaje. Por lo que va a ejecutar
este evento aquí. Y también va a eliminar la pantalla de selección de personajes. Entonces va a este
selecto personaje al controlador del jugador. Así que vayamos al control
de la placa y
veamos qué está pasando. En el controlador del jugador,
que está aquí. Se está ejecutando este
Select Character Event ahí select character está
pasando por el servidor, y luego el servidor
está llamando a este evento aquí en el modo de juego porque
queríamos evitar engañando, queremos comprobar si
se nos permite engendrar
al personaje. Pasando por él de nuevo
modo, solicita jugador bond. Está pasando por
el modo de juego. Y luego nos va a arrojar nuevo al controlador del jugador. Y en el controlador del jugador, vamos a
engendrar al jugador. Y también vamos a controlar
al jugador. Siempre que engendras al jugador, se ejecuta este lugar de inicio. Así que cada vez que el
jugador acaba de desovar, se va a establecer la ubicación de desove del
jugador. Está ejecutando este evento aquí, y este evento está
pasando por el servidor. Nuevamente, estamos impidiendo que
declinó hacer trampa. El servidor. Necesita comprobar si lo
que estás haciendo es correcto. Para que puedas ver el
método aquí es donde todo lo que siempre estamos tratando de establecer
variables a través del servidor. Así que sólo voy a saltar a la
derecha en el servidor. Y luego servidor sin fin, estoy haciendo toda
esa lógica de codificación. Servidor. Se va a establecer
la ubicación del lugar. En realidad, se va a llegar a la ubicación del jugador
desde el Modo de Juego, que aquí hicimos. Entonces conseguimos que esta obra de la clase de actor empieza y conseguimos
la ubicación de acceso y lo hicimos en una variable. Por lo que ahora sabemos la ubicación
específica para este jugador empieza aquí. Y ahora tenemos
eso, esa ubicación para este punto de desove. Y luego lo
convertimos en una nueva variable dentro de la base del jugador y llamamos a la ubicación de
desove del jugador. Ahora lo replicó
en un rip notify, que luego te lleva a la función unwrap porque
cada vez que cambia el valor o una función de
notificación de rep es una variable de notificación de naufragio. Se va a ejecutar la función de notificación de
rep. Por lo que ahora se puede ver
configuramos esta variable. Entonces automáticamente
vamos a ejecutar esta función unwrap. Y lo único que está
desenvolviendo la función
es establecer la ubicación de nuestros actores. Nuevamente, estamos usando un rep notifique porque esto es
lo que hacemos en multijugador. Siempre que tengas un cambio
visual y cambiar la ubicación
de un jugador desde este punto a este punto
es un cambio visual. Todos los clientes pueden ver el cambio visual haciendo esto, igual que lo que hicimos
con el estado del movimiento. Por lo que dijimos los flip books. Estos son también cambios
visuales. Así que cambiando flip books para que el jugador pueda ver ese libro flip book
cambiado. Ese es un cambio visual también. Por lo que espero que esto fuera claro. Nuevamente, si algo
es confuso y necesitas algo que te
aclaren mucho más, eres bienvenido a unirte a
mi servidor de Discord, y estoy más que
feliz de ayudarte. Así que continuemos desde aquí. Vamos a salvar todo. Permítanme cerrar esto y pasemos a
la siguiente lección.
41. Cómo crear el actor de la cámara: Para que como se puede ver
aquí en este momento, estoy dentro de Maple Story y la cámara y
Maple Story ahí. No es como la nuestra en este momento se puede ver
cuando me muevo, la cámara está
siguiendo sin problemas. Realmente no está apegado
al personaje. Entonces cuando me estoy mudando por aquí, se
puede ver que me está siguiendo, pero realmente no está
apegado a mí. Por lo que se mueve como este
suave movimiento. Entonces esto es lo que estamos
tratando de lograr. Así que de vuelta aquí en nuestro juego, en lugar de tener la cámara adjunta aquí y
la base del jugador. Por lo que actualmente tenemos esta
cámara adjunta al jugador. Tenemos que hacer unas
cámaras separadas para que podamos seguir al jugador sin problemas. Ahora, claro, puedes
mantener la cámara así si
este es el
lugar que quieres, pero estoy tratando de
replicar Maple Story
tanto como pueda para que podamos
practicar desde eso también. Entonces empecemos creando
el actor de la cámara. Entonces, en lugar de tener
la cámara atada, hagámosla en un
plano en su lugar. Entonces haz clic derecho, haz
una clase de blueprint. Y hagamos sólo un actor. Y llamémosla cámara BP. De acuerdo, así que
pinchando aquí, cámara VB. Volvamos a subir aquí
y sumar las cámaras. Entonces primero, al igual que antes, agreguemos un resorte a esos. Por lo que este es el titular
de la cámara. Y luego vamos a
sumar la cámara. Así que al igual que antes,
nada nuevo. Haga clic en el
brazo de resorte. Voy a rotarlo menos 90 grados, igual que antes,
Compile y Save. Y voy a quitar este llamado Remoto do test de
colisión. Voy a hacer clic en la
cámara y cambiarla a una vista ortográfica y
establecer el ancho en 1304. Y esto no es
realmente algo nuevo. Esto es lo que también habíamos
hecho aquí en nuestra cámara. Entonces estos son sólo
los mismos ajustes con los que estoy tratando de ir. De acuerdo, entonces ahora tenemos la
cámara y voy a ir a mi base de reproductores y voy
a eliminar esta cámara ahora. Entonces ahora que hemos
creado una cámara, podemos engendrarla en
la siguiente lección.
42. Cómo hacer un balancín de la cámara: Entonces lo que estamos
tratando de hacer es que ahora estamos tratando de engendrar el ecto de
la cámara. Y el objetivo es desovar en la cámara cada vez que
un nuevo jugador se une. Entonces hagamos la
lógica de desove dentro de los jugadores. Entonces cada vez que el jugador
se une al nivel, lo harán, habrá una cámara
desove para que pueda seguir a ese jugador
igual que lo que teníamos antes. Así que aquí de nuevo, más en
el lugar de inicio, así que aquí es cuando nuestro
jugador va a desovar. Aquí vamos
a decir engendrar actor. Por lo que muy bueno recordar
todas estas herramientas. actor de desove se usa cada vez
que engendras algo. Al igual que en
el controlador del jugador donde
engendramos al jugador. Puedes usar de
nuevo a este actor óseo para engendrar la cámara. Entonces digamos engendrar
actor de clase. Y anteriormente
te dije que tenemos que
pasar por el modo de juego para engendrar algo así que
evitamos hacer trampa. Esto está bien ahora mismo
para que esta cámara lo
haga directamente desde
el cliente también. Porque esta cámara solo
está basada en el jugador. No es algo global, como agregar jugadores
al nivel. Sólo estamos agregando una cámara para que el jugador sea
seguido alrededor. Engendrar aquí a un actor. Y tenemos que elegir
la cámara y la
llamamos BB, cámara BP. Así que sólo busca cámara. Y esta cámara BP aquí. Ahora tenemos que seleccionar la transformación
spline. Y voy a conducir
desde aquí y haga click en Make transform, así así. Y ahora tenemos que definir en qué ubicación queremos
engendrar esa cámara. Y sólo quiero engendrarlo
en la ubicación del jugador. Entonces ya estamos
dentro del jugador. Por lo que sólo podemos decir
conseguir ubicación de actor. Y el objetivo es
auto porque este es el personaje que
actualmente estamos controlando. Entonces estamos consiguiendo ese
personaje engendrado y sólo
vamos a esa ubicación
de este personaje de enlace. Voy a mover esto
un poco aquí. El giro es éste
y la escala es ésta. Eso realmente no
importa ahora mismo. Y en cuanto al desove, quiero hacer click aquí, y hagamos click en
éste diciendo tratar ajustar la ubicación
pero siempre desova. Esto solo asegura que pesar de que estemos
chocando con algunos, algo, en algún momento, simplemente
estamos desovando
la cámara de todos modos. Y en realidad creo que
tenemos que hacer eso en el control de placa también. Aquí, si todavía lo
tienes por defecto para el jugador, solo recuerda configurarlo para intentar ajustar la ubicación
pero siempre engendrar. Eso nos impedirá que el jugador no pueda
desovar en algún momento, pero estamos tratando de ajustar la ubicación pero aún
desova al jugador. Esta colisión será
un problema como predeterminado, como este cada vez que
tengamos enemigos, porque habrá enemigos
y estarás chocando. Por lo que siempre enlace a pesar de
que tenemos alguna colisión
intentó ajustar la ubicación. De acuerdo, volvamos
a la cámara aquí. Por lo que ahora hemos
engendrado la cámara. Ahora puedes ver aquí, pesar de que hayamos
generado la cámara y voy a hacer click en play. Y también recuerda quitar la cámara por aquí si no lo has hecho
en la lección anterior. Entonces quitando la cámara, desove una nueva cámara. Tratemos de hacer clic en Jugar ahora. Y ahora se puede ver aquí que pesar de que hemos
engendrado la cámara, todavía
estamos embarcados
aquí en la vista. Y esto se debe a que a
pesar de que estás desove una cámara, tienes que decirle al
motor que quieres esa nueva cámara
como tu nueva vista. Así que si se arrastra de esto
y dices Establecer objetivo de vista, puedes ver, realmente no
puedes ver nada a pesar de que lo
estás buscando. Pero si quitas el
contexto sensible, puedes ver que éste es el
que estamos tratando de usar. Establece tu objetivo con Blend. ¿ Y por qué está sucediendo esto? ¿ Por qué no
aparece aquí? Se puede ver si sostiene el
ratón sobre él. Dice que el objetivo
es un controlador de jugador. Sensible al contexto solo
significa para el contexto aquí, para este bolígrafo desde el que estás
arrastrando. Esto no es realmente un controlador de
jugador. Esta es la cámara. Entonces si estás buscando algo que necesite control de
suministro, no te
voy a mostrar a menos que elimines este
contexto sensible. Pero sin embargo, si obtienes
el controlador del jugador, así que intentemos al revés. Digamos que es controlador. Entonces así es como se obtiene
el controlador del jugador. En multijugador,
estás dentro
del jugador y acabas de
decir get controller. Y dice devuelve
controlador para este actor porque queremos que
nuestro controlador de jugador aquí. Tenemos el controlador
y vamos a usar el
controlador get black REF que
creamos con nuestra
interfaz previamente. Entonces digamos
controlador de jugador ref. Ahora estamos
hablando específicamente de este controlador. Ahora conectemos esto juntos. Y a partir de aquí, como el controlador
del jugador, podemos decir set view target. Se puede ver, lo puedo ver con la edición contextual sensible
y esto es lo que significa. Ahora sabe de lo
que estás hablando porque el objetivo es
el controlador del jugador. Entonces algo de lo que
hay que tener en cuenta. Ahora, vamos a hacer click
en éste aquí dice Ver objetivo con mezcla. Ahora necesita un nuevo objetivo de vista. Y la nueva vista Chocolate
es solo esta cámara. Sólo para hacer todo como tú puedes tomar esto y
conectarte aquí, eso no es problema.
Esto funcionará. Pero a veces me gusta organizar las cosas y me gustaría
convertirlas en variables. Entonces voy a
hacer clic derecho aquí y promocionar a variable y
llamarla cámara negra. Y en realidad ya
lo creé a partir de antes
estaba probando algo. Así que déjame simplemente
borrar el anterior, compilar y
déjame hacerlo de nuevo. Cámara de capa. De acuerdo, así que ahora déjame conectarlo. Y ahora como esta variable, simplemente
puedes saber
que tienes la variable. Simplemente puedes
hacer clic y arrastrar esta variable y
conectada así. Entonces puedes
hacerlo así o puedes hacerlo así, que ambos funcionen. Esa es la forma correcta. Simplemente me gusta
a veces simplemente hacerlo por separado así para
hacer todo más limpio. Nuevamente, está bien establecer
esta variable a pesar de que
estamos corriendo desde el cliente, así que no nos estamos ejecutando en el servidor,
que ya te dije antes. Tenemos que establecer
variables en servidor. Estoy configurando esta variable
específica en el cliente porque esta
es del lado del cliente ella, la cámara que
estará siguiendo alrededor del personaje sólo va
a ser vista por ese personaje. Todos los demás personajes, todos los demás clientes realmente
no se preocupan por el personaje del jugador o
la cámara del jugador. Más bien. La cámara del jugador es
algo específicamente para ti y a todos los demás jugadores realmente
no les importa. Al igual que la interfaz de usuario,
la interfaz de usuario, tu interfaz de usuario, a otros
jugadores no les importa. Tienen sus propias interfaces. De acuerdo, así que tenemos esta cámara. Ahora hemos establecido el objetivo de
vista con blend. Y voy a organizar
esto un poco mejor, así antes de
que se ponga demasiado desordenado. Entonces algo como esto
aquí y voy a acercar esto así. De acuerdo, Así que hagamos
clic ahora en Compile, Save, y haga clic en jugar
y seleccione un personaje. Se puede ver a pesar de que
tenemos el código, sé que tenemos el
código correctamente, pero se puede ver que
todavía está en mal estado. ¿ Y por qué es eso? Esto se debe
a que a veces se
necesita, se puede ver aquí dice
error o a veces toma un segundo para
que un personaje engendra en multijugador, hay un pequeño, pequeño retraso. Y este código,
todo este código aquí, se ejecuta tan rápido, es una locura. Por lo que hay que dar tiempo, a veces para que el
personaje engendra. Entonces aquí estamos configurando los jugadores engendraron ubicación
cada vez que los bonos del jugador, voy a poner un nodo de retardo. Entonces intentemos jalar
aquí y decir retraso. Y a veces esto
es de prueba y error. Sé que este código es correcto, así que a veces me confundo. ¿ Por qué esto no funciona? Y podría pensar que hay un pequeño retraso desde que los jugadores desovan hasta realmente
sumar la cámara. Entonces no puede, no puede
encontrar al jugador. Esto es, está
tratando de engendrarlo aquí, pero no puede encontrar el controlador
del jugador porque hay que
darle algo de tiempo aquí. Entonces vamos a retrasar por 0.05. Tan muy, muy pequeño retraso. Si escribes uno, esto
significa que es 1 segundo. Entonces 0.05 segundos. Por lo que muy, muy leve retraso aquí. Demos click en Compile and Save, e intentemos hacer
click en Play now, click en el personaje y podrás ver al
personaje desove. Por lo que el retraso ayudó mucho aquí. Tratemos de engendrar al cliente. Y el cliente
también está desove y sólo para asegurarse de que
se vean. Si hago esto más pequeño. Sí, así que todo está funcionando
y solo tratando de desovar. Ahora nos da un error. Trataré de ver qué es eso. Tratemos de hacer click
en Jugar ahora y salir como servidor
y mirar aquí. Look también puede desovar. De acuerdo, entonces nos llega un
error aquí y
quiero tratar de ver por qué
nos da ese error. De acuerdo, así que a veces
el, el código se ejecuta demasiado rápido aquí, así que en cambio, lo jugamos aquí así que no
tenemos ningún error. Entonces todo está
funcionando perfectamente ahora. Y a veces el código corre
rápido aquí y va a no poder encontrar el control de la vejiga
otra variable está vacía. Entonces aquí lo que
queremos hacer para
asegurarnos de que esto no
va a suceder. Arrastremos ahora desde aquí desde el
controlador del jugador y digamos que es válido. Y puedes seleccionar
este signo de interrogación. Entonces si el
controlador del jugador es válido, podemos seguir adelante y
configurar esta cámara. Y si no es válido,
no hagas nada. que podamos intentar hacer eso aquí, y eso arreglará el error. Por lo que voy a
hacer doble clic en este pin. Entonces no es demasiado confuso. Sólo para organizar las cosas
aquí abajo, algo así. Y tratemos de correr
con ese código en su lugar. Así que vamos a compilar save. Por lo que ahora si este
controlador de jugador es válido, vamos a seguir adelante y
crear la cámara. Si no, no hagamos
nada que le
impida dar esos errores
cuando las variables vacían. Demos clic en compilar. Y ahora vamos a hacer clic en
Crear este personaje. Vamos a crear a Luke. Ver todo está
funcionando sin problemas. Voy a hacer click en
Control o escapar. Se puede ver que no obtenemos errores. Ahora, también muy agradable comprobar
si algo es válido. También puedes hacerlo con variables a veces
cuando lo necesites. Entonces si acabo de tirar de esta
cámara para la ciencia, podemos hacer clic derecho en ella y podemos hacer click en Convertir
para validar, obtener. Esto también funciona. Por lo que en realidad podríamos haber hecho este control de placa líneas a una variable y podemos
verificarla así. Si el controlador del jugador es
válido, puedes hacer algo. Si no es válido,
eso no hace nada.
43. Cómo actualizar la posición de la cámara: Ahora es el momento de actualizar
la posición de las cámaras. Puedes ver aquí cuando
hacemos click en Jugar ahora, podemos ir con el personaje,
podemos movernos, pero la cámara es estática y no está
siguiendo a nuestro personaje, y esto es lo que queremos. Así que volvamos a
la base de jugadores, y hagamos esa
lógica dentro de aquí. Por lo que tengo dos nuevas
herramientas para enseñarte. Se trata de temporizadores y se
trata de una línea de tiempo. Por lo que dos
cosas muy esenciales en Blueprint. Entonces hagamos eso aquí
en el lugar de inicio. Así que cada vez que empezamos a jugar el juego y
engendramos la cámara, y adjuntamos nuestro yo, nuestra visión a esa cámara. Vamos también adelante y actualicemos la vista de la cámara para que siga al
jugador todo el tiempo. Ahora, antes de hacer un temporizador, en realidad
quiero
hacer que un evento marque. Quería mostrarte
esto y antes
te dije que nunca usaras
este evento tick, porque esto corre 60 veces segundo y tu juego no
estará optimizado. Se puede hacer mucho mejor
que usar esto. Voy a usar esto
ahora mismo y lo
cambiaremos con un temporizador. Y esto es lo que te
dije antes. Puedes hacer otras cosas que
usar una garrapata en algún momento. Y lo que quiero decir con eso es
que puedes usar temporizadores para evitar usar textos que ejecuten tu código 60
veces por segundo. Por lo que podemos usar temporizadores
para evitar eso. Pero vamos a usar una garrapata ahora. Y puedo mostrarte
cómo lo
cambiamos más tarde para que
puedas aprender de ella. Entonces lo que estamos
tratando de hacer esencialmente es que estamos tratando de conseguir la cámara de
visualización que tenemos. Esta es la cámara
que engendramos aquí. Estamos tratando de conseguir esta cámara y simplemente
establecer la ubicación de la misma. Entonces esto es lo que
esencialmente estamos tratando de hacer. Estamos tratando de establecer
la ubicación de la misma a la ubicación del jugador. Entonces si lo hacemos muy, muy fácil, sólo podemos
decir conseguir ubicación real. Y la ubicación real es auto, que es este jugador. Entonces la nueva ubicación de esta cámara es la ubicación del
jugador. Entonces va a seguir
al jugador todo el tiempo. Y como esto corre
60 veces por segundo, va
a seguir constantemente al jugador. Ahora, vamos a hacer clic en jugar aquí. Y se puede ver
cuando corro por ahí, ahora estamos siguiendo al
jugador igual que antes. Entonces esto es esencialmente
lo que estamos tratando de hacer. Y por supuesto esto te va a dar un error porque esencialmente
estás ejecutando este evento antes de haber corrido esto, esta cámara, responde
esta cámara aquí. Y se puede evitar eso de nuevo, igual que lo que dije
en el video anterior, se
puede convertir esto
a una validar que se obtiene. Si es válido, puedes
seguir adelante y actualizar la cámara. ¿ De acuerdo? Entonces esto corre, ni siquiera tome, esto corre 60 veces por segundo y está
siguiendo a nuestro personaje. Pero queremos ese movimiento
suave. No queremos que siga
al personaje igual que antes. Porque
ya lo hicimos antes. Queremos seguir al
personaje sin problemas. Y para seguir
algo sin problemas, puedes usar una línea de tiempo. Porque la línea de tiempo hay que
pensarlo siempre que
quieras pasar de 1 del punto a al punto
B de una manera suave. Entonces, por ejemplo, si estás
abriendo una puerta doble, estás abriendo las puertas
dobles sin problemas, o incluso solo una sola puerta si estás abriendo
la sola puerta. Entonces moviendo la puerta del
punto a al punto B, Eso es movimientos suaves que
puedes hacer con las líneas de tiempo. Por ejemplo, si has
jugado a la historia de Maple, cuando dejas caer objetos o cuando
matas algo y
caen objetos, lo
dejan caer aquí, como el objeto vuela al aire
y cae al suelo. Ese movimiento suave
también es una línea de tiempo. Por lo que cualquier movimiento suave
del punto a al punto B, puedes usar una línea de tiempo. Así que busquemos la línea de tiempo
y aprendamos al respecto. Así que vamos a hacer clic aquí en la línea de tiempo, y vamos a darle un nombre
y
lo voy a llamar layout, posición de la cámara. Y haz doble clic
en esta línea de tiempo. Y dentro de esta línea de tiempo, podemos sumar una nueva pista. Y lo que queremos
agregar es simplemente un flotador. Y puedo mostrarles por qué
estamos agregando un flotador. Flotar de nuevo,
al igual que la variable aquí abajo, a flote es solo un
valor numérico con decimales. Eso es simplemente lo que es. Entonces por ejemplo, 25.2
y eso es un flotador. Así que déjame borrar
este de aquí abajo. Entonces vamos a añadir un flotador. Y vamos a intentarlo. Vamos a llamarlo movimiento alfa. De acuerdo, así que déjame
hacer clic derecho ahora en el gráfico a dos puntos. Y quiero seleccionar esto
primero y en su momento 0, así que a los 0 segundos, quería que fuera 0, así 00. Y la duración de esta
línea de tiempo aquí arriba, quiero que solo seas 1 segundo. Para el segundo, en
el momento 1 segundo, quiero que el valor sea uno. Y puedes hacer click en
estas dos flechas para que se ajuste a la pantalla aquí. Entonces después de 1 segundo, solo
quiero que sea
el valor de uno. De acuerdo, entonces puedo
mostrarte por qué estamos haciendo esto y para qué
podemos usar esto. También quiero que haga
clic en esto, use el último fotograma clave como este. Así que volvamos ahora. Ahora
tenemos esta línea de tiempo y se
puede ver el alfa de movimiento, la carga que creamos ahora se
está mostrando por
aquí y podemos usarla. Y lo que queremos usar
es algo llamado bucle. Entonces el bucle aquí, lo es. Interpolación lineal. Y va del
punto a al punto B. Y necesita un Alfa. Y se puede ver que creamos
este Alpha y lo que significa, va sin problemas del
punto a al punto B. Así que va a
jugar esta línea de tiempo. Sea cual sea el valor que enchufes
aquí del punto a al punto B, va a bucle
desde
este punto hasta este punto sin problemas
porque va a ir así al punto B. Así que podemos imaginar que esto es
punto a, este es el punto B. Y después de 1 segundo, va a ir al punto B. Así movimiento suave, este es el alfa aquí, esto
es lo que está haciendo. Entonces tenemos que especificar
qué es el punto a y
qué es el punto B. punto a es donde esté la
cámara en este momento. Así que consigamos aquí la cámara. Y déjame bajar un poco
esto y decir consigue ubicación de actor. Entonces punto a es donde esté
la cámara en este momento. En realidad necesitamos un bucle para el vector porque
se puede ver que esto es un vector, esto es un flotador, por lo que eso no
es del todo correcto. Entonces vamos a escribir bucle, y vamos a seleccionar
éste llamado vector, vamos a eliminar éste. Entonces aquí, consiga la
ubicación real de la cámara. Así que el punto a es donde esté
la cámara en este momento, punto B está donde esté el
personaje en este momento. Estamos tratando de mover la
cámara para desde donde está ahora mismo a donde esté el
personaje en este momento, que tiene buena ubicación de actores. Y esto va a suceder
sin problemas porque tenemos este alfa yendo del punto a al punto B sin problemas así. De acuerdo, así que déjame borrar
todo esto en realidad, déjame simplemente borrarlo. Permítanme borrar todo esto en realidad sólo lo
hará de nuevo. Ahora, quiero jugar esto
desde el principio aquí. Así que no, no jugar aquí. Quiero colocar desde este
pueblo empezar aquí abajo. Y ahora vamos a conectarlo aquí
arriba en la actualización, queremos simplemente, de nuevo, igual que antes, queremos
configurar la ubicación de la cámara. Por lo que establecer ubicación actor. La nueva ubicación es ésta. Y vamos a
actualizar esto como aquí. Por lo que va a ir
del punto a al punto B sin problemas porque
tenemos esta línea de tiempo agregada. Y a través de esta actualización, se va a actualizar esta ubicación todo el tiempo
de punto a punto B. Así que esto se va
a actualizar 60 veces por segundo porque
estamos usando un tick de evento. Así que hagamos clic en Jugar ahora
y haga clic en Tsarina aquí. Se puede ver cuando me muevo ahora, se está moviendo sin problemas al
igual que en Maple Story. Efecto muy fresco. Vale, entonces ahora esto está funcionando
como se supone que debe. Impresionante. Entonces esto fue fácil. Y se puede ver,
por supuesto que estamos recibiendo errores porque
esto está trabajando en toma y podríamos haber
evitado esto de nuevo, haciendo que este sea nodo válido. Pero no hagamos eso. En realidad quiero
mostrarte cómo no
podemos usar el evento enfermo porque esto ahora se está
ejecutando 60 veces por segundo y puedes
optimizar tu código. No me gusta cuando
veo esto en mi proyecto. Así que vamos a mover esto
un poco hacia abajo. Entonces para evitar usar tick, puedes usar algo
llamado temporizadores para que pueda controlar cuánto se
va a ejecutar por segundo. Digamos que establece un temporizador por eventos. De acuerdo, Entonces, ¿qué
significa eso ahora tienes que especificar cuántas veces
vas a correr cada segundo. Por ejemplo, si escribes uno, solo
se va a ejecutar
una vez por segundo. Si escribo 0.5, se va
a ejecutar dos veces por segundo porque va a completar
este evento en 0.5 segundos. Si R es 0.2, se va a correr
por cinco veces por segundo. Así que esencialmente cómo se
calcula esto es solo escribir uno dividido por 0 al
número que has escrito aquí. Y se puede ver que da cinco, significa
que este código se está ejecutando
cinco veces por segundo. Si escribes 0.08, se va a ejecutar 12.5
veces por segundo. Y en cuanto a los eventos, los boletos del evento
circulan alrededor de 0.1516. Entonces esta es la garrapata del evento. Está funcionando en
0.0017, así. Entonces, por ejemplo, puedes optimizar tu código
ejecutándolo así. Entonces solo son diez
veces por segundo en lugar de 60 veces por segundo. Para que puedas ver puedes optimizar
las cosas usando temporizadores. No puedes, puedes optar no correr a 60
veces por segundo. Entonces conectemos esto aquí. Ahora, necesitas un
evento para ejecutarlo. Entonces aquí lo que puedes decir, puedes arrastrar de este evento y tienes que hacer un evento personalizado. Y hagamos este evento, llamémoslo actualiza la posición de
la cámara de capa. Por lo que ahora podemos conectar nuestro código. Permítanme borrar este evento tick. Y permítanme conectar este código por aquí
desde los arranques del jugador. Ahora déjame hacer click en Compile, Save, y haga clic en Play. Y ahora en realidad déjame
hacer click en este bucle, porque si no haces
click en bucle, esto solo jugará una vez. Así que déjame hacer clic en bucle. Y si hago clic en
Play now, mi cámara, está rezagada porque sólo me está siguiendo cinco
veces por segundo. Por lo que sólo está actualizando nuestra
posición cinco veces por segundo porque hemos
escrito 0.2 aquí. Ahora el número que se me
ocurrió es de 0.03. Esto fue así, lo
hizo suave y algo por encima que hará que
en realidad funcione más lento. Si tuviera que tomar esto aquí arriba. Y se puede ver que esto ahora se está
ejecutando 33 veces por segundo. Entonces mucho mejor que correr
a 60 veces por segundo. Entonces cada segundo
lo estás ejecutando 30 veces menos que una garrapata. Así que trata de equilibrar
esto y trata tener un equilibrio entre cómo se ve
tu juego y
tu optimización. Por lo que a veces tal vez quieras
hacerlo 0.04 en su lugar. Y eso hace una gran
diferencia porque si escribo 0.04 aquí, así que si lo tomo aquí arriba, 0104, se
puede ver que va de
33 veces por segundo, corriendo el código, que
sólo 25 veces por segundo. Por lo que sí hace una gran
diferencia ir desde 0320403 fue el mejor
resultado un visualmente también. Entonces no le gusta demasiado. Entonces si compilo y guardo
y solo juego por aquí, puedes ver que funciona muy bien al
igual que el tick del evento. Pero ahora solo lo estamos ejecutando 33 veces por segundo y no
60 veces por segundo. Entonces mucho mejor que antes.
44. Detener el movimiento de la cámara: Muy bien, así que ahora veamos cómo detenemos el movimiento de la cámara. Entonces cuando jugamos el juego
y nos vamos a un lado aquí, quiero detener los movimientos de la
cámara para que no
pasemos por aquí este borde. Por lo que quiero detener la
cámara en algún lugar por aquí. Por lo que nunca vamos al borde. Cuando el jugador camina. De ahora en adelante hasta este punto, la cámara sólo
va a ser detenida y el jugador sólo
va a caminar por ahí. Entonces así es como
es en Maple Story. Entonces veamos cómo
detenemos la cámara. Y esencialmente probé
diferentes métodos y siempre trato de encontrar el mejor porque no
estoy satisfecho, aunque dos de ellos
están funcionando. Traté de encontrar el mejor
si fuera yo haciendo mi juego. ¿ Y cuál sería la
mejor solución para esto? Entonces lo mejor
para esto es que podemos agregar algo llamado
caja de colisión. Uno, el jugador o
la cámara interesa esta caja de colisión y el
evento debe suceder. Entonces para agregar
caja de colisión, en realidad tenemos cambiar este
mapa de teselas en un actor. Entonces hagamos eso
aquí para empezar. Entonces vamos a la carpeta
Blueprints. Podemos simplemente hacerlo
aquí si quieres, o podemos hacer una carpeta. Y siempre podemos
simplemente hacer una carpeta. A lo mejor en algún momento
tienes más mapas, puede mantenerse más organizado. Así mapas de azulejos. Vamos a hacer clic aquí y hagamos una nueva clase de
blueprint. Y si aquí abajo
busca Talmud. Nuevamente, se puede conseguir éste
llamado actor de mapa de azulejo de papel. Así que vamos a seleccionarlo ahora y
llamarlo TM para mapa de teselas. Y déjame
llamarlo camino del dragón. Este era el mapa, como se
llamaba. Ahora, nuestro mapa de teselas es un actor de planos en lugar de solo ser un mapa de teselas por aquí. Por lo tanto, haciendo doble clic en él, despertando
bajo componente render. Y solo
seleccionemos nuestro mapa de azulejos. Y es éste
llamado mapa de teselas, un dragón escribió aquí. Entonces vamos a compilar y ahorrar. Ahora para este mapa de teselas, tenemos que agregar dos cajas de
colisión. Entonces esto es esencialmente
lo que estamos tratando de hacer. Entonces vamos a añadir un nuevo componente. Busquemos colisión. Tenemos esta llamada
la caja de colisión. Y esta colisión, caja de
colisión, se
puede ver aquí
tenemos diferentes eventos. Entonces, ¿qué debería pasar si
comienzas a solapar
esta caja de colisión? Y vamos a
pausar la cámara. Entonces vamos a cubrir el área que
queremos pausar cuando. Así que subamos aquí. Y tenemos extensión de dólares,
extensión aquí. Y el valor es que voy
a poner en un 650 en la x Así que se va a
extender aquí. Y 500 y DY. Y voy a poner
mil y la z Y esto es sólo algunos
números lo pruebo. Simplemente puedes hacerlas más grandes. Esencialmente.
Permítanme en realidad sólo hacer esto 50 tal vez en
el, el movimiento, chasquear y
sólo tratar de ocularlo. A ver si voy
a hacer que mi cámara acelere
un poco más rápido. Así que sólo va a
ocultarlo y
hacerlo igual, así como esto. Así que está viniendo aquí abajo
y está subiendo aquí. Y realmente no
importa porque lo único que
nos interesa es esta área porque el
jugador nunca ha hecho aquí, pero sólo me gusta estar
estructurado así. Entonces, esencialmente,
solo estamos tratando de hacer que estos bichos sean lo suficientemente grandes. Y en realidad creo que tiene
que ser mucho menos que eso. Vamos a probarlo. Entonces es dx, esa es la más interesante
dependiendo
de dónde
se vaya a poner de pie el jugador. Así que hagamos 600
por ahora en la x. Y vamos a copiar pegue esto. Creo que podemos hacer eso, así que vamos a duplicarlo aquí. Y tomemos esta segunda
caja y déjame moverla al otro lado
del mapa.
Así como eso. Así que ahora está del otro lado. De acuerdo, entonces ahora tenemos estas
dos cajas de colisión. Siempre podemos
probarlo y ver si
necesitamos hacerlos
más pequeños o más grandes. Así que vamos a componer Guardar. Entonces ahora lo que podemos hacer es dejarme realmente
cambiarles el nombre primero. Permítanme llamar a esta caja de colisión
izquierda. Así que si pudiera deletrear
así y el otro, caja de colisión derecha. De acuerdo, así que para la izquierda, vamos a hacer clic en él y
vamos a bajar y hacer clic en componente
comenzar a solaparse. Entonces, ¿qué debería pasar cuando
empiezo a solapar
este componente? Permítanme eliminar estos eventos predeterminados
estándar. Por lo tanto escuchar, con lo que solemos
empezar es por solapamientos. Así que cuando nos superponemos
algo aquí, realmente no tenemos un
servidor run-on y
ejecutamos en clientes. Entonces lo que solemos hacer
es que usamos este llamado switch tiene autoridad. De nuevo, te lo dije
antes que el servidor tenga la autoridad del juego. El servidor puede hacer cualquier cosa. Entonces autoridad significa si soy el servidor y remoto significa si soy el cliente,
¿qué debo hacer? De acuerdo, así que solo
asegurándose de que
esto, este componente superpuesto
se ejecute en el servidor. Y por lo general lo que
sucede es siempre
que tengas cajas de colisión por aquí, cada vez que tengas cajas de
colisión, generalmente quieres cambiar tiene autoridad y luego
ejecutarlo en el servidor. Porque de nuevo,
evitas hacer trampa. Sólo nos estamos
asegurando de que en realidad
haya una caja
solapada aquí. Porque si solo lo
ejecutas en el cliente, A veces el cliente puede
hacer logrado donde
ellos, se superponen con esta caja, pesar de que esta caja en realidad
no existe en esta caja. En realidad se superpone. A lo mejor es aquí,
están parados aquí y todavía lo
superponen desde ahí. Trampa. Así que sólo nos estamos asegurando de que nos
topemos en el servidor. Entonces autoridad significa
que soy el servidor, por lo que switch tiene autoridad. Y aquí podemos ejecutar el código. Lo que queremos hacer es que queremos pausar la cámara siempre que el jugador haya interactuado
con esta caja de colisión. Por lo que realmente no tenemos un
evento llamado post camera. Así que hagamos eso en
la base del jugador. Y lo que queremos hacer es
que queremos publicar esta cámara, y aún no la hemos
hecho variable. Así que hagamos eso por el
tiempo que queremos pausar este temporizador es
esencialmente así que no
queremos ejecutar este código de
posición de actualización aquí. Así que vamos a hacer clic derecho
sobre este valor. Promociona tu variable. Y déjame llamarlo actualizaciones
jugador, cámara, posición. Y por lo general me gusta
decir manejar
al final porque es
un mango a la vez. Su mano, reproductor de actualización, mango de posición de la
cámara. Lo que estamos tratando de hacer es hacer un nuevo evento personalizado. Y en lugar de simplemente
hacerlo así,
hagamos eso en
nuestras interfaces Blueprint fueron casi expertos en
Blueprint Interfaces ahora, así que vamos a crearlo aquí
para la base de jugadores. Vamos al jugador, en realidad no aquí y
las interfaces por base, hagamos una llamada. Hagamos que se pausa, pausa, capa, cámara,
compilar y guardar. Así que volvamos a la base de
jugadores y
llamémosle publicar su cámara. Y en realidad necesitaba la cámara de capa de pausa de
eventos. Así evento Pausa cámara
del jugador aquí. Por lo que queremos llamar a este evento. Entonces si vuelvo aquí
al mapa de teselas, ahora, estamos ejecutando este evento de caja de
colisión y queremos llamar al
jugador. El jugador. Podemos llamar a esto mediante el uso de
este otro actor. Otro actor significa
lo que se superpone, esta caja de colisión
se superpone a componentes, la caja de colisión
y el otro actor es lo que se superpone. Entonces estamos caminando dentro de ella. Es el jugador.
Y sólo para asegurarme de que sea el
jugador superponiéndolo, suelo hacer eso solo para
asegurarme de que no cometamos
un error aquí. Normalmente lo hago. Actor ha etiquetado. Por lo que el actor ha etiquetado, se
le puede dar ataque al actor. Así que vamos a darle el tag player. Y lo que eso significa es
aquí en la base del jugador. Si vuelves aquí, y si te vas, creo que está en
los impagos de clase. Por lo que aquí si buscas etiqueta, puedes ver podemos añadir una
etiqueta a esta base de capa. Así que agreguemos una etiqueta y
llamémosla jugador. Entonces cualquier peón a choca
con esta caja de colisión. Así que ahora recuerda, cuando
tenemos al enemigo, el enemigo también está sobre. El enemigo aquí también está sobre. Así que sólo para asegurarse de que no sea el enemigo chocando con él. Y es sólo el jugador. Podemos decir que el actor
ha etiquetado Jugador. Y si eso es cierto. Entonces si el actor tiene
el tag player, que entonces ponemos aquí
y la base del jugador. Por lo que todos los jugadores conectados
tendrán el tag player. Ejecutaremos este código. Entonces si es cierto,
vamos a ejecutar este código. Y lo que queremos
hacer es que queremos
ejecutar esta cámara de capa de pausa. El otro actor
aquí es nuestro jugador. Así que definamos específicamente
qué jugador es. Y luego de nuevo, podemos decir consigue capa REF porque esta es
la que hicimos antes. Y entonces podemos decir capa de
pausa, cámara. Y cuando se selecciona
este mensaje porque es una función de interfaz. De acuerdo, así que volvamos aquí y hagamos algo
con este evento. Y voy a ejecutar
esto en los clientes porque realmente no quieres
ejecutarlo en el servidor. Porque recuerda que esta cámara solo
es específica del cliente. Esta cámara solo se ejecuta para
ese jugador específico. todos los demás jugadores
realmente no les importa tu cámara, no la van a ver. Entonces voy a ejecutarlo en
el cliente, tan personalizado. Y llamémoslo CL para
clientes, capa de pausa, cámara. Vamos a ejecutar este. Si hago clic aquí, vamos a ejecutarlo en poseer
clientes como poco confiables. Recuerda hacer eso. Ahora, lo que queremos hacer es que
queremos conseguir esta variable. Lo que estamos tratando de hacer es decir temporizador de pausa por manejado. Entonces cuando entramos en la
caja, queremos hacer una pausa. Cuando caminamos fuera de la caja, queremos volver a despausar la cámara
o al temporizador, por lo que se actualiza de nuevo. Entonces esto es lo
que estamos tratando de hacer. Entonces en realidad necesitamos
un booleano aquí, porque aquí, cuando nos
superpongamos con la
caja de colisión, vamos a hacer una pausa. Pero sin embargo, si volvemos a hacer click en
el cuadro y
bajamos, tenemos éste llamado
n-componente end solapamiento. Entonces cuando salgamos
de la caja de nuevo, voy a copiar pegue
este código aquí, así. Realmente no tenemos que
hacer eso maduro otra vez. Entonces otros actores
conectados aquí. Ahora los actores también están
conectados aquí. Entonces cada vez que dejamos la caja, queremos despausar. Realmente no, quiero decir, puedes seguir
adelante y hacer un nuevo evento, pero en realidad puedes simplemente
usar este evento para hacer ambas cosas usando un booleano. Así que recuerda a un booleano como
si fuera verdadero o falso. Entonces hagamos aquí un booleano, haciendo clic en éste. Y el booleano
solo debería decir pausa. Y si está en pausa, así que vamos a arrastrar desde aquí
y hacer clic en B o rama. Entonces si es pausa, si esto es cierto, entonces debemos hacer una pausa. Y si no es cierto, debemos despausar así. Por lo que puede hacer ambas cosas
dentro del mismo evento, así así al
usar un booleano. Y obviamente tenemos que
llevar a cabo este evento aquí arriba. Y entonces tenemos que correr
este booleano por aquí. Por lo que necesitamos hacer un booleano y nuestro evento o en nuestra interfaz. Y ahora esto está molestando por alguna razón.
No sé por qué. Vamos a compilar y guardar
y hacerlo de nuevo. A veces eso sucede,
sellar pausa, así. De acuerdo, así que hagamos eso
en la interfaz. Supongamos cámara del jugador, hagamos una nueva entrada, un booleano, y vamos
a llamarlo pausa de nuevo, Compile y Save,
y volvamos. Puedo conectarlos juntos. Y ahora si
vuelves al mapa de teselas, puedes ver que tenemos un booleano. Entonces cuando entramos al solapamiento, queremos hacer una pausa. Entonces estableciendo eso para corregir. Y cuando lo dejes, volvamos a llamar a este evento,
pausar la cámara del jugador. Y queremos despausar. Entonces dejando esto falso. Por lo que ahora debería funcionar.
Siempre que nos vayamos, vamos a tomar esto. Vamos a comprobar si es el jugador quien
realmente está dejando esto. Vamos a establecer este
booleano verdadero o falso. Y dependiendo de
cuál sea el valor, se va a correr aquí. Dependiendo de cuál sea el valor,
se va a pausar o
onPause ese temporizador. Así que vamos en realidad antes de
que pudiera hacer click en Play, vamos a revisar primero
estas casillas de colisión. Entonces la caja de colisión izquierda y
derecha, puedes bajar aquí y
comprobar aquí su colisión. Entonces, ¿con qué chocan? Y sólo para asegurarse de que
todo esté correcto, puede hacer click aquí y se puede ver que se superpone con todo, incluso el pon, se superpone con los estanques para que podamos
hacer eventos de superposición. Entonces eso es yo creo que sí, eso se ve correcto. Eso está bien. Ahora, hemos terminado
con el código, y ahora lo que tenemos que hacer, vamos a seguir adelante y eliminar
este viejo Talmadge. ¿ Y eso borraría? Coloquemos nuestra nueva. Así que vamos al mapa del
azulejo aquí. Y coloquemos la nueva. Y volvamos a colocarlo en 000. Voy a hacer que la
excelencia se acerque aquí. Nuevamente, al igual que lo que te
dije antes, vamos a moverla por diez. Creo que fueron diez. Y sólo para
movernos, tenemos estas cinco
capas, 123456 capas. Y yo voy, tenemos esta segunda capa en mis
ceros, ceros, ceros. Para que lo puedan ver aquí. Está en mis ceros son 0,
pero no lo es, no lo es. La primera capa amarilla es
la segunda capa amarilla. Ahora al 0100
es que se puede ver
tenemos las cajas de colisión. Por lo que ahora vamos a hacer clic en jugar
y desovar como Tsarina. Y déjame caminar a un
costado y se puede ver en realidad
se está deteniendo.
Entonces está funcionando. Ahora si voy a la derecha, en realidad no está
funcionando y eso es porque me olvidé incluso agregarlo. Así que volvamos al mapa de
teselas aquí y vamos, vamos a agregar en realidad
el segundo. Incluso me olvidé de
agregarlo en realidad. Por lo que al hacer clic en el derecho
, pueden solaparse. Haciendo el mismo código que éste. Puedes copiarlo,
pegarlo aquí abajo, conectarlo aquí, conectar aquí
al otro actor,
conectar aquí al otro actor. Y vuelve a hacer clic en el cuadro de la
derecha. Y si lo dejas, así que
si terminas el solapamiento, vas a copiar éste y luego
conectarlo de nuevo aquí. Entonces otro actor o director aquí, y se va a dejar de pausar. De acuerdo, Así que esencialmente,
esencialmente va a trabajar ahora, ojalá. Así que vamos a probarlo de nuevo. Moviéndose hacia la derecha, va a detener la cámara. Se puede ver que
hay un pequeño bicho. Cuando entro a la caja aquí. Va a seguir a
mi personaje por alguna razón antes de que se detenga. Entonces sigue a mi personaje
y luego se detiene. No quiero que haga eso. Esto es algo
que podemos mejorar en la próxima lección
porque en realidad
es, está haciendo una pausa aquí,
pero está actualizada. Está terminando la actualización aquí
en conseguir la ubicación de los actores. Por lo que está siguiendo
un
poco más al actor y cuando termina, entonces
se detiene aquí. Entonces vamos a mejorar
eso en la próxima lección.
45. Cómo mejorar el movimiento de la cámara: En esta lección, vamos a mejorar la cámara y el movimiento. Entonces de lo que hablamos aquí
es cuando voy a la derecha, las cámaras se detienen,
eso está todo bien. El problema es que
sigue al personaje, se pega al personaje
antes de que se detenga así, y luego se detiene por
alguna extraña razón. Y aquí es donde estamos
tratando de mejorar ahora. Entonces aquí está haciendo esta lógica por la buena ubicación del
actor. Entonces a pesar de que estamos
posando el temporizador, está terminando esta
actualización aquí está terminando,
terminando la posición de la cámara
del jugador de línea de tiempo. Y aún está consiguiendo la ubicación de
nuestro jugador y tratando de establecer la
ubicación de la cámara o según eso. Entonces la forma en que podemos arreglar
esto es haciendo una variable temporal para
la buena ubicación del actor para
que la cámara
ya no
consiga la ubicación de nuestros actores cuando estemos aquí al inicio de
nuestra caja de colisión. Entonces vamos a
decirle al temporizador, este fue el último
punto al que debes actualizar y ya no deberías
seguirme más por aquí. De acuerdo, así que de la forma en que hacemos esto, hagamos otro temporizador. Así que vamos, Y por cierto, en realidad
hagamos primero
la función. Por lo que se ve más claro. Entonces voy a hacer una función. Entonces haciendo clic en el plus
aquí arriba y escribiendo f para función. Y luego llamemos a éste, consigue la ubicación actual del jugador. Ahora con éste, lo más
simple que vamos a hacer es básicamente sólo conseguir
la ubicación del jugador. Así que consigue ubicación real. Estoy consiguiendo esta ubicación de
actriz, y sólo voy a
guardarla en una variable. Tan cosa muy simple. Así que haga clic derecho, promueva
a una variable y escriba ubicación de la capa
actual. Así. Esto es, esto es lo único que esta función va a hacer. Entonces restaurando la ubicación
get actor en una variable temporal
que estaremos utilizando. Volvamos al Gráfico
de Eventos. Y aquí vamos a crear
nuestro segundo temporizador. Entonces digamos establecer un temporizador. Y esta vez en lugar de
configurar un temporizador por evento, vamos a establecer el temporizador
por nombre de la función. Entonces esto, podemos hacer esto también. Entonces conectemos esto y se
puede ver cómo funciona esto. Entonces ahora te va
a preguntar ¿cuál es la función que quieres ejecutar? Y es éste. Sólo estoy haciendo clic aquí,
copiando el nombre. Y hay que copiar el
nombre exactamente como es, tanto con mayúsculas, minúsculas, mayúsculas, etcétera. Así que cópielo exactamente como está. Y si alguna vez
cambias el nombre, hay que recordar
cambiarlo aquí también, lo
contrario no funcionará. El tiempo que voy
a establecer aquí es 0.1, por lo que se va a actualizar
diez veces por segundo. Y también voy
a configurarlo en bucear y hacer clic derecho en este temporizador
promovido a una variable, y vamos a llamarlo get's
parents layer location handle. De acuerdo, así que tenemos
esta vez alrededor, ahora mismo, esta vez
por ahora corriendo. Entonces en lugar de una buena ubicación de
actor, utilicemos nuestra ubicación actual
del jugador. Esta es la que
acabamos de hecho, este, ubicación actual
del jugador. Yo estaba mirando. Este se confundió. Esta es la ubicación de desove. Por lo que consigue esta ubicación
actual del jugador. Voy a arrastrar eso
y ponerlo aquí. ¿ De acuerdo? El truco es ahora es siempre que lleguemos a
esta caja de colisión aquí, cada vez que lo
alcancemos, vamos a detener este temporizador. Entonces en lugar de detener
esta actualización aquí, vamos a detener este temporizador. Entonces el truco es, y en realidad déjame eliminar todas
estas líneas de cuadrícula. Me molesta un poco. Entonces baja aquí de nuevo en
renderizado y pinchando aquí. Entonces cuando llegue a esta línea de caja de
colisión, va a detener el temporizador. Y cuando detenga el temporizador
aquí en la base del jugador, ya no va a actualizar esto, obtener la
ubicación actual del jugador. Ya no se actualiza, se va a quedar atascado
aquí al inicio. Entonces este es el truco
para hacer esto. Entonces en lugar de detener este
temporizador aquí en el temporizador de post, eliminemos
éste y vamos a detener éste llamado obtener la ubicación
actual del jugador. Ubicación
ya no se va a actualizar cada vez que lleguemos aquí. Y la cámara va a
sólo parar también ahí. Entonces este es el truco. Vamos a conectar los de aquí. Ahora. Compila y Guardar. Ahora, déjenme hacer click en play and test y ver si
todo es correcto. Entonces si camino hacia un costado, se
puede ver que
ya no está siguiendo y parando sin problemas. Y si salgo de aquí, también
va a
seguir sin problemas. Si voy a la derecha, también
está parando sin problemas. Por lo que estamos deteniendo la ubicación
actual get aquí, que nuestra ubicación actual, estamos deteniendo la actualización
variable por aquí, por lo que piensa que el
jugador todavía está aquí. Esto es lo que
esencialmente está sucediendo. Esa cámara piensa que Player sigue aquí porque
paramos el temporizador. Empezamos de nuevo el temporizador
cuando dejo esta caja. Y de nuevo aquí, detengo el temporizador aquí para
actualizar las variables. Entonces la cámara realmente
piensa que todavía estamos aquí. Se puede ver que sigue
recortando así que tenemos que ajustar el tamaño de la caja de
colisión. Entonces si minimizo esto, vuelve a los mapas de teselas
y ve al cuadro izquierdo. Y ahora vamos a
ajustarlo un poco. Tenemos que hacerlo un
poco más grande. Entonces en la x, probemos 625, tal vez seis, probemos 650
y veamos qué pasa. Por lo que seiscientos cincuenta, seiscientos
cincuenta, da clic en play. Yo cuando camine aquí, se
va a parar aquí. De acuerdo, tal vez podamos agregar
un poco más, pero está parando el aire
para que no haya problema. Sí, creo que esto es bueno. Así que ahora está parando
aquí en los bordes. Ya no estamos viendo ese borde
negro. Entonces ahora eso está fijo. Y caminando aquí. Y lo mismo es para éste. No obstante, todavía podemos
caminar fuera del borde y esto es lo que vamos
a arreglar en la próxima lección. Muy bien, así que antes de terminar esto, volvamos a
la base de jugadores. Necesito estructurar esto
un poco mejor. Así que déjame simplemente empujar esos. Recuerda organizar
tu proyecto siempre porque va a
ser un desastre. Confía en mí. Llevas un par de
meses trabajando y no haces esto, tu proyecto se verá como un desastre y te
arrepentirás en ese momento. Así que sólo trata de poner
todo bien juntos. Estoy tratando de agarrar
estas variables. Entonces poniendo las cosas
muy bien juntas, haz doble clic en este pin para hacer un nodo redirigido como este. Por lo que ahora se ve
bonito y organizado. Y éste, quiero decir, creo que se ve genial. Ahora. También puedes, incluso
podemos empujar esto un
poco más abajo. Hay espacio para
que éste esté todo el camino por aquí. Y éste lo podemos poner justo debajo de aquí
porque pertenecen juntos. Voy a ir por aquí. Esto también está organizado. Y siempre podemos poner un comentario. Entonces por aquí, podemos tomar
esto y decir
actualizaciones, actualiza los movimientos de la cámara
para que siga a un jugador. Puedes intentar escribir
lo que quieras. Así que sólo estoy tratando de pensar
algo fuera de mi cabeza. Incluso puedes cambiar el color del
comentario si quieres, cambiar el tamaño, si quieres. Y para éste estamos configurando los jugadores engendrados ubicación. Entonces permítanme comentar eso también. Digamos buscar las capas, ubicación
inicial de desove.
Así como eso. Así que trata de mantenerse lo más
organizado posible. Incluso puedes salir de datos comunes. Y creo que esto se ve perfecto ahora vamos a
compilar y ahorrar. De acuerdo, así que eso fue todo por ahora. Pasemos a la siguiente
lección y agreguemos los límites.
46. Cómo agregar límites del mapa: Ahora agreguemos los
límites para el mapa para que el jugador no pueda
salir del borde. Esto es muy, muy fácil. Este es un video corto, probablemente aquí en detalle,
mapa camino del dragón. Volvamos aquí. Y al igual que antes, agreguemos dos cajas de
colisión más. Así que agreguemos aquí una
caja de colisión a la izquierda. Y al igual que éste,
voy a hacerlo, esta es la x, la y y z, y la z, voy a
hacer mil de nuevo. Sólo están copiando pega
esto y voy a arrastrarlo de nuevo así. Permítanme reducir un poco la
velocidad de la cámara. Creo que esto es bueno, así que probemos esto. Voy a renombrar esto
y llamarlo rebote izquierdo. Y voy a duplicar
esto y llamarlo límites correctos. Y vamos a arrastrar
éste hacia la derecha. Así, creo. Ok, Lo que queremos
hacer aquí por los que están
en la colisión, así que si haces click en
uno de ellos y baja
a colisión aquí y da click en esta
pequeña flecha aquí. Quiero que haga click en
éste y haga clic en personalizado aquí. Y ahora aquí
puedes cambiar las cosas por los pons para que nuestro
jugador esté sobre, y en lugar de
superponerme, quiero bloquear mi teléfono. No quiero que el punto vaya
más allá de esta caja de colisión. Lo mismo por aquí. Haciendo click aquí, pinchando disfraz y dando click en Bullock el. Pero tratemos de poner eso. Esa es probablemente la
única edición que tuvimos que hacer. Entonces vamos a la derecha y veamos si nos estamos
bloqueando. Estamos en el mar. Ni siquiera podemos ir más allá. Impresionante. Esto está funcionando y
hay que probar esto para ver si el saldo
es lo suficientemente grande. Van al otro lado. Y
ojalá eso funcione también. Y eso funciona también y se
detiene perfectamente así. Entonces así es como agregas límites de
mapa donde
básicamente
estamos bloqueando que el personaje
se caiga de la repisa
con una caja de colisión.
47. Crea los libros de folletos enemigos: Ahora nos vamos a alejar
un poco
del jugador y vamos
a implementar al enemigo. Entonces como lo primero que te he dado aquí en los materiales del
curso. Entonces si vas a los materiales de
costo, a los enemigos, te he proporcionado
estas texturas. Probablemente haya más
texturas en su carpeta. Y de nuevo,
solo les estoy poniendo a medida que paso con el curso. Pero por ahora importante, el cerdo ocioso y se mueve y
el caracol inactivo y se mueven. Así que primero vayamos a
la carpeta Assets. Y dentro de aquí, vamos a hacer
clic derecho y hacer una nueva carpeta y
llamarla enemigos. Dentro de aquí,
voy a hacer una nueva carpeta llamada texturas, que puedas intentar hacerlo
tú mismo si lo deseas. Esto es algo que hemos hecho un par de veces ahora. Y puedes hacer clic y arrastrar esas texturas dentro
de la carpeta de texturas. Seleccione todos ellos, Haga clic con el botón derecho, Aplicar configuración de textura 2D de papel. Por lo que eliminamos el desenfoque. Y empecemos con
este caracol aquí. Entonces tenemos el ocioso, podemos hacer clic derecho y
podemos crear un sprite. Voy a cambiarle el nombre a
S4 sprites y caracol inactivo. Y luego hagamos
eso por la mudanza. Así que haga clic derecho y vamos extraer este precio
porque tenemos múltiplo. Por lo que seleccionando grid hasta aquí y luego escribiendo integran 90 por 90. Entonces ese es el
ancho y la altura de la celda. Esto es lo que hice en Photoshop. Es por eso que sé
cuántos píxeles es. Así que hagamos clic en extraer ahora. Y ahora voy
a hacer clic lejos de la carpeta y en ella otra vez. Entonces ordenan automáticamente
así de 0 a siete. Y ahora quiero que cambies
el nombre de esto. Voy a saltarme esta parte. De acuerdo, así que ahora que los
he renombrado, puedo
seleccionarlos todos y hacer clic derecho, crear un flip book y
llamarlo para FB caracol move. Voy a hacer click en
este caracol aquí y establecer los tiempos son marcos
por segundo a seis. Entonces esa es la velocidad con la
que se mueve. Lo mismo que voy
a hacer con el ídolo aquí. Haga clic con el botón derecho, cree un libro flip, y llamémoslo F sea caracol, inactivo, y haga doble clic en él. El fotogramas por segundo es solo
uno porque es un marco. Y yo voy a tomar tanto
el caracol aquí, éste, el Irlanda, el
movimiento y moverlos a la carpeta de enemigos. Entonces los tenemos aquí fuera
aparte de todo esto. Por lo que voy a hacer
eso también con el cerdo ocioso y el movimiento de cerdo. Y voy a saltarme esta parte. Hice ahora el cerdo ocioso
y cerdo mover flip books. Por lo que ahora voy a hacer click en
el ídolo cerdo aquí y poner los marcos por segundo
a seis, así. Y haz
lo mismo con la mudanza. Establezca los marcos por
segundo a seis. Ahora vamos a salvar todo. Demos clic en esos dos y arrástrelos a
la carpeta de enemigos. Por lo que ahora tenemos los flip
books para estos dos.
48. Cómo preparar los peones enemigos: Para configurar los puntos enemigos. Bajemos a planos. Y vamos a pasar a nuestra
carpeta enemigos que hicimos
camino, muy de vuelta en este curso. Así que recuerda la base enemiga. Hicimos eso haciendo clic derecho
sobre la base del personaje y creamos una clase de
Blueprint infantil. Entonces la base es un hijo
de base de caracteres aquí. Así que aquí para la base enemiga, ahora
vamos a hacer clic derecho y
crear otro niño. Y ahora vamos a
llamar a este caracol VP. Podemos volver a hacer clic derecho en
la base de la imagen, crear un nuevo hijo, y
llamemos a este VP pick. Pasemos a este caracol aquí. Vamos a hacer doble clic en él. Y aquí por el caracol, hacemos click en el sprite. Y aquí en el flip book
fuente, seleccionamos el caracol inactivo. Voy,
voy a buscar ocioso y seleccionar este caracol aquí. Voy a hacer lo
mismo por el cerdo. Haciendo click en el sprite. Y aquí busca ocioso
y selecciona al cerdo inactivo. Por lo que ahora tenemos el cerdo y
los caracoles configurados aquí. Ahora tenemos que
reducir el tamaño de esta cápsula y vamos a tratar de
hacer eso y la base enemiga, por lo que se aplica para ambos. Así que vamos a hacer clic en
la cápsula aquí arriba. Y aquí. Vamos a cambiarlo a
tenemos que hacerlo aquí primero. Por lo que 15 por 15 quizá. Déjame volver al
caracol y ver cómo se ve. Se ve, se ve bien por ahora. Siempre podemos
ajustarlo en el juego. Se puede ver que es un poco
pequeño para el cerdo. Entonces al hacerlo en la base, ya que es la
clase padre de estos dos, automáticamente
aplicará
esto. Pero si necesitas cambios
individuales, solo
puedes hacer click en
esta cápsula de cerdos. No tienes que seguir a los
padres. Aquí cambia. Siempre se puede simplemente hacer el cambio individual para
este cerdo específicamente, tal vez algo
como esto en su lugar. Hagamos 2323,
algo así. Éste no es realmente
muy importante en este momento. Tenemos que probarlo en juego
y ver cómo se ve. Por lo que tenemos que probar esto
antes de saber que funciona. Entonces lo último que quiero
hacer es ahora mismo, nuestros enemigos están chocando
con nuestros jugadores, por lo que están bloqueando a
nuestros jugadores. Yo creo que sí. Entonces intentemos
echar un vistazo a eso. Por lo que BP base enemiga, podemos hacer click en la cápsula aquí y comprobar las colisiones. Y ahora mismo
bloquea a nuestro personaje. Entonces, en realidad, no sólo
bloquean a nuestro personaje
porque los enemigos también sobre, por lo que se bloquean unos a otros. Entonces vayamos a aquí y la
colisión presente sobre. Demos clic en la Custom aquí. Hagamos clic ahora.
Entonces, para los pons, sólo
vamos a hacer clic en la
superposición porque tal vez
necesitamos hacer algunos
eventos superpuestos más adelante. Así que solo superpongamos los
pons para que no se bloqueen unos otros cuando están
caminando y además no bloqueen a nuestro personaje. Y esto fue todo para los que ahora. Y probablemente tengamos que
hacer más cosas después, pero creo que esto
fue todo para este curso. Entonces si ponemos esto al 0, se
puede ver cómo se ve. Este es ahora el
enemigo que tenemos. Y por supuesto que no
hay movimiento este
momento necesitamos
sumar el movimiento. Y esto es algo con lo
que
estaremos trabajando en
la próxima lección.
49. Volumen de límites de malla de navegación: De acuerdo, entonces ahora que estamos trabajando con
inteligencia artificial, tenemos que decir a dónde pueden moverse todas
estas IA, porque en este momento la IA no sabe realmente a
dónde pueden navegar. Realmente no les has dicho a dónde se les
permite trasladarse. Y esto es lo que
vamos a hacer aquí. Y esto es muy
simple en realidad. Subimos aquí y rápidamente
agregan botón. Y los volúmenes
que tienes algo llamado volumen de rebote
de malla de navegación. Esto se utiliza para la inteligencia
artificial, para la IA, y dice a
dónde pueden moverse. Por lo que ahora crea esta caja aquí. Déjame
ponerlo como 0 en la y Así que está por aquí
en nuestro mapa de azulejos. Y entonces tenemos que
hacerlo más grande. Entonces yendo aquí abajo en
la configuración del pincel, hagámoslo más grande y dx, por lo que llena toda la zona. Y podemos moverlo hacia abajo
así, así que está bajo tierra. Y si haces clic en P,
Así P en tu teclado, puedes ver que aparece una
línea verde. Y si haces clic en P
De nuevo, es alturas ella. Por lo que dice instalarse aquí. Whoops, la configuración aquí llamó
navegación y el espectáculo. Y el atajo es P para ello. Y te mostrará dónde se permite caminar
la IA. Entonces en este momento, esto es verde. Se les permite trabajar aquí. No se les permite
pasar esta línea aquí. Y en este momento la IA no
es capaz de
subir por aquí porque no
tenemos línea verde. Y esto es porque hay
que cubrir esa zona también. Así que vamos en la z, hagámoslo más grande y sólo
voy a
moverla hacia arriba así. Por lo que cubre ambos. Esta zona es ahora la verde, y esta área de aquí abajo también
es verde como esta. Entonces hay algunos
ajustes pequeños que tenemos que
ajustar solo para asegurarnos de que
todo esté funcionando. Aquí en la malla de
navegación re-cast que hizo al agregar el volumen de
rebote de malla de navegación. Por aquí en el
desfase del sorteo, me gustaría sumar 0. Y esto es básicamente
justo donde se
quiere que este dibujo esté. Y sólo me gustó
0 en lugar de diez. Entonces no realmente
algo importante, pero simplemente me gusta así. Lo siguiente es, la configuración más importante es aquí en la pendiente máxima del agente. Sólo voy a poner eso. Se puede ver qué pasa
si lo baja. Significa que no pueden
subir esa pendiente. Esto es lo que significa. Y sólo voy a
ponerlo arriba porque
quiero que puedan
caminar por esa pendiente. Y esta es la altura del escalón. Voy a poner
eso también. Y no creo que necesitemos
ajustar más configuraciones. Tenemos que probar nuestro volumen de
navegación para asegurarnos de que funcione. Así que déjame simplemente
Archivar y Guardar Todo. Y antes de terminar
estas ediciones aquí, hay que construir el volumen del balance de
navegación. Así que al hacer clic en la acumulación aquí y haciendo clic en build o
niveles hay que
recordar para construir antes de que esto
realmente tome en acción. De acuerdo, entonces ahora el edificio está
terminado tan rápido. Y el edificio
suele tardar mucho tiempo si tienes iluminación
en tu escena. Entonces si estás trabajando
con un juego 3D, pero puedes ver que
esto no tomó tiempo. No tenemos ninguna iluminación. Esto es muy rápido de hacer. Y ahora que tenemos nuestro volumen de rebote de
navegación hecho, ahora
podemos pasar a trabajar con el
movimiento del ojo. Por lo que podemos más adelante prueba para ver si esto está
funcionando correctamente.
50. Controlador AI: Al igual que creamos aquí un controlador de
reproductor, ahora podemos crear un
controlador para nuestra IA. Así que pasemos a
la carpeta Enemigo. Y dentro de aquí
puedes hacer clic derecho y crear una nueva Clase
Blueprint, C aquí, dentro de aquí
solo puedes ver el controlador del jugador. Entonces el controlador es algo más avanzado y
no realmente avanzado, pero no
lo han incluido aquí porque es, la gente no suele trabajar con IA y un día comienza a
trabajar con este motor. Puedes buscarlo
aquí si haces clic en todas las clases y
buscas controlador de IA. Y se puede ver este
llamado controlador de IA. Vamos a seleccionarlo aquí. Y le voy a
dar un prefijo de AIC para controlador AI. Y sólo voy a
llamarlo por un Emmy como este. Así que vamos a salvar todo. Y ahora lo que
voy a hacer es que
voy a hacer click sobre
esta base enemiga. Y aquí en la clase base
se imprime a la derecha. Aquí puedes ver
cómo poseer IA. Sólo voy a cambiar a
lugar en el mundo o engendrado. Entonces tal vez engendras a los enemigos y la IA estará poseída. Y la clase de controlador AI, tenemos que cambiar esto a la
clase de controlador AI que acabamos de hacer. Por lo que no va a
usar el predeterminado. Queremos utilizar los nuestros propios. Y esto era
lo único que teníamos que hacer. Por lo que ahora tenemos nuestro controlador de
IA y puedes hacer click en él y
ver cómo se ve. Y al igual que nuestro controlador de
jugador realmente
no contiene mucho. La única diferencia
es que contiene un componente de acción y una
ruta siguiendo componentes, pero nada realmente nos
vamos a preocupar en
este momento o usar. Entonces cerrémoslo y
pasemos a la siguiente lección.
51. Pizarra y árbol de comportamiento: Ahora vamos a crear una pizarra
y un árbol de comportamiento. Entonces si haces clic derecho por
aquí en la carpeta enemigos y vas a la
inteligencia artificial, puedes ver que tenemos
algo llamado pizarra y un árbol de comportamiento. Así que vamos a hacer clic primero en Crear la pizarra,
creándola aquí, llamándola dB para Blackboard, y luego escribiendo enemigo. Y si haces doble clic
en esta pizarra, puedes ver que
realmente no contiene mucho. Podemos crear una nueva clave
que solo tiene una variable. Y esa variable, se puede ver
alguna información al respecto. Podemos cambiar entre el árbol de comportamiento y la
pizarra por aquí. Así que en realidad no
pasa mucho y realmente
no necesitamos usar esto en este momento. Entonces vamos a crear un árbol de comportamiento. Se puede ver que no podemos
hacer click en él y esto es porque no
tenemos uno en este momento. Así que vamos a cerrarlo. Volvamos a hacer clic derecho. Acude a la inteligencia artificial
y crea un árbol de comportamiento. Y llamemos a este
enemigo BT o enemigo de árbol de comportamiento. Ahora, puedes hacer doble clic
en este árbol de comportamiento. Y dentro de este árbol de comportamiento es donde construyes la IA, como cómo se comporta la IA, cómo se está moviendo. Así que para empezar con aquí
en el árbol de comportamiento, se
puede arrastrar y soltar. Entonces como lo primero que
haces en el árbol de comportamiento, tienes que elegir un selector. Algo muy importante saber dentro del árbol de comportamiento es que el código se ejecuta
de izquierda a derecha. Y te mostraré cómo
necesito hacer algunos de los nodos aquí para que
puedas ver a qué me refiero. Así que a partir de la raíz, se
puede arrastrar hacia fuera y
haciendo selector. Y lo siguiente es
hacer una secuencia. Tenemos un selector, tenemos una secuencia, y ahora vamos
a añadir nuestro código. que puedas ver aquí, si
agrego algo aleatorio, solo te voy a mostrar, solo
voy a añadir
lo mismo una y otra vez. Se puede ver, se
pueden ver las notas. Tienen números. Entonces
tenemos el número 0, número uno, y va a ejecutar
el código de izquierda a derecha. Entonces aquí estamos
empezando por la izquierda, tenemos el número dos y luego el
número tres y el número cuatro. Si muevo esto, de esta manera, se
puede ver que cambia
al número tres, cambia al número dos. Entonces el código siempre va
a disparar de izquierda a derecha. muy, muy
importante para recordar. Vale, entonces lo que queremos hacer con este árbol de comportamiento
es que queremos la IA, así que nuestro cerdo o un caracol aquí. Y el nivel que queríamos encontrar una ubicación aleatoria en
esta malla de navegación. Una vez que encuentre una ubicación aleatoria, se va a
trasladar a esa ubicación. Así que al igual que en Maple Story, donde el enemigo se está
moviendo en el nivel. Encuentra un punto aleatorio
en la malla de navegación, y luego se mueve
a esa ubicación. A lo mejor espera dos segundos. Es como en el modo inactivo y luego se mueve a otro punto. Por lo que tenemos que empezar con encontrar un punto aleatorio
en nuestra ubicación. Y luego después de que encontremos
el punto aleatorio, tenemos que pasar a ese punto. Entonces antes de eso, tenemos que
encontrar un punto aleatorio. Y esto es lo que vamos a
hacer en la próxima lección.
52. Encuentra un punto aleatorio en el área movible: Pero ahora hagamos que
nuestro enemigo encuentre un punto aleatorio en esta zona móvil en
esta malla de navegación. Así que volvamos
al árbol de comportamiento. Y dentro de aquí
realmente no tenemos algo como esto, así que tenemos que crearlo nuestro. Y se puede hacer esto haciendo clic
en la nueva tarea aquí arriba. Por lo que haciendo click en nueva tarea, entonces hay que guardar esa
tarea y yo la voy a llamar, voy a quitar
esto, así que BTT. Y luego vamos a eliminar todo
esto y vamos
a llamarlo enlazar ubicación aleatoria. ¿ De acuerdo? Y se puede ver
la tarea que ahorra aquí. Por lo que tienes todas las tareas. Incluso podemos hacer una nueva
carpeta o todas sus tareas. Entonces aquí dentro de la tarea, siempre
comienzas con
algo llamado recibir, recibir, ejecutar Ai. Este es el evento con el que
siempre comienzas, y siempre terminas
con ejecución terminada. Entonces tienes a estos dos siempre en una tarea aquí en el árbol de
comportamiento. Y luego todo el código
va entre estos dos. Entonces la función principal que estamos tratando de usar
dentro de aquí se llama obtener punto
alcanzable aleatorio en radio, tienes algunas otras. Así consigue punto aleatorio
y radio navegable. Quiero conseguir uno
en punto accesible. Así que tal vez tengas algo
de navegación aquí arriba. Entonces si el enemigo está aquí abajo, tienes alguna navegación aquí arriba que el enemigo no puede alcanzar. Y en realidad no
quiero fastidiarlo. Voy a usar este llamado Get Random
punto alcanzable en radio. Entonces voy a hacer click en
eso y va a mirar nuestra malla de navegación. Entonces, ¿cuál es el origen desde el que
debe comenzar a buscar? Y solo quiero
buscar desde donde esté el caracol o el más grande. Entonces pongamos
aquí un caracol para que puedas visualizarlo un poco más. Entonces tenemos el caracol dentro de nuestro nivel aquí caminando por ahí. Entonces, ¿dónde quieres empezar a buscar? ¿Aquí en el origen? Yo sólo caracol grande y
confiable está aquí. Entonces aquí en el peón controlado, Este es el enemigo
que anda por ahí. Y recuerda, hicimos antes, consigue jugador ref y
consigue controlador ref. No creo que tengamos
uno para el enemigo, así que sigamos adelante y hagamos una, una Interfaz Blueprint
porque en realidad
necesitamos una referencia de
esta base enemiga. Porque necesitamos
usarlo aquí para conseguir la ubicación de los actores e
insertarse como el origen. Por lo que aquí necesitamos una referencia a la Interfaz Blueprint
o a la base enemiga, donde decimos consigue referencia
enemiga. Volvamos aquí y hagamos una nueva Interfaz de
Blueprint. Entonces este es el mismo método que
lo que hemos estado haciendo hasta ahora. Así que haga clic con el botón derecho, vaya a blueprints y seleccione Interfaz de
blueprint. Llamémoslo E termina base enemiga. Vayamos aquí. Y
llamemos a éste consigue NME. Así que consigue a los enemigos
para referencia. Ahora, en la salida, ¿a qué intentas referirte? Estás tratando de referirte
a BP y a la interfaz. Entonces, así así. Y puedes llamarlo por enemigo. Vale, ahora recuerda ir a,
a la base enemiga y por dentro de aquí ve a Configuración de Clase y luego agrega esa interfaz que acabas hacer llamada final base enemiga, Compile y Save, y
aparecerá abajo aquí. Ahora, ¿quién es el enemigo? El enemigo es solo autodeseo, que significa cualquier
plano en el que estoy. Entonces el enemigo es solo
esta base enemiga. De acuerdo, ahora podemos volver a la tarea y desde
el estanque de control, ahora
podemos decir consigue referencia
enemiga. Entonces si es el caracol
caminando por ahí, sabe ahora que
es el caracol. Esta es la referencia enemiga
que tenemos aquí. Sólo voy a hacer clic derecho sobre ese enemigo y
promueve una variable. Sólo voy a llamar a
este peón enemigo variable. Así, sólo para
decir más limpio. Y así este origen
ahora podemos llevarnos a este enemigo **** y
podemos decir consigue,
consigue ubicación de actor como esta. Entonces el origen está
dondequiera que esté este enemigo. Por lo que ahora el origen
es de este enemigo. Y va a buscar
un punto alrededor de ese enemigo. Este es el radio. Ahora tenemos que especificar cuán grande es el radio en el que se
necesita buscar. Ahora, este radio, podríamos
simplemente insertar un número y decir 50 y son 100 unidades. Pero tal vez tengas mapas
diferentes. Así que imagina que no solo
tienes este mapa en tu juego, sino que tienes varios mapas. Algunos mapas son
más grandes que otros. En ocasiones necesitas
buscar puntos más lejos. Entonces realmente no
queremos tener como un número sólido escrito
aquí en el radio. Normalmente lo que me gusta
hacer por mis juegos, me gusta conseguir el tamaño
de esta zona navegable. Y con este tamaño, este tamaño difiere de mapa a
mapa porque puedes imaginar este volumen de rebote de
malla de navegación es mayor o menor
en otros mapas. Por lo que sólo va
a conseguir ese tamaño, sea cual sea el mapa en el que se encuentre, y va a buscar
dentro de esa zona. Entonces la forma en que haces esto es, alejemos esto un
poco. La forma en que haces esto es otra vez, consigue actor de clase y
usas get actor de clase. De nuevo, lo hemos usado antes, pero si necesito
explicarlo de nuevo, hay
que usar esto, conseguir un extra de clase. Se puede conseguir un actor que
ya está engendrado
dentro del nivel. Por lo que el volumen de los límites de
malla de navegación ya
está dentro de
nuestro nivel en este momento. Por lo que sólo podemos
buscar una malla de nav. Si puedo ver aquí nav
mesh bounce volume. Por lo que ahora tenemos el volumen equilibrado de
navegación. Ahora podemos arrastrar de esto
y decir conseguir rebote actor. ¿ De acuerdo? Ahora nos dan los límites del actor. Y lo que podemos hacer con esto
es que ahora necesitamos el radio, pero aquí el radio, se
puede ver la extensión de los bichos. En realidad puedes imprimirlo a la pantalla y ver
cómo se ve. Pero tenemos que correr el
árbol de comportamiento antes de hacer esto, te
voy a mostrar esto más tarde, pero por ahora,
intentemos terminar esto. Lo que estamos tratando de hacer es
encontrar el radio aquí, pero se puede ver que la
extensión de los bichos es un vector. Voy a romper este vector que pueda ver la x, y, y z. lo único que nos
interesa es la x. porque ves
aquí el rojo,
el punto de pivote rojo, si te acuerdas de
antes, el rojo es la x. si se coloca el ratón aquí, sólo
había realmente
interesado en la zona en la x. realmente no
nos importa
la Z ni la y aquí. Estamos tratando de
encontrar un punto dentro de ese tamaño aquí.
Pero volvamos. Lo único que nos
interesa es la X. Así que vamos, en realidad
voy a dividir esta extensión de caja por dos
porque lo probé mucho. Y creo que este tamaño, como buscar
toda la zona navegable, es solo de gran tamaño. Y me gusta que mis peones solo
busquen dentro de un área más pequeña. No me gusta que este caracol
busque en toda la zona. A veces se mueve desde
este punto del mapa, luego se mueve todo el camino hacia el otro lado de mi no
me gusta eso. Me gustan los caracoles
a veces se mueve de aquí a aquí solamente. Entonces ese es quizás el movimiento
máximo. Entonces me gusta dividir
esta caja se extiende antes de que realmente haga esta
dosis dividida por dos. Por lo que es mucho más pequeño en área. Puedes ver aquí cuando
escribes divide. Entonces si acabo de arrastrar de nuevo, tal vez lo hice demasiado rápido. Puedes escribir el
botón dividir y puedes hacer click aquí. Ya puedes ver que es un vector, pero en realidad no necesito eso. Sólo necesito dividirlo por dos. Así que vamos a hacer
clic derecho en este pin. Y puedes convertir
este pin a un entero. Ahora es sólo un número, así que podemos dividirlo por dos. Puedo conectarlo de nuevo
aquí con el vector break. Aquí. Ahora la x está dividida por dos. Y ahora puedo enchufarlo
al radio, oops, así. Y vamos a derribar eso,
algo como esto. Por lo que ahora tenemos esta ubicación
aleatoria. Nuevamente, lo único que nos
interesa es el valor x. Queremos que el valor Z sea el mismo porque todavía quiero que
mi caracol esté aquí abajo. Y el valor y debe
ser el mismo también porque todavía quiero que
mi caracol esté aquí. Sólo me interesa
moverlo al eje x. Entonces lo que voy
a hacer es que voy a
volver aquí y romper este vector. Así que ahora tenemos la x, y, y z. así que x es cualquier punto
que se encuentre en la x. Y déjame hacer clic derecho
y decir hacer vector. Ahora podemos reconstruir este vector para que la x
permanezca igual. Este es el
punto aleatorio que se encuentra. Pero quiero que mi y y
z se queden igual. En realidad, sólo voy
a copiar pegue esto aquí. Y sólo voy a
volver a
conseguir mi ubicación actriz y romper este
vector x, y, y z. para que pueda usar esos valores. Sólo voy a
tapar la y y la z. la y y y la z se queda
igual que la, como el poema que
tenemos al enemigo ****. Pero es sólo las salidas van a encontrar una ubicación
aleatoria en, y esto es lo único
que va a cambiar. Por lo que la Y y la Z siempre se
va a quedar igual. Muy bien, entonces este es el resultado final y
necesitamos enchufar esto en algún lugar y usarlo en
nuestro árbol de comportamiento por aquí. Aquí es donde entra la
Pizarra. Así que volvamos
a la Pizarra. En realidad, creo que podemos encenderlo aquí y
el árbol de comportamiento, por lo que bien puedes encontrar la pizarra dentro
de aquí y abrirla. Pero al igual que antes,
también podemos hacer eso yendo a su árbol de comportamiento y haciendo clic en la
pizarra aquí arriba. Entonces hagamos una nueva clave, y hagamos un vector. Esto es lo que necesitamos. Y llamemos a este
vector la ubicación x. Por lo que sólo nos
interesa la ubicación X. Y solo asegurándonos de que
esto sea un vector y realmente no necesitamos
cambiar nada aquí. Así que vamos a guardarlo aquí. Y volvamos a la tarea. Y luego aquí vamos
a hacer una nueva variable. Esta variable,
sólo voy a
llamarla vector porque es un vector. Y lo que
hay que hacer aquí es buscar Blackboard. Y selecciona éste llamado selector
de teclas Blackboard. Podemos compilar y ahorrar. Y entonces ahora puedes sacar
este vector por aquí. Este es el, el vector de la
pizarra. Y se puede decir establece Blackboard, valor de
pizarra como vector. Tienes que seleccionarlo ahora. Y lo que va a
hacer ahora va a añadir que este valor
aquí en esto, este vector que
has creado. Entonces vamos a añadirlo ahora aquí. Entonces ahora este es el resultado, y vamos a conectarlo. Entonces va a ir
desde aquí todo el camino por aquí, así. Así que ahora está conectado. Y terminemos, ejecutemos. Y recuerda siempre hacer click
en este botón de éxito. Tan importante. Compila y Guarda. Ahora veamos qué pasa. Volvamos ahora al árbol de comportamiento
enemigo. Por lo que haciendo clic en el árbol de
comportamiento. Ahora lo que podemos hacer
es que podamos bajar aquí y buscar nuestra tarea. Entonces apenas escribiendo para BTT
y podemos encontrar éste, PTT encontrar ubicación aleatoria. Y ahora tenemos que
contarlo, es esta ubicación x que necesitamos
usar en nuestra Pizarra. Pero puedes ver aquí, realmente no
puedo, si hago clic en esta
tarea, realmente no
puedo, no tengo
opción para hacer eso. Y esto se debe a que en la tarea, hay
que hacer click en este
vector y hay que hacer click en éste llamado
instancia editable. Recuerda hacer eso
o
no podrás verlo. Entonces regresa con el enemigo. Y
ya puedes ver podemos seleccionar un vector y el vector que queremos usar es esta ubicación x. Así que ahora va a
encontrar una ubicación aleatoria y es este vectores. Por lo que ahora tenemos el resultado. Se va a trasladar
a esa ubicación. Y al final lo que quiero
hacer es simplemente decir esperar. Por lo que a veces cuando
encuentra un punto, se mueve a ese punto. Quería esperar un
poco antes de que se mueva de nuevo. Aquí en el tiempo de espera, sólo
voy a escribir 0. Me pareció que era la
mejor manera de hacerlo. Entonces el tiempo de espera es 0, pero la variación
es de tres segundos. Por lo que a veces
esperan 0 segundos, a veces esperan
tres segundos, a veces eran dos segundos. Por lo que a veces pueden esperar 0 segundos para que no
esperen, simplemente se mueven de nuevo. Hay variaciones aleatorias, es de tres segundos o a veces
esperan tres segundos. Pero ahora va a
encontrar una ubicación aleatoria. Se va a trasladar
a esa ubicación. Y entonces va a
esperar hasta tres segundos y luego ir de nuevo y
repetir este proceso. De acuerdo, así que para que
todo funcione, tenemos que volver al controlador
del jugador. Y dentro de aquí,
comencemos a jugar. Tienes que decir
correr el árbol de comportamiento. De lo contrario tu árbol
de comportamiento no va a funcionar. Y luego hay
que seleccionar qué árbol de comportamiento es
éste va a componer Guardar. Y ahora pongamos a un
enemigo al nivel y veamos si funciona o si
hay algo que olvidé. Así que solo golpea a un
enemigo al nivel. Demos clic en Jugar ahora,
seleccione el personaje. Y ahora mismo lo que
miro a mi enemigo, puedo ver a mi enemigo no
se está moviendo. Entonces hay algo
mal y necesito
encontrar lo que hice mal
dentro de este proceso. Muy bien, así que la forma en que hago
esto para depurar las cosas. Para que puedas ver aquí
cuando vuelvo a jugar aquí, la IA no se está
moviendo realmente. Algo anda mal. Y en realidad
pongámoslo aquí arriba. A lo mejor está dentro del suelo y aún no se mueve. Entonces lo primero que hago no me
gusta cuando debug, a veces la
malla de navegación rebota volumen errores hacia fuera, por lo que no va a funcionar. A veces en realidad borré y traté de hacer esto de nuevo. Entonces no sé por qué en Unreal Engine a veces
funciona. A lo mejor este no es el problema, pero podemos empezar aquí. Y así en los volúmenes, vamos a agregar el volumen de los límites
de malla de navegación nuevo, ponerlo a 0. Y en la extensión de caja, lo
voy a aumentar de
nuevo, algo así. Y luego aumentar la, la z. bien, ahora lo tengo de nuevo
y en el re-cast aquí, voy a establecer el empate de
nuevo offset a 0. Y fijamos la altura del agente a realmente el agente max loop
289 y la altura máxima 289. Entonces voy a salvar y
construir todo de nuevo. De acuerdo, ahora podemos intentar hacer click en Play y aún no se mueve. Entonces lo siguiente, lo que
estoy tratando de mirar es,
es encontrar un punto en mi,
en mi árbol de comportamiento aquí
en mi tarea en realidad. Así que para empezar, lo que
normalmente hago es sólo
voy a imprimir en la pantalla. Entonces print string es lo mejor que
puedes hacer para depurar. Porque cuando imprime una
cadena en tu pantalla, lo
sabes, que
este código se está disparando. Este código está funcionando.
Entonces si hago click en Jugar ahora y puedes
verlo dice Hola. Entonces la tarea es
en realidad saludar. Entonces tratando de ejecutar el código, así que aquí no hay nada malo. Así que sigamos adelante con el código. Por aquí. Tratemos de ver
si encuentra este punto. Así que vamos
a imprimir a la pantalla de nuevo, conectado desde aquí ahora. Porque ahora lo sabemos, ahora sabemos que esta parte
del código está funcionando, por lo que está lanzando esta tarea. Entonces por aquí, vamos a
imprimir ahora este valor. Entonces se va a imprimir
este vector y ver si realmente encontramos
algo aquí. Y se puede ver en la X, realidad está encontrando
diferentes ubicaciones, pero en realidad está funcionando. Por lo que es encontrar esas
ubicaciones correctamente. Entonces está bien,
son esas ubicaciones y
sé que mis controladores de IA funcionan también porque este
es el que está ejecutando el
árbol de comportamiento que hicimos. Y podría ser una mudanza
y luego esperar al instante. Entonces esto también es un, algo que puede suceder. Entonces aquí en el árbol de comportamiento, tal vez se está moviendo y luego
está esperando instantáneamente
por alguna razón. Así que déjame conectar esto
y simplemente conectar estos dos. Permítanme Guardar y
luego haga clic en play. Y si miro
mi árbol de comportamiento, ves aquí estoy
jugando el juego ahora. Y creo que esto es lo que está
sucediendo en última instancia porque realmente no veo
nada malo en nuestro código. Es encontrar un punto aleatorio. Está tratando de pasar
a ese punto. Pero puedes ver aquí nuestro árbol de
comportamiento se está volviendo loca. En realidad se está moviendo
a esa ubicación, encontrar una nueva ubicación, moverse, buscar, moverse, moverse,
encontrar movimiento, encontrar. Sigue haciendo eso.
Encuentra una nueva ubicación. A pesar de que la
ubicación está muy lejos, se mueve un poco
paso antes de que
empiece a llegar,
buscando una nueva ubicación. De nuevo, creo que la clave de
Blackboard aquí está puesta auto actor que este
podría ser el error aquí. Así que volvamos aquí, salgamos del modo de reproducción, y hagamos
clic en este movimiento a. Así que como que me olvidé de
cambiar esta ubicación aquí. Así que conectemos esto de nuevo aquí. Demos clic en Play. Ahora. Se puede ver, ahora
realmente está funcionando. Entonces el caracol se está moviendo. Se ha trasladado a un lugar. Está esperando
hasta tres segundos y luego se está moviendo de nuevo. Entonces este fue el bicho. Y no quiero borrar esto del video
porque quiero mostrarte cómo
depuras las cosas porque te vas a
encontrar problemas. Y cuando intentas usar la cadena de impresión para imprimir
una cadena en la pantalla. Y cuando imprime una cadena, sabes que ese código
está funcionando porque está disparando la decodificación por ti, está disparando el evento. También puedes intentar
averiguar la ubicación a ver, ¿está encontrando una
ubicación aleatoria o no? Entonces lo último, obviamente fue que el árbol de
comportamiento es sólido. Se volvió una locura. Y esto se debe a
que se estaba moviendo a ese factor celular
en la Pizarra, que no tenía sentido. Se suponía que debía trasladarse
a esa ubicación x. Entonces ahora está trabajando aquí. Pero se puede ver, por supuesto nuestra animación no está
funcionando porque no hemos agregado ninguna animación para el caracol ni para
ninguno de los enemigos. Entonces hagamos eso en
la próxima lección.
53. Estado del movimiento enemigo: Muy bien, entonces lo que
tenemos que hacer en esta lección es que necesitamos cambiar el estado de movimiento para este enemigo para que
cambie el flip book. Siempre que se mueve,
tiene el libro flip de movimiento, y cada vez que está inactivo, tiene el libro flip inactivo. Entonces en realidad el mismo proceso
que hicimos con nuestro jugador cuando nos estamos moviendo y
parando. Así que lo mismo. Volvamos ahora a
la base enemiga. Y dentro de aquí, eliminemos todos
estos eventos predeterminados. Y lo que queremos
hacer en última instancia es crear una nueva variable y
configurarla es en movimiento. Entonces en realidad voy a
escribir una B delante de ella. Para Boolean está moviendo
este booleano aquí. Si lo arrastro hacia fuera, queremos
configurarlo para rep notifique. Entonces recuerda, todos
los cambios visuales necesitan ser interrumpir notificar y cambiar el flip book es un cambio visual para que todos
los clientes puedan verlo. Y esto es lo que queremos hacer. Así que aquí en la función unwrap, recuerda que crea
una función on-rampa cuando haces algo
para envolver notificar. Y dentro de aquí, sólo
tomémoslo. Así que no en este momento, solo
estoy trabajando revés para que puedas
ver a qué me refiero. Entonces este es el resultado final, se está moviendo se establece a verdadero. Entonces creando una rama. Si esto se establece en verdad, vamos a tomar este
sprite y set flip book. Por lo que ahora vamos a
poner este flip book dos. Entonces si se está moviendo, no
vamos a inactivo en realidad. Nos vamos a mudar aquí. Si se está moviendo,
nos vamos a mover. Y si está al ralentí, si no se está moviendo, vamos a inactivo así. Pero ahora se puede ver que
tenemos que seleccionar, tenemos que seleccionar también
el cerdo. Por lo que tenemos que hacer
esto dinámicamente. Entonces si tienes dos enemigos, esto es sólo para un enemigo, solo
está trabajando para el caracol. También lo necesitamos para el cerdo. Y recuerda, como
lo hicimos con el jugador, necesitas hacer una estructura. Vamos a la carpeta de
estructuras. Vamos a hacer clic derecho y
hacer una nueva estructura. Así que haga clic derecho y vamos a
encontrarlo bajo planos y estructura y
llamarlo s t animal info. Dentro de aquí, sólo
vamos a crear dos cosas. Vamos a crear
la animación ociosa, y vamos a crear
la animación de corrida. Simplemente podemos llamarlo
la animación de movimiento. Simplemente lo llamamos mover,
mover animación. Y esto es obviamente un libro de
papel como este. Y este es también un libro de papel. De acuerdo, entonces tenemos estos dos, y se puede adivinar tal vez
más adelante podamos agregar salud a los enemigos para que en realidad
podamos hacer una nueva variable más
adelante y llamarla salud. Entonces toda la información sobre el enemigo va a ser
almacenada dentro de aquí. Entonces, cuánta salud tienen, cuánto daño hacen, y cuánto oro te
dan y así sucesivamente. Entonces toda la información animal
estará aquí abajo más adelante. Entonces volvamos ahora
a la base enemiga. Y ahora podemos sumar la
estructura y las variables. Y podemos llamarlo info animal. Podemos seleccionarlo aquí y lo
llamamos st info animal. Y esta es la estructura. Ahora tenemos esta estructura, podemos arrastrarla hacia fuera
y al igual que antes, romper de ella y dar click en break para ver todas
las variables. Entonces puedes agregar el inactivo. Se puede ver que tenemos el ADL aquí
arriba y se mueven aquí va a ser un desastre porque va a
ser cruzado así. Me gusta mantenerme limpio
en mi proyecto. Entonces, lo que voy a hacer,
intentemos tener el inactivo
aquí arriba para que podamos revertir
esto diciendo nueces. Así que no b significa NO booleano. Entonces si esto significa ahora es si
el enemigo no se mueve, así que si esto se mueve es falso, por lo que si no se está moviendo, entonces estamos al ralentí. Así que déjame borrar esos flip
book y conectado aquí. Entonces lo que tenemos que hacer aquí, así que si no te estás moviendo, si eso es cierto, estás al ralentí. Por lo que estamos conectando
inactivo aquí arriba. Y voy a copiar
pega esto aquí abajo, su cuello, los sprites. Ahí está conectar false
aquí abajo y
conectarlos muévete aquí abajo. Entonces cuando no nos estamos
moviendo, estamos al ralentí. Cuando nos estamos moviendo, entonces estamos en la animación de
movimiento. Y para que esto funcione,
tienes que irte. Por lo que ahora tienes
estas dos variables y tienes que configurarlas. Y recuerda cuando añades una
variable a la clase de padres, así que estamos dentro
de la base enemiga. Todas las Clases de
Plano Infantil heredarán esa información. Entonces Cerdo y caracol son
hijos de base enemiga. Entonces ir al cerdo y abriendo el editor de
planos completo aquí en la clase impagos. Se puede ver la variable
info animal está aquí porque la agregaste
a la clase padre. Por lo que aquí puedes seleccionar la animación
ociosa para el cerdo. Entonces busca ocioso, toma eso y por la luna, y selecciona eso. Mover animación. Lo mismo aquí
para el caracol. Así que ábrelo, abre la
clase de editor de blueprint full defaults animal info, busca ocioso,
y agrega los caracoles, busca mudanza, y agrega el
movimiento para el caracol también. Bien, entonces tenemos eso ahora, y volvamos a la base. Por lo que este es el
resultado final al que
vamos a estar apuntando. Y déjame
acercar esto así para que
esté más organizado. Volvamos a
la Gráfica de Eventos. Por lo que ahora tenemos esta
variable que necesitamos establecer, y siempre configuramos estos séquito para luchar a
través de un servidor. Hagamos un
valor personalizado llamarlo estado de movimiento
del servidor así, y lo ejecutaremos a través del servidor y es confiable
y ahora podemos conectar esto. Ahora recuerda estas variables de
servidor, tenemos que ejecutarnos a través de
una variable normal también. Y se llama etapa de movimiento. Así que en realidad vamos a crear uno directamente dentro de una Interfaz de
Blueprint. Porque ahora tenemos uno. Vamos a las interfaces
o a la base enemiga. Y llamémoslo aquí. Estados Movimiento. Vamos a compilar. Y aquí en la base enemiga
hicimos una variable
llamada se está moviendo, por lo que necesitamos un booleano. Entonces vamos a crear un booleano y la entrada llamada D se está moviendo. Vamos a compilar y ahorrar, y volvamos
a la base enemiga. Por lo que ahora podemos llamarlo
diciendo estados de movimiento. Y podemos llamar a eso eventos. Y ahora podemos ejecutar ese evento de
servidor desde aquí. Vale, entonces ahora estamos
trabajando al revés. Por lo que partimos de este
evento movimiento estado. Va a
pasar por el servidor y luego configurar esta función de
notificación de disrupción. Y dependiendo de si
es cierto o no, va a poner
ese libro flip book. Por lo que tenemos que ejecutar
este evento en alguna parte. Y creo que lo
mejor, o encuentro, encontré que la mejor manera de hacer esto corriendo ese estado de movimiento es aquí en el árbol de comportamiento al final definido ubicación aleatoria. Entonces cuando se encuentra
una ubicación aleatoria, sigamos adelante y
digamos que se está moviendo. Entonces vamos a establecer que el estado de
los movimientos sea verdad. Y entonces va a
seguir adelante y pasar a esa ubicación. Por lo que aquí ya tenemos
una referencia a nuestro peón. Entonces esto es muy fácil. Podemos tomar esto y decir Establecer estado de
movimiento y seleccionar ese mensaje porque es una Interfaz de Blueprint.
Así como esto. Y en realidad esta es una
base de jugadores que es la equivocada. Volvamos a ver cómo
lo llamamos. En realidad, acabo de
llamarlo un estado de movimiento. Permítanme, déjame llamarlo Estado de movimiento
establecido. Creo que eso es mucho mejor. Por lo que llamar a éste también, los movimientos
establecidos se quedan
así. Compilar. Volvamos a eso y
digamos Movimientos de Set, Estados. Y aquí está en la base enemiga, no en la base de jugadores. Entonces de todos modos, mensaje
seleccionado aquí. Ahora hemos dicho que el movimiento
afirma ser cierto. Así que ahora se está moviendo. Pero tenemos que ponerlo falso en algún momento porque
ahora si haces click en Play y puedes probarlo,
puedes ver que se está moviendo ahora. Y déjame solo
reducir un poco la
velocidad de movimiento porque
ahora se está moviendo tan rápido. Entonces para el caracol, vamos
al Movimiento de los Personajes. Y voy a poner
el movimiento a 45. Acabo de hacerlo mucho y
creo que Cuarenta y cinco fue un buen número para este caracol de historia
metálica. Para que puedas ver que se está moviendo,
pero cuando está al ralentí, nunca
se detendrá como en
el libro flip book de animación ociosa. Y esto es porque nunca
hemos puesto que el booleano sea falso. Por lo que realmente no
sabe cuándo jugar ese libro flip de animación ociosa podría ver cuando está
inactivo, todavía se mueve. Entonces tenemos que configurar, si vuelvo a la interfaz, tenemos que poner esto a
false en algún momento. Hagamos eso aquí
en el árbol de comportamiento, podemos hacerlo también. Por lo que se mueve a esa ubicación
y antes de que pesa, vamos adelante y pongamos
que booleano sea falso. Así que hagamos una nueva tarea aquí y simplemente haga clic en
ésta de aquí abajo. Por lo que hacemos una nueva tarea. Y éste, voy a
llamar sets movimiento Boolean, set balón de movimiento, lo que
significa que el movimiento Boolean, esto es
lo único que está haciendo. Nuevamente, al igual que lo que te
dije antes, tenemos que empezar con
un recibir ejecutar Ai. Y tenemos que terminar
dentro de acabado ejecuta. Y tenemos que ponerlo abajo
el éxito cuando esté terminado. Y lo único que estamos
haciendo es tomar este dicho consigue enemigo, consigue referencia
enemiga. Entonces estamos consiguiendo esa
referencia enemiga aquí y en la base. Y desde la interfaz sólo
podemos arrastrar y decir Set movimientos estados
aquí y la base enemiga. Y lo único que estamos
haciendo es simplemente establecer que este booleano sea falso porque ahora ya
no nos estamos moviendo. Hemos terminado de mudarnos. Así que volvamos
al árbol de comportamiento. Y aquí podemos arrastrar y decir BTT y seleccionar que un
conjunto de movimiento booleano. De acuerdo, entonces la cosa está haciendo ahora, es encontrar una ubicación aleatoria. Se está mudando a esa ubicación. Y cuando se mueve y
termina ese movimiento, va a poner
el booleano verdadero,
falso, así que ya no nos
movemos. Entonces va a esperar aquí. Por lo que ahora vamos a hacer clic
en la plaqueta. En realidad solo agrega
unos cuantos enemigos más solo para que no tenga que esperar
en ese caracol para parar. Así que pinchando aquí, y se
puede ver que es ahora, éste está en el inactivo
y funciona bien. Ahora está en el ocioso. Y luego cuando se mueve, está en el libro flip book del movimiento. Por lo que ahora funciona a la perfección. Entonces lo que podemos hacer ahora es que sólo podemos sumar unos
cuantos enemigos más. Por lo que sostener Alt y
arrastrar se duplicará. Y solo puedes duplicar unos
cuantos enemigos en este nivel. Cuantos quieres. No voy a colocar en realidad,
vamos a colocarlos aquí. ¿ Por qué, por qué no? Vayamos al enemigo y voy a colocar
el cerdo aquí arriba. Tan enemigos más duros
están en la cima aquí. Entonces pongamos esto al 0. Y en realidad, en lugar de 0, tenemos que poner uno para que
no miente a los azulejos. Pero vamos a añadir, por ejemplo, para los cerdos aquí arriba. Y sí, creo,
creo que eso está bien. Así que digamos vamos a
hacer clic en Play para ver si todo está funcionando en contraposición a los cerdos son demasiado rápidos. Así que volvamos a las Fotos. Y más cerdos a los que estoy
llamando voy a ponerlo a 90 años. Creo que los 90 yo probé
eso también. Pero los cerdos es un buen número. Y se puede ver que
están detrás de ella azulejos. Entonces en realidad tenemos que
moverlos un poco hacia adelante. La forma más rápida de hacerlo es seleccionarlos aquí
en el outliner. Entonces estos son los cerdos. Estos son los caracoles. Mantén presionada Shift, selecciona el último, por lo que los tenemos todos y lo
configuramos a uno aquí en el Y. y pincha sobre el jugador. El jugador en vez
de uno, quiero
que estén frente a los enemigos. Por lo que haciendo clic en dos sobre
este desove jugador, por lo que estamos frente a todos
los enemigos. Y ahora vamos a hacer click en Play. Y así es como se ve. Entonces tenemos a los cerdos
corriendo ahí arriba. El ralentí está funcionando bien y el movimiento también está
funcionando bien. Se puede ver que estos caracoles
están un poco en la parte superior. Lo que puedes hacer es dar
click en el caracol. El caso es que cuando
aumentes esta cápsula, va a empujar ese caracol hacia arriba para que no
parezca que esté en el suelo. Entonces por ejemplo, para el caracol, si solo estás tratando de
11 aquí abajo y aquí arriba, haz clic en compuesto save. Y ya se puede ver
que está en la hierba, ahora no está volando hacia arriba. El problema es ahora y lo
vamos a arreglar en
la siguiente lección, se
puede ver que todavía se está moviendo, como lo es, en
realidad está inactivo, pero se está moviendo así. Están disparando. Esto se debe a que la
animación ociosa se bombea hacia fuera. Por lo que pasé un par de tiempo
para ver por qué estaba haciendo esto. Y aún no tengo ni idea de
por qué está haciendo esto. Pero creo que mi teoría es que está
tratando de encontrar un punto en la navegación y luego se está molestando porque en
realidad todavía se está moviendo. No está al ralentí, pero no
se puede mover a esa zona. Y esto se debe a
esta cápsula aquí. Está haciendo alguna extraña colisión y está abasteciendo al enemigo. Así que pasemos a la siguiente
lección y arreglemos estos errores.
54. Fijar el problema del problema de bloqueo del movimiento y recorte: De acuerdo, así que para arreglar ese último
buck del último video, tenemos que ir a, empecemos con este caracol. Entonces intentemos
aumentar esta cápsula. Cuán lejos a 2828 sobre eso fue el mejor número para
hacerlo por estos caracoles. Y vamos a mover este caracol menos 18 para ver si
está en el suelo. Entonces moviéndola hacia abajo a menos
18 se está moviendo en el suelo. Y sólo para comprobar y ver si
está molestando aquí en el Cerro, parecen estar
moviéndose sin problemas ahora. Muy bien, así que eso se ve,
se ve bien ahora. Así que si se guarda, puedes aumentar esta cápsula
aquí y se puede mover por este caracol para que camine
sobre la hierba si no
lo haces, está flotando sobre la hierba. Y para los cerdos, lo que hice es que hice esa cápsula 30 por 30, y luego muevo
ese cerdo por menos ocho para que uno también
sea más grande. Éste es grande ahora, así que encontré que esta era la mejor solución para solucionar
ese problema de errores. Y ahora podemos ver que todo se está moviendo correctamente y
no tenemos problema. Nuevamente, si tienes
el problema por donde el enemigo se mueve y sigue al
ralentí en el mismo lugar. Puedes intentar el tamaño de la cápsula y luego bajar al enemigo. Por lo que ahora hemos hecho
todo este progreso. Gran trabajo hasta ahora.
En realidad has progresado muy lejos
dentro de este curso. Y lo siguiente que
podríamos hacer es daño o tal vez
necesitamos una escalera aquí arriba. Entonces te veré qué voy a
hacer para la siguiente sección. Y hasta ahora, todo
se ve bien. Si quieres sumar más
enemigos, puedes hacerlo. Si quieres
hacerlo tú mismo, de nuevo, no
puedes liberar esto en
Steam ni en ningún otro lugar. Esto es sólo con fines
educativos. Pero si solo
querías practicar, utilizo este sitio web llamado arces que soy un simulador de arce. solo puedas hacer clic aquí abajo y crear un nuevo personaje. O puedes crear un
nuevo monstruo aquí. Una turba puede ver aquí
se pueden crear mapas. Puedes seleccionar qué tipo de mafia quieres
crear, tal vez un limo, algo más para que
puedas crear más mapas, puedes entonces, después de hacer
eso, suelo voltear horizontalmente
porque tienen que estar en esta dirección
antes de que pueda funcionar. En ocasiones necesitas
Photoshop para rotarlas. Entonces solo puedes
descargar la hoja de cálculo. Y luego puedes usar esa hoja de cálculo de
limo y
puedes importarlos aquí
dentro de nuestros proyectos. Entonces si vuelvo aquí
y nuestro proyecto, solo
puedes importar esas
texturas de nuevo a los activos, enemigos, y puedes volver a hacer todo
el proceso, y puedes sumar más enemigos. Por lo que hasta ti lo que
quieras hacer con el juego, puedes intentar jugar
y divertirte con esto. Entonces digamos, Bueno, y
pasemos a la siguiente lección.
55. Agregar el primo de cuerda: Hola a todos y bienvenidos de vuelta. En este apartado vamos a trabajar con declinación
siendo mecánico. Tan gran trabajo
por llegar tan lejos. Has estado haciendo
mucho progreso. Y se puede ver
que hemos estado haciendo mucho. Y en esta sección para que
el cliente sea mecánico, tenemos mucho que aprender. Así que sigamos adelante y empecemos a
sumar el sprite de cuerda. En el material del curso. He incluido para
ti, las cuerdas brillantes. Si vas al
Curso Materiales y luego vas al medio ambiente. Y dentro de aquí tienes
esta textura llamada cuerda. Así que volvamos a
nuestra carpeta constante. Y dentro de los activos, y ya tenemos una carpeta de
entorno. Entonces dentro de aquí,
dentro de texturas, voy a subir mi cuerda, así que arrástrala a la carpeta de
texturas. De acuerdo, así que dentro de aquí,
hagamos clic derecho. Vaya a Acciones de Sprite y
aplica papel a la configuración. Tratemos de hacer clic en él
y luego crear un sprite. Por lo que nada nuevo hasta ahora. Esto es lo que hemos
estado haciendo hasta ahora. Voy a llamarla como una cuerda. Vale, entonces ahora tenemos
este sprite de cuerda. Entonces, hasta ahora hemos estado
haciendo flip books. Y como se puede ver aquí, la cuerda obviamente
no es un libro flip, no
es una cuerda animada. Entonces vamos a arrastrarlo aquí
al medio ambiente. Y ahora estamos trabajando
con un sprite. Creo que este es
el primer sprite que vamos a añadir
a nuestro entorno. Y antes añadimos el sprite, como puedes arrastrar el sprite y agregarlo al
entorno así y
tal vez establecer
el y a 0 o uno. Y se podría simplemente
colocar la cuerda así y todo está
bien y se agrega la cuerda. Pero el problema con esto es
que vamos a agregar código a la cuerda porque nuestro jugador
va a interactuar con ella. Entonces vamos a borrarlo aquí. Y voy a
convertirlo en un plano en su lugar. Así que siempre que
tengas algo con lo que el jugador está interactuando, debes pensar
automáticamente en convertirlo en un plano. Entonces vamos a los
planos y esto nos
permitirá crear algún
código para la cuerda. Así que déjame hacer clic
aquí y hacer una nueva carpeta y
llamarla escalando. Por aquí. Vamos a hacer clic derecho
e ir a los planos. Y luego en realidad solo haz clic aquí
arriba, Clase Blueprint. Al hacer click aquí de nuevo,
busca el papel aquí abajo. Y queremos hacer un sprite. Entonces antes creamos flip
books y mapas de teselas, pero esta vez también
creamos personajes. Esta vez vamos
a crear un sprite. Para éste, lo voy a
llamar cal siendo base. Entonces este es el plano base
para que el cliente sea
igual a lo que teníamos para
la base de personajes y la base del jugador. Ahora tenemos un cliente
basado porque está bien. Tienes una cuerda en este momento, pero en el futuro, ¿y
si quisieras tener una escalera? Y si quisieras tener una
pipa como la tienes como un mapa de la industria, entonces tal vez tengas tuberías que usas como
letras o cuerdas. Por lo que tenemos una
base de sujeción y luego podemos sumar muchos objetos escaladores. Entonces escaleras, cuerdas, pipas, lo que quieras
añadir a tu juego. Así que ahora hagamos clic con el botón derecho esta base de escalada y crear
una clase Child Blueprint. Y a partir de esto vamos
a crear la cuerda BP. De acuerdo, vamos a archivar y
guardar todo hasta ahora. Entonces para la cuerda trepadora o más cuerda aquí,
vamos a hacer doble clic. Y dentro de aquí tenemos el objeto render o
recordar componentes renderizados. Y seleccionemos nuestra fila aquí. Entonces buscando cuerda
y seleccionando nuestra cuerda. Muy bien, entonces ahora se agrega
este. Y lo que podemos hacer aquí es que ahora
podemos arrastrar nuestros planos, arrastrados al nivel. Vamos a establecer la ubicación a 0. Voy a configurarlo a
uno porque recuerda las fichas base están en 0 y no quiero
molestar a todo lo demás. Entonces voy a poner este a
uno y vamos a moverlo aquí. No lo sé, tal vez
algo como esto. Y voy a mover a
este enemigo para que
en realidad pueda ver dónde
estoy colocando esto. Entonces algo como esto
y un poco abajo para que,
esa parte está colgando de
los azulejos de aquí arriba. Ahora se puede ver que
la cuerda
en realidad está interfiriendo con nuestra malla de
navegación, por lo que nuestros enemigos ya no pueden
moverse aquí. Así que hagamos click sobre
la base de escalada. No queremos eso. Por lo que da
clic en la base de escalada. Vamos a quitarlo de todo
el cliente siendo objetos. Dentro de aquí haciendo clic
en los componentes de render. Veamos ahora, sólo escuchemos en la colisión o ninguna
colisión en absoluto. Y el jugador no puede
pisar encima de ella. Y no generará
ningún evento de superposición. A los eventos de superposición que
haremos más adelante, vamos a sumar casillas de
colisión. Entonces no es realmente el componente de
render en sí. Son las cajas de colisión que vamos a hacer,
las superpuestas. Por lo que ya puedes ver que
no se está superponiendo con nada y
todo está fijo.
56. Evento de superposición de cuerdas: Trabajemos ahora con los eventos de superposición de
cuerda. Entonces para los eventos de superposición de cuerda, necesitamos una caja de colisión. Entonces vamos a la base de
escalada y añadamos uno. Y la razón de nuevo, por qué lo estamos agregando a la base colombiana
y no a la cuerda es porque cada vez que creamos más tarde en una gran cantidad de objetos
trepadores, todos esos objetos tendrán esta colisión bichos porque todos estos
objetos de aglomeración serán hijos de esta base de escalada. Entonces lo que añadamos
aquí se aplicará a todos los niños aquí en
el componente render. Vamos sólo una caja de colisión. Entonces busca colisión y agrega esta llamada
colisión de caja. Y déjame
llamarlo
caja de colisión y Compile y Save. Y realmente no
necesitamos hacer más aquí. Así que minimicemos esto y déjame
volver a la cuerda ahora. Y abramos el editor de planos
completo. Dirígete a la ventanera. Y dentro de aquí
tenemos que ajustar esta por lo que está llenando esta cuerda aquí en la caja extensión voy
a hacerlo ahora mismo 55, realidad
tenemos que
probar esto en juego. Entonces, pero por ahora
sólo podemos ponerlo en 55. O tal vez si
quieres hacerlo más grande, puedes, incluso puedes hacer 1010. Y en realidad hagamos eso. Vamos, intentemos hacer
diez en lugar de cinco. Negativo cinco es demasiado
pequeño para este número, tal vez algo así como
50 de nuevo, o 6065. Nuevamente, tenemos que
probar esto en juegos. No estoy seguro de cómo se
verá ahora mismo. Entonces algo
así donde lo hemos colocado como 40 en la z y 101065 aquí para
la caja de colisión. Entonces voy a volver a la base de escalada y
por la caja de colisión, bajando a la colisión, lo único que
voy a cambiarlo, éste puede los
personajes dar un paso adelante, voy para hacer click y no, creo que todo
está bien por ahora, así que no toquemos
nada aquí. Ahora para hacer los eventos de superposición, puede hacer clic en
el cuadro de colisión de nuevo al igual que antes. Bajar a la
parte inferior y haga clic en éste en el componente,
comience a solaparse. Entonces, qué debería
pasar cuando empecemos a solapar el cuadro aquí, voy a eliminar
los eventos predeterminados. Entonces, ¿qué debería
pasar si comenzamos a solapar esta caja de colisión? Y se puede ver la caja de
colisión es ésta, esta plaza aquí que agregamos. Entonces, ¿qué debe el candado cuando el jugador viene aquí y saltando sobre esa
caja de colisión, ¿qué debería pasar? En primer lugar, tenemos que
comprobar si es el jugador el que está interactuando
con nuestra caja de colisión. Y antes de eso
en realidad voy a decir que switch tiene autoridad. Porque de nuevo, para colisiones
añadimos cuál tiene autoridad para asegurarse de que sea el servidor quien maneja
toda esta información. No queremos que el jugador
haga trampa porque de nuevo, la autoridad es el servidor, el remoto es el cliente. Y si el cliente
hace todo esto, así que si quitamos esto
y solo codificamos aquí, el cliente tiene una gran
posibilidad de hacer trampa y realmente no queremos que los clientes
engañen en nuestro juego. Entonces switch tiene autoridad, el servidor tiene la
autoridad sobre cualquier cosa. Y el servidor comprobará si se
permite a los clientes hacer esto. Switch tiene autoridad y luego
tenemos que comprobar si se
trata de los jugadores. Entonces el otro actor,
que es el jugador, vamos a arrastrar aquí y
decir que el actor ha etiquetado. Y si el actor
tiene el tag player, y hagamos una rama aquí. Autoridad. Entonces así. Por lo que pasa por el servidor y comprueba si
el actor tiene el tag player, lo que significa que es el jugador. Y vamos a asegurarnos de que
nuestro jugador tenga esta etiqueta. Entonces volviendo a los planos,
jugador, base de jugadores,
creo que lo agregamos antes. Déjame revisar
los valores predeterminados de clase y aquí
puedes buscar etiqueta. Y aquí agregamos antes. Así que solo asegúrate de tener el tag player agregado
a tu base de jugadores. Entonces ahora si la etiqueta o si el
actor tiene el tag player, que hacemos, si eso es cierto cuando queremos
hacer algo. Y sólo voy a dirigir
un evento llamado puede escalar. Entonces cuando choques con
esta caja, puedes escalar. Pero si no
choques con esta caja, significa
que no puedes
subir porque no
hay cliente siendo
objeto cerca de ti. Así que volvamos. Déjame abrirlo de nuevo aquí. Y aquí podemos decir, podemos ejecutar un evento
diciendo que puede subir, y esto será dentro
de la base de jugadores. Entonces dentro de aquí tenemos que
hacer un evento primero, y vamos a trabajar aquí
abajo por ahora. Permítanme hacer un evento personalizado diciendo una tormenta eventos
diciendo Can cal. Y éste realmente
podemos
convertir en una Interfaz de Blueprint. En realidad, hagamos eso de
inmediato en lugar de hacer todo ese trabajo. Entonces déjame ir a la Interfaz
Blueprint y déjame ir a
la base de jugadores. Y aquí, permítanme añadir una
nueva función de blueprint. Y déjame decir puede subir. Lo que queremos
agregar aquí es un booleano. Entonces voy a
sumar dos variables. Primero, un
dicho booleano puede escalar. Y permítanme añadir aquí una B
para booleano puede subir. Lo segundo es que quiero
definir al cliente siendo objeto. Así ser cliente. Objeto. Entonces, ¿es una carta, es una túnica o lo que sea? Entonces el objeto escalador es, nuevo, lo que hiciste aquí. Esta base de escalada. Si miras aquí arriba, es un actor sprite de papel, por lo que necesitamos una referencia de eso. Así que volvamos y digamos papel sprites actor
aquí, referencia objeto. Por lo que ahora tenemos la puede subir
y la referencia objeto. De acuerdo, entonces Endo jugador base, ahora
podemos llamarlo diciendo puede subir línea y
tienes ese evento aquí. Entonces esto es lo que
finalmente queremos correr. Por lo que aquí cuando chocan
en la base de escalada, cuando chocan con
la caja de colisión. Y es el jugador. Queremos llamar a ese evento. Entonces para llamar a eventos desde
la base del jugador, de nuevo, tenemos que arrastrar del
otro actor y decirlo, jugar referencia
que hicimos antes. Y entonces podemos decir, podemos escalar. Por lo que ahora podemos ejecutarlo y
recordar que es mensaje porque es una función de
Interfaz Blueprint. Por lo que aquí se puede subir. Tenemos que tomar esto porque
ahora estamos superpuestos. Sí, queremos escalar
o sí, puedes escalar. ¿ Cuál es el objeto de sujeción que puedes arrastrar desde
aquí y decir yo mismo. Porque recuerda que estás
dentro de la base de escalada. Entonces si es una cuerda, si es una escalera, nos
va a dar
auto-referencia y
definirse automáticamente porque ya
estás dentro de aquí. ¿ De acuerdo? Por lo que necesitamos una
superposición terminada o solapamiento final. Por lo que haciendo clic en el cuadro de
colisión de nuevo, bajando y haciendo clic en
n-componente y solapamiento. Entonces, ¿qué debería
pasar cuando termines superponiéndose con ese componente? Voy a copiar pegar
todo esto de nuevo, no
tenemos que escribirlo. Nuevamente. Me encanta el código copiar-pegar. Así que solo conéctate, recuerda
conectar todos esos
y puedes subir. Se debe simplemente quitar
porque ya no se puede subir porque
ha terminado el solapamiento. En cuanto al objeto Alambic, voy a eliminar esto
y lo que esto significa, va a vaciar declinación
siendo variable objeto. Entonces la variable
estará vacía porque ya no
estamos
chocando con nada. Y eso
tiene sentido. Así que vamos, digamos todo aquí. Y ahora va a pasar
a la base de jugadores y
jugar este evento. Entonces para este evento aquí puede escalar en lugar de hacerlo
directamente aquí, recuerda que estamos jugando
en multijugador, así que tenemos que ejecutarlo a
través de los servidores. Entonces haciendo una nueva costumbre eventos
llamados como Harvey y lima. Porque recuerda cuando
estableces variables, tienes que hacerlo a
través del servidor para asegurarte de que el
cliente no esté engañando. Así que de nuevo, vamos a
hacer clic en el servidor, ejecutarlo en el servidor, confiable. Y ahora solo puedes
ejecutar esos eventos del servidor. Por lo que se puede ver que este es el mismo patrón que hemos
estado haciendo todo el tiempo aquí. Como lo mismo
con el salto, o pasa por
el servidor y luego pasa por el
multicast con el sonido. Y aquí lo mismo
con el movimiento mal estado. Se pasa por el servidor
y luego establece la variable por lo que es el mismo patrón que
estamos haciendo todo el tiempo aquí. Yo diría que sólo sigue practicando y nos pondremos mucho más fáciles. Sé que es muy difícil
desde el principio, pero ahora vamos a ejecutarlo
a través del servidor. Y el servidor ahora va
a establecer estas variables. Por lo que de nuevo, necesitamos
dos variables aquí. Uno es un
dicho booleano puede escalar. Y el segundo
fue un actor de papel, que está disminuyendo objetos. Y fue el periódico
un actor sprite. Este papel es actor brillante. De acuerdo, entonces ahora podemos
establecer las variables. Vamos a hacer clic derecho en
este objeto de sujeción y promovido a una variable. Y voy a quitar
ese espacio aquí abajo. Por lo que ahora tenemos el
objeto escalador como variable. Y vamos a hacer clic derecho se puede
subir promovido a una variable. Y voy a quitar
ese espaciado aquí abajo. Y dice que ya
tenemos esa variable I, y creo que es
la función aquí. Así que déjame poner
una B al frente, así que es un booleano y ahora
podemos escribirlo aquí. Así puede subir y bombear objeto. Recuerda que estamos en el servidor, por lo que el cliente no tiene
idea
a qué se establecen los valores de estas variables porque
las estás configurando en el servidor. Entonces cuando juego como cliente, así que tienes el servidor aquí. Pero si juego como
cliente, ahora, no
tengo idea de lo que es
la lata trepar. Por lo que en realidad puedo simplemente imprimir
a la pantalla para que
en realidad podamos ver y podemos
aprender juntos de esto. Entonces arrastrando este booleano, voy a imprimir el
valor de ese booleano hacia fuera. Así que ahora si soy el servidor, este es el servidor ahora
y vivía con él. puede ver que dice
falso en este momento. Esto se debe a que
realmente no lo estamos pasando. Así que hagamos eso ahora. Vamos a conectar esos. Entonces el evento, por lo que va de esta caja de colisión
a la línea aquí. Va a ponerlo en verdad. Así que puede subir se establece en verdad. Ahora, va a ir a la base de jugadores y
conectemos esos. Y va a ir todo el camino por aquí y
va a imprimirlo. Entonces ahora va a decir verdad. Vamos a saltar aquí. Y se puede
ver que dice verdad cuando chocamos y dice falso cuando ya no
chocamos. Entonces esto es correcto. Ahora vamos a jugar como
cliente aquí. Estoy desove como cliente. Y se puede ver como el cliente, es decir verdad. Pero es naturalmente el cliente
diciendo que es el servidor. Se puede ver que está
imprimiendo como el servidor, pero yo soy el cliente. Este es el problema. Yo, como el cliente
no tengo ni idea de cuáles son
estos valores porque no los
puedo ver. El servidor no
me ha dado esa información. Por eso es tan importante
replicar las cosas. Esta es la base de
multijugador y Unreal Engine. Así que hagamos clic en esta
variable y repliquemos esa información de nuevo a los clientes para que los clientes
puedan ver cuál es el valor. Ok, Así que ahora que
se replican, déjame eliminar que
están en cadena. Entonces ahora si haces click
en play y tú como cliente jugarás
como este personaje, pesar de que estás
saltando y ves que es el servidor
imprimiéndolos? Eso es correcto. Es el servidor realmente
configurando esas variables. Pero ahora que las estás replicando
de nuevo al cliente, el cliente puede realmente ver el verdadero valor de esto
si es verdadero o falso. Entonces recuerda replicar variables que necesitan
volver al cliente también. Entonces para esto podemos subir, podemos arrastrar desde este
booleano y hacer una rama. Por lo que ahora si puedes subir, tenemos que hacer algo. Si no puedes subir, tenemos que hacer otra cosa y lo
haremos
en la próxima lección.
57. Entrada del movimiento de ascenso y abajo: Demos ahora al jugador
la capacidad de moverse arriba y abajo en esta cuerda
aquí. Para moverse hacia arriba y hacia abajo. Volvamos a
los planos y agreguemos el movimiento
dentro de la base del jugador. Por lo que dentro de aquí,
hasta ahora tenemos este llamado mover a la
derecha y a la izquierda, pero necesitamos uno nuevo
llamado mover hacia arriba y hacia abajo. Entonces hagamos realmente
un nuevo insumos. Así que volvamos a Editar
y configuración del proyecto. Recuerda
que hicimos eso hace un tiempo. Por lo que espero que puedan recordar esto. Entonces yendo a la configuración
del proyecto, haciendo clic en los insumos. Y dentro de aquí
tenemos esto hasta ahora. Hagamos un nuevo
mapeo de accesos y llamémoslo mover hacia arriba y hacia abajo, derecha e izquierda si quieres. También se puede escuchar que
Lipsky hizo los equivocados. Por lo que aquí quiero hacer click
en este plus aquí, puedes añadir más
botones si quieres. Entonces, por ejemplo, la
flecha derecha y la
flecha izquierda en tu teclado. Entonces tanto da como también derecha e
izquierda funciona en el teclado. Y recuerda por la izquierda hay
que escribir menos uno. Así que en caso de
que lo quieras en tu juego también, incluso
puedes agregar un controlador
también para jugar con, pero necesitamos un
poco más de configuración ahí. Así que vamos a centrarnos aquí en ellos. Muévete arriba y abajo. Y podemos usar W para movernos hacia
arriba y S para movernos hacia abajo. Y de nuevo tenemos que escribir menos uno para el S.
Así que subiendo como uno, menos uno para el bajando. Si lo desea, puede
agregar sus teclas de teclado. Entonces flecha arriba, flecha abajo. Y hagamos
uno menos en la flecha hacia abajo. De acuerdo, Así que ahora nos hemos
movido arriba y abajo. Vamos a cerrarlo. Y dentro de aquí en realidad
voy a escribirlo como la
primera cosa aquí arriba. Este es nuestro evento principal. Así que escribamos, movamos hacia arriba, hacia abajo, y seleccionemos
este evento eje. Entonces moviéndose hacia arriba y hacia abajo. Entonces antes si regresas aquí, dijiste conseguir la rotación de control y luego obtuviste
el vector delantero. A lo mejor ya puedas
resolverlo. Entonces lo que vamos
a escribir aquí, así consigue la rotación de control aquí. Entonces quieres
levantarlo vector. Entonces ahora vamos
a subir y bajar. Añadamos, de nuevo, añadir entradas de movimiento, al
igual que antes. Vamos a conectarlo aquí, y conectemos aquí
el valor del eje. Ahora, si compinas
y haces clic en guardar, y haces clic en play. Y si haces clic en
el arriba y hacia abajo, ves que
realmente no está pasando nada, pero tienes tu código escrito. El problema está aquí en
un irreal es que el arriba y abajo
solo va a funcionar
cada vez que cambies tu modo de movimiento. Entonces en el movimiento de personajes, se
puede ver que tenemos
diferentes modos de movimientos. este momento estás en
el movimiento caminando. Por lo que hemos arreglado nuestra velocidad de
caminar y así sucesivamente. Por lo que en efecto somos
movimiento de carácter caminando. Pero en cuanto a subir y
bajar, en realidad hay que cambiar
su movimiento al vuelo. Así que en realidad estás volando. Técnicamente. Tenemos que
cambiarlo a eso y lo
haremos en la próxima lección. Así que no en este momento. Esta es la razón por la
que esto no está funcionando en este momento. Pero antes de que termináramos aquí, permítanme realmente añadir
este booleano aquí. Desde que ya lo hicimos. Sólo queremos movernos hacia arriba y hacia abajo cada vez que estamos
aplicando seres. Por lo que no nos interesa hacer eso si no estamos subiendo. Entonces voy a arrastrarlo aquí
y hacer una sucursal aquí. Entonces si este booleano
puede subir es cierto, entonces vamos a ejecutar
este código porque
realmente no tiene sentido
ejecutar este código si no
puedes subir. Muy bien, así que esto fue todo para
este video, muy corto. Pero más adelante vamos a sumar ahora en la siguiente lección en realidad el acondicionamiento de escalada. Por lo que estamos estableciendo algunas reglas en cuando el jugador
puede escalar el burnout. Así que pasemos a
la siguiente lección.
58. Acondicionamiento de la ascensión: Ahora vamos a añadir algo de
acondicionamiento y las reglas para cuando
el jugador puede subir. Así que volvamos a
la base de jugadores aquí. Y en lugar de la base de jugadores, bajemos a ésta donde lo dejamos. Pueden escalar. Entonces si ahora de nuevo, déjame solo recordarte
aquí en los planos dentro de la base de escalada
y escalada, es donde interactuaste con la caja de colisión de
solapamiento inicial. Y ahora puedo escalar es verdad. Entonces lo que sucede cuando
pueden escalar es cierto. Cuando la vaca puede subir es cierto. Quieres comprobar si el
jugador está presionando la tecla W. Así que moviéndose hacia arriba porque
el jugador quiere escalar, porque realmente no
queremos escalar aquí. Si el jugador no está
presionando hacia arriba o w, sólo
nos interesa que el cliente sea cada vez que el
jugador esté presionando hacia arriba. Entonces esto es algo
que hay que revisar. Así que volvamos aquí. Y cuando presiones
aquí en el movimiento, así que recuerda que
va a ir más uno. Si hace clic en S moviéndose hacia abajo, va a ir menos uno, como dijimos anteriormente. Entonces en realidad voy
a convertir esto en una variable para que
podamos usar eso más adelante. Así que déjame hacer clic derecho. En realidad,
realmente no podemos configurarlo directamente. Sólo podemos hacer eso
en un solo jugador. Así que de nuevo, tenemos que
ejecutarlo a través del servidor. Así que permítanme hacer un nuevo evento aquí, evento
personalizado y
llamarlo dicho valor del eje Z. Porque recuerda, z es, nos estamos moviendo hacia arriba y abajo
y este es el eje z. Así establece z x x, valor del eje z. Y vamos a ejecutarlo
a través del servidor, servidor establece el valor del eje z. En realidad estoy podemos hacer esto
a través de la interfaz, Blueprint Interface
y la base del jugador. Así que permítanme realmente
hacer eso en su lugar. Interfaces base del jugador y
déjame hacer una nueva función, llámalo establecer el valor del eje z. Y obviamente hay, el
valor es un flotador aquí, esto es lo que estamos
tratando de establecer. Así que déjame crear un flotador
entradas cargas, ¿de acuerdo? Y llamémoslo eje Z. Y déjame, sí, el
eje z está bien. Déjame volver a
la base del jugador. Y dentro de aquí, llamémoslo set valor del eje z. Y esta es la función
de interfaz. Y ahora va a
pasar por el servidor. Así que vamos a configurar este para que
se ejecute en servidor y confiable. Déjame simplemente mover esto un
poco para que
podamos ver qué está pasando
y déjame moverme hacia abajo. De acuerdo, vamos a ejecutar este evento de
servidor aquí. Set x es el valor del eje z, y necesitamos un flotador. Entonces vamos a crear un flotador aquí. Y llamémoslo eje z. Y ahora lo que podemos hacer es
que podamos hacer clic derecho y promocionar esto en una variable
y llamarlo eje z. Aquí. Tenemos el eje z y
déjame conectar todos esos. Y ahora podemos llamarlo aquí arriba. Entonces si se puede subir es cierto, sólo
nos interesa actualizar esto cada vez que en realidad
podemos
subir, pero porque antes podemos subir, realmente no nos interesa realmente si el jugador presiona hacia arriba o no. Sólo nos interesa si el jugador presiona nada superior
siempre que pueda subir. Así que permítanme aquí decir establecer el valor del eje
z aquí. Y en realidad déjame llamarlo
desde el valor del eje z establecido. Permítanme realmente llamarlo
desde la base del jugador int. Y así. Y ahora tenemos conectar esto,
tenemos que conectar esto, el eje o este valor del eje
al eje z aquí abajo. Y déjame correr aquí. ¿ De acuerdo? Por lo que ahora tenemos
todo conectado juntos y este valor de eje se va a actualizar a través de
este valor conjunto del eje z. Va a bajar aquí
y luego bajar en este valor. Recuerda lo que dije antes, hay
que replicar
esto
para que esta información sea
enviada a todos los clientes. Si no es sólo el servidor que conoce el valor
de esta variable. Muy bien, así que vamos
a bajar aquí otra vez. Entonces puede subir, si
se puede subir es cierto. Por lo que ahora estamos interactuando
con la cuerda. Tomemos aquí este eje z. Si el eje z es mayor que 0. Entonces, lo que significa que el jugador
está presionando hacia arriba. Y en realidad podemos simplemente
eliminar esto y simplemente decir, si el eje z no es igual a 0, entonces queremos hacer algo. Así que déjame simplemente hacer esto. Y entonces podemos
hacer una sucursal aquí. Si el eje z no es igual a 0, entonces queremos hacer un nuevo dicho
booleano está subiendo. Así que hagamos aquí un
nuevo booleano. Decir B es escalar. Así que ahora, antes de tener este
llamado puede subir, pero ahora en realidad estamos subiendo. Entonces estamos haciendo un nuevo
booleano llamado es escalar. Y de nuevo, tenemos
que ejecutarlo a través del servidor para que sólo
pudiéramos hacerlo aquí así, porque recuerda, ya
estamos dentro
del servidor, pero creo que lo
estaremos usando más adelante en donde
en realidad lo
van a utilizar aquí a través del cliente y necesita
correr a través del servidor. Así que en realidad solo
hagamos un evento para esto. Hagamos uno nuevo
llamado evento personalizado. Y déjame hacerlo directamente dentro de la interfaz aquí. Y tan solo llámalo,
set está subiendo. Y sólo va a
tomar un booleano como entrada. Es Vi, está subiendo. Y volvamos
a la base de jugadores. Y aquí podemos decir
set está subiendo. Y podemos llamar a ese
evento que acabamos de crear. Hagamos que
pase por el servidor. Así que hagamos un
nuevo evento personalizado. mismo conjunto de servidores está subiendo. Darle una entrada de
un booleano llamado es línea siendo así. ¿De acuerdo? Y éste en realidad puede subir, pero voy a poner
aquí una B solo por buenas prácticas,
solo asegurándome de que todo esté
correcto y pueda subir. Tiene una B aquí, así que eso es genial. Por lo que aquí set está subiendo y lo
vamos a ejecutar a través
del servidor, confiable. Y lo único que
vamos a hacer aquí es a las dos, es escalar. Entonces hicimos esta variable, arrastramos, la configuramos aquí, y vamos a ejecutar esto a través los clientes para ir
a los servidores. El conjunto de servidores está subiendo
y conectarlo aquí arriba. De acuerdo, entonces vamos a
establecer esta variable aquí. Y lo que queremos hacer con éste no se replica. Replicado solo se
utiliza cuando se desea enviar información a los clientes. No obstante, de nuevo, rep
notify se utiliza
cuando se quiere cambiar
algo visualmente. Por lo que no sólo la información como
aquí y el valor del eje z, solo queríamos
enviar información. No obstante, aquí queremos hacer cambios
visuales porque
vamos a cambiar
el flip book el cliente siendo flip book. Por lo que vamos a cambiar esta replicación para
envolver notificar porque
tenemos algunos cambios visuales que necesitamos
declinar para conocer. De acuerdo, así que aquí
vamos a añadirlo. Entonces si el valor del eje z no
es igual a 0, lo que significa que el jugador está
presionando hacia arriba o hacia abajo, entonces queremos subir. Entonces hagamos eso.
Digamos que el conjunto está moliendo. Ahora podemos llamar a éste, set es escalar y
podemos hacerlo a verdad porque
ahora queremos escalar. No obstante, aquí en el otoño. Así que permítanme realmente arrastrar esto una mejor manera aquí en lo falso. Para que podamos escalar. Pero ahora hemos dejado la cuerda. Por lo que ahora ya no podemos subir porque cuando terminas
solapando con los bichos. Aquí, digamos que
ya estamos siendo escalados
y esto se pone falso. Tenemos que configurar esto a false
también porque de lo contrario
no tenemos ningún lugar en nuestro código en este
momento hemos especificado cuándo esto
será falso? Y si estás subiendo a
la cuerda y vas a
salir de la fila, entonces éste
todavía está ajustado a verdadero. Así que vamos a copiar esto y
colocarlo aquí abajo así. Entonces digamos que
ya estamos subidos siendo, así que déjame llevar esto es escalar y déjame
decir rama aquí. Entonces si estamos, así que aquí, si dejamos la caja de colisión
aquí en la base de escalada, si la dejamos y
se pone en falso. Si ya somos seres
escalados. Entonces si hay, si hay escalada
puesta a true, vamos a seguir adelante y
ponerlo en falso. Sólo asegurándose de que
esto esté configurado en falso. Y todavía no estamos
subiendo así. Así que permítanme
avanzar esto y mover esto hacia arriba y organizar
esto un poco más. Nuevamente. Cuando algo
no está estructurado correctamente, puedes seleccionarlos y hacer clic en Q en el teclado para
convertirlos en una línea como esta. Vale, entonces tenemos un
pequeño problema con esto y tal vez
ya puedas resolverlo. Déjame solo compilar
aquí y déjame imprimir esto en la
pantalla así. Y en realidad déjame moverme, déjame ir al cliente que se
basa en realidad a la cuerda. Entonces vamos a
subir la cuerda. Déjame ir al
mirador y sólo aumentar esto a 80 o
algo así. Algo grande. Y permítanme colocar al jugador aquí
arriba en su lugar. Así. Permítanme hacer click en Play. Y ahora en realidad quiero imprimirlo en la pantalla también. Entonces yendo a la base de jugadores, ahora vamos a imprimir
hola. Sí, eso está bien. Así que déjame hacer click en Play. Y ahora si hago clic en la tecla de mi
ratón hacia abajo y me muevo, se
puede ver si me muevo. Y así déjame moverme primero. Por lo que haciendo click en un para moverme
y luego hago clic en S aquí. Se puede ver que dice
Hola porque puede comprobar que cuando estoy corriendo, entonces choco con cuando
estoy corriendo y luego colisionar con mi caja aquí
y está listo para poder escalar. Se puede ver que estoy presionando mi eje z para que
no sea igual a 0, lo
que significa que en realidad se
va a poner para escalar seres. Entonces esto se está ejecutando correctamente. No obstante, el problema
ahorita que tenemos es si estoy parado a la cuerda
y quiero bajar, si hago clic en S para bajar, realmente no va a revisar. Porque recuerda, este
evento solo se ejecuta una vez. Sólo se ejecuta cada vez
que choques con la caja. ¿ Y si ya estás
chocando con la caja? ¿ Qué pasa si estás
parado en la caja? Esto nunca ha
ido a correr de nuevo. Esto sólo va
a correr cada vez que dejes la colisión y
luego chocan con ella. Nuevamente. Este evento aquí solo
se va a ejecutar una vez si no estás presionando el botón Abajo en el momento en
que estás chocando con el, con la cuerda, esto
seguirá siendo 0, por lo que esto nunca comprobará. Por lo que si hago clic en, si
vuelvo a mi juego aquí, haga clic en S para bajar. Esto realmente no
va a funcionar. Por lo que necesitamos algo que lo haga comprobar
continuamente aquí
cada vez que estoy parado en el cuadro de colisión aquí para comprobar
continuamente si esto
es igual a 0 o no. Y de nuevo, usamos
temporizadores para esto, ya
usamos
el temporizador aquí arriba. Por lo que la comprobación continua, siempre
puedes usar temporizadores, muy buenas herramientas para recordar. Entonces escuchemos, desconectemos
esto y mejore este código. Así que déjame hacer un temporizador, set, temporizador por eventos. Vamos a conectarlo aquí. Ahora
podemos hacer un evento a dos corridas desde aquí y
arrastrarlo y decir entradas de cal. En realidad hagamos eventos
personalizados. Eso es lo que quise decir. Y
llamarlo entradas subidas. Entonces esta entrada del cliente, va a comprobar, ¿es esto igual a 0 o no? Y si no lo es, entonces
adelante y sube. Voy a organizar esto un
poco más así. Y para éste, para el temporizador, lo
voy a bucle. Y por el tiempo
que va a bucle, solo
voy a escribir 0.1, lo que significa que todo el
bucle se ejecuta cada 0.12, lo que significa que esto se ejecuta
diez veces por segundo. Siempre que soy cliente siendo, realmente no
quiero
revisar esto más. Entonces voy a promover
esto a una variable. Y llamémoslo
chequear entradas encaladas. Y voy a tomar esto y decir Lear y
temporizador invalidado Por mango. Entonces cada vez que, siempre que
hayamos comprobado aquí, así que estamos comprobando la entrada. Entonces cada vez que estamos
viendo que el jugador está presionando hacia arriba y
hacia abajo sobre esta cuerda, lo que significa que
vamos a subir. Y en ese momento ya no
queremos comprobar más. Porque todo el propósito
de esto es solo verificar si el jugador está presionando hacia arriba y
hacia abajo en esta caja de colisión. Por lo que entonces podemos simplemente
parar esta vez. Y recuerda, si
no paras el temporizador, te
voy a mostrar. Entonces si acabas de imprimir
Hola todo el tiempo y te puede gustar depurar
con el halo es tan útil. Así que al hacer clic en S
hacia abajo para bajar, se
puede ver que está imprimiendo
Hola todo el tiempo. Por supuesto que es tops
cuando
ya no presionas S porque realmente
no te estás moviendo hacia abajo. Pero si presiono,
imprime todo el tiempo, realmente no
quiero
imprimirlo todo el tiempo cada vez que estoy subiendo porque esto sólo es útil
para comprobar si ya, si en realidad
quieres subir la cuerda . Entonces si ya estamos
subidos siendo, realmente no
queremos revisar esto. Y es aquí donde decimos temporizador
claro e invalidado Por mango. Porque ahora podemos decir ahora, cuando esto sea cierto,
vamos a ponerlo a subir y seguir adelante y
quitar este temporizador. Entonces si hago clic en
Jugar ahora y voy aquí y hago clic en
S, manténgalo pulsado. Y por supuesto que tenemos
que imprimir algo, así que voy a poner en algo realidad
podamos
ver lo que está pasando. Voy a hacer click en Play, haga clic en S para bajar. Y a pesar de que lo estoy
sosteniendo ahora mismo, solo dijo hola una vez. Así es como haces algo
optimizado y planos, recuerda detener el temporizador siempre que ya no lo
necesites. Si no va a correr para siempre y en
realidad no quieres hacer eso. Entonces para el temporizador aquí también, solo para asegurarnos de que se detenga, vamos a copiar este código. Déjame ir aquí. Entonces si se puede subir se establece en falso. Entonces cada vez que terminas solapando con la caja de colisión, lo estamos. Entonces si ya estás subiendo
y dejarás la cuerda, solo recordemos de nuevo
para detener este temporizador. Así que solo asegurándose de que el temporizador ya no esté
funcionando. Entonces esto fue todo por
este video aquí. Entonces tenemos muchas cosas hechas. Hemos configurado el temporizador para comprobar
continuamente si el
jugador se está moviendo hacia abajo o no. Entonces todo el proceso
es solo para explicarlo muy rápidamente antes de
que terminemos este video, acaso necesitas
una explicación completa. Entonces lo que estamos haciendo
aquí inicialmente es que el jugador va a
saltar aquí en la cuerda. El jugador va a
tocar esta caja de colisión. Y lo que el jugador toca
esta caja de colisión, este evento jugará. El evento correrá
por el servidor y se va a comprobar
si el actor tiene al jugador tecnológico solo para
asegurarse de que el jugador esté tocando realmente la
cuerda y no a alguien más. Y esto es, si esto es cierto, vamos a llamar
puede subir evento, que está dentro del
jugador, actor jugador aquí. Vamos a establecer puede
subir booleano para ser verdad. Entonces queremos escalar, ¿
y qué es lo
que vamos a subir? Esa cosa que
vamos a subir por sí misma, que es lo que sea
que haya colocado aquí. Por lo que en este caso,
hemos colocado su cuerda, que es un niño de
subida, base de escalada. Entonces al escribir uno
mismo, automáticamente sabe
ir aquí a la cuerda. Y este es el actor
que estamos subiendo. Por lo que se va a
ir a poder escalar. Entonces empezamos aquí. La información
aquí, el booleano, lo pusiste a ser verdad, por lo que va a ser aquí
abajo a verdad. La información va a
continuar aquí en el servidor, enviando esas variables y
vendiéndolas para replicarla. Debido a que estamos
interesados en dar esta información a los clientes porque estamos en el
servidor en este momento, el cliente no tiene
idea de cuál
es este valor si no la replicas
de nuevo a los clientes. Ahora, si pueden escalar es cierto. Vamos a comprobar si
el jugador realmente está presionando el botón hacia abajo
para subir la cuerda. Si el jugador está presionando
el botón Down, vamos a configurar, esto es escalar a true. Cuando hagamos eso,
va a ir
a establecer que su cliente esté
pasando por el servidor, pasando por el servidor aquí, y luego configurando esa
variable a true. Ahora hemos codificado esto
todavía lo estaremos haciendo en la próxima lección. Por lo que hemos configurado esto
para envolver notificar, que luego de nuevo, recordar un aviso rojo crea
una función on-rampa. Aquí vamos a codificar
muchas cosas como cambiar tu libro flip book para
rechazar ser flip book. Por lo que el jugador visualmente puede
ver que estás subiendo. Y si vuelvo aquí, Así que si pueden escalar es falso. Si ya lo estás, si ya
has dicho que la está subiendo para ser
verdad, eso es cierto. Vamos a ponerlo falso porque ya no
se puede escalar. Y vamos a
detener el temporizador de todos modos. Si pueden, subir va a ser falso y no lo encontrarás.
59. Actualización del modo de movimiento de un jugador: Hola y bienvenidos de vuelta. Entonces hay un pequeño bicho
ahora mismo antes de empezar, se
puede ver si me muevo
por aquí a un costado, de
repente
desaparece mi sprite y si
vuelvo, aparece. Así que bicho muy, muy raro
que tenemos en este momento. Vamos a arreglarlo
en realidad,
antes de pasar a arreglar este raro bicho, descubrí que si vas a los planos y
vas a la base de
escalada, escalada aquí, seamos realistas por toda la
sujeción objetos, puede hacer clic en el componente de
renderizado. Y si baja
a renderizado aquí, puede hacer click en Avanzado. Y si sólo minimizo esto, también se
puede ver
desaparece cada vez. Permítanme hacer click en G para
eliminar todo esto. Se puede ver que aparece
cuando estoy aquí, desaparece
cuando estoy aquí. Me enteré aquí en el renderizado
bajo componentes de render que se puede ir a la
translucidez buscada prioridad, y escribir uno, Compilar y Guardar. Y se puede ver que
aparece por lo que este bug ya no
aparecerá. Muy bien, entonces lo que
queremos hacer en este momento es que queremos actualizar
el movimiento de los jugadores. Entonces en este momento tenemos
lo correcto, estamos haciendo lo correcto. Pero ahora mismo,
realmente no podemos vivir aquí arriba. Y esto es porque queremos, debemos cambiar nuestro modo de movimiento de
jugador. Así que volvamos a
la base de jugadores. Y dentro de aquí,
comencemos a codificar la cosa dentro de nuestro ISClient
siendo función desenvolvente. Así que entrando de aquí, primero
vamos a arrastrar la
variable y escribir una rama. Entonces, ¿qué debería pasar
cuando estás escalando? Por lo que el jugador golpea la cuerda y presiona el
botón W para subir. ¿ Qué debería pasar? Lo primero que queremos hacer es tomar el componente de
movimiento de personajes y luego arrastrar desde aquí y
decir Modo Set movements. Éste. Y entonces esto es, vamos a poner
esto a volar porque cuando estás subiendo, en realidad
estás volando. Por defecto en este momento
estamos caminando por ahí, y esta es la caminata. Siempre que estamos saltando. Recuerda aquí en el salto, si vuelvo a la Gráfica de Eventos, cada vez que saltamos, así que si puedo encontrar el código está en algún lugar aquí. Entonces para el
código de salto de aquí, puedes ver antes
si recuerdas, hicimos de esta una
función pura donde
comprobamos si el
movimiento del personaje cayendo no era cierto. Caída es siempre que estamos saltando aquí y
el modo de movimiento, si vuelvo a la función
desenvolver, la caída es cada vez que
estás saltando, el caminar es ahora mismo
cuando estamos caminando por ahí. No obstante, cuando queremos escalar, tenemos que ponerlo a volar. Por lo que en realidad estamos
volando por ahí. Y justo antes de que me olvide, déjame ir a los
movimientos de los personajes y bajar aquí al
vuelo por aquí. Permítanme fijar la
velocidad de vuelo a 1 quinto. Lo probé en la historia de Maple, así que toqué la historia de Maple
hoy para echarle un vistazo. Y se trata de 115 velocidades. Tienes que probarlo en juego
para ver solo puedes dejar que sea 600 y en realidad puedes probar
y ver qué tan rápido es esto. Pero lo voy a cambiar
a 150 en este momento. Y rompiendo la aceleración
si no te pones eso. Por lo que si haces clic en
W y te dejas ir, aún vas
a volar hacia arriba. No quiero eso. Quiero como Wonder
player que suelte el botón W para
no subir más. Quiero que el jugador se detenga por completo y no se
deslice hacia arriba todavía. Voy a poner
eso a algo alto, como 10 mil. Entonces algunos solo un
número aleatorio, Compile y Save. Y cuando el jugador no
está subiendo, así que cuando el jugador ha
dejado ir de la cuerda, voy a copiar
pega esto y ponerlo a caer porque
realmente caminando, porque quiero que el jugador
caiga de la cuerda. Entonces algo como esto. Y si tú, de nuevo, si
quieres que esto se vea mejor, probablemente
deberías mover esta
plataforma y pujar hacia arriba. Entonces esto en realidad no está
golpeando el suelo. Así que volvamos a
la base de jugadores aquí. Entonces cuando el jugador no
está subiendo siendo, vamos a
ponerlo a caer. Ahora vamos a poner nuestro flip book. Así que tomemos nuestro sprite aquí. Digamos set flip book. Y conectémoslo primero aquí
arriba a la escalada. Entonces cuando estamos subiendo, queremos que el cliente sea animación y
déjame copiar pegue esto. Y cuando estamos cayendo, queremos tener nuestra animación de
salto. Entonces la animación de salto que
tenemos en este momento, pero declinando, no lo hacemos, por lo que necesitamos preparar eso. Entonces aquí para la caída, tienes esa animación de salto. Recuerdo que tenemos
dos personajes y
queremos que esto sea lo más
dinámico posible. Entonces
volvamos a tomar nuestra estructura. Vamos a romperlo. Y aquí ahora podemos tomar
nuestra animación de salto. Tomando esta animación de salto
y conectándola aquí, ocultando todos los otros
pines como este. Por lo que se ve mucho más limpio. Así que ahora tenemos esto listo, pero en cuanto al vuelo, realmente no
tenemos una animación de
subida en este momento. Aquí en los materiales del curso en los personajes en Tsarina. Se puede ver que he
preparado la subida para ti así como en Luke. Así que sigamos adelante y
minimice esto aquí. Vayamos al azul, realidad aquí en los
activos personajes o Serena primero
y las texturas. Y déjame importar la subida y hacer
lo mismo por el bucle for. Entonces ve a la textura de Luke. Aquí. Tenemos a Luke y la
subida, tan importante, pero ambos hacen
clic derecho en este 1 primero y aplican papel
a la configuración. Haz lo mismo por Serena. Haga clic con el botón derecho
del ratón, aplique papel a la configuración y
haga clic derecho aquí Y extrayamos los sprites. El cuadriculado es de un ochenta, un ochenta clicando sobre extractos. Y así éste, hay
que
renombrarlos a S lima 01. Éste es en realidad 0202. Y éste, ¿Dónde está
el otro aquí? 01. Y haz lo mismo por Luke. Así que haga clic derecho, Extraer sprites, rejilla, uno ochenta, uno ochenta. Este de aquí es como 01 y el otro
es el clima 0 a. Ahora, puedes
seleccionarlos con el botón derecho del ratón crear un libro flip llamado FB escalado. Arrástralo a la carpeta de Luke. Y fijemos los marcos
por segundo a cuatro. Así que pongámoslo a
cuatro así y hagamos lo mismo por
Serena aquí por el cliente, haga clic derecho, hagamos un
flip book llamado subida. Colóquelo fuera de esta carpeta. Aquí vamos a cambiar los
fotogramas por segundo a cuatro. Ahora vamos a guardar todo
y tenemos que recordar
agregarlo a nuestra estructura
aquí en la base del jugador. Entonces aún no hemos hecho eso. Así que vamos a ir a la
estructura y
los planos, estructuramos la información del jugador, y
agreguemos una nueva, una nueva variable llamada animación
colina. Ahora, si quieres sumar, vamos a
hacerlo más dinámico. Así que no necesariamente
tienes una cuerda. También puedes tener una carta y eso tendrá
otra animación. Entonces podemos llamarla
emisión climática o ser mejor, o puedes llamarla animación
de cuerda. Y más adelante si lo desea, puede agregar una animación de escalera. Y esa es otra animación. Entonces animación robot,
llamémoslo libro
flip book de papel o la variable es un libro flip book de papel, como aquí. Y ahorremos, permítanme realmente mover esto hacia arriba, así que arrástrelo por encima de
los efectos de sonido. Sí, en realidad quería sonar efectos para estar
aquí abajo en el fondo. Por lo que la emisión de Robin,
ahorre. Por aquí. En realidad vamos a guardar
todo, compilar y ahorrar. Y se puede ver la animación
de cuerda aparece. Permítanme volver a hacer clic en él, haga clic en Ocultar pines desconectados. Entonces aquí arriba, lo que queremos
hacer es copiar pegar esta estructura. Y puedes, como, puedes ver cada vez que escondes alfileres
desconectados y
simplemente se esconde así, ya
puedes verlos más. Puedes hacer click sobre él y dar click
en esta categoría predeterminada y puedes seleccionar
ésta es la voladora, por lo que es una escalada, esta animación de cuerda
y puedes ver que aparece y puedes
conectarla aquí. Ahora recuerda, hay que
conectar la animación de cuerda porque aún no hemos
especificado de qué es. Por lo que hay que ir
tanto a Serena como a Luke. Por lo que los planos jugador. Empecemos con mirar aquí. Recuerda en la clase T false, tienes que configurar la animación
de cuerda. Entonces si subimos por Luke, vamos a Serena. Para Serena, se va
a quedar así. Así animación de cuerda. Y luego encontremos el fúnebre. Este FP subió. De acuerdo, entonces ahora
deberían estar trabajando. Ahora, volvamos
a nuestra base de jugadores. Entonces ahora lo que estamos haciendo es que lo estamos enviando al modo volador. Entonces deberíamos poder movernos arriba y abajo aquí en
el gráfico, bajaré. Por lo que deberíamos poder movernos hacia
arriba y hacia abajo porque ahora estamos en el
modo volador y podemos escalar. Y déjame volver aquí y luego estamos poniendo el libro flip book. Así que en realidad intentemos
jugarlo y ver si me
falta algo. Siempre es bueno probarlo. Así que vamos a salvar
todo. Vamos a jugar. Ahora, si voy aquí,
hago clic en abajo. Se puede ver que en realidad me estoy moviendo. Pero el problema es que este azulejo de colisión está
deteniendo a mi personaje. Así que permítanme realmente
probarlo desde abajo aquí. Caída. Y si voy a la cuerda aquí, se
puede ver que en realidad estoy
subiendo y bajando la escalera. El problema está aquí, el título nos
está impidiendo subir. Y esto es algo que queremos
arreglar eso en el siguiente. Pero creo en
la siguiente otra vez, eliminamos esas colisiones
para que podamos movernos hacia arriba. También tenemos un pequeño bicho
donde podemos caminar a los lados a pesar de
que estamos caminando aquí. Así que sigamos adelante y arreglemos eso. Permítanme hacer click en escape y
déjame abrir la base del jugador. Y aquí arriba, en realidad
déjame ir al Gráfico de Eventos. Déjame simplemente cerrar todo. Creo que tengo mucho
abierto, muchas cosas abiertas. Ahora, aquí en el Gráfico de Eventos, voy a hacer clic derecho y
decir cerrar pestañas a la derecha. Por lo que sólo tengo eso
abierto ahora mismo. Entonces por aquí en el
movimiento a derecha e izquierda, realmente no
queremos movernos
a derecha e izquierda cada vez que estés subiendo. Por lo que podemos sumar un
booleano para eso. Entonces si sólo lo arrastro de
vuelta aquí y podemos usar el que está subiendo y se
puede escribir un booleano. Por lo que si no
estás subiendo, lo harás, podrás moverte
a derecha e izquierda. Pero dos, si estás
subiendo una cuerda, realmente no
queremos
movernos a derecha e izquierda. Entonces algo simple como esto
puede arreglar un error como este. Entonces solo usando un booleano, a veces se puede
evitar algún código. Así que recuerda siempre
los booleanos son muy, muy útiles aquí. Y se puede ver que no puedo
moverme a la derecha y a la izquierda. Y también nuestra animación, animación de
escalada está
funcionando a la perfección. Ahora, no puedo, no puedo
alejarme de mi cuerda porque creo que
mi caja de colisión es muy larga en este momento. Así que déjame volver a la cuerda. Porque estábamos probando aquí, yendo a la cuerda aquí. Y déjame solo reducir
esto a algo así como 65, algo así. Haciendo click en Jugar
ahora puedes, bueno, en realidad déjame poner mi
jugador empieza aquí abajo. Realmente no necesitamos
caernos todo el tiempo. Aquí. Puedo escalar, puedo moverme hacia abajo y puedo dejar aquí mi soga. Nuevamente. Puedes poner esta plataforma
más alta si quieres, o simplemente puedes hacer que la caja de
colisión sea un
poco más pequeña que no necesariamente tengas que ir hasta aquí abajo. Entonces algo así como 60
y puedo moverlo hacia arriba, algo como esto. Por lo que haciendo clic en Jugar de nuevo. Y podemos saltar y
dejaremos la cuerda cada vez que estemos
en algún lugar por aquí. De acuerdo, tan genial. Ahora podemos movernos hacia arriba y hacia abajo. Y también se puede ver
que nos estamos deslizando un poco cuando me
muevo a un costado. A veces en realidad me estoy
alejando de la cuerda,
algo como esto. Por lo que ahora me estoy moviendo arriba
y abajo de la carretera, pero también estaremos ajustando la
ubicación del cliente más adelante. Así que no te preocupes por
esto, pero por ahora, puedes ver que podemos saltar mientras
estamos aquí en la cuerda. Así que vamos a arreglar eso también. Así que volvamos a la
base del jugador y para el salto. Entonces volvamos a encontrar la lógica de
salto. Si no te estás
cayendo y
no estás alineado siendo
realmente no queremos saltar
cuando estás subiendo. Así que tomemos esto.
Y aquí podemos decir terminar aquí y booleano. Y no estás escalando. Tan locos, booleano. Nuevamente, si lo eres, si no te estás cayendo
y no estás subiendo, realmente no
queremos
saltar cuando estés escalando. Permítanme avanzar esto y permítanme hacer click en éste y haga clic en Ocultar pin desconectado. Por lo que vuelve a subir y
conectar éste en su lugar. Entonces si estamos cayendo,
no queremos saltar. Si estamos siendo colina, tampoco
queremos saltar. Por lo que tenemos que comprobar por
estos dos para asegurarnos que sólo podemos saltar sobre tu
nullclina siendo o cayendo. Así que déjame acercar
esto y
podemos probarlo de nuevo,
Compile y Save. Podemos jugar, ir en el camino. Y si hago clic en el espacio, puedo añadir salto aquí. De acuerdo, así que ahora esto está fijo y pasemos
a la siguiente lección donde en realidad
hacemos una enumeración de
objetos escaladores. Entonces en lugar de hacer
la, la cuerda sólo
se pueden agregar letras y animaciones para
esos también.
60. Subir la inclusión de objetos: De acuerdo, entonces, hasta ahora aquí en la en-rampa es la función de escalada. Hasta ahora hemos añadido
que debemos cambiar a la animación de túnica
cada vez que estés escalando. Pero, ¿y si
también tienes una escalera? Y si tienes algo más y necesitas una nueva animación, necesitas una animación de
escalada en escalera. A lo mejor tienes dos
animaciones en tu juego. Ahora queremos hacer una
enumeración para arreglar esto. Y me gusta que
mi juego sea dinámico. Entonces en el futuro cuando
quiera agregar algo, puedo hacerlo en dos minutos, no en 30 minutos. Así que hagamos que todo sea
dinámico en este momento. Se tarda un poco
más en hacer esto, pero te ahorrará
tanto tiempo cuando hayas
creado tu juego. Intenta siempre hacer estas cosas
bonitas para tu juego. Intenta hacer buenas prácticas de codificación. Y puedes ahorrar tanto
tiempo cada vez que creas un DLC o lo que sea que estés
tratando de crear actualizaciones más adelante. Se puede hacer eso en dos segundos. Entonces intentemos hacer primero
una enumeración. Nuevamente, las enumeraciones son
muy, muy poderosas. Hasta ahora hemos creado
estos estados en movimiento. Así que en realidad hagamos
clic derecho aquí, vaya a los planos y
cree una nueva enumeración. Llamemos a este tipo de objeto de
escalada E. Si pudiera deletrear así que aquí
escriba y haga clic en él aquí. Y permítanme añadir dos
tipos por ahora. En realidad no tengo
más que eso. Entonces tengo una cuerda y tengo una escalera como esta,
así que guarde todo. Y volvamos a la línea estando aquí
y escalando base. Y permítanme añadir esa
variable a mis variables. Por lo que llamar a esta
línea siendo tipo de objeto. Ahora vamos a añadir este tipo
a nuestra enumeración que hicimos llamado tipo de objeto
escalada. Esta es la enumeración. Entonces, lo que podemos hacer esto
ahora que recuerden cuando
agregamos variables al padre, se
agregará la clase
Blueprint a todos los hijos. Entonces haciendo clic en la cuerda aquí, se
puede ver en los valores predeterminados de
clase, ahora
puedo ver esta enumeración. Y puedes cambiar el tipo para cada cosa que añadas aquí. Entonces esta cuerda es
obviamente una cuerda. Pero si posteriormente agregaste una escalera,
en realidad
puedes
cambiar esto a un encendedor y sabrá
que se trata de una escalera. Y cuando se sabe que
esto es un lateral, sabe
que debe
reproducir la animación más ligera. Así que en realidad vamos a codificar
esa información en. Entonces esta es sólo una cuerda. Así que acabo de poner mi nueva
enumeración a cuerda. Y volvamos
al cliente siendo base y podemos
añadirlo aquí en realidad, en
realidad no la base de escalada. Volvamos a
la base de jugadores. Eso es lo que quise decir. Ir a una base de jugadores. Y en los oídos
recorte es escalar. Función Desenvolver. Aquí es donde queremos añadirlo. Así que vamos a alejar esto
un poco más lejos. Aquí nos preguntamos referencia
a que nuestro cliente sea base porque
queremos usar esta variable. Y recuerda que ya
hicimos una variable para esto. Si vas por aquí, cuando dijimos podemos escalar, agregamos recordar
esa autoreferencia. Por lo que en realidad ya estamos
definiendo esa base de escalada, que necesitamos llamar a esta
función o a esta variable. Ahora, podemos crear una Interfaz de Blueprint y
decir consigue que el cliente sea base. Podrías hacer eso
si quieres. Pero para este juego,
esto es muy mínimo. Yo no, no quiero
molestarme porque realmente
no lo vamos a utilizar tanto como la base de jugadores y para qué la
hemos estado usando. Así que sólo voy a costar, dije antes está bien costar mientras no lo
hagas todo el tiempo. Así que volvamos aquí
y podemos sólo para tomar esta referencia aquí, déjame encontrar que el objeto de
sujeción, déjame ahora arrastrarlo
y decir costo también. Entonces, ¿cuál es el objeto escalador? El objeto de sujeción es cuando costamos
algo que podemos decir
que está
hablando específicamente de esta base de escalada BP. Entonces el objeto escalador
es específicamente este blueprint porque
recuerda esta referencia, si se sostiene el ratón sobre
él, es sólo un actor de sprite de papel. Y estamos definiendo que
este actor sprite de papel es específicamente esta
base de sujeción y S declive siendo base. Ahora puedo acceder a cualquier información que
necesite dentro de aquí. Lo que necesitamos
es esta variable llamada tipo de objeto de escalada. Así que vayamos a la
base del jugador y arrastremos de esto y digamos que el ser colina consigue
subir tipos de objetos. Por lo que ahora podemos usar esa variable. Al igual que antes.
Recuerda lo que hicimos. Así que si recuerdas aquí, en realidad, está por
aquí a un lado. En el movimiento on-rampa Estados. Creamos estos movimientos
estados hace mucho tiempo. Y se puede hacer
eso, el interruptor en la enumeración para seleccionar qué animación
desea algún lugar. Por lo que vamos
a hacer esto de nuevo, yendo a la base de jugadores, el ISClient siendo desenvuelto. Y dentro de aquí podemos arrastrar
de esto y decir
switch, encienda esta enumeración. Entonces, ¿qué debería pasar
cuando se trata de una cuerda? Entonces, ¿qué debería pasar si
tenemos este conjunto a cuerda? Queremos reproducir esta animación. Entonces esta es la animación de cuerda. ¿ De acuerdo? Y lo que es es una escalera, si es una carta,
queremos tocar otra animación. Así que déjame copiar pegue
esto aquí abajo. Y ahora realmente no
tenemos una animación para ello. que podamos ir a
la estructura aquí y se puede agregar una nueva animación
llamada animación de escalera. Realmente no tenemos
uno para el juego. Sólo te estoy mostrando cómo
puedes hacerlo en caso de que lo
tengas o quieras
aprender a hacerlo dinámico. Así que creando aquí un libro
flip book de papel , animación de
letras,
solo puedo moverlo aquí. Ahora lo que puedes hacer, solo
voy a poner una animación aleatoria solo
para ver si funciona. Entonces voy al
jugador a Tsarina. Si acabo de guardar todo
en realidad necesito compilar
para que aparezca así ahorrando aquí
e yendo a Serena. Y por alguna razón
no está apareciendo realmente. Creo que necesito compilar
en mi base de jugadores. Entonces aquí, pinchando y compilar. Recuerda muy
importante compilar. Ahora volviendo a Serena
en los valores predeterminados de clase, se
puede ver que aparece. Entonces para la animación de letras, sólo
voy a
poner a ese cerdo aquí. El cerdo inactivo. Algo muy aleatorio
solo para ver si funciona. Se puede hacer eso en Luke también, yendo a Luke y simplemente poniendo alguna animación ociosa de cerdo al azar
solo para ver si eso funciona. Por lo que ahora está en letra y podemos tratar de hacer click en Place si
vuelvo al juego basado, asegurándonos de que
todo sea correcto. Entonces vamos a golpear esto o
conectar esto aquí. Para esta última animación, voy a
conectarla aquí abajo. Por lo que ahora tenemos ambos. Y si sólo estamos llamando, así que quitando al cliente, si es falso,
sólo vamos a saltar lejos. Y permítanme hacer clic en Ocultar
alfileres de nuevo, así como esto. De acuerdo, entonces ahora esto debería funcionar. Entonces si hago click en Play,
ahora, estoy subiendo. Se puede ver que esto está funcionando. ¿ Y qué pasa si cambio
esto a otra cuerda? Pero, ¿y si esto fuera una escalera? Por lo que cambié este tipo de escalada. Esto es en realidad una escalera ahora. Y si subo ahora, se puede ver que la animación está cambiando. Entonces dependiendo de si
tienes una cuerda o no lo haces, esto cambiará
la animación a cualquiera que sea la animación que
hayas añadido aquí, dependiendo de si es una
cuerda o si es una escalera.
61. Canal de colisión personalizado: Entonces el problema que
estamos enfrentando en este momento es una granja que sujeta
aquí en mi cuerda. En realidad déjame cambiar
esa animación. Eso se ve tan raro. Necesito cambiar esto en una cuerda de nuevo. Entonces si voy a los planos, vaya a la escalada de
la cuerda y en realidad
cambiándola de vuelta a una cuerda aquí. ¿ De acuerdo? El problema que estamos enfrentando en
este momento es si estoy subiendo aquí y
si voy a la cima, realmente no
puedo subir
a la parte superior aquí. Y la razón es este azulejo de
colisión aquí. Recuerda que tenemos colisiones. Estas colisiones mosaicos, están bloqueando
a mi personaje para que se mueva aquí arriba. Y así necesitamos de alguna manera decirle a estas colisiones que se apaguen
cada vez que estamos subiendo. Pero realmente no queremos
apagarlo para cada uno. Si queremos, si
lo apagamos para todos, todos estos enemigos
caerán del suelo. Y así lo harán todos los jugadores que estén conectados contigo, caerán del suelo
si no hay colisión. Por lo que queremos
quitarlo específicamente para que ese cliente sea jugador. Y la
forma más inteligente de hacerlo es crear nuestro propio canal de
colisión personalizado, que es muy, muy fácil. Entonces te voy a enseñar
eso ahora mismo. Podemos hacer esto yendo a Editar e yendo a la configuración
del proyecto. Y dentro de aquí,
podemos ir a la colisión, que está aquí bajo el motor. Y luego aquí en los
canales objeto , estos son colisiones, por lo que sólo podemos hacer clic en nuevo canal de objeto,
haciendo clic en él aquí. Y entonces tenemos que
darle algo aquí. Así que
llamémoslo línea siendo capa. Y la respuesta por defecto, vamos a ponerla a solapar. Haga clic en Aceptar. Por lo que ahora tenemos un canal. Entonces, ¿qué significa esto? ¿ Qué aparece esto? Y esto realmente aparece. Volvamos al mapa de
teselas que
creamos en la carpeta de mapas de teselas. Aquí es donde tenemos
estas colisiones. Entonces dentro de aquí, recuerda en el componente render
para este mapa de teselas aquí, si bajas a la colisión, puedes ver
encontrar una colisión de Alice aquí, Presets de
colisión. Demos clic en esa
flecha para verla. Se puede ver que en realidad nos está
bloqueando a todos aquí. Y acabamos de crear
este jugador de escalada. Mira lo fácil que es. Simplemente aparece aquí. Entonces cada vez que creas
un canal personalizado, aparecerá aquí. Y en realidad puedes configurarlo un entorno dependiendo de
lo que estés tratando de hacer. Entonces, hasta ahora, todo nuestro
jugador es un peón. Y cuando el jugador está sobre, nos estamos bloqueando
por todas partes la colisión
que está debajo de las fichas. Y para el jugador de sujeción ahora, lo
configuramos para que se superponga por defecto. Recuerda que
siempre puedes cambiar esto haciendo clic aquí arriba
y diciendo disfraz. Y siempre se puede cambiar
a otra cosa. Simplemente porque lo dijiste aquí en la Configuración del Proyecto,
en la colisión, solo porque estableces
el valor predeterminado para solaparse, por
supuesto
solo puedes hacer clic en Custom y cambiarlo a otra cosa, pero sólo estará en
solapado por defecto. Entonces aquí voy a
volver a bloquear todo de nuevo. Por defecto ahora están subiendo
jugador está configurado para solaparse, lo que significa que
en realidad puedo ahora en realidad
dejarme quitar todas
estas líneas aquí. Entonces por defecto, ahora puedo, si soy el cliente siendo jugador, ahora
puedo pasar por todas estas colisiones porque ya no me
bloquearán. Se solaparán conmigo. Entonces tenemos que decirle el motor ahora que cada vez que estoy subiendo, quiero que el jugador sea
esta colina siendo jugador. No quiero que mi
jugador siga siendo
un estanque porque a pesar de que hice este canal en este momento cuando
estoy subiendo a mi personaje todavía sobre y está bloqueado
por estas colisiones. Entonces tenemos que decir que
queremos cambiar nuestro canal. Y si voy a un jugador
ahora jugador base, se
puede ver aquí en el
sprite o en la cápsula. Aquí en este brillante se
puede ver que estoy sobre, por lo que el canal objeto es peón. Y recuerda aquí y los estanques de objetos renderizados están siendo bloqueados desde el canal de
colisión. Entonces tenemos que cambiar
esos ajustes. Y hagamos eso
en la base de jugadores donde tenemos el ser cliente, sólo
nos
interesa hacer esto siempre que el jugador esté subiendo. Hagamos esto antes de
cambiar la animación. Así que permítanme mover todas
estas animaciones
a un lado, más lejos aquí. Así que cada vez que soy la línea M, quiero llevarme al jugador. Así que tomando este Componente
Cápsula, puede ver el componente cápsula
aquí está configurado para disfraz, pero aquí abajo en
el canal objeto, se establece a un estanque y no
queremos que la cápsula se superponga. Así que volvamos
aquí a la cápsula, menos arrastre esto
aquí en el mundo. Y podemos cambiar
este tipo de colisión. Entonces si bajaras, puedes ver que este es
el tipo de objeto. Y siempre es bueno
mirar los nombres porque entonces en realidad se puede
saber cómo se llama. Entonces si sólo arrastra de
aquí y dices colisión, porque esto es lo que nos
interesa cambiar. Recuerdo que se
llamaba tipo de objeto. Tratemos de ver si tenemos una función llamada
set object type. Y aquí establecido o está aquí
Establecer tipo de objeto de colisión. Por lo que pinchando aquí. Y si por alguna razón me
hizo uno, déjame simplemente borrar mi anterior
y déjame conectarme aquí. Entonces cada vez que estamos subiendo, me interesa cambiar mi cápsula que está chocando. Quiero cambiarlo a
una línea siendo jugador. Esta es la costumbre
que hemos hecho. Y cada vez que ya no estoy
trepando, quiero
cambiarlo de nuevo a sobre. Para que puedas copiar,
pegar esto aquí abajo, conectado de nuevo así. Y alejémoslo. Aquí. Puedes cambiarlo de
nuevo a un poema. Así que solo lo estamos
cambiando a un jugador de sujeción
cada vez que estamos subiendo, pero lo estamos cambiando de nuevo a **** cuando ya
no estamos subiendo. Ahora vamos a compilar y ahorrar, y es tan fácil como esto. Entonces intentemos ver
si tenemos algún bichos. Por lo que ahora se puede ver,
ahora puedo escalar a través de él porque soy
un jugador de escalada. Canal de objetos y
mis colisiones. Y puedo subir aquí, y ahora solo puedo
caminar por ahí porque ahora estoy en mi canal de
objeto peón ahora.
62. Ajustar la ubicación de la subida: De acuerdo, entonces el pequeño problema que
tenemos en este momento, cada vez que caminamos y saltamos, a veces aterriza en la cuerda. En ocasiones se puede ver que aterriza
en el costado de la cuerda. Por lo que realmente no específicamente
en la bata aquí. Por lo que tenemos que ajustar
la ubicación de salto cada vez que estés saltando
encima de esa cuerda aquí. Así que déjame volver aquí y
volver a la base de jugadores. Y la mejor manera de hacerlo se
actualiza continuamente en algún lugar. Y lo que estoy
pensando cuando hago esto es ¿qué eventos tengo esa actualización
continua
que puedo usar? Realmente no quiero
hacer que un evento marque. Realmente no quiero hacer eso. Entonces tenemos algunos temporizadores, pero estos se detienen cada vez que pongo a mi cliente siendo
así cada vez que estoy subiendo siendo lo que se está
actualizando continuamente, esto se detiene
cuando estoy subiendo. Entonces la cosa está aquí cuando
nos movemos arriba y abajo, esto sigue actualizándose. Así que sigo moviéndome hacia arriba y hacia abajo. Así que en realidad hagamos esto aquí. Después agregamos la entrada de movimiento. Sólo queremos ajustar la ubicación cuando
estamos siendo colina. Así que déjame porque aquí
si no hago eso, se ajustará la
ubicación cada vez que solo esté interactuando con
la cuerda y pueda subir. Así que arrastremos esto aquí y hagamos un booleano o
en realidad una rama. Siempre que estoy subiendo, quiero ajustar a mi
cliente siendo ubicación. Entonces lo que estamos tratando de
hacer es que queremos establecer la ubicación del jugador
a donde sea esto,
este actor de aquí es
este actor de cuerda. Entonces dondequiera que esté este actor y cuando estamos
saltando encima de él, quiero poner a los
jugadores x ubicación. Recuerda que la ubicación x es
lo que está pasando mal en este momento. Porque o bien el jugador está demasiado lejos a la izquierda o demasiado lejos
a la derecha de la cuerda. Entonces es la ubicación x que
necesitamos ajustar aquí. Quiero configurar a mis
jugadores x ubicación para que sea la misma que esta ubicación de
actores x. Entonces si vuelvo a
la base de jugadores, así que si estoy reclamando aquí, quiero ajustar mi ubicación. Tomemos este objeto
o objeto de sujeción. Permítanme hacer clic derecho y decir
Convertir a un get validado. Porque recuerda si ya
no te estás solapando, si vuelvo a mi lógica que veas por qué
estoy haciendo esto. Volviendo a la base de escalada. Recuerda, cuando ya
no estás subiendo, estás configurando esta
variable para que no sea nada, lo que significa que no tienes nada
dentro de esta variable. Entonces es por eso que estoy configurando
esto solo para no recibir ningún bichos. Entonces solo estoy viendo si
esta variable es válida, si contiene algo
y si lo hace, si lo hace. Así que permítanme llevar aquí la ubicación de los actores,
sin embargo ubicación de actores. Y entonces también estoy consiguiendo
la ubicación de los actores de los jugadores. Así que consiga la ubicación del actor. Y éste, el
objetivo es uno mismo. Recuerda que estamos en
la base del jugador, por lo que esta es la ubicación del
jugador. Esta es la ubicación del objeto. Voy a romper por ambos
para que pueda usar la X, Y, y Z porque sólo me
interesa la x aquí. Voy a romper el
vector aquí también. Y sólo voy a
ejecutar este código aquí, ajustando la ubicación del jugador cada vez que no estamos en la cuerda. Pero si nos hemos
ajustado a la cuerda, entonces ya no
quiero ejecutar este código. Entonces si la x de la cuerda no es igual a la x de los jugadores, por lo que si son
diferentes, eso es cierto. Por lo que voy a conectar
esto como válido aquí. Si eso es cierto, voy
a ajustar la ubicación. Por lo que en realidad voy a
hacer un nuevo evento aquí. Recuerda, esto se está ejecutando en el cliente y cuando
ajustamos una ubicación, esta es una actualizaciones visuales. Y tenemos que hacerlo a
través de un rep notifique. Así que hagamos un nuevo
evento aquí abajo. Llamémoslo evento personalizado. En realidad, hagámoslo primero en
una Interfaz de Blueprint. Entonces déjame ir a los jugadores
Blueprint Interface. Y hagamos una nueva
función llamada Ajustar, línea siendo ubicación,
compuesto Guardar. No sé si necesitamos
alguna aportación en este momento. No puedo pensar en ello ahora mismo. Hagámoslo y
siempre podemos agregar variables
si queremos. Entonces aquí déjame llamarlo diciendo
ajustar, subir ubicación. Y esta es una función de
interfaz de blueprint. Hagámoslo a través del servidor. Así servidor personalizado y
ajustar la línea siendo. Si puedo escribir
escalando ubicación y vamos a cambiarlo para correr
respuesta y confiable. Y desde aquí
por supuesto podemos ejecutar este evento de servidor, solo
escalando ubicaciones. Entonces ahora lo que queremos
hacer es aquí arriba, si esto es cierto, si el, si la ubicación de la cuerda y la ubicación x no es
lo mismo que la ubicación x del jugador. Queremos ajustar la ubicación del
jugador. Por lo que ajustar la escalada. Queremos ejecutar ese
evento esencialmente. Por lo que aquí queremos ajustar
la ubicación del jugador. Entonces, en última instancia, lo que
estamos tratando de hacer es que estamos tratando de hacer un
vector. Entonces vamos a crearlo. Ahora. Estamos tratando de hacer un vector
llamado ubicación de escalada. Y vamos a convertirlo en un vector
porque es una ubicación. Y éste, en última instancia
queremos configurarlo a un rep notifique. Y dentro de esta ubicación de
sujeción desenvolver, lo único que tenemos que
hacer es establecer la ubicación del actor. Esto es lo que estamos tratando de hacer. El objetivo es auto, así que estamos tratando de establecer
la ubicación del jugador, esta nueva ubicación, esta ubicación ajustada.
Vamos a conectarlo aquí. Esto es lo que
queremos hacer en última instancia. Así que estableciendo la ubicación del jugador a esta ubicación ajustada, que está en esa ubicación de cuerdas, eso cuerdas x ubicación. Entonces si la x de la
cuerda no es la misma, actúa como el jugador, queremos ajustar la ubicación. Entonces, ¿cómo ajustamos
la ubicación? En primer lugar de nuevo, quiero volver a tomar
este objeto de aglomeración, puedes hacer un get
validado solo para asegurarte de que sea válido. Así que de nuevo, tomemos, en realidad déjame copiar esto de nuevo. En realidad vamos a
escribir lo mismo. Por lo que estamos consiguiendo la ubicación de las cuerdas y estamos consiguiendo la ubicación del
jugador. Lo único que nos
interesa es cambiar esta ubicación x porque
la ubicación y de esta manera no
estamos realmente interesados, interesados en ajustar eso. Tampoco nos
interesa ajustar la z Sólo
nos interesa
ajustar la x aquí. Si vuelvo a mi anteproyecto, lo único que nos
interesa como ajustar esto. Así que déjame tomar mi vector de
ubicación de escalada aquí, conectado y arrastrar de
esto y decir make vector. Ahora, lo que podemos hacer
aquí es que queremos
establecer la ubicación del jugador. Recuerda que esta es la,
en última instancia, la
ubicación o el ajuste del jugador. Por lo que queremos poner la
ubicación del jugador a las cuerdas x. luego hacer y y z. sólo
queremos que
se queden igual. No queremos tener
la y y z de la cuerda. Sólo queremos la y y z
y la z del jugador, sea lo que sea actualmente. Por lo que sólo nos
interesa ajustar la x. toda esa información
va a
entrar en este vector en este momento. Y cada vez que se va
a configurar tour rep notifique, se va a ejecutar
esta función aquí. Por lo que ahora vamos a establecer
la ubicación de la actriz. De acuerdo, así que vamos a
hacer clic en Jugar ahora, cuando saltemos sobre la cuerda, acuerdo, ahora esto es
realmente perfecto. Volvamos a saltar aquí. Perfecto también. De acuerdo, entonces cuando
jueguemos el juego ahora, voy a jugar como Luke en el servidor y
Serena en la línea. Así que sólo haciéndolos un
poco más grandes así. Entonces en el servidor y ahora
puedo saltar sobre la cuerda. Estoy ajustando muy bien mi
ubicación. Z sin embargo salté, está ajustando mi ubicación. ID de Alice en el
cliente para asegurarse de que
todo esté funcionando
así que estoy saltando, está ajustando mi
ubicación correctamente. Se puede ver en el servidor, hay algún error aquí. Soy cliente siendo, pero de alguna manera mi animación no
está jugando. Creo que se va a arreglar
más adelante en las lecciones donde estamos
posando y actualizando. Ya se puede ver que funciona. Entonces vamos a hacer una pausa y actualizar esta animación de Columbia porque obviamente no
queremos jugarla mientras saltamos. Pero en un principio
vamos a establecer esta animación de salto,
reproducirla y detenerla. Creo que va por todas partes. lo que sale mal Conlo que sale malestá aquí en la base del jugador. Es como juega. A pesar de que hemos colocado un booleano aquí en el
movimiento a derecha e izquierda. En realidad está jugando la
animación aquí antes o después. Aquí en el, en la
en-rampa es subir siendo después de que pusimos el flip book
a subir o escalera, sigue pasando por
aquí y jugando. Por lo que más tarde
vamos a parar e iniciar la animación
dependiendo de si el jugador
está saltando o no. Entonces creo que se arreglará. Posteriormente veremos. Pero por ahora,
dejemos que sea así. Entonces todo está
funcionando correctamente ahora y el salto está bien,
todo está bien. Estamos ajustando la ubicación. Así que compilemos,
guardemos todo, y pasemos a la siguiente lección.
63. Eliminar el sube de la espada: De acuerdo, entonces tenemos un pequeño error que tenemos que arreglar en este momento. Y si voy al ser
cliente y a la túnica y me dejo
ir a los visores. En realidad voy a
aumentar esto aquí y ponerlo aquí arriba para que
en realidad pueda subir desde la cima. Por lo que ahora puedo jugar como servidor
y estoy subiendo aquí arriba, subiendo a la cima, eso
está funcionando perfectamente. Pero el problema ahora es
si subí, se puede ver que también está
funcionando bien. Pero ahora si estoy
aquí arriba y hago clic hacia arriba, se
puede ver que puedo
calmarme, eso está bien. Pero si hago clic hacia arriba, en realidad
puedo spam. Y se ve así. Quiero decir, no es realmente el
mayor problema de tu juego, pero visualmente, creo que podemos
hacer que el jugador haga esto. Creo que es un
poco estúpido, así que vamos a arreglar eso. Al igual que quitar a este cliente
Bob spamming aquí arriba. Así que volvamos aquí. Y para ello,
creo que la mejor manera es agregar otra caja de colisión, que luego te niega presionar
el botón Arriba si lo estás. Así que agreguemos una caja de colisión aquí
arriba en la parte superior de esta cuerda. Hagamos eso en
la base de escalada. Y aquí en el objeto render, Apenas
agreguemos otra caja de
colisión. Busca colisión
en la caja de colisión, y llamemos a esta caja de colisión
superior. Lo que queremos hacer inicialmente como aquí
y la base del jugador. Lo que queremos
hacer es que queremos hacer un evento diciendo que se puede subir. Y esto es básicamente
sólo un booleano. Entonces hagamos un booleano
llamado y subamos. Esto es en realidad
lo que queremos
hacer y
lo vamos a configurar para replicarlo, obviamente porque
todos los clientes necesitan saber sobre esto. Y así puede escalar a Bob, esto es lo que estamos
tratando de establecer, y obviamente vamos a
configurarlo a través del servidor. Así que hagamos un
evento personalizado pasando por el servidor diciendo que el
conjunto puede subir. Y vamos a conectarlo aquí. Y ahora necesitamos un, necesitamos un evento normal
aquí, no un servidor. Así que en realidad me permite
recordar ejecutar esto en el servidor,
haciendo clic en poco fiable. Entonces queremos
uno normal llamado set, pueda subir a Bob y hagámoslo dentro de la Interfaz
Blueprint. Terminar interfaz de
Blueprint base del jugador. Hacer una nueva función aquí
llamada set puede subir. Hagamos un booleano.
Haz lo mismo. Se puede subir. ¿ De acuerdo? Ahora podemos volver a la base de
jugadores y llamar a ese
conjunto de eventos puede alinearse aquí. Y ahora podemos ejecutar los
eventos del servidor a través de éste. Veamos dónde
está, se puede subir. Y vamos a conectarlo. Y ahora va
a correr por esto. Entonces esto es lo que estamos
tratando de correr y lo vamos a poner en falso cuando el
jugador no puede subir a Bob. Entonces vamos a compilar y ahorrar, y volvamos a
la base de escalada. Y aquí tenemos esta
ahora caja de colisión superior. Voy a
moverlo un poco arriba, así que está aquí arriba para que pueda
verlo compilar y guardar. Y podemos volver a la cuerda y en realidad podemos
ajustar el tamaño. No creo que
deba ser tan grande. Quiero decir,
realmente no importa, pero tal vez vamos a
cambiarlo por algo como 25. Piensa, solo puedes intentarlo. Y sólo voy
a ponerlo aquí. Entonces, cuando el jugador está de
pie aquí en el suelo y golpeando esa caja, no se
puede presionar el botón Arriba. De acuerdo, así que vamos a compilar y guardar esto y
volvamos a la base de escalada. Por lo que ahora haciendo clic en este cuadro de colisión
superior, vamos a bajar a la parte inferior y haga clic en éste en el
componente comenzar a solaparse. Entonces, ¿qué debería pasar
cuando se superpone esta caja aquí? Lo que debería pasar es
que no se puede hacer clic en el botón de arriba y no se
puede subir. Nuevamente. Permítanme sólo
copiar todo este código. Estamos haciendo lo mismo. Estamos pasando por
este servidor con comprobando si es el jugador, y si es el jugador, llamemos a este llamado, lo
llamamos set puede subir. Entonces set puede subir y es el mensaje porque
es una función de
Interfaz de Blueprint. Así que puedes subir a Bob se pone en
falso porque cuando estás golpeando esta caja de colisión, no
puedes presionar el botón Arriba. No obstante, ahora hagamos el segundo es cuando
dejes esta caja. Entonces cuando estás bajo tierra, por ejemplo, puedes subir. Así que déjame conectar esto juntos. Otro componente es
éste de aquí también. Puedes subir
cada vez que ya
no te superpongas con
esta caja. Entonces la cosa es que ahora
tenemos este booleano. Y así en la base del jugador, vamos a ver dónde podemos usarlo. En la base de jugadores
podemos usar aquí cuando estamos comprobando que el
cliente está siendo entrada, no
queremos que el jugador
suba siempre que esto se ajuste a verdadero y
están ahí arriba en el suelo. Por lo que puede subir hasta aquí. Podemos decir, en lugar de simplemente
decir no es igual a 0, podemos simplemente eliminar esto y
actualizarse a otra cosa. Entonces si es inferior a 0, lo que significa que el jugador
quiere bajar, realmente no
tenemos
problema con esto. El jugador puede bajar. No obstante, cuando el jugador, y ahora podemos tomar esto de nuevo, en realidad
puedo simplemente, whoops, en realidad
puedo simplemente arrastrar de esto y decir si
es mayor que 0, lo que significa que el jugador
es tratando de subir. Aquí está el problema que tenemos. Entonces si el jugador
está tratando de
subir y se les permite, por lo que puede subir buck. Recuerda que no pueden subir cuando están
chocando con eso,
esa caja de colisión aquí arriba. Entonces si es mayor que 0, podemos decir fin. Y pueden escalar buck. Entonces queremos seguir
adelante y escalar. Y lo que podemos hacer
aquí, sólo podemos decir, lo que puede arrastrar de esto y decir, o éste o booleano. Y luego podemos conectar esto
aquí y conectarnos este año. Entonces lo que estamos diciendo es si el, si el jugador está presionando hacia abajo, lo que significa que el eje z
será negativo. Somos capaces de escalar. Si el eje z es positivo, lo que significa que el
jugador está presionando hacia arriba y en realidad somos
capaces de subir. Entonces vamos a escalar. Entonces es o bien esta condición aquí o esta condición aquí. Esto es lo que está
diciendo en última instancia. Así que ahora podemos subir, así que se está comprobando ahora, ¿en realidad
se puede subir? Y esto solucionará nuestro
problema con el spamming. Así que déjame compilar y ahorrar. Simplemente puedo hacer click en Play
y ver qué pasa. Entonces cuando subo ahora, tengo un pequeño bicho. Ya ves que no puedo escalar a Bob, así que en realidad voy a
volver a ver lo que hice mal. Por lo que el eje Z puede
subir está pasando por esto. Y está fijando ese valor. Y déjame bajar aquí a ver si he dicho esto correctamente. El problema es en este momento es
en realidad esto necesita ser cierto por defecto porque por
defecto se puede subir. Por lo que tenemos que componer seguro. Así que recuerda también, eso puede
subir como cierto en el default. Por lo que en realidad podemos
subir aquí. Para que puedas ver ahora
podemos escalar a Bob. Y si subo a Bob aquí,
puedo caminar por ahí. Si hago clic en el botón de arriba, no
puedo gastar más. Pero si hago clic en
el botón Hecho, puedo subir por la escalera. Así que ahora está funcionando.
No podemos spam aquí arriba. Simplemente podemos caminar hacia abajo, pero podemos caminar arriba
y abajo, aquí abajo. Entonces eso no es problema.
64. Pausar la animación de escaladas: Entonces lo final
en esta sección, quiero pausar la animación del
cliente cada vez que no estoy escalando. Entonces cuando estoy subiendo aquí se
puede ver la animación sigue tocando y
no quiero hacer eso. También teníamos un buck
previamente donde yo como cliente por juego. Y yo sólo lo hago un
poco más grande aquí. Cuando subo, puedes ver mi personaje se
ve raro aquí, la animación luce rara. Así que tal vez se va
a arreglar una vez que hacemos una pausa y
reproducimos la animación. Entonces intentemos hacer eso. Volvamos a
la base de jugadores. Y dentro de aquí,
quiero que hagas esto
en el movimiento hacia arriba
y hacia abajo
porque continuamente va
a comprobar que me estoy moviendo hacia arriba o bajando o
simplemente parado quieto. Entonces lo que voy a hacer ahora
se está poniendo un poco de lío y tenemos que
limpiar esto al final de este video. Así que permítanme mover esto
por aquí. Así que quiero actualizar esto cada vez que estoy
escalando siendo porque antes estoy subiendo y realmente
no quiero
hacer nada. Entonces después de éste, estoy subiendo.
Desconectemos esto. Entonces antes de ajustar
la ubicación, juguemos y detengamos
la animación. Así que tomemos aquí nuestro eje z. El eje z simplemente nos
va a decir, ¿está el jugador
presionando hacia arriba o hacia abajo, o el jugador está parado quieto? Entonces si esto no es igual a 0, lo que significa que el
jugador se está moviendo, queremos reproducir la animación. Para reproducir la animación,
puedes tomar este sprite aquí
y puedes entonces, puedes decir Play, y
toca ese flip book. Pero recuerda, no
puedes simplemente jugar el flip book porque
ahora mismo, estás en la
placa auto del cliente. Y esta es una actualización visual. Nuevamente, estamos en
multijugador por lo que necesitamos ejecutarlo
a través de un rep notifique. Porque si haces esto, sólo un cliente lo verá. Entonces vamos a quitarlo. Y ahora necesitamos convertirlo en un nuevo evento llamado la pausa,
subir flip book. Y podemos poner eso
a verdadero o falso. Así que volvamos a la función de interfaz
para la base del reproductor. Hagamos una nueva función. Y llamemos a éste. Pausa, subió. Supongamos que subió, flip book. Hagamos una variable
aquí en Boolean. Yo sólo lo llamo pausa,
subió, libro iluminado. Y vamos a compilar y ahorrar. De acuerdo, así que vamos a llamarlo aquí, pausar a ciegas, flip book, y queremos
ejecutarlo al servidor, llámalo pausa limed flip book. Ahora, éste es también,
también tiene un booleano llamado
pausa ciega flip book. ¿ De acuerdo? Entonces aquí solo estoy
asegurándome de tener B
delante de mi booleano
solo por buenas prácticas. Y bien, así que ahora
tenemos este evento, ejecutarlo en el servidor, confiable, y queremos
promocionar esto a una variable. Promover esto a una variable
llamada pausa, colina, pero flip book y voy
a poner una B delante de ella aquí y quitando los
espacios así. De acuerdo, así que éste
es un rep notifique. Por lo que haciendo click aquí,
haciendo clic en rep notificar, compilar y guardar. Y vamos a ejecutar el servidor
corriendo por aquí. Así que pausa. Tengo muchos ahora. Así que déjame simplemente buscar, pausa, colina pero flip book. Déjame pasarlo por aquí. Y en última instancia lo que
estamos tratando de hacer es estamos tratando de ir a
esa pausa, escalar, flip book, comprobando si la
pausa está configurada en verdadera o tuerca. Entonces si la pausa se establece en verdadera, queremos tomar este
sprite y decir Stop. Aquí, el flip book. Cuando se mantiene el ratón sobre
él, dice detener la reproducción de libros. Por lo que queremos detener
la animación. Entonces cuando la pausa es cierta, queremos detener la animación. Una de las pausas es falsa, lo que significa que queremos
reproducir la animación. Podemos decir empezar
o realmente jugar. Entonces se llama juego. Entonces vamos a
tocar la animación. Y ahora volvamos a
codificar esa lógica. Por lo que ahora tenemos listo ese evento. Entonces cuando estamos subiendo y el eje z cuando
estamos presionando, cuando estamos presionando hacia arriba y hacia abajo significa que no es igual a 0, por lo que en realidad queremos
moverlo si eso es cierto. Entonces vamos a conectarlo aquí. Si eso es cierto, queremos
reproducir la animación, lo que significa que podemos llamar a
este evento Pausa, subir, flip book, pausa,
subir, flip book. Este de aquí. Por lo que
podemos poner esto en falso. Entonces porque configurarlo en falso, que
significa que
no queremos hacer una pausa, solo
queremos
configurarlo aquí para pausarla. Así que cuando esto se establece en false, se va a desenvolver notificar
aquí están la función Honorlock. Y cuando se pone en falso, va a reproducir
la animación. Ahora no quiero reproducir
la animación constantemente, solo quiero reproducirla siempre
que no esté jugando ya. Entonces lo que puedes hacer es tomar este brillante y luego
puedes decir flip book. Y ahora podemos ver que
tenemos, vamos a ver, tenemos como revertir está jugando, éste está jugando. Queremos comprobar si ya
está jugando. Y digamos, digamos nueces. Entonces, whoops, no éste. No es B, que es éste no booleano. Entonces ahora lo que estamos diciendo aquí, vamos a escribir un fin
booleano también. Entonces ahora lo que estamos diciendo, si el jugador está
presionando hacia arriba y hacia abajo, por lo que el eje z no es igual a 0 y la animación
no se está reproduciendo ya. Entonces adelante y toca la
animación porque
realmente no estamos interesados
en seguir el spam. Juega a esta animación una. Ya estamos tocando
la animación. Entonces cuando no estás
jugando ya la animación, así que cuando la animación no se está reproduciendo y los jugadores
realmente presionando arriba y abajo, queremos seguir adelante y
reproducir la animación. Así que déjame simplemente seguir adelante esto. Estamos corriendo en
problemas con el espacio, así que solo organizando
las cosas un poco aquí. De acuerdo, entonces lo siguiente que
queremos comprobar,
queremos decir ahora, es el jugador de pie quieto, es el jugador de pie quieto, lo que significa que el eje z es igual a 0 porque el jugador
no está presionando hacia arriba y hacia abajo. Entonces si esto es igual a 0 de nuevo, y si la animación ya
se está reproduciendo, entonces queremos
detener la animación. Entonces y booleano de nuevo, conectarlos juntos
y hacer una nueva rama. Y toma aquí lo falso. Entonces estamos comprobando, es el eje z igual
o no igual a 0, lo que significa que el jugador se está moviendo. Si es falso porque el
jugador en realidad no se está moviendo, va a
bajar aquí y comprobar, el jugador no
se mueve? Si eso es cierto. Al igual que también va a comprobar si la animación ya se está
reproduciendo. Si eso es cierto, entonces adelante y pausa
la animación de reproducción. Voy a mover
estos de nuevo hacia abajo. Y así. Ahora vamos a
reproducir la animación o pausar la animación
si ya se está reproduciendo. Pero nos quedamos quietos. Queremos realmente pausar porque no queremos reproducir
la animación mientras nos
quedamos quietos. Y como la cosa cuando
todo es falso, queremos simplemente
ajustar nuestra ubicación. Así que pongamos eso aquí abajo. Y así cuando nos estamos mudando aquí, si nos estamos moviendo, pero la animación ya está
tocando. Vayamos aquí abajo. Va a ser falso,
va a ser falso. Y entonces sólo estamos
ajustando la ubicación. Por lo que inicialmente se está
enfocando en reproducir nuestra animación o
posar nuestra animación, y luego va a
ajustar nuestra ubicación. De acuerdo, así que creo que
realmente no necesitamos más aquí. Entonces veamos si
todo está fijo. Permítanme hacer click en play como
servidor y déjame saltar aquí. Se puede ver que no estoy jugando. Si me muevo arriba y
abajo, está jugando. Ok. Parece que todo
está correcto ahora. Impresionante. Así que déjame ahora ir como los clientes y abrirla aquí. Eso también está funcionando. Ahora veamos si aún tenemos ese cubo o
tal vez tengamos que arreglarlo. Entonces déjame moverlo aquí. Ahora todavía tenemos esa caja, así que necesito echar un
vistazo a dónde salió mal para
arreglar ese bug porque a veces aparece y
a veces no lo hace, así que tenemos algún bug. Y creo que si sólo vamos aquí
y movemos la base de jugadores, solo
pongámosla rápidamente aquí. Entonces si tengo al jugador
parado aquí y voy a la base del jugador,
y los desconecto, y los desconecto, muévete a derecha e izquierda. A lo mejor algo va
mal porque
también estamos estableciendo animaciones aquí. Así que déjame hacer click en play. Y si juego como servidor, en realidad no el servidor, el cliente, mientras
tengo el bono de servicio. Al saltar click sobre arriba. Se puede ver la
animación completa obviamente no está actualizando porque he
desconectado ese evento. Pero está jugando correctamente. Parece que no lo hacemos, nunca
tenemos un
problema en la escalera. Entonces hay alguna decodificación inicialmente es correcta
todo el código, solo
hay estas actualizaciones
que suceden a pesar que le
dijimos que solo queremos jugar esto cuando no
estamos subiendo. Entonces veré qué
puedo hacer al respecto. Entonces creo que la mejor manera de
arreglar este error es si vamos, por lo que es jugar esta animación, pero a veces
pasa por esto y jugando sexualmente
la función on-rampa. Por lo que podemos tratar de ir a la, recuerda
que hicimos ese estado de movimiento aquí, este movimiento se guarda, en realidad
se está ejecutando esa función de
estado de movimientos
desenvueltos. Entonces yendo a la función de estado de
movimiento aquí antes de
que pueda cambiar, también tiene que comprobar si
estamos subiendo o no. Así que tomemos ser nuestro cliente. Se agrupa aquí y
hagamos una rama. Y ahora va a decir,
vamos a escribir aquí un booleano nuez. Entonces si no estamos subiendo, se
le permite hacer
todos estos movimientos. No obstante, si estamos subiendo,
no hagas nada. Entonces algo como esto aquí. Así que ahora vamos a componer salvar y orar para que todo sea correcto. Entonces intentemos saltar
ahora y está funcionando. Intentemos de nuevo un
par de veces para
asegurarnos de que esté funcionando. De acuerdo, entonces ahora eso
arregla el problema. Ahora está funcionando y
si soy el servidor, y se pueden ver, así que ahora estoy saltando
como el servidor, se
puede ver que funciona también. Por lo que tanto el cliente como el
servidor se pueden ver. Y de nuevo, solo, sólo para
asegurarse de que no esté molestando. Entonces aquí en el jugador, solo
quería revisar mi
colisión en la escalera. Entonces como sprites, no estoy
generando ningún evento de superposición, así que eso realmente no importa. Nosotros, los eventos de superposición
vienen principalmente de la cápsula. Por lo que pinchando sobre la cápsula, mirando hacia abajo a los Presets de
Colisión aquí. Por lo que los poemas se están ignorando y la línea siendo jugadores se
superponen entre sí. Entonces en realidad yo también voy
a cambiar éste. Ignorarse unos a otros.
Por lo que los jugadores en las letras también se
ignorarán entre sí. Y siempre se puede
cambiar si es necesario, pero eso es lo que
podemos hacer por ahora. De acuerdo, así que ahora todo
está funcionando y
se puede ver la cámara en este momento. puede ver que está molestando. Y esto es porque sólo hay
que tener cuidado de no
colocarlo dentro de esta caja de colisión o puede
hacerla más pequeña. Voy a colocarlo afuera porque ya estamos
en la superposición. Ahora, vamos a hacer click en Play. Juega como el jugador y el cliente para asegurarte de que
el juego esté funcionando. Por lo que tenemos al cliente aquí
y tenemos al jugador aquí. Entonces el jugador responde
ahora el servidor, lugar, este tipo de aquí, el
lugar del personaje, Tsarina aquí. Y nos estamos moviendo por ahí. Y esto se ve bien. Ahora como el servidor. Eso también se ve bien, y no pueden bloquearse entre sí. Ok. Entonces todo se
ve correcto y no
puedo pasar el botón
Arriba aquí. Tanto el jugador como el cliente
pueden abarcar el botón Arriba. Ok, así que todo está
funcionando correctamente. Y vamos a tratar de
jugar ahora clientes de S2, a
veces hay que
probarlo como dos clientes para ver si eso también está funcionando
correctamente. Entonces jugando, Serena y Luke, caminando por aquí, saltando en la letra de que
las cosas están funcionando. El cliente y el servidor. Así que al hacer clic en spam
aquí arriba no es spam. Pero eso es bueno. Todo está funcionando y el cliente, la cámara está funcionando. puede ver que está ajustando
la ubicación de él. Así como eso. Entonces todo
está funcionando correctamente ahora. Y por supuesto, si nos encontramos con
alguna caja en el futuro, estaremos arreglando esos. Pero por ahora,
parece que todo está funcionando y en realidad
no hay bichos aquí. Entonces lo siguiente que
podemos hacer es que
podamos trabajar en la
salud y el daño. Y esto va a ser realmente
interesante porque ahora nos podemos dañar
de los enemigos. Podemos aplicarles daños
y será muy divertido. Así que pasemos a
la siguiente sección.
65. EXTRA: limpia tu código: Así que quería añadir
este video extra porque creo que es muy importante que
limpiemos el proyecto y creo que se está poniendo
un poco desordenado. Así que sigamos adelante y
limpiemos parte del proyecto. Lo primero que podemos hacer es entrar aquí
en la base de jugadores. Y aquí hemos terminado nuestro sistema
climático y así sucesivamente. Entonces tenemos algunos eventos
aquí que podemos limpiar. Por lo que aquí a partir
del movimiento hacia arriba y hacia abajo, puedes hacer doble clic en estos pines aquí para hacer un nodo rerutado. Y por lo general hago
esto para que parezca más magro para que podamos hacer click aquí
y hacerlo aquí abajo. Y en lugar de
tener dos de ellos, porque esto viene
inicialmente, viniendo de lo mismo. Simplemente puedo arrastrar
de éste y conectarme aquí y puedo
eliminar éste aquí. Y por algunas razones
bombearlo no me dejará borrarlo. Déjame cerrarlo y abrirlo nuevo y eliminarlo.
Por lo que ahora funciona. De acuerdo, así que voy
a bajar esto. Así que intenta todo lo posible para limpiar
todo esto aquí arriba. Y puedo mover esto
todo el camino aquí. Si lo desea, puede
hacer dos de ellos. Puedes hacer uno aquí y uno aquí y conectarlo
así si quieres,
si crees que esto se ve más limpio,
creo que esto se
ve bien ahora, tal vez muévelo hacia arriba. No, creo que esto es bueno. Por aquí. Podemos mover este moco así. Podemos
subir esto así aquí. Y esta parte del código. Esto es como Esto
se ve bien. Podemos moverlo un poco hacia arriba, tal vez más atrás,
algo como esto. Y creo que esto se
ve bien hasta ahora. Entonces aquí abajo tenemos el
cálculo del eje z. Y lo voy a mover por debajo de esto porque
pertenecen juntos. Sólo voy a
moverla aquí arriba. Entonces tenemos el código de puede subir. Voy a mover
todo esto
aquí abajo para que puedan escalar es
casi limpia o en realidad
es, en realidad está completamente limpio así que
podemos simplemente arrastrar esto más cerca. Esta es la lata trepar, pero creo que pueden escalar. Esto debería venir como
número dos porque este es uno de los
códigos iniciales también. Voy a bajar esto. Y voy a
tomar esta parte
del código que aparece debajo de aquí, solo asegúrate de que no
choquen por aquí a un lado. Entonces tenemos podemos
subir aquí también. Este es en realidad el servidor, por lo que en realidad hay que mover
esto un poco hacia abajo, pero puede mover esto, puede subir por encima de él. Entonces empieza aquí y
baja al servidor. Y luego tenemos el está
subiendo y tenemos la pausa del libro flip y posando el flip book
viene de aquí arriba. A lo mejor puedo colocar esto aquí arriba, o puedo hacer espacio y simplemente colocarlos
uno al lado del otro por aquí. Me gusta armar
las cosas que no estén demasiado extendidas, pero creo que estas están
demasiado cerca el uno del otro. Así que voy a hacerlo, voy a bajar esto un poco. Esto es, este de aquí arriba
es el código principal. Y tenemos algunos
eventos aquí abajo. Entonces esto es ajustar
la ubicación, que está sucediendo por aquí. Entonces ajustando la ubicación, puedo de nuevo simplemente ponerlo de lado aquí solo para que
se vea más limpio. Y puedo seleccionar todo esto. Voy a moverla un
poco hacia abajo otra vez, así. De acuerdo, Así que tenemos
el set está subiendo y podemos subir por
esta subida siendo, voy a simplemente en realidad sólo
podemos dejarlo estar aquí, solo moviéndola más cerca para que
no esté demasiado lejos. Lo mismo con éste. Y lo que podemos hacer con este código y simplemente moverlo un
poco más cerca así. Podemos llevarla todo aquí. Y luego podemos hacer click en, ver. Vamos a llamarlo subir. Subir siendo tal vez no lo has llamado algo
mejor o tal vez mecánico de
escalada o toda
una línea de texto. También puedes hacer,
recuerda que también podemos hacer entrar comentarios, por lo que no tienes que hacerlo
solo por aquí, no
puedes también. Hágalo aquí, dales
colores si quieres, si haces tus propias reglas. A veces lo que
hago por mis juegos, si viene del servidor, hago un comentario y luego se leerá
este comentario. Entonces todos los comentarios rojos
dentro de mi juego, sé que este es el servidor, así que algo puede hacer. Y si es específicamente
para el cliente, tal vez
me guste el rosa
en lugar de rojo. que puedas intentar
hacer tus propias reglas y hacer todo
organizado aquí. Voy a hacer esto encajar aquí. Por lo que ahora hemos declinado
ser mecánico, tenemos el salto. Éste, voy a
limpiar un poquito más. Entonces moviendo esto más cerca. Así que en un principio sólo
muy, muy importante, intentó hacer que tu
código sea mucho más magro. Ahora haciendo click en éste, ocultando la conexión porque
realmente no lo necesito. Y voy a mover todo
esto, pero más lejos. Entonces aquí hay más espacio. ¿ De acuerdo? Algo como esto. Y ahora lo que podemos hacer es simplemente mover los unos debajo del otro. De acuerdo, así que ahora tenemos esto, y en realidad éste
está un poco desordenado. Así que tomemos
aquí este alfiler y moverlo de esta manera. En lugar de tener tantos, puedo simplemente hacer doble clic aquí, y puedo
conectarlo aquí por aquí, y conectar éste de aquí abajo. Para que pueda eliminar éste. Y ahora tenemos los
conectados a los tres. Entonces un poco más limpio que antes de éste podemos arrastrar un poco hacia atrás
para que podamos ver la línea. Creo que todo lo
demás se ve bien. Para que podamos mover esto, el frente así, y podemos mover esto un poco más lejos
para que no estén chocando. De acuerdo, así que creo que esto
está buscando notas. Y recuerda cuando
limpias todo por aquí, recuerda también revisar
tus funciones para asegurarte de que todo
se vea bien. Creo que como básicamente
todo se ve bien aquí. Podemos moverlo un
poco más lejos para que no estén
chocando así. O bien puedes
hacer doble clic en éste y hacerlo así aquí. ¿ De acuerdo? Ahora, puedo alejarme esto, y aquí puedes hacer lo mismo. Para que pueda mover esto un
poco más lejos. Y éste más lejos. Incluso puedes simplemente
hacer doble clic en éste, moverlo hacia abajo así, y hacer clic en q. Dos. Se unieron juntos,
algo así. Algo como esto. Quiero decir, va a ser
mucho más limpio. A lo mejor solo puedes alejar todo
esto a excepción de éste así, eso se verá un
poco más limpio, pero eso se ve bien hasta ahora. ¿ De acuerdo? Entonces cuando hayas
limpiado todo, así que trata de revisar todo, trata de comentar todo
muy importante cuando
vuelvas como
tres meses después, no
tienes ni idea de
lo que todo esto es si no has
cometido ninguna de ellas. Entonces recuerda limpiar el código, intenta comentar todo
y asegúrate entender lo que ha pasado
aquí, lo que has codificado. Lo segundo es que puedes
limpiar tus variables. Entonces, lo que puedes hacer aquí, por ejemplo, la
subida estando aquí. Lo que puedes hacer
aquí a la derecha, puedes agregarles una categoría. Por lo que sólo puedo llamar a esta
categoría escalada. Y se puede ver que lo agrega
automáticamente a una categoría. Y puede hacer eso por todos
los demás seres cliente. Entonces éste puede escalar a Bob. Puedo seleccionar la categoría
ahora y seleccionar línea siendo. Y automáticamente los
reunirá aquí arriba. Subirán siendo
ubicación también está escalando. El pausa subió y
el cheque subió también. Entonces ambos, los voy a cambiar
a escalar. Ahora tenemos puede subir también
está disminuyendo. Y entonces tenemos
el objeto escalador es también la escalada. Y tenemos alguna
otra cosa aquí. Tenemos el estado del movimiento. Este, por ejemplo, se
puede llamar a movimientos de un jugador. Y tenemos la ubicación de la capa. Entonces éste tal vez
lo llame propiedades del jugador, algo así o ubicación. Por lo que la ubicación actual del jugador. También podemos cambiar las propiedades
del jugador. Actualizar cámara del reproductor. Por lo que esta podemos llamar a
la cámara de diseño. Entonces todo sobre
las cámaras enchufables aquí y la información de la planta. A lo mejor podemos cambiarlo para
jugar propiedades también. Engendramiento de capas y ubicación para
reproducir un propiedades también. Y la cámara del jugador, podemos cambiar a la cámara
y tenemos el eje z. Este es el movimiento.
Entonces tal vez solo puedas cambiarlo por
el movimiento del jugador. Por lo que ahora
puedes ver que has organizado todos esos y cuando
los minimizas, ves lo limpio que es esto. Cuando tienes un juego
grande, muy, muy importante para limpiar
todo tu código. Entonces ya sabes lo que está pasando. Vale, así que ahorremos intenté hacer eso con todos
tus planos. Y lo siguiente que
podemos hacer es aquí afuera. Lo que podemos hacer
aquí en el outliner, se pueden agrupar cosas. Entonces, por ejemplo,
tenemos aquí los cerdos. Puedo seleccionar todos ellos y
puedo crear una nueva carpeta. Y puedo llamarlos enemigos. Y trato de encontrar
todos mis caracoles. Entonces desde este caracol
hasta este caracol, puedo sostener Shift y dar
click en éste, arrástrelos a la carpeta
enemigos. Y ahora tenemos a todos los
enemigos que puedes ver aquí. ¿ De acuerdo? Y ahora tenemos la,
tenemos la cuerda aquí. Tal vez puedas agregarlo a una
carpeta llamada entornos. Y no creo que
lo deletreé correctamente, así. Y tenemos éste. Este es también el medio ambiente, por lo que voy a
moverlo dentro de aquí. Tenemos al jugador empezar
con la malla de navegación. A lo mejor se le puede llamar volúmenes. Y este es el volumen de malla de
navegación. Post-procesamiento, en realidad
puedo hacer una nueva carpeta llamada
post process. De acuerdo, para que podamos mover
esta redistribución también dentro de los volúmenes
y el jugador comience, solo
podemos dejar estar aquí afuera. No tenemos que
ponerlo dentro de una carpeta. Por lo que ahora se puede ver que
éste está organizado también. Si quieres ir
al siguiente nivel, incluso
puedes cambiar el nombre de las cosas. Entonces, por ejemplo,
puede cambiar el nombre de esos. Pero creo que está bien por ahora. De acuerdo, así que
lo último que puedes hacer también, puedes ir a las Interfaces de
Blueprint. Por ejemplo aquí.
Recuerda esos. También puedes dar una categoría. Entonces por ejemplo, puedes subir, puedes volver a darle una categoría al
igual que las variables, y todas
estarán en una categoría. Tan importante hacer
eso por tus propios proyectos. Limpia todo tu código. Y solo quería
hacer este video extra solo para
limpiarlo un poco. Y ahora creo que es
mucho más limpio trabajar con ellos. Y sí, eso fue
todo por este video. Entonces te veré en la siguiente.
66. Preparación de los libros de Flipbooks: Hola y bienvenidos
a esta sección. Ahora es el momento de trabajar en
la salud y el daño, tanto para el jugador
como para el enemigo. Por lo que tenemos mucho que hacer
aquí en esta sección. Así que empecemos. En primer lugar, aquí en los materiales del curso he
subido para ustedes
algunas, alguna sorpresa o texturas que
necesitamos preparar primero. Entonces yendo al personaje, tengo éste
llamado La muerte. Así que pasemos a los activos
aquí y vayamos a los personajes. Sólo voy a
subirlo por aquí porque esto es lo mismo
tanto para serina como para mirar, solo lo
hemos subido aquí. Haga clic derecho sobre él,
aplique textura de papel 2D. Sabemos que todas estas
cosas ahora van a mirar, tenemos esos efectos de paso. Entonces voy a buscar en texturas, y quiero que también
importes ese efecto paso. Lo mismo con Tsarina aquí. Puedo ver que ya lo he
subido para Luke, y vamos a tratar de
subirlo ahora para Serena. Por lo que este efecto de un paso
subido para Tsarina aquí y aplicar papel
a la configuración. Y antes de
convertirlos en sprites, quiero que vayas,
volvamos aquí. Ir a los enemigos. Y dentro de aquí, tomemos los
golpes del cerdo y escogemos la muerte. Y vamos a ir a los enemigos
ahora y a las texturas. Y vamos a subir el
cerdo, él y la muerte. Y también los
golpes de caracol y deuda de caracol. Por lo que estos dos
también suben esos. Y para todos los
que he subido, nuevo, aplicar papel
a la configuración. Y quiero que hagas flip
books de todos estos. Por lo que la muerte HIT
o ambos de esos. Y la muerte marina aquí. Y también Luke apuñalamiento, éste llamado se ve
pestaña anserinus paso. Entonces voy a saltarme
eso en el video. Ya sabemos qué hacer aquí. Por eso quiero que creas sprites de esos
y voltear libros. Por lo que el mayor
180 por 180 para los personajes
y para los enemigos. Cuando extraes los sprites, la cuadrícula es de 90 por 90. De acuerdo, así que aquí he
terminado los libros de tirón. Entonces por la muerte porcina, he dicho los marcos por segundo, dos por ahora, no estoy seguro
de los cuatro aquí. Tal vez tenga que
ser seis o más lento, así que tendremos
que probar eso en el juego más adelante. Y para la cabeza de cerdo, recuerda fijar que uno menos
fotogramas por segundo a uno. Creo que esto
afectará el código más adelante, así que póngalo en uno. Y para las
cabezas de caracol o la muerte de caracol, he dicho que de uno
a ocho fotogramas por segundo para este golpe de caracol. Lo he fijado en un
fotograma por segundo. También muy importante
hacer eso aquí. Y por la profundidad aquí y los personajes la han fijado en ocho fotogramas segundos. Entonces esta es la animación de la muerte. Y para Lucas, el apuñalamiento es
a través de marcos por segundo. Y lo mismo aquí para Serena es apuñalar son
dos fotogramas por segundo. De acuerdo, Así que ahora tenemos todos
estos flip books listos. En realidad, antes de
terminar este video, también aplicarlos
a la estructura. Así que pasemos a
nuestros planos en las estructuras y abramos
la información del jugador. Ahora, ya puedes ver aquí no
tenemos una animación de ataque, así que vamos a hacer click en Agregar variable. Y digamos animación de ataque. Voy a arrastrar
éste hasta aquí. A lo mejor quiero arrastrarlo
justo después del salto aquí, realmente no
importa, pero solo soy yo escribiendo aquí, libro flip book de
papel. Aquí es un libro de papel. Ahora ahorrando. Y hagamos lo mismo aquí
por la información animal. Entonces el animal ahora
tenemos el ídolo y nos movemos, pero también tenemos
la animación Hit. Tenemos la animación de muerte. En realidad tengo eso
para el jugador también. Así que permítanme primero cambiar eso
en un libro de papel. De nuevo aquí y aquí. Así. De acuerdo, así que ahora he escondido
sin muerte en realidad sumar eso para el jugador
también mientras somos ediciones. Así que agreguemos la animación de
la muerte. Déjame simplemente moverlo aquí
por encima del efecto sonoro. Y recuerda que es
un libro flip book de papel. De acuerdo, creo que
tenemos todo aquí, así que vamos a salvar todo. Vayamos con el jugador. Vaya a Luke y haga clic en
abrir editor de blueprint completo, haga clic en los valores predeterminados de clase. Y aquí en los valores predeterminados de clase, vamos a encontrar la información del jugador aquí. Y se puede ver
que realmente no pueden agregarlos aquí aunque los
agregamos, recuerda, hay
que ir a
la base de jugadores, click en compilar, dar click en Guardar, y hay que hacer click en
compilar dentro de aquí. Debido a que ha agregado la
estructura dentro de aquí, las variables dentro de aquí, tiene
que compilar aquí. Lo mismo con el enemigo. Antes de que podamos sumar
los de caracol y cerdo, hay
que ir al
enemigo y Compile y Save. Y ahora podemos verlos. Para una mirada, ahora puedes hacer click en los valores predeterminados de
clase y
puedes ver
que tenemos la animación de ataque. Y solo busquemos paso. Entonces Lucas, paso, más profundidad. Podemos tomar esta
llamada muerte de FB. Esta escalera de animación. Realmente no teníamos nada. Esto fue sólo para pruebas. Y si quieres de nuevo, te
dije que puedes, puedes ir a esa
página web llamada arces. Estoy aquí y creo un personaje y trato de usar
tu personaje o simplemente hacer. Ya ves aquí, tienes algunas
animaciones que puedes hacer. Y solo puedes seleccionar la animación de escalera y
puedes ver cómo se ve. O simplemente puedes poner la animación de cuerda
aquí si quieres. Hagamos eso en realidad. Entonces no se ve raro. Creo que se llama subida. De acuerdo, así que vamos ahora a Serena, yendo a los jugadores,
Tsarina, no aquí. Capas Tsarina y abriendo el plano completo de que
es un ataque NDA. Nuevamente, busca paso, selecciona Salinas, Serena's,
y la carta. Busquemos a
los escalados. Aquí. Agrega para la animación de muerte, solo busca la muerte
y selecciona ésta. Por lo que ahora tenemos
todo seleccionado. Ahora hagamos
lo mismo por los enemigos. Entonces vamos al enemigo. Vamos a escoger primero abierto editor de blueprint completo
en los valores predeterminados de clase. Encontremos a éste
llamado info animal. Y aquí en los hits, podemos buscar
golpes de cerdo y la muerte. Podemos buscar muerte porcina. Haz lo mismo
ahora por el caracol. Abre el editor completo del blueprint
y dentro de la información animal, agreguemos los hits del caracol, y agreguemos la deuda de Caracol. Por lo que ahora tenemos todo
agregado aquí en la estructura. Entonces con estas cosas agregadas ahora, vamos a repasar y hacer los
jugadores atacando entrada.
67. Cómo agregar la entrada de ataque: Ahora vamos a seguir adelante y
sumar los insumos de ataque. Entonces primero, vamos
a Configuración del proyecto. Y dentro de entrada aquí, vamos ahora
sólo tenemos el salto hasta ahora. Por lo que haciendo clic en este plus y agregando uno nuevo llamado ataque. Y voy a
hacer click aquí y hacer clic en mi control izquierdo
en el teclado. Ahora voy a usar
el control de elevación como mi botón de ataque, pero esto es sólo un curso, por lo que puedes elegir tu propio
botón si quieres. Creo en Maple Story, fue o bien este
o el botón Alt. Entonces voy a elegir el
botón de menos control en mi teclado. Ciérrala hacia abajo, entrando en planos y dentro del
jugador y una base de N jugador. Entonces hagamos este movimiento
atacante o lógica aquí en
la base de jugadores. Entonces lo que he hecho
aquí, acabo, del video anterior, acabo de seleccionar todos mis nodos y hacer clic en C
para crear un comentario. Y acabo de llamar a este
movimiento y he cambiado el
tamaño de la fuente a setenta. Sólo tengo todos mis movimientos. La cosa que hemos codificado
hasta ahora dentro de aquí. Y así podemos ahorrar algo de espacio. Y ahora podemos hacer el
ataque aquí abajo. Entonces aquí abajo, lo que
quiero que hagas es que
quiero hacer clic derecho
y decir ataque, sea que lo llames dentro
de la configuración de tu proyecto. Selecciónelo aquí. Y ahora para el ataque, queremos que pase por
el servidor porque de nuevo, esto es multijugador y queremos asegurarnos de que el cliente no
esté engañando. Y entonces lo que voy
a hacer es realmente crear un aquí y las Interfaces de Blueprint
y la base del jugador. Aquí. Demos clic en Agregar, y hagamos una nueva
función llamada ataque. Y hagamos sólo
una nueva variable aquí. Aquí llamado B está atacando. Entonces solo estamos comprobando si
el jugador está atacando. Ahora puedes ver aquí a veces está molestando, está atacando. Cuando lo escribo aquí y haga
clic en Entrar, voy
a eliminarlo. No sé si hace eso
a veces sin razón. Entonces voy a
eliminar esto aquí, borrarlo, y hacer
una nueva función. Ahora puedo ver si hago click
aquí y hago click en Agregar. De repente funciona. No sé por qué
hace eso. A veces. Vamos a renombrar para atacar de nuevo. Por aquí. Ahora podemos hacer, podemos llamarlo ahora
diciendo ataque y seleccionado aquí el ataque de
evento. ¿De acuerdo? Por lo que queremos que esto
pase por el servidor. Entonces vamos a hacer
un nuevo evento personalizado llamado ataque de servidor. Y éste también va
a tener ese booleano llamado B está atacando. Llamemos, en realidad vamos a
ejecutarlo a través del servidor el primer año y llamemos a
ese evento del servidor aquí arriba. Así. Vamos a conectarlo. Y ahora aquí arriba podemos llamar a ese ataque desde la base
final del jugador. ¿De acuerdo? Y ahora vamos a establecer
esto para que sea verdad. Entonces cada vez que hagas clic en
el botón de ataque, vas a establecer que el booleano
atacante sea cierto. Va a pasar por
el servidor y el servidor. Puedes hacer clic con el botón derecho aquí,
promocionar esto a una variable, llamarla B está atacando. Y ahora el servidor va a establecer esta variable para que sea verdad. Y obviamente quiero replicarlo
a los clientes para que
puedan ver mi cambio. ¿ De acuerdo? Entonces lo que
queremos hacer aquí es que no queremos que el
jugador esté atacando. Si ya estás atacando, eso no tendría ningún
sentido celdas
podrás atacar spam todo el tiempo. Entonces lo que queremos hacer es tomar este booleano y hacer una sucursal. Y en realidad hagamos una
muesca aquí, así que NO Boolean. Ahora lo que estamos diciendo es que si
el jugador no está atacando, así que si esto es falso, el jugador no está atacando. Podemos seguir adelante y atacar. Pero si ya estamos atacando, realmente no queremos atacar
spam encima de él. Por lo que sólo ataca cuando no
estás atacando ya. De acuerdo, entonces va
a pasar por el servidor y va
a establecer la variable. Ahora lo que queremos hacer es
jugar y atacar la animación. Y recuerda, hace mucho, mucho tiempo hicimos que este movimiento se declarara aquí donde
cambiamos los movimientos. Así que agreguemos aquí un nuevo
movimiento. Agregamos uno a la estructura. Así que en realidad vamos a ir a
la enumeración ahora, porque aquí en la enumeración, si lo saco de nuevo, sólo
tenemos estos ahora. Pero en la estructura de juego aquí, tenemos esta animación de ataque que agregamos en el video anterior. Entonces ahora vamos a añadir esa opción
aquí en nuestra enumeración, que también creamos hace
mucho tiempo. Aquí en las enumeraciones, en el movimiento Estados. Hagamos clic en agregar enumeración
y agregar el ataque. Ahora para esta etiqueta deja, puedes arrastrarla hacia arriba
si quieres. Sólo voy a
dejar que sea aquí abajo. Y ahora podemos ver que el
oxígeno está disponible. Si no lo puedes ver, recuerda hacer click sobre esta
flecha y aparecerá. Ahora vamos a copiar pegue
este set flip book, y déjeme
conectarlo al ataque. Y ahora de nuevo, recuerda que no puedes
entrar aquí y seleccionar paso uno de las animaciones de puñalada porque como
queremos que sea dinámico
para todos los personajes, tienen su
costumbre animaciones. Tenemos que encontrarlo aquí desde
la estructura que agregamos. Por lo que al hacer clic en la
estructura, se puede ver, no se
puede ver ningún alfiler. Y esto sucede cuando haces clic
en Ocultar pines desconectados. Pero puedes hacer click en
la marca de verificación aquí. Entonces la animación de ataque. Y ahora puedo dar click sobre esta flecha y
se puede ver que aparece. Ahora puedo arrastrar esta animación de
ataque e iniciar sesión en
ésta de aquí abajo. De acuerdo, así que eso está arreglado. Ahora vamos a compilar y ahorrar. Lo que podemos hacer ahora es
volver al Gráfico de Eventos. Y aquí queremos jugar o atacar animación
porque recuerden, solo se
puede decir
movimientos establecidos Estados. Esto es lo que hemos
estado usando hasta ahora. Y aquí hay que prestar
atención porque ahora se
puede ver tenemos algo
llamado estado de movimientos establecidos, y la base enemiga también. Esto es lo que el enemigo, esto es para el jugador. Entonces presta atención a
lo que estás seleccionando. Éste, queremos usar
ese desde el jugador. Quiere reproducir la animación de
ataque cada vez que el jugador ataca. Y ahora, antes de que
hagamos algo aquí arriba, recuerda la derecha en movimiento. No queremos movernos de derecha e izquierda uno al que el jugador
está atacando. Así que voy a tomar mi
a está atacando booleano aquí y decir nueces. Entonces lo que voy a decir aquí es si el jugador no
está subiendo. Entonces hagamos un Y booleano y el jugador no está atacando. Por lo que si el jugador no está subiendo y los
jugadores no atacan, se
puede seguir adelante y
moverse a derecha e izquierda. Pero si el jugador está atacando, no
queremos
movernos a derecha e izquierda. Déjame simplemente arrastrar esto a
un lado así que en realidad tengo un poco más de espacio para
trabajar así aquí. Ok. Ahora vamos a
compilar y ahorrar. Y ahora se puede ver que hay un pequeño error y no
voy a contártelo
ahora mismo. Voy a explicar
en un poco. Así que vamos a hacer clic en Jugar ahora. Recuerda antes de
hacer clic en play, recuerda configurarlo en
play como servidores de escucha. Entonces aquí, obras de teatro escuchadas. Demos clic en Play. Voy a atacar. Se puede ver que está funcionando. Muy bien, está bien. Está atacando. No hemos puesto que
el ataque sea falso, así que va a atacar para siempre. Entonces esto es lo que puede el
servidor ahora en el cliente? De nuevo, voy a hacer
click en el control. Pero se puede ver
sexualmente no trabajar. No puedo ver mi animación. Recuerda, esto tiene, este es un cambio visual y tiene que
pasar por un rep notificar. momento estás ejecutando este
evento a través del servidor. Entonces el cliente no tiene
idea de lo que estás haciendo porque en el momento en
que acudes al servidor, el cliente no puede ver toda esta información a menos que
se le replique. Esta información
que el cliente puede ver porque
en realidad estás replicando. Pero éste sólo corriendo
a través de una función normal. Y realmente no va al cliente y lo estás
ejecutando a través del servidor para que
el cliente en realidad no
pueda ver todo esto que estás escribiendo
aquí a menos que se replique. Entonces lo que voy a hacer es
cambiar éste en lugar de replicar a un representante notifique porque este es un cambio visual. Así que vamos a cambiarlo a
Eric notificar en su lugar. Por lo que podemos notificar al
cliente sobre éste. Aquí y el está atacando. Lo que voy a decir es tomar de
nuevo este booleano, dicen marcas. Entonces si estás atacando, quiero jugar a este movimiento
estado atacando la animación. Volvamos y
asegurémonos de que todo esté correcto. Entonces esto es sí,
así que vamos a intentarlo ahora. Haga clic en Jugar. Ahora como servidor de nuevo,
haga clic en el control. Esto debería funcionar. Ahora si vas al
cliente, hago clic en el control. Ahora, se puede ver
que también está atacando. El servidor también puede ver
que el cliente está atacando. Entonces recuerda, esto es muy
importante en el multijugador. Tienes que pasar por un representante notificar si es un cambio visual. Y si lo juegas
directamente en el servidor, el cliente, el cliente no
puede ver todas las cosas que estás haciendo aquí a menos que
realmente
lo estés replicando a los clientes.
68. Para cada bucle: Entonces la cosa es
que ahora queremos aplicar daño a todos los
enemigos que golpeamos. Y para ello, vamos a usar algo
llamado a para cada bucle. Entonces lo que aún no hemos
usado bucles, y no creo que te lo haya
explicado todavía. Entonces este es solo un video corto
que explica qué son los bucles. Entonces empecemos aquí. Aquí abajo dijimos antes
vamos a atacar y se
va al servidor. Ahora, toda la lógica
va a estar dentro
del servidor porque queremos
asegurarnos de que el cliente no
esté engañando. Así que hagamos eso dentro de aquí. Pero lo vamos a hacer, es que vamos a usar una función llamada conseguir actores superpuestos. Entonces vamos a golpear algo y vamos a conseguir todos los actores superpuestos, así que todos los actores a los
que estamos golpeando. Y para éste, vamos a hacer
un por cada bucle. Esta es la
que vamos a usar. Y conectemos esa. Entonces, ¿qué actores se
van a solapar? Vamos a echar un vistazo a los enemigos porque estos son
los que queremos atacar. Así que consigan a todos los actores
superpuestos, consigan a todos los enemigos
superpuestos. Y por cada uno de esos enemigos, así que ahora se va
a llevar a cada enemigo. Entonces digamos que en mi nivel aquí, tenía cinco enemigos apilándose
uno encima del otro así. Y hice clic en mi botón de
ataque y en realidad
golpeé todos
estos cinco. Entonces, ¿qué va a hacer ahora? El solapamiento es de cinco. Para que puedas ver a
los cinco enemigos. Y ahora por cada enemigo, ¿Qué quieres hacer? Y lo que queremos hacer, se aplicó daño a
cada enemigo. Esto es lo que es el cuerpo del bucle. Ahora, vas a hacer una acción por cada
enemigo que hayas golpeado. Lo que queremos hacer
es simplemente aplicar daños. Ahora, quiero
asegurarme de que este código no
se ejecute siempre que
no golpee nada. Si no golpeas a ningún enemigo, realmente no
queremos ejecutar este código. Entonces vamos a decir que es, vamos a tomar
éste y decir longitud. Entonces comprobando la longitud. Y voy a tomar
esto y decir no igual. Por lo que podemos hacer eso
ya sea escribiendo no igual o diciendo un signo de
exclamación e igual. Esto es impresionante en matemáticas,
lo que significa que no es igual. Entonces si esto, la longitud de los actores superpuestos no
es igual a 0, lo que significa que en realidad he
golpeado algo. Entonces puedes seguir adelante
y ejecutar este código. No obstante, si la longitud es 0, entonces no hagas nada
porque realmente no queremos ejecutar este código
si no hemos golpeado nada. Esto es muy simple
a para cada bucle, va a echar un vistazo a
todos los actores superpuestos. Así que tal vez golpeamos a tres enemigos. Y por cada uno de
estos tres enemigos, queremos aplicar daños. Y lo haremos en
la próxima lección.
69. Jugador que aplica el daño: Ahora entrémonos
nuevamente en
el plano del jugador y veamos cómo el
jugador puede aplicar daño. Entonces aquí dentro de la base del reproductor, esto es lo que hicimos
en el último video. Entonces haciendo el ataque aquí. Y por cierto, si no lo has visto antes, puedes ver con qué hemos
estado trabajando hasta ahora. Las variables, son como circulares aquí en el pin aquí. Pero éste es un cuadrado y
tiene un montón de pequeñas
plazas dentro de ella. Y esto se llama una matriz. Y lo puedes ver aquí cuando
creas una nueva variable. Por ejemplo, acabo de
llamar a todo esto al azar. Se puede ver cuando
hace clic en el Tipo aquí, el contenedor variable aquí, en realidad
podemos cambiar el tipo de una sola a una matriz. Entonces, ¿cuál es la diferencia
entre éste y éste? Entonces, hasta ahora lo que hemos
estado haciendo, digamos, por ejemplo,
jugadores conectados. Por ejemplo, tomemos a
los jugadores conectados y cambiémoslo aquí
a base de jugadores bp. Entonces digamos que lo que
queríamos hacer con éste es almacenarlos todos
en una variable. Así que no puedes simplemente tomar
esto aquí y ponerlo aquí. Al igual que cuando un jugador se conecta, se establece esta variable. Esta variable solo puede
contener una información. Entonces, por ejemplo, esta variable es si el jugador está
atacando o no. Y déjame ver si tenemos
otras variables aquí. Esta variable contiene el estado de
movimiento en este momento. Entonces, cuando lo pongas a caer, establecerá que el estado de
movimiento caiga. Por lo que no se puede tener información
múltiple
al mismo tiempo dentro de estas variables. No obstante, puedes
hacer eso cuando lo cambies en una matriz. Entonces para almacenar
jugadores conectados, todos los jugadores conectados
en una variable. Así que no sólo un jugador, en realidad hay que
cambiarlo en una matriz. Y si haces clic en
Cambiar tipo de variable, puedes ver que se vuelven
como este cuadrado. Y lo que es,
ahora es la matriz que puedes, puedes imaginarla
como una caja grande. Y te lo dije antes, puedes imaginar esta variable
normal como una caja con alguna
información en ella. Éste, lo puedes imaginar como una caja grande con pequeñas
cajas de información en ella. Por lo que ahora puedo almacenar todos los jugadores aquí,
todas las variables. Y lo que puedo hacer aquí es que
puedo tomar esto y decir consigue. Y en realidad puedo conseguir a uno de los jugadores y hacer
algo con él. Entonces una matriz es solo una caja
grande que contiene, por ejemplo, todos
los jugadores conectados. Tal vez contenga todos los pons, mientras que si es
sólo una circular, por lo que sólo una sola variable
normal, puede
contener, solo contiene una información. Pero si tienes una matriz, puede contener información
múltiple. Entonces, por ejemplo, todos los jugadores que están conectados
al servidor. Entonces aquí, los actores superpuestos, contiene a todos los actores
que se han superpuesto. Y digamos que me
apegé a esos. Y estos son cinco enemigos. Ahora, con estos cinco enemigos, ahora los
puedo descomponer aquí en mi bucle. Ahora tengo a todos
los enemigos aquí. Y ahora lo que queremos hacer
con nuestro bucle es que queremos aplicar daño a cada
enemigo que he golpeado. Entonces si la longitud no es 0, lo que significa que hemos pegado a alguien, queremos cuidar
y decir Aplicar daño. Así es como le haces
daño a algo. Usa esta función
aquí, aplica daños. Ahora tenemos que especificar a
qué se quiere aplicar el daño. Entonces, ¿quién es el actor dañado? Ese es el enemigo, y
el enemigo está aquí. Recuerda, te llevaste a todos
los actores superpuestos que son la base enemiga, por lo que los enemigos. Y por cada enemigo, quieres aplicarles
daño. De acuerdo, Entonces, ¿cuál es el
daño que quieres aplicar? Y en realidad tenemos que especificar qué daño hace
el personaje. Así que volvamos a la
información del jugador, nuestra estructura aquí, información del
jugador, y agreguemos una nueva variable
llamada daño base. Quizás más adelante podamos
mejorar ese daño. Entonces a éste se
le llama daño base, y podemos moverlo arriba aquí. Realmente no
importa, pero sólo me gusta estructurar
las cosas de esa manera. Entonces por el daño base, volvamos a la
base del jugador Compile y Save. En los valores predeterminados de clase
En realidad
se puede simplemente no en
la clase por defecto, solo
puede hacer clic en él aquí. Si lo encontramos aquí en las propiedades del
jugador info del jugador, esta es la estructura
y pinchando aquí. Entonces por defecto, solo quiero que el daño base sea
tal vez algo así como cinco. Así que haciendo cinco daños cada
vez que golpeas algo. Entonces ahora que tenemos
ese set y tomemos este aquí y
vamos a romperlo. Y ahora podemos usar
este daño base y conectarlo a esto aquí. Ahora, más adelante si quieres
hacer mejoras para un juego, y probablemente lo
haremos por nuestro juego. Y no realmente en
el curso base, probablemente
voy a estar agregando
un bonus secciones para desarrollar cada vez
más y más en este juego hasta que se
convierta en un enorme. Pero tal vez ya lo he
grabado. Así que echa un vistazo a
mi sección de bonos en el momento en que estás
viendo este video. Por lo que aquí estamos aplicando
el daño base. No obstante, más adelante
si queremos sumar mejoras y más adelante
queremos aumentar ese daño. Simplemente puedes hacer
una nueva variable. Llámalo dañado, multiplicador y Compilar y Guardar como predeterminado. Ahora vamos a cambiarlo a
realmente a un flotador, y no
lo cambiemos a un ArrayList, solo guárdelo en
una sola variable. Vamos a arrastrarlo. Y por defecto, recuerde
configurarlo en uno. Entonces el
multiplicador dañado es solo uno, lo que equivale al daño base. Ahora, vamos a decir, ¿esto se multiplica
por el multiplicador? Y luego lo conectamos aquí. Ahora, más adelante, si
hacemos actualizaciones, sólo
podemos aumentar este
multiplicador, por ejemplo dos. Por lo que va a decir que el daño
base por dos veces, que luego aplica más daño. Pero por ahora
solo hagamos uno aquí. Voy a mover esto
un poco de peso para mantenerme más organizado. Ahora el instigador de eventos, si se sostiene el ratón sobre
él, dice el controlador que fue responsable de
causar este daño. Y este es el jugador. Entonces estamos dentro de un jugador y para conseguir el controlador del jugador, solo
puedes decir Get Controller. Y get controller es
una función que dice devuelve controlador
para este actor. Entonces el controlador del jugador,
puedes conseguirlo de esta manera. Para el tipo de daño aquí, solo
puedes
cambiarlo a tipo de daño. Todo, al igual que el daño más cerca que realmente no
necesitamos en este momento. Muy bien, entonces así es
como se aplica el daño. Y si guardamos todo aquí, ahora en la base enemiga, lo que va a pasar es
si voy al enemigo ahora, aquí en la base enemiga, realmente no
hemos hecho
mucho dentro de aquí. Pero aquí se puede decir evento, cualquier daño, y ese es un
evento que aún no hemos usado. Cualquier daño sólo
va a recibir cualquier daño que haya ocurrido a ese punto y podemos
hacer algo con él, por ejemplo, podemos restar de la
salud de ese enemigo. Ahora antes de terminar
esto, permítanme realmente hacer algo con
las colisiones
también porque esto es si
voy a la vista aquí, en realidad déjame ir a
uno de los enemigos. Así lo son el caracol. Abra el editor de Blueprint. Creo que este cuadro de hit es demasiado grande y cuando el jugador
salta sobre el enemigo, el jugador será golpeado cuando
entras en esta superposición. Sólo quiero que se les peguen cada vez que estés muy
cerca de ese caracol. Entonces creo que
éste es muy enorme. Entonces lo que podemos hacer
aquí es solo sumar otra colisión
que sea
responsable de dañar al jugador. Y vamos a Agregar aquí y
busquemos colisión. En realidad no es una lesión esférica. Vamos a elegir ese. Creo que eso es
mejor en este caso. Y cambiemos el nombre
a éste por colisión. Y quiero que lo
hagas en realidad,
vamos a añadirlo no aquí, estoy en el caracol,
ese es mi error. Volvamos a la
base del jugador y agregarla aquí. Entonces colisión, esfera de colisión y lo llaman colisión porque lo
queremos en todos los enemigos, no sólo el caracol. Ahora volvamos al caracol y ahora puedes hacerlo
más pequeño para que se ajuste a ese caracol. Caracol, sólo podemos hacer
este radio de esfera más pequeño. También puedes arrastrarlo hacia abajo. Y tal vez hagamos 20. Entonces puedo ver que esto es 20. Y si también se puede
ver también desde la vista correcta. Recuerda que hablamos de las vistas ortográficas en
la intro, la vista correcta. Y puedes cambiar esto
del wireframe a modo oblicuo
y puedes ver el caracol. Por lo que también puede
ajustarlo aquí en este punto de vista, eso a veces es mucho mejor. Pero 20 creo que es
un buen cuadro de golpe. Volvamos a
la perspectiva. Ahora lo que queremos
hacer es solo tomar las colisiones para todos esos. Entonces vamos a compilar y ahorrar. Volvamos a la base enemiga. Por lo que aquí en la cápsula, quiero bajar y dar click
en este preset de colisión para comprobar si todas
las colisiones con las que estamos
trabajando son correctas. Entonces creo que éste está bien. Realmente no tenemos que
hacer nada aquí. Por lo que haciendo clic en la colisión ahora y haciendo clic en este preajuste de
colisión. Entonces éste, al igual que antes, recuerda en una lección anterior, tuvimos ese problema con
los caracoles tocando, como si estuvieran caminando
cerca de la rampa. Y eso se
debió en realidad a que el mundo estático aquí se solapan y en realidad
no quiero que se burlan. Voy a primero, se
puede caracterizar
paso encima de ella. No, no puedes. Y hagamos costumbre aquí. Y luego vamos a
ignorar el mundo estático. Entonces el patrón no
va o los caracoles no
van a chocar dentro de él. Al hacer clic en el sprite,
asegurándose de que no
esté generando
ningún efecto de superposición. Y creo que esto se hace aquí. Así que volvamos a
la base de jugadores. Ahora para la base del jugador,
vamos a sumar una colisión donde se pueda
detectar, el atacante. Entonces hagamos aquí una nueva
colisión, y la voy a adjuntar
al sprite para que veas
por qué lo estoy adjuntando. Entonces primero, sólo voy
a añadir uno aquí. Colisión, digamos
la caja de colisión. Y voy a ir a la vista
correcta, modo lead. Por lo que ahora puedo ver donde lo estoy agregando en realidad no
en la base del jugador. Vamos, hagámoslos en el espacio pleural porque todos
los jugadores son iguales. Entonces no tendría sentido
hacerlo en Luke y luego Serena. Así que hagamos el tamaño
dentro de aquí. El motivo por
el que hicimos el tamaño interior
del caracol es porque todos
los enemigos son diferentes. Pero para los jugadores, todos
son iguales. Así que hagamos el tamaño
aquí en la base del jugador. Y lo que quiero hacer aquí, hagamos primero la x. Y creo que algo así como 20. Y para la y, no
puedo verlo aquí. Tal vez como 20 o 25, realmente no
importa. Vamos a hacer que sea 20. Y para la Z aquí, ¿cuánto arriba y abajo? Creo que el 30 es un buen número. Así que intentemos 30. Y vamos a moverlo un poco
más cerca del personaje. ¿ Y si los enemigos están
dentro de esta colisión? Eres capaz de hacer daños. Ahora si en realidad,
antes de que hagamos eso, vayamos a la colisión y veamos si
todo está correcto. Ok. Entonces todo es correcto
excepto por una cosa. Entonces aquí, de nuevo, puede jugar o pisar encima
de esto. No, no puedes. Generará eventos de superposición. Y ahora déjame configurar esto a costumbre porque necesito
agregar algo aquí. Ahora se puede ver antes
y la base enemiga. Ahora si hace clic en esta
colisión que hicimos, se
puede ver que el
tipo de objeto es dinámico mundial. Ahora el problema es
que si tienes esta
dinámica mundial que se superponga en este
momento por esta caja de colisión, como si el caracol camine cerca ti y luego se superpone
con esta caja, este caracol hará daño a tu personaje y eso realmente
no tiene sentido. Por qué mi, mi, quiero que el enemigo me entre aquí en esta cápsula antes de
que pueda hacer daño. No realmente cuando se está
superponiendo mi rango de ataque, eso no tendría ningún sentido. Por lo que aquí se puede ver
el final de una base. Este es un tipo
de objeto de dinámica mundial. Así que en realidad
voy al jugador aquí por esta colisión de
ataque, y voy a ponerla para
ignorar la dinámica mundial. Entonces en realidad no va
a chocar conmigo aquí. Sólo quiero que dañe cada vez que está
bloqueando mi cápsula. Y se puede ver mi cápsula tiene el mundo dinámico dos cuadras, por lo que voy a ser
golpeado por ese enemigo. Ahora haciendo clic aquí, vamos a
cambiar el nombre de la misma. Vamos a llamarlo colisión de etiquetas. Vamos a compilar y guardar y
déjame hacer click en Play y en realidad
puedo mostrarte algo genial para que podamos aprender
de esto también. Ahora podemos ver si
quieres ver algo. Entonces si quieres, si quieres ver la colisión porque
estás depurando, puedes hacer click sobre esa
colisión y
podrás eliminar esta
llamada Juego Oculto. Juego oculto, quita
eso, da clic en Jugar. Y ahora se puede ver
esa caja de colisión aquí frente a
usted y su juego. Y se puede ver
cuando giro este lado, las colisiones en
realidad detrás de mí. Por lo que necesitamos la colisión
para seguirme a cada lado. Y es por eso que es importante. Si quieres eso, para
incluirlo aquí en el sprite. Por lo que en realidad está
apegado al sprite. Entonces es un niño. Y puedes hacer clic en Play y va
a rotar con este brillante. Por lo que ahora puede ver ahora que
en realidad está siguiendo correctamente. Así que cosa muy cool
para aprender de esto. Voy a dejar que esto
no se esconda en los juegos para que en
realidad podamos ver lo que está pasando. Con eso. Creo que ya no tengo. Así que permítanme revisar esta
cápsula aquí para el jugador solo para estar seguro de
si esta cosa es correcta. Por lo que en este momento se puede ver cápsula está puesta a ignorar es el
hueso que es el enemigo. En realidad voy a
poner solapamiento porque queremos que nos
dañen el brazo. Entonces no tiene sentido
ignorar el hueso. Eso es correcto ahora
y para los sprites, esta parte no
va a generar ningún evento de superposición
así. Entonces digamos donde todo, creo que todo es correcto. Por lo que ahora en la base de jugadores, estamos aplicando daño a cada enemigo
que estamos golpeando. El problema en este momento, que arreglaremos en la
siguiente lección es que si ataco, va a atacar para siempre. Así que repasemos en la siguiente
lección y arreglemos esto.
70. Detener la animación de ataques: Así que de vuelta aquí en este código, hasta ahora hemos establecido el
está atacando para que sea verdad. Y si está atacando es cierto aquí en la función
desenvolver, va a establecer ese movimiento
atacante. Ahora queremos hacer algo
cuando el atacante sea falso. Y lo que queremos que hagas es que quisiéramos copiar pegado esto. Ahora puedes hacer esto,
solo póngalo a
inactivo para que ya no estamos
atacando. Y tenemos que en algún
momento establecer esto para que sea falso porque hasta ahora acabamos de
configurar para que sea verdad aquí arriba. Y esto ahora es cierto, pero no hemos
especificado en ningún lugar nuestro código cuando será falso. Así que en realidad hagamos esto. Entonces aquí digamos antes de
hacer algo con los enemigos. Entonces digamos que sí, si yo aquí, si me superpongo, si mi longitud es 0, si no golpeo a ningún enemigo, solo
quiero dejar de atacar porque no le pegué a nadie. Entonces voy a tomar esto
y ponerle esto a falso. No obstante, si solo haces esto, va a hacer esto al
mismo tiempo que estás atacando. que puedas ver que
voy a hacer click ataque y en realidad al
mismo tiempo estoy atacando, va a detener mi animación. Así que en lugar de hacer esto como al instante y déjame
simplemente tocarlo de nuevo, en realidad, no
necesito golpear a nadie. Así que al hacer click aquí, se puede
ver hago clic en Cola, pero no pasa nada porque al instante
voy de
establecer un verdadero a falso. Tienes que esperar un poco
antes de que lo pongas en falso porque tienes que esperar a que juegue
la animación atacante. Y puedes hacer esto
de una manera muy inteligente. Puedes tomar el sprite
aquí y decir flip book. Ahora puedo conseguir la longitud
de este libro flip y dice obtener la longitud
del libro flip en segundos. Puedes obtener cuánto tiempo está jugando este libro
flip book. En realidad se puede retrasar. Recuerda que usamos ese nodo de retardo. Entonces conectemos
el retraso a esto. Por lo que retrasó el código por tiempo que esta animación va
a tomar, pasando por eso. Y después de que se complete, vamos a repasarlo y
ponerlo en falso. Por lo que ahora si hago click en
jugar y tú vas a ese personaje y
me deja no si alguien aquí. Entonces si me pego ahora,
se puede ver que está funcionando. Entonces eso es correcto.
Ahora puedo golpear y se detiene mi animación
después de tocar sexualmente. Para que puedas
volver a hacer esta animación lenta y más rápida yendo a los activos dos personajes
a Luke, por ejemplo. Si aumentas esta animación
apuñalada, por
supuesto que va a detener esa animación mucho más rápido. Por lo que ahora está controlado por
los fotogramas por segundo. Entonces ahora que tenemos el
ataque hecho, recuerda aquí, cuando hayas terminado de
atacar a los enemigos, porque ahora si juego
y golpeo enemigos, puedes ver que está jugando
para siempre porque no he especificado cuando voy a parar
si en realidad golpeo a enemigos, porque éste es justo cuando no
golpeas a ningún enemigo. Cuando golpee a enemigos, de
nuevo, voy a hacer lo mismo. Así que sólo voy a arrastrar esto aquí cuando este
bucle esté terminado. Entonces cuando hayas aplicado
daño a todos los enemigos, voy a detener
mi ataque aquí. Y esto sucederá
muy, muy rápido. Por lo que sólo parecerá
que no le pegaste nada. Porque como el código de blueprint se está ejecutando tan rápido, es una locura. Así que ahora si no escuchamos nada o si
completas tu ataque, vas a dejar de atacar. Así que veamos ahora aquí, si le pego a alguien, se
puede ver que ahora está parando la animación después de
que golpee a los enemigos. O incluso si no escucho
a nadie, se va a parar.
71. Recibir daños al enemigo: Muy bien, entonces ahora que
hemos codificado mucha de la animación tecnológica y ahora
estamos aplicando daños. En realidad vamos al
enemigo aquí, la base enemiga. Aquí queremos llamar a este, este evento llamó algún daño. Y queremos aplicar
daños al enemigo. Entonces lo que queremos hacer es aquí, queremos en realidad primero
ir a la estructura y sumar salud para
el, para el enemigo. Creo que aún no lo hicimos. Entonces vamos a planos y
estructuras y en
la información animal. Y aquí vamos a agregar
una nueva variable, llama a ésta salud. Y para éste, vamos a dar click sobre flotador. Y por la salud, sólo
voy
a arrastrar éste en la parte superior. Vale, así que guardemos esto y volvamos a la base enemiga. Ahora, compilar y guardar. Ahora para esta estructura, puedes arrastrarla
y puedes romperla. Y ahora se puede ver tenemos esta variable de salud
y por defecto, la salud del caracol, no sé, podemos ponerla a 25 o 15. Hagámoslo a 15. En realidad, nuestro
daño de jugador es de cinco en este momento, por lo que tres hits
matarán al caracol. Entonces vamos a los valores predeterminados de
clase y aquí y la información animal. Entonces para este caracol específicamente, tiene 15 de salud. Y tal vez para el cerdo. Si bajamos al cerdo,
cerdo aquí, este cerdo, vamos a poner a los
cerdos salud quizá 230. Entonces es el doble de la fuerza
del enemigo o del caracol. Y también para éste, en realidad sólo
estoy cambiando un poco
la colisión. Por éste como
hicimos con el caracol. A lo mejor sólo disminuirlo como 25. Podemos hacer eso más tarde. Al igual que podemos comprobar
y ver si eso es demasiado grande y demasiado pequeño. Así que ahora volvamos
a la base enemiga. Ahora la salud es o bien 30 si es un cerdo o son
15 si es un caracol. Pero ahora va a
hacer eso dinámicamente. Por lo que el daño que aplicamos aquí
antes y
la base del jugador, el daño al daño base que
aplicamos es igual al
dañado que sale de aquí, y el jugador hace
cinco en daño. Entonces lo que podemos ver,
lo que podemos decir es esta salud que es 15
para el caracol en este momento, restar eso, como restar
el daño, que es cinco. Por lo que ahora la salud es de diez, porque 15 menos cinco es diez. Ahora, esta es la salud actualizada. Esta es la diez salud que
queda del caracol. Y ahora te voy a
enseñar algo nuevo,
una nueva cosa cool que realidad
no muchos
saben para empezar, son muchos realmente hacen un error pesar de que hay
avanzado a los planos, es como se establece, como cómo se establecen variables dentro de la estructura dinámicamente. Porque en este momento
tienes todas estas variables
y eso es genial. Las has puesto aquí
en tu estructura. Pero, ¿cómo
cambias realmente el valor? Así que ahora, déjame quitarlos. Por lo que ahora la salud
ahora mismo aquí es 15. ¿ Cómo lo cambias a diez dinámicamente aquí
a través del juego? Haz eso arrastrando
desde esta estructura. Y luego escribes sets. Y aquí en la parte inferior se dice establecer miembros en
información animal en la estructura. Entonces ahora tiene que gustar
qué, ¿qué miembro quieres establecer? Y a la derecha, si
haces click aquí, de nuevo, puedes ver todos los alfileres y
quiero poner la salud, esto es lo que me
interesa establecer. Por lo que quiero actualizar esa
salud en esta estructura a esta nueva salud que es diez ahora después de
aplicar el daño. Entonces voy a conectarlo aquí. Y ahora lo estás, necesitas
volver a establecer esa variable porque puedes ver que esto es como
un cuadrado girado, lo que significa que esto es solo
una variable temporal. Hay que volver a configurarlo, y no es como
el pasador circular. Entonces eso significa que necesito tomar mi información animal y volver a configurar
esta información animal. Ahora, toda esta otra
información aquí, la animación ociosa
se mueve, el golpe y la muerte. Va a
ponerlo como lo mismo. Lo único que va
a cambiar es la salud. Y como esto se está ejecutando
a través del servidor, en realidad
quiero replicar
esto para asegurarme de que mi cliente también pueda ver esta edición porque este cualquier daño
que pueda ver aquí. Dice sólo autoridad, este evento solo se
dispara en el servidor. Entonces recuerda replicar esa información de nuevo
al cliente también. Y esto es en realidad
todo lo que parece. Realmente no necesitamos hacer más aquí para estructurarlo
un poco más. Tal vez pueda simplemente
arrastrarlos un poco de camino y simplemente
ponerlo aquí en realidad. Así que trata de estar lo más
estructurado posible. Da click en este pin, tal vez
estructurarlo así, y voy a
acercar todo, así así. Da click en q. bien, entonces ahora tenemos esto, y si quieres ver si esto está funcionando
o no, en realidad, necesitamos probarlo también
para ver si está funcionando. Ahora puedo imprimir aquí. Una cadena de impresión. Puedo imprimir
la cantidad de salud. Para que puedas, tampoco, puedes hacerlo desde aquí, para que puedas arrastrar esto
e imprimirlo. También puedes ver si tu
estructura está realmente actualizada. Para que podamos romper esto de nuevo. Y ahora podemos imprimir esa nueva salud que usted
puso por aquí en esto. Entonces vamos a compilar y ahorrar. Así que ahora cada vez que
va a ser
golpeado, te va a decir el
daño o el más saludable. Entonces por ejemplo,
voy a este caracol, voy a hacer click en caderas. Y se puede ver aquí arriba
dice diez de salud que quedan. Y si no sé si
este es el mismo caracol, ahora le quedan cinco de salud. Ahora si golpeo a otro enemigo, tiene diez de ayuda levantar. Entonces es correcto ahora, le quedan diez de salud
si
aún no lo he escuchado y si la
vuelvo a golpear, tiene cinco. Si vuelvo a pegarlo, tiene 0. Por lo que ahora realmente está
funcionando correctamente. El problema es ahora,
si lo golpeo, dices, verás que dice
menos cinco, menos diez. Entonces se mantiene, sigue
yendo en el menos. Y tenemos que arreglar eso. Entonces lo que tienes que hacer aquí es cuando estás mintiendo
aquí restando, necesitas usar algo
llamado pinza. Abrazadera. Y vamos a seleccionar
éste llamado float, porque estamos
trabajando con carrozas. Entonces vamos a
pinchar el valor que nunca pueda ir por debajo de 0. Entonces, ¿qué es, cuál es el valor? El valor es éste
que queremos sujetar. ¿ De acuerdo? ¿ Cuál es el mínimo? No queremos ir por debajo de 0. Por lo que el mínimo es 0. Y el máximo es
solo la cantidad que este enemigo tiene en salud. Sólo voy a arrastrar esto y ponerlo a esto como el máximo. Por lo que sea que dijéramos
desde el principio, entonces vamos a
poner esa salud aquí. Entonces en lugar de ir
aquí directamente a aquí, va a
pasar por un cliente, se
asegura de que no esté por debajo de 0. Y entonces vamos a aplicar
o editar esa salud aquí. De acuerdo, así que algo como esto. Y vamos a compilar conmigo, haga doble clic en este
pin para que sea un poco más organizado,
Algo así. De acuerdo, Compile y Save, y ahora vamos a hacer clic en
play y probarlo. Así que ahora si le pego a alguien, así que si le pego eso y
en realidad le pegue a éste aquí, 10500, Se puede ver ahora
no puede ir por debajo de 0. Sé que siempre podemos hacer morir
este caracol
cada vez que pego 0. Entonces déjame probarlo con estos
cerdos para que podamos ver 25. Y ahora se puede ver que imprime muchos números y esto es porque en realidad estoy
golpeando a múltiples enemigos. Esto está funcionando ahora. Esto tiene 2015, este
otro tiene 20. Para que puedas ver que estoy golpeando a
todos los enemigos y está funcionando cuando me estoy superponiendo
con múltiples enemigos. Nuevamente puede ir por debajo de 0. Entonces esto está funcionando
perfectamente ahora. Solo para comprobar si la
base del jugador también necesita sujeción. Realmente no necesitamos
sujetar nada aquí. El único, lo único que necesitamos para escalar la salud empresarial, y probablemente tengamos
que hacer eso también para el jugador en el enemigo daña al
jugador, que tiene más adelante. Entonces ahora esto está
funcionando. Voy a eliminar este código aquí. Y este es el,
básicamente el ****. Por lo que se puede ver que en
realidad no es demasiado complejo. Sólo estamos tomando la salud, restándole el daño, y luego poniéndolo
dentro de esta estructura.
72. Animación de golpe enemigo: Ahora es el momento de hacer al
enemigo golpeó la animación. Entonces, hasta ahora solo
golpeamos a los enemigos y no están
jugando una animación. Entonces tenemos que hacer eso ahora. Ahora para las animaciones, tenemos esta en realidad
creamos mucho antes porque
creamos la tarea, en realidad
se encuentra ubicación
aleatoria. Y aquí usamos éste donde pusimos el
estado de movimiento a moverse. Entonces éste aquí
y la base enemiga, en realidad
podemos
cambiarlo porque
realmente no tenemos sólo ahora el
movimiento y el ocioso. También tenemos el efecto hit. Y vamos a
convertirlo justo como el jugador, el jugador que tenemos éste, estado de movimientos
inmaduros. De hecho, cambiémoslo a
un estado de movimiento también. Creo que esto es más como que nos
va a servir mucho
mejor que un booleano. Entonces la forma en que hacemos
esto de nuevo,
vamos, solo usemos el aquí
y la enumeración. Solo utilicemos este. Realmente no tenemos que
hacer uno nuevo. Entonces dentro de aquí,
porque el jugador también
tendrá una animación exitosa, en realidad, no vamos a usar eso para el jugador aquí. Sólo vamos
a hacer un efecto, pero puedes simplemente o
puedes hacer una nueva enumeración
para el enemigo. En realidad solo
voy a usar este porque en su mayoría estamos
usando lo mismo. Voy a sumar estos hits. Y en realidad también
voy a agregar la muerte, pero no vamos a
codificar eso en este momento, pero solo lo estoy agregando por ahora. Y lo que queremos hacer ahora, ahora volvamos
a la base enemiga. Entonces en el enemigo, base enemiga, ahorremos todo y agreguemos aquí ese estado de
movimiento. Por lo que lo llaman estado del movimiento. Vamos a cambiarlo para
comer o enumeración, que se llama
estado de movimiento E seleccionado aquí. Y ahora vamos a arrastrarlo. Y esto es lo que queremos
poner aquí en lugar de se está moviendo. Y ahora necesitamos en lugar de
un booleano, vamos a eliminarlo. Necesitamos aquí una enumeración
llamada estado del movimiento. Entonces lo mismo. Y cambiemos el
nombre por estado de movimiento. Vamos a conectarlo aquí. Whoops, no lo
golpeé así. Y ahora de nuevo, recuerda que
esto es un rep notifica, por lo que necesitamos
convertirlo en un rep notifique. Y por aquí,
desconectemos esto
sosteniendo Alt y haciendo clic. Ahora éste es de la Interfaz de
Blueprint, por lo que necesitamos cambiar
el booleano aquí. Podemos simplemente hacer click sobre
él y eliminarlo. Así que vayamos a la Interfaz
Blueprint aquí, y esto es para el enemigo. Y aquí se establecen movimientos de estado, voy a
eliminarlo aquí y hacer uno
nuevo llamado Seleccionar el estado de
los movimientos de enumeración y llamarlo movimiento Estados. Ahora de nuevo, se va a
chocar por alguna razón. A veces es un poco molesto
que esto brote. En ocasiones se puede cerrar
el motor y las tuercas. Y en realidad a veces
puedes simplemente eliminar esto aquí. Sólo voy a
borrarlo. Sí. Ahora, haga clic en Agregar. Veamos si eso funciona ahora. Eso funciona ahora, no
sé por qué hace eso. A veces,
digamos establecer movimiento, fechas, Compile y Save. Volvamos a
la base de jugadores, en realidad no a la base del jugador, la base enemiga aquí. Entonces en lugar de un
aquí, el movimiento, vamos a compilar y guardar para
asegurarnos de que todo esté correcto. Vamos a conectarlo ahora. De acuerdo, entonces establece los
datos de movimientos correctos. Ahora estamos pasando por esto, está pasando por el servidor, y ahora va a llamar a
esta función OnReceive. Entonces tomemos este estado en movimiento y digamos que switch tiene autoridad. Entonces al igual que lo que
hemos estado haciendo hasta
ahora, que tiene autoridad. Entonces si lo eres, vamos a derribarlos para que realmente
no tengamos todos esos. El caso es que sólo
tenemos a los ociosos. Así que tomemos esto brillante
aquí y digamos Set flip book. Ahora sólo tenemos el ídolo y déjame copiar pegarlo
un par de veces. Aquí. Sólo tenemos tres cosas. Tenemos el ocioso, lo tenemos, están corriendo, así que en movimiento. Y tenemos el efecto hit. Estaremos teniendo
la profundidad más adelante. Entonces para el running, solo
voy a
usar la carrera bien. Entonces, o usar la carrera izquierda o derecha,
Eso no importa. Voy a usar
la carrera aquí mismo. Para la cabeza. Voy a usar esta. Entonces vamos a establecer estas animaciones. Tomemos nuestra
información animal, lo rompamos aquí. Así que romper. Y tomémoslo aquí. Ahora por el inactivo, voy a enchufarlo aquí. Y para la mudanza, voy a enchufarlo aquí. Y para la animación de hits, enchufando aquí por la muerte, esperaremos con eso también. Posteriormente, haga clic en él, oculte los pines no conectados,
arrástrelo hacia atrás y compilar y guardar. Y ahora
lo tenemos todo, correcto. Ahora asegúrate de que si te
has olvidado hacer eso, asegúrate de entrar en cada
enemigo y asegúrate de que en los valores predeterminados de clase hayas establecido todas estas
animaciones aquí, lo
contrario no funcionará. ¿ De acuerdo? Ahora
volvamos a la base. Y aquí, ahora en lugar
de se está moviendo, en realidad, vamos a abrir su, en realidad
tenemos que
cambiar algo aquí. Entonces en la base enemiga, ve a tu enemigo ahora. Y dentro de aquí. Y definió tareas aleatorias. Recuerda que estableciste
este estado de movimiento a moverse y no en movimiento. Pero en este momento, en realidad
ya no es un booleano. Es el estado del movimiento. Por lo que voy a mantener el control y haga clic aquí para eliminar esto. Y éste vamos a cambiar
a r1, ¿verdad? Recuerda escuchar a la base enemiga. Es el derecho de carrera
que estamos utilizando para el movimiento en
el árbol de comportamiento en esta tarea que nos
vamos a mover aquí. Recuerda en el árbol de
comportamiento también tenía éste donde pusimos el
movimiento booleano para ser falso. Entonces aquí, en lugar de ser falso, puedes configurarlo a
inactivo y puedes ver que ya está arreglado por sí mismo. Así que volvamos
al árbol de comportamiento. Ahora voy a
cambiar el nombre de esto en lugar de establecer movimiento Boolean. Déjame simplemente cambiarle el nombre, volver a mis tareas y renombrar esto para establecer el estado de
movimientos, porque ya no es realmente
un booleano. Es agradable mantenerse
organizado así. Ahora, todo está correcto. Ahora volvamos
a la base enemiga. Por lo que ahora hemos cambiado todo
en un estado de movimiento. Aquí quiero jugar
la animación Hit
tan pronto como reciba
daño como enemigo. Así que voy a arrastrar este
poquito de camino así. Voy a decir que establece estados de
movimiento. Voy a llamar a
éste desde el enemigo. Recuerda que no es
del jugador, es del enemigo. Entonces seleccionándolo aquí y conectándolo y
conectándolo aquí. Y voy a tocar mi, mi efecto de golpe así. ¿ De acuerdo? Por lo que haciendo click en
play solo para probarlo y dando click en mi jugador. Y creo que no puedo
probarlo ahora mismo. Entonces si hago clic en hit, se
puede ver que está golpeando
y todo es como bicho. Pero a veces detiene
la animación porque en realidad todavía está dentro
de tu árbol de comportamiento. Pero se puede ver que está funcionando. Así que vamos a probarlo para el jugador, vamos por el cliente. Entonces aquí para el cliente, se
puede ver el cambio que
el jugador hizo del servidor. Entonces para el cliente,
funciona también. Si miro el servidor, puedo ver ese cambio
hecho desde la Kline. Déjame solo para
asegurarme de que no tenga ningún bicho,
cámbielo para jugar como clientes. Por lo que ambos son clientes. Este es un Klein,
esto es un cliente. Y permítanme seleccionar a este
jugador, omega más pequeño. Siempre es agradable si tienes
dos pantallas porque
puedes poner un cliente en una
pantalla y la otra aquí. Porque realmente no
me gusta no puedo hacer eso aquí
por este curso. Tengo que tener todo
en una sola pantalla. Por lo que al hacer click en éste
aquí estoy golpeando se pueden
ver los cambios
aplicándolo pueden ambos clientes
puedan ver el cambio. Ok. Entonces eso es correcto. Todo está funcionando.
No tenemos ninguna caja. Déjame probarlo por el cerdo de aquí. Y se puede ver que el cerdo
también está trabajando para el cerdo. El problema es que se están
moviendo ahora mismo. Así que hagamos eso muy, muy rápido y
en realidad podemos hacer una solución rápida. Entonces aquí, cuando atacas
y cuando te golpean, tomemos este componente de
movimiento y digamos Modo de movimiento Set, igual que lo que
hicimos con nuestra escalera. Así establece el modo de movimiento. Recuerda por nuestra carta la
pusimos a volar. Pero para éste,
simplemente pongámoslo a ninguno porque realmente no
queremos movernos en absoluto. Vamos a compilar y ahorrar. Y aquí como este cliente, déjame subir a los cerdos. Es mucho más fácil ver
aquí golpeando a ese enemigo. Y
ya se puede ver cuando lo golpeé, ya no se mueve. Ok. Agradable. Y la razón por la que se está moviendo de
repente es
porque sigue corriendo
nuestro árbol de comportamiento. Y en este momento se ha puesto el modo de
movimiento a ninguno, así que está atascado aquí. Entonces esto está funcionando
correctamente y tenemos que
hacer un poco más de código para que
se vea más suave. Por lo que ahora que la
animación está funcionando, vamos a acercar eso. Lo siguiente es que queremos
detener el árbol de comportamiento cada vez que la cabeza del enemigo porque no
queremos estar caminando.
73. Detener el árbol de comportamiento: De acuerdo, así que para evitar que el árbol de
comportamiento juegue. Entonces esto es, recuerda que este
es el árbol de comportamiento. Está tocando toda
la animación todavía
cada vez que te golpean. Pero queremos detener
esta animación. El motivo por el que
hago eso es después golpeemos al enemigo en Maple Story, el enemigo te va a
perseguir todo el tiempo. Entonces cuando haga clic aquí en el juego
y le pego a este caracol aquí, este caracol me va a perseguir. No va a ir por este camino y no
va a ir por aquí. En realidad va a buscar
al jugador y va
a encontrarme y perseguirme. Esto es lo que estamos tratando de hacer. Antes de hacer eso,
detengamos el árbol de comportamiento para que
ya no queremos correr esto cada vez que
los enemigos golpeen. Aquí. Antes de hacer eso, tomemos el sprite y queremos
detener la lógica cada vez que haya terminado
esta animación de Hit. Así que de nuevo, al igual que antes
con la animación de ataque, para la animación Hit,
podemos tomar el sprite y decir flip book. Podemos tomar la longitud. Entonces, ¿cuánto tiempo está jugando este
libro flip book? Podemos hacer un nodo de retardo. Retrasarlo con el tiempo que sea
esta animación de Hit. Y después de eso,
voy a tomar este componente de movimiento
y voy a decir detener el movimiento de inmediato. Así que deja de hacer todo lo que
estás haciendo así. Y luego después de eso, se quiere detener
el árbol de comportamiento. Por lo que en este momento éste sólo está deteniendo el movimiento
del enemigo, pero también se quiere detener por completo el árbol de
comportamiento. Y esto se hace consiguiendo
el controlador del enemigo. Así que recuerda en multijugador solo
puedes decir get controller, porque en este momento estamos
dentro del enemigo. Entonces estamos consiguiendo el
controlador para este enemigo. Hemos golpeado. Y entonces vamos
a decir consigue NME ref. Recuerda que hicimos conseguir ref
enemigo hace un tiempo. Si no te acuerdas, intenta entrar en la interfaz y echa un vistazo a
esta base enemiga. Este es el enemigo
del ref que hiciste, que oyes también hizo una
autoreferencia. Para que puedas
referenciar al enemigo aquí. Con este controlador
que tienes. Ahora puedes arrastrar de esto y quieres
conseguir, ahora tienes,
tienes el controlador, lo que quieres especificar, al igual que antes
dijimos get enemigo ref. Bueno, este controlador,
estás hablando específicamente de
este controlador de IA. Por lo que tenemos que especificar
que estamos hablando específicamente de
este controlador de IA. Entonces para hacer esto, ahora, recuerda que
solo podría decir elenco también, porque casting te
estás refiriendo a un plano como este. Pero para el
controlador de IA, lo es, es un gran azul, blueprint, al igual que la base
del jugador y así sucesivamente. Entonces voy a crear
su propia interfaz. Así que haga clic derecho aquí. Y en los planos, recuerda aquí puedes crear
una Interfaz de Blueprint. Llamemos a éste. Llamémoslo controlador de IA. Entonces en lugar de controlador de jugador
es ahora controlador AI. Y aquí digamos obtener controlador o en realidad
llamémoslo get ai. Prólogo ref. Para éste,
hagamos una salida, y la salida es AIC enemigo. Esto es lo que llamamos
al controlador API. Llamémoslo controlador de IA. Y ahora tenemos esa variable. Ahora recuerda entrar en el, en el enemigo aquí y
en el controlador de IA. Y recuerda ir a la Configuración de
Clase y Agregar ese controlador AI
Blueprint Interface. Aquí, Compile Guardar. Ahora se puede ver la función. Y aquí vamos a
hacer la autoreferencia. Así que al igual que lo que hemos estado
haciendo hasta ahora, nada nuevo. Ahora que tenemos esto agregado. Ahora podemos hacer una referencia a ese controlador de IA
sin costar. Entonces si voy a la base enemiga, ahora puedo decir get aae,
controle nuestra referencia. Bien, ahora, como referencia del
controlador de aire para detener un árbol de comportamiento, lo único que hay que
hacer es tomar de esto y tomar el
componente cerebral de esa ai. Así que conseguir el componente cerebral
y decir, Detener la lógica. Ahora va a detener
el árbol de comportamiento. ¿ Cuál es la razón? Sólo voy a decir golpes
para la cabeza del enemigo. Realmente no
importa para nosotros aquí. Entonces la cabeza del enemigo
y va a
detener a ese controlador de IA. De acuerdo, así que cuando hago
clic en Jugar ahora y voy al jugador
y le pego a ese enemigo. Va a golpear a ese enemigo y se puede
ver que se detiene por completo. Nunca se va a
mover porque
en realidad he detenido
el árbol de comportamiento. Ahora puedes hacer que se mueva
después, después de que lo golpeemos. Entonces no es un completamente estático. Simplemente puedes copiar esto,
ese modo de movimiento. Voy a volver
aquí y pegarlo. Ahora va a ir de
ninguna otra vez a caminar. Así que ahora vamos a caminar de
nuevo después de que te hayan golpeado. Y recuerda que fijamos este retraso. Entonces, por mucho tiempo que
sea tu animación para la animación de encabezado, vas a retrasar. Recuerda, un
error fácil que puedo imaginar es aquí y los activos enemigos. Entonces, por ejemplo, para
el efecto de golpe de caracol. Recuerda de nuevo, dije
antes esto era muy importante cambiar los fotogramas por segundo para este efecto de calor, aunque sea un fotograma. Porque si lo vas a
fijar a 15, como por defecto, este retraso aquí
va a ser muy, muy pequeño, por lo que
ni siquiera vamos a notar
esta animación aquí. Entonces enviándolo a uno,
que significa 1 segundo. Entonces es un fotograma por segundo. Y va a esperar 1 segundo, y luego va
a jugar eso. De acuerdo, así que poniéndola a
caminar ahora podemos jugar. Ahora cada vez que lo
vayas a golpear, se va a reproducir la animación de la
cabeza y luego va a cambiar
a ellos modo de caminar. Pero en este momento está
en el modo de caminar, pero realmente no hemos especificado que
en realidad debería volver a correr. Entonces hagamos eso antes de que
terminemos este video. Y recuerda, podemos simplemente usar la carga de movimiento establecido o los estados
no motivos más bien. Y aquí en la base enemiga,
conjunto, estado de movimientos. Y vamos a configurarlo para que funcione bien, porque queremos
estar corriendo de nuevo. De acuerdo, así que debería
ser para este video. Así que vamos a jugar y
ver si está funcionando. Por lo que ahora tengo al enemigo y va a ir en
la carga de marcha. Ahora va a quedar
atascado ahora mismo porque no le
hemos dicho a
dónde caminar. Y esto es algo con
lo que vamos a trabajar en la siguiente lección, donde le decimos al
enemigo que
en realidad vas a
perseguir la capa.
74. Perseguir al jugador enemigo: Por lo que ahora queremos que el enemigo persiga
al jugador. Entonces cuando el enemigo está
siendo golpeado por el jugador, va a repasar y
perseguir a ese jugador que lo golpeó. Así que en primer lugar,
guardemos todo. Permítanme realmente cerrar
todo esto abajo
porque se está haciendo un
poco demasiado. Empecemos desde
el principio aquí. Entonces aquí en el enemigo, quiero que abras
ese controlador enemigo. Y aquí en los
componentes pinchando aquí y escribir de detección. Para que puedan ver tenemos
algo llamado a la detección. Entonces va a
sentir a nuestro jugador. Esto suena como, esto
suena como un Skynet. Ahora se pone un poco espeluznante. Entonces tenemos los pons detectando y va
a sentir los puntos. Entonces el jugador, y lo único que
voy a cambiar aquí, se
puede ver lo que puede hacer. Por ejemplo, puede escuchar ruidos. Entonces, si estás haciendo como un juego escabullido como
Metal Gear Solid, puedes tener esta
cálida detección al sol, envía ruidos cuando
golpeas a la pared y así sucesivamente. tan bonitas geniales. Pero lo único que
vamos a cambiar aquí en el ángulo de visión periférica, lo
voy a poner en
180 para que pueda parecer 360. Vamos a compilar y ahorrar. Eso es lo único que teníamos que hacer. Ahora vamos a cerrarlo. Abramos la base enemiga. Entonces aquí en la base enemiga, cuando el, cuando el enemigo
se está dañando. Todo esto lo hicimos en
las lecciones anteriores. Por lo que ahora el, el punto
se está moviendo de nuevo. Entonces lo que queremos hacer ahora es
que queremos perseguir al jugador. Entonces cuando empieces a moverte,
quieres perseguir al jugador. Lo que vamos
a usar se llama ai mover a éste. Ai se mudó a. Entonces se va
a pasar al jugador. Ahora te va a decir
aquí el punto, quién se está moviendo. Es solo uno mismo, es el enemigo. Entonces voy a arrastrar
de esto y decir yo mismo. Ese es el estanque. De acuerdo,
¿a qué se está moviendo? Se va a mover
al jugador. Pero en realidad no tenemos una
referencia para el jugador aquí. Aquí se puede ver instigado por, y esto es lo que
estaba haciendo el daño, y este es el controlador. Entonces este es en realidad
el controlador del jugador. Podemos usarlo en
coche desde aquí. Y haga clic con el botón derecho en esto y
decir promueve una variable. Voy a llamarlo
controlador de jugador, conectado aquí. Y recuerda replicar esa información para que el
cliente también pueda ver esto. Por lo que ahora tenemos la línea de control de
placa. Ahora podemos sacar el
estanque de eso. Entonces tomando el controlador del jugador, quedándose, consiga controlado. Esto es lo que puedes
hacer en multijugador. Por lo que tienes el
controlador y puedes conseguir eso controlado encendido desde
ese controlador de jugador. Por lo que ahora tenemos al jugador, y ahora se puede ver
conseguir localización de actor. Por lo que ahora tenemos la ubicación del
jugador y
va a perseguir hacia
ese destino. Por lo que se va hacia
la ubicación del jugador. Vale, ¿a quién persigue?
¿ Quién es el objetivo? El objetivo es el jugador. Entonces es simplemente éste. Este es el Peón Jugador. Entonces sólo vamos
a conectarlo aquí. ¿ Y cómo es el radio
aceptable? Cuando llegue a ese radio, se va a parar porque
has logrado
perseguir al jugador. Sólo voy a bajarlo un
poco, tal vez dos unidades. Así que sólo un poco
más bajo que antes. De acuerdo, voy a
mover esto por aquí. Y sólo para organizar
las cosas un poco más, tal vez éste esté
aquí arriba y haga doble clic en eso para que sea más visible,
algo como esto. De acuerdo, Así que muy, muy, muy, muy fácil de entender nodo. Entonces va, por lo que
este estanque va hacia el
destino de los jugadores, ubicación. Y está persiguiendo a
este jugador aquí. De acuerdo, así que voy a tener éxito, tenemos que hacer algo. Entonces, ¿qué debería pasar cada vez
que llegues al jugador? Y esto es algo
que
estaremos mejorando más adelante. Así que en realidad no en este momento. Así que intentemos probarlo. Así que veamos aquí, vamos a jugar. Y ahora podemos ver si
golpeo, por ejemplo, este enemigo y puedo correr. Ya se puede ver que
en realidad me llegó. Y si vuelvo a hacer eso, permítanme realmente quitar muchos de estos enemigos
porque ahora que estamos trabajando con el
enemigo, lo verán. Whoops, elimino todo
el asunto. Lo verás mucho
más claro lo que
realmente estoy trabajando
con un solo enemigo. Entonces voy a eliminar a todos estos enemigos y voy
a agregarlos más adelante. Así que tal vez sólo necesito
uno recogido aquí solo para probar esto,
ambos fuera. Y puedo hacer click en Play. Ahora, vamos a probarlo. Por ejemplo, en este grande lo
voy a golpear ahora. Y me va a perseguir
para siempre hasta que me llegue. Así que cosas muy cool. Ahora se va a mover hacia mí y cuando se mueva hacia mí se va
a quedar quieto para
realmente dañarme. Ahora no hace
nada más porque no le hemos dicho éxito lo que debería
hacer cada vez que me llegue. Ahora podría tal vez simplemente arrastrarme de esto y simplemente seguir looping para siempre y tal vez me
va a dar un error. Tratemos de jugar aquí. Tan infructuoso,
sólo puede seguir degustándome. Entonces si le pego
aquí a este caracol y
me persigue y me pega. Y si me voy ahora, puedes ver que
me persigue para siempre ahora. Ahora es mi mascota.
No es mi enemigo. Tengo un caracol como mascota. Puedo tener el cerdo
como lo he tenido también. Se va, me van
a seguir para siempre ahora. ¿ De acuerdo? Al igual que puedes imaginar esto, también
puedes hacer un sistema de mascotas donde solo tienes que
seguir al jugador. Para que puedas ver todas estas
herramientas que son útiles para conocer estas herramientas para que podamos
usarlas de la manera que quieras. De acuerdo, cosas bastante geniales.
Voy a eliminar esto. Ahora lo que quiero hacer aquí, quiero realmente hacer eso en la siguiente lección donde mejoramos cómo el enemigo está caminando alrededor de él cuando
llegan al jugador.
75. Cómo mejorar el enemigo perseguir al jugador: Muy bien, así que quiero mejorar un poco
ese código. Así que cada vez que se mueve
al jugador, no
quiero seguir moviéndome a ese jugador y seguir
persiguiendo al jugador. Quiero que el movimiento se sienta un poco aleatorio,
aunque no lo sea. Lo que quiero
que hagas aquí en caso de éxito, quiero usar algo
llamado herramienta Move. Y seleccionemos éste llamado se mueve a la ubicación o actor. De acuerdo, entonces ahora se
mueve al jugador, y siempre que llegue
al jugador va a ejecutar esta función llamada mover
a ubicación o actor. Y voy a usar esta
, dislocación aquí. Entonces vamos a desglosar
esta ubicación. Minuto break,
Hagamos un vector. Y eso nos permite
ver los X, Y, y Z. Y aquí ahora, aquí en el
controlador, lo necesita, necesita los controladores de IA, como se puede ver cuando
sostiene el mouse sobre él. Por lo que no podemos decir obtener
controlador y agregarlo aquí. No va a aceptarlo. Necesita específicamente
el controlador de IA. Voy a decir controlador de IA. Y se puede ver que tenemos éste llamado get controlador AI. ¿ Y quién es el actor controlado? Recuerda que estamos dentro de base
enemiga por lo que solo podemos decir yo así. Entonces, ¿cuál es la ubicación aquí? ¿ A quién me estoy moviendo también? Ahora para la meta,
realmente no necesitamos conectarnos a nada porque dice
mudarse a ubicación o actor. Y sólo voy
a usar la ubicación. ¿ Cuál es la ubicación
que nos estamos moviendo también. Pero quiero hacer es aquí, en realidad
puedo mostrarte. Entonces si el jugador
está aquí parado, así que déjame simplemente tomar
Tsarina por ejemplo, para que podamos
visualizarlo mucho mejor. Entonces Serena está parado aquí. Entonces cuando el enemigo
llegue al jugador, quiero que el enemigo mueva 100 o algo así como esas
unidades a esa dirección. Y entonces el enemigo
volverá a ese jugador. Y cuando vuelvas a llegar a
ese jugador, quiero mover 100
a esa dirección. Entonces sigue moviéndose así. Porque en este momento
sólo se mueve al jugador y simplemente se pegó así. Pero quiero que se mueva por el jugador todo el
tiempo así aquí, por lo que sigue persiguiendo al jugador, pero tiene un
poco más de movimiento que solo estar atascado
aquí en el jugador. Entonces si volvemos a
la base enemiga aquí, así que lo que voy a revisar
cuando necesito revisar primero, si es como este enemigo
viene de este lado, hay
que moverte a este lado. No obstante, si el enemigo
viene de este lado, debes moverte a este lado. Por lo que tengo
que comprobar de qué lado viene el
enemigo. Por lo que necesito tomar primero
al jugador. Necesito saber dónde está
el jugador. Podemos hacer eso aquí. Llévate esto otra vez. En realidad, voy a
copiar pegar ese código aquí. Entonces estamos consiguiendo
el control del jugador sobre conseguir los puntos de control. Entonces el jugador, y estamos consiguiendo la ubicación
del jugador. Voy a romper eso
porque lo único que me interesa es este pivote rojo, lo que significa el eje x. Por lo que sólo me
interesa el eje x. No me importa
la Z ni la y aquí. Así que volvamos aquí. Sólo me
interesa el eje x. Ahora tengo la ubicación del
jugador. También necesitaré la ubicación del
enemigo. Y sólo puedo decir conseguir ubicación de
actor porque ya
estamos dentro del enemigo, por lo que el propio objetivo. Y déjame romper eso también. Rompe ese vector para que
pueda ver la X, Y, y Z. así que voy a preguntar, es esta x, así que son
los jugadores, x. ¿
Es esto menor que la
ubicación de este enemigo? ¿ Y lo que eso significa
es el enemigo, el enemigo parado aquí? Se va a preguntar,
recuerda, aquí, si le echas un vistazo a la x, si voy a esa dirección, va a estar alrededor de 0. Entonces se va a meter
en el menos aquí. Si voy por esta dirección, se
puede ver que está bajando. Así que estoy, estoy preguntando en este momento, ¿es la ubicación del jugador,
la ubicación x? ¿ Es menos que los enemigos? Y en este momento lo es, porque momento el jugador de
pie aquí, el enemigo parado aquí, esta X, se
puede ver la x aquí
para el jugador es menor que el para el enemigo. Significa que el enemigo
realmente viene de esta dirección, si eso es cierto. Entonces, ¿qué debería
pasar si el átomo viene de esta dirección? Y eso es algo que tenemos
que especificar aquí en este momento. Por lo que aquí podemos hacer una sucursal. Y alejémoslo un
poco aquí. Para que podamos hacer una sucursal
y ver si eso es cierto. Queremos, como,
si eso es cierto, queremos mover también a este enemigo. Al igual que menos quinientas, quinientas menos 100 unidades. Porque recuerda cuando llegues
al jugador y si
decimos mover la ubicación, eres menos 100, lo que significa que vas
a menos 100 en la X, lo que significa que el personaje realmente
va a, o el jugador
del enemigo se está moviendo 100 a esa ubicación porque
estás mintiendo aquí. Entonces esto es lo
que estamos tratando de hacer. Por lo que estamos diciendo aquí, estamos diciendo entonces
toma eso es cierto, luego toma a los enemigos x ubicación y restar
100 de eso. Y ahora esta es la
nueva ubicación x. Y y Z, realmente no estamos
interesados en ellos, así que sólo vamos a
enchufarlos como están. Entonces ahora lo que estamos diciendo
es que son los jugadores son, ahora, ¿es la ubicación x del jugador? ¿ Es menos que los enemigos? Significa que el enemigo
aquí parado y el jugador de
pie aquí. Si sí eso es cierto, entonces adelante y mueve ese enemigo menos cualquiera que sea
la x actualmente, que está aquí, menos 100 unidades. Esa es nuestra nueva ubicación objetivo, lo que significa que tus nuevas
ubicaciones de objetivos por aquí. Entonces el enemigo se va a
mover de aquí a aquí. ¿ De acuerdo? Así que cosa muy, muy
fácil de hacer aquí. Y la otra cosa es, si es falsa, necesitamos tomar esto y decir, entonces vas a
mover 100 más 100 unidades. Porque recuerda, si es falso, significa el enemigo
parado aquí. Eso significa que cuando
llegues al jugador, quieres que tu nuevo objetivo sea más 100 y x porque
quieres moverlo de esta manera. Más 100 lo hace 800 y
algo por aquí, ¿de acuerdo? Entonces si estás parado al
revés quieres más 100. Entonces ese es tu nuevo objetivo aquí. Así que si acabo de arrastrar estos aquí, así que la x, y, y z,
realmente no nos importa. Es sólo la x que estamos ajustando. Y ese será nuestro nuevo objetivo. Pero en lugar de copiar
pegar este código, ahora, si
te ves haciendo esto, como puedes verte, solo copie el código de pegar y se ven 100% igual excepto
por un valor. En realidad puedes mejorar tu
código un poco. Puedes hacer algo
llamado una carga Select. Entonces, lo que puedes hacer aquí
es en lugar de hacer esta rama y hacer así, puedes ver que este es
el mismo código y
en realidad es mala práctica de codificación porque solo estás
copiando el código de pegar, que es casi lo mismo. Por lo que puede hacer esto un
poco mejor. Entonces en lugar de aquí, puedes hacerlo, déjame
desconectar esto. Y aquí en cambio, ahora ya o
bien estamos sumando o
restando 100 de esto. Podemos derivar de esto y decir select y usar éste
llamado Select Load. Y ahora este booleano, vamos
a conectarlo aquí en su lugar. Por lo que ahora va a decir
que es la ubicación del jugador, esta x ubicación menos que
la ubicación del enemigo. Si eso es cierto, de nuevo, si eso es cierto,
tenemos que restar. Entonces en lugar de simplemente hacer estos, en realidad
podemos decir menos, voy a decir uno menos 125. Creo que probé
con ese número. Creo que esa es la mejor. Y si no es cierto, que significa que el enemigo
está aquí parado, queremos sumar 125. Para que puedan ver aquí realmente no
necesitamos hacer todo
este pegado de copia. Ahora lo va a
hacer automáticamente para nosotros así que no necesitamos copiar, pegar el mismo código. Se va a seleccionar, Toma, echar un vistazo a esto si
es verdadero o falso. Y va a
hacer ese número, como si fuera a menos
o más ese número. Y realmente no podemos sumar, como no podemos simplemente conectarlo directamente aquí porque
va a configurarlo
a estos números. Lo que tenemos que hacer es tomar este valor x y necesitamos
sumar ese número encima de él. Por lo que aquí tenemos que
sumar ese número. Entonces, por ejemplo,
digamos que la x es actualmente 600 para el enemigo. Entonces va, si
eso es cierto aquí, va a decir
600 más menos, lo que significa apenas
menos 600 menos 125. Y va a establecer eso
como la nueva ubicación x. Si el enemigo aquí, si esto llega a falso, entonces esto fue cierto
y esto fue falso. Dice 600 más 127, entonces se va a
trasladar a esta ubicación. De acuerdo, así que hacer eso es mucho mejor que copiar código de
pegar. Así que cuando te ves
copie el código pegando, probablemente
haya una
mejor manera de hacerlo. De nuevo, eres bienvenido
a ir a mi Discordia. Estoy dispuesto a ayudarte
con todas estas cosas. Es agradable tener
todas estas cosas buenas, buenas prácticas para
cuando estás codificando. Para que no te guste, así que es bueno mantenerte
limpio así. Muy bien, por lo que en realidad podemos
quitar esta sucursal. En realidad ya no lo necesitamos. Así que en realidad vamos a probarlo. Por lo que ahora en realidad
tenemos que hacer algo porque cuando te mudas
a esa ubicación, tenemos que repetir el movimiento
aquí y moverte terminado. Arrastremos este bolígrafo
y solo repitamos eso. Me mudé aquí. Voy a hacer
doble clic en este pin para hacer redireccionar nodos. En realidad hacer que se vea un poco más limpio para que no sea confuso mirar algo como esto. Ahora vamos a compilar y ahorrar, y juguemos y veamos qué pasa si hemos
olvidado algo. De nuevo, voy a eso aquí. Y permítanme realmente
eliminar a ese jugador, el jugador de aquí, jugar de nuevo. Entonces como Luke va
a golpear ese clavo. Se va a mover hacia mí. Cuando llegue a mí, se
va a trasladar 125 a esa ubicación cuando vuelva a
llegar a mí, 125. Se puede ver que este es
el movimiento que
agregamos y esto es phi, arrástralo de nuevo aquí. Entonces cuando llegue a mí, se va a mover cualquiera menos 125 a que las etiquetas de
ubicación X actuales son más 125. Se va a trasladar a esa ubicación cuando termine la
película, va a repetir
ese movimiento, lo
que significa que cuando esté de
pie, por ejemplo, si vuelvo al juego, cuando parado aquí,
va a luego perseguirme otra vez. Y luego cuando me
llegue de nuevo, va a repetir
ese código de nuevo. Entonces va en ese
movimiento circular todo el tiempo. Y creo que eso es un
poco más suave
hacer el movimiento así
porque ahora cuando me aleje, nuevo, me va a perseguir. Entonces todo está
funcionando correctamente. Persígueme ahora cuando me
llegue, va a ir 125
a esa dirección. 125 a esa dirección. 125 a esa dirección en sigue yendo y va a
perseguirme de nuevo si me alejo. Por lo tanto movimiento muy fresco
y podemos probar eso con el cerdo aquí. Se puede ver que el cerdo se mueve como
la animación de ataque de cerdo. En realidad está funcionando bien. Ok. Entonces me va a perseguir ahora. Y siguen
enfrentándome y ahora
van 125 en esa dirección. Y hay como si hubiera
un pequeño insecto con ese, tal vez necesitemos arreglar aquí la colisión de
rampa. Probablemente sea una colisión
con la estática aquí. Entonces, lo que puedes hacer
aquí en la base, puedes hacer click en la colisión, realidad
puede simplemente
ignorar todo excepto por el Po1 y
el cliente siendo jugadores. Así que simplemente moverlos de la superposición
porque realmente no
necesitamos solaparnos con nada aquí para esta colisión aquí. Y por esta cápsula. Realmente no podemos hacer esto
porque ahora va, van a caer
del suelo. Probablemente. Se puede ver que no hay enemigos porque están cayendo
por el suelo. Por lo que hay que tener
eso en la cápsula. Entonces haciendo clic en la obra ahora, veamos, este es el
caracol, el cerdo aquí. De acuerdo, y vamos a
mover esa ubicación. Uy, no lo golpeé. Vale,
creo que está funcionando ahora, así que ahora no están
molestando aquí en la rampa. De acuerdo, tan genial. Ahora tenemos un movimiento de IA
muy simple, muy simple. Y se ve muy bien,
se ve al azar también, pesar de que es un código
muy, muy simple. Por lo que se ve al azar también, aunque no esté
relacionado con el azar. Así que cosas muy chulas que
hemos hecho aquí. Y sí, eso fue
todo por este video. Espero que te hayas divertido. Me divertí creando esto y
pasemos a la siguiente.
76. Enemigo para aplicar el daño: De acuerdo, entonces ahora estamos listos para que el Enemigo haga el daño, porque hasta ahora es en realidad sólo el jugador que
hace este daño aquí. Por lo que sólo el jugador
está haciendo el daño. Necesitamos que el enemigo le haga
daño también al jugador. Y para hacer ese daño, realmente no
queremos
codificarlo aquí en ningún daño porque
queremos que el enemigo
aplique el daño a pesar de que no estén
siendo golpeados por nadie. Entonces si el jugador está
caminando hacia el enemigo, aunque el jugador no los
haya golpeado, aún
pueden hacer daño. Así que vamos a hacer
aquí
un evento separado llamado Empezar daño
aplicado. Y en realidad vamos a
querer hacer eso de
inmediato cada vez
que aparezcan en el nivel. De acuerdo, Así que volvamos a las interfaces y
en la base enemiga, déjame hacer
aquí una nueva función que lo iniciará todo. Y llamémoslo
inicia el daño aplicado. Y solo hagamos un
booleano donde decimos el daño aplicado y esto
puede ser verdadero o falso. Sí, eso es todo por ahora. Entonces vamos a compilar, ahorrar, y volver a la base enemiga. Y lo que podemos
decir aquí es que podemos hacer clic derecho y
podemos decir start, aplicar daños, y podemos
llamar a ese evento aquí. Ahora éste, de nuevo va
a pasar por el servidor para asegurarse de que no sea que el
cliente no esté engañando. Por lo que el servidor inicia aplicar daños. Normalmente solo
los llamo el mismo nombre que
los eventos normales
y ejecuto en el servidor. Confiable. Y ahora este booleano aquí, tenemos que añadirlo obviamente de
nuevo, se les aplique el daño. Ahora podemos decir, podemos,
podemos escribir
aquí una rama y decir si esto
es verdadero o falso. Y con eso,
queremos hacer algo. Por lo que queremos empezar a aplicar el daño siempre que sea
cierto y es falso, ya no
queremos
aplicar el daño. ¿ Y cuándo
lo ponemos a verdadero o falso? Así que permítanme realmente simplemente ejecutar esa función del servidor aquí primero, arranque daño ligero
aquí y conectado. Entonces, ¿cuándo queremos
aplicar los daños? Queremos aplicar
el daño siempre que el jugador esté chocando
con el enemigo. Entonces cuando el jugador, si
vuelvo al enemigo, si vuelvo a un caracol, cuando el enemigo está chocando con esta pequeña caja de
colisión aquí, queremos empezar a aplicar
daño al jugador. Antes de eso, realmente no
queremos aplicar ningún dañado. Recuerda, estamos
optimizando nuestro código, por lo que no queremos aplicar
el daño 24-siete, solo
quiero aplicar
daño siempre que el jugador esté interactuando
con el enemigo. Voy a la base enemiga aquí y voy a la ventanilla, haciendo clic en esta colisión, bajando hacia
abajo y luego haciendo clic en n-componente
comenzar a solaparse. Entonces en
principio componente de un laboratorio, lo que hemos estado haciendo
igual que antes, queremos ejecutarlo a través del
switch tiene autoridad para
asegurarse de que es el servidor el que
está ejecutando este evento. Y de nuevo, quiero hacer una nueva esta vez final solapamiento podamos hacer eso al
mismo tiempo también. Voy a comprobar si lo que se está superponiendo con
él es el jugador. Así que de nuevo, actor
ha etiquetado capa. Lo sabemos, sabemos que el jugador tiene el jugador tecnológico y
podemos hacer un brunch ahora. No creo que lo haya
explicado todavía, pero también se puede hacer una
sucursal si acaba de
sostener, mantenga B en su teclado
y luego haga clic, realidad
puede hacer
sucursales también. Atajo tan genial
que puedes hacer. Entonces si la etiqueta es jugador
aquí para este actor, vamos a aplicar
daños y simplemente, sólo
nos interesa
dirigir este evento aquí. Por lo que empieza a mentir daños
aquí en la base enemiga. Y vamos a
poner esto en verdad. Ahora cuando terminemos solapamiento, donde solo
quieres copiar pega todo
este código y queremos
dejar de aplicar el daño. De acuerdo, así es como
lo optimizas. Ahora por el daño aplicado, lo que quiero hacer es que quiero
aplicar continuamente el daño. Te voy a mostrar
por qué en realidad
no te están mostrando por qué
en realidad puedo simplemente
explicarlo muy rápido. Entonces si el jugador es por solo tomar el
jugador, no el caracol. Entonces si el jugador está parado
dentro de este enemigo aquí, bajo jugador, estoy
caminando por ahí, estoy caminando hacia el enemigo. Estoy siendo golpeado. Estoy perdiendo la salud. Pero si me quedo a salvo dentro de esta esfera y nunca
termino superponiéndome con ella. A pesar de que estoy parado
por como diez segundos, no
voy a aplicar daños porque al final y
empiezo a solaparse, vas a aplicar daños. Pero recuerda, esto es, este evento solo se
ejecuta una vez porque esto solo
se ejecuta cada vez
que empiezas a solaparse. Y esto se va a ejecutar
una vez porque esta voluntad, este evento se ejecutará una vez. Y es entonces cuando comienzas a
solapar al enemigo. Pero queremos agregar
continuamente daño a ese jugador si no te estás
alejando de este enemigo. Como tal vez te da un daño cada dos segundos si solo estás parado dentro
de este enemigo. Queremos comprobar
todo el tiempo si el jugador está
realmente de pie aquí y queremos
aplicar daños. Entonces aquí estamos, ya estamos
comprobando si el jugador está
parado en esta casilla aquí porque estamos empezando a aplicar daño cada vez que el jugador está dentro de esta colisión y nosotros dejen de aplicar
daños aquí. Recuerda, de nuevo, tal vez
ya lo adivinaste cuando quieres aplicar daños de
forma continua, por lo que la palabra continuamente, tienes que usar un temporizador. Entonces igual que lo que hicimos antes. Así que establece temporizador por evento aquí. Vamos a conducir desde aquí
y hacerlo eventos personalizados. Llamemos a este daño
aplicado. Tenemos estos eventos personalizados y queremos
aplicar algunos daños. El daño que queremos aplicar. En realidad hagamos
looping y voy a revisar cada 0.12 era. Por lo que esto significa que estás aplicando
daños diez veces por segundo. Y esto tendrá sentido después, como vamos a reducir esto. Pero lo que queremos hacer, vamos a moverla aquí abajo. Lo que queremos hacer es de
nuevo, conseguir actores superpuestos. Por lo que nos interesa conseguir
toda la base de jugadores. Por lo que conseguir a todos los jugadores
superpuestos, queremos aplicarles
daño a todos ellos. Y vamos a arrastrar de
esto y decir por cada uno. Este método, si ya lo hemos hecho desde el jugador
hasta los enemigos, ahora está en la dirección
opuesta. Ahora son los enemigos que aplican
daño a los jugadores. Solo asegúrate de
tener la base de jugadores seleccionada aquí y no
base enemiga ni algo más. Entonces, para cada uno de estos jugadores, ¿
qué queremos hacer? ¿ Ahora? También puedes comprobar la
longitud si es igual a 0, pero eso realmente no tiene
ningún sentido porque ya estás tipo de verificando si los jugadores de
pie aquí o no. Entonces para cada uno de estos
jugadores que están
parados dentro de
la caja de colisión. Nuevamente, queremos conducir desde
esto y decir Aplicar daños. Ahora, ¿
a quién quiero aplicar daños? El actor dañado? Es el jugador. Entonces
es sólo este tipo de aquí. Y tenemos que especificar
cuánto daño se mezcla cada enemigo. Entonces tenemos que volver a la estructura en
la información animal. Y aquí tenemos que sumar una
nueva variable llamada daño. Permítanme simplemente
arrastrarlo arriba de aquí, debajo de la salud, y déjame
cambiarlo por un flotador. Guarda aquí y la base enemiga
ahora podemos compilar y ahorrar. Por lo que ahora podemos ir a los enemigos. Entonces en el cerdo aquí, podemos poner un daño. Así que vamos a hacer clic en
los valores predeterminados de clase, ir a información animal. Y así este daño, por ejemplo, los cerdos están haciendo 15 daños. O tal vez, quizá
digamos 20 daños en realidad para los cerdos y
aquí por los caracoles. Si volvemos a los
ajustes de clase para los caracoles, tal vez lo hagan,
digamos que hacen diez daños. Vamos a compilar y ahorrar. De acuerdo, Así que ahora
hacen diez dañados, el cerdo está haciendo 20 daños, así que duplica el daño. Y aquí lo que podemos hacer
es tomar la información animal, romperlo, y tomar
ese daño añadido aquí. Y ahora es dinámico. Entonces, sea cual sea el enemigo que sea, van a hacer
su cantidad de daño. De acuerdo, entonces, ¿cuál es el controlador que es
responsable de este daño? Entonces estamos dentro
de la base enemiga, por lo que sólo necesitamos el
controlador de este enemigo. De nuevo, se puede arrastrar y
decir consigue controlador. Y eso es todo por la lista de tipos de daños cambia
a tipo de daño aquí. Y eso son todas las
cosas que necesitamos aquí. Por lo que ahora en realidad estamos aplicando
daño a ese jugador. Ahora, más adelante, vamos a añadir un modo dios para que el jugador no
esté siendo dañado diez veces segundo porque esto es
esencialmente lo que está sucediendo en este momento. El jugador se está dañando
diez veces por segundo. Pero vamos a agregar el modo
Dios más adelante. Por lo que hay un periodo de tiempo que el jugador no
será dañado. Pero por ahora, esto es
todo lo que teníamos que hacer. Y pasemos
a la siguiente lección.
77. Jugador que recibe daños: Muy bien, entonces ahora tenemos que
codificar al jugador recibe el daño
por parte del enemigo. Así que ahora volvamos
a la base de jugadores, y vamos a la Gráfica de Eventos. En realidad voy a arrastrar
el gráfico de eventos por aquí y hacer clic derecho y decir
cerrar pestañas a la derecha. Entonces sólo tenemos eso abierto ahora. Por lo que ahora sólo tenemos hecho
el ataque, y ahora en realidad tenemos que
hacer cualquier daño dentro de aquí. Vamos a hacer clic derecho
y hacer cualquier daño. Ahora tenemos este evento. Entonces al igual que en el enemigo Aquí, en cualquier daño, necesitamos
restar la salud del jugador. Y en realidad no estoy seguro si hicimos eso.
No recuerdo. Así que vamos a ir a la
estructura y en lugar de información del
jugador, y no lo hemos hecho. Entonces en la información del jugador, es necesario
agregar una nueva
variable llamada Salud. Éste puedes tomar,
puedes convertirlo en
un flotador, moverlo hacia arriba. Voy a moverla a la cima. En realidad, guardar aquí y la base de
jugadores tienes que compilar y guardar como
predeterminado para los jugadores. Sólo voy a hacer click aquí, todos
tienen la misma salud. Así que sólo voy a poner un valor
predeterminado para todos ellos. Por ejemplo, por la salud, vamos a hacer algo así como 70. No lo sé, es
sólo un número aleatorio. Por lo que sólo 70.
Compilemos y ahorremos ahora. Y para la información dividida, ahora
podemos tomarla
y romperla otra vez. Y lo que queremos hacer, sólo
voy a
esconderlo todo y solo mostrar la salud. Esto es lo único que me
interesa en este momento. Por lo que voy a tomar
la salud del jugador, restar, restar, restarle
el daño. Entonces, por ejemplo, este caracol
va a hacer diez daños. Entonces va a decir aquí, lo que sea que se lo pusimos. Por lo que 17 menos diez
va a ser 60 aquí. Entonces esta es la nueva
salud, al igual que antes, tenemos que poner la
salud por aquí. Entonces arrastrando desde esta estructura, necesitamos escribir conjunto,
seleccionar miembros de conjunto. Lo que queremos actualizar
dentro de esta estructura, necesitamos actualizar las variables de
salud. Voy a seleccionarlo aquí
a la derecha, ponerlo aquí. Entonces este es el nuevo valor. Y al igual que antes, antes de volver a hacer esto, vamos a sujetar este valor para
que nunca vaya por debajo de 0. Vamos a hacer clic derecho y digamos subir y
seleccionar esta llamada cargas de pinza. Entonces el valor mínimo es 0. En realidad déjame
conectarme con el valor de aquí arriba. El valor mínimo es 0. Y el valor máximo. Ahora no puedes simplemente
entrar aquí y conectar esto porque
ahora mismo realmente va a hacerlo. Entonces, lo que puedes hacer por
este máximo, de nuevo, puedes arrastrar de esta
salud y conectarte aquí. Entonces esta es la máxima salud. Entonces puedes
conectarlo dentro de aquí y solo conectarlos. Voy a arrastrar esto hacia abajo
en realidad déjame moverlo un poco hacia adelante y arrastrar
esto hacia abajo así. Por lo que va a sujetar el valor y hacer
todo lo posible para que sea lo más limpio posible. A veces es un poco
difícil en realidad, y algo como esto. ¿ De acuerdo? Entonces algo como esto. Estamos sujetando el valor ahora, asegurándonos de que
no vaya por debajo de 0. Y de nuevo, hay que
poner aquí en la estructura externa, que
volver a establecer esa estructura de información del jugador y replicarla. Por lo que el cliente también lo puede ver solo para estar seguro de que la
información no está molestando. Y ahora el jugador está
recibiendo este daño. Así que de nuevo, puedes
imprimirlo en la pantalla porque no
tenemos UI en este momento, lo
haremos más adelante. Pero puedes romper esta estructura y sumar la salud aquí para que podamos mostrar
esta nueva salud. Puedes imprimirlo en la pantalla y puedes ver si está funcionando. Entonces voy a
jugar a este jugador, voy a caminar
hacia el enemigo. Se puede ver que me está dañando y
me va a dañar diez veces por segundo. Recuerda que tenemos ese
temporizador sobre el enemigo diciendo aplicar daño
de los 0.1 segundos. Entonces diez veces por segundo. Se puede ver que
nunca va por debajo de 0, así que eso es correcto. Siempre se detiene cada vez
que ya no choco. Pero se puede ver que en realidad tal vez tengamos un pequeño problema aquí porque cuando choca
con mi colisión de ataque, en realidad me está aplicando
daño. Y no quiero hacer eso. Sólo quiero aplicar
daños a mi personaje, así que tenemos que arreglar eso. De acuerdo, así que he jugado por ahí con las colisiones y sólo para
ahorrarte un poco de tiempo. Por lo que aquí en la base del jugador, en la cápsula intentó hacer
tus colisiones como mías. Entonces sólo para
explicarlo un poco para que podamos entenderlo también. Entonces estamos generando eventos de
superposición. Aquí. Lo único que
esta cápsula es cuatro, así que esta es la cápsula del jugador. Solo queremos aplicar
daños al jugador. Y recuerda cuando vayas
al enemigo y haz click en
esa caja de colisión, esta es la caja que
necesita aplicarnos daños. También puedes ver este cuadro
si haces clic en él y haces clic en ocultar en juego y lo
quitas para que
lo veas en juego. Por lo que si haces click en Jugar ahora, podrás ver esa caja
alrededor del enemigo y esta es la caja que nos va
a aplicar daños. Entonces esta caja aquí,
recuerda, esta caja, si vas a la colisión, es una dinámica mundial. Entonces esto es lo más
importante con lo que
necesitamos solapar. No es ****, por lo que
la cápsula es ****. Pero esta es una dinámica
mundial. Entonces yendo a una base de jugadores, necesitamos bloquear el mundo. Dinámico. Bloqueo, lo que significa que
quiero gustar interactuar con él. No significa, no
significa que ignoremos esto, ignoramos esto ignorar sobre
un bloque es que
realmente quiero hacer un evento a partir de él. Entonces vamos a bloquear
la dinámica mundial, lo que significa que vamos
a interactuar con ella, así
como el mundo estático, porque lo estático es, son estos azulejos en el suelo
y si quitas eso, vas a caer
por el suelo. Todo lo demás que en realidad podemos
ignorar, tan distraído, así que no tenemos vehículos, cuerpos de
física, otros poemas. Realmente no necesitamos interactuar con otros pons aquí en este momento. Creo que los frutos secos. Porque en realidad el daño viene de esta dinámica mundial. En realidad no la cápsula de los enemigos. Fue la cápsula de los enemigos entonces, correcto, necesitamos
no ignorar el estanque. Pero ahora mismo viene
de esta colisión, que es una dinámica mundial. Entonces es por eso que estoy
ignorando todo y sólo mantengo estos dos encendidos. Ahora para este brillante, no
estamos generando
ningún evento de superposición. Así que saltemos
éste. Por el ataque. Es una dinámica mundial y lo estamos ignorando todo
porque lo único que estamos usando esta caja de ataque
es hacer daño al enemigo. Y queremos hacer
daños cada vez que esta caja de aquí esté interactuando
con esta pequeña colisión. Y recuerda de nuevo, esta
es una dinámica mundial. Por lo que queremos
interactuar como cuando nos
superponemos con la dinámica mundial, queremos aplicar daños, que es el enemigo aquí. El enemigo es la colisión. Entonces eso tiene sentido. Vamos
a ir al enemigo ahora. Entonces la cápsula de los enemigos, estamos bloqueando todo, pero nos estamos superponiendo
con los pons y el cliente siendo capas. Y vamos a la colisión. Aquí. Todo es dinámico. En realidad estamos ignorando
todo excepto ****. Porque la forma en que el enemigo **** está haciendo el daño es
caminando hacia el jugador. Y en realidad no está
entrando en esta caja de ataque aquí. Está entrando en nuestra cápsula
y nuestra cápsula está sobre. Y es por eso que necesito
aquí en el enemigo para solaparme con la respuesta de
colisión de peones. Por lo que muy importante echar un vistazo a todas
las colisiones. ¿ Qué tipo de objeto son? Si era peón, entonces tuve que entrar aquí
y solaparme con peón. Y si lo fuera, digamos que era colina siendo jugador y yo quería
hacer daño, entonces tuve que seguir adelante y
solaparme con jugador de escalada. Trató de echar un vistazo a eso, intentó jugar alrededor y ver cómo funciona. Así que
vamos a salvar todo. Ahora. Demos clic en Play. Vamos a jugar a este jugador. Si estás interactuando
con mi caja aquí, no
estoy recibiendo ningún daño. Eso es bueno para ti. Interactúa conmigo. Estoy recibiendo
daños porque está interactuando con
mi cápsula aquí. Y aquí. Si yo, ahora, se
puede ver si
vuelvo a sólo mi ataque,
ataque colisión, no
está aplicando daño a menos que en
realidad esté entrando en mí. Entonces eso es trabajar como se pretendía. Ahora bien, este código para el jugador que recibe el
daño también está funcionando. Así que en realidad
eliminemos esto por ahora. Entonces ahora que lo hemos hecho, realmente no queremos
aplicar daños todo el tiempo. Así que vamos a crear algún tipo
de modo dios en la siguiente lección.
78. Modo de Dios del jugador: De acuerdo, así que vamos a añadir un
modo dios para el jugador. Vamos a entrar en la base de jugadores ahora. Hagamos una nueva variable
llamada modo Dios. Así que sé el modo Dios, y es sólo un booleano
que podemos usar aquí. Tenemos este booleano
llamado modo Dios, y queremos establecer este modo de Dios cada vez que estamos
ganando daño aquí. Así que justo antes de realmente
calcular todo esto, solo
quería tomar mi variable Modo Dios y
quiero ponerlo a verdad, porque ahora estamos en modo Dios. No queremos que nos
dañen así. Y recuerda replicar
esto al cliente también. Para que puedas ver que estás dentro
del estado del modo dios. Entonces para el modo dios aquí, tenemos que ponerlo en verdadero, pero tenemos que
ponerlo en falso en algún momento. Y hay que poner algún
tipo de duración. Así que en realidad
hagamos una nueva variable llamada tiempo de modo guardia. Y cambiémoslo por un flotador. Vamos a compilar y ahorrar. Para la guía, hora de China. Voy a ponerlo en 1.5 segundos
para que el enemigo no pueda dañarme
durante los próximos 1.5 segundos. Voy a tomar esto
y decir retraso como este. Y sólo voy
a fijar un retraso después de calcular mi salud. Y entonces aquí voy a
poner mi Modo Dios para que sea falso. De acuerdo, así que ahora estamos sentados
a verdad cuando obtenemos daño y después de 1.5 segundos lo
estamos poniendo en falso. De acuerdo, así que aquí,
volvamos al enemigo ahora. Y aquí en realidad hay que
comprobarlo como booleano. Porque ahora solo estamos aplicando daños diez veces por segundo. Pero en cambio, vas aquí. Estás haciendo una, consigue actores
superpuestos y estás ganando a
todos los jugadores. Ahora para cada uno de este jugador, hay
que comprobar si el
jugador está en modo Dios. Entonces tomando esto y
diciendo, en primer lugar, obviamente hay que especificar
comunicarse con este
jugador, base de jugadores. Entonces tenemos que decir Get layer REF, la que llevamos
haciendo hace mucho tiempo. Vamos a conectarlo
como en realidad déjame desconectar esto por ahora para que
podamos ver lo que estamos haciendo. Así que ahora estamos haciendo tomando
esto y diciendo el modo Dios. Entonces estamos obteniendo esta variable Mode
Dios. Y sólo cuando el
modo dios no es cierto, podemos hacer daño. Por lo que podemos decir nueces, booleano. Entonces si el modo Dios es falso, si no estamos en el modo Dios,
hagamos una rama. Si no estamos en modo Dios, podemos seguir adelante y
aplicar daños como este. No obstante, si estamos en el Modo Dios, no apliques daño, no
hagas nada. Como esto, este es
todo el código de modo Dios. Así que de nuevo, muy poderoso para
usar booleanos como este. Y sí, así que ahora tenemos que
conectar esto de nuevo. ¿ Quién es el actor dañado? Puede simplemente arrastrarlo aquí
desde este jugador. No tienes que
hacerlo desde aquí ahora. Simplemente puedes hacerlo desde aquí. Eso es un poco más limpio ahora. Ahora intentemos realmente
probarlo y verlo. Y creo que hemos
borrado nuestra cadena de impresión. Y permítanme, permítanme en realidad, sólo
podemos imprimir una cuerda aquí. Así que imprime cadena y
vamos a imprimirla aquí. En realidad. Vamos a romperlo primero. Tomemos la salud
e imprimirla. Entonces justo antes del retraso, sólo
voy a imprimir. Y entonces voy
a tomar este retraso, volver a esta cadena de impresión, volviendo a ese retraso aquí. Así que sólo voy a imprimir
este valor antes de retrasar. Veamos qué hace. Así que vamos a hacer clic en el juego. Yo entro al enemigo, estoy recibiendo daño a 60. Y sólo después de 1.5 segundos
después del modo jardín, estoy siendo atacado de nuevo. Este código está funcionando ahora. Impresionante. Eliminemos
esto y volvamos a conectarlo. De acuerdo, entonces ahora tenemos la funcionalidad God Mode
agregada al juego.
79. Accede a un jugador VFX: Por lo que ahora tenemos que añadir
un efecto de parpadeo para cuando el jugador sea golpeado. Entonces por aquí en la base de jugadores estamos dentro de aquí otra vez, tenemos que hacer algún tipo de efecto dañado para
el efecto de parpadeo. Así que vayamos aquí y
hagamos nuevos eventos. Ahora tenemos que hacerlo dentro
de nuestra Interfaz de Blueprint, pero no estoy seguro con qué variables necesito trabajar en este momento. Así que hagámoslo
como una variable personalizada o eventos personalizados y podemos simplemente cambiar esto a una Interfaz de
Blueprint más adelante. Voy a llamarlo daño VFX, lo que significa efectos visuales. Y yo sólo soy como
para este video, sólo
vamos a hacer que
el jugador parpadee cuando estés recibiendo daño por
parte del enemigo. Y obviamente de nuevo, tenemos que
ejecutar esto a través
del servidor para
asegurarnos de que el cliente esté haciendo
lo que se les permite. Voy a ejecutarlo a
través del servidor confiable y voy a llamar
al servidor uno de aquí arriba
llamado VFX dañado. De acuerdo, Y aquí abajo, ahora, este efecto de daño, hasta
ahora hemos estado usando las variables de notificación de rep. Pero voy a recordar
aquí para el salto. Entonces si subo por el salto, usamos un multicast. Y si no recuerdas, esto es
hace mucho tiempo hemos usado esto. Un multicast está haciendo lo
mismo que un rep notifique. Entonces mostrando toda esta
información al cliente. Pero el multicast solo
costará esta información a jugadores o
jugadores
ya conectados que estén cerca de ti. Por lo que es jugador parado
muy lejos de ti no verá lo que está haciendo
el multicast. Esto está bien de usar para un efecto de
daño porque
solo estás parpadeando durante dos segundos o donde sea, cuánto tiempo es. Y entonces ese
efecto parpadeante va a desaparecer. Por lo que realmente no importa para los jugadores que están parados a diez kilómetros de distancia de ti o jugadores que aún
no están conectados. Está bien que no
vean este cambio porque es sólo un efecto parpadeante y volverás
a la normalidad otra vez. Así que vamos, hagamos
un evento personalizado y llamado VFX de daño multicast. Y ejecutemos esto
en el servidor. Fiable, real,
no en el servidor. Vamos a ejecutarlo en multicast. Confiable. Y el multicast lo vamos a ejecutar a
través del servidor. Nuevamente, recuerde, un multicast, no
puede ejecutarlo en ningún
otro lugar excepto desde el servidor. Así que llamémoslo aquí
MC dañó efectos V. No puedes, no puedes
llamar a éste aquí arriba. Esto no funciona porque
este no es el servidor. Este es tanto el
servidor como el cliente. Entonces yendo aquí abajo, poniendo ese multicast
aquí abajo corriendo a través del servidor. Ahora el multicast va a hacer eso, ese efecto parpadeante. Entonces para el
efecto parpadeante, muy, muy simple. Empecemos a trabajar con él. Tomemos este sprite. Y cuando se quiere hacer
es aquí en el sprite, queremos cambiar este color. Si haces clic en el
color para el sprite, quieres cambiar este alfa, lo que hace que tu
personaje sea transparente. Si cancelo aquí, si hago clic
en uno de mis personajes. Por lo que si hago click en Tsarina
y voy a viewports, aquí, hago click en, sobre ella, y hago click en el color sprite. Y luego bajé el volumen. Se puede ver aquí el jugador está recibiendo en realidad
no el volumen, el Alpha, lo siento, mi mal. El alfabeto aquí se puede ver que
el jugador se vuelve invisible. El problema es en este momento
el jugador va de totalmente visible a volverse
completamente invisible. Entonces no hay in-between
y necesitamos eso. Y lo que lo está
causando es por este material enmascarado, desiluminado, un material sprite. En realidad tenemos que cambiar esto. Así que intentemos
cambiarlo aquí también. Por lo que puedo mostrarte
cuando haces clic en él, no
puedes ver nada. Y esto es porque hay que hacer click aquí en esta configuración. Y luego tienes que hacer clic
en Mostrar contenido del desarrollador,
mostrar contenido del motor
y mostrar contenido de inicio de sesión. Por lo que al hacer clic en
Mostrar de los tres, se pueden ver aparecer estas
carpetas. Realmente no
necesitamos usarlos. Pero ahora si vas a
Serena y colorea aquí, puedes ver ahora puedes ver muchos más materiales si
tienes razón, sin luz. Porque estamos trabajando
con lote de píxeles, por lo que sólo nos
interesa sin luz. Usa este llamado
translucidez, o
material de sprite translúcido no iluminado en lugar de máscaras. Elegir ese. Ya puedes
ver cuando hago click en este color brillante y
bajo mi alfa, habrá un valor
intermedio, por lo que no va directamente
invisible a lo visible. En realidad hay un nivel
intermedio aquí, y podemos hacer que ese efecto de
parpadeo subiendo y bajando como éste, el jugador se daña. Vale,
volvamos a ponerlo a uno y déjame hacer clic en esa flecha para
volver a la predeterminada. Sólo quiero volver a mi máscara porque esta
es la predeterminada. Vamos a cambiar
esto a través del código. Entonces volviendo a mi jugador aquí. Entonces primero tenemos que
cambiar el material. Entonces yendo aquí,
viendo el material establecido, seleccionándolo aquí. Ahora. Especificar qué material es. Ahora no queremos, de nuevo, cambiarlo directamente por aquí. Recuerda, estamos en el multicast y me gusta
o no me gusta tengo que llevar todas mis variables
al evento muy básico aquí. Entonces este material, puedes
arrastrarlo y ponerlo aquí. Puedes seguir
agregándolo a tus eventos. Y este es el evento principal
que lo va a ejecutar, que está por aquí. Porque cada vez que
ganes algún daño aquí, vamos a llamar a
nuestro daño los efectos. Y lo vas a ejecutar aquí. Y aquí es donde
seleccionas el material. Y queremos seleccionar el que
se llama translucencia. Y bajar en la parte inferior, material
sprite
translúcido sin iluminación. Asegúrate de que el desiluminado. De acuerdo, así que ahora hemos cambiado nuestro material, vale, ¿qué ahora? Ahora queremos cambiar el Alfa, pero queremos hacer
un efecto parpadeante. Y esto se hace
a través de un temporizador. Podemos
volver a usar un temporizador para hacer esto. Por lo que establece el temporizador por
eventos. Haz uno aquí. Y va a bucle
un par de veces. Y cuánto tiempo, ¿cuánto
tiempo va a bucle? Y encontré una buena manera de hacerlo para que podamos tomar el modo
dios aquí. Recuerda que el modo Dios es 1.52. Entonces si pones aquí,
sólo va a hacer ese efecto
parpadeante
cada 1.5 segundos. Y creo que es, necesito
hacerlo mucho más rapido. Por lo que necesito dividir este número. Encontré el camino, como el mejor número es 16. Entonces va a hacer esto
como dividir esto por 16, lo que significa 1.5 dividido por 16, y eso es 0.09. Entonces es como escribir 0.09 aquí. Es casi como escribir 0.1, lo que significa diez veces por segundo. De acuerdo, así que va
a parpadear mucho aquí, para que puedas hacerlo de esa manera. Así que cada vez que cambies
tu temporizador de Modo Dios, va a
cambiar en consecuencia. Para que podamos hacerlo aquí. Así
que ahora es una especie de dinámica. Así que voy a poner mi
material aquí abajo en su lugar. Entonces, en lugar de hacerlo aquí arriba, voy a arrastrar
este material conjunto. Me siento desconectado de aquí. Voy a dejar
que se conecte
aquí arriba así y
necesito hacer un evento. Así que arrastra hacia abajo de
aquí y di daños. Hagamos
primero un evento personalizado, el daño afecta bucle. Y ahora podemos
conectar nuestro material. Entonces primero queremos que nuestro
material sea translúcido. Entonces queremos tomar este
brillante y establecer el color,
color establecido en
color Sprite, ¿se llama aquí? Y ahora queremos poner
este color brillante también. Ahora, realmente no podemos
cambiarlo aquí de nuevo, recuerda que tienes que
pasarlo a través. Así que arrastra desde aquí, ponlo dentro de este evento. Y ahora, en vez de
decir nuevo color, sólo
voy a decir color. Y de nuevo, arrástrelos a través estos eventos hasta que aterrice aquí donde se
puede cambiar. Vale, entonces por el color, sólo
voy a hacer click aquí. Y voy a
cambiar el Alfa. Esto es lo que me
interesa a 0.5. Entonces es la mitad de ver-through. Por lo que nuestro personaje jugador
será medio ver-through. De acuerdo, entonces estamos cambiando el
color y el material. Por lo que ahora el jugador está
medio transparente y luego
queremos retrasarlo. Entonces voy a poner un
nodo de retardo y quiero eliminar. Déjame llevar de nuevo este temporizador de
Modo Dios. Quería retrasarlo, digamos dividido
por 16 de nuevo aquí. Y en realidad quiero
dividirlo por 16. Estos no pueden ser los mismos. Quiero dividir esto por ocho. Es como escribir aquí. Por ejemplo, quieres
ejecutar esto cada segundo y quieres retrasar
esto por 0.5 segundos. Y luego quieres
copiar pega este código porque ahora estás ver-through. Pero quiero volver
a mi modo normal porque recuerda que estamos
haciendo un efecto de parpadeo. Entonces yendo a mi modo transparente y luego voy a
volver a la normalidad. Y sólo quiero la mitad del
tiempo de lo que hay ahí arriba. Así que en realidad
cambiemos esto a ocho. Por lo que va a decir 1.5
año dividido por ocho. Y aquí por el retraso, voy a
hacerlo mucho más rápido. Por lo dividido por 16. Para que puedas probar tu camino
a través de esto y ver qué funciona para ti si
quieres que parpadee más rápido. Obviamente, hay que
aumentar estos números. Si quieres parpadear más lento, tienes que reducir
estos números. Entonces vamos a
retrasarlo por 16 aquí, o el tiempo de Modo Dios dividido por 16. Y luego vamos a poner los materiales a lo
que eran antes. Sólo voy a
copiar pegue esto y ahora sólo podemos poner el
material por aquí. No tenemos que pasar por todas estas cosas,
creo que no. Así que vamos a probar eso. Entonces si acabas de escribir sin luz, tienes al igual que
éste llamado enmascarado en Let's bright material. Esta es la predeterminada. Y el nuevo color. Aquí en el rojo hay uno, verde, uno, azul. Esto significa que es de color blanco y el alfa es uno también. Entonces todos, todo
aquí es uno. Y déjame compilar y ahorrar. Así que ahora vamos a ver si tenemos todo y
no conseguimos nada. Entonces intentémoslo. Tratemos de jugar el juego. Y si entro en el enemigo, se
puede ver que en realidad estoy
teniendo ese efecto de parpadeo. Hay un pequeño error. En realidad me estoy oscureciendo. No voy a ir como
mis propios colores, así que voy a hacer click aquí. Y esto se debe a que
esto no es blanco aquí. Entonces 111, ahora es blanco
porque si no es blanco, aquí
sexualmente oscuro
y si es oscuro, tu personaje se volverá oscuro y no podrás
ver tus píxeles. Entonces yendo 1.5110 y alpha. Ahora vamos a intentarlo de nuevo. Y puedes ver ahora
puedes ver los píxeles cuando estás parpadeando,
así así. De acuerdo, así que ahora es
en realidad correcto. Y en algún momento realmente
queremos
detener ese efecto de parpadeo. Entonces lo que queremos hacer es aquí, queremos detenerlo después de que termine
el tiempo del Modo Dios. Entonces después de estos 1.5 segundos, no
estamos en nuestro tiempo de modo intestino yano
estamos en nuestro tiempo de modo intestinoy queremos detenerlo. Así que hagamos un nuevo
temporizador para eso y digamos establecer un temporizador por eventos. Y para éste, solo
voy a
arrastrar de este evento, hacer un evento personalizado. Llamémoslo detener el
daño, los efectos. Y éste es muy sencillo. Sólo va a gustar
después de 1.5 segundos. Entonces conecta el dios más
tiempo a este temporizador. Entonces después de este Modo Dios, se acabó el
tiempo, vamos
a tomar este mango. Entonces permítanme hacer clic aquí, promover esto a una variable. Y llamémoslo daña
el manejo de los efectos. Y conectemos
a aquellos así. Por lo que ahora tenemos una
variable de esto. Ahora, después de que se acabe el tiempo del
Modo Dios, vamos a tomar este temporizador, que es éste de aquí. Vamos a
tomarlo y decir claro e invalidar el
tiempo o por Handel, lo que significa eliminar
este trozo, este temporizador. Entonces después de que termine el modo dios, vamos a detener
este código aquí. Y obviamente no
queremos bucle esto. Esto sólo va a correr una vez. De acuerdo, así que vamos a compilar y ahorrar. Así que vamos a probarlo.
Demos clic en Play y déjame encontrarme con el enemigo. Voy a parpadear. Y después de que acabaron los tiempos de la
madrina, ya no parpadeo. Y si vuelvo a entrar
al enemigo, va a parpadear. Voy a volver otra vez. Permítanme en realidad, este es el cliente. Déjame volver a la
obra como servidor escuchado. Quiero jugarlo como
el servidor y clientes. Voy a
minimizarlo solo para asegurarme que no he comprado nada. Siempre agradable
probar las cosas en multijugador. Entonces como el jugador ahora, como cliente, estoy parpadeando y está funcionando como servidor. Estoy parpadeando trabajando en ambos. De acuerdo, así que está funcionando bien. Y de nuevo, puedes
cambiar al cliente, asegurarte de que todo esté funcionando. Sólo estoy echando un
vistazo a los dos aquí. Entonces Serena y Luke, si entro en ella, estoy parpadeando. De acuerdo, entonces funciona. Impresionante. Por lo que ahora funciona el código. Siempre puedes intentar
organizar esto un poco, así que te aconsejaría que lo hicieras. Permítanme sólo estos
más cerca juntos. Pero éste podemos arrastrarlo hasta aquí para que
no sea demasiado confuso. Y con este
sprite, rápido aquí, puede importarle nodo
redireccionado así como aquí. Se puede hacer un
nodo redirigido como este. Y para éste también puedes
hacer una nota reescrita. Algo como esto aquí. Por lo que se ve un poco
más organizado. Este de hecho puedo
simplemente tirar aquí abajo. Y este sprite, también puedes
hacer una nota reencaminada. Así que siempre agradable
estar organizado. No puedo decir lo suficiente
porque en algún momento tu proyecto será muy grande y esto será
muy difícil de leer. Entonces algo como esto. Ahora tienes todo
eso terminado. De acuerdo, Así que ahora este es
el efecto de daño. Y ahora por este efecto de daño, ahora puedes, ahora, por
los efectos de daño V, puedes convertirlo en un,
un Evento de Interfaz de Blueprint. Pero en realidad
esperemos con eso en la próxima lección porque
vamos a sumar un impulso. Así que pasemos a
la siguiente lección.
80. Pulsa el impulso del jugador: Muy bien, así que como última cosa
para el daño aquí, creo que necesitamos sumar un
impulso al daño. Entonces cuando el jugador
golpea al enemigo, cuando entro en el enemigo, lugar de solo parpadear, también
quiero
empujar a mi personaje, por lo que da ese impulso. Así que hagamos eso. La forma en que haces esto es tomando el
movimiento del personaje y dices impulso
establecido y en realidad
no establecer impulso. Déjame solo buscar,
creo que se llama añadir impulso aquí, añadir impulso. Y se quiere agregar
ese impulso aquí. Así que permítanme arrastrar esto hacia atrás
y añadir aquí el impulso. Así como esto. Así que ahora para este anuncio, para este impulso de nuevo, tenemos que
arrastrarlo a través de estos, estos eventos aquí,
igual que antes. Y ahora puedes poner el impulso. Ahora hay que
recordar revisar este cambio de velocidad aquí. Y vamos a compilar y ahorrar. Y ahora hemos sumado
algún impulso ahora, pero este impulso,
puedes probarlo. Por ejemplo, escribo 500 en la z y se puede
ver qué pasa. Puedes intentar hacer click en Play, siempre agradable probarlo. Así que lo que sea que estés
haciendo, pruébalo. Ya se puede ver cuando
golpeo al enemigo, estoy siendo empujado hacia arriba
en la z por 500. Así, estoy agregando impulso. ¿ De acuerdo? Ahora podemos hacer algo
divertido aquí por el impulso. Ahora, voy a usar el mismo método que lo que
he estado usando antes. Así que déjame ver dónde
realmente usé ese método. Podría ser la base enemiga aquí. Por aquí. En realidad,
hemos comprobado dónde se encuentra
el enemigo
en comparación con el jugador. Y estamos moviendo a ese enemigo. En realidad quiero
hacer lo mismo. Entonces para el jugador, como
si vienes por aquí, quiero empujar a mi
jugador hacia atrás. Si voy por aquí, quiero empujar a mi jugador
hacia atrás de esta manera. Entonces dependiendo de qué
lado del enemigo estés golpeando al enemigo
o al enemigo que te golpee. Quieres ser empujado
hacia atrás hacia ese lado. Entonces al igual que la base de la ONU, vamos a usar
este mismo método. Entonces voy a volver
a mi base de jugadores aquí. Y la forma en que podemos hacer esto es que en realidad voy a
mover esto un poco hacia abajo, así que tengo más espacio aquí. Voy a conseguir ahora
la ubicación del jugador. Así que consiga la ubicación real. Recuerda que estamos dentro
del jugador en este momento. Entonces consigue ubicación real con una autoreferencia
y los objetivos. Voy a
romperlo porque
sólo nos interesa el valor x, porque el valor x
es esto aquí. Sólo nos interesaba eso. Ahora necesito la ubicación para mi, para mi enemigo y
podemos conseguirlo desde aquí. Por lo que no hemos hecho esto hasta ahora. que podamos hacerlo desde
aquí instigado por, recuerda que estamos
recibiendo daño
del enemigo para que podamos conseguir el
controlador para el enemigo. Por lo que puedo hacer clic derecho aquí, promocionar esto a un controlador o variable y llamarlo controlador
enemigo. Vamos a conectarlo ahora. Y puedo hacer click aquí y
replicarlo solo para asegurarme de que los
clientes puedan ver el valor de esta variable. Y ahora tenemos al controlador
enemigo. Para que podamos tomar este
controlador y C se controla ****. Por lo que ahora tenemos el
peón del enemigo. Y podemos decir conseguir ubicación de
actor. Por lo que ahora tenemos la
ubicación del enemigo. Y quiero
romperlo de nuevo porque
sólo me interesa el eje x. Ahora voy a
preguntarme aquí, ¿es esta x para el jugador? Es menos de
lo que es para el enemigo? Bueno, eso significa otra vez, es si mis enemigos de pie aquí, y si mi jugador
está parado aquí, básicamente
estoy preguntando los jugadores x valor
menor que los enemigos. Y en este caso, es
falso porque mi personaje, si en realidad puedo pegarlo y no golpear el, ahora no
puedo darle aquí. Entonces déjame encontrarlo aquí. Serena. Así. Ahora para el jugador va
a ser falso en este momento porque los enemigos x es en realidad más
bajo que mi jugador. Aquí en el jugador,
ahora mismo estamos preguntando, es mi jugador
más bajo que mi enemigo? ¿ Cuál es falso? Así que volvamos aquí desde el impulso
antes de hacer nada, vamos a conducir desde aquí
y digamos make vector. Al igual que antes. En lugar de copiar
pegar nuestro código, si volvemos al
conjunto base enemigo de peine frente a nuestro código, solo
podemos usar
este selecto float. Así que arrastra desde aquí y
di Seleccionar cargas. Ahora lo que puedes hacer es aquí y la
interfaz que ves aquí, hicimos el plus aquí
porque queríamos la ubicación más lo que
nos estábamos mudando. En este caso,
solo estás aplicando una fuerza como si estuvieras aplicando un
impulso, por ejemplo, 500. Entonces realmente no nos
importan los valores para
la x e y y z Solo
queremos que sea estático. Entonces aquí por la z, vamos a añadir
algo así como 300. Por lo que estábamos ganando un
impulso de 300 hacia arriba. Para la x, realmente
no vamos a tomar esto y decir
más esto y así sucesivamente. Porque éste es solo
el impulso estético, por ejemplo, algo así como 300. Es, por ejemplo, 300 o menos 300 dependiendo de la
dirección de la que vengo. Por lo que ahora tenemos que determinar, voy a conectarlo aquí. Tenemos que determinar
qué dirección es cuál. Entonces digamos aquí,
estoy parado aquí. Veamos, vamos a estar
aquí parados como el jugador. Ahora estoy preguntando, ¿mi valor x es
menor que los enemigos? Voy a echar un vistazo
click a este jugador. Se puede ver que es el 615. Da click en este enemigo es 710. Entonces en este momento, sí, mi x para el jugador es
menor que los enemigos. Entonces en realidad
va a ser cierto en este caso cuando
entras. Entonces es verdad ahora. Así que estoy
caminando hasta el enemigo. En realidad quiero
que me empujen hacia atrás. Y ahora mi retroceso es en realidad
apenas menos 300 porque
puedo ver empujar al jugador hacia atrás va en el menos. Va a bajar este número. Entonces aquí voy
a escribir menos 300. Y obviamente si estás
del otro lado, así que se va a
poner falso, es decir, ahora
necesito hacer esto aquí. Falso significado aquí. Ahora vas
hacia el enemigo. Estás llegando a ir empujado lejos y empujando
al jugador lejos. Esto, este lado de aquí
va a decir más 300, lo que significa que vas a ser empujado lejos de esta manera aquí. Entonces aquí no tiene sentido. Digamos Uno, 100. Y ahora va a
aplicar ya sea menos 300 o 300 en el impulso. ¿ De acuerdo? Así que sólo organicemos esto un
poco mejor, así. De acuerdo, entonces ahora tenemos este código aplicado y creo que
no nos perdemos nada ahora. Así que hagamos clic en Play
y veamos qué pasa. Ahora soy el jugador. Estoy
caminando hacia el enemigo. Voy a ser
empujado por este lado. Eso es correcto.
Ahora, voy a ir de este otro lado
aquí. Eso es correcto. Voy a ser
empujado por este lado. Si voy de este lado, de este lado, voy
a ser empujado por este lado aquí. Así que ahora estoy siendo empujado la dirección correcta ahora. ¿De acuerdo? Por lo que ahora podemos hacer,
a veces puedes hacer cosas
divertidas como
puedes ver aquí. Se puede añadir un, un impulso. El enemigo te empuja lejos
mientras saltas. Entonces tenemos mucha fuerza. Si lo desea, puede bajar la fuerza de valor z a 150 quizá, veamos cómo se ve eso. A lo mejor es demasiado en la z. puedo hacer algo como esto. O puedes simplemente,
creo que fue gracioso. Tal vez sea algo
así como 250 en lugar de 300 o arreglar
algo como esto. Lo ves a veces como cuando ya
tienes velocidad, puedes ser empujado lejos. Si lo desea, puede establecer su propia velocidad a 0
antes de que se dañe. Esto solucionará el problema, pero creo que esto es,
esto está bien aquí. Ahora puedes ver aquí
esto, este cerdo de aquí. Si lo golpeo y voy aquí, a veces broca
aquí en la rampa. Y esto es porque al igual que tratar de ver el video anterior donde arreglamos el caracol para
que no ladrara por aquí. Realmente no lo hicimos por
el cerdo porque el cerdo es, se puede ver que es dólares ahora. Y realmente no lo
arreglamos para el cerdo, sólo para el caracol
porque en realidad el cerdo está corriendo hasta aquí. Pero puedes simplemente, al igual antes cuando lo arreglamos
en el video anterior, creo en la sección
uno, son el enemigo. Cuando hicimos al enemigo, solo se
puede
aumentar la esfera, esfera colisión y luego
tirar hacia abajo al enemigo. Y eso solucionará el problema. De acuerdo, entonces ahora tenemos
este efecto de empuje. Estoy parpadeando efecto cada vez que
nos estamos dañando. Por lo que ahora estamos listos, como
tenemos todo el efecto de
daño hecho. Permítanme simplemente organizar esto aquí. Permítanme sacar esto por aquí. Por lo que ahora que tenemos
todo esto terminado, realidad
podemos empezar a trabajar
en la muerte de los jugadores. Y después de eso, creo que
podemos hacer la interfaz de usuario. Así que permítanme simplemente arrastrar esto más cerca, se
asegura de que también se organice la
base enemiga. Y creo que todo
se ve bien. Si lo desea, puede
comentar todo. Y de nuevo, puedes
organizar todas estas cosas aquí
dentro de categorías. Y creo que todo
se ve bien. Podemos bajar esto así, hacer que se vea un
poco mejor. No lo sé,
algo como esto. Y sí, eso fue
todo por este video. Y guardemos todo y pasemos
a la siguiente.
81. Muerte del jugador: Trabajemos ahora en
la muerte de los jugadores. Entonces, hasta ahora hemos estado haciendo el efecto de calor y cuando
entramos en el enemigo, estamos recibiendo golpes
y perdiendo salud. Pero hasta ahora no hemos trabajado
en la muerte. Entonces esto es lo que tenemos hasta ahora. Ahora dejemos el juego y
empecemos con las muertes. Entonces tenemos muchas
cosas que hacer aquí. Así que vayamos primero a la base de
jugadores. Y dentro de aquí queremos
hacer un nuevo evento personalizado. Y este es el
daño V efectos. En realidad lo voy
a comentar para que no nos confundamos aquí. Y sólo voy a
llamarlo dañar los efectos. Entonces tenemos el daño aquí. Aquí es donde queremos codificar. Lo principal. Entonces déjame
mover este efecto de daño hacia abajo. Y este es el ataque. Voy a comentar
eso también. Caer ese saco. Ok. Entonces aquí por esto, cualquier daño. Déjame echar un vistazo aquí. Entonces aquí estamos calculando la salud y
estamos estableciendo la nueva salud. Y lo que queremos hacer aquí, queremos comprobar si la
salud es 0 porque queremos llamar
al evento de muerte
siempre que sea 0. Así que primero hagamos
el evento de muerte. ¿ En qué debería consistir? Así que déjame mover esto aquí abajo. Hagamos un nuevo evento llamado y solo podemos
convertirlo en una costumbre. En realidad, sólo va
a contener un booleano, así que ya lo sabemos. Así que vamos a la base del reproductor de
interfaz aquí. Y llamémoslo muerte. Y podemos sumar una entrada de
un booleano llamado B está muerto. Entonces el jugador está muerto. Y aquí podemos llamar a ese evento llamado muerto o muerte,
no, no muerto. Y aquí lo que podemos
hacer es que podemos llamar a un evento personalizado llamado
en realidad lo que descubrí. Así que cosas muy cool. Si haces clic con el botón derecho,
en lugar de escribir personalizado, puedes escribir puntos T y
en tus puntos T correctos, obtienes automáticamente
estos eventos personalizados. Así que muy, muy rápido
atajo aquí para hacer los eventos personalizados y vamos a convertirlo en
las muertes del servidor. Entonces pasando por el servidor, haz que se ejecute en el
servidor confiable. Y vamos a ejecutar el
desde el servidor de aquí arriba. Y entonces tenemos que hacer que
el booleano b esté muerto. Y pasémoslo por aquí. Ahora lo que podemos hacer aquí, podemos hacer clic derecho y
promocionar a una variable. Y podemos llamarlo ser. Es eso, bien, entonces éste, lo que quiero hacer, quiero, así que cuando nos atropellan el
enemigo y tenemos 0 salud, queremos establecer nuestra animación de
muerte. Y por cierto,
he cambiado
así, hasta ahora en el video. Te dije antes que necesitábamos extraer nuestra animación de muerte. Pero me di cuenta de que
en realidad era mejor hacer esta animación de muerte
en un solo fotograma. Así que si estás viendo esto, probablemente solo
tengas un marco. Entonces vamos, déjame borrar
todo esto aquí. Y déjame solo importar esta animación de muerte cerebral aquí que tienes en
tus materiales de curso. Y permítanme aplicar la textura de papel
2D y crear un sprite, llamarlo S muerte, y hacer un libro
flip rápido de ese llamado muerte o muerto. Vamos a llamarlo
muerte en lugar de deuda. Y los marcos por segundo
sólo van a ser uno. No creo que
importe para éste. Vamos a cerrarlo
ahora tenemos eso. Voy a ir rápido aquí a Luke y Serena y
al jugador de planos. Voy a sumar los de
aquí abajo y la animación de muerte, solo para asegurarme, también
asegúrate de que los
hayas agregado
aquí cuando abras los valores predeterminados completos de clase de editor de
blueprint. Y justo lo que hemos
estado haciendo hasta ahora. Por lo que aquí abajo en la información del jugador. Y voy a sumar
mi animación de muerte nuevo aquí para Serena. De acuerdo, entonces tenemos esto agregado ahora, compilar y guardar todo. Por lo que queremos jugar esto, este flip book aquí
cada vez que estamos muertos. Entonces volviendo a la base de
jugadores, ahora, siempre que esto sea, así que de nuevo, estamos haciendo un
cambio visual, estableciendo un flip book. Por lo que tenemos que
pasar por un rep notifique, ya que este es el servidor
y esta roca notifique, lo único que va a hacer. Primero tomemos esto está muerto
y asegurarnos de que sea verdad. Entonces cuando es cierto,
cuando estás muerto, queremos llamar al estado de los movimientos
establecidos, o al jugador que el
movimiento se declara a la muerte. De acuerdo, para que
llamemos a la muerte y sólo para asegurarnos de que
tengamos ese set. Entonces yendo a los
movimientos de disturbios estados y aquí que no hemos
dicho eso hasta ahora, voy a copiar
pegar este flip book. Y conectemos aquí la muerte. Y si no has editado, en, editarlo todavía, recuerda
aquí en el, este es un estados de
movimientos de enumeración, y este es el
que hicimos antes. Entonces si quieres editar, si no has editado antes, puedes ir al estado del movimiento de
enumeraciones, y puedes agregar muerte aquí, y aparecerá
en la lista aquí. Muy bien, así que para la animación, hagamos click aquí y tenemos una animación de muerte para
la, para la estructura. Y vamos a hacer clic en
él para que aparezca. Y podemos arrastrar
de ella y sumado. Si no aparece,
recuerda que también tienes una, una flecha aquí. Puedes hacer clic arriba y abajo. A veces se esconden. Si no los necesitas, realidad
puedes hacer clic en Ocultar
alfileres desconectados y los
esconderás un
poco más limpios. Puedes hacer esto un poco más limpio. Se ve un poco desordenado en este
momento, algo como esto. Ok, compuestos ahorrados
ahora tenemos eso agregado. Volvamos a
la Gráfica de Eventos. Entonces cada vez que el jugador está muerto, así que siempre que esto se ponga en
verdad, va a jugar
nuestra animación de muerte solo para asegurarnos de que
el jugador no pueda moverse. Voy a tomar el
Componente de Movimiento de Personajes y decir detener el movimiento de inmediato. Solo quería asegurarme de que el personaje no se esté
moviendo, así así. De acuerdo, así que ahora eso está conectado, también
vamos a asegurarnos de
que el jugador no pueda moverse siempre
que esté muerto. Entonces yendo al Gráfico de Eventos, voy primero a mi, éste se mueve a la derecha y a la izquierda, tomando esto está muerto. Y de nuevo, al igual que antes de
escribir un NO booleano. Y a partir de aquí, simplemente
haciendo click en este Agregar pin, entonces puedes añadir más de ellos. Ahora en realidad se puede
conectar esto también. Así que siempre que el jugador, si el jugador está subiendo, no se
puede mover a izquierda y derecha. Cuando el jugador está atacando, obviamente no se puede
mover a izquierda y derecha. Y además cuando estás muerto, no
puedes moverte a izquierda
y derecha es que tenemos que agregarlo a cosas que no queremos que
el jugador use. Entonces por ejemplo aquí
también aglutinando arriba y abajo. Y podemos decir y
aquí y booleano aquí. Y podemos sumar estos atacando y conectarlo aquí en su lugar. Por lo que necesitamos estructurar
esto un poco. Ahora se está poniendo un poco
desordenado, pero eso está bien. Siempre podemos limpiarlo pronto. Déjame copiar pegar. Esto también está muerto, y podemos editar para el salto. Entonces aquí por el salto,
no puedes saltar si estás muerto. Y lo último
es el ataque. Entonces el ataque está aquí abajo. No puedes atacar
si estás muerto. ¿ De acuerdo? Así como eso. Sólo para asegurarnos de que no
tengamos bichos. Por lo que comprobamos con los
booleanos así. Vale, entonces ahora
no puedes atacar, vale, así que tenemos esto muerto y qué debería pasar
cada vez que estés muerto? Hagámoslo más tarde. Entonces, ¿cuándo queremos
llamar a este evento aquí? Queremos llamarlo
siempre que la salud sea 0. Entonces el cualquier daño aquí, el jugador se está dañando. Y estamos recalculando
la salud aquí. Por lo que ahora tenemos aquí la salud
actualizada. Entonces tomemos esto
y digamos descanso. Y ahora tenemos esta salud. Y puedo decir iguales, esto es igual a 0. ¿ Qué debería pasar? Voy a dar
a conocer los otros alfileres. Entonces, lo que debería pasar
cada vez que la salud sea 0, podemos hacer una sucursal aquí. Entonces cuando la salud es 0,
queremos llamar a nuestro evento de muerte. Entonces escribiendo la muerte, llamando a esto ese evento aquí y
fijándolo para que sea verdad. De acuerdo, así que ahora esto es cierto. Siempre que sea falso, queremos hacer otra cosa, lo que significa que no estamos muertos, nos acaba de golpear. Por lo que en realidad voy
a quitar esto de aquí porque probablemente
necesitamos agregarlo aquí. No queremos dar, no
queremos quitar
el Modo Dios y también tenemos este retraso antes comprobar si el jugador
está muerto o no. Porque recuerda, si
haces esto, así, entonces vas a
retrasar el código. Entonces estás calculando
la salud, vas a retrasar el código. Y si estás muerto,
en realidad vas a morir después de este retraso, que no tiene sentido
porque ya estás muerto, pero hay retrasos en tu muerte
y no tiene sentido. Así que en realidad veamos, haga clic en Control X para cortarlo y
pegarlo aquí en su lugar. Sólo estamos calculando
la salud así. Y ahora aquí abajo
podemos hacer este código aquí. Si tu salud
no es igual a 0, vamos a retrasarla aquí
y quitar el modo dios. O si ya estás muerto. Entonces si la salud
es 0, entonces
vamos directamente
al evento de muerte. Y todavía queremos mantener el Modo
Dios para que sea verdad aquí. Porque cuando estás
muerto, no
queremos que el enemigo te golpee. Así que sigo manteniendo
el modo dios encendido. De acuerdo, así que veamos aquí abajo. Entonces la profundidad se va a relacionar. Jugamos en realidad el
juego y veamos qué pasa. Así que déjame hacer click en Play. Y ahora podemos colocar este personaje, te estás
dañando. En realidad déjame bajar la salud de mi
personaje para
poder probar esto y no tengo
que ser golpeado muchas veces. Así que déjame revisar para
qué puse el daño. Recuerda en el enemigo, para el caracol y el cerdo, has añadido daños. Y déjame revisar
cuál fue el daño. El daño para el caracol
aquí en la información animal. El daño fue de diez
y fueron 20, creo, para el cerdo. Así que déjame poner mi
salud por el jugador. Aquí en la información del jugador. Déjame ponerlo a 20. Así que me da un golpe por el cerdo, pero me dan dos golpes del caracol. Por lo que haciendo click en Play para que
pueda probar eso rápidamente. Ahora podemos ver. Yo morí. Y en realidad mi, mi tumba aquí
parpadea cuando estoy muerto. No me gusta eso, así que
está parpadeando aquí. Y en realidad no
me gusta eso. Entonces tenemos que reestructurar
eso mató un poquito. Porque cuando nos
dañamos aquí en el, cualquier daño, esta es la base enemiga. Aquí en la base del jugador. Estamos recibiendo un impulso y estamos consiguiendo
ese efecto parpadeante. En realidad quiero hacerlo
cada vez que no estoy muerto. Porque cuando estoy muerto,
no quiero parpadear. No quiero que mi tumba parpadee. Entonces en realidad tenemos
que separarlo porque en realidad me
gustó el impulso aquí. Me gusta el impulso, pero no
me gusta parpadear. Entonces tenemos que separarlo. Entonces separemos este efecto. Entonces aquí en los efectos de daño, voy a hacer un evento personalizado, y éste va
a ser un impulso. Entonces en realidad voy a convertir esos en Interfaces de Blueprint. Entonces voy a ir a la
interfaz y la base del jugador aquí. Hagamos uno ahora
llamado impulso de daño. Y el otro que teníamos. Así que volvamos. El otro se
daña vía efectos y toma el color y el
material como entradas. Así que permítanme hacer uno nuevo
llamado dañar los efectos. Bien, entonces el impulso
toma un vector. Entonces aquí abajo, vector, y sólo voy a
llamarlo el impulso. Y el otro, el daño
vía efectos toma un color. Y puedes ver aquí, si
haces click en el color, puedes ver qué tipo
de variable es. El material es interfaz
material y éste es un color lineal. Para que puedas volver
a la interfaz y elegir aquí material. Y se llamaba el material. No creo que haya algo llamado interfaz
material. En realidad fue una interfaz
material, por lo que tenemos que seleccionar
esta seleccionada aquí. Y el otro era
un color lineal aquí, y éste es un color lineal. De acuerdo, así que solo llamamos a
este color. Y ahora va a ser, nuevo, voy a eliminar esto, Compile y Save,
va a buck otra vez, y tengo que eliminarlo tal vez. Así que vamos a llamarlo color de
capa en su lugar. Y éste, material del jugador. De acuerdo, entonces compilar y guardar. Y ahora
volvamos a llamarlo aquí. Llámalo daño,
los efectos aquí. Y el material entra aquí, la alerta lineal entra aquí y el impulso se
ha separado. Por lo que voy a
hacer clic en el servidor uno y eliminarlos pulso, se
lo eliminará de aquí. Y este multicast, voy a quitar
también
el impulso porque
no lo queremos aquí. Voy a quitar ese impulso de aquí y solo
pegarlo aquí arriba. En cambio. Voy a hacer un nuevo
evento que recuerde que
acabamos de hacer el impulso de daño. Por lo que voy a llamar a este evento
de impulso de daño. Nuevamente, correrlo a través del servidor como Harvey daño impulso. Y éste tendrá
aquí este vector. Sólo voy a
enchufarlo así y conectarlo aquí arriba
llamado el servidor-1. Y vamos a correr por
el servidor primero aquí abajo. Y llamemos al daño del
servidor en las encuestas. De acuerdo, entonces ahora están conectados. Ahora los hemos separado. Y permítanme volver a conectar este multicast antes
de olvidar éste, en realidad, éste, lo estoy
haciendo mal aquí. Tenemos que agregar un multicast. Así que de nuevo, a un multicast, el impulso de
daño. Y de nuevo necesitamos un
vector aquí abajo. Y vamos a ejecutarlo a través de
un multicast y confiable. Y tenemos que ejecutar el multicast aquí a través de este servidor. Entonces éste. De acuerdo, entonces ahora tenemos esa edición. Voy a hacer
un poco más de espacio. Por lo que tenemos espacio para ese evento. Así como esto. Y ahora veamos si nos
falta algo. Y creo que esto se
ve bien hasta ahora podemos acercar esto un
poco más, no tiene sentido
tenerlo tan lejos. Así. Muy bien, entonces ahora tenemos el impulso
dañado separado. Entonces, lo que podemos hacer aquí arriba, ahora, te va a dar un error porque realmente no
tenemos
un impulso aquí. Así que bajemos
y echemos un vistazo. Entonces hemos dañado el impulso, el
impulso, los efectos, ¿de acuerdo? Éste está dando un error. Vamos a eliminarlo. No sé por qué no está eliminando
el impulso. Así que busquemos
daños. Impulso. Quiero que mi impulso esté aquí. Por mi impulso, quiero que
esté aquí. Entonces esto es correcto. Vamos a enchufarlo. Pero quiero mi color
y no estar aquí, pero quiero tocar mi color
cada vez que no estoy muerto. Entonces no quiero el efecto
parpadeante. No quiero tocar mi
efecto parpadeante aquí arriba cuando esté muerto. Así que juguemos el
efecto parpadeante aquí en su lugar. Y se le llamaba
daños efectos UV aquí. Y para el daño
vía efectos de nuevo, hay que
seleccionar un material, o bien eliminarlos aquí. Así que de nuevo, haz clic en Configuración, muestra el contenido del desarrollador,
muestra el contenido del motor y muestra el contenido del plug-in. Y ahora se puede
seleccionar el material y se llamaba Sharon, escluso y C son translúcidos y bajar y
encontrarlo aquí translúcido, material sprite
sin luz y
cambia el color del jugador a 1.5110 en el alfa. Rápido, vale, así que ahora lo
tenemos como antes. Y si voy a bajar y
echar un vistazo aquí, por lo que el material se fija a
lo que dijimos y luego lo vamos a
volver a poner de nuevo a la mezquita sin luz, que era nuestro color normal. De acuerdo, Así que eso se ve bien. Ahora, en realidad probemos y
veamos si esto es bueno ahora. Así que vamos a jugar. Ahora nos están golpeando. Eso es lindo. No me gustan los efectos
parpadeantes, así que eso es lindo ahora. Y lo voy a probar
como el servidor también. Entonces Platón como servidor de escucha. Y sólo para asegurarme. De acuerdo, entonces ahora somos un tubo y
eso se ve muy bien. Entonces eso es todo lo que teníamos que
hacer por la muerte del jugador. Y el siguiente, vamos a
crear el menú I, en realidad
podamos tener
alguna interfaz de usuario y actualizar nuestra salud.
82. Cómo crear la interfaz de usuario principal: Ahora diseñemos la interfaz de usuario
principal para el juego. Entonces, hasta ahora no
tenemos una interfaz de usuario en el juego. Entonces vamos a la interfaz de usuario. Y aquí vamos a
hacer clic derecho e ir a Interfaz de
usuario y crear
un Blueprint Widget. Y selecciona éste,
widget, widget de usuario. Y llamemos a este WB hizo. Entonces esta es la interfaz de usuario principal. Haga doble clic en él aquí. Primero, de nuevo, tenemos que
buscar Canvas y necesitamos agregar un Canvas antes de hacer
nada dentro de aquí, lo que quiero crear en
este momento es
quiero crear nuestra Barra de
Salud aquí abajo. Entonces el principal resultado
que estamos
buscando es realmente hacer esto aquí. Por lo que siempre es agradable visualizar y saber lo que estás
haciendo antes de hacerlo. Entonces cuando miro esto, tenemos una superposición porque
tenemos barras de salud
encima de un fondo. Esto significa que tenemos una superposición
y luego tenemos dos barras. Por lo que el Health Bar y el bar de experiencias uno
encima del otro. Y puedo decirme a mí mismo, esta es una caja vertical. Recuerda que usamos la caja vertical y esto porque
se están alineando verticalmente. Y sí, probemos dos. Tratemos de empezar aquí. Entonces primero necesitamos una
superposición porque necesitamos un fondo con
barra de salud encima de ella. Entonces cuando
agregaste sube aquí, déjame simplemente, puedes rediseñar aquí
el punto de anclaje. Recuerda hacer eso. Entonces en la superposición, pon el punto de anclaje
a abajo aquí, porque aquí es
donde lo queremos. Y déjame arrastrarlo por
ahora, por aquí abajo en alguna parte. Por lo que aquí queremos sumar primero el fondo y el
fondo es sólo una imagen. Entonces busca un editor de imágenes
encima de la superposición. Da click en esa imagen
y vamos a cambiar esta imagen a realmente se
puede ver me dan muchas cosas raras y esto es porque hemos habilitado todas las de la lección
anterior. Así que esconde el contenido del
plug-in show, ocultar el contenido del motor de show y ocultar el contenido de show developer. Volvamos aquí y pinchemos sobre estas imágenes para que podamos
ver las nuestras únicas. Y seleccionemos el
botón llamado, Cuadrado
Negro plano. Éste. Aquí puedes llenar
todo el asunto, así que una línea horizontal
y verticalmente. Entonces llena todo el asunto. Voy a duplicarlo. Control D para duplicar, o podemos hacer clic derecho y pulsar Duplicar y
seleccionando esta imagen. Ahora, ahora quiero cambiar
éste a los pisos cuadrados
azules de botón. Y quiero hacer
el y a cinco, en realidad sólo cinco,
se puede ver nada cambiado. Y esto es porque tenemos esta alineación
vertical seleccionada. Voy a seleccionar
esta alineación superior. Así que sólo estoy decorando
mis antecedentes. Puedo eliminar todas las
líneas discontinuas haciendo clic aquí arriba. Así que sólo estoy decorando
un poco. Voy a hacer click en Control
D en la imagen aquí arriba. Y lo voy a
alinear en la parte inferior. Así que ahora tengo este diseño
impresionante. Y lo que queremos
hacer ahora es tener suerte. Si le doy un vistazo a esto antes. Necesitamos ahora una
caja vertical donde tengamos estas dos barras de progreso una
encima de la otra. Así que permítanme
buscar un cuadro vertical, agréguelo a la superposición aquí. Ahora, busquemos barra
de progreso. Entonces barra de progreso aquí, puedes arrastrarla a
la caja vertical. Y lo que puedes
hacer ahora es que puedes, ahora puedes ver, no
se puede ver mucho porque hay
que agregarlo en realidad. Entonces en el estilo para la barra de progreso y
pienso por el cuadro vertical, permítanme realmente alinearlo
aquí en el centro primero, este es el bichos verticales
Haciendo clic en la barra de progreso. Voy a cambiar
la imagen de fondo. Déjame cambiarlo a
éste, cuadrado negro, plano
oscuro, por lo que es un poco más
oscuro que este color aquí. Entonces lo que quiero hacer
es en realidad quiero
alinear mi caja vertical aquí
todo el camino horizontalmente. Entonces mi barra de progreso está
alineando todo el camino. Y lo que quiero que hagas ahora es
ir aquí a la derecha y a la izquierda. Entonces aquí a la derecha. Entonces lo estoy empujando desde
la derecha, lo estoy empujando. Entonces no está aquí en los bordes. Voy a empalmarlo con
tal vez 203030, y a la izquierda 30 también. Y podemos intentar sumar, Volvamos aquí
por la barra de progreso. Vayamos a la imagen de factura y a la
imagen de la carpa para fiestas. Y agreguemos
uno rojo para la salud. Por lo que esta llave roja 14
también, una roja. Por lo que ahora se puede ver
que es mucho más grande. Y si aumentas
este porcentaje, puedes ver aquí este
porcentaje está llenando, pero realmente no se lee
como lo que elegimos. Y esto es porque hay que
bajar por la barra de progreso y el Color de Relleno y Opacidad por alguna razón no
tengo idea de por qué es azul. Para que puedas hacerlo. Aquí, si acabas de escribir 111 o simplemente puedes aumentar
y disminuir estos deslizadores, solo hazlo blanco aquí. Y si es de color blanco, puedes ver el color de tu botón
verdadero o el color de la
barra de progreso aparecerá. Entonces esta es la barra de progreso. Muy cool. Y en este momento se está
alineando con mucho aquí. Tan caja vertical,
estamos alineando aquí. Y para la barra de progreso, creo que esto es bueno por ahora. Siempre podemos cambiar el tamaño
si es demasiado grande después. Entonces, hasta ahora se ve bien. No obstante, en realidad estamos necesitando una superposición porque recuerda, tenemos el texto en la
parte superior de la barra aquí, así que en realidad necesitamos un texto aquí, así que en realidad necesitaba primero
una superposición. Así que arrastremos una
superposición dentro de esta caja vertical y pongamos esta barra de progreso
en la superposición. Por lo que también podemos añadir texto encima de él aquí
y la superposición. Por lo que tenemos barra de progreso
y un texto encima de ella. En el texto, voy a
alinearlo en el medio. Y llamémoslo al 100%. Entonces, por ejemplo,
esta es la salud. Voy a cambiar el texto a, probemos semi negrita. Semi audaz, en realidad audaz, tal vez Source Sans Pro Bold. Y creo que en realidad
vayamos con el negro. Negro. Y ésta de la talla, voy a reducirla a 14. Texto tan muy pequeño aquí. Voy a darle un esbozo. Entonces aquí en la configuración de contorno, así que voy a ponerlo a uno. Por lo que tiene un esquema. Si lo desea, también
puede agregar sombras. Entonces primero aquí en
el color de la sombra, hay
que ir al Alfa. Y si escribes una, las sombras aparecen completamente. Y si escribes 0, déjame subir tu 0.35. Significa treinta y cinco
por ciento sombra. Y voy a mover
la sombra offset dos a dos por lo que está
un poco más lejos. Puedes ver si agregas más, va a ir un poco
más lejos del texto. Entonces el 22 es bueno para mí. De acuerdo, entonces lo que puedes hacer ahora, siempre
puedes disminuir el tamaño disminuyendo
este y aquí. Creo que es demasiado grande. Entonces disminuyendo la
y. Así que algo como esto, tal vez como 42. Sí, creo que eso es
bueno para ti también. También voy a copiar
pegue eso aquí arriba. Y ahora se ve bien. Entonces esta es nuestra Barra de Salud. Ahora, lo que podemos hacer
es compilar y guardar, y podemos duplicarlo. Por lo que podemos hacer clic en la superposición. Podemos hacer clic en Control D.
Ahora lo duplicamos. Y permítanme añadir un espaciador entre estos dos espaciadores
entre las superposiciones. Y este espaciador es
tal vez diez y el y Así que hay un poco de
espacio entre ellos. A lo mejor 1515 es bueno. Entonces este es el bar experimentado. Entonces en lugar de rojo,
cambiémoslo a amarillo o verde. Ese suele ser el
estándar para la experiencia. Y cambiémoslo aquí atrás bajo la Barra de Salud, era 42. Así que déjame copiar eso
y pegarlo aquí por 24242, así. Y para el experimentado bar. Y tal vez va
a decir algo así como 23 experiencia que tienes de 150 que
se necesita para subir de nivel. Entonces algo así. Por lo que ahora tenemos esa interfaz de usuario dijo. Y de nuevo, recuerda hacer
clic en la superposición, cambia tu ancla a aquí abajo. Y puedes intentar ajustar
esta posición en la x e y. voy a habilitar
las líneas discontinuas que en realidad pueda ver
dónde está colocada. No sé,
algo como esto realmente no
importa por ahora. Vamos a compilar y ahorrar
para la respuesta. Queremos hacer algo como esto donde dice que te han
matado y luego dice por
lo que te han matado. Y luego presionas
bien para responder. Así que de nuevo, necesitamos una superposición para poner algo de
texto encima de él. Y necesitamos un botón
con una superposición porque tenemos un botón
y texto encima de él. Así que volvamos aquí y
agreguemos primero una superposición. Buscando superposición,
voy a minimizar esto aquí. Voy a
añadirlo al lienzo. Esta superposición se va a
colocar en el medio aquí, medio, aquí arriba arriba. Y voy a escribir
0 y el puesto. Y se puede ver que alinea
no en el medio
lo que alinea aquí en esta esquina. Para que puedas ajustar esta
alineación aquí puedo ver que es 0.5 si quieres alinearla
perfectamente en el medio. Y tal vez por la posición y, puedo decir 100s, así
que está aquí abajo. Entonces ahora lo que puedes hacer aquí
en la superposición, de nuevo, puedes agregar una imagen
en la superposición. Puedes llenarlo horizontal y
verticalmente y añadir este plano cuadrado
negro. Y de nuevo, puede hacer clic en Control D para copiarlo aquí abajo. Y luego puedes cambiarlo a éste y
alinearlo verticalmente. Puedes alinearlo en la parte superior. Y voy a cambiar
el tamaño a cinco. Aquí. Nuevamente, estamos haciendo ese diseño. Haga clic en Control D y
alinearlo a la parte inferior ahora. Por lo que tenemos este de nuevo. Y voy a quitar
estas líneas discontinuas. Lo que puedes hacer ahora es que
puedas agregar texto encima de él, y está dentro
de un cuadro vertical. Entonces agregando una
caja vertical a la superposición. Y ahora podemos sumar dos textos. Por lo que este texto. Y el segundo, el primero va a decir, te han matado. Entonces va a decir por
qué, por ejemplo caracol. Y el otro
va a decir, presiona OK para responder así. El primer texto aquí arriba, voy a cambiar la
fuente a semi negrita aquí. Y el tamaño va a ser 12. Y entonces lo voy a alinear aquí con el medio en realidad, en lo mismo con éste, voy a
alinearlo al medio. Y para este segundo,
voy a cambiar
la fuente a negrita. Voy a cambiar
el tamaño a 18. El primero, quiero
añadir una sombra también. Así que voy a bajar aquí
y por la sombra ahora, si quieres hacer
lo mismo por ambos, puedes seleccionar
uno, sostener Control, seleccionar el siguiente, y solo puedes hacer la
misma edición para ambos. Entonces aquí en el
color de la sombra y el Alpha 0.35. Y para el desplazamiento de la sombra, voy a decir a dos. Entonces es un poco más lo que
puedes ver hay un sutil efecto de sombra
ahora en ambos textos. Ahora se puede ver que no están
realmente en el medio, pesar de que
los alinea a la mitad aquí. Y esto es porque, recuerda que están dentro
de una caja vertical. Entonces la caja vertical necesita
estar en el medio también. Al hacer clic aquí arriba y poner esa caja vertical en el
medio arreglará el problema. Ahora podemos hacer
esto un poco más grande para no tener este espacio
condensado contexto. Así que sólo trata de
redimensionarlo como quieras. Eso depende de ti. Realmente no importa. Algo como esto.
A lo mejor se ve bien. Y déjame simplemente
redimensionarlo así. Y ahora se puede añadir un
espaciador entre estos dos. Creo que están demasiado cerca. Entonces permítanme añadir un espaciador
entre estos dos textos. Y el espaciador se puede hacer
o algo así como cinco. Entonces hay un poco de
espacio entre ellos. Entonces ahora lo que necesitamos, en realidad, necesitamos este botón aquí. Para que puedan ver necesitamos
este botón ok. Este botón ok
está en realidad en una, necesitamos agregar una
caja vertical porque tenemos este año y verticalmente
tenemos un botón. Por lo que en realidad necesitábamos poner toda
la superposición
en una caja vertical. Entonces caja vertical
ponla aquí abajo y puedes arrastrar esta
superposición en ella. Simplemente asegúrate de que
esta caja vertical, no la
hayas colocado
en esta superposición. Este error puede suceder. Simplemente minimice esto y
asegúrate de tenerlos aquí
donde deberían estar. Arrastremos esta caja
vertical ahora. Ahora tenemos una caja vertical. Podemos hacer los
anclajes más adelante. Vamos a añadir aquí en la
caja vertical, tenemos esta superposición. Agreguemos otra superposición
Con el botón y el texto. Así que busquemos el botón aquí, y busquemos texto. Aquí. Tenemos el botón y
el texto para el botón. Añadamos un botón azul, por lo que éste se llama
Blue Square flat. Y de nuevo puede hacer clic con el botón derecho en la
tecla Mayús mientras mantiene pulsada con el
botón derecho Copiar y mantener presionada Mayús mientras hace clic
con O simplemente puedes
hacer clic derecho y hacer clic en copiar y puedes ver el
enlace aquí también. Yo seré Pegar. Voy a hacer lo
mismo aquí. Cambia esta caja redondeada por una caja
en su lugar. A la derecha, mantenga pulsada la tecla Mayús,
haga clic con el botón derecho en CoBie ,
mantenga presionada Mayús Y para este margen, 0.5. Y estoy escribiendo 0.5 para que
pueda azulejo correctamente. Por lo que voy a
hacer clic derecho en esto aquí, copiar pega este margen. Y para este color tinte,
para el normal, lo
voy a mover hasta el
blanco para que no haya tinte. Y para el Harvard, voy a
ponerlo un poco aquí. Y para el pecho, voy a ponerlo un poco
más oscuro que el que flotaba. Esta es una deprimida.
Ahora, creo que esto es bueno. De acuerdo, Así que tenemos esto y para la iluminación,
así que para el botón, en realidad esta superposición, toda
la superposición, es,
es alinear correctamente
que en este momento. Entonces yendo a este botón, alineándolo aquí,
llenándolo horizontalmente. Y qué tipos de pellets
verticalmente, eso está bien. Para este texto, vamos
a alinearlo en el medio. Va a cambiar
esta fuente a negrita, y cambiando el tamaño a 14. Y voy a
añadir otra vez una sombra, 0.35 y poner la
sombra después de 222. Entonces tenemos la misma consistencia, el mismo diseño, y solo
podemos escribir bien aquí. Por lo que tiene que haber un
espacio entre el botón. Entonces hagamos un espaciador. Vamos a añadir un espaciador entre
el, estas dos superposiciones. Podemos hacer tal vez como 20 o 15. Creo que 15 es bueno. Ahora se puede ver que el botón es grande y esto es porque
hay que hacer click en
el cuadro vertical. Ahora, recuerda que lo
hiciste para llenar. Entonces aquí lo hiciste
sentir en realidad también. Ya ves aquí lo hicimos sentir
horizontal y verticalmente, que significa que si hacemos clic en el cuadro vertical y
lo redimensionamos, debería redimensionarlo. Pero ese no es realmente
el caso en este momento. Y esto es porque tenemos que
hacer click en llenar aquí. Entonces en este momento está configurado para auto. En realidad tenemos
que configurarlo para llenarlo, así que va a llenar todo
el espacio. Me gustaría hacer mi dinámica
de UI así para que pueda
simplemente, en lugar de folk, en lugar de hacer el
re-dimensionamiento aquí en las imágenes, me gusta simplemente
llenarlo para que pueda hacer clic en el elemento padre del padre y puedo simplemente
redimensionarlo como quiera, y será
mucho más fácil para ti. ¿ De acuerdo? Esto como en realidad
esto también es bueno, como avanzado porque
más adelante cuando
tengas multijugador y
nombres y así sucesivamente, pueden ser más largos que tu interfaz de usuario. Entonces esto se estirará
automáticamente, mucho tiempo que sea el
nombre, y así sucesivamente. Entonces esto es en realidad muy,
muy buena práctica. Así que déjame sólo
algo como esto. Y creo, sí,
creo que hay buena. Así que vamos ahora una línea está correctamente Click en
el cuadro vertical. Se puede ver que el
ancla está por aquí. Da click en el ancla,
poniéndolo en la parte superior media, y escribiendo 00 en la posición. De nuevo, voy a alinear aquí 0.5 y escribir 100 y la y Por lo que lo empuja aquí abajo. Entonces así es como se
ve hasta ahora. Vamos a compilar y ahorrar. Por lo que ahora hemos creado la interfaz de usuario
y creo que se ve bien. Vamos a guardar todo, compilar y podemos agregar más cosas
si necesitamos más cosas. Pero por ahora,
creo que esto es bueno. Pasemos al siguiente video.
83. Cómo agregar la interfaz de usuario principal al Viewport: Ahora agreguemos la interfaz de usuario
al controlador del reproductor. Y recuerda, la interfaz de usuario
es del lado del cliente ella, y lo hacemos en
el controlador. Entonces dentro del controlador
del jugador, hacemos toda la interfaz de usuario. Y es del lado del cliente, lo que significa que solo
eres tú como jugador. Solo verás tu propia interfaz de usuario. Otro jugador recibe
sus propios ojos nuevos. Entonces no es que
no estés compartiendo lo eres, solo
estás
mirando a la tuya. Esto es lo que el lado del cliente significa como ejecutarse
en cliente propietario, solo
se ejecuta en tu PC, en tu, en tu pantalla. Y no tiene
sentido compartir. Una interfaz de usuario realmente no tiene sentido. Sólo se puede ver
su propia salud. Y si quieres que otros
vean su salud, siempre
puedes compartir esa
información si es necesario. Entonces ahora, aquí y el controlador
del jugador, lo que hicimos antes es
inicializar widget, lo que significa aquí en la selección de
personajes. Entonces cada vez que hacemos clic en play, aparece
la selección de personajes. Quieren hacer ahora también. No como que no queremos agregar el menú I a la ventanera directamente porque tenemos la pantalla de selección de
caracteres. Pero lo que queremos hacer es agregar la interfaz de usuario principal después de la pantalla de selección de
personajes. Pero queremos inicializar
el widget también. Así que primero tomemos este
de nuevo, crear widgets. Y de nuevo, lo hacemos en el cliente corriendo
en poseer cliente. Aquí, vamos a seleccionar el menú que acababa de hacer
como compuesto guardar. Y vamos a hacer clic derecho
promovido a una variable, llamémoslo WB made. Eso es todo
lo que teníamos que hacer aquí. No queremos agregarlo a la viewport porque
si
lo haces, en realidad va a agregar también
la interfaz de usuario principal a la
viewport. puede ver que
agregó la interfaz de usuario principal. Realmente no queremos hacer eso. Entonces vamos a quitar eso. Y si no agregas a la viewport, puedes ver que
lo editas como variable, pero no le has dicho al motor que realmente lo
quieres en la ventosa. Y no lo queremos bajo el puerto de
vista en este momento. Pero lo queremos hacer es
cada vez que haga clic en o seleccione uno
de los personajes, va a agregar la interfaz de usuario
principal a la ventagráfica. Entonces lo que podemos hacer es que
podamos cerrar esto. Recuerda aquí en la
pantalla de selección de
personajes en el gráfico, diseñamos estos
dos eventos al hacer clic en uno de los personajes. Así que en realidad lo hagamos aquí. Vamos, ya tenemos
el controlador del jugador. Por lo que sólo podemos llamar a este
WB main que acabamos de hacer. Y aquí puedes buscar
x y nuestra búsqueda a la que puedes escribir en este momento
estamos eliminando la pantalla de selección cuando seleccionamos el personaje, pero queremos añadir esto también
a la viewport. Por lo que queremos sumar nuestro
personaje, nuestra interfaz de usuario principal. Voy a copiar
pegue esto aquí abajo. Por lo que ahora si seleccionamos a
Luke o Serena, vamos a sumar
esto a las ventanillas. Sólo voy a
hacer esto flips, hacer que esto se vea un
poco mejor. Algo así. De acuerdo, entonces
ahora lo vamos a sumar. Así que cada vez que hago clic en play, seleccionaré bucle por ejemplo. Ya puedes ver ahora tengo
mi IU en la pantalla. Nuevamente, realmente no
quiero que esto sea,
estar disponible siempre que
acabo porque este es el mensaje de la muerte
o responda mensaje. Entonces lo que podemos hacer es
ir a la interfaz de usuario principal. Podemos seleccionarlo aquí, seleccionar este padre
, el cuadro vertical. Se puede ver que este es el uno. Y lo que queremos hacer
con éste es aquí, aquí abajo y la visibilidad. Cambiemos la
visibilidad a oculta. No queremos
verlo enseguida. Entonces vamos a esconderlo
así como esta barra de progreso. Por lo que la salud está al
100% para empezar. Por lo que en realidad estoy aumentando el porcentaje de impago a 100. Y experimentaron
uno está en la parte inferior, como 0 experiencia
cuando empiezas. En cuanto al número esto es del
100 por ciento para empezar, y para
éste, es 0 de algo. Todavía no lo sé, así que
no agreguemos nada aquí. Ahora cuando haces clic en Play,
ahora puedes ver que es correcto. Ahora no muestra
ese mensaje aquí arriba. Y podemos ver nuestra salud
y nuestra experiencia aquí. Voy a redimensionar
esto un poco. Creo que esto es demasiado grande. Algo como esto. Mi TOC está disparando. Realmente no tengo TOC, pero tal vez tengo
algo como esto. Creo que es mucho
mejor. Luciendo bien. Podemos mover esto un
poco aquí abajo en el y Algo como esto.
Está bien, se ve perfecto. Ahora tenemos la salud
y la experiencia se ve interesante. Y luego tenemos la muerte. De todos modos, en realidad quiero
que aparezca cada vez que morimos. Y vamos a estar haciendo eso cuando estemos trabajando con
el jugador responda. Entonces esto es lo que tenemos hasta ahora. Y lo siguiente que podemos hacer
es actualizar esta barra de salud. Es muy fácil porque
ya teníamos esa lógica. Así que pasemos
al siguiente video.
84. Cómo actualizar la barra de salud: Entonces para actualizar la Barra de Salud, volvamos a la interfaz de usuario
y vayamos a la interfaz de usuario principal. Esta es la Barra de Salud vamos a estar actualizando aquí para que la barra de
progreso lo haga más fácil. Entonces aquí en el gráfico a codificar, se
puede ver todos estos
tiene nombres de basura. Así que vamos a cambiar el nombre de esta barra de
progreso a Praga. Normalmente lo llamo
como barra de progreso. Y luego salud. Entonces sabemos que es la
barra de progreso para la salud. Y éste, voy a
cambiar el nombre a TXT por texto y el de salud. Vamos a cambiarlo a la experiencia de
Praga. Vamos a usar eso
más tarde, no en este momento. Y esta llamada experiencia
TXT, Compile y Save para
este botón aquí arriba. También cambiemos el nombre
mientras estamos botón de edición. Y justo, bien,
este de aquí arriba, también
queremos cambiar más
adelante porque vamos
a cambiar el nombre. Voy a llamarlo TXT. Muerto por,
llamémoslo muerto por compuestos. Guardar. Ahora puedes ver aquí para este texto
también queremos configurarlo, pero si haces click en
esta barra de progreso, por
ejemplo, y
vas a la gráfica, puedes ver la
barra de progreso es una variable aquí. Pero también queremos
cambiar este texto aquí. Pero si hace clic en el gráfico, no
hay texto. Y esto se debe a que
los textos por defecto no son variables y hay
que llevar esta aquí
arriba llamada variable S, y luego aparecerá
aquí en el gráfico. No obstante, hay
muchas imágenes. Las imágenes son variables por defecto, pero a veces
hay que limpiar tu proyecto para que tengas que hacer click en esta
imagen, por ejemplo, y eliminarla como
variable porque
realmente no necesitas para modificar
esto en el juego. También para el fondo aquí, puedo quitarlo si quieres, puedes limpiar eso también. Entonces eliminar ese fondo
es una variable. Simplemente quiten todos los de aquí. Esta Compila y Guardar. Y puedes ver que tu proyecto
es mucho más limpio si
solo tienes las variables con las
que estarás trabajando. Así que déjame borrar
estos eventos predeterminados y hagamos uno llamado, hagamos un evento personalizado, y llamémoslo update health. Entonces, lo que suelo hacer por la interfaz de usuario, nunca
creo interfaces de
blueprint. Quiero decir, puedes, solo puedes entrar y crear uno para ello. Pero realmente no tiene
sentido porque normalmente no tienes muchos eventos. Y tendrás que hacer
muchas interfaces. Al igual que tienes que hacer
uno para cada interfaz de usuario. Y no quiero hacer eso,
así que normalmente solo hago eventos
personalizados para ellos. Entonces aquí por la actualización de
salud, lo que queremos hacer, queremos tomar la barra de
progreso para la salud y decir porcentaje
establecido. Esto es lo
que queremos actualizar. Y se puede ver
cómo se llama. Si haces clic en la
barra de progreso y vas aquí abajo, puedes ver que se llama por ciento. Entonces si solo buscas, busca por ciento, si
no sabes cómo se llama, verás éste aquí. Por lo que queremos establecer
el porcentaje, pero también queremos
actualizar este texto llamado salud, también llamado SetText. Por lo que queremos establecer
este texto también. Entonces para este porcentaje, solo lo
voy a ejecutar a través este evento y podemos
llamarlo de nuevo otro lugar. Déjame llamarlo
por ciento en lugar de presencial para estos textos, sólo
va a ser un porcentaje de lo que
esté pasando por esto. Y verás a qué
me refiero más adelante. Pero por ahora, sólo arrastremos
de aquí y digamos presente. Y para el flotador tienes
algo llamado como por ciento. Entonces va a convertir
esto como un porcentaje para el texto. Y luego podemos conectarlo aquí. Por lo que se va a mostrar
como porcentaje aquí. Ahora siempre podemos intentar probar
y ver si esto está
funcionando correctamente. Por lo que ahora que tenemos
esta venta compuesta, así que recuerda que manejamos la interfaz
de usuario dentro del controlador del jugador. Así que déjame volver al controlador del jugador
blueprints. Y dentro de aquí. Entonces en última instancia queremos
llamarlo aquí desde
la base del jugador, porque la base del jugador, estamos comprobando como
estamos calculando la salud aquí por aquí. Y en realidad queremos
mostrar eso, como actualizar la interfaz de usuario desde aquí. Va a ir de
la base del jugador
al controlador del jugador y
a éste al final. Así que vamos a crear el que está en
el controlador del jugador ahora. Entonces en este momento en el controlador
del jugador, estamos inicializando widgets. Tenemos este personaje y
tenemos al jugador desove. Así que ahora aquí abajo, hagamos otro. Y llamémoslo. Hagamos
uno personalizado y podemos convertirlo en una Interfaz de
Blueprint. Y un poco, solo quería
ver qué podemos hacer aquí. Entonces hazlo en tu
cliente a los ojos, actualiza, actualiza, barra de salud, y vamos a llamar a ese evento. Entonces tomando aquí en la principal del WB, recuerda, el evento aquí
está dentro de la interfaz de usuario principal. Por lo que ya tenemos una variable
en nuestro controlador de jugador. Acabamos de llegar hasta aquí. Acabamos de hacer esa variable. Por lo que ahora podemos usar esta
variable y podemos llamar a este evento
llamado actualización de salud. Llamémoslo decir que la salud. Y ahora lo puedes encontrar aquí. A continuación queremos hacer es solo ir y tomar este
porcentaje en ella. Y esto es lo que necesitamos. Al igual que, en realidad vamos a
cambiar este en
un cliente propietario corriendo y confiable. Entonces ahora lo que tenemos que hacer es que queremos ese evento
personalizado aquí arriba. Hagámoslo en una Interfaz de
Blueprint. Volvamos a las interfaces, al controlador del reproductor. Y aquí,
¿cómo lo llamamos? Actualizar barra de salud. Y llamémoslo aquí,
actualiza barra de salud. Agreguemos aquí un flotador
y lo llamemos por ciento. Yo creo que se llamó presente y
vamos a llamarlo aquí ahora, digamos Update Health Bar. Y podemos llamar a esta
interfaz eventos. Y ahora lo que podemos hacer
es llamar a este cliente lado uno, actualizar barra de salud. Y pasemos por esto. Por lo que ahora éste necesitamos
llamar a través de la base de jugadores. Entonces llamémoslo aquí. Entonces para actualizar la salud, ahora en realidad
regresemos
con la base de jugadores está aquí. Entonces estamos restando
y estamos calculando. Tenemos que hacerlo aquí. Por lo que en realidad necesitamos alejar esto un poco más lejos. Y ahora necesitamos el controlador
del jugador. Y déjame ver lo
que hemos hecho aquí. Teníamos al controlador enemigo. No tenemos el controlador
del jugador, por lo que en realidad podemos hacer
una referencia a eso, digamos obtener controlador, porque ya estamos dentro
del jugador para que podamos
conseguir el controlador como esto y luego decir
obtiene control de capa nuestra referencia porque queremos
usar este controlador de reproductor aquí. ¿ Dónde está? Este? Específicamente, nos estamos refiriendo
a esa PC Maple Story. Y desde aquí
vamos a llamar a esa actualización de salud
actualización Health Bar, creo que fue llamado
y es un mensaje. Así que recuerda el mensaje
aquí porque es una
función Blueprint Interface aquí que hicimos. Por lo que es un mensaje al hacer
clic en él, Compilar y Guardar. Entonces ahora necesitamos tapar
algo dentro de este porcentaje
y para éste, así que el presente, recuerda, no
puedes dejarme
simplemente romper esto aquí. En realidad, no tenemos que
hacer eso todo el tiempo. Sólo podemos usar este. Permítanme desconectar esto por ahora. Por lo que ahora usando esta salud, no
podemos simplemente
conectarlo al porcentaje. Porque para la interfaz de usuario, si echas un vistazo a la barra de
progreso, para la interfaz de usuario, tu barra de progreso realmente
va de, veamos aquí. Está pasando de uno a 0, así que no va al 100%, va a 0 a uno. Entonces si tienes un
porcentaje dividido por 100 para llegar a ese número. De lo contrario si solo enchufes al 100%, siempre va a ser
100 así porque entonces el número máximo es en realidad uno y
el mínimo es 0. Entonces 0 a uno. Recuerda no de 0 a 100. Así que volvamos a
la base de jugadores. Y entonces lo que necesito hacer, hagamos un nuevo evento
llamado max health porque necesitamos tomar un porcentaje y
para hacer un por ciento, necesitamos saber de
qué era antes. Hagamos una variable máxima de salud. Y en lugar de
hacerlo aquí abajo, realidad solo
puedes
hacerlo en la información del jugador. Así que vamos a las estructuras como información de jugador y
solo hagamos una nueva variable de salud. Llamémoslo salud máxima. Y digamos a
veces como en los RPGs, puedes actualizar esta salud máxima. Y esta salud es
igual que
solo estamos usando esta salud para
modificarla todo el tiempo. Pero esto hace que la
salud siempre
permanezca al máximo y se puede actualizar con
actualizaciones más adelante. Por lo que tenemos la
salud máxima y vamos en realidad ir al compuesto
base del jugador ahorrar. Y en la
base de jugadores hay que
establecer lo que es esa salud máxima. Así que vamos a ponerlo a 20. Max salud es de 20. Vámonos ahora. Déjame solo compilar todo. Volvamos a
la base de jugadores. Por lo que ahora tenemos la
salud máxima como porcentaje. Tienes que tomar esta salud
quedando y dividirla, dividirla por la salud máxima. Ahora obtendrás ese número
porcentual que puedes enchufar aquí. Y ahora que tienes esta
actualización de salud en porcentaje, ahora esto va a
pasar por el controlador del jugador. Por lo que estás llamando
a esto desde el control de placa de su salud va
a ir al controlador del jugador, va a
pasar por los clientes. Porque recuerda, UI
es del lado del cliente ella, por lo que va a pasar por
el cliente y va a actualizar la salud que está aquí. Y también está usando ese
número que tienes. Por ejemplo, cuando estés en número
máximo de salud
estará aquí a 1 y la barra de progreso aquí 1 cuando acabas de
hacer como porcentaje, creo que lo
multiplica por un 100. Entonces lo pone aquí en el texto. Pero en realidad tenemos que
probarlo y ver si está
funcionando correctamente. Ahora como porcentaje. Y ahora
puedes conectarlos y preguntar, es, ¿está aquí esta salud? ¿ Es igual a 0? Entonces
digamos de nuevo igual a 0. Podemos simplemente borrar aquí
y conectar esto en su lugar. Simplemente puedes continuar
lo que hiciste antes. Ahora vas a actualizar la barra de progreso,
guardar todo. Y antes de continuar,
creo que eso fue todo. En realidad solo
intentemos ver si funciona. Entonces está a los 100 y éste
va a uno me pegó. Entonces estoy en realidad, podemos ver
que tenemos un error aquí. Pero intentemos arreglar esto más tarde. Entonces vamos a ver en realidad por
qué fue causado eso. Éste.
Se puede ver que me pega y me quedan
50 porque me
pega por 50. Y cuando tengo 0,
soy esta tumba y
no pasa nada. Entonces esto realmente está
funcionando perfectamente. Y si aumento mi salud, así que digamos que vamos a
la información del jugador y
aumentamos las
colinas máximas para decir 50. Y también empezamos con 50. Así que vamos a jugar ahora. Y ahora se puede ver
que está funcionando a la perfección. Y si voy a aquí, me
va a dañar mucho más. Y luego me va a matar. Entonces ahora esto está
funcionando perfectamente. El porcentaje de barra es correcta
y el porcentaje aquí, el texto aquí también es correcto. Para ese error bajo letra, en realidad
necesito arreglar esto. Entonces cuando saltas, alguna razón no está agarrando. Puedo ver que se está
atascando aquí. Y déjame sólo tratar de saltar en la escalera con
este cerdo de aquí. Entonces está funcionando
si no me estoy moviendo, pero se está molestando. Si salto de un costado,
lo cual es muy raro, tal vez tenga algo que ver con las colisiones que agregamos. Así que permítanme en realidad,
déjame ver aquí. Así que cuando en lo profundo aquí, déjame ir a la colina
siendo arriba y abajo. Entonces estamos haciendo algo de
escalada y estamos, tenemos esta función de desenvolver
llamada isClient siendo. Cuánto realmente acaba de imprimir una cadena aquí para ver si esto, como si nos estamos perdiendo
a través de las colisiones que tenemos. Entonces ahora va a decir Hola. Sí, se puede ver que
dice mucho a veces. En realidad no son
cuatro veces si solo
hago esto por diez segundos. Para que pueda explicarlo. Se puede ver aquí,
vamos a saltar sobre ella. En realidad es un dice dos veces, una del servidor y
otra del cliente. Y obviamente tenemos
otro del servidor. Entonces es en realidad hace
tres veces aquí. Tenemos colisión múltiple, como si no se supone
que haga esto tres veces. Por lo que este código solo es
necesario ejecutarse una vez. Entonces hay algo con las colisiones que
necesitamos ajustar, que está provocando este problema porque sólo necesitamos
chocar con él una vez. Así que permítanme hacer click en
esta cápsula para el jugador y echar un vistazo. Y estamos ignorando
todo excepto por dinámico y estático. Y permítanme llevar esta colisión de
ataque. A lo mejor se dijo que
la colisión de ataque, estamos ignorando todo a
excepción de la dinámica mundial. Y déjame echar un
vistazo a la escalera. Así que déjame volver
a los planos a la línea siendo
ciega estar basado, echando un vistazo a la caja de
colisión para
éste , Aquí está superponiendo
todo. Y este componente de render
se establece en ninguna colisión. Entonces esto no tiene colisión. Entonces el jugador, solo para asegurarse de que el sprite no tenga
colisión también. En realidad sí tiene colisión
pero no hay eventos de superposición. Así que permítanme tratar por
esta caja de colisión. Déjame ir a disfrazarme y
hacer como podemos ignorar la dinámica del mundo y
vamos a tratar de hacer click en Play
y ver qué pasa. Ahora se puede ver que
en realidad está funcionando. Así que probemos eso un par
de veces solo para asegurarnos que eso no
se bloquee de repente. Déjame jugar como cliente. Así que déjame sacar al cliente aquí y asegurarme de
que esté funcionando también. Eso está funcionando. Es
ajustar nuestra ubicación. Ok. Entonces todo está funcionando. Y el problema fue que tenemos tuvimos dos colisiones
alineadas con él. Entonces para la colisión, fue la que
chocaba con ella. Porque recordar que la
colisión de ataque es una dinámica mundial y la colisión de escalera está configurada para superponerse con
la dinámica mundial. Entonces tenemos que ignorar
la dinámica mundial, lo que significa que necesitamos ignorar
esta colisión de ataque. Y esto ya no lo
arruinará. Entonces esta fue la solución aquí,
un fijo muy simple. Por lo que sólo póngalo a
cliente y elimine esto. Entonces ignora este bien dinámico y esto solucionará el problema. Entonces con eso, hemos corregido ese problema y también
actualizamos la interfaz de usuario de Health Bar. Vamos a la siguiente
y actualicemos el impuesto de defunción.
85. Cómo actualizar el texto de muerte: Ahora volvamos a bajar a
la interfaz de usuario e ir a la principal. Aquí queremos
actualizar este texto. Entonces dice que te han
matado y dice caracol. Por lo que tenemos que actualizar
este texto aquí. Por lo que vuelve a hacer click en este texto, recuerda configurarlo en
variables para que podamos editarlo y entrar en
el gráfico aquí. Y voy a llamar a éste, hacer un evento personalizado y
llamarlo mostrar mensaje de muerte. Y también podemos mirar como
podemos mostrar el mensaje y también podemos
actualizar esos textos. Entonces tomando ese texto, primero, necesitamos
mostrar ese mensaje. Recuerda que está oculto por defecto. Tomemos lo que queremos hacer. Creo que necesitamos
convertirlo en una variable también. Queremos que se muestre esta caja
vertical. Recuerda que lo pusimos a oculto. Entonces necesitamos,
cambiemos el nombre de la misma. Entonces VB por caja vertical y
déjame llamarlo responder. Responder o mensaje de muerte. Llamémoslo mensaje de muerte. Y pongámoslo en una variable
para que pueda verla en código. Entonces yendo a aquí
y tomando esto, ahora lo que podemos decir es
establecer la visibilidad. Y ahora lo que podemos
hacer es ponerlo visible. Y vamos a conectarlo. Por lo que ahora es visible. Y lo siguiente que queremos hacer es mostrar este texto aquí. Entonces SetText realmente cambió el texto que al igual que lo hicimos aquí arriba con éste. No obstante, con éste, ahora
te voy a enseñar algo nuevo. Entonces tienes algo dinámico. Entonces va a decir que te
han matado los caracoles. Así que sólo voy a copiar pegue este texto y colocarlo aquí. Entonces yo iba,
te han matado. Te han matado el caracol. No obstante, este caracol,
a veces es un cerdo, a veces es un nuevo enemigo
que has añadido a tu juego, por lo que no es
necesariamente un caracol. Entonces cuando tienes textos
dinámicos como este que necesitan cambiar
durante el juego, tienes que arrastrar aquí y usar algo llamado texto de formato. Usa esto en su lugar. Si tienes algún texto dinámico que
no es estático todo el tiempo, voy a volver a pegar mi
texto aquí. Lo que quieres
ser dinámico. Entonces este texto es estático. Todo esto, lo
único que quiero cambiar es este caracol aquí. A veces es un
cerdo o a veces es otro enemigo al
que has añadido. Entonces para hacer esto, hay que
escribir estos paréntesis rizados. Estos dos paréntesis rizados. Y en el medio,
solo puedes escribir lo que quieras. Presiona Enter, y
podrás ver que tienes una variable aquí que
puedes conectarla. Ahora. Puedes escribir lo que
quieras dentro de aquí. Por ejemplo, aquí lo
que estamos tratando de hacer es poner el nombre del enemigo. Así que sólo voy a
llamarlo cualquier nombre. Se puede ver que
cambia en consecuencia. Para que puedas escribir cualquier cosa
dentro de paréntesis rizado. Este es el texto dinámico
que necesitamos cambiar. Este texto va a ser el nombre del enemigo y
realmente no hemos especificado ningún nombre
enemigo antes. Entonces volvamos
a la estructura. Recuerda que tenemos este animal, información
animal, muy útil. Podemos tener info de los animales. Así que déjame simplemente llamar a
éste en realidad no caracol, déjame llamarlo nombre. Entonces tenemos el nombre del
enemigo aquí. Y permítanme cambiar
esto a una cuerda. Los compuestos ahorran y déjame
ponerlo aquí arriba en la parte superior. Ahora cuando vuelvas a hacer esto, recuerda que puedes ir al enemigo, base
enemiga, Compile y Save. Ahora lo puedes ver en
todos los enemigos. Entonces ir al caracol, por ejemplo, en la
clase impagos. Ahora tenemos esta variable de
cadena de nombre aquí. Y solo puedes
llamar a este caracol. Y vamos al cerdo aquí
y pongámosle el nombre. Vamos a llamarlo pick. Incluso puedes darle un nombre como lo puedes llamar victor o
lo que quieras hacer. Pero recuerda, esto
es para todos los cerdos. Entonces todos se van
a llamar Víctor. Entonces llamemos a este cerdo. Y hagamos eso. Vale, entonces ahora tenemos el
nombre aquí y es una cuerda. Así que vamos a hacer clic aquí
y decir cadena. Y llamemos a este
nombre enemigo, tangente en una cuerda. Y ahora podemos
conectarlo aquí abajo. Y
ya puedes ver que puedes conducir una variable a través de esto
a este formato de texto. Entonces ahora que tenemos esto, recuerda que esta es la interfaz de usuario, así que tenemos que ir
al controlador del jugador y luego llamarlo aquí. Pero para que tu
código sea un poco mejor, puedes ir a, volvamos a la principal aquí. Al igual que este mensaje de
muerte de pantalla
va a aparecer siempre que
tu salud sea 0. Recuerda que
ya estás revisando
la salud aquí en
la actualización de salud. Así que en realidad puedes
hacerlo más fácil para
ti mismo en lugar de simplemente hacer otro evento aquí y el controlador del jugador
diciendo actualizaciones, mensaje de
muerte o
algo por el estilo. Ya estás
revisando la salud. Entonces ya lo sabes
dentro de aquí, siempre que sea 0 y
cada vez que sea 0, va a mostrar
ese mensaje de muerte. Esto es lo que necesitas. Por lo que aquí en el porcentaje sólo podemos decir es igual a 0. Y podemos hacer una
sucursal después de esto. Y si es 0, vas a llamar
a éste llamado
Mostrar mensaje de muerte. Por lo que sólo podemos decir
mostrar ese mensaje. Y ahora lo tienes. No obstante, hay que conducir esto nuevo a través
de todos estos eventos. Entonces voy a arrastrar
este nombre enemigo viaja por aquí. Ahora va a los controladores de
jugador por aquí, el cliente. Y aquí hay que
pasar por éste, pero no se puede hacer
eso porque se trata una función de interfaz de blueprint
llamada Update Health Bar. Voy a volver al controlador
de interfaz llamado Update Health Bar. Y agreguemos
aquí una cadena llamada nombre enemigo, Compile y Save enemigo o
el controlador del jugador. Ahora podemos conectarlos. Y recuerda ahora
que está todo el camino en la base de jugadores. Así que volvamos al
jugador, base del jugador. Ahora, lo puedes ver
en la base del jugador. Bajemos al código. Y lo puedes ver aquí ahora
cuando actualizamos la salud. Entonces en realidad tendré que
darle el nombre también. Por lo que haciendo click por aquí, recuerda que lo agregamos. Entonces éste es en realidad
la información del jugador. Lo agregamos a la
información enemiga o información animal. Entonces para la información animal, este de aquí
tenemos que llamarlo. Entonces hagamos eso en el jugador. Entonces, ¿cómo llamamos a esto? Recuerda, se almacena en la base enemiga, planos base. ¿ Tenemos algo
que podamos hacer para llamar al plano base enemiga ya que este jugador conectado es en realidad uno viejo
que necesito eliminar. Entonces, ¿tenemos
algo de lo que podamos llamar al enemigo ****? Y sí, lo tenemos, recuerda que
tenemos el controlador enemigo. Esta es la que
definimos aquí. Siempre que obtenemos, como
cuando recibimos daño, esto es del enemigo. Por lo que ya tenemos el
controlador del enemigo y podemos ver que se
controla, y así es como
conseguimos la base enemiga. Porque ahora podemos decir consigue referencia
enemiga como esta. Y a partir de aquí podemos
decir información animal. Ahora podemos conseguirlo aquí. Y ahora podemos romperlo y
podemos conseguir el nombre
tan simple como eso. Por lo que pinchando aquí este
nombre, así. Entonces tenemos que incluir
esto en nuestro código. Para que podamos ver aquí, podemos incluirlo aquí. Así que permítanme mover todo
eso así. Déjame solo incluirlo aquí abajo, sólo
podemos
limpiarlo un poco. Está un poco mal ahora mismo. Y podemos tapar el
nombre dentro de aquí. Entonces, ¿qué está
funcionando realmente correctamente? Ojalá podamos probar eso fuera de curso antes de que lo creamos. Así que ahora vamos
sólo estoy tratando de organizar
estos un poco mejor. Algo así. También puedes
acercar a los más cerca así. Y haz doble clic aquí para
hacer un nodo ferroviario, que se vea un
poco mejor. Como esto aquí. Y puedes incluso, para éste, incluso
puedes hacer doble clic
aquí y hacerlo en su lugar. Entonces algo como esto, se
ve un poco más limpio. Sí, esto se ve bien. Por lo que ahora podemos compilar y ahorrar. Así que ahora estamos poniendo el nombre. Va a pasar por el controlador del
jugador. Aquí. Va a pasar,
va a pasar
por el evento de cara ciega, va a pasar por
la salud de actualización, que luego va
a pasar por aquí. Todo el camino hasta este fin
va a pasar por aquí y poner este nombre enemigo. Y va a ser dinámico porque
ya has definido en el caracol cuál es el nombre
del caracol y en el cerdo, cuál es el nombre del cerdo. Por lo que ahora debería funcionar. Pero sin embargo, no podemos
probar esto en este momento. En realidad, la economía
que ya la pusimos para mostrar es solo la respuesta
que aún no hemos definido. Así que déjame golpear al
pagador para poder morir más rápido. Ahora lo puedes ver dice, has sido asesinada por Cerdo. Presiona Ok, para responder. Y luego puedes hacer click en
ok, tenemos un pequeño bicho. Se puede ver el botón no se puede presionar encima de este bien, texto y solo se
presione aquí. Así que vamos a arreglar eso. Y quiero hacer esto
un poco más grande. Es un poco demasiado pequeño. Así que volvamos al menú. Voy con el diseñador. Quieres hacer esto un
poco más grande, que puedas hacer clic en
la imagen, ésta, y hacer el tamaño un poco más grande y hacer que esa caja
vertical sea más grande para que el botón se haga más grande.
Algo así. Ahora lo que podemos hacer es
por esto, vale, aquí, recuerda la cosa como
cuando salen bichos y
bloquea tu botón aquí y no
hay conjuntos de bloques. Tienes que bajar aquí
a la visibilidad de este texto y configurarlo a ninguno
solo auto comprobable. Y esto significa que no puedes
golpear esto con el ratón. Por lo que tu ratón ignorará esto. Y de esta manera solo puedes
enfocarte en el botón. Entonces recuerda hacer eso con elementos que están
bloqueando o botones. Por ejemplo, si estás haciendo una, una tienda dentro del juego o algo así
y tienes iconos, tienes que hacer eso
por los iconos. Por lo que ahora se puede ver
puedo hacer click en el botón a pesar de
que estoy en el texto. Sólo voy a
decir el nombre aquí. Por lo que ahora todo está
funcionando correctamente. Lo siguiente que queremos hacer
es cuando hagas click en esto, vale, vamos
a responder a jugar.
86. Respawn del jugador: Trabajemos ahora en la
respuesta para el jugador. Así que volvamos
a los planos y a jugador, base de jugadores. Entonces dentro de aquí
hemos codificado todo esto, cualquier daño hasta ahora. Y hemos puesto
la muerte a los jugadores dondequiera que muera el jugador, pero nunca hemos precisado cuándo ya no
estarás muerto. Y queremos estar muertos
cada vez que simplemente haga clic en ese botón Okay
dentro de la interfaz de usuario principal. Así que en realidad hagamos eso primero. Ahora vamos primero
a la interfaz de usuario principal aquí. Y dentro de aquí al
hacer clic en este botón, por lo que haciendo clic en el botón aquí y bajando al botón. Y luego se pueden ver todos estos eventos tan sin hacer clic cada vez que haga clic
en el botón, haga clic en este plus
para realizar ese evento. Así que cada vez que haces clic en este botón
ok, ¿qué debería pasar? Sólo quería que
mi muerte fuera falsa. Ahora como práctica, ahora que
estamos tan lejos en este curso, intente hacer esto usted mismo. Intenta establecer una, intentó comunicarse con este blueprint y tratar de
configurarlo a falso usted mismo. Si quieres, si fracasas aquí, siempre
puedes seguir conmigo. Y ahora lo hagamos juntos. Puedes pausar el video si
quieres hacerlo tú mismo. Entonces lo que queremos
hacer ahora es que queremos comunicarnos con
la base de jugadores. Queremos conseguir el,
los pons de alguna manera. En UI, recuerda que esto
es del lado del cliente, por lo que cada punto, cada
jugador conectado tiene esta interfaz de usuario. Así que puedo simplemente
hacer clic derecho y decir, Get Owning capa pewn. Así que Get Owning Player, consigue el controlador del jugador, consigue poseer jugador peón obtiene el control de peones en ****.
Golpear poseer plataforma. Y se puede ver que dice consigue el Peón Jugador
asociado a esta interfaz de usuario. Y desde aquí solo podemos
decir Get Player Reference. Y lo que podemos hacer ahora es
que podemos llamar a esta muerte aquí porque esto se hace
dentro de la base del jugador bp. Por lo que sólo podemos llamar a
esto eventos de muerte. Y es un mensaje porque es una función de Interfaz Blueprint. Y sólo podemos ponerlo en falso. Y recuerda, tenemos que
configurar ese mensaje de muerte vuelva
a ocultarse porque otra cosa se va a mostrar
en la pantalla. Así que establece la visibilidad
a escondida, así. Uy, así. De acuerdo, entonces ahora eso está arreglado. De acuerdo, entonces ahora hemos dicho que
la muerte es falsa. Así que volvamos a
la base de jugadores. Tengo No estoy seguro de lo que
hicimos aquí en realidad. Sí, sólo
nos gusta No hicimos mucho. Sólo fijamos que esto
sea falso y verdadero. Es que aquí para verdad,
como cuando estás muerto, va a mostrar eso
para voltear libro a ti. Entonces, lo que queremos hacer aquí, déjame simplemente hacer una sucursal. Entonces, ¿qué debe hacer
cuando ya no eres eso? Entonces cuando estás respondiendo. Entonces en primer lugar, quiero volver a poner mi salud a 100
porque ahora mismo es 0. Entonces me voy a llevar mi aquí en las Propiedades,
mi estructura. Nuevamente. Quiero poner mi bolsa de salud, así que ponga miembros aquí y selecciónelo
, seleccione la salud. Ahora queremos establecer la salud. ¿ A qué quieres configurarlo? Quieres fijarlo
a la máxima salud. Entonces voy a romperlo ahora. Recuerda que hicimos una variable
máxima de salud. Por lo que ahora solo queremos conectarnos que haga salud
dentro de aquí. Déjame esconder
estos otros alfileres. De acuerdo, entonces ahora estamos
poniendo la salud a la salud máxima y estamos de
vuelta a plena salud de nuevo. Entonces vamos a conectarlo. Entonces vamos a conectarlo
a lo falso porque si ya no
estás muerto, esto es lo que significan los pliegues. Aquí. Tenemos que recordar, tenemos que volver a poner la
información del jugador aquí así. Por lo que ahora tenemos el
completo revés en salud. Lo siguiente que tenemos que hacer, necesitamos actualizar la interfaz de usuario
porque a pesar de que estamos
configurando esta variable, recuerda, igual que antes hay que actualizar la barra de progreso. Por lo que muestra que
estás en 100 de salud. Nuevamente, lo que podemos hacer por esto, podemos copiar, pegar esto aquí. Así que consigue el controlador, consigue
el controlador del jugador. Entonces estos dos aquí o puedo
simplemente escribirlo si quieres. Por lo que estamos consiguiendo el controlador
del jugador aquí. Y lo que puedes hacer aquí es
lo que el controlador del reproductor, nuevo, puedes llamar a
actualizaciones barra de salud. Aquí como el mensaje. Creo que fue
el mensaje aquí. Sí, eso fue correcto. ¿ Y en realidad lo
llamé como mensaje? Sí, lo hice aquí. Sólo quiero ver si cometí un error aquí arriba. Entonces ahora es correcto. Y para el porcentaje, de nuevo, se
puede tomar la salud
dividida por la salud máxima. Así que de nuevo, al igual que
antes, toma esto, romperlo y toma
esta salud y divídala por la máxima
salud, igual que antes. Entonces mismo código aquí. Y luego puedes
conectarlo al porcentaje. En cuanto a los eliminados, realmente no lo necesitamos. Al igual que no vas a mostrar esta interfaz de usuario cuando estás vivo
y no estás muerto. Entonces realmente no
importa lo que
diga porque está oculto de todos modos. Entonces realmente no
voy a hacer esto aquí. Tan bien, así que ahora
hemos actualizado la interfaz de usuario. ¿ Qué sigue? Lo siguiente es
que hay que responder. Entonces, ¿dónde
está respondiendo? Y recordemos, como hace algún
tiempo hicimos éste, creo que al inicio
del curso, establecer
ubicación de desove jugador y
lo pusimos a ese jugador arranca. Así que vamos a utilizar este conjunto de ubicaciones de desove
del jugador. Entonces vamos a desovar ahí. Voy abajo, está aquí. Hagamos establecer
ubicación de desove del jugador como éste. Y la razón, como
si te confundes, a veces escuchas el
desove del jugador del set. Déjame mostrarte. Entonces aquí, podrías haber seleccionado mensaje
y ninguno mensaje. Y esta es una función de
Interfaz Blueprint. Y tal vez te preguntes ¿por qué no seleccionaste este mensaje aquí? ¿ Por qué seleccionaste éste? No hay como si fueras así es el blueprint en el que lo
estamos codificando. Y si la función Blueprint
Interface, si en realidad se hace
dentro de la base del jugador. Entonces si voy a esto, las interfaces y
la base del jugador aquí, se
puede ver que ya lo
hicimos dentro de aquí set player engendra ubicación. Cuando lo estás llamando dentro del plano en el que lo
hiciste, realmente no tienes
que seleccionar mensaje. El mensaje es sólo
para la comunicación. Y habrías seleccionado
mensaje si lo estuvieras llamando desde el controlador del jugador
desde algún otro lugar, habrías seleccionado mensaje. Pero si
lo estás llamando dentro de sí mismo, entonces solo voy a seleccionar éste
sin el mensaje. De acuerdo, Así que ahora estás
desova al jugador. Y recuerda que todavía estamos
teniendo el modo dios. Nunca eliminamos aquí
el modo dios. El modo dios
solo está siendo removido cuando no estás muriendo,
sino cuando estás muerto. Nunca pongas esto a falso. Así que permítanme copiar pegue este
código aquí que el retraso, ahora después de la demora aquí. Entonces la razón por la que estoy
dando al jugador en retraso, así que estamos respondiendo y
en realidad estás teniendo el
modo Dios mientras estás respondiendo porque no
quiero recibir daño de inmediato
cuando respondo. Por lo que le estoy dando al
jugador la oportunidad responder y no recibido daños. Y creo que eso fue. No estoy seguro si
olvidé algo. Permítanme en realidad
simplemente haga clic en Play. Veamos qué pasa. Entonces cuando estemos muriendo, déjame realmente ir al cerdo. Aquí morimos más rápido. Estamos muertos y dice que han
sido asesinados por la prensa del cerdo. Ok. Cuando presiono Okay, puedes ver que respondo. Y déjame morir de nuevo
para ver si esto está molestado o no. Está funcionando correctamente. Ahora de nuevo, se puede ver que
estos están molestando. Puedes volver a intentar
reescalar y bajar de escala, primer nivel las casillas de colisión. Estos son los
que a veces los
hacen bichos aquí en las rampas. Por lo que ahora cuando hago clic OK, se
puede ver que puedo responder. En realidad quiero que mi jugador parpadee cuando
respondo porque quiero saber que estoy en mi modo
Dios cuando respondo. Así que permítanme tomar este efecto
parpadeante, que hicimos aquí, y lo agregamos aquí, en realidad dañar vía efectos. Déjame copiar una copia
de ella aquí y
déjame pegarla justo
después, justo antes. En realidad, justo después de responder, sólo
puedo hacerlo aquí. Entonces cuando
respondo, toco ese efecto. Y luego elimino ese
modo de Dios después de ese efecto. Permítanme hacer click en play. Y cuando muero, hago clic en OK. Se puede ver que tengo
este Efecto de Modo Dios. Y entonces respondo, creo que este es un pequeño efecto. En realidad voy a ocultar
estas cajas de colisión. De nuevo, realmente ya no
los necesitamos , no lo creo. Entonces permítanme hacer click sobre
este ataque colisión y esconderlo en juego. Y entra
aquí en la base enemiga y da click en esta colisión y
también esconderlo en juego, compilar y guardar todo. Por lo que ahora que todo
está funcionando, puedes intentar probar el juego y ver si todo está
funcionando como debería. Siempre podemos llevarnos a este cliente. Entonces antes de terminar, en realidad
quiero
escribir con ambos. Aquí, mira si tanto el cliente el servidor pueden
ver qué está pasando. Por lo que se puede ver que el servidor puede realmente ver que el cliente murió. Y como servidor ahora, es un poco difícil
tenerlos a ambos en una sola pantalla. Por lo que ahora ambos murieron. Y si hago clic bien como responde
el cliente, está bien, y si hago clic en
Aceptar, es el servidor, yo respondo también y
estoy parpadeando correctamente. Cuando ataque, esto
funciona cuando compruebo aquí, está funcionando cuando
desperté la escalera. Está funcionando para ambos. Ok. Así que déjame probarlo
como cliente ahora. Juega como cliente para
asegurarte de que todo esté
funcionando antes seguir seleccionando Tsarina
aquí en este cliente. Y en el segundo cliente, voy a seleccionar a Luke. Y déjame
entrar a este enemigo. Aquí. Estoy muerto. Voy a caminar aquí. También estoy hecho. Ok. Por lo que parece que todo
está funcionando ahora. Y caminando hacia arriba. También funciona la carta. De acuerdo, así que no hay libros en este momento, así que eso es genial. Todo está funcionando
como debería. Por lo que estamos listos para seguir
adelante y de hecho
trabajemos en el enemigo ahora para que
podamos matar al enemigo.
87. Corrección de errores existentes: Seguimos, tenemos un par de libros que necesitamos arreglar. Y los he escrito
todos aquí. Entonces como estaba probando
el juego y encontré los siete dólares y creo que
deberíamos arreglarlos
antes de continuar. Entonces el primero es un
insecto de muerte durante el ataque. Entonces si voy por aquí
y juego el juego, y entré a los enemigos, así que permítanme simplemente perder
mi salud aquí. Ahora, si ataco
justo antes de morir, puedes ver que desove así. Y esto se supone
que es una tumba. Y si quieres, puedes intentar
arreglarlo tú mismo. Tratar de pensar dónde
podría estar esto? ¿Gusta? ¿ Qué es esto dando
vueltas antes? Porque cuando atacamos y
cuando morimos al mismo tiempo, volvemos a este estado ocioso. Así que trata de pensar, si quieres por ti mismo donde este bicho
podría estar sucediendo. Y puedes usar un nodo de cadena de
impresión para intentar depurar tu código. Siempre es agradable usar un nodo
de cadena de impresión. Hagamos clic en Ok, y
dejemos esto. Así que para arreglar este error ahora, vamos al código de
ataque
porque esencialmente está sucediendo
cuando estamos atacando. Por lo que estamos estableciendo que
el ataque sea cierto
cuando estamos atacando. Y luego después de algún tiempo, así que morimos entre aquí, así que atacamos y morimos. Y recuerda que tenemos esto aquí. Este es el ataque está completo. Estamos retrasando el código
con esta animación y después del código lo estamos
configurando en false. Entonces cuando
está atacando se establece en falso,
es poner a nuestro personaje
en el estado ocioso, por lo que en realidad está sucediendo aquí. La única forma en que comprobamos la profundidad es aquí
arriba
para que no podamos
atacar mientras estamos muertos. Pero, ¿y si ya atacamos? Entonces, ¿y si ya estamos
aquí y luego morimos? Eso no se está
revisando en este momento. Así que estamos
terminando aquí y estamos terminando estando en
el estado ocioso. Por lo que podemos tratar de tomar
este año está muerto, este booleano y
tratar de comprobar aquí también. Ya sea puedes consultar aquí
o puedes consultar aquí. Entonces atacar tiene que ser falso. Así que en realidad lo hagamos aquí. Creo que esta es la mejor manera. Entonces aquí está atacando. Si se establece en false, entonces comprobarás nuestro uso. ¿ Estás muerto? En realidad, hagamos
notar que porque eso es mejor leer, creo, por mí mismo. Entonces si no estás muerto, nuevo, solo puedes seguir
adelante e ídolo. No obstante, ahora, si estás muerto, copiemos esto y
te pongamos en los estados de muerte. Así como eso y eso
debería solucionar el problema. Entonces si jugamos ahora
y pierdo la salud, ataco mientras tanto. Whoops, yo no morí. Lo tomo mientras tanto. Ya se puede ver que ha
solucionado el problema. Y si hago clic en OK,
responderé. De acuerdo, así que ese fue el primer
libro que hemos arreglado aquí. Entonces esto es fijo. El siguiente es que los animales se están atascando en la rampa. Y si acabo de copiar
pegar un par de animales y lo hemos visto
antes antes ahí. Otras lecciones y solo
quiero solucionar ese problema. Entonces si acabo de copiar pegar
muchos enemigos, y
ojalá esto lo haga muy rápido. Ahora podemos ver aquí, este cerdo de
aquí está atascado en la rampa. El cerdo acaba de
correr hacia la habitación. Y el caracol hace
esto a veces. Entonces el caracol, se puede ver
el caracol eliminar aquí. Por lo que a veces se les
bombea. Permítanme realmente arreglar
esto antes de continuar, sólo
me estoy
molestando un poco por ese error. Así que vamos a ir a los enemigos. Y la cosa es que en realidad encontramos
una solución antes, así que sólo tenemos
que hacer lo mismo. Y la solución fue, si sólo voy a caracol, por ejemplo, podemos
empezar con éste. El choque aquí son
en realidad esta cápsula. Aquí está lo que lo está haciendo. Entonces si aumentamos el
tamaño de esta cápsula, evitará el bicho. Por lo que encontré que 35 por 35 de longitud, aumentar esta cápsula a 35 como mínimo se
solucionará el problema. Y recuerda que tienes
que arrastrar el caracol. El caracol estará
flotando así. Entonces arrastrando por el caracol,
tal vez algo como esto. Tal vez eso sea demasiado
bajo. Tal vez, tal vez eso es un poco demasiado bajo. Creo. Menos, menos 25 tal vez. De acuerdo, así que algo como esto. Ahora el caracol está aquí arriba
y te darás cuenta de que el caracol
viejo ya no
le vale si solo lo dejas correr
por algún tiempo ahora. Y hagamos
lo mismo con los cerdos. Entonces yendo al cerdo aquí. Y voy a
hacer click en la cápsula aquí y aumentar el
tamaño a 35 por 35. También derriba un poco más a este
cerdo. Y déjame tratar de ver
cómo se ve eso. Está corriendo en el suelo. Se ve bien. Y ahora si lo dejamos
jugar por algún tiempo, ya no va a chocar. Entonces si se van a ir los cerdos. Por lo que esta rampa, se puede ver
que están funcionando muy bien. Entonces esto debe ser arreglado ahora, este es el fijo para ello. Entonces aumentando la cápsula y luego arrastrando hacia abajo este cerdo. Por lo que parecen que siguen
corriendo en el suelo. Entonces eso es soluciona el segundo
problema que tenemos aquí. El tercero es
que los enemigos
no detectan la colisión de ataque. Hemos tenido algunos problemas
con esto antes, pero no lo miré
muy en serio hasta ahora. Pueden ver si
ataco por tecnología aquí, se
puede ver que
no están detectando mi ataque. Y sólo están detectando mi ataque si me acerco muy. Entonces si estoy parado
dentro del enemigo, en realidad me
están detectando. Pero si estoy un poco
lejos del enemigo, en realidad no
están
siendo atacados. De acuerdo, así que tenemos que arreglar esto. Así que hice todo lo posible para usar esta colisión, colisión de
ataque SR. Pero como esta
colisión aquí tiene el código donde realmente
volvemos a la interfaz, déjame cerrar el
caracol y el cerdo. Y si voy a colisión aquí, recuerda que hicimos este código
donde aplicamos daños. Y así esta colisión siempre
aplicará daños. Entonces como hacerlo de la
mejor manera en realidad requerirá que hagamos otra llamada la caja de la cabeza
donde golpeamos al enemigo. Así que sólo creemos
una nueva colisión. Y vamos a crear una
región esférica con ésta, llamémosla caja de golpe. Por lo que sólo vamos a
usarlo como una caja de éxito. Sólo voy a
arrastrarlo de esta colisión aquí
a esta cápsula. Entonces lo primero es ir
aquí a la cápsula. Así que revisemos nuestras colisiones solo para asegurarnos ahora que
tenemos esta casilla de golpe. Entonces las colisiones
para esta cápsula, lo único que
queremos con esta cápsula, y se puede ver aquí
la razón por la que
estoy, estoy creando este hit
box y no estoy usando esta cápsula porque
recuerda esta cápsula, en realidad
aumentamos
el tamaño aquí. Este es el tamaño de la
cápsula y creo que los hits, cuadro de
golpe es demasiado grande, como podemos usar esta
cápsula para golpear al enemigo. Pero creo que este golpe de dólares es demasiado grande y no
me gusta. Por lo que se puede ver si hago clic en él y hago clic oculto en juego, si lo elimino, se puede ver
cuán grande es ese cuadro de golpe. Y creo que esto
es demasiado grande, como como una cabeza
pavos por un caracol. Por lo que no voy a usar
ese cuadro de golpe y podemos disminuir el tamaño de lo contrario habrá atascado
dentro de la rampa. Así que déjame
esconderlo de nuevo aquí en la cápsula de interfaz. En realidad estaba dentro
del caracol aquí, la cápsula, y sólo voy
a esconderlo en el juego otra vez. Bien, bienvenidos de nuevo
a la base enemiga. Entonces, lo que queremos
hacer esta cápsula, primero
vamos a ignorar todo. Lo que no
quieres ignorar es el mundo estático y
el mundo dinámico. Y esto es sólo para no hacer caer
el punto por el
suelo porque el suelo, estas
colisiones niño tierra aquí abajo, son mundo estático. Y si acabas de quitar eso, en realidad
caerás al suelo. Y como solo estoy usando esto para colisión
esta cápsula aquí, voy a eliminar,
generar eventos de superposición. No lo estoy usando
para eventos de superposición, así que solo lo estoy usando para bloquear estos pozos estáticos y dinámicos para que no
caiga por el suelo. Así que esencialmente
no estamos realmente usando esta cápsula para
cualquier evento de superposición. Bajemos a los pavos de calor. Entonces esta caja de cabeza
voy a hacer click en No, ¿Puede el personaje dar un paso adelante? Voy a hacer clic en No. Y estoy configurando esto para costar. Whoops, no ninguna colisión. Voy a hacer clic en Control
Z y personalizado aquí. Y voy a
ignorar todo excepto la dinámica mundial. Y recuerda aquí en el jugador, por lo que atacan
coalición que tenemos. Si baja y
miras el tipo de objeto, vale la pena dinámico. Y es por eso que estoy,
me estoy solapando con dinámico porque quiero solaparme con mi colisión de
ataque. Esto se fija a la dinámica mundial. ¿ De acuerdo? Entonces esto es lo que estoy
superponiendo listas. Entonces ahora esto es correcto y
déjame bajar al sprite, asegúrate de que no
genere ningún evento de superposición. Y yo voy a la colisión aquí. Entonces esto es lo que está
dañando nuestro
estanque, que es nuestro jugador. Y en realidad voy a cambiar esto en lugar de la dinámica mundial. Voy a cambiar
esto a un **** porque esencialmente no
estamos usando esta potente cápsula aquí. Por lo que puedo igual de bien simplemente
cambiar esto a un punto. Entonces esta es básicamente
nuestra colisión Po1 aquí. Vale, así que recordemos eso. Recordemos que lo
pusimos para empeñar aquí. Así que déjame ir ahora a
la base de jugadores. Y aquí en el componente de la
cápsula, solo asegúrate de que vuelvas a
ignorar todo. Lo único es
el mundo estático y la dinámica mundial con la que
te estás superponiendo. Y recuerda, acabamos de
cambiar este, esta colisión que nos
estará dañando a ****. Por lo que en realidad necesitamos
solaparnos con él en otro lugar no obtendrá
ningún daño de ella. Entonces, nos estamos
solapando con él. Y para el sprite, no
va a generar
ningún evento de superposición. Y para esta colisión de ataque, sólo
va a superponerse
con la dinámica del mundo. Y volvamos a
ver si eso es correcto. Entonces se superpone
con la dinámica mundial. Y esta es nuestra caja de éxito y nuestra caja de cabeza está puesta
a la dinámica mundial. Entonces eso es correcto. Ahora se superponen unos a
otros porque esto
es lo dinámico, esto es lo dinámico. Y ambos se superponen
con la dinámica mundial, lo que significa que se están
superponiendo entre sí. Por lo que esta colisión debería
ser totalmente correcta ahora. Por lo que ahora vamos a hacer clic en play en
realidad antes de que hagamos eso, se
puede hacer click sobre este
ataque colisión. Y puedes quitar escondidos
en juegos para que lo veas. Y también puede ir al enemigo, haga clic en el cuadro de la cabeza. Y puedes intentar
eliminar un juego oculto. Y vamos también al cerdo
y ajustemos esa caja escondida. Y para esta caja de cabeza, sólo
voy a hacerlo, hagamos tal vez lo mismo este
tamaño de colisión aquí, así que 25. Y de nuevo, puedes mantener pulsada Mayús y hacer clic derecho
con el ratón para copiarlo y pegarlo aquí. Y entonces voy a poner
la ubicación igual aquí. Así que haga clic derecho. Puedes copiarlo
aquí, pegarlo aquí, y ahora la colisión está aquí. Entonces esta es la caja de la cabeza. Hagamos
lo mismo por el caracol. Así que déjame ir a la ventanilla, haga clic en el cuadro de cabeza en realidad
la colisión copia esto, pegarlo en el cuadro de la cabeza. Copia esto aquí arriba, Esa es la ubicación, y
pegarla en la caja de la cabeza. Hagamos clic en Jugar ahora. Y ahora se puede ver estas son las casillas de cabeza ahora que es
mucho mejor que antes. Por lo que ahora se puede ver que me
estoy dañando así. De acuerdo, Así que eso es lindo. Déjame intentarlo de nuevo. Se puede ver que en realidad me
estoy dañando aquí. Como a pesar de que estoy
en esta colisión, eso es en realidad otro bicho, así que no se engañen aquí. Así que déjame en realidad justo, se
puede ver aquí,
en realidad no me estoy dañando en este momento. Si me quedo dentro de mi caja de
ataque así, se
puede ver que está funcionando
para que no choque. No obstante, hay un pequeño,
hay otro bicho. Y si ataco ahora, se
puede ver que estoy
golpeando a mis enemigos. De acuerdo, entonces está funcionando completamente ahora. Ahora hay otro bicho. Se puede ver si me daña. Ahora, en realidad me estoy
dañando en mi religión de ataque, lo cual no se supone que suceda. Esto, por alguna razón, esto sólo ocurre
cuando me daña. Se puede ver. Pero si
acabo de restablecer el juego, este es en realidad nuestro próximo bloque. Entonces si acabo de reiniciar el juego
y solo me muevo por aquí, se
puede ver que no me estoy
dañando. Necesito quitar a
algunos de los enemigos. En realidad, tengo demasiados. Así que déjame simplemente borrar
muchas de ellas ahora. Es un poco, es un poco difícil
de mostrar con todos estos centímetros. Así que déjame poner aquí un
caracol en su lugar. Algo como esto. Y permítanme hacer click en Jugar ahora. Por lo que ahora si estoy parado sobre caracol, se
puede ver que no me estoy
dañando en mi caja de colisión de ataque. No obstante, cada vez que
nos dañamos, ahora de repente
nos estamos dañando. Otro ataque, caja de colisión. Hay un pequeño bicho. Todo un cambio repentino. Y esta es en realidad
nuestra próxima. Entonces aquí, el cuadro de alcance de
ataque enemigo. Por lo que de repente
nos ataca en nuestra colisión de ataque. Así que pasé media hora
tratando de echar un vistazo a
lo que podría ser. Y pensé que tal vez
eran las cajas de colisión. Y eso en realidad
no era cierto como las cajas de colisión,
son correctas. No tiene sentido
que sea un bicho ahí. Y en realidad este es un pequeño, pequeño, tonto error
de mi lado. A lo mejor ya lo
recuerdas mientras haces los videos. Podría haberlo olvidado, pero puedes intentar arreglarlo
tú mismo si quieres. Pero de repente, como
cuando nos atacan, de
repente
estamos recibiendo en el
sexo en nuestra caja de colisión. Y la razón de
esto es que si vas
al enemigo, acude
al Gráfico de Eventos. Recuerda que hicimos estos hechos de
colisión. Entonces cuando nuestro jugador
choca con el enemigo, estamos aplicando daño. Entonces esto está sucediendo
correctamente ahora, como desde el principio. Así que cada vez que
entramos en el enemigo, y eso no significa
para nuestra caja de colisión, pero no entraremos en el
enemigo con nuestra cápsula. De repente estamos aplicando daños a éste también. Esto se debe a que
nunca hemos dicho cuándo
dejar de aplicar daños porque
tenemos esta superposición final. Pero eso realmente no
hace que sea correcto. Pero aquí arriba, recuerda que hicimos esto empezar a
aplicar dañado. Esto es lo que se está ejecutando. Entonces esto se establece en verdad. Y si es cierto,
va a aplicar daños. Pero cuando lo configuramos en false, nunca
hemos especificado qué hacer aquí cuando
se establece en false, por lo que sigue aplicando
daños todo el tiempo. En realidad tenemos que decirle
que deje de aplicar daños. Así que déjame hacer eso. Y eso es sólo un
pequeño error de mi parte. Creo que acabo hablar en ese video
y no me di cuenta. Permítanme promover esto
a una variable, este temporizador promovido y
llamarlo aplicar daños, manejar. De acuerdo, así que tomemos
este mango y digamos claro e invaliden el
temporizador Por mango. Por lo que ahora va
a detener este temporizador cada vez que configuramos esto en false. Por lo que cada vez que vamos a
dejar
el componente, los componentes
de colisión lo van a poner falso y ya no va
a aplicar daños. Por lo que tenemos que chocar con él de
nuevo para aplicar el daño. Así que intentemos hacer click
en Jugar ahora. Y ahora. Esto funciona
correctamente como antes. Pero si me daña y
me paro frente a él, se
puede ver que sigue funcionando. Y esto es
porque tiene que volver a entrar en mi cápsula antes de
que pueda hacer daño. De acuerdo, así que esto está funcionando
ahora como se supone que debe. Este fue el siguiente insecto aquí. Esto es fijo. El siguiente es que el jugador no
puede ser dañado en la cuerda. Entonces si estoy de pie sobre el ícono de la
cuerda se ha dañado, y este es un error muy
fácil de arreglar. Entonces si sólo vas a
la base enemiga y
vas a la colisión aquí, como el enemigo está
chocando con el ****, pero también quieres chocar con el cliente siendo jugador. Recuerda, hemos hecho
ese personalizado. Entonces esto sólo está arreglado. Entonces esa fue una solución muy rápida. De acuerdo, así que la otra
cosa es, ahora, déjame agregar más enemigos alrededor de los golpes para que podamos
ver el buck mucho más rápido. Así que déjame hacer click en Play. Vale, entonces si estoy aquí parado, puedes ver cuál es el problema. Me estoy dañando así. Pero en realidad quiero empujar aquí a
mi jugador de la cuerda. Entonces si sólo voy a mi capa, capa base y
tenemos esto algún daño, así que estamos recibiendo daño, pero quiero que mi jugador
deje de estar en la cuerda. Entonces lo que voy a hacer
aquí en la escalada, voy a tomar
esta es escalar. Recuerda que inventamos aquí
en nuestro código de escalada, hicimos que uno llamado es ser colina cada vez que
estás subiendo. Entonces si puedo encontrarlo en realidad. Ahora, éste, lo
hicimos aquí abajo. Así es escalar
aquí, es escalar. Hicimos que un
conjunto es escalar. Entonces, realmente usemos
ese de aquí abajo. Entonces solo preguntando el código, si recibes algún daño. ¿ Estás subiendo siendo
ya si lo eres, queremos hacer otra cosa. Si no lo eres,
sigamos adelante y solo hagamos lo que hicimos antes. Entonces si ya estás subiendo, déjame llevar esto es escalar y ponerlo falso porque ya no
quiero escalar. Y luego
volvamos y hagamos lo que sea para tratar de
ver qué hace eso. Así que déjame ir en esta
cuerda de pie aquí. Y ya puedes ver
que está funcionando correctamente. Hay un pequeño bicho ahora nos
gusta cuando nos movemos, es como pausar nuestros libros flip para que las
animaciones no estén jugando. Y recuerda, en
el ser cliente, si vuelves a tu código, tenías algo aquí. Usamos llamado pausa,
subida, flip book. Y usamos esta pausa cada vez que no
nos movemos en la cuerda, estamos posando el
libro flip para que no
parezca que estés subiendo mientras
estás parado. Entonces tenemos que hacer eso también. Entonces déjame bajar aquí
y simplemente seguir aquí. En lugar de sólo hacer esto, vamos a hacer, puede subir de nuevo. Excelente en éste. Puede escalar aquí. Tomemos este también. Así conjunto puede subir para ser falso. Set está subiendo para
ser falso y establecido. Veamos la pausa una aquí. Pausa, sube, flip
book para ser falso. Por lo que tanto la lata trepar
es escalar y pausa de encuadernación flip
book se establece en falso. Así que déjame mover el
código, algo como esto. Entonces estamos haciendo esto, en un principio
sólo
estamos quitando el mecánico de
escalada. Y estamos, creo que
estamos bien para irnos ahora. Así que tratemos
de bajar la cuerda. Y se puede ver que está
funcionando correctamente ahora y puedo volver a saltar sobre
la cuerda. Y si hago eso, quédate
aquí y te daña. Si este caracol me pega. Entonces cuando me daña aquí, puedes ver que sigue funcionando. De acuerdo, Así que ese error está arreglado ahora, la muerte y el daño. Y en realidad hay
un pequeño libro aún, como si estuvieras
parado sobre la cuerda. Ya puedes ver, me veo así. Si realmente muero en la cuerda. Y esto está sucediendo
esencialmente porque si volvemos aquí y vamos a ISClient
siendo en realidad la función desenvolver es escalar
si puedo encontrarla aquí. Entonces lo es, cuando está
subiendo es falso. Se lo va a
poner a esto aquí. Déjame esconderme. Este año. Se va a poner nuestro libro de
salto flip aquí. Pero no queremos hacer eso. Queremos jugar a la muerte. Tratemos de tomar esto. Boolean está muerto aquí. Vamos a comprobar si ya estás
muerto aquí, en realidad voy
a decir no eso porque eso es mejor leer. Así que vamos,
conectemos los por ahora. Y ahora estamos diciendo,
¿estás subiendo? Sí, lo soy. ¿ No eres así si
estás siendo golpeado por un enemigo y te estás
cayendo de la cuerda, entonces esto será falso. Ya no estás escalando. Vale, ya no vamos
a jugar a Bing. Entonces vas a
revisar, ¿estás muerto? Si no estás muerto, vale. Vamos a seguir adelante y simplemente
hacer lo mismo que antes, donde te caes. No obstante, si estás muerto. Así que déjame arrastrar esto aquí. Si eres eso, déjame simplemente golpear esto. Si eres eso ahora,
tomemos esto aquí, el modo de movimiento establecido. Y lo voy a poner
a caminar en vez de volver a
caer al colisión, tenemos que volver a
esta colisión de peones porque antes éramos
el jugador escalador, tenemos que volver al
peón canal de colisión aquí. Y en lugar de configurar el
flip book para saltar la animación, solo
podemos decir el modo movimiento. Y que los modos de movimiento establecen estados de movimientos para el jugador aquí en
la base int jugador, establece el
modo de movimiento para ser muertes. Entonces ahora estamos muertos porque
esto va a ser falso, lo que significa que si no estás muerto, vale, vas a
hacer lo mismo. No obstante, si eres que
vas a hacer esto aquí abajo donde estableces el modo Caminando o el modo de movimiento a caminar, y entonces lo vas a
poner a la muerte aquí. Así que juguemos este código. Permítanme en realidad sólo engendrar un poco más enemigos sólo para que
podamos probarlo más rápido. Y ahora nos vamos a
dañar un poco aquí. Y ahora en la cuerda, se
puede ver que en realidad soy una tumba. Ahora, esto está funcionando correctamente
y si hago clic en Okay, y puedo andar por ahí, puedo hacer lo
mismo que yo estaba haciendo antes. Estoy siendo empujado fuera de la
escalera. Si estoy parado en ella. Quiero decir,
solo puedes hacer que tu juego no sea empujado por la carta. Eso depende de ti. También puedes acaban de recibir daños
bajo carta. Bueno, creo que se ve
mucho mejor si sólo empujas fuera de la carta y se obtiene esta tumba
cada vez que mueres. Entonces esto está funcionando
correctamente ahora. Entonces ese fue el sexto. Y el séptimo es Responder
Ok, el botón es enfocado. Lo que quiero decir con eso
es si hago clic bien
aquí arriba , y luego me muero. Y esto es algo en la interfaz de usuario. Así fy, dy y haga clic en el espacio
en mi teclado o Enter. Se puede ver que estoy
haciendo clic en el botón. Entonces si hago clic en el espacio y si no
quieres hacer eso, no
quiero hacer
eso por este juego. que puedas ir a la interfaz de usuario, ve al menú principal. Ahora, en ese
menú principal, el menú I. Y aquí para este botón,
si haces clic en él, hay algo llamado
es enfocable y dice a veces el botón solo
debe ser
clicable con el ratón y nunca
teclado focalizable. Y esto es lo que está pasando. Entonces si hago clic en
él con mi mouse, y luego más adelante
podemos simplemente hacer click con el teclado como
espacio para hacer click. Ok. Puedes guardarlo si lo quieres,
pero lo voy a quitar, lo que significa que sólo puedo
hacer clic en esto con mi mouse. No puedo hacer clic en Entrar en
mi teclado o un espacio. Y a veces es
molesto como si
tienes un sistema de inventario, solo
quieres hacer click
en las pestañas con ratón y no con
tu inter y espacio. A lo mejor estás
tratando de saltar en el juego. Y no puedes saltar porque esto se está
enfocando y está haciendo clic, está bien, en lugar de
saltar y así sucesivamente. Entonces se va a hacer
un poco de un lío. Pero en este caso
está bien tenerlo como focalizable cuando estás muerto. Por lo que sólo puede hacer clic en
el espacio para responder. Pero creo que lo voy a quitar. Y también solo te estoy enseñando acerca de esta interacción
aquí para que podamos eliminar esto es enfocable y vamos a compilar y
guardar, y eso fue todo. Entonces si solo hacemos clic, en realidad
vamos a reproducirlo como
el servidor escuchado también. No hemos hecho
eso sólo para
asegurarme de que estoy en la
carta de la escalera y hago esto. Eso se ve correcto. Y si solo tomo
al cliente y
veamos qué está pasando. Permítanme minimizar esto un
poco para que haya espacio. De acuerdo, entonces ahora
somos el cliente y el cliente también
siendo empujado lejos. El servidor puede ver eso. De acuerdo, entonces está
funcionando correctamente. Y déjame ver si muero aquí. Y yo sí. De acuerdo, Así que eso está
funcionando correctamente. Ahora, hagamos click en Okay, y cerremos eso hacia abajo. Por lo que todos los errores están
arreglados y
se puede ver que no toma demasiado
tiempo arreglar estos errores, pero siempre es agradable
probar su juego. Si quieres depurar, usa el nodo de cadena de impresión, intenté ver si es
tu colisión, intentaste comprobar con Booleanos. Entonces, por ejemplo, si los jugadores que no
queremos hacer una determinada acción. Entonces hay algunas cosas
que puedes comprobar. Y ahora puedo cerrar esto abajo. Hemos arreglado todos los bugs. Vamos a guardar todo, y pasemos a
la siguiente lección.
88. Eliminar la persecución del jugador al morir: Ahora hagamos que el
enemigo deje de perseguir al jugador cada vez que
el jugador sea eso. Así que vamos a nuestra carpeta Blueprints y al
enemigo y al interior de la base enemiga. Entonces dentro de aquí
tenemos esta lógica donde los enemigos
persiguiendo al jugador, pero el enemigo sigue persiguiendo al jugador cada vez que
los enemigos que son los jugadores que tenemos que
hacerlo tal que el enemigo deja de gustos persiguiendo al jugador
cada vez que los jugadores que. Entonces hagamos eso aquí. Tenemos esta lógica
Viendo que la IA se mueve, así que nos estamos moviendo hacia el
personaje y lo que el enemigo llega al
jugador aquí en el éxito. En lugar de simplemente ir
a pasar directamente, intentemos comprobar si el
jugador está muerto o no, porque ya tenemos eso. Por lo que esto será fácil. Permítanme mover todo esto a un lado para que podamos
escribir algún código aquí. Lo que quiero hacer es solo
comprobar si el jugador es eso, recuerda que ya tenemos
ese controlador de jugador. Y podemos decir que consigue peón
controlado. Aquí necesitamos una referencia
a la base del jugador. Por lo que decir consigue referencia de jugador. Así que al igual que lo que hemos
estado haciendo antes. Y vamos a conectarlo aquí. Y aquí quiero usar este
llamado es eso, que lo hicimos. Así que consigue ese booleano. Y vamos a escribir otro booleano solo para que sea mejor
para la legibilidad. Y tomemos esto
y digamos rama. Por lo que ahora estamos preguntando si
el jugador no está muerto, entonces adelante y haz
lo que hiciste antes. Entonces yendo a esa nueva ubicación. No obstante, si el jugador está muerto, queremos hacer otra cosa. Ahora déjame arrastrar este código
un poco más cerca. Ahora que tenemos este código aquí. Tal vez algo como esto. De acuerdo, déjame acercar
esto ahora. De acuerdo, así que tenemos este código aquí. Y ahora podemos decir si
el jugador está muerto, así que no muerto es falso, significa que el jugador está muerto. Solo queremos recordar antes
de hacer esto con la lógica de trozo, así que detuvimos su árbol de
comportamiento. Ahora sólo podemos hacer lo contrario. Por lo que sólo podemos empezar
con la lógica. Por lo que sólo puede
copiar pegue esto si
desea simplemente copiar pegarlo aquí. Y vamos a conectarlo. Por lo que queremos empezar la lógica. Nuevamente. Queremos arrancar
el árbol de comportamiento. Y ahora va a ir y volver a
recorrer todo el asunto. Así que intentemos hacer click en
Play y ver si funciona. Vamos a jugar aquí como el servidor. Así que voy a golpear
algo aquí. Voy a ser golpeado. Entonces en este momento estos me
están persiguiendo. Y en realidad voy
a leer todos estos dos. Ahora muero. Y vamos a ver si van. puede ver que en
realidad no están persiguiendo a muchos más. Todos estos que pegué
se fueron por su propio camino. Por lo que en realidad está
funcionando correctamente ahora. Por lo que ahora hemos dejado de
perseguir al jugador. Siempre que el, los jugadores
que tan fallidos, estamos comprobando si el
jugador está muerto o no. Y si el jugador no está muerto, entonces vamos a bucle ese evento aquí
que hicimos antes. No obstante, si los jugadores
que solo vamos a ejecutar de
nuevo el árbol de comportamiento, que está aquí, lo que significa que
vamos a correr que encuentren ubicación
aleatoria y
lo que hagamos antes, antes de golpear al enemigo .
89. Muerte y repetición enemiga: Entonces aquí dentro de
la base íntima, trabajemos ahora en
la muerte enemiga. Por lo que ahora hemos terminado
la muerte del jugador, pero ahora necesitamos la muerte enemiga. Así que al igual que el jugador, sigamos adelante y hagamos aquí
un nuevo, nuevo evento. Y en realidad
solo lo hagamos dentro de la Interfaz de Blueprint. Entonces yendo a las interfaces
en la base enemiga, y agreguemos una nueva
función llamada muerte. Y de nuevo, necesitamos un
booleano igual que antes, y llamémoslo B está muerto. Y eso es molestar otra vez. Voy a borrarlo. No sé por qué sucede
tan frecuentemente en este momento. Digamos que b está muerto. Y llamémoslo muerte. Al igual que el jugador. Volvamos ahora a
la interfaz. Y aquí vamos a
hacer clic derecho y decir muerte y llamar a ese evento. Entonces necesitamos de nuevo un evento
personalizado, que se ejecuta a través de los servidores y asegurarnos de que el
cliente no esté engañando. Y vamos a ejecutarlo a través
del servidor y confiable. Y ahora podemos ejecutar
el servidor uno
aquí arriba , así que la muerte del servidor. Y agreguemos
aquí un booleano para que podamos conectarlos. Llámalo es, D está
muerto, así como esto. Y ahora podemos hacer
algo aquí abajo. Entonces permítanme promover
esto a una variable. B está muerto. Y ya puedo pensar que
necesitamos cambiar esto a un naufragio notificar
porque necesitamos tocar la
animación de muerte para el, para el enemigo y rep notificar. Recuerda que vamos
a notificar a todos
los clientes sobre
el cambio visual. Entonces todos los clientes pueden ver la animación para el
enemigo cuando está muriendo. Entonces esto es lo que
necesitamos en este momento. Entonces aquí arriba, ahora vamos a sumar antes de que
hagamos nada aquí, en realidad
subamos aquí
y veamos cuando el enemigo dice. Y voy a esconder aquí
los alfileres no conectados
para que se vea más limpio. Entonces aquí estamos calculando la salud y la estamos
configurando aquí, así que está por aquí. Estamos retrasando la animación, estamos deteniendo el movimiento. Entonces estamos parando la lógica. Y en realidad lo hagamos aquí. Por lo que quiero hacerlo justo
después de este retraso. Entonces cuando golpeemos al enemigo, se va a retrasar. Va a terminar de tocar esa animación de Hit
antes de que muera. A menos que una copia, como copiar esto y volver a conectar esto aquí y déjame colocarlo aquí después de que esta lógica superior realmente
no tiene sentido. No hace la diferencia. Quiero decir, no
hace la diferencia. Pero creo que es más limpio
detener el movimiento, detuvo toda lógica de
inmediato antes de este retraso. A veces, como
no tiene sentido
organizar tus notas para que
entren en el orden correcto. Y ahora va a retrasar esta animación y justo
antes de empezar a caminar, pero porque tal vez estoy muerto, así que no quiero empezar a
trabajar de inmediato. Entonces aquí hay una buena posición para comprobar si el enemigo
está muerto o no. Entonces antes de empezar a caminar, comprueba si el enemigo está
muerto o
no porque no tiene sentido empezar a
caminar si estás muerto. Así que permítanme seleccionar todo esto y moverlo aquí a un costado así que
tengo algo de espacio para trabajar. Ahora, tomemos la información animal. O en realidad podemos simplemente
tomarlo de aquí y decir break. Y entonces podemos tomar la
salud y decir igual. Y vamos a arrastrarlo todo el camino aquí y esconder los pines no conectados. Sólo puedo hacer doble clic para hacer un nodo redireccionado y
hacerlo mucho más limpio. De acuerdo, entonces ahora podemos decir aquí, así que si la salud es igual a 0, queremos jugar
los eventos de muerte. Si no es 0, vamos a
seguir adelante y hacer lo que
hicimos antes. Entonces aquí, siempre que sea
0 y los jugadores muertos, juguemos aquí el evento de la muerte. Y la base enemiga está
muerta está puesta a verdad. Y también tenemos que tomar la caja de la cabeza y
la colisión e deshabilitar esas
colisiones solo para
asegurarnos de que no podamos golpear a un enemigo muerto. Entonces tomando esto y
diciendo solapamiento, y puedes darte cuenta de
que estás aquí abajo, tenemos algo que se llama eventos de superposición
degenerados establecidos. Y lo que estamos tratando de hacer es si haces clic en este cuadro de hit, y si vas por aquí, solo
estamos tratando de
deshabilitar este, generar eventos de superposición porque si fue deshabilitado éste, no podemos generar
ningún evento de superposición y por lo tanto ya no podemos
golpear al enemigo. Así que pongamos esto en falso. Permítanme simplemente copiar pegue este uno más y conecte éste. Por lo que tenemos la caja de la cabeza y la colisión se puso en falso para que no
podamos pegarlos. Y después de eso, necesitamos, necesitamos tener un tiempo de
respuesta o un retraso antes de volver a
engendrar al enemigo. Así que déjame simplemente hacer
una nueva variable aquí llamada responder timer. Y vamos a flotar. Y tomemos ese
temporizador de respuesta y digamos retraso. Ahora vamos a retrasar
con ese temporizador de respuesta. Y por ahora, vamos a
ponerlo a cinco segundos. Entonces vamos a compilar y ahorrar. Y por defecto, vamos a escribir
cinco segundos así. Entonces después de cinco segundos, el enemigo va a responder. Si quieres. También puedes agregarlo
a la estructura. Así que todos, cada enemigo. Tendrá su propio temporizador de respuesta. Se puede hacer eso también. Sólo voy a
ponerlo aquí,
no demasiado importante en este momento. Así que sólo cinco segundos
para todos los enemigos. No obstante, si quieres
hacerlo más dinámico, puedes agregarlo aquí
a la estructura. Y para cada enemigo puedes
tener un temporizador de respuesta separado. Ahora lo que vamos a retrasar el código con cualquier
cantidad de segundos voy a mover esto
aquí abajo, en realidad así. De acuerdo, entonces después de retrasarlo con alguna cantidad
de segundos aquí, tenemos que volver a poner la salud a 100 o
lo que fuera antes. Porque ahora mismo sigue siendo 0. En realidad necesitamos definir cuál es la máxima salud
para el enemigo. Entonces necesito volver a la
estructura, información animal. Y al igual que lo que
hicimos por el jugador, agreguemos una nueva variable
llamada max health. Y vamos a añadirlo aquí abajo esta salud y
cambios a un flotador. Esta salud es algo que
cambiamos durante el
juego todo el tiempo, pero ésta va
a permanecer estática. Así que vamos a salvar todo. Déjame ir a cualquier base
Compile y Save. Y déjame volver
a los enemigos. Entonces primero el cerdo aquí. Para el cerdo, me voy a poner aquí en los valores predeterminados de la clase de
información animal. Vamos a establecer la salud máxima
a algo así como 30. Así que empezando así como éste. Y volvamos
al caracol aquí. Y para el caracol,
empecemos con 15 como la máxima salud, igual que éste.
Vamos a compilar y ahorrar. Y ahora volvamos
a la base enemiga. Y aquí podemos volver a tomar
la información animal. Podemos decir sets. Recuerda que estamos
configurando la variable, así que estamos estableciendo
este valor de Salud. ¿ Con qué lo están restableciendo? Lo estamos configurando con
lo máximo más saludable. Así que arrastremos aquí
y ahorremos break. Tomemos la
salud máxima y lo conectemos a la salud y ocultemos los pines
no conectados. Entonces lo que esencialmente estamos
haciendo es que estamos tomando el valor máximo de salud que
escribimos aquí en cerdo, caracol. Y solo estamos devolviendo a
este valor de salud a la salud máxima porque
ahora el enemigo ha reaccionado y solo
queremos que tenga
ese valor Max para la salud. ¿De acuerdo? Algo como esto aquí. Y después de establecer la salud, recordemos
tomar esta información animal y ponerla aquí a la
estructura como esta. Y entonces queremos precisar dónde queremos
engendrar al enemigo. Así que en realidad
hagamos eso aquí abajo. Hagamos
aquí una nueva variable llamada responder. Y hagámoslo en realidad a través de
la Interfaz de Blueprint. Entonces vamos aquí y hagamos una
nueva función llamada respuesta. Vamos a compilar y ahorrar. Volvamos a la base enemiga. Llámalo aquí, responde. Vamos, hagamos que pase por servidor responda como por supuesto, llamando a su servidor así, y luego ejecutándolo a través
del servidor y confiable. Y vamos a correr la
respuesta aquí arriba. Lo que queremos
hacer con el responder, recuerda aquí en
nuestro árbol de comportamiento en ubicación aleatoria definida, realidad solo queremos
hacer lo mismo. Por lo que solo queremos encontrar
una ubicación aleatoria. Por lo que en realidad
puede, incluso puede copiar pegar en realidad, vamos a escribirlo de
nuevo solo para la práctica. Así que consigamos actor de clase, consigamos actor de clase. Solo queremos conseguir nuestra
navegación Bound Mesh, nav, nav mesh,
volumen de rebote, éste de aquí. Ahora queremos conseguir los límites de
los actores para que
podamos ver cuán grande es la malla de
navegación. Y a partir de eso, vamos a romperlo lágrimas porque sólo nos
interesa el eje x. Recuerda, estamos
haciendo un juego 2D, por lo que sólo nos interesa
el tamaño aquí en el eje x. No me importa
la Z ni la y Así que no lo haremos. Solo queremos usar
este valor x aquí. Lo que queremos hacer aquí, queremos decir conseguir punto aleatorio
alcanzable en radio. Esto es lo que queremos usar. Recuerda, hay otros, así que consigue punto aleatorio
en radio navegable. No obstante, quiero usar
éste en radio alcanzable, porque si los enemigos de aquí arriba, el enemigo está aquí arriba. El caso es
que si lo tienes configurado para punto
alcanzable aquí en
radio, se desova. Seguirá desovando
aquí arriba en la plataforma, por lo que no le gusta
aleatoriamente esto. Si tienes algunos
enemigos aquí arriba, no
desovan al azar aquí abajo. Por lo que quiero mantenerlos aquí arriba. Y es por eso que estoy
usando alcanzable aquí. De acuerdo, Así que más radio, vamos a conectar esta
x porque ahora tenemos los límites de esta malla de
navegación aquí, y este es nuestro radio. Y el origen es justo
donde murió el actor. Así que consigamos la ubicación del actor. El enemigo aquí, consigue
la ubicación del enemigo, ese es el origen en el que
vas a buscar. Esencialmente,
hagamos una nueva variable. Lo que queremos
hacer aquí es hacer una columna vectorial llamada ubicación de
desove. Y este vector
vamos a establecer a un rep notifique porque estamos tratando de
hacer un cambio visual. Estamos tratando de
engendrar al enemigo. Y en el interior de esta costilla
notificar ubicación de desove. Sólo vamos a decir
establecer la ubicación del actor. Esto es lo que estamos tratando de hacer. Tratando de establecer la ubicación de
los actores a un punto aleatorio en
la malla de navegación. Así que estamos
tratando de engendrarlo aquí. El lugar de la actriz y
establecer la ubicación real es un cambio visual porque estás cambiando la ubicación de la actriz. Y es por eso que lo ponemos
dentro de una costilla notificar. Volvamos ahora
al Gráfico de Eventos. Y en lugar de aquí, esto es
lo que estamos tratando de establecer. Estamos tratando de establecer esta
variable a la ubicación aleatoria. Pero de nuevo, recuerda, sólo me
interesa el valor x. Permítanme realmente arrastrar
esto aquí. Por lo que tengo más espacio. Sólo estamos tratando de, como sólo nos
interesa el valor x aquí. Así que rompa aquí y
déjame hacer el vector aquí. Por lo que estoy separando
los valores para que pueda cambiarlos y no los
enchufé directamente aquí. Para la x, me interesa dx, por lo que simplemente normalmente sólo tapón el acento porque
esto es lo que queremos. Y para la y, quiero mantener
a los actores y. entonces la ubicación real. Voy a romperlo. Y me interesa sólo mantener
a los actores, como los enemigos y
ubicación para ser constantes. No quiero
cambiarlo aquí arriba. Y en cuanto a la ubicación z, podemos volver a usar esto, pero podemos usar esta ubicación de
hueso z. Y lo que quiero hacer, sólo
voy a decir plus, y vamos a tratar de decir más 20. Y permítanme explicar
por qué hago eso. Para la ubicación z. Recuerda que la z está aquí arriba, esta es la ubicación z. Solo digo 20 porque a veces puede
haber una posibilidad de donde los enemigos se aten aquí y se quede atascado
en el suelo. Solo digo más 20 cada vez que
encuentres una nueva ubicación. Por lo que va a
decir más una t n va a empujar a
ese enemigo hasta aquí. Y va a
engendrar al enemigo aquí. Y entonces va a
dejar caer aquí al enemigo. Porque recuerda,
los enemigos tienen gravedad por lo que no se
van a quedar aquí arriba. A veces. Sólo estoy tratando de evitar
el tema donde
están desovando dentro de
nuestra malla de colisión. Y digo más 20. Entonces este de aquí arriba. Y son como, no
creo que lo notes. Al igual que los notamos cuando
engendran aquí
porque tiene una gravedad y
caerá aquí abajo. Y si te darás cuenta, solo disminuye este número
a algo más bajo. Si lo haces
algo muy alto, te darás cuenta porque
caerá del cielo. Entonces creo que 20, no se notará. Así como esto. Y
ahora vamos a conectarlo desde aquí hasta aquí. Déjame empujar esto un poco
hacia abajo. Así que ahora estamos configurando
la ubicación aleatoria, y realmente vamos a
usarla aquí arriba. Entonces después de poner las caderas a 100, queremos llamar a la respuesta, es que vamos
a responderla. Va a encontrar
una ubicación aleatoria para el enemigo y
va a responderlo. Entonces, recuerda que
paramos como cuando estás muerto, detuviste la lógica aquí. Por lo que tenemos que empezar de nuevo su árbol de
comportamiento. Por lo que puedo de nuevo simplemente
copiar pegue esto aquí y conectado
y decir comienza la lógica. Así que ahora estamos empezando
con la lógica de nuevo, estás manejando el árbol de
comportamiento. Recuerda volver a habilitar aquí las
colisiones, por lo que no están deshabilitadas. Nuevamente. Vamos a conectarlos así. Entonces, ahora esencialmente,
¿qué va a pasar? En realidad vamos a tirar de la real
completa Todavía no. Vayamos a la muerte aquí porque no
hemos hecho nada. Y lo único por ahora es simplemente ir
a esta
función de desenvolver para los muertos. Y lo que queremos
hacer es en realidad
tomemos esto y verificemos si
los jugadores que no lo son. Entonces si el jugador está muerto, solo
queremos tocar la animación
de la muerte. Entonces tomemos esto
y tenemos éste llamado estados de movimiento set. En realidad establecido. Veamos, Dijiste
movimientos estados. Éste para el enemigo. Dichos movimientos afirman,
y elegamos la muerte solo para comprobar si realmente la
hemos logrado. Entonces yendo a lo inmaduro
para el movimiento Estados, en realidad no lo hemos
enganchado. Por lo que muy importante comprobar si tu código está realmente conectado. Así que vamos a copiar pegue
este libro flip. Conectemos los
sprites al objetivo. Vamos a conectar esta muerte aquí. Y ahora para la animación de la muerte, tomemos esta estructura y vamos a golpear este pin aquí
llamado animación de la muerte. Lo hicimos hace un tiempo
y vamos a conectarlo. Ahora, aquí abajo, déjame esconder
pines desconectados así. Ahora está conectado. Y permítanme revisar
aquí por el cerdo, si hemos puesto la animación de la
muerte, así que tenemos aquí y la
animación de muerte para este caracol. Vamos a comprobarlo en
los valores predeterminados de clase. Y hemos dicho aquí la animación de
la muerte. Ahora voy a comprobar la
velocidad de la animación. Entonces yendo a los enemigos. Y éste va por el tiempo. En realidad, voy a elegir
tres fotogramas por segundo. Entonces 1 segundo, tocaremos toda
esta animación. Y en cuanto al caracol, vamos a comprobarlo aquí. Por lo que ocho fotogramas por segundo. Sí, creo que está bien. Siempre podemos
cambiarlo si es necesario. Volvamos a la base
íntima y vayamos a la
función desenvolver para los muertos. Entonces vamos a tocar
la animación de la muerte y eso es todo por ahora. Así que vamos a hacer clic en el juego y
esperamos que todo funcione. Voy a pegarla ahora. Y en realidad déjame revisar mi daño de mis golpes porque no quiero
hacer esto para siempre. Entonces vamos a
Veamos dónde lo hicimos. Lo hicimos en lugar
de planos y el jugador, base del jugador. Y luego vamos a la información de
este jugador aquí. Y por el daño base. Por lo que la salud para
el caracol es de 15. En realidad voy a poner
diez como mi daño base. Entonces le pegué al caracol dos
veces y morirá. Entonces golpeando al caracol, a los otros caracoles
y a todos esos. Y se puede ver que ahora se está muriendo. Solo tenemos que pausar esta animación para que
no se reproduzca para siempre. Y se puede ver que
en realidad engendra por aquí. De acuerdo, así que no creo que
necesitemos, como, no
necesitamos pausar
esta animación de muerte. Puedes hacerlo si quieres,
igual que lo que publicamos con la animación de cuerda
para el jugador. Pero creo que vamos a hacer una animación de desvanecimiento y el
fade lo hará desaparecer. Por lo que en realidad no
importa si la animación, si los enemigos
aquí es post o no. Pero puedes ver aquí
están desovando, yo sé de en el suelo,
así que tenemos que arreglar eso. O es porque el
modo de caminar necesita ser establecido. Así que en realidad nos gusta
ahora mismo, creo que está bien. Trabajemos en el desvanecimiento. Porque con el desvanecimiento, podríamos estar usando eso para establecer el modo Caminando
y tuercas dentro de la animación de la muerte porque se
puede ver que está funcionando, pero es porque
puedes ver aquí, si vuelvo a la
base enemiga y por dentro de aquí, vamos a la Gráfica de Eventos. Y recuerda que dijimos el modo de
movimientos a ninguno, y nunca
lo hemos puesto a caminar de nuevo. Entonces es por eso que hay atascados como si realmente no estuvieran
atrapados en el suelo. Creo que es
porque no nos gusta que no
hayamos dicho esto a caminar. Y puedes hacer esto
ahora mismo dentro de
la animación de la muerte o
del evento de muerte aquí. Pero creo que vamos a
hacer un efecto de desvanecimiento. Y con eso
configuraremos el modo Caminando. Así que pasemos
a la siguiente.
90. Desvanecimiento de Respawn enemigo: Muy bien, así que aquí en la base, hagamos ahora un efecto de desvanecimiento
para cuando el enemigo dados. Déjame ver si podemos
estructurar esto mejor. Ahora tenemos la
animación de muerte aquí, tenemos la animación de
respuesta de desova. Solo puedes intentar hacer
la animación de fade aquí. Voy a volver a
mi Interfaz Blueprint y hacer una nueva función llamada, llamémosla actor fade. Y vamos a hacer un booleano
y simplemente llamarlo ser fade. Entonces sólo para ver si
debe desvanecerse o no. Volvamos aquí y desplázate ese evento llamado atrofiado. Y hagamos eventos de un servidor. Entonces eventos personalizados pasando por el servidor llamado atrofiado. Y vamos a ejecutarlo a través de
un servidor confiable. Y vamos a ejecutar el evento
del servidor aquí arriba, actor fade, y
hagamos un nuevo booleano. Entonces todas las mismas cosas que
hemos estado haciendo hasta ahora. Ahora vamos a
conectarlo. De acuerdo, así que ahora tenemos este actor fade. Vamos a promover esto
a una variable. Y no sé si necesitamos
convertirlo en un rep
notifique por ahora. Dejemos que sea
así por ahora. Entonces lo que estamos tratando de
hacer es que estamos tratando alimentar al enemigo cuando muere. Así que por aquí y
la muerte enemiga, en realidad sólo
estoy desvanecerse
aquí antes de que yo, en realidad, después de poner esto en falso, sólo
podemos alimentar al enemigo
antes del temporizador de respuesta. Así que no me quite, pero mueva esto aquí y llame
al actor fade event aquí. Así Actor se desvanecen. Y
pongámoslo a verdad. De acuerdo, entonces, ¿qué debería pasar
cuando el desvanecimiento es cierto? ¿ Qué es cierto? Lo que necesito hacer
es llamar a una línea TEM. Entonces recuerda que hicimos
una línea de tiempo antes. Hagámoslo ahora de nuevo. Así que pinchando aquí, y
llamemos a este actor líder. Y juguémoslo
desde los inicios. Entonces, lo que tenemos que hacer aquí, el objetivo de esta línea de tiempo es
desvanecer el color para el enemigo. Y recuerda hacer
el efecto de desvanecimiento, hay
que ir a ese enemigo. Y de nuevo establece este
material en un material translúcido, sin iluminación porque no se
puede desvanecerse este color directamente como
desaparece de repente. No te puede gustar que no
haya un paso intermedio. Es sólo aparece y
desaparece así. Por lo que tenemos que ponerlo
a translúcido otra vez, igual que el jugador que hicimos
con el efecto parpadeante. Entonces vamos a la base
enemiga aquí. Y en realidad, hagamos
eso de aquí adentro está muerto. Entonces hagamos eso antes de desvanecernos. Entonces cuando el jugador está muerto, vamos a está muerto. Y aquí podemos tomar este
brillante y decir material Set. Y pongámoslo a lo que
se llama material de
sprite
translúcido, translúcido, sin iluminación. Así que ahora estamos sentados
atrás y vamos a configurarlo. Recuerda volver a ponerlo aquí siempre que el jugador ya no
sea eso. Entonces al material sprite enmascarado,
enmascarado sin iluminación. De acuerdo, entonces ahora le dijimos
el material a esto y podemos alimentar al
jugador o desvanecerse al enemigo. Vamos a bajar a
la línea de tiempo aquí. De acuerdo, entonces estamos tratando de
establecer unos colores lineales. Así que déjame hacer una nueva
variable y
llamarla actor fade color. Y hagamos aquí la
nueva variable en un color lineal. Y tomémoslo y pongámoslo. Entonces esto es lo
que estamos tratando de establecer. Lo estoy convirtiendo en un naufragio. Notificar. Porque recuerda que
esto es un cambio visual. Estamos cambiando el,
el alfa del jugador, lo que significa que lo estamos haciendo opaco. Entonces yendo aquí y
configurándolo a una retina phi. Y lo que estamos tratando de hacer
aquí en la función unwrap es que estamos tratando de tomar
este sprite y decir sets. Creo que primero se
llamaba color Sprite. Sí, es de color brillante. Esto es lo que estamos
tratando de establecer aquí. Y tomemos a este actor color
falso y conectado. Entonces vamos a establecer el
color y lo vamos a configurar con tiempo porque
lo
estamos actualizando constantemente a través de
esta línea de tiempo. Y lo que estamos tratando de hacer es, vamos a usar una nota de bucle. Entonces intentó usar un nodo de bucle. Y buscando bucle, puedes encontrar éste
como podemos usar éste, pero creo que mejor idea, como puedes romper esto. Puedes ver, tomar esto
y tienes razón, hacer, hacer color lineal. De esta manera. Puedes cambiar el alfa
aquí a través de un flotador. Y en realidad puede simplemente usar un nodo de bucle porque se
trata de un flotador. No obstante, una mejor manera de hacerlo. En realidad hay un bucle para
un color lineal específicamente. Por lo que puede usar eso en su lugar. Y puedes
recorrer colores lineales. En lugar de hacer esto
aquí, permítanme borrar esto. Y aquí por el bucle
solo puedes conectarlo así. Y para el primer color, así que empezamos con
ser solo nosotros mismos. Entonces aquí 1111, todo
siendo fijado a uno. Esto hará que sólo los píxeles como si acabemos de tener nuestro
personaje sin ningún color. Y el segundo. Sólo quería volver a hacer 1111, pero para el Alfa, por lo que la opacidad
que queremos establecer a 0, en realidad 0, así que
va a desaparecer. Va a ir de 0 a uno. Al igual que éste es 0 y
luego va a uno. Entonces se va a
desvanecer de 0 a uno. Y queremos hacerlo sin problemas. Entonces en lugar de solo
escribir uno aquí, si sólo hacemos eso
sin nada más, va a hacerlo,
en realidad va a desaparecer sólo
cuando iniciemos el juego. Pero queremos ir, queremos
ir de 0 a uno sin problemas. Y es por eso que
usamos una línea de tiempo. Entonces haciendo doble clic
en la línea de tiempo, voy a hacer una
nueva pista de flotación aquí. Vamos a llamarlo fade alpha. Aquí, vamos a hacer clic derecho
y hacer dos. En realidad déjame hacer tres
puntos aquí y verás por qué. Entonces en el momento 0, quiero que el valor sea 0. Hagamos realmente la
longitud de este 1 segundo. Entonces en su momento, así que
el último punto aquí, así que primero es 00, el último punto en el momento uno, quiero que sea uno. Y éste en
el momento de 0.75, quiero que sea 0 quieto. Así que no quiero desvanecerse
al enemigo de inmediato. Quiero desvanecerlo
unos 0.75 segundos. Entonces se va a reproducir un poco la
animación, y luego se va a
desvanecer la animación. Así es como
puedes hacerlo también. Entonces no tienes que hacerlo así donde solo
se
desvanece con el tiempo. Sólo voy a ser
infiel así hasta que empiece a desvanecerse rápidamente aquí al
final de la animación. Así que vayamos aquí y
conectemos el alfa ahora. Y ahora tenemos esta línea de tiempo
suave que va a
desvanecerse nuestra animación. Y ahora lo que podemos
hacer es subir aquí a nuestro código
después de la muerte. En realidad, ahora en realidad
ya lo hicimos aquí. Entonces Actor se desvanece,
déjame tratar de tocarlo y
ver qué pasa. Si lo toco ahora. Y mato a algunos enemigos. Se pueden ver que se desvanecen y
realmente no importa. Al igual que nuestra animación
sigue en bucle como antes, pero realmente no la vemos
porque estamos encajando al enemigo. Entonces si trato de
matar a éste ahora, se
puede ver que
toca la animación y luego se desvanece después de eso. Qué es bastante guay. Y permítanme en realidad, antes de hacer cualquier otra cosa, déjame quitar mis
colisiones aquí. No quiero
verlos más. Entonces yendo al cerdo,
creo que acabamos hacer clic en uno de esos por lo que la caja de la cabeza debe
estar escondida en el juego. En realidad, creo que se
hace a través de la base enemiga. Entonces aquí escondido en juego. Solo quería
pegarme cajas de la cabeza así y vamos a vender. Así golpean u ocultan los jugadores atacan
colisión escondida en el juego. De acuerdo, entonces ahora tenemos
esta animación de desvanecimiento, pero recuerda que tenemos dos
desfavorecidos en algún momento. Voy a ir sin fases de inmediato cuando encuentre mi ubicación de desove. Entonces justo antes de
empezar la lógica, empecemos el proceso
de desarrollo. Entonces Actor se desvanece, voy
a llamar al mismo evento. Y en lugar de tener
esto marcado como antes, ahora lo tenemos sin marcar. Y esto significa que se
va a desplegar. La forma en que hacemos esto es aquí.
¿ Cuál es la línea de tiempo? El cronograma está aquí. En lugar de jugar desde el principio, hagamos realmente
una rama aquí. Entonces tomemos esto y hagamos
una sucursal y conectados. Entonces si es cierto,
si nos estamos desvaneciendo, va a jugar desde el
principio como lo hicimos antes. No obstante, si ya
no te estás desvaneciendo, por lo que va a ser falso. En realidad quiero jugar a
este revés desde el final. Y va a pasar de
esto invisible a visible. Entonces en realidad se va
a desvanecer en mi personaje. Esto lo estaba
haciendo esencialmente si lo estás configurando en desmarcado
y lo agregas aquí, el que no está marcado, que es el falso para revertir desde el extremo. Recuerda en realidad
quiero hacerlo aquí. Entonces el modo de caminar,
recuerda que no hemos establecido el, el modo de movimiento. Entonces si vuelvo aquí en el, cualquier daño, establecemos el modo de
movimiento a ninguno. Voy a copiar esto. Voy a bajar
aquí, pegarlo. Y en lugar
de ponerlo a ninguno, en realidad
voy a
ponerlo a caminar de nuevo. De lo contrario se va a quedar atascado
y nunca, nunca se moverá. Entonces ahora tenemos el modo de trabajo, así que estoy tratando de ver
lo que nos falta. Así que en realidad, hay
algo que nos falta. Lo que nos
falta es que nunca
especificamos cuando el personaje ya no
está muerto. Entonces aquí nos fijamos que eso sea cierto. Y recuerda que tenemos
que ponerlo en falso porque aquí está adentro, está muerto. Nos fijamos aquí en defecto, volvemos a configurar el material para enmascarar. Entonces tenemos que hacer esto, y creo que voy a hacer esto. Entonces, en lugar de hacerlo aquí, así que no puedes, no puedes
entrar aquí y decir esto. Porque recuerda que estás, estás tocando un, un actor fade, que
es una línea de tiempo. Y en realidad te
vas a poner, como si configuraras esto aquí, la muerte, te vas a poner. Este material a enmascarado sin iluminación, lo que no le da a esta línea de tiempo la oportunidad de cambiar el color
de invisible a visible. Porque recuerda cuando tienes el material como
predeterminado para enmascarar hendiduras, no
puedes tener esa transición
suave con la decoloración del enemigo. Entonces si haces esto aquí arriba, va a hacer
esto al instante
justo después de que el actor se desvanezca. Y va a cambiar
el material para enmascarar sin luz, lo que no da la línea al azar como el tiempo suficiente para hacer esto aquí a
esta transición de,
de como el desvanecimiento en efecto. Así que en realidad lo hagamos
aquí en la línea de tiempo. Entonces cuando la línea de tiempo
termina al desvanecerse, entonces
podemos poner esta
muerte en falsa. Y no queremos hacer eso todo el tiempo
porque recuerda, a
pesar de que el campo está establecido verdadero y lo estás jugando aquí, va a jugar esto a falso porque realmente no necesitamos hacer eso cada vez que te estés desvaneciendo, lo
que ha hecho aquí, no
queremos
ponerlo en falso, como la muerte
porque también tenemos un temporizador de respuesta y sus
necesidades para ir algún tiempo. Voy a hacer un booleano aquí. Éste, de nuevo, el feed. Y hagamos un booleano. En realidad es una especie de alimento que no
es realmente explicativo. Permítanme cambiarlo a
después de fade en su lugar. Permítanme configurar este
para replicarlo porque recuerda que se está
ejecutando en el servidor, por lo que el cliente necesita
saber sobre esto. Y déjame llevar a este actor fade, establecer una rama y
vamos a conectarlo aquí. Entonces cuando el enemigo se está desvaneciendo, no
vamos a hacer nada. Pero cuando el enemigo ya
no se está desvaneciendo, lo que significa que estás por aquí. Entonces vamos
a ejecutar este código,
ejecutar esta línea de tiempo, y
la línea de tiempo termina. Vamos a decir,
sí, el actor no se está desvaneciendo. Se puso a falso. Entonces en realidad vamos a
poner esto en falso también. Por lo que ahora podemos hacerlo de esta
manera en lugar de ahí arriba. Muy bien, así que ahora vamos a
compilar y guardar, y ojalá hayamos
arreglado todo. Y vamos a hacer clic en el juego y
vamos a matar a algunos enemigos. Entonces tenemos muchos
enemigos muriendo. Y veamos si
responden correctamente. Por lo que ahora éste
responde a éste, responde. Estos responden. Vale, entonces parece que
todo funciona correctamente. Y si solo les pego una vez, van a hacerlo y
se puede ver que en realidad hay
un pequeño error. Creo que a éste no le gustó que no haya eventos de
superposición generados con éste. Entonces el problema aquí con
el tema superpuesto es que olvidé ponerlos a veras. Entonces los pusimos a falsos aquí, pero al final,
olvidé ponerlos a veras. Por lo que necesitamos generar eventos de
superposición. Entonces vamos a compilar y ahorrar. Volvamos a
jugar el juego. Y vamos a intentarlo de nuevo.
Así que vamos a golpearlos ahora. Van a morir. Obviamente, necesitamos algunos efectos de
sonido muy pronto. Y se puede ver que están
respondiendo correctamente.
91. Colocación del nivel enemigo: Esta lección es un poco diferente. No lo hacemos, no
vamos a codificar nada. Y ahora sólo vamos a
colocar a los enemigos
alrededor del nivel. Y se puede hacer esto
con el código. Por lo que solo puedes hacer
un evento de desove y simplemente engendrar a todos
los enemigos automáticamente cuando te uniste
al juego y lo configuras
como ubicaciones aleatorias. Pero creo que si puedes
hacer algo sin código, entonces te sugiero que
lo hagas sin código
porque recuerda, codificando, vas a usar
algún recuerdo del juego. Y por qué vas
a hacer eso cuando
solo puedes venir aquí y simplemente
colocarlos gratis. Esto está muy optimizado. No tienes que escribir código. Así que siempre que puedas evitar
escribir todo este código, intenta evitar bucles. Intenta evitar escribir ese código. Entonces si pudiéramos, por ejemplo, evitar escribir este código, nunca lo habría escrito. Pero como ya nos gusta, ya que necesitamos escribir esto, para que funcione,
tenemos que escribirlo. Pero para los eventos de desove, como en lugar de hacer un código de
desove para los enemigos, si solo puedes entrar aquí como si encaja para tu juego. Por supuesto, algunos juegos necesitan código de
desove para que funcione. Pero para este caso,
hemos reemplazado a los enemigos. Ya que hemos
colocado a los enemigos, en realidad
podemos
simplemente tomar y simplemente colocarlos por ahí
donde queramos. Y eso es todo. Entonces realmente no necesitamos codificar nada aquí para
la base enemiga. Entonces, si vuelvo, lo que hicimos
con la base enemiga aquí para la respuesta es que
básicamente estamos escondiendo al enemigo y luego mostrarnos
ayudando al enemigo. Nuevamente. Realmente no estamos eliminando al enemigo
permanentemente del juego. No obstante, recuerda, en tu juego, si estás haciendo
algo personalizado y no seguir completamente
este curso, si quieres
destruir al actor, como eliminarlo por completo
del nivel. Porque si solo lo
alimentas así, si lo desvaneces, estás locos. Al igual que el actor
básicamente sigue ahí. Si sólo voy aquí al enemigo
y pongo la caja de la cabeza
a no escondida en juego. Y en realidad se puede ver
como si juego el juego ahora, le pego
aquí a este enemigo y a un dado. Se puede ver la caja de colisión
sigue escuchando que el enemigo
sigue aquí. Sólo está en desvanecido. Entonces esto está bien
hacer en esta situación porque tenemos como una cantidad
especificada de enemigos. Por ejemplo, solo necesito
cuatro caracoles y mi nivel. Así que solo lo desvanezco y lo
respondo en algún otro lugar. No obstante, si solo
quieres destruirlo por completo desde el nivel
y nunca tener esto ****. Porque si tienes un
estanque desove todavía,
seguirá ejecutando
este código de blueprint y no será optimizado si sigues desovando
enemigos y nunca los eliminas
del nivel. Entonces si quieres
quitarlo por completo, puedes usar este
diciendo Destroy Actor. Destruir actores va
a eliminarlo por completo del juego y se puede
tratar de ver qué hace. Así que si acabo de matar esto aquí y se va
a desvanecer en algún lugar, déjame matar un poco más
y matar a éste también. Así que ya puedes ver que
en realidad son como si estuvieran respondiendo en
otro lugar y después del código de respuesta, están
siendo destruidos. Por lo que ahora se eliminan
completamente del juego. Esto está optimizado porque
entonces no se ejecuta todo este código para
ese enemigo en el juego. No obstante, para este juego, solo
tengo cuatro
enemigos todo el tiempo. Y acabo de desvanecerlo y
responderlo en otro lugar. Entonces me quedo con
estos cuatro enemigos. Nunca he desovar cinco enemigos
ni seis o siete enemigos. Entonces si haces eso, recuerda destruir
al actor. Si no, si
solo estás haciendo esto, solo
puedes responderlo
en otro lugar y el nivel. Por lo que ahora podemos evitar
escribir código para la respuesta aquí para que solo
podamos reemplazarlos. Entonces lo que voy
a empezar a hacer aquí es solo poner esto en uno. Y a veces ves enemigos recortando entre sí. Y esto es porque tienen, todos ellos tienen uno en el y Así que a veces simplemente se
meten el uno al otro. Se recortan así. Se puede ver que hay algún
recorte sucediendo. Y esto se debe a que
tienen el mismo valor y. Entonces, lo que puedes
hacer aquí manualmente, tomará algún tiempo,
pero solo puedes escribir, por ejemplo, uno para éste, el segundo,
voy a escribir 1.1. Y para el tercero, voy a escribir 1.2. Por lo que nunca se van
a recortar el uno al otro. Ya puedes ver que están uno
frente al otro. Nunca van a enganchar.
Y solo puedes hacer eso. Entonces mantén presionado Alt y arrastra para copiar, y éste es 1.3. Y arrastre de nuevo 1 para este 1.51. Entonces algo como esto, y puedes colocarlo aquí arriba, arrástralo de nuevo, 1.6. Así que sólo voy a
tener a estos enemigos. Y aquí arriba por los cerdos, voy a sumar
unos cerdos aquí arriba. Entonces 0 y la y. para la y, en realidad voy
a empezar con uno de nuevo porque el jugador
en realidad no es el jugador. Estas fichas están a 0, así que no quiero que
estén detrás de los azulejos. Es por eso que empecé uno. Y vamos a arrastrarlo de
nuevo y decir 1.1. Y a veces como si
1.1 no es suficiente, solo se
puede decir 1.1.15
o algo así. Entonces 1.2 para esto, 1.31, para éste, siempre
podemos comprobar
si están recortando, podemos aumentar este
tamaño entre ellos. Y para el jugador, el jugador empieza a las dos, por lo que el jugador siempre está
delante de los enemigos. Demos clic en Play. Y vamos a comprobarlo y sólo tratemos de ver si
hay recorte. Permítanme realmente ir a la base
enemiga y desactivar ese juego de colisión o caja de golpe extremo
oculto aquí. Para que pueda verlos con más claridad. Por lo que ahora puedes echarles un
vistazo y ver si alguna vez están
recortando algún día, pasar el uno al otro. Y a veces cuando cortan, solo
puedes aumentar
esos números de separación. Simplemente puedes aumentar
el valor y. Creo que se ve
bien, se ve bien. De nuevo, puedes aumentar
la separación y la y si quieres. Pero esta es una más, esta es una forma más
optimizada de hacerlo. Si puedes salir con la suya con
algo al no programar, en realidad
puedes hacer
eso y será más optimizado. Pero a veces hay que escribir código y realmente no
se puede evitar. Por lo que ahora que hemos colocado a todos los enemigos
en el nivel, vamos a salvar todo y pasemos a
la siguiente lección.
92. Hit, Death & Respawn SFX: Hemos llegado al final y es casi hora del sistema de
nivelación. Y antes de que hagamos eso, en realidad
agreguemos
algunos efectos de sonido y hagamos algo
interesante aquí. Creo que suena mucho mejor si cuando agregas
algunos efectos de sonido. Vamos al audio. Y los he incluido
para ti dentro de los materiales del curso
y los tenemos aquí. Sólo usamos el salto hasta ahora. Por lo que sólo tienes que seleccionar todos ellos
ahora, excepto el salto. Y déjame arrastrarlos a
mi carpeta de audio aquí. Y luego tenemos todos esos. Vamos a hacer clic en archivo y guardar todo. Ahora lo que puedes hacer es que
puedas subir este nivel click derecho y puedes
crear una bola de sonido. Es sonido taco subiendo de nivel. Y lo vamos a
usar más tarde. Puedes hacer click en play para
escuchar cómo suena. Sólo algunas historias, efectos
de sonido. Y para este ataque, puedes hacer clic derecho
y crear alguna Q, llamarlo ataque y hacer lo mismo con
los golpes de ataque, llamarlo ataque, golpes. Haga clic con el botón derecho para el de la
muerte y cree una taca de sonido y
llámalo cola de sonido, profundidad. El salto ya estamos hechos. Entonces yendo y subiendo de nivel. Hicimos este para recoger la muerte, sonido de taco, escoger la muerte. Y hagamos eso también por
la muerte del caracol. Sonido cue Deuda de caracol. Y tenemos una respuesta,
éste responde,
sonido cue, responde. Y veamos si nos
falta algo. Entonces tenemos el texto muerte
ahora, lo tenemos todo ahora. Por lo que también puedes
hacerlo por la música. Tenemos algo de música
llamada sonido cue music, en realidad acaba de
llamarse Tennessee, lo
voy a llamar génesis. Esta es la música. ¿ De acuerdo? Y no voy a conectarlo ahora mismo porque
creo que va a ser molesto cuando estemos depurando el juego y seguimos
tocando la música. Así que voy a mantener
este fuera por ahora. Entonces el primero que podemos hacer es cuando estamos atacando
con el jugador. Entonces vamos al jugador
y vayamos a la base del jugador. Y así para el atacante, estamos haciendo esto aquí. Entonces tenemos el ataque. Estamos pasando por el servidor y recordamos los efectos de sonido. Tienen que pasar ya sea
por el cliente. Entonces si quieres que unos efectos
de sonido solo sean escuchados por ti, quieres
que te guste llamar a un evento personalizado y
ejecutarlo a través del cliente. No obstante, si quieres que el efecto
sonoro sea escuchado por
todos los que te rodean, tienes que hacerlo. En realidad, me olvido de
usar mi atajo aquí para este evento personalizado. Atajo muy rápido. Si quieres hacer que el efecto sonoro
sea escuchado por todos, tienes que ejecutarlo a
través de un multicast. Multicast si todo el mundo
debe escucharlo, alineado, sólo si
debe escucharlo. Creo que todos los clientes
deberían escuchar estos sonidos, así que déjame simplemente hacer eso. Así que déjame hacer un
evento personalizado y llamarlo ataque MC. Y para éste
vamos a decir tocar sonido en el lugar. Por lo que vamos a
tocar el sonido en el lugar donde está atacando el
jugador. Y voy a simplemente
arrastrar estas variables en los eventos y llamarlo ataque
S efectos para que suena, efectos de
sonido y
ubicación está bien. Y ahora vamos a tocarlo. Recuerde, Multicast solo
se puede ejecutar a través del servidor. Para el ataque, tenemos
dos sonidos diferentes. Tenemos 14. Aquí, veamos por el ataque. Y tenemos uno para
el kit de ataque. Así que cada vez que pegues algo, así que vamos, hagámoslo por aquí. Así que aquí estamos comprobando por golpear
realmente a cualquier enemigo. Y si lo estamos, vamos
a jugar al hit. Así que por aquí, permítanme en realidad
simplemente llamar a MC attack. Y empujemos este código un
poco de forma como esta, y siempre
se puede acercar más tarde. Ahí estaban tocando
estos efectos de sonido y va a
tocar este efecto hit. Lo que puedes hacer
para que sea mejor en realidad mantener la
consistencia de este juego, podemos ir a la estructura e información del
jugador y simplemente
agregar variables para información del
jugador y simplemente
agregar variables para
los efectos de ataque
y elegir sonido taco. Para el siguiente,
solo puedes hacer un hit tecnológico efectos S. Entonces tenemos que atacar,
atacar sonidos. Y en realidad hagámoslo
aquí en la base de jugadores, en
lugar de hacerlo por separado
dentro de Luke y Serena, realidad solo lo
hagamos
aquí en la base del jugador porque solo tengo un
sonido para todos los jugadores. Así que déjame ir a la información del jugador. Simplemente póngalos aquí en lugar
de en cada personaje. Ahora solo busco
un golpe de tecnología y ataque. Por lo que sólo todos los personajes tendrán el mismo efecto sonoro. Así que volvamos a
la base de jugadores. Y aquí, ahora podemos
tomar la información de nuestro jugador. Geniales niños, y dejemos simplemente esconder alfileres
desconectados y
simplemente mostrar mi ataque. En realidad un éxito tecnológico para
éste. Y conectado aquí. Entonces, ¿cuál es la ubicación? La ubicación es solo la ubicación de
este jugador. Por lo que obtenemos
ubicación real y conectados. Y siempre que,
en realidad, en lugar de hacer esto, creo que
vamos a conseguir un bug porque esto se está ejecutando en el servidor y el cliente nunca
podrá oír esto. Entonces el servidor cuando
me pegue algo, lo
voy a escuchar, pero creo que
como cliente no van
a escuchar nada. Vamos a intentarlo. En
realidad, no está funcionando, así que en realidad podemos hacer esto. Pero si quieres,
también puedes quizá a veces
creo que es mucho más limpio solo
guardar esto y en realidad solo
pasarlo por aquí en su lugar. Pero en realidad sólo
mantengámoslo así por ahora. Sólo Control Z. sólo
voy a
mantenerlo así. Déjame copiar pegarlo aquí. Si está funcionando, ¿por qué no? Arrastrémoslo aquí
y conectémoslo. Y para éste, en realidad, ¿qué estoy tratando de hacer
por este ataque? En realidad tenemos que pasar por
el retraso aquí, así. De acuerdo, así que aquí abajo, vamos a tocar
el efecto de sonido donde no golpeamos nada. Y aquí abajo, tomemos
esta copia pegada aquí abajo. Y en cambio, podemos
mostrar el ataque, ataca efectos y conseguir la ubicación de los actores aquí abajo
una vez más, así así. Entonces ahora lo que podemos jugar y déjame simplemente
jugarnos a los clientes, sólo para estar seguros. Jugando con nosotros a los clientes.
Ahora están golpeando. Se puede ver. Y si no pego a sí, eso suena bien. Ok. Lo siguiente es que queremos
el caracol y la profundidad del cerdo. Entonces vamos
al enemigo y veamos
dónde jugamos esto. Entonces nos han tenido esto algún daño
corriendo a través del servidor. Entonces va a jugar
este evento de muerte aquí, y en realidad vamos a
añadirlo a eso. Entonces la muerte va a pasar por el servidor y desde el servidor
queremos ejecutar un multicast. Así que déjame poner estos
dos juntos, pero esto abajo y por aquí voy a
hacer evento personalizado llamado MC death y
ejecutarlo en multicast. Aquí. Nuevamente, toca sonido, ubicación M y simplemente
llamarlo muerte enemiga, o simplemente muerte o sin efectos
inmediatos.
Entonces cosas así. El lugar. Y ahora para éste podemos
llamar la muerte multicast. Y para esta muerte multicast, permítanme ahora realmente arrastrar todos estos, siempre tener aquí el problema
espacial. Para éste, por
la muerte enemiga, hagamos realmente lo mismo. Entonces para la estructura, podemos agregar una nueva variable
llamada S Effects. Y hagámoslo
en una pista sonora. Ahorra aquí. Y déjame ir a, ahora déjame ir primero a base
enemiga, compilar y salvar, y luego
ir al enemigo, al cerdo. Y luego tenemos que ir
a los valores predeterminados de clase
al infill animal
y luego hay que
seleccionar el efecto de sonido sordo. Permítanme buscar cerdo
y seleccionar éste. Escoge eso, compilar. Vamos a un caracol. Y el caracol vamos
a usar este caracol, la muerte. Déjame volver a
la base enemiga. Ahora lo que podemos hacer es arrastrar
esta información animal, romper Kids, esconder pines no conectados
y puedo usar éste, la muerte como efectos conectados. ¿ Y dónde está la ubicación? Recuerda que estamos
dentro de cualquier base, por lo que sólo podemos decir
conseguir ubicación de actor porque es donde esté este enemigo, así. Ok, Así que dejemos que los compuestos
ahorren cuando hacemos click en Play y veamos si
funciona. Si muere. Sí, tocando el sonido de la misma. Entonces éste realmente estaba
jugando un par de veces. Eso es gracioso. Es porque
en realidad tenemos que hacerlo aquí como uno, el enemigo está realmente
muerto. Eso fue gracioso. Estaba jugando varias veces. Para que podamos tomar esto
y decir rama. Y sólo cuando el enemigo muere, queremos tocar el sonido, no cuando responde. Así que vamos a hacer clic en
play e intentarlo de nuevo, solo para estar seguros de que funciona. Y en realidad hay un pequeño
bicho mientras estoy probando esto. puede ver que en realidad
funciona mi personaje aquí arriba. Tenemos que arreglar eso. Así que permítanme realmente sólo probar el sonido primero
antes de arreglar algo. Así que déjame quedarme aquí arriba y jugar. Tienen un poco más de salud, así que tengo que intentarlo de nuevo.
Bien, eso funciona también. Impresionante. Entonces el sonido funciona. Tenemos que arreglar ese tema de
carta en un poco. Lo siguiente que queremos hacer es tocar el sonido de la muerte de los jugadores. Entonces yendo a la
base del jugador, yendo a la, cualquier daño, y cuando
el jugador muera, así que aquí en la muerte, cuando
se pone a verdad. Así que volvamos a la
muerte aquí abajo. Me puse a true,
queremos tocar el multicast. Entonces vamos a tirar de esto
aquí para hacer que más espacio llame a una muerte
multicast eventos personalizados. Vamos a ejecutarlo a través
del multicast confiable y luego reproducir
sonido en la ubicación. Así que estamos haciendo
lo mismo de nuevo. Es bueno que la práctica solo
lo haga una y otra vez. Y de repente te
verás a ti mismo y experto en esto. Entonces hagamos la
muerte como efectos. Y para éste de nuevo, tenemos que ir a la
estructura al reproductor a un nuevo sonido llamado efecto de sonido de
muerte. Guardar. Y todos los jugadores tienen
los mismos efectos de sonido. Sólo voy a hacer click en esto y el jugador, información del jugador. Y cambia esto aquí
abajo a la muerte. Y éste. De acuerdo, así que yendo a éste, se establece
la profundidad. Ahora, permítanme realmente sólo
esconder los pines desconectados. Y por aquí
llamémosles muerte multicast. Ahora lo estamos llamando aquí
y ponemos este efecto de texto. Ahora tomemos la información del jugador y déjame hacer un poco más de espacio. Aquí podemos ver break y
Haydn conectó pines y sólo
podemos usar la muerte
como efectos aquí. Y éste, podemos
decir conseguir ubicación de actor. Y déjame realmente arrastrarlo hacia arriba. Hay más espacio con
el que trabajar. Y arrastra todo esto hacia abajo. Así como eso. Así que ahora estamos
tocando el efecto sonoro. Permítanme realmente morir
y probarlo outs. Entonces si acabo de encontrarme con
estas fotos aquí, puedes ver que tienes
este efecto sonoro. Y también ahora necesitamos una
respuesta de efectos de sonido. Así que déjame subir aquí y
echar un vistazo al código. A lo mejor sólo necesitas
ponerlo en la muerte falsa. Así que vamos a echar
un vistazo al código. Entonces cuando estamos
muriendo o no muriendo. Entonces esto ya no es eso. Y retocando esto, y
veamos dónde realmente pusimos la muerte a ser falsa. No recuerdo realmente
dónde lo hicimos. Así que tratemos de
gustar lo que puedes hacer
ahora para encontrar algo. Este es un buen ejemplo de enseñanza. Si me gusta ahora mismo, no recuerden donde
realmente hice lo falso. Puedo hacer clic derecho y
decir encontrar referencias. Y entonces puedo igual que esto es sólo encontrar referencias
dentro de este blueprint, que creo que está
bien porque creo que se usa dentro de aquí. Pero si lo desea,
puede hacer click sobre esto. Encuentra en todos los planos. Eso realmente va a encontrar esta función usada en
todos tus planos. Por lo que en realidad puede hacer
eso para rastrear donde realmente volvió a utilizar
el evento de muerte. Entonces aquí lo encontré en
el Widget Blueprint en nuestra interfaz de usuario principal. Así que hacer doble clic en él aquí
te llevaría al menú I. Y en realidad es aquí donde lo
hicimos, donde hicimos clic, Ok, y decía que la
muerte era falsa. Ahora hagámoslo por
aquí entonces en la muerte. Así que volvamos a
la base de jugadores. Y cuando la deuda es falsa, juguemos la muerte
multicast donde es como si tuviera los efectos sonoros de
respuesta. Entonces lo que podemos hacer aquí es
justo en lugar de hacer que una nueva llamada
multicast responda, solo
podemos usar esta muerte. Así que voy a sacar
esto un poco. Lo que podemos hacer aquí abajo se
llama muerte multicast. Y ahora lo que podemos hacer es
volver a la información del reproductor, hacer una nueva variable llamada efectos de sonido de
respuesta. Y es un sonido que
va a la base enemiga. Ahora, haciendo clic en
la información del reproductor, estableciendo el efecto de sonido para
responder y compilar y guardar. Ahora vamos a ir a la, vamos a ir a abajo aquí realmente
tomar esta información del jugador, romperlo ya sea pin sin conexión. Por lo que voy a usar
el responden. Y entonces solo podemos
conectarlo aquí y volver a obtener ubicación de actor. Y ahora vamos a tocar
el efecto sonoro respuesta. Entonces déjame probarlo, y creo que va a funcionar. Por lo que juega que Santa Fe. Y si hacemos clic en Ok. Y se puede ver que estoy
teniendo esa respuesta y efecto. De acuerdo, Impresionante. Para que trabajar en el cliente y probablemente
va a funcionar también en el servidor porque esto se ejecuta a través del servidor. Entonces estos fueron todos
los efectos sonoros. Si lo desea, también
puede seguir adelante y agregar la música aquí. Éste. Simplemente puedes jugar a
éste y éste
probablemente va a
jugar al cliente de lado. No creo que debas
tocar esto a través un multicast porque
los jugadores están escuchando
naturalmente los
sonidos juntos como si no
estuvieran compartiendo
la misma banda sonora en el mismo segundo. Simplemente juega esto a través de los
clientes y trata de practicar. A lo mejor sólo intenta entrar
ahí y hacer esto usted mismo. Pero sólo voy a hacer
esto probablemente al final de este curso porque es un poco molesto tocar
la música todo el tiempo mientras estoy,
mientras estoy hablando. Así que vamos a hacer clic en
Archivar y Guardar todo. Y pasemos
a la siguiente lección.
93. Cómo arreglar el error de muerte de la escalera: Ahora vamos a arreglar ese error de
escalera que vimos en el video anterior. Entonces aquí en la parte superior. Así que cuando me dañen aquí arriba, me quedaré atascado dentro de,
en realidad vamos a intentarlo de nuevo. Me quedaré atrapado aquí dentro
de esta caja de colisión. Y esto es porque, así que permítanme realmente
cerrar este juego y volver a la base de
jugadores y jugadores. Y la razón de esto está
aquí en nuestros seres ISClient. Entonces cuando nos fijamos está
subiendo a falso, y es que no es cierto. Puedes ver aquí estamos cambiando el tipo de colisión a ****. Y recuerda antes hicimos
este jugador de escalada con el fin de eludir esto, estas cajas de colisión aquí arriba. Y cuando lo cambiamos a es
como tipo de colisión a ****, entonces en realidad nos estamos
quedando atrapados en estas cajas de colisión. Entonces esto es lo
que estamos tratando de hacer. Entonces tenemos que hacer algún poco re, o pequeña reprogramación aquí. Entonces haciendo clic en éste,
déjame esconder este alfiler. De acuerdo, así que para empezar con esto, en realidad
regresemos. Encontré la mejor solución
para hacer esto es ir
a los mapas de teselas y dentro
de los mapas de teselas aquí. Entonces tenemos algo llamado
perspicacia liderada a nivel nacional, minimizamos esto y vamos a la
escalada y escalada basada. Entonces en el cliente que se está haciendo,
hicimos algo llamado caja de colisión
superior. Y aquí ponemos si
puedes subir o no. Y se puede ver esa caja aquí. Esto es, no sé si se puede ver visualmente así
son los bichos en realidad. El anterior de la letra. Esta es la que agregamos, lo
que hace para que no
puedas subir. Para que podamos abarcar el botón Arriba. Cuando estás en la
escalera, si te acuerdas, puedes intentar ver el video de la carta si
no te acuerdas, pero es uno que agregamos. Y en lugar de añadirlo aquí, permítanme realmente hacer otra
cosa. Entonces en el mapa de mosaico
que agregamos, por lo que este actor va
a la viewport, en realidad
hagamos
una caja de colisión alrededor de esta plataforma es que estamos definiendo
esta plataforma. Para ello, vamos a hacer clic
aquí arriba y sumar y buscar colisión en una colisión de caja y llamémoslo
negar, subir. Por lo que estamos negando al jugador
presionando el botón Arriba, por lo que spam la
escalera arriba. Y lo bueno de
hacerlo aquí. Entonces aunque añadamos diez
letras o diez cuerdas, esto va a funcionar
para todas ellas porque es una caja que cubre
todo aquí. La mejor manera de poner esto aquí
es en realidad ahora vamos a la perspectiva y
vamos a hacer clic en la vista correcta y luego
ir al modo Lit aquí arriba. Y podrás
ver esto mucho mejor. Y déjame simplemente
alejar un poco. Vale, entonces esta caja de
colisión aquí, la mejor manera de hacer esto
es que solo tienes que cubrir esta plataforma para que puedas intentar ir con la
x aquí, ¿verdad? Ciento doscientos
trescientos ochenta. Y sólo se puede
tratar de cubrir esta zona. Así que tal vez 375, sólo
un poco más pequeño, algo como esto, o 73 AT solo para asegurarse de
que en realidad es cubre el área
aquí también. Y para la caja de colisión
Y y Z, tal vez sean 35. Creo que ya está
cubriendo mucho de ella. Y sólo trata de cubrir justo
justo por encima de la hierba. No tienes que
enloquecirte con eso. Por lo que voy a
quitar el chasquido. Y al igual que la
línea superior está justo por encima estas cajas de colisión aquí
abajo en la hierba. Vale, entonces creo que eso lo
cubre muy bien. Vamos a compilar y guardar, y vamos
a bajar a esto y haga clic
en esto en el componente
comience a solaparse. Por lo que haga clic aquí y diga que
el actor ha etiquetado. Y de nuevo, digamos
que es el jugador. Dentro de aquí. Tenemos que volver a ejecutarlo
a través de una autoridad. Entonces switch tiene autoridad, asegurándose de que sea el
servidor que lo ejecuta. Hagamos una sucursal. Entonces ahora estamos preguntando,
¿es el jugador? Si lo es, tomemos esto y
digamos consigue referencia de jugador. Y solo queremos
llamar a éste de nuevo. Puede subir. Éste, recuerda
elegir mensaje. Puede subir, por lo que no se puede subir, pero puede subir mensaje. Y siempre que estés
chocando, recuerda, lo que sea que choques con
esta caja acabamos de agregar aquí. No eres capaz de
presionar el botón Arriba, como subir porque entonces de
lo contrario puedes pasar la cuerda. Entonces tomándolo y
poniéndolo a negativo. Entonces eso es correcto. Lo siguiente es hacer clic aquí y hacer clic en la superposición final. Y vamos a copiar pegar este código y conectarlos aquí. Entonces otros actores aquí abajo, otros actores aquí arriba también. Y pongámoslo a verdad. Por lo que ahora puedes subir cuando no
estés dentro de esa caja. De acuerdo, así que ahora
tenemos el código aquí. Entonces vamos a ciegos siendo base. Y en lugar de subir base, vamos a eliminar ahora el código aquí
porque no lo necesitamos. Permítanme borrar en realidad esta
caja por completo. Quitarlo. Te va a dar errores y
eliminar todo esto también. Por lo que ahora movimos el
código a aquí en su lugar. Esto es lo que va
a configurarlo en su lugar. Entonces lo siguiente que
podemos hacer es ir,
vamos a la base de jugadores y echar un vistazo al
cliente siendo código. Entonces el cliente siendo
código estaba aquí arriba. Y dentro del código de
escalada
teníamos éste llamado set. Set puede subir. Esta es la que
acabamos de mudarnos por aquí. Entonces lo que quiero hacer, en realidad déjame volver. ¿ Dónde está aquí? Lo que quiero hacer
aquí es ahora preguntar como hacer rama aquí
y escribir un NO booleano. Entonces si no puedes alinear, lo que significa que realmente estás chocando con esa caja
aquí acabamos de agregar. Entonces si estás chocando con él y también preguntando
si estás subiendo. Así que vamos a llegar es escalar. Y es aquí está escalando. Y escribir un Y booleano. Permítanme en realidad sólo
hacerlo para que te lo pueda explicar mucho mejor. Entonces conectando esto aquí. Entonces, lo que quiero hacer aquí. Entonces si no puedes subir a Bob, lo que significa que estás chocando
con esta caja aquí. Si sólo lo muevo para que en realidad
pueda
tenerlos a todos juntos. Entonces, si estás chocando
con esta caja, significa que esto es falso, como no puedes escalar buck, lo que hace esto cierto aquí. Entonces si no puedes subir
y tus seres cliente, así que aún estás en la escalera. Entonces estás bajo letra, pero también estás
superponiendo esto, lo que significa que estás aquí arriba. Entonces queremos de nuevo recordar
antes de que lo pusiéramos aquí en el ISClient ser también
es para aglutinar jugador. Esto es lo que queremos. Porque cuando estás
subiendo y empiezas a solapar esta caja, quieres desactivar las cajas de colisión
aquí arriba para que puedas subir. Esto es lo que estamos tratando de hacer. Entonces déjame volver
a la Gráfica de Eventos. Permítanme cerrar primero esto y para que sea más fácil para el yo, en realidad
vamos a crear
una enumeración. Entonces aquí, hagamos clic derecho ir
a la enumeración de planos, y llamémoslo
estado de colisión. Entonces para qué voy a usar esta enumeración llamada Estado de
Colisión. Sólo voy a hacer
una lista de dos ítems, misma colisión encendida
y colisión fuera. Muy, muy simple, muy
simple enumeración aquí. Así que sólo para escuchar recuerda, y la enumeración
es sólo una lista de los artículos que quieras. Por este bien, solo queremos que
la colisión entre y se apague. Esta es sólo la lista. Vamos a cerrarlo y
en realidad volvamos a
la base de jugadores aquí. Ahora recuerda, no podemos
solo tomar esta cápsula. Whoops, solo podemos tomar
esta cápsula y decir Establecer
tipo de objeto de colisión y luego configurarlo a
jugador escalador por ejemplo. No podemos hacer eso porque
recuerda que estamos ejecutando esto a través del servidor para que
el cliente tenga un bug. Entonces si hace clic en
Jugar ahora
y tratar de realmente tratar de
ver si esto funciona. Así que jugando como
cliente, puedo subir. Se puede ver que puedo escalar aquí, pero va a molestar a nuestro personaje. Y en lugar de
hacerlo de esta manera, hay
que ejecutarlo a
través de un rep notifique solo para notificar a los clientes
también por estos cambios. Entonces tomemos,
guardemos todo primero y ahora podemos
usar nuestra enumeración. Hagamos una nueva variable. Llamémoslo estados de
colisión. También puedes llamarlo
algo más si quieres. Pero sólo voy a
llamarlo Estado de Colisión. Y estoy cambiando el
tipo variable a estado de colisión E, como sea que lo llamemos aquí
en la enumeración. Entonces E estado de colisión, esto es lo que lo
llamamos aquí afuera. Así que ahora vamos a componer ahorrar. Y voy a hacer que
esta replicación en un rep notifique y luego
desenvuelva la función. Voy a tomar este estado de
colisión y decir encender la enumeración. Entonces lo hemos hecho un
par de veces ahora. Cuando la colisión está encendida, quiero que lleves
mi cápsula y establece tipo de objeto de
colisión
para que sea estanque porque
queremos chocar con
todo como esto. Cuando mis colisiones
de voy a copiar pega esto y ponerlo
a subir siendo jugador. Entonces va a poner
la colisión de plataforma, en realidad todas las
colisiones del suelo. Por lo tanto enumeración muy simple, solo encendiendo y
apagando la colisión. Ahora podemos usar esto muy útil. Para que podamos tomar este
estado de colisión y ponerlo aquí también. Así que ahora pensemos que
en realidad pensé que estábamos haciendo cuando no podemos subir, lo que significa que estamos chocando
con esa caja de aquí arriba. Y estamos subiendo. Significa que queremos apagar
la colisión porque estamos subiendo y queremos
eludir esa plataforma. No obstante, si no estamos golpeando esa caja aquí o si no
estamos subiendo, entonces queremos encender la colisión porque tal vez
si no estamos subiendo, pesar de que estamos
tocando esta caja, si no estamos subiendo,
tal vez estamos parados encima de aquí y entonces no
queremos apagar la colisión, lo contrario caerá
por el suelo. Por lo que queremos encender
la colisión si no
estamos subiendo o si no
estamos tocando. Esta caja de aquí arriba, significa que estamos aquí abajo
y entonces realmente queremos que nuestro terreno esté encendido.
Entonces esto es correcto. Ahora, otra cosa es, quiero decir, puedes intentar
tocarla y ver qué pasa. Así que tocarlo aquí. Puedo subir aquí. Y si me golpean, se puede
ver que todavía me estoy atascado. Y el problema está aquí en la función de desenvolver
colombiana. Recuerda que teníamos todos estos. En realidad voy a
eliminar todos ellos. Y voy a volver a conectar
los pines como antes. Porque en realidad ya no los
necesitamos. Y solo puedes acercar
todos estos. De acuerdo, así que vamos a compilar y guardar, y vamos a tratar de jugar ahora. A ver si funciona. Ahora puedo ver, puedo escalar y estoy jugando como
cliente en este momento. Para que pueda hacer esto. El otro bicho en este momento
es que no puedo bajar. Estoy tratando de
bajar, pero no puedo. Pero se puede ver que funcionó
la muerte. Todo está funcionando. El problema en este momento es
como si estuviera funcionando en este momento. Y si salto
al suelo, puedo volver a caminar. Si salto aquí,
puedo volver a caminar. El problema es que no
puedo bajar. Entonces tenemos que arreglar esto. Por lo que tenemos que ir
al Gráfico de Eventos. Y el problema está por aquí. Así que puede subir se establece para ser cierto cuando puedes subir y
estás tratando de subir hacia abajo. Entonces esto es lo que, recuerda, hicimos este temporizador
donde comprobamos si el jugador está
tratando de bajar. Y sí, cuando subes, pero realmente no hemos
apagado la colisión. Así que déjame copiar
pegue esto aquí arriba. Entonces aquí en el temporizador. Así que cuando realmente
empiezas a escalar, por lo que está de sujeción fijado a verdadero. Quiero apagar mi colisión. Y aquí arriba cuando cancelamos
el ser ISClient. Así que cuando
termines de escalar, en realidad
puedo poner
esto para que vuelva a estar encendido. Entonces configurándolo aquí también. Por lo que ahora todos los problemas deben solucionarse si lo
hemos hecho correctamente. Así que intentemos de nuevo. Puedo escalar, puedo caminar, también puedo
bajar. Todo está funcionando
y si muero aquí arriba, sólo
me empujan. Eso funciona también.
Y si muero, eso funciona también. Entonces creo que es una forma más fácil manejar la colisión y tratemos de ser
derribados aquí. Eso funciona también. Puedo aguantar y también
puedo morir aquí arriba. Sí, eso funciona también. De acuerdo, Entonces esta es una manera
fácil de hacerlo, solo hacer una enumeración
con la colisión
encendida y apagada y luego
cambiarla a un rep notifique. Y así en la función de notificar, solo
estás poniendo y apagando la
colisión
dependiendo de lo que lo
estés configurando aquí. Y recuerda el encendido o
el rep notificar variables. Sólo se puede establecer avisos a
través de un servidor. Los eventos pueden afirmar que es suficiente. Porque recuerda, no puedes simplemente entrar aquí y
configurarlo a través de éste. Tienes que estar en el servidor antes de poder establecer funciones
no leídas. Entonces muy, muy importante y esto es lo que estamos
haciendo para comprobar siempre si es el servidor por el
que estás
corriendo y si lo
es, Eso es correcto. Sí. Eso fue todo por esto fijo. Y pasemos
a la siguiente.
94. Agregar experiencia a las estructuras: Creemos ahora
nuestro sistema de nivelación. Entonces primero, lo que necesitamos para
la nivelación está aquí en la estructura y la información
enemiga o información animal, tenemos que dar
experiencia a los enemigos porque
obviamente
todos, cada enemigo va a dar algunos especie de experiencia y habrá diferentes el uno
del otro. Entonces escribiendo experiencia aquí en la estructura y
cambiándola a un entero. Como puedes, puedes
ponerlo en un flotador. Pero la experiencia, yo quiero, realmente no tienes una coma, así que no tienes
decimales. Y por lo tanto
realmente no necesitamos un flotador. Entonces estos son números enteros. Y me gustaría
si tienes un juego con algo
dando, por ejemplo, 20.5 experimentado de lo que
tendrías que ponerlo en un flotador. De lo contrario sólo voy
con un entero porque estos son sólo
números enteros que estoy haciendo. Y por la experiencia, en realidad
voy a
ponerlo justo debajo del daño. Entonces éste va a especificar cuánta experiencia va a dar
todo animal. Entonces vamos ahora al enemigo
aquí y luego nos basamos. Recordemos compilar
y ahorrar como justo antes. Y vamos al cerdo y abramos el editor de
planos completo. Y dentro de aquí por la
experiencia para el cerdo, vamos, por ejemplo, conseguir, digamos 20 experiencia
cada vez que matamos a un cerdo. Para el caracol, cada
vez que matamos a un caracol, vamos a conseguir, por ejemplo,
diez compuestos de experiencia. Guardar. Whoops. De acuerdo, Así que eso se
hace por el animal, la estructura para los animales. Ahora vamos a entrar en el jugador. El jugador
necesitará dos variables. Entonces primero necesitamos un nivel. Entonces, ¿cuál es tu nivel actualmente? Y pongamos eso
en un entero. Estos son números enteros. Y hagamos también experiencia. Entonces, ¿cuánta experiencia
tienes en este momento? Y esto también es un entero. Vamos a poner estos. pondré justo debajo
del daño base aquí arriba. De acuerdo, así que vamos a salvar eso. Y lo último. Entonces en este momento, déjame
realmente primero ir a la
base del jugador y jugador y Compile y Save. Y aquí en las propiedades y
la estructura de información del jugador, el nivel como predeterminado, vas a empezar con uno. Así que recuerda, no estás
empezando por el nivel 0, estás empezando por el nivel uno. Así que recuerda escribir eso
aquí como experiencia extranjera. Estaremos actualizando eso más tarde, así que no te preocupes por eso. Vamos a cerrarlo. Entonces lo último
que hay que definir cuánta experiencia
necesitas por nivel. Por lo que un poco tienes
como necesitas una lista de qué experiencia se
necesita para qué nivel. Entonces necesitamos eso para realmente
hacer una nueva estructura. Vamos a hacer clic derecho y vamos a los planos y
crear una nueva estructura. Y éste, lo voy
a llamar info de nivel. Por lo que contiene información sobre qué experiencia
necesitamos para cada nivel. Por lo que se necesita sólo dos variables. Necesitamos el nivel. Y esto va
a ser un entero. Y a éste se
le llama experiencia. Entonces, ¿cuánta
experiencia se necesita? Y esto va a
ser un entero también. Entonces a dos
cosas muy básicas, ¿cuál es el nivel? Y en lugar de experiencia, solo
podemos llamarlo
experiencia requerida. Por lo que es más nivel explicativo y experiencia
requerida para subir de nivel. Vamos a cerrarlo. para
poder trabajar con
esta estructura, en realidad
tenemos que
trabajar con tablas de datos. Mesas. Vamos a trabajar con los de la siguiente lección. Así que sigamos adelante.
95. Introducción a las tablas de datos: Ahora que tenemos esta estructura de información de
nivel, empecemos a trabajar con tablas de
datos y
son tan útiles, verás que son agradables de
usar y también son muy fáciles, no, no realmente un
complejo concepto. Vamos a la carpeta,
creamos una nueva carpeta, lo
llamamos tablas de datos, y tenemos todas nuestras tablas de
datos aquí. En este momento sólo
vamos a tener uno, pero me gustaba estar estructurado. Y ahora puedes hacer clic derecho
aquí y miscelánea. Y aquí puedes seleccionar Tabla de
datos, ésta. Ahora te pide ¿ qué estructura
debo hacer una tabla de datos? Y luego hay que
especificar la estructura. Y el uno es este nivel info
que hicimos clicando. De acuerdo, y llamémoslo
d t para tablas de datos. Y también
lo voy a llamar info de nivel. Y haz doble clic en él. Y aquí estamos dentro
de un DataTable. Ahora necesitas un nuevo valor, por lo que tienes que hacer click
en Agregar aquí. Ahora para agregar algún valor. Este valor te da una fila
y luego puedes ver las,
las variables que creaste dentro de la estructura de
información de nivel. Entonces cada vez que añadas una nueva
variable en tu estructura, estará aquí en
esta tabla de datos. Entonces, lo que es esta tabla de datos, solo
puedes imaginarla igual que un documento Excel Excel
donde tienes, por
ejemplo, el nivel
y la experiencia que se requieren. Y luego solo haces más
filas y las define. Para la primera
en lugar de nueva fila, solo
voy a
renombrarla a una. Por lo que haciendo click en F2 para cambiar el nombre
y dar click en uno, también
podemos
hacer clic derecho y dar click en Cambiar nombre. Eso depende de ti. Entonces aquí empezamos en el nivel
uno, obviamente no 0. Por lo que aquí hay que escribir cuánta experiencia se
requiere para subir de nivel hasta dos. Por lo que 50 experiencia para subir de
nivel hasta dos. Y luego déjame añadir un nuevo valor y que la fila a la que
sólo voy a llamar dos. Y esto es muy importante. En realidad
vamos a usar esos, así que asegúrate de
llamarlos 1234 y así sucesivamente. Entonces para éste, en el nivel dos, se necesita 75 experimentado
el Love Lab. Y este
voy a llamar a tres. En el nivel tres,
necesitas 100 para subir de nivel, y solo hagamos cinco. Entonces a las cuatro, necesitas 125 y esto es
para adecuado para necesitas ciento veinticinco. Y en el nivel cinco
y nivel cinco, necesitas 150 para subir de nivel. Por lo que sólo podemos definir cuánta experiencia
necesitas para subir de nivel. Y obviamente, aquí es
donde entra el diseño de juegos. Tienes que equilibrar
todos estos números. Así que ahora vamos a cerrarlo y esto fue todo para las tablas de datos. Para que puedas seguir adelante
y guardar todo. Y pasemos
a la siguiente lección.
96. Tablas de datos a través de Google Sheets: Entonces,
lo bueno de las tablas de datos, realmente no
tienes que hacer
esto manualmente todo el tiempo, como crear todas estas filas. A veces tienes, por
ejemplo, si, digamos que tienes
artículos apenas en cuento divertido, el juego que lanzé en Steam. Entonces en cola de granja, tengo como todos los artículos
que puedes comprar de la tienda, en realidad los tengo
dentro de una tabla de datos. Y esto tomará tanto
tiempo hacer porque si tienes como diez o 20 variables
por cada ítem, va a llevar una eternidad. Y es por eso que usar
Google Sheets es en realidad mucho más rápido y
yo recomendaría eso. Entonces aquí en Google, como si haces
una cuenta y
entras aquí y vas a la unidad. Entonces aquí en el seco, solo
puedes hacer clic derecho y
hacer un nuevo Google Sheets. Y dentro de esta hoja de
Google ahora, puedo echar un
vistazo a mi tabla de datos. Así que si solo minimizas, si no recuerdas
la estructura, solo
regresas
a la estructura, echa un vistazo a ella, y luego solo tienes que
escribir los nombres aquí. Entonces por ejemplo, si
vuelvo en mi hoja de Google, tienes que escribir
el nombre exacto héroe, también con las mayúsculas. Entonces por ejemplo,
puedo decir, vamos, por lo general
empiezo con el número de
fila y en realidad justo Aquí.
Sólo intentemos eso. Entonces este número aquí, y en realidad voy a simplemente cambiar de estilo aquí solo para que se
vea mucho mejor, sólo por mi propio bien. Y aquí arriba va a ser audaz. ¿ De acuerdo? Por lo que aquí arriba tenemos el primer nivel de dicho
variable variable. Y el siguiente es decir que se requiere
experiencia. Va a hacer esto más grande. Entonces algo como esto. Esta podría ser mi,
mi hoja de Google. Ahora, esta es mi tabla de datos. Entonces en la fila en el número uno. Entonces tenemos nivel uno y
esto realmente no importa. Yo sólo los hago como números de fila. Entonces en el nivel 23, y se puede ver que es mucho más rápido porque solo
puedo arrastrar así. Así que ahora se pone todo eso. Y si eres nuevo
en Google Sheets, puedes ver un
tutorial en YouTube. Tomará dos minutos. Entonces seleccionando estos
números, por ejemplo, puedo arrastrar hacia abajo y tener
los enumerados automáticamente. Y la experiencia
requerida, solo puedo decir, por ejemplo, empezamos con
50 y luego puedo decir 75. Y creo que puede
hacerlo de forma automática. Déjame intentarlo. Puede hacer eso
automáticamente también. Ve que estás agregando 25 encima de él y simplemente
hace eso automáticamente. Se puede ver que esto
es mucho más rápido que entrar e ingresar
cada número por aquí abajo. Esto lo hace
automáticamente para mí. Y hasta puedes hacer
fórmulas en Excel para equilibrar tu juego para
que no tengas
que ingresar cada
número manualmente. Pero obviamente tenemos que probar el juego para asegurarnos de que funcione. Ahora, digamos que esta
hoja de Google estaba bien y buena. Y ahora lo que voy
a hacer es dar click en Archivo, ir a descargar e
ir a descargar como CSV, CSV muy importante. Pero ahora se va a descargar. Este es mi archivo descargado, así que ahora puedo renombrarlo. Y a lo que hay que
cambiar es este mismo nombre
que las tablas de datos. Entonces si voy a aquí, se llama DT level info. Así que solo asegúrate de
tener exactamente el mismo nombre, información de nivel
DT con
las letras mayúsculas. Voy a arrastrarlo y soltarlo aquí en esta tabla de datos. Y en realidad, creo que necesito, en realidad no necesito hacerlo, pero si no lo tenías, así que puedes ver si haces
doble clic en él, puedes ver que obtienes
todas estas entradas. Muy, muy agradable. Lo hizo de
forma automática y
en realidad ahora puede usar
esta información. Y puedo ver que es
mucho más rápido de hacer. Ahora lo que dije antes, en realidad también
podemos eliminarlo. Entonces si no tienes nada, si aún no lo lograste
y tienes la estructura, déjame guardar todo primero. Entonces yendo a esas tablas de datos, en realidad
puedes simplemente
arrastrarlo aquí. Entonces te va a preguntar,
estás importando
esta tabla de datos, tipo de fila de tabla de
datos. Entonces hay que seleccionar la información de
nivel aquí, la de. Y sólo voy a
decir ignorar campos extra. A veces sí tengo
campos extra para calcular mi fórmula. Por lo que solo debería
ignorar campos extra. Y los campos extra son igual que
si solo mira tu, a tus variables aquí arriba. Si tienes algo, como si tienes otra
variable que en realidad no existe en tu estructura, esto será ignorado. Entonces esto es lo que significa. E ignorar los campos que faltan. En realidad, no quiero, porque ¿y si nos
falta algo? Y el campo Importar Clave
es solo nuestros números aquí. Así que permítanme tratar de hacer eso. Entonces nuestro número aquí
es mi clave de entrada, y verás para qué se usa esta
clave más adelante. Entonces haciendo esto, y
vamos a tratar de hacer esto. A lo mejor no puede, tal vez
puede a veces en bichos fuera. Entonces vamos a aplicar y hacer doble clic. Ahora podemos ver que funciona. Por lo que ahora se pueden ver
todas estas entradas. Y se ve impresionante. Así que ahora vamos a salvar todo. Y yo recomendaría
usar Google Sheets cada vez que hagas un juego
y haces un proyecto, es mucho más rápido de usar. Probablemente puedas
optimizar estos números. Tal vez realmente no necesitas
este nombre de fila y
te puede gustar el campo clave de entrada. Simplemente puedes escribir
este nivel aquí. Y puedes hacer eso solo para minimizar todas estas filas aquí. Pero ahora esto está funcionando. Pasemos a la siguiente.
97. Crea una biblioteca de funciones: Muy bien, entonces
lo siguiente que tenemos que hacer para usar esta
tabla de datos en nuestro código, necesitamos hacerlo a
través de una biblioteca. Y esto es algo que no
hemos aprendido antes, pero es muy fácil. No te preocupes. Vamos a hacer clic derecho ahora. Y hagamos una nueva
carpeta y la voy a llamar bibliotecas. Esta es la última
cosa nueva que vamos a aprender aquí. Así que vamos adentro de
aquí y haga clic derecho. Y aquí en la pestaña blueprints, tienes algo llamado biblioteca
de funciones. Entonces, hasta ahora hemos aprendido
sobre las clases de planos. Hemos aprendido sobre
las estructuras, hemos aprendido
sobre las enumeraciones. Hemos aprendido sobre
Blueprint Interfaces, y ahora vamos a hacer una biblioteca de funciones de
blueprint. Para que puedan ver que hemos
pasado por todos estos. Y ésta también es una
biblioteca macro biblioteca. Tan muy similar. Pero vamos a preocuparnos por
la biblioteca de funciones por ahora. Entonces vamos a hacer clic en él. Y sólo voy a llamarlo biblioteca de
funciones,
así así. Déjame entrar aquí y decir ahora la función que queremos hacer se llama
obtiene información de nivel. Entonces estamos tratando de obtener
esa información
de nivel de esa tabla de datos aquí que
estamos tratando de extraer. Entonces esto es lo que estamos haciendo
en la biblioteca de funciones. Estamos tratando de extraer
información de esta tabla de datos y
podemos usarla en nuestro código. Entonces aquí, obtén información de nivel. Voy a hacerlo puro. Y recuerda cuando
hacemos algo a puro, es como convertirlos en
estas función verde. Entonces si voy a la base de jugadores sólo para
que puedas ver un ejemplo, y si solo miro a tu alrededor, por
ejemplo, esto consigue el control. La rotación es una
función pura y esta, la azul, es una función
insegura. Entonces la función pura, no
tienes estos pines de ejecución porque realmente no los necesitas aquí. Recuerda, siempre que solo
necesites obtener información, realmente no
necesitas corrales de ejecución. Los pines de ejecución son solo
para establecer información. Entonces, por ejemplo, estás
configurando la entrada de movimiento, estás configurando la x es
el valor z en este caso. Pero aquí solo estás consiguiendo,
consigue la rotación de control. Obtener un vector es sólo
obtener información. Realmente no es necesario
establecer nueva información. Aquí,
información a nivel de puerta que estoy recibiendo. Voy a ponerlo en puro. Y la entrada
va a extraer de cualquier
entrada clave que pongas aquí. Entonces la entrada clave
es solo un número. Entonces voy a hacer un nuevo input y
va a ser un entero. Y lo voy a llamar nivel. Entonces está tratando de ver. Lo que voy a hacer
aquí es en la base de jugadores, va a echar un
vistazo a la información del jugador, echar un vistazo a qué
nivel eres. Y desde ese nivel, como se puede ver el número uno. A partir de ese nivel, te
va a decir qué experiencia se requiere
para subir de nivel hasta dos. Entonces esto es lo
que estamos tratando de hacer. Entonces lo que este nivel
y lo que necesitamos usar se llama Get Data Table. Obtener fila de tabla de datos. Estamos tratando de sacar una
fila específica de este nivel. Entonces si somos nivel cuatro, va a ir a cuatro. Y entonces va a
conseguir que una fila de mesa y utilizar esta información 125
en la experiencia requerida. Entonces intentemos hacer eso. No podemos simplemente
conectarlo así, pero podemos decir dos cuerdas. Entonces lo estamos convirtiendo
en una cadena primero, y luego puede hacerlo. Entonces primero convertirlo una cadena y luego
convertirla a un nombre. Y luego entrando de
aquí, conectémoslo. Y la tabla de datos de la
que queremos extraer, sólo
tenemos una. Entonces seleccionándolo aquí. Y luego vamos a conducir desde
aquí y digamos que regresen. Y agregamos un nodo de retorno. Y esta es la información
ahora esta es la tabla. Ahora sabe como si
estamos en el nivel cuatro, nariz aquí afuera en la información de
que somos nivel cuatro. Y necesitamos tanta
experiencia para subir de nivel. Aquí. Vamos a llamarlo
conjunto de información de nivel de superación de la información de nivel. ¿ De acuerdo? Y lo bueno de las
bibliotecas que puedes en realidad, estas son funciones globales. Puedes llamarlos a cualquier lugar. Si acabo de ir en mi base de
jugadores ahora y solo digo aún información de nivel,
puedes verla. Está aquí desde la biblioteca de
funciones, por lo que es una función global
que puedes usar en cualquier lugar. Y podrías, podrías preguntarte, ¿por qué no solo codificamos todo o muchas
cosas dentro de aquí? En realidad es
caro hacer esto. He leído mucho al respecto. Y algunas personas en realidad
un rezago sus juegos. Si tienes esta función
biblioteca es muy pesada. Su juego está rezagado. Por lo que parece que esto es
muy, muy pesado de usar si
tienes demasiado, pero en casos como este donde realmente
necesitamos usarlo. Y a veces como para lo que necesitas usar esto
es solo tienes que pensar, hay una función
que tengo que usar en 50 blueprints están en cinco
planos todo el tiempo, entonces probablemente deberías ir en y hacerlo
aquí, por ejemplo, conseguir la información de nivel, podemos usar eso en nuestro
controlador de jugador, en nuestra interfaz de usuario, en nuestro controlador de jugador
o no como controlar la base del jugador y la base
enemiga y así on. Entonces podemos usarlo en muchos, muchos lugares y probablemente sea una buena idea hacerlo aquí en lugar de un blueprint específico. De acuerdo, para que puedas ver aquí solo
puedo decir información
a nivel de puertas, y ahora tenemos que enchufar algo aquí para que podamos enchufar
esta información de jugador, por
ejemplo, solo puedo
mostrarte muy rápido. Entonces por ejemplo, podemos tomar a los jugadores nivel actual
y podemos conectarlo aquí. Y ahora por ejemplo, si
el jugador es de nivel tres, va a extraer
esta fila número tres, y sabe que necesitas. Ahora puedes
tomarlo desde aquí y romperlo y
conoce tu nivel tres. Y necesitas aquí, necesitas 100 experimentados
para subir de nivel. Así que
método muy, muy cool para hacerlo en. Entonces tenemos, si solo lo
explico muy rápido. Entonces hiciste una
estructura aquí llamada info de
nivel e
hiciste estas variables. Y después de eso,
acabamos de entrar en Google Sheets e
hicimos esto aquí. Ahora puedes arrastrar esta información y soltarla en esta tabla de datos. Yo sólo aquí en
el Navegador de Contenido. Y luego hay que seleccionar para qué estructura estas tablas de
datos. Y lo hicimos. Por lo que sólo crea esto para nosotros. Entonces sigue adelante y vas a la biblioteca de funciones
y crea ésta, obtienes fila de tabla de datos. Entonces seleccionas qué tabla de datos y cuál es el nombre de la fila? Su propio nombre son
sólo números aquí. Al igual que si editas el
nombre de la fila para hola por ejemplo, no sabrá como
si eres un Nivel uno, no sabrá qué
es esto porque tu nombre de
fila es hola. No es un número, pero lo
tenemos como números. Y va a saber
que por ejemplo, si tu nivel tres, va a sacar esta información
y esta información, realidad
podemos llamarla
aquí y usarla en cualquier lugar. Así que guardemos todo y pasemos
a la siguiente.
98. Cómo agregar experiencia sobre la muerte enemiga: Hola y bienvenidos de vuelta. Por lo que ahora vamos a agregar experiencia cuando
el animal muera. Y aquí estoy en
la base de jugadores. Y primero tenemos que
crear un evento llamado experiencia
publicitaria porque
queremos agregar experiencia
al jugador. Por lo que queremos
limpiar esto un poco más tarde, pero vamos a añadirlo
aquí donde hay espacio. Vamos a seguir adelante y
hacer un evento personalizado. Y hagamos eso a través la función Blueprint
Interface. Entonces vamos a las interfaces, a la base del jugador, y hagamos una nueva función
llamada add experience. Y aquí la entrada es
justa, solo el entero porque
es sólo la experiencia. Y llamémoslo
experimentado para sumar. Vamos a compilar y ahorrar, y volvamos
a la base de jugadores y guardemos todo aquí. Ahora vamos a hacer clic derecho
y llamar a la experiencia publicitaria. Y éste, de nuevo, hagamos uno corriendo
a través del servidor llamado experiencia publicitaria para asegurarnos de que el cliente no
esté engañando. Hagámoslo a través del
servidor siendo confiables. Y llamémoslo aquí arriba, experiencia de AD
del servidor. Ahora de nuevo, necesitamos un entero
llamado experiencia para agregar. Y vamos a conectarlos aquí arriba. De acuerdo, entonces tenemos este
evento aquí y
realmente no tenemos nada que
ver con él en este momento. Pero la cosa es
que cuando matas a un enemigo, tienes que enchufar la
cantidad de experiencia que tienes que añadir
para los enemigos hábiles
o asesinados. Así que vamos a ir
al enemigo ahora. Entonces dentro de la base
enemiga y enemiga, dentro de aquí, encontremos
donde matamos al enemigo. Entonces matamos al enemigo. Este es el cualquier daño. Y así que aquí estamos comprobando
si la salud es 0. Y si es así, vamos a
seguir adelante y ponerlo a la muerte. Entonces antes de que hagamos eso, entonces aquí es donde
matamos al enemigo. Estamos seguros de que el nombre está muerto. Entonces aquí en realidad
voy a llamar a mi anuncio para experimentar evento aquí
y la base de jugadores. Entonces para conseguir el jugador, ya
tenemos un controlador de
jugador. Podemos decir que consigue peón controlado. Y entonces podemos decir Get layer reference porque estamos tratando de hacer referencia a
la base del jugador. Y conectémoslo. Whoops, vamos a conectarlo. Así como esto. Puede que en realidad sólo tire aquí arriba en su lugar. De acuerdo, entonces tenemos esto ahora
y ahora podemos arrastrar de esto y decir agregar experiencia. Y es un mensaje porque es
de una función Blueprint
Interface. ¿ Y cuánta experiencia
quieres agregar? Recuerda, hicimos en
la estructura animal, ya
hicimos esto, para que podamos romperlo aquí. Vamos a esconderlo todo por ahora, y vamos a hacer click y
hacer clic en esta experiencia porque ya configuramos cuánta experiencia
cada regalo animal. Por lo que ahora solo queremos
dar esa experiencia que el enemigo dará en un dado. Así que sólo moviéndola aquí. Y luego vamos a
seguir con nuestro código. Voy a moverlo un
poco hacia arriba, así como esto. De acuerdo, entonces ahora estamos agregando
experiencia cuando el enemigo es asesinado y la
experiencia va a pasar a la base de
jugadores aquí. Y va a
pasar por aquí. Por lo que ahora que
tenemos esto creado, estamos listos para actualizar la
experiencia para el jugador.
99. Actualización de la experiencia: De acuerdo, así que vamos ahora adelante y actualicemos la experiencia
para el jugador. Por lo que ahora tenemos la experiencia, cuánto da el enemigo, y va a pasar por
estos eventos de experiencia publicitaria. Ahora aquí en el servidor, ya
estamos listos para
actualizar esta información del jugador. Así que tomemos la
información de este jugador y vamos a descomponerla. Ahora, vamos a esconderlo todo y solo tomemos esta
experiencia que hicimos. Entonces esta es la cantidad de experiencia
que tiene el jugador en este momento. Y obviamente se empieza con 0. Así que tomemos esta experiencia
que has ganado y digamos plus y agréguala con la experiencia actual
que tienes. Entonces si tienes 0 y
el cerdo te da 20, ahora
tendrás 20
porque los has sumado juntos y este
es el nuevo valor. Así que pongámoslo aquí al
nuevo valor para que se actualice. Entonces tomemos esta información. Digamos miembros establecidos, y vamos a conectarlo aquí arriba. Ahora lo que podemos hacer con
esto es en realidad
arrastrarlo hacia abajo así
y llevarlo hacia arriba. Y ahora, qué,
¿qué quieres establecer? Queremos establecer la experiencia, y esta es la experiencia a la que
queremos configurarla. Este es el número actualizado. Y luego recuerda tomar la información de
este jugador
y ponerla aquí. Por lo que ahora has actualizado cuánta experiencia
tiene tu jugador a través de la estructura. Entonces esto es en realidad
tan simple como esto. Ahora tienes la experiencia
actualizada, como cuánta
experiencia tienes. Y obviamente no se
va a actualizar en la interfaz de usuario porque aún no hemos
creado una interfaz de usuario. Pero puedes imprimir una cadena de
nuevo y ver si esto es correcto. Para que puedas romper esto de
nuevo y esconderlo todo, tomar la experiencia y siempre
puedes imprimirla la pantalla para ver el nuevo valor para
que puedas hacer click en play. Y aquí puedo golpear a los enemigos. El servidor va
a decir diez ahora. Y si mato al segundo, va a decir 20 porque cada caracol da
diez experiencias. Si 3040 porque
acaba de matar también. Para que puedas ver que esto está
funcionando perfectamente ahora. Por lo que ahora que las experiencias
de lo incorrectamente, vamos a ver cómo podemos
actualizar el nivel también.
100. Actualización del nivel: Ahora estamos listos para actualizar
el nivel para el jugador. Por eso espero que estés totalmente
despierto para esta lección. Hay algunas matemáticas
que tenemos que hacer, realidad
no demasiado complejas, pero sólo tenemos que
estar completamente despiertos y
saber lo que estamos haciendo. Por lo que ahora que hemos actualizado la cantidad de
experiencia que tiene el jugador, ahora
estamos listos para comprobar si el jugador ha superado esa experiencia
necesaria para subir de nivel. Así que recuerda que hicimos
este llamado obtiene información de nivel previamente. Y a partir de eso, podemos romper
esto y podemos tratar ver si el jugador tiene esta experiencia
requerida requerida. Y tenemos que especificar qué nivel es el
jugador actualmente. Y podemos hacer esto
haciendo clic aquí arriba, y vamos a hacer este nivel aquí. Entonces empezamos por el nivel uno
como predeterminado y déjame simplemente arrastrarlo aquí
y hacer esto aquí. Entonces tratando de ver como aquí nosotros, estamos escribiendo uno porque el jugador es el nivel
uno y va a pasar por esta tabla de
datos y
sabe que necesitamos
50 experiencia. Por lo que esto va a decir 50 aquí en la experiencia requerida. Entonces lo que vamos a hacer es
que vamos a tomar esto, y en realidad vamos a tomar
esta experiencia primero. Tomemos esto aquí y digamos, ¿es mayor o igual? ¿ Es mayor o igual que
la experiencia requerida? Y hagamos una rama aquí arriba. Y vamos a
conectarlo. Entonces por ejemplo, mato a alguien y
digamos que tengo 200 de experiencia y se
requieren es tal vez sólo 150. Por lo que sólo estoy preguntando, es 200 mayor o igual que
lo requerido con esto, que es doscientos
ciento cincuenta. Es decir, tenemos que subir
de nivel al jugador. Si no es así, no
hacemos nada. Así que tal vez solo actualicemos la interfaz de usuario o lo que sea que
estemos tratando de hacer. Voy a ocultar esto aquí. Entonces esto es lo
que vamos a hacer. Entonces, si es cierto,
vamos a nivelar al jugador. Es falso. No estamos haciendo nada excepto por tal vez
actualizar la interfaz de usuario, que vamos a hacer más adelante. De acuerdo, entonces para
nivelar al jugador, digamos que es cierto. Tienes más experiencia que
su experiencia requerida. Entonces tienes que, tomemos esta información del jugador. Y primero tomemos
esta experiencia. Entonces digamos que tenemos 200. Vamos a restarlo. Restarlo de la
experiencia requerida. Entonces digamos que tienes
200 restados por 150, lo cual se requiere tal vez. Por lo que eso te da 50 izquierda
con experiencia. Entonces primero tenemos
que restar esa experiencia y después
amar, amar al jugador. Así que vamos, intentemos hacer algunas notas redireccionadas para que
se vea un poco mejor. Y en realidad en lugar de
hacer esto desde aquí, sólo para hacerlo más limpio, no
me gusta el aspecto de esto. Podemos simplemente empujar este
poco más lejos y romper esto y
decir la experiencia, porque ahora está actualizada. Así que toma la
experiencia desde aquí. Y ahora podemos decir
esto aquí. Esta experiencia restó
a la experiencia necesaria. Y podemos llevarlo aquí y
colocarlo abajo como aquí. Y en lugar de este
nivel a partir de aquí, podemos simplemente ocultar esto de nuevo, sólo para que se vea mejor. En realidad podemos simplemente
tomarlo de aquí solo para que no estén demasiado
lejos el uno del otro. Y déjame conectarlo. Vale, entonces algo como esto, voy a arrastrar
esto para que se vea
un poco mejor. Arrastra esto puede estar abajo para que no
choquen entre sí. Vale, algo como esto aquí. Entonces estamos preguntando, ¿es esta experiencia que
tenemos en este momento, es más grande o igual que
la experiencia requerida? Si eso es cierto, estamos tomando la experiencia y la estamos restando de la experiencia
requerida. Así que tal vez 200 menos 1 quinto. Nos
quedan 50 experimentados, por ejemplo. Y ahora tenemos que establecer
la nueva experiencia. Por lo que vamos a tomar
la información del divisor nuevo y decir miembros del set y queremos establecer la
experiencia a este número 50, tal vez eso es lo que es
el número. Y después tenemos que
subir de nivel al jugador porque el jugador ha superado
la cantidad requerida. Así que en realidad hagamos
doble clic aquí y hagamos una nota de redireccionamiento para que eso se
vea aún mejor. Algo como esto.
De acuerdo, y aquí ya
hemos actualizado
la nueva experiencia y vamos a establecer primero la
estructura. Ahora que hemos
establecido la estructura, podemos descomponerla aquí abajo
y podemos esconderlo todo. Y podríamos tomar el
nivel y decir plus, plus, plus, plus, plus medios. Ya lo puedes ver. Agregue uno
al valor especificado, luego configúrelo así. Esto significa que esto es lo
mismo que hacer esto. Entonces sacándolo de aquí y
di plus y escribiendo uno, y luego tomándolo y estableciendo este valor
así. Esto es lo mismo. Así que solo sacando diciendo
plus-plus para editarlo y configurarlo. Y entonces obviamente tenemos que
actualizar nuestra estructura
con este número. Ahora tenemos un nuevo nivel. Así que de nuevo, puedes
arrastrarte de esto aquí y decir miembro del set. Y ahora queremos establecer
aquí el nivel dos y el nuevo número, así así. Vale, y recuerda de nuevo establecer esta estructura así. Por lo que ahora hemos actualizado
la experiencia, usted ha actualizado el nivel. Y lo que quiero hacer ahora, recuerda como puedes matar a muchos enemigos
y tal vez hayas superado esa experiencia
requerida tanto
para el nivel dos
como para el nivel tres. Entonces digamos que mataste a
un enemigo que te dio tanta experiencia que
nivelas sub de nivel dos
en lugar de uno. Entonces tenemos que
volver a revisar como está bien, como restaste
esa experiencia, pero hay que revisar de nuevo, es esta nueva experiencia que
tienes en tu bolsillo,
Nuevamente, más alta que la
requerida para el siguiente nivel. Porque tal vez necesitamos sumar
dos niveles a la vez en lugar de uno si has
cumplido con ese requisito. Entonces vamos a
arrastrar de esto, y en realidad voy a
arrastrar a esta rama de nuevo y hacer doble clic para hacer
redireccionar notas solo para que lo sea. Luciendo mejor aquí. Algo así. Voy a
arrastrarlo todo así. De acuerdo, entonces lo que estamos haciendo
aquí es que estamos revisando de nuevo, es la, es la
experiencia que
tienes ahora mismo con esta experiencia
actualizada. Al igual que a pesar de que
va a tomar de
ella y experiencia, recuerda que hemos
actualizado nuestra experiencia. Por lo que esta experiencia ahora
tendremos la actualizada. ¿ Es esto más alto que el requerido de nuevo
para el siguiente nivel? Por lo que sigue comprobando
si se requiere, como si tenemos
mayor experiencia que la experiencia de
habitación requerida, si no, va a ir
a la falsa y no hacer nada. Entonces no va a sumar
nada a nuestro nivel. Entonces esto es básicamente todo. Este es el código. Entonces tenemos como somos,
estamos agregando la experiencia
cuando matamos a un enemigo. Entonces estamos comprobando si estamos en la experiencia requerida para
que ese nivel suba de nivel. Y va a
tomar esa información de la tabla de datos debido a esta función
de información de nivel que hicimos, Biblioteca de Funciones. Y entonces va a actualizar nuestra nueva
experiencia porque estamos restando esa
experiencia de requerido porque
estamos subiendo de nivel. Entonces realmente no necesitamos
toda esa experiencia. Y con esa nueva experiencia, ¿estamos de nuevo, cumpliendo la experiencia requerida
para el siguiente nivel? Si no, sólo
vamos a actualizar tal vez la interfaz de usuario o donde sea
que vayamos a hacer aquí. Así que ahora que hemos
terminado con este código, vamos en realidad seguir adelante y crear la nivelación
o el nivel de interfaz de usuario.
101. Crea la interfaz de usuario de nivel: Para crear la preciosa URL, volvamos a nuestra carpeta
UI dentro del
principal Widget Blueprint que se crearon. Y vamos a sumar
el nivel aquí ahora. Depende de ti donde lo agregas. Y esto es sólo un
curso como tú puedes simplemente hacer el diseño que quieras. Pero aquí vamos en realidad
sólo añadir un nivel que se muestra. Así que tomemos, quiero
agregarlo justo al lado de esta interfaz de usuario. Por lo que en realidad tengo
que añadir una caja
horizontal, horizontal para que
estén alineadas horizontalmente. Entonces voy a una caja
horizontal. Y entonces voy a poner esta superposición en caja
horizontal. Y voy a poner otra
superposición en caja horizontal. Aquí es donde quiero
diseñar mi nivel EY, simplemente arrastrando esta caja
horizontal el camino y se ve así porque no
se está llenando. Por lo que voy a hacer click
en esta superposición y haciendo clic en llenar aquí, por lo que llena todo el asunto. Y con éste, esta es la pantalla de nivelación, nivelación. Y aquí quiero una imagen como fondo,
igual que ésta. Voy con el mismo diseño. Teniendo esta imagen
puesta en cuadrado negro plano y llenando todo
este espacio, voy a poner allí un espacio entre estas dos superposiciones. Solo asegúrate de
que cuando los
minimices, el espaciador esté fuera
de las superposiciones. Entonces aquí en el medio. Y esto es espaciado
en la dirección x, así que tal vez algo así como diez. ¿ De acuerdo? Y aquí, déjame
duplicar esta imagen y déjame seleccionar la
azul ahora plana azul. Y de nuevo, basta con hacer clic en esta alineación en la parte superior
y hacer el tamaño a cinco. Duplicar esto, hacer la
alineación a abajo. Por lo que tenemos este mismo
diseño que antes. Y ahora quiero agregar algún texto. Y el texto que quiero primero agregar un cuadro vertical porque
quiero textos. Y el primero
va a decir nivel. Entonces aquí va a decir nivel. Y el segundo
en mi cuadro vertical, va a simplemente tener
ese nivel mostrado. Entonces el nivel uno es el inicio. Y quiero poner eso
en el medio y poner éste en el
medio también. Y toda la caja vertical que
quiero poner en
el medio también. Ahora puedes seleccionar ambos textos para que podamos agregarlos juntos. Y para la font-familia, voy a seleccionar Bold. Para el tamaño. Sólo voy a dejar que sea 24. Y éste para la sombra, voy a poner
la sombra offset 22 y cambiar el alfa a 0.35. Tenemos algún tipo
de pantalla básica, y se puede ver que esto es
muy pequeño y estrecho. Se está
alejando de esto. Para que puedas dar click en
esta segunda superposición, clic en relleno para llenarlo. Y si no quieres
llenarlo tanto como el mismo tamaño
que este de aquí. Simplemente puedes cambiar este
número de relleno ahora mismo es 1. Puedes escribir 0.5 y puede
hacerlo más pequeño. Creo que voy con
0.4 y voy a hacer mi caja horizontal un poco más grande porque creo que
esto es demasiado pequeño. Algo, algo así. Y lo que podemos hacer ahora, solo asegúrate de que el punto de
anclaje sea correcto. Entonces haciendo clic en el ancla, poniéndola aquí abajo en su lugar. Y luego escribiendo ceros 0 y
la posición que se puede ver se alinea debajo de nuestra ventana.
Y no queremos eso. Por lo que de nuevo, juega con los alineamientos y este es
el motivo por el alineamiento aquí. Y esto sólo está configurado a uno,
y será aquí arriba. Ahora, para la posición, lo
estaré poniendo a tal vez 30 en la x y menos 30 en y. menos 30 va hacia arriba. Ahora tenemos nuestra pantalla
de nivelación. Ahora, sólo
para hacernos más fácil en las variables, voy a hacer click
en este número y llamarlo al siguiente nivel. Y para éste, realmente no
necesitamos
convertirlo en una variable porque
no la necesitamos. Solo asegurándome de que estoy haciendo clic en este texto aquí porque
necesitamos modificarlo, asegurarnos de que esté configurado
en es variable. Pero este para este
nivel también se
asegura de que esté configurado en es variable. Y esta se llama
experiencia de textos. Nivel Textos. Esta barra de progreso se
llama experiencia prog. Y sí, eso es todo. Al igual que tenemos todo lo que necesitamos y vamos a salvar todo. Y en la siguiente vamos a agregar funcionalidad
a esta interfaz de usuario.
102. Funcionalidad de la interfaz de usuario del nivel: Entonces aquí estoy de vuelta en mi interfaz de usuario
principal y ahora
agreguemos funcionalidad a este sistema de nivelación de
experiencia. Entonces lo que
tenemos que hacer es
pasar al gráfico
y codificar algo. Entonces aquí quiero hacer
clic derecho y hagamos un nuevo evento personalizado y
llamémoslo experiencia de actualizaciones. Y éste va a actualizar la experiencia y el nivel. Entonces va a tener
esa experiencia. Y si tenemos la experiencia
requerida, también
vamos a actualizar
el nivel. Entonces ahora no sé qué
necesitamos poner aquí en los insumos, como tenemos
que averiguarlo por ahora, dejemos que sea así. Y lo primero que
tenemos que hacer es tomar esta experiencia de
barra de progreso. Y al igual que antes,
con la Barra de Salud, dicen set por ciento. Y esto va
a establecer en última instancia el porcentaje para esta barra de
progreso aquí. Entonces se va a llenar. Y por lo general como aquí
comienza como 0 por defecto. Entonces vamos a fijar el
porcentaje por algo. Y luego después de eso
tenemos esta experiencia. Y vamos a poner este texto también encima de
esta barra de progreso. Entonces este es este texto en la parte superior. Y recuerda cuando
tengamos textos dinámicos, justo lo que te enseñé antes, necesitamos usar texto en formato. Así que de nuevo, mismo método, trapo hacia fuera, guardar texto de formato. Y necesitamos dos variables. Necesitamos cuánta
experiencia tienes, y cuánta experiencia
se necesita para subir de nivel. Entonces hagamos dos
variables aquí. Hagamos unos corchetes rizados y escribimos experiencia,
experiencia. Entonces esta es la experiencia
actual. Y luego, después como fuera
de los corchetes rizados, estoy escribiendo una barra. Y luego hacemos
nuevos corchetes rizados y lo llamamos experiencia necesaria. Y haz como terminarlo
con soportes rizados. Entonces tenemos dos corchetes rizados. Tenemos éste aquí, tenemos una barra y
esta segunda. Por lo que ahora tenemos dos variables que
podemos establecer como variables dinámicas. Veo que necesitamos, como en la información del jugador, tal vez necesitamos sólo una
información de jugador aquí porque en lugar de
enchufar todas estas
variables aquí, realmente
igual que podemos usar, como nosotros puede actualizar toda esta información utilizando
la información del jugador. Así que en realidad voy a
crear esto como una entrada y escritura de información de capa,
así como esto. Y llamémoslo info del jugador. En realidad, hagámoslo desde aquí. Entonces con lo que tenemos
hasta ahora, vamos a probarlo. Tomemos la
información dividida y lo rompamos. Y ahora podemos usar
este porcentaje aquí. Recuerda que esta es la experiencia. Entonces, cuánta experiencia
tienes en este momento dividida por la experiencia requerida
que tú, que necesitas. Entonces escondamos todos
los pines no conectados por lo que necesitamos la experiencia
requerida. Recuerda, la función que hicimos
en la biblioteca es global. Por lo que sólo podemos decir que consiga la información de nivel y
se puede acceder a ella aquí. Es necesario especificar
el nivel de un jugador. Lo tenemos aquí en nuestra
estructura así. Y ahora puedes romper esto. Ahora tienes la experiencia
requerida. La experiencia que
hayas dividido por la experiencia requerida te
dará el porcentaje. Y en realidad, aquí hay
un pequeño error. Al igual que cuando lo haces así, en realidad va a mostrar
0 porque recuerda que esto es un entero y este es un
entero y esto es un float. Al igual que va a procesar
estos datos correctamente, pero el número se va a mostrar mal
porque recuerda, cuando dividas enteros, te
va a dar un número entero. No
te va a dar un porcentaje, como si no tengas
decimales ni enteros. Entonces si dices por ejemplo, la experiencia que tienes
es de diez dividida por 50. Y ese número que obtienes es
un número decimal. Eso no va a mostrar que
este número será igual a 0 porque los enteros no pueden
tener cifras decimales. Entonces la forma correcta de hacerlo es primero convertir esto en un flotador. Así dicen dos carrozas. Y haz lo mismo
para que éste flote. Y eliminemos esto. Y ahora vamos a decir
esta experiencia dividida. Y ahora estamos operando
con un flotador en su lugar. Así que asegúrate de
convertirlo en un flotador primero más no obtendrás
esos decimales, pero solo
tendrás números enteros. Por lo que ahora tenemos los
decimales. Hagamos doble clic y
hagamos un nodo ferroviario aquí. Y ahora ese número
que tenemos en este momento, podemos usarlo en el porcentaje. Actualizaremos correctamente la barra de
progreso. De acuerdo, Así que esto está terminado ahora. Y lo siguiente, realidad primero
vamos a
hacer clic en éste y esconder pin solo para que
se vea un poco mejor. Entonces lo siguiente es
que necesitamos actualizar la experiencia que tienes
y que experimentaron necesitaban. Esto es muy fácil porque
la experiencia que tenemos es solo esta experiencia. Permítanme
hacer doble clic y hacer un nodo reenrutado aquí. Y la experiencia que
se necesita es solo ésta requerida. Por lo que sólo puedo hacer doble clic
y ponerlo aquí. Y déjame realmente simplemente
arrastrar esto hacia abajo para que no desborde todo el
asunto con las líneas aquí. Algo así. Esto se ve un poco más
limpio, mejor para trabajar con. De acuerdo, entonces ahora tenemos
ese conjunto de información. Lo que tenemos que hacer a continuación es actualizar la pantalla de nivel
para los jugadores. Entonces tomando este nivel de texto, por lo que ahora queremos
actualizar este nivel aquí. Entonces tomando este nivel
y decir texto conjunto. Y ahora esto también es
muy fácil porque
ya tenemos el
nivel para el jugador. Simplemente podemos tomar
éste o puedes tomar éste que depende de ti
y conectarlo aquí. Y de nuevo, haz un nodo reenrutado para que se vea mucho mejor. Algo así. Por lo que ahora tenemos en realidad
toda la información que estamos actualizando, el porcentaje, estamos actualizando el
texto dinámico en esta barra de progreso. Y también estamos actualizando aquí
el texto de nivelación. Por lo que ahora podemos compilar y guardar, y ahora podemos usar esta experiencia de
actualización en nuestro controlador de jugador para actualizar la
experiencia y el nivel del jugador.
103. Finalizar el sistema de nivelación: Hola y bienvenidos de vuelta. Finalicemos ahora
el sistema de nivelación. Vayamos al controlador del
jugador. Recuerda que hacemos las actualizaciones de la interfaz de usuario
en el controlador del reproductor. Así que ir al
controlador del jugador aquí, y ahora sólo
hagámoslo aquí abajo. Tenemos la barra de
salud de actualización aquí arriba. Hagamos uno nuevo. Para éste, sólo voy a llamarlo experiencia de actualización. Así que en realidad volvamos primero
a las interfaces en el controlador del reproductor
Blueprint Interface. Y hagámoslo aquí
llamado experiencia de actualización. Va a recordar tomar la estructura de la información del jugador como la variable porque
esa es la que hicimos. Y llamémoslo info del jugador. Recopilar y Guardar.
Volvamos a llamarlo aquí, actualizar experiencia. Y ahora de nuevo, corre a
través de los clientes. Recuerda que no es el
servidor ahora es el cliente
porque estamos manejando la interfaz de usuario y la
interfaz de usuario pasa por el cliente. Entonces eventos personalizados
y pasando por el cliente, diciendo experiencia de
actualización. Y hagamos que se ejecute a un cliente
propietario y confiable. Y agreguemos aquí la variable
info del jugador. Entonces buscando información del jugador. Ahora podemos escribirlo aquí arriba, actualización de
Cl, experiencia. Entonces ahora lo va a
ejecutar por aquí, ejecutarlo a través del cliente, y el cliente
va a ejecutar esa función de blueprints de
widget que hicimos aquí en WB main, aquí llamada actualización experiencia. Esto es lo que
vamos a hacer ahora. Ahora puedes arrastrar desde aquí. Y en realidad necesitamos acceder
al Widget Blueprint main. Y ya recordamos tener eso como variable en
nuestro controlador de jugador. Así que empecemos desde aquí
y digamos Actualizar experiencia, y la verás aquí. Entonces llámenlo aquí, conéctelos, y luego conéctelos aquí. Por lo que ahora va a ir y
alimentar esa información
en, aquí adentro y actualizar
todo para nosotros. Ahora no hemos especificado
dónde agregaremos esto. Así que actualizar la experiencia,
en realidad volvamos a, vamos a guardar todo y
volvamos al jugador, bajista, base del jugador. Y recuerda, hicimos este
anuncio experiencia eventos aquí. Y esto es lo
que queremos sumar aquí porque si te has nivelado, entonces estamos actualizando
la nueva experiencia. Estamos actualizando el nuevo nivel. Y luego se va
a revisar de nuevo. ¿ Necesitas subir de nivel de nuevo? En caso afirmativo, volverá a actualizar la experiencia,
actualizar el nivel. Entonces después de eso
va a decir que no, ya no
necesitas subir de
nivel. No eres no estás cumpliendo esa experiencia requerida
para este nivel en el que te encuentras. Por lo que solo sigue adelante y
actualiza la interfaz de usuario aquí. La interfaz de usuario de nuevo,
ahora es la función
que necesitamos o el evento que necesitamos para
acceder a esto dentro
del controlador del reproductor. Ahora podemos decir Get Controller. Estamos dentro de
la base del jugador. Y aquí digamos que consigue controlador de
jugador REF
que hicimos mucho antes. Vamos a conectarlo aquí. Ahora, vamos a arrastrar de esto
y decir actualización experiencia. Esto es lo que llamamos
la función de interfaz. Y es un mensaje porque es una función de
Interfaz Blueprint. Ahora necesita la información. Así que sólo voy
a arrastrar desde
aquí abajo y arrastrar esta información del
jugador a ella. Y ahora se va a
actualizar la experiencia. Así que vamos a compilar
y guardar elemento en realidad solo dale al
jugador mucha más ayuda. Simplemente no quiero
morir todo el tiempo. Por lo que establecer las
colinas max a tal vez 500 y la corriente
ayuda a 500. Y vamos a jugar ahora. De acuerdo, así que ahora soy el
jugador, estoy golpeando esto. Ya lo podemos ver actualizaciones. Pero en un principio se puede decir
que dice 0 de cada 100. Eso no es correcto. Por lo que necesitamos hacer
una actualización inicial. Recuerda que tu interfaz de usuario solo se está actualizando cada vez
que adquieras experiencia. Entonces cuando estás desovando, no
estás actualizando tu interfaz de usuario. Sólo lo estás actualizando
cada vez que matas algo. Así que en realidad
lo hagamos aquí arriba en el, déjame copiar pegue
este código y déjame subir aquí y hacerlo en
el lugar de inicio. Así que cada vez que
empiezo a jugar el juego respondiendo al jugador
respondiendo a la cámara, estamos configurando la vista de la cámara. Lo voy a hacer
aquí en realidad. Entonces justo después de
configurar la vista de la cámara, voy a añadir esto. Y voy a actualizar mi
interfaz de usuario como actualización inicial. Así que aquí mismo,
algo como esto. De acuerdo, y ahora vamos a
compilar y ahorrar. Ahora vamos a hacer click en play. Y puedes ver que lo hace en actualización
inicial y tienes
esa información correcta ahora. Ahora puede matar algo. Te da diez experiencia. El bar también se está actualizando. Impresionante, y
veamos si subimos de nivel. Entonces voy a matar a
un par de más. Ahora se siente como un juego. Cuando todos los
elementos se unen. Ahora podemos ver me aseguraré de
que nivelar hasta el nivel dos y mi
experiencia amasada sea ahora 75. Y si sigo matando, ahora lo
va a aumentar. Entonces ahora se está actualizando
correctamente en realidad. Y si subo aquí a
llenar algunos de esos aquí, vale, así que ahora
puedo ver tengo 70 de 75. Entonces veamos si
calcula correctamente. Entonces si creo que cada pic
da como 20 experiencia, así que si acabo de matar a uno, debería decir 15 ahora. Así que déjame matar a uno. No me caigo. Dice 15, por lo que en realidad está calculando correctamente
y me niveló. Entonces eso es bonito y ahora todo
se está actualizando correctamente. Entonces lo último que
tenemos que hacer es solo agregar un efecto de sonido y un
efecto visual para cuando subimos de nivel. Entonces lo haremos un
poco más interesante.
104. Subir el nivel de SFX y VFX: Pero lo final aquí
en el sistema de nivelación, vamos a seguir adelante y
añadir algún efecto sonoro y visual para subir de nivel. Volvamos a
la base de jugadores. Y dentro de aquí, vamos a bajar a
nuestra experiencia publicitaria, y ahora agreguemos un multicast. Así que vamos a hacer clic derecho. Hacer un evento personalizado. Y hagamos multicast. Y sólo voy
a llamarlo igual. Puedes llamarlo de nivel o simplemente lo
voy a llamar experiencia porque la estoy
incluyendo ahí arriba. Y lo voy a cambiar
a un multicast confiable. Voy a reproducir
ubicación de sonido igual que antes. Y agregando esas variables en. Voy a llamarlo efecto de sonido de
nivel. ¿ De acuerdo? Y también queremos jugar como un efecto visual
para cuando subes de nivel, pero el efecto visual
es un flip book. Entonces en los materiales del curso
he incluido para ti, este nivel de textura
que necesitas agregar. Entonces aquí en la
subida de nivel del personaje, vamos aquí a nuestros personajes
activos. Y vamos a arrastrar en este
nivel de textura. Nuevamente, haga clic con el botón derecho y
aplique papel a la configuración, y ahora extraiga esos sprites. Y la rejilla para esto es
creo que fue de 180 por 180. Y ahora da click en extracto. Y ahora voy a
cambiar el nombre de todos esos. Por lo que ahora que las tienes
delante de ti aquí, ahora voy a
hacer click en todas ellas, clic derecho y
crea un flip book. Y lo voy a llamar
una subida de nivel B. De acuerdo, ahora voy a
hacer doble clic en este flip book y establecer los marcos por
segundo a ocho. Y se puede ver que se
ve un raro. Y esto es, recuerda, tal vez
puedas averiguarlo, pero probablemente sea porque
esto tiene este material. Así que cambiemos el
material de la máscara por el translúcido. Entonces buscando translúcido. Entonces lo hemos estado usando
un par de veces ahora. Material
sprite translúcido, sin luz, puedes ver que se ve
mucho mejor ahora. Entonces vamos a cerrar este efecto hacia abajo. Y de nuevo, si no
ves esos materiales, recuerda ir a la
configuración y habilitar el contenido de
los desarrolladores motor decontenido de
los desarrolladoresy el contenido de
plug-in. Si has terminado
con ellos,
siempre puedes alejarte de ellos así. Para que no veas todas
estas carpetas extra. A veces es molesto
ver todas estas carpetas. Así que acabo de hacer clic y lo
tengo más limpio así. Así que sólo les muestro
cada vez que los necesito. Así que volvamos
a la base de jugadores y ahora tenemos
que jugar ese efecto de subida de nivel. Pero este es un flip book y realmente no
podemos cambiar los
personajes flip books. Entonces tenemos que cambiar. No se puede cambiar el libro flip de
personajes. Por lo que tenemos que añadir
otro componente aquí. Entonces vamos a añadir un nuevo componente. Y llamémoslo o simplemente
busquemos flip book. Entonces papel flip book. Voy a llamar a éste, tal vez subes de
nivel nivel de efectos V. Sólo lo vas a llamar
algo así. Voy a adjuntarlo
a mi sprite por ahora. Para este flip book,
vamos a cambiarlo a, Encontremos nuestro nivel aquí. Este es el efecto amor, amor, así que lo tenemos aquí. Y al principio, no queremos
mostrar esto todo el tiempo. Por lo que en realidad voy
a bajar e invisible. Voy a quitar
esto visible aquí, por lo que no es visible en
el juego para empezar. Entonces lo que quiero hacer cuando subo de
nivel es que quería tomar esto y establecer visibilidad
para ser visible. Voy a conectar esto aquí. Después de que sea visible. Entonces voy a retrasarlo por algún tiempo y luego
volverlo a invisible. Voy a retrasarlo para el
momento de este flip books. Voy a tomar esto
y decir flip book, y podemos elegir éste, voltear la longitud del libro y el retraso. Y después de retrasarnos, por mucho tiempo que esté jugando este
flip book, vamos a ponerlo
en invisible de nuevo. Entonces toma esta visibilidad aquí y enganla con ésta. Haz doble clic para hacer un redireccionamiento. Ahora sólo para que se vea mejor, entonces se puede establecer la
visibilidad falsa aquí. Lo estamos escondiendo otra vez, lo que sea. Terminamos un bucle
de este flip book. Y simplemente no estoy seguro si esto realmente
va a
jugar desde el principio, así que lo estamos poniendo a visible. Pero, ¿qué pasa si lo que es este flip books realmente jugando en el medio cuando lo
ponemos a visible? Por lo que en realidad voy a
quitar esto de aquí. Y en realidad vamos a
configurarlo a través de código aquí. Entonces lo estamos poniendo a visible. Y luego tomemos este
libro flip y digamos Set flip book. Porque solo queremos
mostrarlo desde el principio siempre que
queramos mostrarlo. Y entonces tenemos que
elegir qué libro flip book. No lo hagamos aquí.
Simplemente arrastrémoslo a este evento. Y en lugar de llamar
nuevo libro flip book, podemos llamarlo
subir de nivel los efectos. Y permítanme arrastrar esto
solo para que sea más limpio, abriéndola aquí arriba en su lugar, tenemos el VFX como
efectos y la ubicación. Y haciendo un
nodo redireccionado, en realidad, puedes hacer una
nota redireccionada desde ésta para que se vea mejor, así. Y sí, eso se ve bien ahora. Entonces tenemos esta experiencia publicitaria con efectos y
tenemos que agregarla en algún lugar y tenemos que agregarla
cada vez que el jugador sube de nivel. Entonces subiendo aquí a
la experiencia publicitaria, tenemos que encontrar dónde sube
el jugador. Y de nuevo, si
recuerdas el código, el jugador sube de nivel. Aquí, podemos simplemente cambiarlo
aquí al final de este código. Esta es la nivelación del efecto. Y tomemos esto, en realidad tomemos esto
aquí y digamos MC, MC ad experience como esta. Y puedes tomar esto aquí y
hacer otro nodo redireccionado. O en realidad, lo voy
a poner aquí arriba en su lugar. No hay espacio aquí abajo. Así como eso. Vale, así que algo
como esto aquí. Y ahora tenemos esta
experiencia publicitaria y tenemos que
elegir el efecto visual
y el efecto visual. Simplemente puedes agregarlo a la
estructura si quieres. Entonces volvamos
a la estructura. Ir a la información del jugador agregada aquí. Llámalo de nivel como efectos. Y a nivel de los efectos, los efectos o los efectos V, en realidad
voy
a ponerlo aquí arriba. Y esto es solo porque
quiero que los efectos
sonoros estén juntos y los efectos
visuales si hay más que estar juntos.
Vamos a cambiarlo. Este V efectos a un
libro flip book, libro flip book de papel. Y el efecto sonoro
es una túnica de sonido. Y recuerda que ya agregamos
un nivel de efecto sonoro. Entonces compilar y guardar todo. Y vamos al jugador aquí. Información del jugador, y vamos a establecer el efecto de sonido de nivel para que sea el mismo para todos los
jugadores porque realmente
no tenemos más de uno. Entonces aquí. Y el nivel de efectos V, podemos hacer click aquí
y decir subir de nivel. Y podemos elegir el
que acabamos de hacer. Y ahora vamos a compilar y ahorrar. Y vámonos y
en realidad lo elijamos aquí. Así que tomemos, en realidad podemos romperlo aquí desde
esta información del jugador. Ya lo tenemos aquí. Entonces vamos a romperlo. Y ocultemos todo
y simplemente escojamos el nivel de sus efectos y el
nivel de los efectos. Conéctalas aquí. Y luego tenemos la ubicación, que es la ubicación del jugador. Así que tómalo aquí y digamos consigue ubicación de
actor. Así como eso. Y no creo que
nos falte algo. Entonces voy a ocultar estos pines no conectados
y compilar y guardar. De acuerdo, entonces ahora tenemos este efecto
de sonido nivelador y
podemos intentar hacer click en Play
y ver qué pasa. Entonces haciendo clic en el
botón de reproducción, tocándonos aquí. Entonces ahora tratando de subir de nivel para ver si esto realmente está funcionando. Y estoy tratando de subir
de nivel más rápido. Entonces hay algunos bichos
con estas animaciones. Más tarde vamos
a arreglar realmente en la siguiente lección, la he encontrado. Puedo ver que en realidad me nivelé. Y hubo algún juego de efectos. Así que intentemos de nuevo. Agradable. Por lo que se puede
ver que el efecto está reproduciendo y el
efecto de sonido también está reproduciendo. Se puede ver que este
es el error que
realmente quiero arreglar
en la siguiente lección. Y ahora se ve,
en realidad luce bien. Y si quieres que el efecto
juegue encima de tu cabeza, recuerda, puedes
volver al jugador. Y como lo acabas de
agregar como efecto, solo
puedes seguir adelante y hacer click en este nivel,
nivel de VFX. Y recuerda que esto es
sólo un libro flip, lo
agregas para que solo puedas arrastrarlo aquí por encima de tu cabeza, anunciado que va a
jugar por encima de tu cabeza. Y cada vez que subas de nivel
va a jugar aquí arriba. Así que guarde todo. Esto fue todo por ahora. Ahora vamos en realidad
seguir adelante y arreglar los errores finales que encontré
mientras jugaba el juego. Estuve jugando
alrededor de media hora y estaba tratando de encontrar bichos. Y encontré a dos de ellos. Así que vamos a seguir adelante y arreglarlos. Y estamos terminados, casi
terminados con este juego.
105. Cómo arreglar los errores finales: De acuerdo, entonces vamos a arreglar ahora los dos libros que
tenemos actualmente. Entonces la primera es que si estás parado en la carta, eres capaz de atacar y no
queremos hacer eso. Así que vamos a ir al jugador
a y la base del jugador. Y lo que he editado
dentro de aquí. Entonces en tu lógica de ataque, solo
tienes que
agregar este booleano. Entonces en este momento tenemos, es que si
ya estás atacando, no
queremos atacar. Si ya estás muerto, no quieres atacar. El que necesitas agregar. Haga clic en este plus
aquí y agregue esto. Entonces si ya estás subido siendo tampoco
quieres atacar. Por lo que muy fácil de arreglar, sólo
tenemos que comprobar para esto. Lo segundo es a veces los lazos enemigos en
la animación de muerte. Y esto es porque
olvidamos agregar el modo de caminar. Y volvamos
a la base enemiga. Así que pasaba mucho
tiempo tratando de reestructurar este código. Para que pueda intentar ver
aquí y copiar esto. Entonces en el daño del ADN, tenemos controlador de pantalla
y en realidad moví este cálculo de salud
primero antes que nada más. Así que trata de disco y
creo que estos fueron primero como frente
a esto más saludable. Pero creo que estructuralmente sólo tiene más
sentido
calcular primero la salud. Y después de haber
calculado el ****, puedes establecer el modo de
movimientos en ninguno. Creo que estos
fueron lo contrario. Entonces esto estaba aquí
y esto estaba aquí. Pero creo que solo
hará que se vea un poco mejor
configurarlos el modo de trabajo primero antes de configurar
el estado oculto. La otra cosa es,
si por la lógica, encontré que es mejor
usar este controlador de IA
en lugar de, en lugar de obtener controlador. Y consiguiendo el controlador de IA, encontré que es mejor
usar este controlador de IA, que también usamos aquí, y el traslado a la
ubicación o actor. Entonces usando este
controlador de IA y tomando el componente cerebral de esto
y luego detener la lógica. Vale, entonces tenemos esto aquí. Y luego voy a
pasar al retraso. Creo que tuvimos una
parada de inmediato. Parar de inmediato funcionar aquí. Puedes eliminar esto y en realidad
vamos
a agregar esto más adelante. Entonces así es
como se ve ahora mismo, muy simple. Y ahora lo estamos retrasando
, igual que antes. Estamos preguntando si el
enemigo está muerto o no. Si el enemigo no está muerto, va a ir a poner
esto caminando y correr, ¿verdad? Yo creo
que lo hicimos antes también. El movimiento ai es lo mismo, todo es igual. Y luego he añadido
algo nuevo aquí. Entonces si el enemigo está muerto, somos como en lugar
de reiniciar la lógica. Entonces intenta eliminar eso
si tienes eso ahora. Entonces, si tienes el controlador
Get y inicia la lógica
o reinicia la lógica, puedes eliminarla. Y en cambio, hice un nuevo, un nuevo evento aquí, hice uno llamado árbol de comportamiento de reinicio. Creo que esto es mucho
mejor que reiniciar la lógica. Porque a veces cuando
reinicias la lógica, en realidad
estás
reiniciando esta lógica y no el árbol de comportamiento. Y es por eso que
estoy, específicamente voy a
reiniciar el árbol de comportamiento. Encontré que esta
caja un poco. Y la cosa
así funcionará perfectamente si
realmente fuimos aquí. Y recuerda que hablé antes, podrías destruir lo que
quita por completo a este actor. Y si hiciéramos eso, no
tendríamos este problema. Entonces esto es sólo este
proyecto específico. Entonces sólo para este
proyecto que estoy haciendo, esto será un problema. Pero si realmente
destruyes al actor, esto no será un problema. Pero este día me muevo dos
todavía se ejecutará de alguna manera porque detienen la
lógica y comienzan la lógica acaba de iniciar esta lógica
en lugar del árbol de comportamiento. Entonces hice este llamado árbol de comportamiento de
reinicio. Y es sólo una
función o eventos que realmente hicieron dentro de
la función de interfaz base enemiga. Entonces si vas a la
interfaz y a la base enemiga, hice esta llamada árbol de comportamiento de
reinicio. Y lo llamé aquí
en la base enemiga. Y luego hice una
línea de hechos a un lado. Entonces corriendo en poseer cliente y confiable y luego
llamarlo aquí arriba, por
supuesto el cliente uno. Entonces corre
aquí abajo y aquí abajo. Estoy parando el
movimiento de inmediato. Y entonces estoy parando
la lógica sólo para estar seguro de que la
lógica ha sido detenida. Y luego estoy tomando mi controlador de IA y voy
a obtener una referencia a mi, a mi controlador de IA. En realidad hecho aquí. Hicimos en el controlador de interfaz
ai, hicimos este llamado
Good AI controller ref. Estoy obteniendo eso para
poder obtener una referencia a mi controlador de IA. Y dentro de aquí en lugar
de mi controlador de IA, déjame volver ahora al controlador aéreo
enemigo. Hice éste. Entonces antes teníamos este árbol de
comportamiento de carrera aquí arriba. Y en lugar de hacer esto, en realidad
estoy haciendo mi
evento personalizado llamado run árbol de IA. Y cuando empiezo a jugar,
solo estoy ejecutando este evento aquí. Y la razón por la que
hice este evento es porque en realidad
quiero ejecutarlo también en algunos otros puntos. Por lo que no sólo en el start play, sino que quiero
ejecutarlo aquí también. En mi base enemiga
cada vez que empiezo. Reiniciaron su árbol de comportamiento. Así que estoy ejecutando este árbol de IA de ejecución. Acabamos de ejecutar este
árbol de comportamiento igual que antes. Entonces esto es lo que, lo que
esencialmente está sucediendo cada vez que estamos
reiniciando el árbol de comportamiento. Así que he editado aquí arriba, estoy ejecutando este árbol de comportamiento de
reinicio cada vez que el jugador está muerto. Entonces si el enemigo
nos está persiguiendo y el jugador muere, reiniciará
el árbol de comportamiento. De acuerdo, entonces si el enemigo dice, estamos agregando la experiencia
igual que antes. Estamos configurando escritorio para ser verdad. Y aquí, como Justo antes de
responder o algo así, estamos eliminando los eventos de superposición de
generar. Entonces estamos desvaneciendo el personaje. Después de eso tenemos
el temporizador de retardo. Estamos poniendo algo de tiempo. Estamos
devolviendo la salud al enemigo. Entonces estamos habilitando la
generación de eventos de superposición. Entonces he añadido este, el movimiento establecido para caminar
y escribir antes. Es por ello que el enemigo
desove en la animación de la muerte. Porque recuerda por
aquí al principio, fijamos este modo de movimiento a ninguno y el
estado de movimiento para golpear. Cuando el enemigo dice. Nunca lo hemos dicho de nuevo. Entonces cuando el enemigo dados y respuesta acaba de volver a caminar y a la carrera aquí mismo. La respuesta enemiga. Recuerda que me gusta, también
he movido esto. He movido la
respuesta después de esto porque quiero asegurarme de que mis eventos de superposición de generar estén configurados en true
antes de responder. Entonces respondo, y luego
le pregunté su destino fijado a falso. Y luego he agregado este
llamado árbol de comportamiento de reinicio. Creo que la
función de muerte también estaba aquí, así que la eliminé. Y la razón es que
las funciones de muerte ya se ejecutan aquí abajo. Así que recuerda que teníamos a
este actor se desvanecen. Y cuando el actor se acaba de
desvanecerse, y cuando se pone en
falso significado por aquí, cuando se pone en falso, y cuando el actor se
desvanece, se va a ejecutar esta muerte. Entonces no tiene sentido
tener esta muerte aquí arriba. Entonces eliminando eso de aquí, y acabo de agregar este comportamiento de
reinicio para leer solo para estar seguro de
que está funcionando. Y aquí abajo,
también creo que teníamos los derechos de carrera son
el modo de
caminar en realidad
la carga de trabajo. Puedes eliminar eso
desde aquí porque ahora ya lo
estamos teniendo aquí arriba. Entonces realmente no necesitamos
tenerlo aquí abajo. Y así es como se
ve y
cuando está terminado. Entonces cuando la muerte se establece en falsa, también
estoy corriendo reiniciando
el árbol de comportamiento solo para estar seguro de
que no está molestando. Además, intenta dejarlo fuera del código y
ver si funciona. Si tuercas, para volver a conectarlo. Así es
como se ve en este momento. Y si jugamos el juego,
y vamos a probarlo. Entonces se ve mucho
mejor ahora con el código, como si nada estuviera molestando. He intentado jugar
durante 15 minutos. Así que acabo de cambiar
la salud para el enemigo para poder
matarlos un poco más rápido. Pero parece que
todo está funcionando ahora. No están desovando
y calzando. No están desovando con
su animación de muerte. Y podemos pensar
jugando el juego así. Todo está funcionando
correctamente, como se puede ver. Tan impresionante. Y estos fueron los
bichos para esto. Y si los enemigos de nuevo, nuestro recorte entre sí, puedes aumentar esta separación entre ellos como te
dije antes, yo también hice esto aquí
porque había recorte. Por lo que hice clic en el
primero, dijo el E21, hizo clic en el segundo
a 1.2, luego el tercero, por lo que 14 y hizo clic en el
cuarto, responden a 1.6. Para que pueda aumentarlo aún más. Al igual que si los ves recortar, siempre
puedes aumentarlos. Pero sí, ahora todo está
fijo y ojalá que
en realidad pongamos a prueba la escalera justo antes de que terminemos esto.
Yo no hice eso. Por lo que atacar a la carta tampoco
es imposible, sólo si me caigo de la escalera. Por lo que se puede ver sólo cuando
me quitan la carta, en realidad
soy capaz de atacar. Entonces parado en la propia
carta, no
puedo atacar, pero si me golpearon
y me etiquetan, puedo atacarlos. Muy bien, así que esto fue todo por esta lección y vamos a
salvar todo. Y sigamos adelante.
106. Creación de la interfaz de usuario de texto flotante: Hola a todos y
bienvenidos a esta sección. En esta sección, estaba
pensando en crear placas de nombre, pero en cambio vamos a
crear realmente un texto de combate flotante. Creo que es más interesante en este punto crear eso. Y incluiré las placas con nombre en mis futuros videos extra. Para el texto de combate flotante. Sólo son algunos textos. Cuando golpees al enemigo, aparecerá
ese texto
y
te mostrará cuánto daño le
has hecho al enemigo, porque en este momento el jugador no
tiene posibilidad de verlo. Por lo que volará y
te dirá cuánto daño hiciste. Y si el enemigo te golpea, el enemigo te mostrará cuánto daño te hizo
como jugador. Entonces empecemos a hacer eso. Empecemos a trabajar con la interfaz de usuario. Entonces yendo a la carpeta UI, y aquí podemos hacer clic derecho y crear un nuevo usuario
Widget Blueprint. Vamos a crear eso aquí. Y vamos a llamarlo w
b y texto flotante. Entonces este es el menú
que estaré usando. Aquí adentro. Esta interfaz de usuario será muy simple. Empecemos de nuevo con
el panel de lienzo. Empieza siempre con un panel de lienzo cuando estés creando la interfaz de usuario. Y dentro de aquí, Busquemos una superposición en realidad promedios caja cuantil. Y te mostraré
lo que estoy haciendo aquí. Tan cuadro horizontal y lo único que
necesitamos es una imagen en el cuadro horizontal y un texto dentro del cuadro
horizontal. Por lo que sólo será alguna imagen
y este será un ícono, obviamente esta imagen aquí. Y luego algunos textos
que te muestran cuánto daño has hecho todo el
enemigo te ha hecho. Para la interfaz de usuario que donde no
necesitas toda la pantalla. Por ejemplo, solo necesitamos
algo de texto flotante aquí arriba. En lugar de ir con pantalla, entonces hay que
cambiarla a deseada. Deseada es solo ser
esta parte aquí para que puedas ver el
lienzo desaparecido o en realidad no desapareció. Todavía está aquí, pero acaba redimensionarse a
este contenido aquí. Entonces con la imagen,
vamos a hacer click sobre la imagen y en
realidad vamos a importar eso. Así que de nuevo, en el
material del curso he incluido para ti en la interfaz de usuario e imágenes, este tipo y este ícono de sangre. Así que tomemos esos, vamos a
ir a las imágenes de la interfaz de usuario. Y dentro de aquí, vamos a importar estos dos. Esto no es escoger ranuras, por lo que no necesitamos
hacer clic derecho y aplicar configuraciones 2D de vapor. Por lo que ahora volvamos aquí y
haga clic en esta imagen aquí. Busca sangre por ejemplo. Así. Y ahora puedo ver que
no está en el tamaño correcto. Entonces haciendo clic en este
cuadro horizontal para poder cambiar el tamaño cosas como esta para que se
muestre más correctamente. Y haciendo click sobre
éste en lugar de llenarlo horizontal
y verticalmente, Hagámoslo en el medio. Y para el tamaño, solo
estoy haciendo un 44
alrededor de 44 pixeles. Por lo que mucho más pequeño que antes. Y para el texto, vamos a
hacer clic en él y vamos a montar, por ejemplo, algún daño. Por ejemplo, hice
Dos 135 de daño. Esto será de nuevo cambiar dinámicamente
dependiendo de tu daño. Cambiemos la fuente a negra. Y me gusta usar
estas fuentes muy pesadas porque cuando estás
en el área de juego, quiero que el texto
sea muy visible. Entonces eligiendo eso y
alinearlo al medio. Y también aquí abajo para
la justificación, también alineándola,
alineándola al medio. En realidad vamos a
alinearlo a la izquierda porque debe estar en la parte
izquierda de esta imagen. Por lo que cuanto más largo sea este texto, será de esta manera. Entonces eso es realmente correcto.
Vamos, sólo vamos a mantenerlo aquí a la izquierda para
la justificación. Y por aquí por este tamaño, probemos algo como 30. Entonces un poco más grande. Y en realidad,
antes de que hagamos nada, agreguemos un espaciador
entre estos dos. Entonces busquemos un espaciador en ellos entre la
imagen y el texto. Y pongamos el espaciador a algo como diez,
algo como esto. Y para éste,
agreguemos un esquema. Entonces en el tamaño del contorno, voy a poner uno. Por lo que tenemos un pequeño contorno. Aquí se puede ver
este color negro. En lugar de ser completamente negro, en realidad sólo
hagámoslo un poco gris. Así que sólo un ligero efecto. Se puede ver la diferencia. Este es el antiguo,
este es el nuevo. Entonces una diferencia muy, muy
leve, no algo muy pesado. Por la sombra. En realidad voy
a aplicar sombras. Bueno, vamos a aplicar 0.5 tal vez. Y si eso es demasiado, siempre
podemos reducirlo. Entonces 0.5 y va a
aplicar sombras para que en
realidad podamos verlo más
claramente en el entorno. Y en cuanto al color, en realidad
podemos cambiarlo dinámicamente
por lo que
realmente no necesitamos cambiar
el color aquí. Y ahora tenemos que alinear correctamente
el punto de pivote. Entonces en lugar de estar alineados
aquí arriba por la caja horizontal, subamos a la parte superior y
ancla en el medio. Y hagamos la
alineación 0.5 a
0.5 y hagamos la posición
0 es 0. Así como eso. Ahora está alineado
completamente en el medio. Y tal vez si
no entendías lo que era
esta alineación, como, si tú, si lo tienes de vuelta a 0, puedes verlo siempre líneas
a esta esquina superior izquierda. Entonces 0.5, podemos ver que se alinea
en el medio a la x. y aquí se alinea en
el medio a la y. que lo veas
alinea al medio. Si escribes de 0.5 a 0.5, si escribes uno, puedes
ver que se alinea de esta manera, 0 o líneas de esta manera. Entonces 0.5 está en el medio. Y se puede ver que todavía
tenemos algún espacio al azar aquí. Y esto se debe a que si
hace clic en el cuadro horizontal, se
puede ver que el tamaño
no es como el texto aquí. Por lo que solo puedes hacer click en
este tamaño al contenido, y automáticamente se
dimensionará a lo que
tengas aquí. Entonces si tienes tu
daño mucho más alto, puedes ver que la
caja horizontal va a dimensionar automáticamente
a ese número. Entonces ese es un
truco muy cool para dimensionar a los contenidos. Por lo que ahora tenemos estos textos de
combate y está listo haciendo click en
el cuadro horizontal, se
puede ver que está alineado en el medio y se ve
completamente correcto ahora.
107. Cómo agregar animación de UI: Ahora agreguemos alguna animación de interfaz para que sea un poco
más interesante. Por lo que antes no hemos trabajado
con animación. Y si no tienes esta app, a veces se esconde
así aquí. Por lo que tienes una pestaña de animación o podemos encontrarla
aquí en la ventana. Animaciones. Lo puedes encontrar aquí
también si está cerrado. Pero aquí abajo,
sólo puede hacer clic y arrastrar y se puede ver esta pestaña de
animación aparece. Por lo que queremos crear una
animación para este año, y quiero mover todo
el asunto, tanto el ícono como el texto. Así que voy a hacer click en
este cuadro horizontal y vamos a cambiar realmente
el nombre de la misma por ahora. Llamémoslo HB
para caja horizontal. Y cambiémoslo a
texto flotante para que lo sean. Entonces ahora tenemos esto. Por lo que aquí
abajo en la animación, puedes hacer click en este
botón para agregar una animación. Y llamémoslo
cargando animación de texto. Ahora, puedes hacer click en esta animación y luego
puedes hacer click en Agregar Pista. Y entonces tienes que seleccionar
a qué quieres agregar animación? Y quiero gustar
que tengas que seleccionar lo que tienes que
añadir la animación. Por ejemplo, selecciono este cuadro horizontal
y hago clic aquí. Y ahora puedo hacer click en este cuadro horizontal para
hacer una animación para ello. El asunto es que queremos hacer es primero solo queremos moverlo. Entonces va como
cuando golpee a un enemigo, va a ir desde aquí. Entonces aquí con el tiempo, por ejemplo, más de 1 segundo, por lo que el
texto va a volar hacia arriba. Entonces esto es lo principal que
queremos hacer en este momento. Aquí en el cuadro horizontal, puedo hacer click en este Añadir arrastre. Y quiero cambiar
la transformación. Transformar. Se puede cambiar la traducción, que significa lo que
queramos hacer en este momento. Por lo que cambiar la posición
del texto, es decir traducción. Y se puede cambiar la rotación, la escala y este año. Entonces empecemos con
la traducción. Hagamos click aquí. Entonces para la traducción, quiero ir de 0. Y en realidad es de
la manera opuesta. Es hacia arriba, es por aquí. Está en el menos. Quiero ir de 0 ahora mismo. Creo que después de 1.5 segundos. Por lo que quiero hacer toda mi
animación 1.5 segundos. Entonces después de 1.5 segundos, voy a ir menos 150 en la y. para que puedas ver
creado tus puntos. Por lo que vas
de aquí a aquí, puedes ver lo fácil que
es hacer animaciones de UI. Lo hicimos como si te estás
configurando haciéndolo, puedes hacerlo en 15 segundos. Tan fácil, pasando
de 0 a menos 150. De acuerdo, así que eso parece interesante, pero en realidad quería
hacer un poco más por la rotación en este
momento. Está bien. Se inicia con 0,
pero después de un 2.5th, así 0.5, quiero hacer
cinco en la rotación. Y luego después de 1 segundo, quiero ir a 0, de nuevo. Al hacer clic en 0 aquí, se
puede ver que agrega un nuevo punto. Y si alguna vez necesitas
mover estos puntos, siempre
puedes hacer click en el punto y puedes
arrastrarlo a otro lugar. Si quieres que sea
más largo o más pequeño, siempre
puedes hacer eso. Por lo que así, se
puede ver si
acabo de quitar esto, si hago clic en
otro lugar también. Ahora se puede ver que vuela hacia arriba, gira cinco grados de esta manera, y luego da vuelta atrás. Si quieres que gire más, siempre
puedes escribir
diez si quieres. Ya se puede ver
resulta mucho más. Pero solo quería mantenerlo
en archivo por ahora y
siempre podemos cambiarlo si es
demasiado pequeño de un cambio. Por lo que también creo que va a
ser más interesante, como si el texto entra en
nuestra fase uno, aparece. Entonces después de 0.3 segundos
haciendo clic en la escala, quiero hacerla una talla. Por lo que comienza con uno aquí, y luego parece
que el tamaño de dos. Y luego después de 0.6, en realidad
quiero que
vuelva de nuevo a uno aquí. Entonces cuando es desova, lo hace. Esto nos entra en la cara, vuelve a retroceder y sube. De acuerdo, así que eso se
ve interesante. Pero como último efecto, en realidad
creo que también
será más interesante si
desapareció con el tiempo. Aquí a 1 segundo, voy a ahora es en realidad otra
transformación porque realmente
no tiene una función de
visibilidad aquí. Por lo que pinchando en la
pista aquí arriba. Y mientras lo tengo
aquí en 1 segundo, no
es realmente importante. Siempre puedes
cambiarlo si no lo has hecho y necesitas
cambiarlo a 1 segundo. Nuevamente, solo puedes hacer click
y arrastrar estos puntos. Entonces teniendo una lágrima en 1 segundo, voy a dar click en la pista. Y entonces el
llamado renderizan opacidad. Para éste,
voy a empezar con uno. Entonces eso es correcto. Después yendo a 1.5, voy a escribir 0, por lo que va a desaparecer. Ahora podemos ver la animación. Vamos de esto. Y entonces va a subir, y luego va a
desaparecer lentamente, así. Tan animación muy suave. Y siempre puedes hacer clic
aquí para jugarlo. Así es como se verá. Animación tan interesante que puedes hacer. Y puedes hacer
lo que quieras. Puedes hacer click en esta
pista y en
realidad puedes ver lo que puedes hacer
también para esta transformación, también
tienes una animación de cizallamiento y tratar de pensar cualquier animación que
estés tratando de hacer. Y creo que esta es una animación
sencilla y genial con la
que estaremos trabajando. Entonces esto fue todo por
esta animación y podemos compilar y
guardar, guardar todo. Y pasemos
a la siguiente.
108. Funcionalidad de la interfaz de usuario de texto flotante: Ahora que terminamos con
la interfaz de usuario y la animación, comencemos con
la funcionalidad dentro de aquí y
el Widget Blueprint. Ahora vamos a la gráfica, y eliminemos
estos eventos predeterminados. Ahora, en lugar de
aquí, voy a clic derecho y hacer
un nuevo evento personalizado. Llamémoslo actualización. Cargando texto. Texto flotante actualizado. Muy, muy simple. Se va a actualizar nuestro texto. Por lo que al hacer clic en este texto, en realidad
cambiemos
el nombre primero. Vamos a cambiarlo a
TXT cargando texto. Y vamos a hacer clic
aquí es variable, lo
contrario no
aparecerá por aquí. Y tomemos este
texto ahora y digamos ese texto como este. Y ahora podemos tomar este texto aquí y arrastrarlo a
esta función o eventos, porque este evento estaremos llamando
a otro lugar para actualizar el texto. Entonces en lugar de aquí, sólo
voy a llamarlo texto flotante. También podemos cambiar el
color del texto. Entonces cuando el enemigo nos golpea, podemos tener un color rojo. Cuando golpeamos al enemigo, podemos tener un color azul. Por lo que también podemos hacer que
la variable de color. Entonces tomando de nuevo este texto, podemos, si solo quieres, como si no sabes cómo
se
llama la función y sabes
lo que quieres hacer. ¿ Quieres cambiar el color solo para agregar color y
ver qué pasa? Y así es como lo
encuentras de la mejor manera. Para que puedan ver aquí
tenemos algo llamado setColor y opacidad. Entonces eligiendo eso aquí. Y ahora en el
color y la opacidad, se
puede arrastrar de esto
y hacer color pizarra. Y ahora puedes ver que puedes
cambiar el color del texto y también puedes cambiarlo se ajusta a un primer plano se
especifican color. Este es el defecto. No tienes que tocar esto. En realidad puedes
cambiar el color aquí. Entonces con eso, en realidad podemos simplemente tomar de nuevo el color
especificado, conectarlo a nuestro evento. Lo estaremos cambiando
en otro lugar. Y vamos a llamarlo color de texto
flotante. Y lo último que queremos hacer es que también queremos cambiar
este ícono. Entonces es sangre cuando
estamos siendo golpeados y es ese ícono de tipo cuando
estamos golpeando al enemigo. También queremos cambiar
esto dinámicamente. Así que primero vamos a cambiar de nuevo el nombre de la misma y
llamarlo imagen, cargando texto y tal vez
icono icono de texto flotante. Vamos a compilar y guardar, y vamos a la gráfica. Y en lugar de aquí, ahora
vamos a arrastrarlo y decir que éste se
llama Set brush. Si solo buscas
dicho pincel de textura, y esta es una
textura y es por eso que decimos Set
brush from texture. Entonces vamos a enchufarlo
y puedes ver que puedes encontrar todas
tus texturas aquí. Pero queremos
cambiar dinámicamente. Entonces vamos a arrastrar esta
textura y hacerlo aquí. Y llamémoslo icono de texto
flotante. Y déjame simplemente organizar
las cosas un
poco mejor aquí para que
puedas hacer doble clic. En realidad,
también puedes simplemente arrastrar
éste hacia arriba aquí.
Creo que es mejor. Y arrástralo aquí. Presiona en la señal para
alinear todo. Y creo que esto
se ve bien. Entonces esto es lo que tenemos hasta ahora. Esa es la funcionalidad. Y recuerda, queremos
tocar nuestra animación. Por lo que aquí arriba en el Constructo de
Eventos, puedes escribir
constructo de evento y eso es
muy probable que empiece a jugar. Recuerda que usamos Begin Play
y nuestros otros planos. No obstante, se llama Event Construct cuando
se trata de UI, esto es lo mismo. Eso es como cuando
juegas el juego y
construye la interfaz de usuario. Entonces por aquí lo que queremos
hacer es que puedas ver nuestra animación, animación de
textos flotantes. Esto es lo que creamos. Consigue esa variable aquí. Y lo más simple podemos simplemente arrastrar esto y
decir Play Animation. Ahora vamos a hacer
tocar la animación. Realmente no necesitamos hacer más. Entonces eso fue eso. Probemos esto un
poco abajo. Por lo que ahora tenemos la
funcionalidad de esta interfaz de usuario aquí. Ahora, con esta funcionalidad, realidad
podemos llamar a esto en
otro lugar y actualizar la interfaz de usuario.
109. Cómo crear el actor de texto flotante: De acuerdo, entonces tenemos que crear
un actor de texto flotante ahora. Entonces cuando dañas y
enemigo o el enemigo
te daña y quieres
engendrar esta UI aquí. Si quieres
engendrarlo al mundo, recuerda que necesitas
algo para engendrarlo. No puedes simplemente engendrar algún texto aquí
arriba sin nada. Por lo que en realidad necesitamos un
actor y necesitamos
engendrar a ese actor cada vez que
el enemigo está siendo golpeado. Y luego quitamos ese actor cada vez que
el texto haya terminado. Entonces yendo a los planos
y dentro de aquí podemos hacer clic derecho y podemos dar
click en clase Blueprint. Y luego podemos simplemente crear un acto simple o no uno de papel. En realidad queremos
crear uno normal aquí. Lo intenté con el papel uno
y en realidad no funcionó. Entonces tenemos que usar uno normal. Y haciendo eso,
llamémoslo PP texto flotante. Y vamos a hacer clic en él aquí. Y lo que queremos hacer aquí, no
queremos agregar
nada a la viewport, pero aquí arriba en los componentes, clicemos aquí y
busquemos widgets. Y se puede ver que tiene
algo llamado widget aquí. Y este es un widget 3D. Entonces no es como la interfaz de usuario de
aquí que hicimos. Cuando añades un componente
aquí puedes
verlo en realidad también activo
a la ventanal. Es un Widget 3D
y así es como
haces cosas como
mostrarte yo en el mundo. Por lo que hablé de la
placa de nombre antes. Estaremos haciendo los de
las lecciones extra, pero haciendo las placas de nombre, eso será lo mismo. Haciendo estos widgets 3D
porque queremos
mostrarlos en el mundo y tal vez deban
seguir al personaje. Entonces aquí creamos un widget. Y puedes ver a la
derecha en el widget, en el panel Detalles, puedes cambiar algunos ajustes. Entonces, en primer lugar, hay que
elegir la clase widget. Mirando aquí, tienes que
seleccionar el que acabas de hacer. Entonces el texto
flotante Widget Blueprint. Y puedo ver que aparece
aquí, la ventana gráfica. Entonces vamos a compilar y ahorrar. Y en lugar de hacer mundo, así que si eliges mundo espacial, aparecerá
así en el mundo. Al igual que un personaje realmente
puede girar alrededor de este texto
y verlo en 3D. No obstante, sólo quiero
que sea proyectado. Y lo que significa pantalla es justo, siempre estará frente a
nosotros en la pantalla. No quiero que
parezca texto 3D. pantalla será la correcta. Y voy a decir
dibujar un tamaño deseado. Entonces, sin embargo, lo hicimos
en nuestro Widget Blueprint, y eso fue todo para éste. Entonces esto fue realmente
fácil. Así que vayamos al Gráfico de Eventos y añadamos la funcionalidad de la misma. Así que eliminemos
estos predeterminados. Y para éste, voy a clic derecho y hacer
tu evento personalizado. No quiero hacer una función Blueprint Interface solo para estos textos flotantes
porque no
creo que necesito más cosas aquí. Así que hagamos de éste
un evento personalizado aquí, y llamémoslo
mostrar texto flotante. Y para éste, voy a tomar este widget. Vamos a renombrar realmente. Vamos a cambiarle el nombre a widgets de texto
flotante. Entonces me lo voy a llevar aquí. Y luego tenemos que decir
Get User, objeto widget. Y ahora tenemos que echarlo al
pasado a lo que sea que
ustedes hayan elegido aquí. Entonces el texto flotante del WB, un costo para WB cargando texto
y luego conectarlo aquí. Y ahora tenemos acceso a
ese Widget Blueprint, que puedas llamar a
cualquier cosa desde aquí. Y recuerda
lo que queremos llamar desde este Widget Blueprint, permítanme realmente
hacerlo más grande aquí. A lo que queremos
llamar desde ella es esta actualización de texto flotante. Por lo que aquí podemos buscar actualizaciones cargando textos y puedes llamar a esa
función desde ella. Y solo asegúrate de que el objetivo
sea este texto flotante WP. Y estas son todas las cosas
que necesitas actualizar. Y ahora sólo
voy a arrastrarlo aquí nuevo a este evento porque lo
llamaremos en otro lugar. Así como esto. Y éste en realidad lo voy
a ejecutar como multicast. Entonces esto es, recuerda
lo que dije antes. Un Multicast solo puede ejecutarse
a través de un evento de servidor. Para que puedas imaginar que
tendrás un evento de servidor en alguna parte. Por lo que estaremos creando
un evento de servidor más adelante. Por lo que esto se está ejecutando ahora a través del multicast y estará mostrando esta información
a todos los jugadores. Y la razón por la
que estoy llamando a esto en el multicast y
no en un rep notifique. Nuevamente, este texto de combate
aparecerá y desaparecerá. Y para los jugadores que
aún no se
han conectado o de pie lejos, esta información
será irrelevante
porque desaparecerá
después de 1.5 segundos. Por lo que no tiene sentido que un rep notifique porque recuerde, Eric notificar es algo
que notifica a todos
los clientes también cuando se
conectan diez minutos después. Entonces si lo haces en un rep notificar diez minutos después
cuando se conecten, verán todo
este texto de combate de spam que aparecerá y desaparecerá
después de 1.5 segundos, aunque sea hace
diez minutos. Entonces no
queremos eso. Vimos un multicast
solo lo mostrará aquí y ahora cayó por los otros jugadores
conectados que están cerca de ti. Por lo que al reproducir este multicast, mostrará estos textos
flotantes. Y recuerda, esto es un actor. Un actor cuando
lo engendras al mundo, tienes que quitarlo en algún momento porque
aunque estés tocando este texto aquí y esta
animación desaparece así. Recuerda que engendraste
un actor y este acto, este actor punto
no desaparecerá por sí solo. Entonces tenemos que destruir a
este actor en algún momento. Por lo que en realidad voy
a tomar esto aquí y tomar mi animación flotante. Entonces voy a llamar a esto aquí. Tienes algo llamado
get y time porque quiero eliminar
a este actor después de que se
haya tocado esta animación. Para que pueda conseguir esta vez. Por lo que 1.5 segundo. En realidad puedo conseguirlo así, tomando la animación, obteniendo la enzima que es de 1.5 segundos. Y ahora puedo poner un retraso
y conectado aquí. Ahora con esto,
entonces puedo destruir al actor. Lo que eso está haciendo es que
voy a actualizar mi texto y le
estoy diciendo que espere por el tiempo que sea esta animación. Entonces si en algún
momento quieres cambiar esta animación a cinco segundos, esto es muy cool porque ahora solo cambia automáticamente a cinco segundos porque solo está consiguiendo el tiempo de fin
de tu animación. Y lo estamos retrasando. Y luego estamos destruyendo a este actor aquí porque
ya no lo necesitamos. Entonces eso fue todo por este actor de texto
flotante. Y ahora, en
realidad sigamos adelante y hagamos la lógica de textos
flotantes más grandes.
110. lógica de texto flotante: Ahora trabajemos en la lógica de
carga de texto más grande. Entonces lo que queremos hacer es volver a mostrar un texto flotante
cuando el enemigo, el enemigo te golpee y
cuando golpeas al enemigo. Entonces dependiendo de quién
está golpeando, que tienen, por ejemplo,
si golpeas al enemigo, quiero que el texto
esté por encima del enemigo. No obstante, si el enemigo te golpea, quiero que el texto esté por encima de ti. Entonces tenemos que hacerlo
tanto para la base de jugadores aquí. Y también tenemos que
hacerlo por la base enemiga. Y recuerda, hicimos un
padre para ambos. Así que recuerda aquí, la base de
personajes es evidente tanto para la
base del jugador como para la base enemiga. Entonces lo hicimos en el
inicio de este curso. Así que en realidad vamos a codificar esto dentro de la base de
personajes porque entonces podemos usarlo
tanto en la base
enemiga como en la base del jugador. Y ahora se puede ver lo
útil que es hacer un padre para todos estos artículos. Entonces en un punto posterior, si quieres hacer que los
enemigos caigan objetos, y también creo
que lo
haremos en las lecciones extra. Sólo echa un vistazo a mi curso. A lo mejor ya he
hecho muchas clases
extra en el momento en
que estás viendo este curso. Pero para los ítems, de nuevo, queremos crear, hacer clic derecho
y crear un actor. Y luego queremos
crear una base de artículos. Y desde el elemento basado, queremos crear,
por ejemplo, la base de objetos de búsqueda. Y desde Quest basado en elementos, quiero crear objetos de búsqueda. Por lo que muy, muy buena
práctica para crear unos planos base
porque entonces más
adelante puedes usarlos
a tu favor. Entonces vayamos al
carácter basado en el carácter y hagamos el texto flotante. Entonces vamos a abrir el editor completo del
blueprint. Voy a eliminar todos
estos eventos predeterminados. Y aquí Empecemos a crear nuestro evento personalizado de
texto de fuente de visualización. Por lo que llamarlo muestra texto
flotante. Y podemos crearlo en una función de Interfaz de
Blueprint. Pero ahora mismo no
sé qué variables necesitamos. Así que empecemos a
hacer un cliente. Siempre puedes cambiarlo. Y vamos a bajar aquí, hacer un nuevo evento personalizado y
ejecutarlo a través del servidor. Porque recuerda en el texto
flotante aquí, hiciste un multicast. Entonces tenemos que ejecutarlo a través del servidor y
tenemos que hacerlo aquí. Entonces ejecutándolo en
el servidor aquí. Y permítanme realmente
darle un nombre. Así que el servidor muestra la carga de texto. Para éste, vamos
a llamarlo aquí de nuevo. Entonces ya estamos acostumbrados a esto y no
lo he llamado algo correctamente. Entonces Display, y vamos a intentarlo de nuevo, servidor muestra texto flotante. De acuerdo, así que aquí lo que
quiero hacer
como variable en realidad
quieren los actores. Entonces si es el enemigo
o es el jugador, porque recuerda que esta
es una base de personajes. Así que en realidad
no tengo ni idea en este momento si es el jugador o el
enemigo quedando dañado. Así que permítanme buscar actor
en la variable aquí. Elige a este actor. Y cambiemos el
nombre por actor dañado. Entonces tenemos
que conseguir quién está dañado, es el jugador o
es el enemigo? Ahora podemos hacer clic derecho sobre este daño y
promoverlo a una variable. Y
llamémoslo actor dañado. Ahora podemos establecer la
replicación para replicarla. Por lo que el cliente
también puede ver este valor. Y obviamente tenemos que arrastrar
esto también a este evento, porque éste estará llamando a
otro lugar en algún momento. Por lo que ahora tenemos éste
y quiero engendrar mis textos flotantes actor en el lugar donde el
actor ha sido dañado. Así que llevemos este
daño al actor. Y en realidad
lo que queremos hacer, en realidad solo
lo
creemos para que puedas verlo. Creo que será
confuso si empiezo aquí. Entonces lo que queremos
hacer es engendrar a este actor, por lo que engendró el
texto flotante de BP. Textos flotantes. Entonces estamos tratando de engendrar
este texto flotante. Y aquí abajo hay
que seleccionar, tratar de ajustar la ubicación, pero siempre desova solo para asegurarse de que
siempre esté desove. Y para esta transformación de desova, tenemos que conducir desde aquí
y decir hacer transformarse. Ahora lo estamos rompiendo para ver tanto la ubicación como la
rotación y la escala. Y esto es
lo que intentas hacer. Estamos tratando ahora de engendrar este texto flotante por encima
del actor dañado. Por lo que estamos tratando de tomar a este actor dañado y
decir conseguir la ubicación de los actores. Porque recuerda que
esto es un actor. Entonces consiguiendo la ubicación de los actores, solo
podemos
conectarlo así. No obstante, quiero engendrarlo un
poco por encima del actor. No quiero engendrarlo en medio
del actor. Así que en realidad voy a decir
romper y romper este vector. Para que pueda ver la X, Y, y Z. en realidad
estoy haciendo lo
mismo aquí. Estoy tomando esto y
diciendo make vector. Y ahora la x es la misma, la y es la misma.
Es sólo la z Así que aquí arriba, si
quieres que el texto sea un poco hacia arriba,
es el eje z. Así que estoy tomando este
eje z y estoy diciendo plus tal vez 30 o
algo así. Tienes que probar eso y luego lo estarás enchufando
así. Entonces la x es la misma,
la y es la misma. Y solo estoy ajustando
el valor z para estar un poco por encima del actor. Arrastremos esto y organicemos
esto un poco mejor. Por lo que ahora respondiendo este
texto flotante en esta ubicación, por lo que la rotación es la misma, por lo que los ceros son 0 y
la escala es la misma aquí no
necesitamos tocar eso. Ahora, aquí podemos promover esto a una variable y podemos
llamarlo texto flotante. Entonces ahora este es el actor que engendramos cada vez que
golpeamos al enemigo. Vale, entonces de este actor, recuerda que hiciste
este multicast y ahora realmente tienes una
referencia a este actor. Puedes arrastrar desde aquí y decir mostrar texto flotante,
mostrar texto de carga. Y no es de
la base de personajes, se acaba de llamar
función aquí arriba. Y asegúrate de que el objetivo sea BP textos
flotantes para
asegurarte de que venga de aquí. Ahora en realidad se puede
actualizar este texto. Así que muy cool. puede llamar a este evento, pasa por aquí, y luego en realidad se puede
actualizar estos textos flotantes. No obstante, recuerda, les dije antes que estaremos
cambiando los colores. Entonces, por ejemplo, si
el jugador
nos golpea o el jugador golpea al enemigo, al enemigo, o
mostrará aquí un color azul. No obstante, si el enemigo nos
golpea, mostrará un color rojo. Entonces no podemos hacerlo completamente así
porque en realidad no sabemos si este
actor dañado es un jugador o no. Entonces, lo que puedes hacer, ya sea
puedes tomar este actor
dañado y decir que el actor ha etiquetado Jugador o
actor ha etiquetado enemigo. Porque todos, ya
sabemos qué es el actor que tiene etiqueta. Lo usamos antes. No obstante, creo que más adelante, si fuera un juego como un verdadero, otro curso tal vez
tengas toneladas de mapas, toneladas de personajes de daño, y en realidad
necesitas
más variables que solo jugador y enemigo. En realidad puedes
crear una enumeración por aquí que
será mucho mejor, mucho más dinámica, y luego mucho más fácil para ti. Así que en realidad hagamos
eso en la próxima lección.
111. Enumeración de texto flotante: Entonces para esta enumeración, vamos a hacer clic derecho y vamos a crear una enumeración de blueprint. Llamémoslo tipo de texto
flotante. Dentro de esta enumeración de tipo de
texto flotante, vamos a agregar dos cosas. Vamos a añadir aquí,
llamarlo daño de capa. Y llamémoslo
aquí abajo, daño enemigo. Por lo que puede ser daño de capa o puede ser daño enemigo. Ahora podemos tomar esta
enumeración y volver a la base del jugador o
basada en el carácter aquí. Y ahora permítanme borrar estos textos
flotantes por ahora. Entonces antes de llamar a esto ahora vamos a
añadirlo en realidad a este evento. Agreguemos esta enumeración. Y se llamaba E tipo de
texto flotante seleccionado aquí. Y de nuevo llamarlo tipo de texto
flotante. Para esta enumeración,
vamos a arrastrar y decir cambiar. Recuerda que ya usamos
eso un par de veces. Ahora, encienda la enumeración
para que podamos comprobar si
se trata de daño enemigo o daño de jugador
lo que se ha aplicado. Entonces si se trata de
daño de jugador, recuerda, será engendrado por encima del enemigo porque
el jugador daña,
dañaste al enemigo. El daño desova
por encima del enemigo. Entonces me voy a llevar a este actor
dañado y podemos decir conseguir referencia enemiga porque queremos conseguir este actor ahora. Queremos engendrarlo
por encima del enemigo. Ahora. Puedes hacerlo así. Y para el, por
el daño enemigo, puedes intentar pensar lo que podemos hacer y tal vez ya lo
adivinaste. Tomemos a este actor dañado. Y ahora digamos
Get Player Reference porque queremos
engendrarlo en donde está el jugador. Entonces si el enemigo
daña al jugador, queremos desovar el
daño por encima del jugador. El referente de los jugadores. Y desde aquí, ahora podemos tomar este texto flotante y
podemos arrastrar y decir de nuevo, mostrar cargando texto y
podemos llamar a esta función. Ahora podemos sumarlo aquí arriba. Vamos a copiar pegarlo aquí abajo. Y puedes arrastrarlo de
nuevo a los objetivos. Y vamos a arrastrarlo un poco hacia abajo para que tengamos más espacio
con el que trabajar . Así como eso. Y si lo desea, puede hacer
doble clic para hacer, reorientar nodo y hacer
que se vea un
poco más delgado. Algo como esto. De acuerdo, entonces ahora podemos
actualizar este texto dependiendo de si
es un jugador o no. Y déjame arrastrar esto para que en realidad
pueda ver
lo que está pasando. Y ahora podemos arrastrar
esto y toda
la lógica que estará actualizando estos dos
será entre aquí. Entonces, en primer lugar, para
el texto flotante, será la cantidad de daños. Entonces este es el daño del jugador. Tenemos que mostrarle cuánto
daño ha hecho el jugador. Por lo que ahora en el enemigo, recuerda que ya tenemos
esto, cualquier evento de daño. Entonces vamos al
enemigo, base enemiga. Y dentro de la base enemiga
ya tenemos este
cualquier evento de daño. Entonces a partir de esto cualquier evento de daño, ya
sabemos cuánto
daño ha hecho el jugador. Entonces vamos a hacer clic derecho
en éste y promoviéndonos a una variable
para que podamos usarla. Y vamos a llamarlo cantidades de daño
del jugador. Conectémonos y
recordemos replicarlo. Por lo que el cliente
también puede ver este valor. Tenemos que hacer lo
mismo más adelante. Así que hagamos esto
mismo por el jugador aquí. Entonces para el jugador, cuando el
enemigo daña al jugador, también
tenemos que hacer aquí clic derecho promovido
a una variable, y llamémoslo cantidades de daño
enemigo. De acuerdo, entonces estamos promocionando a
quienes son
variables porque
en realidad queremos usarlos. Así que replique este también. Recuerda hacer eso. Ahora, volvamos
a la base de jugadores. Entonces, ¿cuánto
dañó el jugador a este enemigo? Entonces podemos tomar
esto del enemigo y decir cantidades de daño del jugador. Y ahora solo podemos
conectarlo aquí y va a convertir tu flotador en un texto. Podemos hacer
lo mismo aquí abajo. Podemos decir que los enemigos los
dañan. Y podemos volver a conectarlo. Y ahora mostrará cuánto daño
ha hecho el enemigo al jugador. Ahora, en cuanto al color de los textos
flotantes, puedes hacer click aquí. Entonces lo haré
azul para cuando el, cuando el jugador golpee al enemigo. Entonces este es el daño de Blair y se
mostrará como azul. Entonces deslizando esto por ahí y simplemente eligiendo
algo aleatorio. Y para la saturación, en realidad
voy a escribir 0.5. No quiero que sea demasiado
azul. Entonces haciendo clic en OK. Y para éste, puedes intentar hacer lo mismo. Así que sólo para elegir un color rojo, tal vez más rosáceo como este. Y luego estableciendo
la saturación a 0.5 así y haciendo clic en Aceptar. Así Ahora por el icono flotante, así que cuando el jugador
daña al enemigo, quiero mostrar la espada aquí. Entonces buscando dolor, puedes elegir esto,
sin embargo, para los enemigos. Entonces cuando el enemigo
daña al jugador, quiero
buscar este ícono de lote. Entonces ahora lo tenemos, está
siendo dinámico aquí. Muy bien, entonces ahora estamos
terminados con esta lógica aquí. Esta fue la más difícil
en realidad. Entonces ahora tenemos esta lógica completa. Entonces tenemos que llamar a
este evento en alguna parte. Y en realidad estaremos haciendo una función de
biblioteca de textos flotantes porque eso
será más fácil de llamar. Recuerda que ya hicimos
algo dentro de esa biblioteca y tenemos que llamar
a este evento. Y va a
pasar por el servidor. Se va a llevar a
este actor dañado. Por lo que esta vez es actor vamos a
estar enchufando más adelante. Y se llevará a este
actor, tomar la ubicación, desovar al actor de
texto flotante por encima del enemigo o del jugador
dependiendo de quién se dañó. Y entonces si se trata de imagen borrosa, por lo que tenemos que poner eso
también más adelante. Si se trata de daño del jugador, se va a tomar
al enemigo y mostrar la cantidad de daño
del jugador. Y también mostrar este texto flotante
a través del multicast. Y si el daño
es daño enemigo, se va a ir y tomar la capa TSP porque este
es el actor dañado, los enemigos
que
dañan al jugador. Y va a tomar
esta cantidad de daño enemigo y va a arrojarla
a este multicast. Multicast va a correr aquí. Se va a llevar este Widget Blueprint y
se va a actualizar. Así que volvamos a
nuestros planos de widgets. Va a ir
este evento aquí, va a actualizar el
texto, el color del mismo, y también el ícono del texto. Y después de actualizar esas cosas, va a esperar hasta que
esta animación haya terminado. Y entonces va
a destruir a este actor porque no queremos
seguir desovándolo l Así que el juego va en
algún momento un rezago porque no
quitas a tus actores. Por lo que ahora todo esto ha terminado. En realidad sigamos adelante y vamos a continuar y en realidad terminarlo. Entonces aquí está el evento que
queremos llamarlo.
112. Función flotante de la biblioteca de texto: Muy bien, por lo que casi estamos terminados con los textos
flotantes. Así que ahora vamos
a las bibliotecas. Ya hicimos uno y vamos
a la biblioteca de funciones. Y dentro de aquí, vamos a
agregar una nueva función, y ahora llamémosla
mostrar texto flotante. Y la razón por la que
en realidad lo estoy creando dentro de aquí es porque
este texto flotante, tal vez lo necesitamos en
muchos, muchos actores y no quiero hacerlo en
cada actor. Así que de nuevo, algo bueno para usar una biblioteca
es cuando se quiere
llamar a una función en muchos
actores, actores de planos. Así mostrar textos flotantes. Me imagino a pesar de que no
he creado mi
lucrativo, puedo imaginar que voy a estar
usando esto en muchos actores y es por eso que lo estoy
leyendo dentro de aquí. El texto flotante, de nuevo, necesita la entrada de un actor porque necesitamos al
actor dañado que creamos antes. Y necesitamos el tipo de texto
flotante. Y esta es la enumeración. Así que primero seleccionemos
la variable actor. Y luego seleccionemos
los textos flotantes. Este es el tipo de texto
flotante enumeración. Ahora desde este actor dañado, tenemos que llamar al evento desde el jugador o el
personaje, base de personajes. Tenemos que llamar a éste. Permítanme convertirlo en una función de interfaz de blueprint. Entonces vamos a las interfaces y no tenemos una en este momento. Así que vamos a hacer clic derecho y
Blueprint Interface. Ahora llamémoslo base de
caracteres. Y dentro de aquí, digamos que necesitamos tener a éste llamado consigue referencia de
carácter. Y éste va
a tener una salida de base de caracteres seleccionada aquí. Y llamémoslo personaje,
Compile y Save. Y ahora volvamos
a la base de caracteres, vaya a la Configuración de clase y agregue su Interfaz de Blueprint
dentro de aquí, base de
caracteres,
Compile y Save. Recuerda compilar
aquí también, por lo demás esto
no te aparecerá. Por lo que pinchando sobre él aquí. Y para éste
sólo vamos a decir yo mismo. Entonces lo hemos hecho un
par de veces ahora. Entonces con esto tenemos ahora
podemos conseguir una referencia. Entonces en la biblioteca
podemos realmente arrastrar esto y luego referirnos
en lugar de casting, ahora
podemos decir obtiene referencia de
caracteres. Y desde aquí podemos
llamar a este evento llamado. Volvamos aquí,
mostrar texto flotante. Ahora en realidad también necesitamos
éste dentro de él, y voy a eliminar esto. En realidad podemos hacerlo ahora dentro de esta Interfaz de
Blueprint, lo
voy a eliminar y
llamarlo display cargando texto. Por lo que los compuestos ahorran
aquí y aquí podemos buscar búsqueda. Podemos crear una nueva llamada
Display, texto flotante. Y en realidad antes de terminarlo, a veces se asoma. Así que permítanme primero crear
mis insumos aquí. Actor o actor dañado, más bien actor tan dañado. Y el segundo fue tipo de texto
flotante. Y encontremos la enumeración. Y luego encontrar al actor dañado, que es sólo un actor. Justo así de ahí arriba. Simplemente juega texto flotante, así como este,
Compile y Save. Ahora en el carácter basado en,
puede hacer clic derecho y decir mostrar texto flotante, y puede seleccionarlo aquí. Y ahora es una función de
Interfaz de Blueprint. Puedes conectarlos. Esto ahora en la biblioteca, ahora se
puede llamar a esta
pantalla textos flotantes. ¿ De acuerdo? Muy bien, Bueno Desde aquí y
decir mostrar texto flotante. Y es un mensaje porque aquí se trata de un
Evento de Interfaz de Blueprint. Actor tan dañado,
es sólo éste. Por lo que voy a hacer clic aquí
y hacer un nodo de redirección. En realidad no hacer un rerutado. Observe que se ve un poco raro. Así que sólo haciendo esto. Y para el texto flotante, sólo
voy a hacer esto. Esto es simplemente
lo que va a hacer. Ahora lo último,
ahora podemos usar esta función, en realidad
estamos terminados. Podemos usar esta
función de biblioteca para llamarla en otro lugar. Así que ahora vamos al enemigo. El enemigo. Aquí. Cuando el enemigo se daña, queremos engendrar al
actor por encima de los enemigos. Así que aquí, siempre que los
enemigos se dañen, ahora se
puede decir, se
puede hacer clic derecho y decir como
lo llamaste
dentro de la biblioteca. Entonces yendo a la biblioteca y lo
llamaste mostrar texto flotante. Para que puedas hacer clic con el botón derecho
aquí y decir mostrar texto flotante. Y se puede ver que está aquí desde la biblioteca de funciones que
muestra texto flotante. Ahora, hay que
conectarlo aquí y hay que
especificar cuál es
el actor dañado. Es yo, es el enemigo. ¿ Y cuál es el texto flotante? Lo es, en realidad es daño
del jugador. Entonces eso es correcto
en realidad en este momento. Vamos a copiar esto aquí. Volvamos ahora a la base de
jugadores. Y para el jugador, si
el jugador se está
dañando aquí, vamos a pegarlo. ¿ Y quién es el actor dañado? Es el auto jugador. Cuál es el tipo de Daño, es daño NME. Así que ahora va a tocarlo
en realidad y yo lo
mostraré por ti. Así que vamos a hacer clic en Jugar por
ahora y ver qué pasa. Así que en realidad voy a
jugar como el servidor aquí, como servidor de escucha.
Como el servidor. Ahora, se puede ver
cuando me daña en realidad se
está mostrando
cuando golpeo al enemigo. Se va a mostrar
ese daño aquí. Así que muy cool. No obstante, si juego como
cliente y me golpean aquí, puede ver que nada está
mostrando y de esto fue lo que estaremos
hablando en la siguiente lección. Entonces para este cliente, ahora no
me voy a
preocupar por ello. Pero para este jugador aquí, se
puede ver que los daños del cliente se
muestran en el servidor. Pero si vas al cliente, en realidad no está mostrando
nada en el servidor. Se puede ver que ahora se está
mostrando correctamente. Y déjame realmente mostrarte
lo que está pasando en este momento. Entonces Wendy, ahora estamos
dentro de los jugadores. Entonces cuando el jugador se daña, estamos llamando a esta función
aquí desde la biblioteca. Entonces estamos especificando quién
es el actor dañado es,
es el propio jugador. Y este es el daño enemigo
que está sucediendo. Ahora va a ir a
la biblioteca de funciones, y va a
pasar y llamar a esta pantalla que fluye textos
desde la base de caracteres. Base de caracteres. Ahora
llamando a este evento aquí, pasando por el servidor, el servidor va a
establecer esta variable y estamos tratando de encontrar esta ubicación de actores
dañados, respondiendo este texto en
la ubicación de la actriz. Y cuando respondemos
al texto, comprobamos, ¿está claro daño o
es daño enemigo? Si se trata de daños por placer? Vamos a hacer esto aquí. Llama a este multicast desde
el texto flotante BP. Y
lo estamos configurando dependiendo si se trata de daño enemigo
o daño del jugador, los colores y los iconos. Entonces este evento es
del texto flotante de BP, que está aquí. Ahora va a continuar
con este multicast. Pasarlo a todos los jugadores es tomar este Widget Blueprint. Y luego va
a pasar y actualizar el
texto flotante en ese widget, que está por aquí. Y ahora mostrando ese widget, se va a configurar
para este evento aquí. Se va a establecer el texto y el color del texto
y establecer el pincel. Y después de que hace
eso, va a esperar hasta esto, esta animación
aquí que hicimos. Por lo que va a esperar hasta que
esta animación se haya terminado antes de que
destruya al actor. Porque si lo haces antes, nunca mostrará los textos porque lo
destruirá rápidamente. Entonces esto es lo que está pasando. Se puede ver que son muchos pasos,
pero una vez que te pones
realmente bueno en ello, esto en realidad es
muy fácil de hacer. Entonces pasando por la biblioteca de
funciones, pasando por la
basada en caracteres, la basada en caracteres
pasando por el servidor, ejecutando el multicast aquí. Y después del multicast, en realidad
estás actualizando
este texto aquí. De acuerdo, entonces terminamos
con el texto de combate. Y la razón por la que el cliente no
está recibiendo todo esto es muy fácil y probablemente
tomará un
minuto explicar. Así que en realidad hagamos
eso en la próxima lección.
113. Replicación de actores: De acuerdo, Entonces, ¿por qué es eso? El cliente no puede
ver este daño aquí. Entonces cuando me daña, puedo verlo como el servidor
y daño al enemigo. También lo puedo ver, sin embargo, si soy el cliente, así que si realmente abro
aquí al cliente, así como el cliente,
en realidad no puedo ver
este daño aquí. ¿ Por qué es eso? Y esto se debe a
la replicación de actores. Entonces, hasta ahora hemos
replicado esas variables y hemos
replicado eventos, pero no hemos replicado actores de
planos. Entonces vamos al
texto flotante aquí, Vp texto flotante. Permítanme hacer click en los valores predeterminados de clase para
este actor de textos flotantes. Y puedes hacer click en
éste llamado réplicas. Esto es lo que te falta. Así que pinchando aquí y yendo a
los textos flotantes también, el widget Durante
abajo a la parte inferior. Y hay que hacer click en éste llamado
componente replica. Recuerda que estamos en multijugador. Por lo que da clic en Play. Ahora al
hacer click play como cliente, ya
puedes ver que el cliente también lo
puede ver. Y este fue el único
cambio que estaba mal. Entonces sólo estas dos marcas de verificación. Y tal vez
ahora mismo te estás preguntando, ¿
por qué no
lo hicimos antes? ¿Por qué? ¿ Por qué tenemos que hacerlo ahora? ¿ Al igual que por qué todo este trabajo? Sin nosotros pinchando aquí? Y esto se debe a que el personaje con el que
hemos estado trabajando se replica por defecto
en Unreal Engine cinco. Por lo que al hacer clic en este jugador, se
puede ver son en realidad
los basados en el carácter. Así que al hacer clic en la base de
caracteres, puedes ver aquí en
la clase por defecto para la base de caracteres, esto se replica
ya está comprobado por ti. Por lo que los personajes dentro de Unreal Engine se
replican por defecto. Y es por eso que no
tenías la necesidad de hacerlo. Si lo quitas,
verás muchos bichos en tu juego. Pero esto viene a
chequeado por defecto. Y los actores no se
replican por defecto. Entonces si creas
una app después de eso, todos deberían ver que en realidad
tienes que recordar para replicar. Por ejemplo, si estás
creando armas. Entonces por ejemplo, en un juego 3D
o en un juego 2D, si tu, si tus enemigos
cayendo armas o el jugador está envolviendo
armas al otro jugador, ese actor arma tiene que ser replicado otra cosa el cliente no puede ver esa arma arrojada. Entonces después de la replicación, al
igual que cuando la replicamos, todas estas variables que
hicimos en los otros planos, recuerda replicar también
al actor. Si necesitas un todo,
los jugadores para verlo.
114. Limpiar el proyecto: Ahora que hemos terminado
con el juego, en realidad
sigamos adelante
y limpiemos el proyecto. Así que recuerda revisar mi sección de clases
extra. Seguiré
actualizando este curso. Por ejemplo,
agregaré placa de nombre para soltar los artículos que
puedes perder esos objetos, por
ejemplo, pociones de salud, barras de
salud por encima de estos enemigos. También agregaremos estadísticas para que
podamos obtener más fuerza o más salud y actualizaciones y tal vez buscar el sistema
solicitante. Entonces muchas cosas más, tal vez incluso 200
videos más
que podemos hacer si
no partimos desde aquí. Pero esto debería
darte una buena base de cómo crear un juego de plataformas multijugador
2D. Por lo que aprendimos a
crear todo esto, como importar los activos y aplicarles papel a estos
ajustes. Crear flip
books en papel, sprites, actores, e importarlos al nivel de
crear mapas de teselas. Y hemos incluido
un sistema de cartas y sistema de
ataque y un montón de cosas que podríamos
leer en este curso. Y en la sesión de
clases extra, estaré agregando más cosas. Nuevamente, al igual que las barras de salud, el sistema de estadísticas RPG, tal vez un sistema de misiones. Entonces muchas cosas que
aún podemos sumar a este proyecto. Pero ahora antes de que termináramos, déjame realmente seguir adelante
y limpiar el proyecto porque no me gusta
simplemente dejarlo así. Así que vamos a ir a la base del jugador, por ejemplo, podemos empezar con la
base del jugador son en realidad, vamos a empezar desde aquí. Entonces para los activos,
realmente no necesitamos limpiar todo. En realidad todo ya está
limpiado. Y vamos al audio
que también es bueno. Vamos a los planos ahora aquí
es donde la limpieza
es mayormente anuncios. Entonces empecemos con
esta cámara BP. Y para éste
realmente no tenemos nada. Así que vamos a cerrarlo. Y la base de personajes, tampoco
tenemos mucho aquí. Solo revisa aquí. Si, si todo está
resuelto y te gusta cómo hiciste las cosas o
necesitas agregar, reescribimos nodos. Entonces, por ejemplo, sólo me
gusta ser estructuras. A veces solo estoy tomando estos nodos redireccionados
y moviéndolos. También recuerde seleccionar todo y haga clic
en C para agregar comentarios. Y puedes llamar a
esto textos flotantes, por ejemplo, solo, puedes
hacerlo mucho mejor que yo. Sólo lo estoy haciendo
rápidamente para este curso, así que simplemente no toma una eternidad. Pero trata de escribir aquí
un texto largo
explicando lo que hiciste. Porque si vas a volver a este proyecto
seis meses después, no
podrás
recordar qué es esto. Así que tratando de escribir, tal vez textos flotantes para el actor dañado y bla,
bla, bla, lo que sea. Puedes ver, tienes
mucho espacio aquí. Si lo desea, puede cambiar de
nuevo el color de los comentarios. Puedes cambiar el
tamaño de este texto para que puedas hacerlo
más grande si
quieres compilar y guardar. Y ahora puedes ir
al texto flotante. Aquí. Creo que todo
se ve bien. Y sólo dejaré que
sea como este año. Ellos van a ser segados
región realmente hacen mucho aquí. Y en el controlador del jugador puedes realmente limpiar
esto un
poco porque no teníamos o no
comentamos nada. Entonces aquí, por ejemplo,
podemos seleccionar esto y decir inicializar widgets. Normalmente también hago
aquí y digo empezar a jugar porque entonces sé
dónde está mi partida inicial. Si tengo mucho código, Xia Lai, inicializando widgets. De acuerdo, así que ahora los tenemos abajo. Ahora. Tomemos esto. Ahora estamos seleccionando
al personaje aquí, y estos están juntos. Así que tomemos todo
esto y
voy a llamar a una selección y desove al personaje en capas. Así como eso. Y
podemos bajar aquí, esto es actualizar la Barra de
Salud y la experiencia. Y permítanme simplemente seleccionar
esto y decir actualizar la salud y los bares experimentados. Si quieres, en realidad esto se ve bien,
pero si quieres, por lo que a veces
siempre puedes arrastrar esto y ponerlo aquí de costado en su lugar. Entonces lo tenemos más
compacto juntos, pero no creo que
esto encaja. Seleccionando un desove, sólo
me gustaría
poner cosas que
encajan aquí a los lados. Así que sólo voy a
arrastrarlo aquí de nuevo. Ahora, si quieres volver a hacerlo, puedes hacer click sobre las
variables y darles una categoría si la
puedo encontrar aquí. Entonces a éste puedes llamar widget, por ejemplo, Widget, Blueprint
o algo así. Así que sólo una categoría y
haciendo lo mismo aquí, Widget Blueprint y
van a estar por su cuenta por aquí. Entonces intenta hacer eso con
todos tus proyectos. Por ejemplo, el más grande
es probablemente la base del jugador. Voy a limpiar
esto por mi cuenta. Entonces realmente no
voy a añadir nada. Sólo voy a arrastrar las cosas. Por ejemplo, haciendo clic aquí, haciendo clic en Ocultar pines no conectados, y luego echando un vistazo aquí y tal vez no estoy satisfecho con esto, arrastraré esto hacia abajo. Así que trata de limpiar tu
proyecto lo mejor que puedas. Intenta comentar todo y ponerlos juntos
donde encajan. Porque en este momento se puede
ver que es un poco un desastre. Por lo que hay que
comentar todo. Y en la siguiente lección, en
realidad te voy a mostrar recursos
muy útiles que estoy usando para mi propio proyecto
personal.
115. Recursos útiles: En esta lección, en realidad te
voy a mostrar algunos de los recursos útiles que estoy usando
para mis proyectos personales. Acabo de crear esto por diversión. Creó este proyecto aquí. O puedes saquear artículos y
puedes tener un sistema de inventario. Entonces muchas cosas
que puedes hacer, tienes un
sistema de nivelación como lo hicimos. Y tienes monedas y
puedes ir a la tienda por aquí. Y dentro del afilado, en realidad
se pueden comprar cosas. Entonces para este proyecto, se
puede ver por este código, nuevo, estoy usando
los mismos métodos. Entonces yendo al jugador, la base del jugador,
en realidad
te voy a mostrar mi base de jugadores. Entonces esta es la base de jugadores
hasta ahora para este juego. Y solo te voy a mostrar recursos que realmente te
ayudarán mientras estás codificando. Para que podamos ver que las
líneas son así. En realidad me gustaron mucho mejor esas
líneas
que, que aquí en nuestro proyecto donde
tenemos estas líneas curvas. En realidad me gusta usar este
plug-in donde las líneas se vuelven robóticas o donde
sea que se llame, así. Lo puedes encontrar en
el marketplace. Entonces yendo al mercado
y por dentro de aquí, puedes buscar notas
electrónicas. Creo que se llama
las notas electrónicas. Y vamos a ver si
podemos encontrarlo aquí. A lo mejor acabo
de buscar notas electrónicas. Y este es en realidad el uno. Así que al hacer clic en estas notas
electrónicas, esta es en realidad la
que estoy usando y se
puede ver mucho alumno
en realidad usando un dos. Este es el y
puedes ver que puedes elegir diferentes estilos para
tus planos. Por lo que tienes diferentes estilos. En realidad puedes tener
notas más oscuras si quieres. Pero esta es la
que estoy usando y
hace que mis líneas aquí sean electrónicas. Y creo que esto es
mucho más fácil de ordenar. Entonces creo que esto
hará que todo se vea un
poco mejor para mirar, un más fácil de ver en realidad. Y puedes ver aquí ni siquiera
necesito crear nodos reencaminados. Esto lo hará automáticamente
para mí en nuestro proyecto, pero las líneas curvas normales, tendré que crear notas
redirigir para esto. Pero realmente no
necesito crear notas
redirigir para esto porque se
puede ver cuando arrastro, automáticamente
hace esto por mí. Activos tan geniales que
puedes usar en el marketplace. Cosas muy chulas que
han estado haciendo. Entonces estoy usando esto. La segunda cosa es la
que estoy usando es esta llamada, vamos a ver, o es comentarios de tamaño
automático. Por lo que este auto tamaño comentarios
es muy cool para usar también. Se dimensiona automáticamente los comentarios
a las notas que tienes. Para que puedas ver aquí,
tengo estos nodos aquí, y si arrastro algo, puedes verlo de todos los tamaños. Mi comentario dependiendo de
donde esté arrastrando esto. Y si hago algo, por ejemplo, puedo
imprimir una cadena aquí. Se puede ver que automáticamente lo
incluye dentro
del comentario. Así que cosas muy cool. Y esto también es como
se puede personalizar los comentarios. Entonces si escribo algo aquí, vamos a escribir un par de grabados cadenas dentro
de este proyecto. Y cuando hago clic en ver, ahora lo he personalizado. Así que cuando hago clic y
veo, se puede ver que tiene mucho más espacio en la parte superior
y la parte inferior y los laterales. En realidad lo hice manualmente. Y el comentario está
escrito en medio. Y también personalizo el tamaño automáticamente a 28, así. Por lo que se puede ver muy cool. Y también para el color común, puedes
elegir automáticamente qué colores. Entonces por ejemplo, para
este proyecto estoy usando azul si es del
lado del cliente, eso, estoy usando rojo si se está
ejecutando a través del servidor y pagando si está ejecutando tanto el servidor como los clientes, para ejemplo, un multicast. que puedas ver
aquí, por ejemplo, un corriendo a través
del cliente también, corriendo a través del servidor. Será de color rojo y lanzando otra vez
a través del cliente, será aquí
a través del azul. Por lo que todos los lados comentan, muy cool para usar también para
tu proyecto, solo para hacerlo más organizado. Y sí, en
realidad no uso mucho más. Normalmente solo uso estos dos. También puedes usar el que se
llama Auto Note arreglista. Creo que fue un poco
como si no me gustara, así que en realidad no lo estoy usando. Pero mucha gente creo que lo
está usando también, en realidad no mucho,
en realidad un par de ellos. Pero creo que está arreglado mis notas y nueces
como quería, en realidad no
estoy usando eso. Y lo último, pesar de que este es un curso 2D, lo último
que quiero mostrarte aquí, cielo ultra dinámico. Entonces, si estás
planeando crear un juego 3D, éste es un salvavidas y puedes ver que mucha
gente realmente lo está usando y va a crear dinámica es chicos
para tu proyecto. Nuevamente, puedes consultar
mi página, mis cursos, también
estoy haciendo proyectos 3D, cursos
3D y los planos que has estado utilizando aquí en 2D. Entonces lo bueno de crear juegos
2D en Unreal
Engine es que ahora eres mucho mejor en
usar blueprints que antes. Por lo que ahora, estos métodos que has estado aprendiendo
aquí en un juego 2D, realidad
puedes estar usándolos dentro de un juego 3D también. Así que a pesar de que todos estos planos se hacen
ahora dentro de un juego 2D, realidad no
es muy
diferente en un juego 3D. Así que ahora que has tenido tu
práctica en este curso 2D, realmente
puedes usar
lo que has aprendido
también en nuestros cursos 3D. Entonces esto es lo bueno de usar Unreal Engine
y planos. Todo el código
naturalmente va a desperdiciar si de repente
quieres cambiar
a juegos 3D, porque una línea de tiempo es una línea y se usa para
lo mismo en 3D, así
como eventos personalizados y conseguir la ubicación de la
actriz. Tenemos que hacer eso también
en 3D. Entonces todo esto es en realidad lo
mismo en un juego 3D.
116. Actualizaciones futuras del curso: Ahora estamos terminados
con el curso. Espero que te hayas divertido mucho. Me he divertido mucho
creando éste. Nuevamente, si quieres extender
este curso tú mismo, si quieres sumar más enemigos, puedes ir a esta página web. Aquí es de donde lo conseguí. Arce se puso en pie y
solo puedes crear más monstruos aquí. Puedes crear turbas,
puedes crear caminos,
personajes, y
en realidad puede crear más monstruos. que puedas ver agregamos esos animales y
ahora lo hicimos tan dinámicamente que en realidad
puedes ir
al enemigo y hacer clic derecho
y crear un nuevo enemigo. Y se agregará
automáticamente. Solo recuerda hacer click
sobre el enemigo y también el intervalo animal aquí, todas las animaciones, la salud y el nombre y la
experiencia y así sucesivamente. Y también recuerda por supuesto, añadir un drag y sumar al
enemigo a este nivel. Entonces aunque hayamos
terminado con este curso, estaré haciendo futuras
actualizaciones para este curso. Estaré agregando
muchas más cosas, muchas cosas de RPGs. Por ejemplo, vamos a estar agregando
Health Bar dice que ese sistema, tal vez un sistema de habilidades también. Estaremos agregando un sistema de búsqueda. Por lo que muchos otros sistemas que aún podemos
sumar a este juego. Por lo que seguiré
actualizando este curso. Y si quieres un recuerdo, puedes ir a mi página aquí y echar un vistazo a
mis otros cursos. Estoy tratando de liberar uno cada mes o cada
mes y medio. Echa un vistazo a mis otros cursos. Y recuerda,
siempre puedes ir a mi Discordia y escribirme si
tienes un deseo de un curso que quieres ver, o si necesitas ayuda con este curso o cualquier
otro curso, puedes ir a mi
discurso y podemos tener una charla o se puede escribir con todas las demás personas que realmente están
tomando este curso. Puedes escribir con ellos
en los servidores de Discord. Así que una comunidad muy agradable que
tenemos dentro de ahí. Recuerda también que
tengo un canal de YouTube, por lo que también puedes ir a mi canal de
YouTube si quieres
ver tres videos
con respecto a este tema. Por lo que también estoy muy activo. Están agregando
videos con frecuencia, así que ve a mi YouTube
también y mira si hay algo que
consiga tus intereses. Entonces con eso dicho,
gracias por todo. Gracias por
apoyarme y espero que te
hayas divertido mucho y te
veré en el próximo curso.