Transcripciones
1. Taller de diseño de juegos: creación de ARPG de mazmorras procedimentales de UE5: ¿Alguna vez has querido
crear tu propio calabozo, como el legendario Diablo, completo con
enemigos implacables y epicludio,
usando el poder de no darse cuenta de usando el Bueno, ahora puedes dar la bienvenida
al taller de diseño de juegos, realizando cinco,
Dungeon procedimental, creación accional si Porque el juego de tus sueños
puede convertirse en una realidad. En este curso, aprenderás a diseñar un GLP de acción completamente
funcional utilizando planos avanzados desde generación de tangentes
dinámicas hasta IA personalizada, cofres
interactivos y sistemas de
inventario Tienes todo lo necesario para sacar a la luz tu visión. Hola, soy Marcos, y me
he asociado con dudo para traer este
emocionante curso Nuestro objetivo es crear un sistema que
genere niveles dinámicamente, completo con paredes personalizadas,
accesorios e iluminación, mientras agrega
funcionalidad de juego para darle vida a tu juego Desarrollaremos un
generador de niveles que utiliza un algoritmo de backtrack personalizado para crear la estructura
del dangon Esto sentará las bases
de nuestros niveles procesales, asegurando que su juego
se sienta fresco y único A continuación, construiremos habitaciones y dividiremos el nivel en
varias categorías. Esto nos permitirá
aplicar diferentes texturas, materiales y accesorios, para potenciar la
variedad visual del dangon Añadiremos accesorios ligeros que aparecen
automáticamente dentro de
la mazmorra para ayudar a agregar
ambiente al nivel a medida
que se genera la mazmorra para ayudar a agregar ambiente al nivel a medida
que se Una de las características más
emocionantes que
cubriremos es la mecánica del
elevador, que permite un nivel sin fin medida que los jugadores avanzan,
el elevador
generará un nuevo generador para crear el siguiente nivel asegurando una exploración
infinita También agregaremos borradores, cofres y un cofre de misiones para desbloquear el elevador para que progrese
al siguiente piso Para que el ambiente
se sienta más vivo, introduciremos activos
físicos o interacciones
dinámicas con accesorios y objetos en el mundo del juego Avanzando en el diseño de la interfaz de usuario, implementaremos
un mínimo de tres D para ayudar a los jugadores a
navegar por la mazmorra Adicionalmente, construiremos un sistema básico de interfaz de usuario
para mostrar la salud y el sistema de inventario, y
varios elementos como impulso de velocidad, tanto salud como pociones, todos malos a través de tablas de datos Para el combate, crearemos un personaje con dos habilidades
primarias, un ataque de may que derriba a
los enemigos y objetos, y un ataque para hacer
presa como desde la distancia. También estaremos implementando
un sistema de IA enemiga, que los enemigos estarán patrullando, disparando al
jugador cuando esté a distancia, y reposicionándose para mantener una ventaja táctica Wo mejorar aún más
la dificultad. Diseñaremos un
edificio enemigo que dispara
al jugador. Los enemigos de IA protegerán
esta estructura, y cuando sea destruida, IA entrará en pánico o atacará
agresivamente al jugador, agregando un
elemento estratégico a la mazmorra En este curso,
obtendrás acceso a un completo paquete de recursos que elevará el diseño de
tu juego. Incluye 21 texturas de interfaz de usuario
personalizadas, 133 mapas de tractura para
texturizar activos para crear 53 materiales
e instancias de materiales El paquete presenta
63% de líos de baldosas en cinco estilos de
mazmorras preceptos, piedra, adoquines
musgosos, madera, ladrillo
y una cámara temática más oscura, lo que te
ayuda a integrarlos
sin lo que te
ayuda a integrarlos en cinco estilos de
mazmorras preceptos, piedra, adoquines
musgosos, madera, ladrillo
y una cámara temática más oscura, lo que te
ayuda a integrarlos
sin problemas en tu proyecto. Estos códigos te guiarán
paso a paso en la construcción un
sistema de mazmorras completamente funcional usando al motor cinco Vamos a sumergirnos y comenzar a crear nuestro propio mundo
generado por procedimientos
2. Fundamentos del juego: Hola, y bienvenidos a
Game Design Workshop y Real Engine cinco procedimientos Dungeon action RPG curso de
creación Vamos a explicar de qué se
trata todo este curso. Voy a demostrar, en
primer lugar,
mis increíbles habilidades de dibujo
en pintura para hacer esto, y vamos a estar haciendo
esto a menudo durante el curso. Ahora bien, lo que vamos a estar creando
es un menú principal básicamente. Eso irá a estar
generando un laberinto. Pero la forma en que
va a estar funcionando, vamos a
discutirlo un poco más con más detalle. Pero por ahora
va a crear como caminos de
serpiente que en algún
momento, van a terminar. No
podrán crear más, por lo que intentará
elegir otra vía y
crear otro camino de serpiente
que acabará para ir ahora, y luego cada vez más. Vamos a estar haciendo
esto desde un punto de partida, y vamos a
ir hacia cualquier dirección en
una grilla ficticia Si eso tiene sentido.
Ahora, después de esto, vamos a crear
nuestro propio personaje, que tendrá un ataque al centro comercial. Hagamos un puñetazo aquí. Mi ataque ML, y
un ataque a tiros. Por supuesto, el coarcor
vamos a poder movernos en todas las direcciones, eso está dado. Y además, vamos a
tener un pequeño inventario, como, por ejemplo, si
esta es nuestra pantalla, vamos a tener un
inventario apareciendo e aquí, nuestro personaje podrá
recoger algunos artículos haciendo clic en ellos o abrir algunos cofres que
dejarán caer Sí, este es un ajedrez increíble. Como te dije, unas habilidades de
dibujo increíbles. Sí. Y por último, lo que
vamos a hacer es
crear un personaje de IA. Pongamos dos cuernos a
este personaje que tendrá un ataque de alcance No va a ser un arma, va a
ser algo así como una daga. Y también nos pondremos eso que hacemos en la
creación del laberinto, básicamente. Vamos a crear
algo así como una torre que te dispara cuando
estás dentro del alcance,
algo así. Y básicamente, eso sería. La IA estará resguardando la
torre y estará patrullando. Cuando la torre
sea destruida, correrá alrededor del
laberinto en modo pánico. Y cuando estés en
el rango de la IA, te
disparará, y cuando no estés en el
rango, pero son agro. Intentarán encontrar
un lugar al que disparar. Básicamente una IA muy simple. Vamos a estar
usando árboles de navegación y IA para
demostrarlos. Pero para ser honestos, esta escala de IA y la
forma en que la hemos hecho será procesal porque nuestro laberinto
algo que no agregué. El laberinto cuando lleguemos al final, digamos que
este es el final. Iremos hacia arriba
con un elevador y crearemos otro laberinto. No más pequeño,
más grande que el anterior. Los más pequeños no tendrían ningún sentido. Pero sí, eso sería. Vamos a estar
creando otro laberinto. Y como esto es infinito, y la forma en que lo estamos haciendo, vamos a usar
un volumen de navegación que va a
engullir nuestros laberintos, que no lo hace ilimitado porque esto sí tiene Pero vamos a
estar usando esto para demostrar el
patrón de navegación AI piensa, esto no sería óptimo. Esto sería para nuestro juego. Creará algo de
framelg, pero está bien. Creo que este es un buen
punto culminante para las explicaciones. ¿Hay una obra de arte, una forma de arte, como puedes ver Vamos a continuar en
la siguiente. Adiós. Empecemos por
crear un nuevo nivel al juego
hostil porque este nivel se está llenando con
nuestros activos de previsualización. Ahora bien, si eres nuevo
algunas explicaciones, podemos encontrar los activos
que hemos poblado por todo
el mundo aquí
en la caja de outliner Si selecciono algún
activo en el mundo, me redirigirá a ese
activo en el outliner En el outliner, podemos ver lo que
hay dentro que hemos colocado
dentro de nuestro mundo L et's go a crear un nuevo nivel. Vamos a los mapas de carpetas y haga clic
derecho y seleccionemos el nivel. Esto creará
para nosotros
el nuevo ambiente que estará vacío. Voy a llamarlo
nivel de juego. Va a presionar Enter. Ahora, se puede ver que hay un pequeño asterisco al
lado de su icono Este asterisco significa que
este activo no se guarda. También lo podemos ver
si cambio de carpeta, por ejemplo, olvidé que no
he guardado este activo. Podemos ver aquí abajo que
dice un activo no guardado. Arreglamos esto,
presionemos sobre este icono, y hará estallar el menú de contenido
seguro y voy a guardar el activo. El atajo rápido
sería el control guardado, y es el atajo
para guardar todo. Como podemos ver archivo, Dave todos. Vuelve al navegador de contenido, vuelve a los mapas y
abramos nuestro nivel. Ahora, podemos ver que este nivel está vacío
ahora en el outliner No hay nada dentro de él. Yo quería traer
algo dentro, pero no voy a
usar nuestros actos ahora mismo. Yo solo voy a ir a
este botón de aquí y presionar Vamos a agregar la iluminación
direccional, para que podamos las cosas. No podemos ver nada porque no
hay nada que ver. También voy a añadir una
forma y seleccionar un tubo. Ahora podemos ver que
hay iluminación y el tubo. También lo podemos ver en nuestra
ventana gráfica. Mezcle la cámara. Y a los que no tienen
conocimiento de motor irreal, como lo hice fue presioné click
derecho y me moví con WA y D alrededor, manteniendo pulsado el click derecho U y A mueven la
cámara hacia arriba y hacia abajo, y el ratón gira
como un juego básicamente. Los murciélagos son más técnicos. Como podemos ver cuando
seleccioné el cubo o la iluminación, la luz
direccional. Podemos ver los
detalles del panel aquí cambiados. Se trata de detalles para
cualquier cosa que hayamos seleccionado. Junto a ella, hay otra
pestaña llamada configuración del mundo. Si no tiene esta
pestaña, la puede encontrar en la configuración de wd de ventana. Puede aparecer en cualquier lugar, pero puedes acoplarlo en la
ventana gráfica donde quieras Dentro de la configuración de palabras, podemos encontrar mucha
información sobre las reglas específicas de nuestro nivel. Algunas reglas específicas
lo establecen en ajustes de muro. No vamos a molestarnos con
todo en este momento, pero vamos a comprobar las reglas
del estado de ánimo del juego, que son las reglas, digamos, la información más importante Es de
lo primero que cuando presionamos play se está cargando en el comportamiento
predeterminado. ¿Y a qué me refiero con comportamiento
predeterminado? Si presionamos play, se puede ver el outliner se está
llenando de muchas cosas más Estas son
cosas necesarias para ejecutar el juego. Ahora mismo, tenemos el
cubo y la iluminación, y por defecto, podemos controlar con el ratón y
podemos movernos y hover Para cambiar todo este comportamiento, necesitamos cambiar la configuración. Hay varias
formas de cambiar este comportamiento, y para nosotros, vamos a estar explotando cómo cambiarlo a
través del modo de juego Ahora, para lograrlo, vamos a estar
usando una plantilla y mucha de nuestra programación. Así que vamos a ir de nuevo al cajón de
contenido y seleccionar Agregar y agregar
característica o paquete de contenido. Esta es una forma de agregar a tus
proyectos este pack de contenido, las plantillas que Areal ofrece, si no lo has hecho en
la creación del proyecto Puedes agregar el Blueprint one, el Seplus plus one, o
el paquete de contenido inicial Vamos a ir a Blueprint
y seleccionar la de arriba hacia abajo. Voy a presionar
otro proyecto. Será instantáneo para mí. Puede que no sea para ti. He vuelto a cargar esta
información porque ya los he descargado
en otros proyectos Ahora, cuando termine de descargar, abrirá el
navegador de contenido en una nueva ventana, y podremos cerrar
la anterior. Voy a hacer
esta pantalla completa. Y veamos las
nuevas cosas agregadas. Añadió la carpeta de personajes, que tiene los money kins
para las animaciones. Creo que es un Many y Qin,
y algunas herramientas de
prototipado de nivel, y una carpeta de cursor para
el clic de arriba hacia abajo La propia carpeta de arriba hacia abajo, que contiene un mapa que
requiere de todo esto para funcionar. Y dentro de la carpeta
blueprints, podemos ver las tres
clases que en realidad
vamos a estar usando mucho He estado usando mucho la
palabra clases, y para aquellos que son
nuevos en la programación, esto puede ser confuso. Por ahora, puedes
considerar clases también como plantillas
de programas, como Ser placas más específicas para crear objetos
en nuestro mundo, y todo en nuestro
mundo es un objeto. Por ejemplo, tenemos tres clases
específicas de blueprint por aquí Tenemos la clase de personaje, y tenemos la clase de controlador y la
clase od de juego. Cada uno de ellos está reprogramado
con un comportamiento específico, y eso lo convierte en una clase. Y en nuestro caso ahora mismo, estamos usando el juego de la vieja
clase, que es el responsable. Voy a cerrar
esta ventana por aquí, que se encarga, como podemos ver en
la configuración del mundo, del estanque de clase, del controlador,
del hud, de muchas cosas Ahora, vamos a ir
a anular gamed y seleccionar el gamed de arriba hacia abajo. Como pueden ver,
ya cambió la información aquí
más cerca de lo que queremos. Si presiono play, podemos ver al personaje de arriba hacia abajo
cayendo sin cesar Si elimino la clase de peón
predeterminada y uso none y presiono play, el personaje desapareció
y la cámara se quedó donde
originalmente la colocamos Lo que esto significa a través del comportamiento predeterminado
del modo de juego, cuando tenemos un peón de clase
predeterminado, siempre
va a desovar al
comenzar a jugar cuando presionemos Más información
sobre el modo de juego es que se ejecuta por nivel. Esto quiere decir que está
contenido en su interior. Contiene reglas
para este nivel, pero podemos usarlo en muchos
niveles porque podríamos querer tener las mismas
reglas o muchos niveles. Podemos tener tantos
modos de juego como queramos en nuestro juego, y siempre podemos
anularlos aquí. Yo uso la palabra override porque podemos establecer
un modo gay por defecto, era la configuración del proyecto cuando
configuramos para el modo gay. Podemos encontrar que podemos poner uno por defecto que todos
nuestros mapas van a estar usando. Oh, Mode es un poco
de clase complicada. También es
responsable de las cosas multijugador, y, puedo contener
muchas reglas especiales. La capacidad que tiene
para reiniciar en cada nivel. Déjame darte un
ejemplo en pintura, hazla más visualmente dolorida. Oh. Si este es nuestro nivel, cuando lo cargamos, comenzamos
con el modo de juego. ¿Por qué digo que empezamos
con el modo de juego? Porque el modo de juego se ejecuta
antes de que se abra el nivel. Cómo podemos ver claramente esto. El nivel en sí,
tiene otro plano
específico autónomo, llamado el plano de nivel Podemos demostrar esto
yendo al proyecto, y yendo a este
viento de aquí, y plano de nivel abierto Ahora bien, para los que son nuevos, esta es la gráfica de eventos que
forma parte del plano Vamos a explicar un
poco más adelante más cosas. Lo que voy a hacer
es esto comenzar a jugar. Ellos nivelan plano. Esto significa codificar que
cuando comience el nivel, imprima y cadena en la consola que tenga
estas letras dentro de ella. Voy a copiar esta cadena. Voy a ir al navegador de
contenido. Ir a planos abajo, modo. Si se abre
así, suele
suceder porque no
hay código dentro de él, por lo que nos muestra
las variables por defecto del blueprint La tina por defecto.
Voy a compilar, ir a abrir fu plano completo Voy a hacer click derecho
sobre el gráfico de eventos y escribir dado paso. Voy a pegar.
Impresiones. Voy a corregir este molde A Gain. Planos. Compilar, y
voy a presionar play. Como puedes ver, imprimió primero un modo de juego y por encima de
él, el plano de nivel Esto quiere decir que el orden en que este corre es s primero
el modo de juego, que tiene toda la información. Hablamos de, el controlador
del reproductor, el teléfono del reproductor, de todo, y luego se ejecuta un plano de nivel
contenido Algunas preguntas podrían aparecer en la cabeza de
algunas personas sobre ¿por qué estamos usando esto y por qué no
estamos usando eso? En la codificación, hay
algo una referencia. Esto significa que quiero
hacer algo, o algo más para
hacer algo por mí. En general, si
quiero comunicar algo con otra cosa como el juego me comunico
con un plano de nivel. Tengo que tener una referencia. Hay una referencia. Entonces, tengo que tener una
referencia para ti. Uno de los principios, uno de los principios, en realidad, pero una de las formas en que
estamos pensando cuando estamos programando algo es
sobre las referencias. ¿Cómo puedo obtener una
referencia a esto y cómo consigo una
referencia a eso? Hay muchas reglas. No voy a
entrar en demasiados detalles, pero esa es una de las formas en que estamos
eligiendo qué usar. Hay decisiones
y reglas mucho más
complicadas que hay que
tomar a consideración. Pero, por ejemplo, una cosa que es importante es la
referencia para un principiante, eso es algo a lo que
tienen que acostumbrarse. Oh, ¿por qué estamos usando también
el modo de juego y cómo lo
vamos a usar? ¿Vamos a
demostrar la capacidad del modo
de juego para reiniciarse por sí mismo Esto quiere decir que cuando
estamos cargando el nivel, queremos disparar
cosas específicas que suceden. Y cuando recargamos el nivel, olvídate de ellos y
recargarlos desde el principio En un ejemplo más específico, lo que vamos
a utilizar es el modo de juego
cree el menú principal. Vamos a crear una nueva diapositiva. Lo que vamos a estar haciendo
es un programa que diga, Dow me el menú principal, el jugador presiona, o inicia, y luego inicia el juego, continuar con lo que
hayamos hecho, o dejar el juego. Pero cuando el juego haya terminado, queremos recargar esto Lo que vamos a estar
haciendo es que vamos a estar abriendo el nivel nuevamente de aquí. Entonces, cuando volvamos a abrir la etiqueta,
queremos volver a mostrar el menú
principal. Pero vamos a estar usando
el modo de juego para albergar eso. Creo que esto es
suficiente para la teoría. Para esta, te
veré en la siguiente con más acción. Adiós.
3. Creación del menú principal: Hola, y bienvenidos al taller de Diseño de
Juegos y Real Engine cinco llamadas de
creación de PZ de acción de
Dungeon procesal creación de PZ de acción de
Dungeon En la lección anterior,
comenzamos con creación de nuestro mapa en
los mapas de carpetas. Y luego continuamos agregando la plantilla para personajes de
arriba hacia abajo, y cambiamos el
modo de juego en nuestra configuración de muro. También agregamos un cubo y
una luz direccional, y demostramos la
habilidad, bueno, no la habilidad, sino el orden de las operaciones
que el modo de juego ejecuta primero, y luego el nivel de juego corre cuando estamos
iniciando nuestro nivel. Ahora, voy a borrar
estas cadenas, y también, voy a borrar el cubo
y la luz de dirección, y voy a
guardar todo. En esta lección, vamos
a crear el menú principal para el widget para nuestro juego usando un plano de widget Ahora voy a ir a Contenido, click
derecho, crear una nueva
carpeta y ponerle el nombre U. Dentro de esta carpeta,
voy a hacer click derecho. Interfaz de usuario y
seleccione el blueprint del widget. Ahora bien, ¿qué es un blueprint de widget? Un blueprint de widget es una forma que real nos ofrece para
crear interfaces de usuario Voy a seleccionar el widget de usuario de clase
común. Hay muchas
otras clases para cosas muy específicas que hacer. Lo que necesitamos es un widget de usuario. Voy a llamar a este WG. Menú principal. Y
voy a abrirla. Antes de comenzar a programar
el widget y el menú principal. Hablemos un poco de widgets
para los que son nuevos. En primer lugar, podemos notar que esta gráfica se ve un
poco diferente las gráficas que vimos en el plano del modo juego o
el plano a nivel de juego La razón es porque estamos en la
pestaña de diseñador del widget. También hay una tina
gráfica que le parece más familiar a
las otras gráficas. La razón es que
en la tina gráfica, estamos haciendo la
programación del widget, mientras que la tina de diseñador, estamos haciendo la
parte visual del widget. O widget se ve en la pantalla. Para ello, estamos usando
elementos de nuestra paleta, y los estamos configurando
como queremos que se vean. Oh. Una cosa más, cuando estamos agregando algo
en el lado visual del widget, podemos verlo
aquí en la jerarquía. Ahora, comencemos con
agregar un lienzo. Voy a
soltar dragón aquí,
o podría simplemente arrastrarlo y
soltarlo aquí y va a ser lo mismo. Descripción de lo que hace
el Cvass. Se puede encontrar
al pasar el cursor sobre él y verlo Descripción de Opta Pero básicamente,
es un elemento para decir dónde están nuestros widgets
en el espacio en nuestra pantalla. Puedes tener
cavaza más pequeña que tu pantalla. Se pueden tener lienzos
dentro de las cavazas, no se recomienda
tener demasiadas Oh, vamos a demostrar esto. Traeremos un botón aquí. Colócala dentro del lienzo. Puedo decirle donde en la lona quiero que
sea o que tan grande. Y dependiendo de
Canvas es en realidad lienzo a pantalla
completa o
parcialmente ese cavas, por ejemplo, podemos
tener un lienzo en un widget más pequeño en una
esquina o algo así Le dice dónde estar
basado en estas convas. Ahora bien, si tuviera un
segundo pantano de botón, eso complicaría Digamos, por ejemplo, quiero este botón exactamente
debajo de este botón, y es difícil hacer un
globo ocular sobre estas cosas Pero hay otras
herramientas, como por ejemplo, una caja vertical o
una caja horizontal, ahora mismo, vamos
a necesitar una caja vertical. Y dentro de esta caja vertical, eliminé los otros botones. Quizá los necesite. Voy a traer
otra vez
una caja vertical y hacer de todo. Ahora puedo arrastrar estos ptones
dentro de esta caja vertical. Y cómo estos botones están
alineados verticalmente en esta caja. Ahora bien, el tamaño está
determinado por la caja. Hay muchas maneras de cambiar el
tamaño y todo. Tenemos que pasar por toda una experiencia de
interfaz de usuario en este momento. Lo que vamos a
hacer en realidad es colocar la caja donde queramos y
dimensionarla lo mucho que la queremos. Para ello y guardo el mismo lugar en cualquier resolución porque esa es la e aquí. Siempre podemos compensarlo
en base a este ancla. ¿Qué es un ancla?
Le dice al widget dónde colocar en
base a este ancla, pero en base a este punto. Entonces, si cambio la
resolución ahora mismo, trata de mantener ese lugar, pero cuando voy a resoluciones
poco ortodoxas, como
que la pierde Eso se puede arreglar
colocando el ancla alrededor, e intentará también mantenerlo. Nuevamente, mirar todas estas
cosas no es muy fácil, pero hay otras
formas de hacerlo Por ejemplo, si selecciono
el cuadro vertical, y voy al panel detallado. Cuando selecciono todo, nuevamente, tenemos un panel detallado, como lo teníamos en el plano, el plano de juego,
como lo tenemos en el nivel, cuando seleccionamos algo,
y vamos a cada Oh, Cuando selecciono el panel de detalles de la caja
vertical, puedo ver que hay un ancla. Empecemos con
la opción de anclaje. Oh. Se puede ver que hay
algunas posiciones de anclaje preestablecidas. Lo que vamos a
elegir es el medio. Queremos anclarlo en
medio de la pantalla. Pero como viste, esto no movió nuestro widget en
medio de la pantalla. Trate de indicar dónde estaba. El motivo es
porque está siendo compensado por estos
valores de aquí, posición x y posición y. si elijo esta cosa que
ese es el valor por defecto, vamos a ir a su punto de pivote
original. Ahora bien, ¿qué es un punto de pivote? Significa que esta caja
es er, por ejemplo,
no centro, sino su
punto de que estamos manipulando su tamaño
comienza en esta esquina Ahora bien, si pongo
cantidad específica de tamaño, como el 500 por 300, tal vez 300 tal vez 200. Bueno, queremos unos
botones largos por ejemplo. Podemos decir que la posición x offset sería menos a 50. Y la posición
y sería -100. Ahora se posiciona a mediados porque
lo compensamos por estos valores. Pero, ¿y si quisiera
cambiar el tamaño de mi widget? Ahora bien, esto ya no lo es,
tengo que volver a hacer matemáticas. Para no volver a hacer todas estas
acciones. Podríamos decir que la posición no está
desplazada, en primer lugar, recomen la alineación,
que es un valor 0-1, realidad puede ir a
negativo y por encima La alineación es 0.5 y 0.5. Y esto lleva el
widget a su centro. Alinear mi widget en
un porcentaje en un valor 0-1 a su eje
x y eje y Si cambio la talla, vas a ver que
siempre se queda en el medio. Vamos a traer esto de
vuelta a 100100200. Oh, compila y ahorra. Ahora, tenemos nuestro widget en medio
de nuestra pantalla. Pero nuestros botones no son exactamente muy
guapos como son. El uno debajo del otro, incluso en un menú mínimo, esto no
debería suceder. Lo que vamos a hacer
vamos a seleccionar
los dos botones, ose la opción. Y en la alineación vertical, vamos a
elegir la opción, ingresar alineación, ingresar
alinear verticalmente. Ahora puedes ver que nuestros
botones se ven mucho mejor. Una toma interesante aquí sería que cuando
seleccionamos los dos botones, mantenemos estos ajustes en común, como que ambos tienen
estos ajustes, así va ambos. Si selecciono con control
escogido en cuadro vertical, puedes ver que estos
ajustes desaparecen porque Establecer el desgaste
debe basarse en algo. Como pueden ver, la ranura ranura de caja
vertical está arriba aquí, y cuando selecciono cuadro vertical, la ranura de panel Cvas
ranura está aquí arriba Entonces esto es establecer la posición dentro
del Cvass donde aquí, estamos fijando la posición
dentro de la caja vertical,
la posición de alineación o lo que sea Ahora, hay muchas
más formas de hacer esto. Podríamos haber puesto espaciadores
entre estos botones. Este es otro.
De hecho, demostremos esto. Digamos que ambos
botones son de control y seleccionemos los dos verticalmente. Ahora, dos grandes botones. Los quiero más pequeños, para que
me vengan bien algunas bases. Tráelo aquí entre
los dos botones, voy a traer
otro encima del otro botón. Vamos a traer uno
debajo del otro botón. Ahora bien, si notaron otra
punta de tirón real que podemos ver, cuando voy a poner el botón aquí, pone esta línea, esta línea azul por aquí con una pequeña R en la esquina
que apunta hacia arriba. Esto significa agregarlo a
la jerarquía anterior. Por ejemplo, la jerarquía
anterior
ahora mismo está en el cuadro vertical. Si trato de agregarlo aquí y
pone una flecha abajo, agrega a la
jerarquía de abajo, por encima del espaciador. Pero si tengo la flecha hacia arriba, agregaría a
la jerarquía anterior, el panel Canvas.
Vamos a probar esto. W para ponerlo aquí,
va a liberarlo. Como puedes ver, se ha
agregado en la jerarquía de Canvas. Yo yo califica aquí, lo va a poner en la
caja vertical por defecto al final Voy a seleccionar los espaciadores,
y voy a seleccionar. Como puedes ver, peló bases, y ahora los botones
también se ven un
poco mejor que
tenerlos uno encima del otro. Con este escenario, podemos
tener todo para sentir, y funciona de la misma manera. No tenemos que
preocuparnos por las alineaciones verticales ni ninguna Ahora bien, estos botones deberían
tener algún texto Cuando agregamos cosas
en la caja vertical, agregamos 12, tres,
cuatro, cinco elementos. Pero cuando estoy agregando
algo a un botón, llevemos al botón. Entonces si agrego algo en
el botón como un texto, y voy a agregar,
digamos que quiero dos textos. No puedo hacer eso porque
los botones solo consiguen un hijo. Esto significa que
solo pueden tener una cosa dentro. Pero hay una manera de evitar esto. Puedes tener una cosa que
tenga muchas cosas dentro de ella. Por ejemplo,
puedes tener un botón que tenga una
caja vertical dentro de él. Como podemos ver, la caja vertical puede tener muchas cosas dentro de ella. Eso se llama niños, y ¿cuántos niños
puede tener un elemento? Bueno, voy a
copiar este bloque de texto, y
lo voy a pegar en el otro botón. Y voy a ir al primer bloque
de texto, cambiar el texto en
sus detalles. Denle el nombre. Y vaya al otro botón también, y como el bloque de texto dos. Creo que esto es suficiente
para esta lección. Te voy a ver
al siguiente. Adiós.
4. Agregar el menú principal al puerto gráfico y salir: Hola, y bienvenidos al Taller de Diseño de
Juegos, soy real Lensing five
Procesal Dungeon action ARPG En la anterior,
terminamos con las visuales del menú principal En esta, comencemos a programar algunas cosas para que
podamos ver este
menú principal en nuestro juego. Ahora, vamos a
pasar al modo de juego. Si no puede encontrarlo, está en la tina de
contenido en la interfaz de usuario de la carpeta, y no, lo siento, en
la carpeta de arriba hacia abajo, los planos plegados y
el modo de juego está aquí Planos de arriba hacia abajo, gamede. No, yo nuestro modo de juego, vamos a arrastrar un cable. Ahora, vamos a explicar algunas
cosas sobre este cable aquí. Lo hicimos antes
con Imprimir cadena, pero no dijimos
nada al respecto. Entonces qué es esto, esta es la
línea de ejecución de planos. Lo que esto significa, en definitiva, es que esta ejecución
controla el flujo de la lógica. Cuando se dispara un evento, sigue esta
línea de ejecución para desencadenar las acciones que se van a realizar en un orden determinado. Básicamente, dicta el
orden de las cosas que van a suceder. Entonces, vamos a demostrar esto. Si pongo una impresión. Y para la cadena, voy a poner
uno, y luego poner, voy a copiar y pegar estos. Poner una cadena de impresión dos. Voy al
mapa general, mismo nivel. Han seleccionado, y juegan. Oh, puedo ver uno, dos, primero
imprimió
uno, y luego dos. Ahora bien, hay momentos especiales que esto no sucede exactamente cuando estamos
jugando con retrasos, cuando estamos desencadenando otros
eventos que tienen retrasos, o tienen hay múltiples razones para que esto
no suceda en orden, pero todos son
muy específicos también Et's lo demuestran
con un ejemplo. Si hago un evento personalizado. Esto significa que un evento propio, como comenzar a jugar es un evento
prescriptado. Se bires cuando se ejecuta el
plano. Cuando uso un evento personalizado, es un evento que creé, así que tengo que llamarlo. Llamemos a este
evento personalizado en realidad prueba. Bueno, voy a poner aquí una cadena
estampada de dos. Voy a
cambiarlo a tres en realidad. Voy a llamar a mi evento
personalizado aquí. Ahora bien, si conecto estos dos, juguemos, todo va a cobrar
fi, uno, dos, tres. Pero si pongo un retraso aquí, digamos de 2 segundos
de 0.2 segundos, puedo ver uno, tres, dos. Esto desencadenó aquí
, pero como tiene un retraso, esperará la cantidad, pero esto continuará. Tener un retraso
no hará que se detenga. Pero ahora vamos a entrar en
un límite de cuatro bucles. Si tengo un bucle cuatro aquí, ahora ¿qué es un bucle cuatro? L et va. Oh, es un nodo de programación que inicia con un índice y
termina con otro índice, y lo hace hasta que
pasa por todos los índices. Para el cuerpo loop, voy a conectar esto
aquí, y en realidad, lo
voy a hacer desde dos, digamos, esto serían cinco. Y ve y presiona play.
Ver uno, dos, tres, 45. Para este nodo, por ejemplo, esperó para completar este nodo, y luego continuó
hacia la otra línea. En fin, a través de la práctica y la
exploración del motor
y la programación, gente va a conseguir
más versos a estas cosas. Ahora, eliminemos todo esto porque no lo
vamos a necesitar. No vamos a
necesitar un evento de prueba. Y comencemos con traer
nuestro widget en nuestra viewport. Yo voy a hacer esto. En realidad,
necesitamos un evento personalizado, así como evento, y lo vamos
a llamar show main menu. Cuando iniciemos el juego, queremos mostrar menú. Ahora cuando hagamos doble
clic sobre
esto, nos llevará
al evento que creamos. O si tuviéramos una función aquí, hablaremos de
funciones más adelante, nos
abriría la
función. Ahora, mostrar menú principal, vamos a crear Porque para traer nuestro
widget al mundo, tenemos que crearlo de alguna manera. Tenemos que tenerlo como entidad, y la clase que vamos a elegir para
el widget
va
a ser el menú principal de WG Ahora, Poseer jugador, vamos
a usar el controlador del reproductor Y lo que significa este
jugador poseedor. Básicamente, si tuviéramos un juego co
local, tal vez, y hay algunos usos
también en multijugador que estás mostrando widgets a otros
jugadores y esas cosas, tal vez. Le dice al motor a quién pertenece
este widget. Entonces, creamos el widget. Ahora bien, si voy a presionar arcilla, no pasará nada.
No vemos el widget. El motivo es porque cuando
estamos creando el widget, acabamos de hacer una variaa del mismo, hicimos una pequeña celda que contiene la información
de este widget No le hemos dicho al motor, haga algo con
estos datos de datos. Entonces, el valor de retorno es
el widget que creamos. Si colocamos el cursor sobre los
pines de un nodo, podemos ver algunos
detalles más sobre ellos. Entonces, ¿harías referencia de objeto de
menú principal, creamos un
widget de menú principal, que es un objeto. Como dijimos antes,
todo es un objeto. Y tenemos una referencia a ello. Lo que vamos a
hacer es que vamos
a promocionar esta variable, y llamarla W G menú principal. Ahora, tenemos nuestros datos,
tenemos nuestro widget, y los almacenamos
en esta variable, y queremos decirle algo
a estos datos para que suceda. Voy a traerlo
de las variables aquí porque cuando
estamos creando una variable, se está almacenando por aquí. Voy a traer esta variable
y decir agregar a viewport. Este es el comando para agregar
un widget en tu viewport. Bueno, voy a
conectar esto aquí. Y ahora voy a presionar A, y eso va un widget. Presiono los botones. no pasa nada. Pero vamos a programar esto ahora mismo. Y lo primero que
vamos a programar es el botón quid Entonces, vayamos a nuestro modo de juego de
arriba hacia abajo, menú principal del
Widget, y
vayamos al botón quid Ahora, si elegimos este botón, queremos hacer algo
con este botón. Entonces necesitamos determinar
su comportamiento. Para ello, tenemos que hacer clic
es variable en los detalles. Voy a
darle click aquí y nombrar este botón también Salir. T. Y ahora voy a ir
más abajo en los detalles, y esta lista de
eventos ha aparecido. Si deshago clic en la
variable, desaparece. Si hago clic en la
variable, aparece. Esto no quiere decir que
no pueda usar el botón
de otras maneras. Hay otras formas de
usarlo sin ser una variable. Pero esta es la forma en que
vamos a hacerlo ahora, y es la forma más común. Vamos a elegir
el evento al hacer clic. O prensado. La diferencia entre estos dos es que cuando estamos clic, tenemos que hacer clic en el
botón y cuando lo
soltamos y
todavía estamos en el botón, acepta esta acción. Bueno, presionado es que en el
momento en que hacemos clic, sucede. No. En el botón clicado y. Sólo vamos a arrastrar
una mesa y decir, P: No
vamos a
especificar jugador. No vamos a
especificar las preferencias de dejar de fumar, solo
vamos
a dejarlo salir, y no vamos a ignorar las restricciones de
la plataforma
porque esto no
es para ninguna plataforma
específica. Oh, vamos a
compilar y guardar, e ir a nuestro
nivel de juego y presionar play. Ahora si hago clic en Salir, liberarlo de lo contrario no funciona, pero si hago clic y lo libero
mientras está en Salir, es el juego. Creo que este es un buen
punto de parada para esta lección. Te vamos a
ver en la siguiente. Adiós.
5. Mecánica de la pantalla de carga y creación de laberintos: Hola, y bienvenidos de nuevo al Taller de Diseño de
Juegos Pecado real cinco
Acción de mazmorra procesal Un curso de creación de Psy Anteriormente, creamos
nuestra cadena de eventos desde el
modo start play of game para mostrar nuestro menú principal, y creamos un evento personalizado
que crea el widget, lo
almacena en una variable y lo agrega a la ventana gráfica También programamos la funcionalidad del botón
Quick con el uso del evento de conflicto, y usamos el nodo de juego Qi. Ahora, con lo que vamos
a continuar
es con la funcionalidad de inicio del juego. Pero antes de entrar a
programar el botón de inicio, vamos a explicar un
poco nuestro sistema. Entonces lo que vamos a
tener es un generador de laberinto. Eso va a estar
construyendo el nivel, como lo que quiera. Vamos a crear algunas reglas. Tendremos algunas reglas
en el generador, cómo funcionará en la
creación de un nivel. Pero ese nivel tiene
un inicio y un fin. Y ese fin será
desovar otro generador. Pasará de generador mas a generador
ma a generador mas, y tendrá algunas reglas y cada vez más grande, etcétera Entonces, cuando iniciamos un juego, cuando presionamos digamos que
tenemos el modo de juego, y desde el modo de juego,
generamos el menú principal El menú mínimo puede twit o puede comenzar. Aquí es donde vamos a estar desove el generador de laberinto Ahora, ese generador de laberinto, necesitamos tener una opción
que sea la primera, o es alguien en el
medio o al final,
ahí es cuando el jugador pierde. Entonces hay varias
formas de hacer esto. La forma en que lo vamos a
hacer es que vamos a exponer una variable. Esto es exponer una variable que
va a estar haciendo tictac. Básicamente, va
a ser un lingote que le diga al laberinto, eres el primero o no, lo cual es una
forma muy sencilla de hacerlo Ya que vamos a estar
engendrando a este actor, y cada actor
vamos a estar engendrándolo Ahora bien, lo que esta variable
hará por nosotros ahora para la primera parte de nuestro programa. Se diferenciará
al laberinto que si eres el primero, luego avanza la carga Esto es cargar la pantalla de
carga. Entonces tendremos una
barra para cargar rellenando ya que el generador está construyendo el laberinto
y está listo para jugar No. Empecemos. Comencemos por crear nuestro plano generador de
laberinto. Vamos a ir al
contenido. Vamos a ir a la carpeta de contenido, y clic derecho y nueva carpeta. Voy a ponerle nombre planos. Ahora, empezamos a tener
muchas carpetas, y básicamente lo que
podríamos hacer es simplemente hacer clic derecho
sobre los planos y establecer color Voy a ponerla en azul. Al ir a la interfaz de usuario de la carpeta, haga clic
derecho y establezca el color. Se lo voy a
decir a azul claro. Y vas a necesitar
cualquier otra carpeta rápidamente. Tal vez carpeta de arriba hacia abajo. Va a ponerla en verde. Y ahora puedo ir rápidamente de cada carpeta plegada en
función de sus colores. Ahora, dentro de los planos de
carpeta, vamos a
hacer clic derecho y crear una nueva clase de blueprint Ahora, cuando hago esto, aparece
el menú que me dice, ¿quieres crear
una clase de plantilla o
algo a partir de una plantilla
que ofrezca de verdad? Si podemos s hay un montón de clases que se pueden crear. Lo que queremos ahora mismo
es una clase de actor. Básicamente, es Un actor es un objeto que se puede colocar
o engendrar en el mundo Básicamente, todo es un
objeto que se puede colocar, pero todo tiene
algunas reglas extra. El actor es el más vacío. Por ejemplo, el
plano de personaje que tenemos nuestro personaje de arriba hacia abajo
tiene, por ejemplo, una esfera de colisión, no
una cápsula de colisión, lo
siento, y una malla estática, y una dirección estrecha a punto Tiene el componente de movimiento, que es exclusivo de la clase de
carácter. En fin, le estoy explicando a
muchas cosas quizá ahora mismo. Entonces iremos a crear un actor. Y vamos a
nombrar a este actor PP Mazen cinta todo y abrir el generador laberinto Voy a ponerlo aquí mismo. Ahora, lo primero
que vamos a hacer es crear una variable. Vamos a ir a Variables y presionar este
símbolo más por aquí. Y ya lo hizo
un lingote como queríamos diferenciar si el
laberinto es la primera pieza, o sigue construyendo Voy a nombrarlo en Tu. Voy a nombrarlo continuar. Quizá no sea el mejor nombre, pero ya haremos el trabajo. Ahora, voy a volver
al menú principal y voy
a ir al botón de inicio, que es variable,
nombra a botón art. Y voy a
presionar al click porque lo
hicimos al click en lamer. Deberíamos hacerlo en
botón de arte. También en click. Ahora bien, ¿cómo traigo al mundo a este
actor? Utilizamos un nodo llamado actor
de piedra de clase. La clase, vamos a estar seleccionando para ser el generador de
laberinto. BP laberinto gener. Ahora, aquí tiene otra opción. Se llama transformar. Lo que es transformar, para
los que son nuevos transformar es un grupo de información, es una estructura de información. Vamos a hablar de algo más
sobre la estructura, pero no es una variable
estructurada Es una variable única que
contiene tres vectores. Y si hago clic derecho
sobre él y lo divido, podemos ver que contiene la ubicación de transformación
hijo, la rotación de transformación spon, y la escala de transformación spon, que es tres unidades vectoriales Uno de ellos es un rotador. Los otros dos son
sólo vectores normales. Esto quiere decir, queremos popawe
a este actor, pero ¿dónde queremos engendrarlo con qué rotación,
y qué Por ahora, no por ahora, en realidad, vamos a
engendrarlo en el lugar cero, cero, cero del mundo, cero, x, cero, y cero,
y con la
rotación normal y la escala predeterminada Antes
decíamos que le vamos a especificar esto a este generador de laberinto, si es un continuar o no. Hay muchas
maneras de hacer esto. Te voy a mostrar
rápidamente dos formas. Vamos a ir a este spawn y de aquí a partir del
valor de retorno, obtenemos el, la
referencia real a lo que
spond el actor que charcamos Yo puedo hacer desde aquí,
lo que puedo hacer es establecer continuar como pueden ver, el objetivo es actor
que acabamos de patear. Y el valor, podemos
fijarlo en sí o en no. Otra forma de hacer
esto, voy a borrar esto es ir
al generador de laberinto e ir
a la variable continuada, que es edición de instancia
y está expuesta en span. Esto significa que si compila
ahora mismo y guardo, vuelve al menú principal y vuelve a seleccionar esto porque
no se actualiza automáticamente A veces lo hace.
Yo voy a volver a seleccionar este generador de Maze Ahora tengo esta
opción por aquí. No voy a marcar esto,
sí, voy a dejarlo no, y cuando esta cucharas, por defecto, se apagará. Ahora, para nosotros, esto está por defecto
desactivado y queremos apagarlo. Cuando estamos desconchando
el laberinto para continuar, aquí es donde vamos
a estar cogiéndolo Entonces, para demostrar que hemos
engendrado esto en el mundo, vamos a ir al generador
de laberinto Vamos a ir
a su gráfico de eventos, y en start clay, vamos a traer cuerda, y ellos laberintan como propios. Ahora, antes de vivir aquí, deberíamos hacer una cosa más. Estamos echando a perder el generador de
laberinto. Pero lo siguiente que
deberíamos estar haciendo es eliminar nuestra
parte visual del widget. Desde nuestro viewpot. Y para ello,
vamos a quitar de parte. Este es el nodo que se utiliza para ello. Y para el objetivo,
vamos a tener uno mismo. Objetivo generalmente en nodos
significa quién está haciendo esto. Si vamos al modo de juego
y a la derecha, eliminamos de parte. Vamos a ver
sensible al contexto, no existe. Pero si me quito esto, lo
podemos encontrar. Como puedes ver pertenece
al widget de categoría. Entonces esto significa que está
haciendo algo para un widget.
Voy a darle click. Y si conecto esto aquí, no pasará nada porque el modo de juego no es un widget, solo
dispararé
un error o nada. Pero si conecto el menú principal del
widget, que hemos guardado
en nuestra referencia aquí para eliminar de Parent, sabrá
que este
widget menú principal, digamos que hemos
creado cinco de estos, y solo hemos
guardado uno de ellos. Este de ellos que
hemos guardado
como variable se
eliminará del padre. Ahora, voy a borrar esto y vamos a dejar
esto y eliminar de padre. El propio objetivo.
Estamos en el widget, en pila y guardar,
y vamos a jugar. Ma pulse play, Maze gen tiene pone y se elimina el
widget. Creo que este es un buen punto de
parada para este. Te voy a
ver en la siguiente. Adiós.
6. Creación de una pantalla de carga: Hola, y bienvenidos al taller de
Diseño de Juegos bajo motor cinco Curso de creación de RPG de
acción Procesal Dungeon Curso de creación de RPG de
acción En la
lección anterior, agregamos que realidad creamos el generador de
Blueprint Maze, y lo generamos a través de
nuestro menú principal Botón Inicio También agregamos una variable en
el generador de laberinto que
expusimos para poder configurarla cuando estamos
desove el laberinto, y esta variable fue
la variable continue, que diferenciará para nosotros si esta es la primera pieza, o es una pieza que
continúa el juego? En esta lección,
vamos a continuar con la
creación de los primeros
pasos de la lógica, que es mostrar la pantalla de
carga o no. Voy a eliminar esta pantalla de
impresión aquí, sonar, y voy a
presionar B y hacer clic, o de lo contrario podría tener
clic derecho y escribir rama, y voy a traer una sucursal. Ahora bien, ¿qué es una sucursal? Básicamente una sucursal
es una declaración I. Es cierto o falso basado en una condición
que hemos aplicado. Y la condición aquí sería. Entonces, básicamente, ¿continúa
el laberinto desde antes, o es la primera pieza? Ahora, ya que creamos el
menú principal en el modo de juego. Necesitamos crear otro widget para hacer la pantalla de carga, y eso nos lleva a
crear un nuevo widget. Entonces vamos a ir
a la carpeta UI. Voy a hacer clic derecho
y voy a Interfaz de usuario, Blueprints de
widgets, y
voy a seleccionar widget de
usuario nuevamente Voy a nombrar a este
WG cargando cargando. Y voy a abrirla. Yo para traerlo aquí, y voy a
guardarlo todo. Ahora, vamos a estar
usando un cavas de nuevo. Y esto no es un problema
porque en cualquier caso, menú
principal se ha
eliminado de un padre cuando empezamos. Por lo que tener otras
convas no es un problema. No es que tener dos convases, o e tres o cuatro
sería un tema enorme Ahora, voy a
seleccionar una imagen, agregar como fondo, y voy a
anclarla a pantalla completa. Voy a poner a cero
las compensaciones. Como puedes ver,
llena toda la pantalla. Voy a ir en ajustes de
pincel, una nueva configuración que
estamos explorando, que es básicamente cómo se ve
algo.
Traemos un botón. En realidad, vamos a
demostrar. Dónde está el juego, podemos ver que cuando coloco el cursor
este botón cambia de color Entonces voy a nuestro menú principal y voy a
diseñador. Pick en los botones. Podemos ver a continuación la ranura
y los ajustes de alineación. Podemos ver que
hay estilo de apariencia, que tiene muchos
ajustes para establecer el
estilo de botón, cómo se ve. Ahora, volvamos a cargar, y vayamos a nuestro ajuste de
apariencia. Entonces en estos ajustes, tenemos este color de pincel. Podemos seleccionar una
imagen que queramos, pero por ahora, sólo vamos
a usar la habilidad de tinte. Ide y convertirlo
a un color negro. Y tenemos un fondo negro
para nuestra pantalla de carga. El siguiente elemento que necesitamos se
llama barril de progreso. Este es otro
elemento único como los botones. Cuando los presionamos,
hacen algo. Esta es una barra que llena en
base a un porcentaje. Quiero decir un poco antes de que lo consigamos. Vamos a ver que hay un estilo. También están los
ajustes que conocemos, los ajustes que colocamos en la posición, el anclaje, la alineación, y el estilo, que también tiene muchos
ajustes. También hay debajo de él otro escenario que
se llama progreso, que es exclusivo de
la barra de progreso. Si aumento el porcentaje, se
puede ver que llena esta barra. Es Progreso Martín. Sí. Y tiene algunas habilidades
para ser llenado en base alguna dirección y
muchas otras opciones. Ahora, para nosotros, solo
cambiaremos tal vez los rellenos de
fondo y la imagen. Entonces, lo que vamos a
seleccionar va a ser la opacidad de la barra T. Esto es lo que queremos para
nuestra imagen de fondo. Y esto es también lo que
queremos para nuestra imagen de campo. B y opacidad de barra. Oh, un poco. No queremos que la
parte del progreso esté ahí arriba. Queremos que la parte del progreso
sea acorde en el medio. No vayas a las
compensaciones de posición. Y para el tamaño, en realidad
podemos mordernos. Pongamos alineación Y X como
en el medio. Buen punto. Y. Ellos 1,500 tal vez 600, 1,600 o X tamaño, y digamos 50
se ve bien o talla y. ahora, vamos a engordar con el color Vamos a llenar la barra b. Pongámosla en 1%. Ahora, voy a ir a tinte de imagen de fondo y seleccionar algo un
poco más grisáceo. Más. Esto está bien. mejor poner un punto Alfa, lo mejor poner un punto Alfa, para que haga una prohibición, no
lo hace, pero también lo hace si aumentamos
a disminuir, 2.3, se puede ver prohibición. 0.8, y algo está bien. Ahora bien, si voy a cambiar el
tinte en la imagen de relleno, van a ver
que
realmente no cambia el color que quiero. Esto se debe a que esto se está
llenando con esta opción aquí, aquí relleno de color y opacidad, que es un ajuste diferente para el color de la imagen que aplicamos Entonces vamos a cambiar
el color por aquí. Lo vamos a poner en rojo, un poco más oscuro,
un poquito más. Este 2.8. Bueno, tal vez 0.9 vino, y tal vez darle un verde cero también un poco más ligero
hacia la luz naranja. Bien, creo que se ve bien. Y ahora tenemos una barra de carga
espeluznante o plogra
cuadrada no tradicional Bien. Ahora el siguiente elemento
que necesitamos es un texto. Voy a traer
una variable de texto, que es sólo una variable
que estamos escribiendo texto. Voy a
anclarlo al centro. Voy a poner a cero
las compensaciones. Tamaño, vamos a alinearlo a 0.5. S cinco. Este, tal vez tres. Tres está bien. Esa longitud, vamos a
escribir primero el texto. En el texto de llegadas. Tenemos diferentes opciones de nuevo. Entonces en este caso,
tenemos contenido, que es lo que está dentro el
texto. Debajo de él, podemos manipular
nuestro texto nuestra fuente, nuestra opacidad final polar Lo haremos en un segundo.
Ahora, para el texto, vamos a escribir flo en mayúsculas. Vamos a dimensionar esto hasta la
fuente que es ojos de fuente. Yo ciento 30 forte. 35. Esto se ve bien. Un ojo aquí si
está exactamente en el, está casi en el medio Está bien, está bien.
Cambiemos el texto también. Nosotros No color rojizo el blanco
es fino, cualquier cosa. Puedes cambiar el pacity
o uno o el perno base, luz
tardía, regular
a lo que quieras Para nuestros propósitos,
ahora mismo, esto está bien. Podríamos ir a
animar el texto
y desvanecernos y desvanecernos
a través de la bañera de animación, crear una animación,
pero no
vamos a hacer la
compilación Y Ahora, ¿cómo vamos
a utilizar esta barra a través del juego para aumentar bien
su porcentaje En primer lugar, le
vamos a nombrar
barra de carga y hacer que
sea variable porque queremos
hacer algo con ella. Y queremos hacer algo con alguna parte de la
parte visual del widget que hemos dicho? Tenemos que convertirlo en una variable. Si quisiéramos cambiar el texto, por ejemplo, teníamos
que hacerlo variable. Queríamos cambiar
la imagen de fondo? Tuvimos que convertirlo en una variable. Oh, barra de carga, ahora
es una variable. Vamos a la gráfica, y vamos a traerla
para mostrar algo. Y cuando arrastre de esto, puedo hacer qué porcentaje. Y este porcentaje es el valor 0-1. Básicamente, es una
variable de flujo que se establece por completo. Como podemos ver que es
el mismo valor que aquí 0-1. Podemos establecerlo en dos, pero no
va a tener ningún efecto. Es por debajo de cero o por encima de cero. Entonces es una variable de cero a
uno. Fuera. Y esta es la forma en
que fijamos el porcentaje. Pero cuando yo cuando
creo el widget, por ejemplo, en el modo ga. Lo guardo en una variable. Si este widget tuviera
la barra de progreso, este widget por si acaso tiene estos
dos botones como variables. En este widget, puedo
llamarlo aquí g mode. Puedo llamar a estos dos botones desde esto porque
tengo una referencia al mismo. C es el botón de inicio para ello. Puedo obtener una referencia al mismo. Entonces de la misma manera lo
haría al crear el widget de carga
y almacenarlo en una variable, podría obtener mi variable de
referencia y llamar al botón de inicio
o la barra de progreso. Pero esto también está llamando a
algo una y otra vez. Lo que vamos a hacer es que
vamos a crear una función que tenga, vamos a ir a la gráfica. Voy a copiar esto
entrar en la función. forma en que creé la función es una función aquí y
presiono el símbolo más, y crea una nueva función. Así que voy a crear una
función y pegar esto en. Entonces cuando yo cuando
quiero todo esto en realidad, puedo llamar a esta función
desde el propio widget. U
Esto lo voy a demostrar en un segundo. Ahora bien, para los que
conocía, ¿qué es una función? Bueno, en definitiva, es
un conjunto de instrucciones que se pueden
llamar fácilmente y repetir. Al igual que cuando uso un cierto
conjunto de instrucciones a menudo, puedo ponerlas en una función
y no escribir ese conjunto de instrucciones cada
vez que las necesito. Hay muchas
reglas sobre la función. Una regla importante es que
no pueden involucrar el tiempo fácilmente. No se pueden tener
nodos de retardo o nodos de línea en iones puede haber cosas que se
llaman funciones puras. Hay cosas que de todos modos, me estoy poniendo demasiado en ellas. Por ahora, consideremos a
las funciones un conjunto de instrucciones que
podemos llamar cuando queramos. Y en este caso, el
conjunto de instrucciones que queremos es establecer el porcentaje
de la barra de carga. Ahora, cuando llamo a una función, puedo tener algunas entradas, como por ejemplo, vamos
a traer la función aquí. Ahora mismo, es solo llamar a la función para hacer
lo que sea que haga. Si arrastre este cable por aquí, dice, agregue pin al nodo. Hagamos esto. Creé una variable de entrada
para esta función. Vuelvo a la gráfica. Puedo ver que esta
función ahora tiene esta variable en porcentaje. Puedo hacerlo de otra manera que puedo agregar elegir la
función y
bajar a sus detalles en entradas o salidas porque
función puede tener una salida. Por ejemplo, digamos esto como una acción, devuelve
verdad. Yo tendría una rama
que si esto
sucediera, vuelve verdadero, si no
sucede, devuelve falso. Pero voy a
igualar demasiado en detalle. Ahora bien, esta es la otra forma de agregar entradas o salidas
a la función. Vamos a usar
esto mucho después, y
lo vamos a explicar mucho mejor. Pero por ahora, vamos a
usar esta entrada en porcentaje y nombrar la
función en porcentaje. No hay ninguna razón real
porque como puedes ver, esta función es
la misma que esta. Además de eso no quiero estar
llamando a la
barra de carga cada vez. En cuanto al rendimiento,
no es realmente un gran problema. Llamar a la barra de carga cada
vez desde la referencia. Ya que estamos usando
la referencia de todos modos. Es
solo por eso
me facilita simplemente llamar por ciento. Creo que este es un buen punto de
parada para este. Te voy a
ver en la siguiente. Adiós.
7. Agregar la pantalla de carga al modo de juego: H. Hola, y bienvenidos de nuevo al taller de Diseño de
Juegos, y real Engine five procesal Dungeon action ps curso de
creación En nuestra lección anterior, creamos nuestra pantalla de carga, nuestro widget de carga,
y creamos la función para establecer el
porcentaje de la barra de carga. También diseñamos en
bares y todo. Y ahora vamos a
agregarlo a nuestro puerto de vista. Vamos a ponerlo en nuestro juego. Así que vamos a alojarlo de
nuevo en el modo de juego. Con eso, quiero decir,
vamos a crear un evento. Te show cargando. Y vamos a copiar y
pegar el código aquí. Vamos a eliminar esta parte. En realidad, no todo.
Vamos a deshacer. En lugar del menú principal, vamos a elegir
el widget de carga. Estamos mostrando cargando,
estamos creando el widget. Lo estamos almacenando en
una carga variable. W ¿underscoreding?
Voy a conectar esto. Es un poco
más recto y trae la variable Carga de Madera. W G. Empezamos a tener cosas aut aquí, así que comencemos a comentar. Al ir a seleccionar el evento de
inicio de juego, vaya a presionar C, y escriba B Anu. Entonces voy a seleccionar
los dos en realidad. Para llevarlos a
un lado y escribir pulse C y escriba Widgets. Voy a hacerlo un poco más grande. Y voy a seleccionar
el menú principal del espectáculo. Tipo mostrar menú principal. Y lo mismo en el tipo
de carga show ping. Y voy a
cambiar el color de este comentario a
algo así como azulado. Y hemos empezado a
tener algo de orden aquí. Ahora vamos a
compilar y guardar, y esto trae nuestro
widget a nuestra ventana gráfica Ahora bien, ¿dónde llamamos a esto? Volvamos a
nuestro generador principal a nuestra sucursal continue. Vamos a
dar esto por ahora. Ahora bien, si es verdad, si es continuar, vamos
a ver más tarde qué está pasando. Pero si es falso,
vamos a seleccionar, vamos a encontrar un nodo
llamado Get game mode, y esto nos da acceso
a nuestro modo de juego actual. El problema aquí es que este es un nodo
genérico Get game mode. Significa que devuelve un objeto genérico basado en el modo de
juego, como podemos ver en
el valor de retorno. Entonces cuando quiero mi modo de
juego específico, este modo de juego, usamos un nodo que se llama
casting. ¿Qué significa “casting”? Es básicamente
pregunta lo que sea que
seamos objeto que estamos probando si es de
una clase específica. Voy a hacer pedir al modo de juego de
arriba hacia abajo. Entonces ahora estoy consiguiendo el
juego de, y estoy preguntando, es este el juego d
que se está ejecutando en el juego el juego de que en
realidad está activo en este momento. Si es así, podemos sacar un
cable del fundido puro. Si no lo es, no será lo más puro, lo
siento, desde el final del reparto O si no lo es, fallará. Ahora, cuando saco un cable
de la parte de éxito, también
tengo otra
variable que dice, S BP juego de arriba hacia abajo d
Esto significa que
en realidad podemos llamar directamente a nuestro modo de juego de arriba hacia abajo que
estamos usando en este momento. Esto significa que tengo acceso
a todas estas variables que creamos y almacenamos cuando se
están creando. Si no se crean, estas
variables estarían vacías. Ahora, volvamos
al generador M. Como pueden ver, tiene
este ejecutar pines, y cuando cometí el error antes llamé a este elenco puro. Quería demostrar
que hay una manera no
tener esto como ejecutar. Se llama convertir
a fundido puro, eliminar los
pines de ejecución para hacer que el nodo sea más versátil nodo. El reparto aún fallaría, lo que resultaría en una
entrada no válida en la salida, lo siento. Lo que esto significa es que crea
una variable de éxito. Entonces podemos tenerlo,
por ejemplo, en una rama, si había posibilidad de que
esto no fuera nuestro modo de juego. 02, por ejemplo, código de error. Este plano, y podríamos
tener como si esto es falso, entonces decir error, el juego
está mal, por ejemplo Pero no vamos a hacer esto. Sabemos que nuestro juego
va a ser este. Entonces lo que vamos
a hacer es bebernos de aquí y promover variable Y en realidad, esto podría
hacerse antes de la sucursal. Voy a tomar esto aquí. Y cuando promovimos
a variable, usaba el nombre como
BP top down game old. Entonces esto es muy
conveniente para nosotros. Y tenemos esta referencia, y podemos simplemente arrastrarla y soltarla sobre la
variable que creamos. Oh, cuando arrastras y
sueltas con el mouse, puedes obtener un get o un set. Un get es obtener la variable, un setter es algo lo
que estamos configurando
la variable Hay un
atajo rápido para esto. Si arrastro con control
y lo suelto, o si arrastro con
lt y lo suelto, obtiene un getter o un setter
con lt. Ahora, rete esto A partir de aquí, vamos a
seleccionar la pantalla de carga. Ahora, yo nuestro continuar es falso, entonces estamos mostrando
la pantalla de carga. Si presiono play ahora, presione iniciar juego, podemos ver nuestra
pantalla de carga, aquí está. Hemos
agregado con éxito la pantalla de carga. Ahora, profundicemos un
poco más en cómo va a funcionar
nuestra pantalla de carga y cómo
va a funcionar nuestro generador de laberinto. Oh, voy a abrir la pintura. Consideremos esta
nuestra barra de carga. Y como decíamos, vamos a estar llenando
la barra de carga en base al porcentaje de
nuestra generación de laberinto. Pero si consideramos a
esa generación Maze, hablemos un poco
sobre la generación M, cómo va a funcionar. La forma en que va a funcionar
es que va a estar agregando algo que
vamos a llamar un azulejo. Y va a estar agregando
mosaicos basados en algunas reglas, y va a
crear una forma. De un laberinto de lo que sea. Ahora agregando estas fichas y creando las formas en que el jugador
se va a mover, por ejemplo, va a estar
creando bloques y cosas. Llamemos a esta fase uno. Llamemos a esta fase uno. Esta sería una
manera fácil de llegar a la carga, eres este porcentaje
basado en cero a máximo i madera Esto es una x no una t Así que cero a max sería el
porcentaje de la barra de carga. Pero después de eso, nuestro laberinto va a hacer otras
cosas, va a estar creando muros, va a estar
cambiando materiales, va a estar
desconchando cosas Entonces esa fase es un
poco de interrogación, qué tan grande es cuánto porcentaje va a ser de
esta barra de carga. Entonces lo que vamos a hacer, vamos a poner falsos. Digamos que esto es 0.2%, esto es 20%, lo siento
porque es valor 0-1 Entonces esto va a
tomar 0.3%, por ejemplo. Vamos a establecer
porcentajes falsos porque realmente no sabemos ni siquiera cómo va a responder a esto
la computadora del jugador. Algunas acciones están basadas en GPU, algunas acciones están basadas en CPU. Entonces sí, vamos a estar
estableciendo porcentajes falsos. Esto suele ser lo que ves cargando barras yendo, deteniéndose, subiendo a un punto con una gran velocidad y
luego deteniéndose y luego avanzando porque para los que son usuarios más
avanzados, algunos for loops tardan más. Entonces para los bucles congelan
la cama puede haber bucles
anchos que congelen
completamente la computadora. Aquí es donde suele ser esta
la parte en la que no podemos ni siquiera una tina en ciertas barras de
carga. Sí, de todos modos,
depende de que haya formas hacer esto siempre más avanzado y hacerlo sin fisuras y
poder controlar tu
computadora por completo y ser muy específico con un enorme conocimiento técnico
y parte de diseño en el juego. Pero para nosotros, vamos
a utilizar algunas formas básicas. Ahora, voy a cerrar esto, y creo que este es un buen punto de
parada por ahora, y vamos a demostrar estas acciones en la siguiente. Digamos, por ejemplo, tendremos un mosaico
mínimo de cero
a un mosaico máximo y estableceremos un porcentaje de esta barra el porcentaje
de cero a mosaico Mx. Vamos a parar aquí. Te voy a
ver en la siguiente. Adiós.
8. Creación del algoritmo de laberinto: Hola, y bienvenidos de nuevo
al taller de Diseño de Juegos, Y real Engine five
Procesal Dungeon action Un curso de creación de Ps Anteriormente, terminamos
con la barra baja de Dan, y explicamos cómo
se va a llenar. Utilizamos el
modo de juego para engendrarlo. Y a esto lo llamamos patear
nuestro Me desde nuestra referencia de
modo de juego Ahora, en esta lección, continuemos con las matemáticas requeridas para llenar
la barra de carga. Vamos a
crear una función. Vamos a nombrar a este lc calcular la
carga de baldosas. Eso está bien. Vamos a hacer
esta función. Vamos a seleccionar
la función tal como se abrió y l la pura. Como decíamos, las funciones son como plantillas de código
que podemos repetir a menudo. Y sus funciones, hablamos
un poco de ellas. Son para
realizar operaciones. Esto significa que
necesitan una salida, y no tienen
una línea de ejecución. Podemos ver una línea de
ejecución aquí, pero si la traigo al
gráfico de eventos en un arrastre aquí, se
puede ver que no
tiene una línea de ejecución. Si queremos que esto se ejecute, necesita tener una salida que podamos
conectarla a alguna parte, y requiere la información
de esta función. Por regla, la función pura no
debería tener setters en ellas, no
debería alterar los datos Sólo deben hacer operaciones. Se pueden alterar datos
dentro de una función pura. Puedo poner un setter aquí, pero como que derrota
el propósito de las técnicas de optimización opt que tiene irreal para
usar Ahora, cuando creé
una nueva salida, agregué un float para mí porque
tengo lo dejo alrededor
con las variables. Para ti, si no es un flotador, puedes escoger el
tipo e ir a flotar. Podría ser un bulion por defecto. Vamos a nombrar a esta salida dos
pares tocan dos por ciento. No. Tenemos nuestra función,
tenemos algunas funciones, y necesitamos algunas operaciones que se
hagan aquí. Para ello, vamos
a necesitar en primer lugar, dos variables, va
a ser una variable, va a ser y la otra variable
va a ser actual es. Como se puede ver, mis
variables son enteras porque listo explicar
que estaba haciendo algo, pero se mantuvo el tipo. Para ti, si no es
un entero, de nuevo, puedes dar click en el
tipo y pasar de Bleion o lo que
sea a integer Ahora, vamos a traer estas
dos variables aquí. La fórmula para encontrar, digamos, la percenta de los
mosaicos actuales hacia los mosaicos machos sería dividir los mosaicos
actuales con
los mosaicos máximos y
multiplicar eso con 100 Sin embargo, lo que queremos
es calcular las proporciones de
los mosaicos máximos a los mosaicos actuales
en forma de porcentaje. Entonces, para hacer eso, simplemente
invertiremos esta división y dividiremos los mosaicos máximos a
los mosaicos actuales. Y debido a que estos son enteros, y la división de
esto va a dar un flotador, sólo
vamos a hacer que
esto haga que el motor, considere esto un flotador Entonces vamos a hacer
dos conversiones de flotación. Voy a copiar esta
conversión y conectarla aquí. Ahora vamos a dividir
esto y multiplicarlo por 100. Ahora, lo que tenemos es
la representación de la proporción de
mosaicos máximos a los mosaicos actuales. Pero queremos que esto llene
hasta el 40% de la barra, no vaya por encima del 40%. Entonces lo que vamos a hacer es
dividir de nuevo por
40, 40 dividido por este factor de
escalado, y es escalar porque las teselas
actuales van a estar cambiando, y vamos a conectar
esto con el porcentaje. Lo que hace esto
en realidad se está normalizando, significa que lo pone en
contexto A que 40 es el máximo. Espero que esto se entienda. Fuera, vamos a seguir llenando la
marca de carga con este porcentaje. Y en realidad vamos a
demostrar esto, cómo lo vamos a hacer.
Demostrar algunos porcentajes. Entonces voy a arrastrar de
aquí y una carga de Madera. Y aquí está la variable que almacenamos el modo de juego de
arriba hacia abajo. Cuando arrastre desde aquí,
arrastro directamente desde el
modo de juego de arriba hacia abajo porque hemos almacenado este
modo de juego como una variable. Oh, vamos a establecer por ciento, que es la función
que hemos creado. Y conecta esto aquí. Si lo dejo como e, lo que
va a hacer es más allá de cero. Pero digamos, por ejemplo, nuestros mosaicos máximos son 20, y nuestro mosaico actual lo es. Entonces esto debería llenar nuestra barra
de carga al 20%. Y creo que efectivamente, 40% estaría aquí, el
50% en alguna parte de aquí. De hecho, vamos
a llenarlo con 20 de 20. Sí, ahora construyó el
40% del bar, creo que 50 está en algún lugar de aquí. Y funciona correctamente. Ahora, una cosa más que
tenemos que hacer, creamos estas dos variables, estilos
máximos y mosaicos actuales. Lo que debemos hacer es
exponerlos en Saw, realidad solo los estilos máximos, no los mosaicos actuales, exponerlos en Saw y hacerla
instancia comestible Entonces cuando vamos a nuestro menú
principal en la gráfica, vamos a compilar y guardar, no lo
ha audado Pero si vuelvo a elegir
el generador de laberinto, ahora podemos ver que
tenemos estilos máximos por aquí con el valor
predeterminado de 20. Dos explicaciones más. ¿Qué significa esto
el valor predeterminado? Cuando creamos una variable en el blueprint en cualquier blueprint En primer lugar, requiere
compilar el plano. Entonces si por favor compila, entonces podemos ver
en los detalles sobre el valor predeterminado que
podemos poner cualquier valor que
queramos para este blueprint cuando no se establece
desde ningún otro lugar, el valor que establecemos para un valor predeterminado se mantendrá
cada vez que lo pospone Y la otra cosa de la que
quería
hablar era la instancia editable Entonces, lo que significa engendrar un
plano es que, por ejemplo, si traigo aquí
este generador de edad, traje una instancia
de esta clase Como hablábamos,
todo es un objeto, y las clases son formas de decirle a los objetos qué hacer en un modo
preestablecido de plantilla. Y cuando los estoy
trayendo al mundo, estoy trayendo instancias
de ellos. Sí. Eso es lo que quería
agregar porque ya
usamos la Instancia editable
dos veces o tal vez más, y no hubo
explicación al respecto Ahora, restablecemos nuestros
valores a los valores predeterminados. Voy a eliminar
esta nueva variable. Voy a establecer mosaicos
actuales a cero, y voy a establecer mosaicos máximos. En realidad, lo voy
a dejar 20 ¿Cuál sería nuestro próximo
movimiento ahora mismo? Nuestro siguiente movimiento sería
posponer el primer
azulejo para el laberinto Y para ello,
necesitaremos un plano de azulejo. Voy a ir al contenido. Voy a ir a planos, y voy a crear
un nuevo blueprint de
tipo actor y llamarlo archivo de subrayado
PP Antes de continuar realmente y comenzar a desovar
azulejos y todo, hablemos un poco
sobre nuestra generación de laberintos Comencemos con este primer azulejo que vamos a desovar.
¿Qué significa esto? Bueno, la forma en que nuestro laberinto
va a estar funcionando, va a estar
mapeándolo en base a una cuadrícula
bidimensional, cuadrícula x e y. Y esto estará
representado por valores de negativo y
positivo y cero. Y nuestro primer estilo, lo
consideraremos como un azulejo 0.0. Ahora, cuando queremos
agregar algo,
digamos, por ejemplo, en Norte, vamos a estar
sumando en X es el valor para y Sur e y es el valor
para oriente y oeste. Pero nos
aseguraremos de eso cuando lo
estemos haciendo en
las direcciones mundiales. Entonces digamos para Norte, queremos aumentar uno, la x y la y permanezcan
iguales, o para Sur, queremos deca x, cero on Lo mismo se
podría hacer para y si quisiéramos para izquierda y derecha
este y oeste, básicamente, será 0.1
y cero punto menos uno Esa es nuestra coordenada interna que esta pieza
pertenece al punto cero. Esta pieza pertenece al 1.1. Esto pertenece a un
punto menos uno, etcétera. Pueden ser 25. Cualquier número, esta será nuestra representación están mapeando
los almacenados en una variable. Ahora, además de eso, lo que
necesitamos a la hora de responder ile, tiene cierta corbata. Entonces lo que vamos
a estar haciendo tomando este tamaño y
multiplicándolo por el, la ubicación de la
maza, por ejemplo,
si nuestra primera baldosa es 600, si nuestra primera baldosa es 600, ocupando
este espacio Cuando sumamos el segundo,
digamos, por ejemplo, norte, serían 0600 multiplicados por uno y
600 multiplicados por cero, así que encajará exactamente aquí Nuestros cuadrados, nuestros mosaicos
serán los mismos porque 600 multiplicados
por cero y cero está aquí y cien
multiplicados por uno, nos
lleva a la
ubicación mundial de x es igual a 100, donde esta x es cero. Oh, creo que esta es
suficiente explicación por ahora a medida que avanzamos
con la creación del laberinto. Vamos a explicar más cosas, pero esta es una primera
introducción sobre las variables que vamos a crear en la siguiente lección para
almacenar esta información. Preguntándote una siguiente. Adiós.
9. Creación del primer mosaico: Hola, y bienvenidos de nuevo al Taller de Diseño de
Juegos y motor
real cinco procedimientos Dungeon acción RPs curso de
creación Entonces, en la lección anterior, creamos la carga de baldosas
calc, la función que calcula qué porcentaje de mosaicos
actuales fuera de max es el 40% de la barra y
nos da un porcentaje de la misma Ahora, también hablamos un poco sobre las variables y la cuadrícula
bidimensional de nuestro laberinto y cómo
vamos a mapear nuestros mosaicos que se generan en una cuadrícula
bidimensional Ahora, comencemos a crear algunas funciones y variables
que vamos
a utilizar para manipular estos datos y crear reglas sobre ellos y
generar el primer mosaico Entonces lo primero que
voy a hacer es crear una función llamada archivos propios. Por supuesto, vamos a
necesitar la rama continue, así podemos diferenciar si
este es el primer estilo que genera basado en todo el juego, o es una pieza continua Vamos a usar esto porque
vamos a tener
una pieza de introducción, como vamos a
tener un globo que represente cómo el jugador se
metió en este laberinto Y cuando
continuemos, ese slot, que engendraremos el
globo será el slot que nuestro elevador nos lleve del nivel anterior
al siguiente nivel Entonces cuando estamos creando
el primer azulejo, que tomar en
consideración que cuando el laberinto anterior,
vamos a traer pintura. Entonces, si tenemos nuestro
laberinto en el nivel uno, digamos, el cero
en el eje D cero. La siguiente pieza que
vamos a engendrar, el siguiente laberinto este es un laberinto Laberinto de agente, como
quieras llamarlo Pero la siguiente pieza
que queremos engendrar, donde quiera que genere arriba
y se cree a sí misma, queremos tener una
correspondencia con el laberinto de abajo que
tenemos una elevación de aquí, y vamos a subir Entonces esta pieza de aquí
tiene que estar vacía. Y en la primera
pieza del maíz, digamos que el inicio está aquí, esta pieza queríamos que fuera
el globo al que venimos. Venimos de. Vamos
a continuar con esto. Ahora bien, por eso
necesitamos que esta rama se divida entre dos acciones si se trata de un continuar o
no en el primer mosaico. Ahora, como hicimos en el
menú principal y usamos el nodo spontor, lo mismo que haremos
aquí para patrocinar desde clase, y la clase que
vamos a usar es la baldosa BV Vamos a dividir la transformación
spon. Ta ubicación. Hablé un
poco sobre ubicaciones en las explicaciones anteriores, y lo que quería
agregar fue que cuando
estamos en el nivel, hay un
sistema cartasiano de x, y, y z, de
esto es de lo que estaba
hablando que
nuestro primer laberinto Z cero,
y el segundo laberinto estará
en Z, digamos rojo. esto es de lo que estaba
hablando que nuestro primer laberinto Z cero, y el segundo laberinto estará
en Z, digamos rojo En el mundo,
tenemos un sistema ctsan que llamamos las coordenadas
mundiales Este es un pequeño paréntesis para quienes necesitaban
esta información Ahora, cuando estamos desove
el generador de laberinto, lo
estamos generando
en 000x0 Este es el centro de
nuestra palabra digamos. Y cuando estamos desove
la primera vez, podríamos usar el 000, pero eso significaría que
cuando volvamos a volver a sonar un laberinto,
esto volverá a desovar
en la Entonces lo que vamos a hacer aquí, vamos a usar un nodo
llamado get acto location. Debido a que el propio objetivo
de este nodo, nos da como valor de retorno, la ubicación que generó el laberinto de
BP en Ahora lo estamos respondiendo desde
el menú principal, son 000. Cuando lo respondamos desde
otro lugar más tarde, probablemente el elevador,
va a obtener la ubicación de esa
espona para agregar el azulejo En fin, continuemos. ¿Qué más vamos a necesitar? Entonces, un poco
de optimización, no mucha optimización, no
vamos a hacer mucha
optimización, sino un poco. Cuando estemos desove
el siguiente laberinto, deberíamos poder
eliminar el anterior Entonces no se carga
en RAM y acciones. Por ejemplo,
tendremos una cuadrícula de navegación que se utilizará desde la IA. No debería estar calculando todas estas cosas en
el mas anterior. Por ejemplo, si tenemos artículos, no
debería estar calculando los elementos si están colisionando, o los elementos de física no
deberían estar funcionando Entonces necesitamos una lista para destruir
las cosas después de que elegimos. Y para esa lista, vamos a crear una variable y será
del tipo actor. Vamos a teclear
actor e ir a tipos de
objeto y seleccionar referencia de
objeto. Ahora vamos a
explicar un poco más adelante sobre las referencias a objetos blandos
y las referencias a objetos. Pero no vamos
a optimizar tanto. Vamos a estar usando referencias a
objetos. Pero después me digrego. Ahora, vamos a usar a este
actor, que es objeto. Lo que queremos nombrar a esta
lista son actores para destruir. Lo que quiero analizar más ante esta situación
es que como dijimos, estamos poniendo esta
variable a algo. Pero esto contiene sólo una
información, una variable. Pero si quiero una
lista de variables. No, además del
tipo de variable, también
tenemos un tipo contenedor, como dice en la descripción de herramientas Por ejemplo, para este, necesitaremos una matriz. ¿Qué es una matriz? Cambiemos este primer tipo de variable.
Nosotros hemos traído esto. Segundo, ¿qué es una matriz?
Básicamente, es una lista. Es una lista de los
mismos tipos de datos, una colección de
elementos si se quiere. Por ahora, tenemos
una lista de actores. Pero si cambio
el tipo de variable, sería una lista de buiones, por
ejemplo, o una lista de
enteros, una lista de Por ahora, vamos
a dejárselo al actor. Referencia de objeto, es la otra pantalla, es
lo que voy a escribir. Ahora bien, si elijo el conjunto, como podemos ver, se
requiere una lista. Si utilizo la g, me
da una lista. Entonces, ¿cómo puedo agregar
un solo actor a esta lista, una
sola variable La forma en que lo hacemos es que usamos un
getter y desde el getter, estamos usando el nodo en arrays tenemos un montón de
nodos únicos para manipular datos Vamos a conocer a algunos
de ellos durante este curso. Voy a conectar esto aquí. Ahora cuando esto corre, llaga nuestro primer
estilo en esta lista que vamos a ser actores para destruir cuando pasemos
al siguiente nivel? El segundo de todo, lo
segundo que
necesitamos es lo que llamamos
el sistema de coordenadas,
el sistema de notas de coordenadas,
los valores de coordenadas. Para eso, vamos a
crear otra variable, y la vamos a llamar es. Y vamos a
cambiar esto a un punto. Ahora, ¿qué es un punto in? Es básicamente un vector de dos d. Además, voy a cambiar de
array a variable única. Ahora bien, si compilo, el valor predeterminado es
actualmente cero, cero. Esto es lo que queremos
para la primera pieza. La primera frialdad
que queremos es 00. Ahora, tenemos que guardar
esto en alguna parte. Además de las matrices, hay otro tipo de variable
llamada variable de mapa, que es básicamente una matriz
bidimensional con algunas reglas adicionales. Vamos a crear uno. Voy a crear
una nueva variable. Voy a llamarlo gon. Ngon mapa. No, en realidad, me voy a ir solo a mí, mapa de Dang Dang mapa sería mejor describe el tipo
de variable también Entonces voy a ir aquí a
los tipos de contenedores, y voy a seleccionar el mapa. Se puede ver como dos variables. Entonces esto es lo que es un mapa. Es como una matriz
bidimensional, pero primer tipo de variable
tiene que ser único. L et's compilan y
demuestran esto. Por ejemplo, si
agrego el punto clave, el 8.00, y trato de volver a
agregar algo. No me permite,
mientras que si voy a
la matriz y agrego ninguno como
actor, puedo agregarlo de nuevo. No importa si
tenemos duplicados. Voy a borrar esto,
voy a volver a las llamadas, y en realidad, voy
a sacarlas a colación. Mapa. Voy a volver a p y eliminar también el
valor por defecto que agregué. Ahora, la primera
serán las coordenadas. El primero yo que
tenemos en este mapa. El segundo sería
el propio actor de azulejos. Entonces podría tener ya sea
las coordenadas o al mismo tiempo, el actor al que
quiero hacer referencia. Voy a teclear azulejo. Voy a archivar el azulejo BP. Voy a usar una referencia de
objeto. Voy a cambiar el tipo de
variable. Me está pidiendo que
cambie el tipo de variable porque la traje
en la gráfica. Esto quiere decir que
ya lo ha registrado. Si no
lo hubiera traído a la gráfica, solo
estaba aquí
creando la variable, y voy y cambio
el tipo de objeto. Se puede ver que
no le afecta. Pero en el momento en
que la traigo en la gráfica, la
afecta.
Voy a deshacer. Voy a traer aquí
esta ginebra. Y en cuanto a la matriz,
voy a agregar Ahora, este anuncio tiene una regla especial que si estás agregando algo
que ya existe, ya que tiene que ser la
primera clave tiene que ser única. Se anulará
la clave existente. Entonces esto no es un mecánico a prueba de
fallas agregar cosas, sino porque sabemos
que esto va a correr solo una vez al inicio de la licitación, porque es el primer azulejo, esto es a prueba de fallas que
agregará la pieza correcta Ahora, voy a conectar aquí las coordenadas
actuales, y voy a
conectar al actor,
también el valor de retorno del actor spawn a
este mapa de mazmorras En nuestro sistema de mazmorras, en nuestro mazmorra de laberinto, lo llamemos Tendremos una regla especial. Esa regla dirá que en los bloques especiales
no engendran cosas Entonces necesitamos una lista de los
bloques especiales, no engendrar cosas. Para esa lista,
vamos a utilizar las coordenadas de
la propia mazmorra Entonces voy a
duplicar la variable de
coordenadas actuales , copiar y pegar Y voy a
cambiarle el nombre a Salas especiales, por ejemplo, todos los azulejos
especiales en realidad. Azulejo especial. Y voy a hacer también una lista una matriz. Ahora, podría
haberlo hecho un conjunto que tenga las mismas reglas que el
mapa o la primera clave. Algunas de las reglas son las mismas. Significa que tienen que
agregarse de manera única. Pero solo voy
a usar una matriz ya que son un
poco más fáciles de manipular. Voy a traer azulejos
especiales con sujeción. Voy a conseguir un getter, y voy a agregar esta matriz, las coordenadas de este mosaico Creo que este es un buen punto de
reventar por ahora. La siguiente legión,
vamos a decidir y describir cómo vamos a
definir el punto de salida ¿Dónde está la siguiente pieza? ¿Dónde voy a estar
pateando esta pieza? ¿Dónde
va a desovar la siguiente pieza? Vamos a definir la ordenanza de
Nora Southwest. Muchas gracias. Adiós.
10. Sistema de dirección personalizado: Hola, y bienvenidos de nuevo a Game Design Workshop motor cinco Procesal Dungeon
Action Simios creación En la anterior,
iniciamos la cadena de eventos, la función del
Span para el estilo. Y agregamos a los actores
para destruir array. Te explicamos un
poco sobre los rayos. También creamos la variable
dungeon map, que es una variable de un punto
int y un actor Y también agregamos las coordenadas
a la matriz de mosaicos especiales. Pero dijimos que las
fichas especiales serán fichas para no spon estaremos sosteniendo la regla para no engendrar
cosas en nuestro Por ejemplo, no
queremos que en la primera baldosa espone una torreta o un cofre. H. Vamos a guardar continuar creando otra variable para el listado. Esta vez, va
a ser la lista de la variable
noreste oriente,
suroeste. Este será un tipo de lista muy
singular. Esta lista por aquí, la lista MP o la
lista de matrices o que como dijimos, se
pueden cambiar en tiempo de ejecución. Esto significa que puedo agregar
cosas o eliminar cosas en esta lista
durante el juego. Lo que vamos a crear
es una enumeración antigua, lo que no importa
si estás en
blueprints o en Sets plus, las enumeraciones no pueden
cambiar durante el Nunca lo es. Pero sería un logro
tremendo. Ahora. Veamos cómo
creamos esta variable. Esta variable no se puede
crear en la lista aquí porque la lista aquí contiene
cosas que son cambiables Para nuestra lista, lo
que va a ser cambiable va
a ser el valor Pero la lista misma debe
crearse aquí. Para crear esto. Tenemos que ir al Cajón de Contenido, ir a nuestros planos de carpeta Vamos a crear
otra carpeta ahí dentro. Voy a llamar a esto
o nums para fold. Ams. Voy a hacer click derecho, ir a la categoría
planos, enumeración de mangueras Vamos a ponerle nombre a esto Oh, vaya a sumar cuatro variables. Vamos a abrirlo,
y esto es lo que
vemos enumeración Lista de variables, y tenemos este botón que agrega enumeradores de enumeración Si trato de renombrar un
enumerador t cuatro, tenemos nuevo enumerador
cero, uno, dos, tres, trato de nombrar este cero,
verás que va a estallar un error El nuevo enumerador cero ya
está en uso. Pero esto nuevamente tiene nombres únicos. Ahora, cambio 01. Por ejemplo, voy
a mantenerlo cero. Mi error. Poner
la mayúscula en R, no
es sensible a mayúsculas y minúsculas. Entonces tener el capital R realmente
no cambia. Ahora, voy a
borrar estos nombres. Tengo que dar un nombre. Entonces comenzaremos con
el primero llamando. Y para Norte,
segundo llamando E para Oriente, el tercero voy a
llamarlo sur para S para Sur, y el cuarto
voy a llamarlo W u Oeste. Tenemos noreste suroeste. Entonces esta es nuestra lista
predeterminada. Antes de pasar a
aquellos que quieren una definición,
una definición más precisa
sería
que se trata de una
programación de mecanografía de datos que nos
permite definir la de constantes de
nombre que representan valores
específicos Por ejemplo, nuestro menú de opciones, o podríamos tener normales
fáciles itmare infierno eculties Eso es Usar para
programar para hacer nuestro código un poco más claro que
tener, por ejemplo, un montón de pólenes,
un montón de ramas, encender y apagar cosas
o cadenas o de todas formas Vamos a continuar. Vamos a traer esta lista nuestro generador de
blueprinting M, porque lo vamos
a necesitar mucho Coy debería haberle dado el nombre de
dirección. Dirección E. Voy a crear
una nueva variable. Yo lo nombro. Erecciones,
solo direcciones Ahora, aquí no lo vamos a
encontrar fácilmente. Entonces voy a ms hay
muchas acciones tipo pset. Ahora, nos da la variable que
creamos e direcciones, que tiene la lista de
noreste Sur y Oeste. Voy a cambiar un
solo tipo ibru de A,
compilo, y dejar que te
muestre algo Ahora, como pueden ver, en realidad, lo
vamos a traer, podemos verlo en los detalles. Tiene un menú desplegable con
nuestras opciones con Nordeste,
Suroeste, y una de ellas es la persistir
el valor elegido Pero aunque haya
almacenado todos estos valores, uno de estos valores, el
que se le agrega. Si voy a
establecer las indicaciones en va a ser una
de estas opciones. En realidad dirección, no es un buen nombre para esta variable porque
vamos a usar esta variable para definir nuestro punto de salida de
nuestro actor engendrado B ahora mismo, lo que
tenemos que hacer está bien donde va a desovar nuestra siguiente
pieza Entonces voy a cambiar
el nombre a Última salida. Oh, sí. Esta es nuestra
última variable de salida. ¿De dónde salimos el último? Oh, ve a compilar, Dave. Y ahora hagamos
una salida aleatoria. Ahora, vamos a repetir
el sistema. No es una mala técnica, pero la mejor también. Lo vamos a hacer
va a tomar make array. Si arrastré de esto, no podría obtener make array porque esto es sensible al
contexto Yo no lo estaba. Escribo M array, va a hacer lo mismo. Pero lo que hicimos fue
hacer una matriz con un comodín como variable. Entonces, lo que voy a hacer es
también ponerme sensible al contexto, obtener de ray una copia, por ejemplo, y
conectar esto aquí. Entonces volví el comodín
a un tipo de nuestra meración. Ahora que tenemos aquí
esta matriz, para eliminar el get or up. Voy a volver de aquí en adelante y conectar esto
aquí, borre esto aquí. Voy a agregar o alfileres
y hacerlo al oeste. Pero estos son pequeños
trucos para mí no tener que crear
una matriz con todas las direcciones y obtener una aleatoria esa
matriz que creé. Sólo estoy haciendo una matriz
temporal que será recogida de basura. Ahora esa colección carbach
es una gran cosa también. Hay muchas explicaciones. No vamos a entrar en ello. Oh, creé una matriz
que no va a quedar retenida en una variable
y devorando memoria, por
ejemplo, lo que
sería negligencia porque solo un rayo de R
Valores de enumeración no es Pero de todos modos, solo
quería mostrar cómo podemos hacer alguna manipulación con nodos y pasar del
comodín a nuestra propia variable Ahora bien, lo que esto hace es
como un aleatorio de fuera de este elemento dom y lo
promueve a nuestra variable. Lo llama a nuestra última salida. Entonces cuando esto corra, hemos decidido que nuestra última salida va
a ser esta. De hecho podemos demostrar
esto con una cadena de impresión, conecto este valor aquí. Esto en realidad no nos
mostrará nada. No nos muestra nada porque no
hemos conectado el primer azulejo
pone. Voy a conectar esto aquí. Compilar. Voy a pre. Como podemos ver, si presiono
play de nuevo y comienzo,
nada, presiono y
comienzo. De nuevo al oeste. A es Rundo Una razón por la que
solo t al oeste y al sur. Bien. Tenemos un Norte.
Sí, funciona. Obtiene una aleatoria, tres veces. Creo que este es un buen punto de
sopping para este. Vamos a
continuar con el siguiente
definiendo el punto de salida, no el punto de salida,
el punto de introducción, que vamos a estar también en algunas reglas.
Eso es todo para éste. Adiós.
11. Encontrar mosaicos adyacentes: Hola, y bienvenidos de nuevo al Taller de Diseño de
Juegos Real Engine five Procesal Dungeon
action RPG curso de creación En la anterior,
creamos la última salida IO Blue, y creamos la
enumeración que hicimos Y explicó algunas cosas
sobre las enumeraciones. También demostramos que estamos
obteniendo un punto aleatorio a través del
tramposo Mar A por aquí, y ahora mismo
no necesitamos esto, y sigamos con
la salida opuesta. Ahora, podemos hacerlo fácil
para nosotros mismos y no tener una
salida aleatoria opuesta y simplemente verificar que todas estas dos variables nunca
sean las mismas. Otro cheque que es no.
Lo que podemos hacer es simplemente conseguir lo contrario de
lo que es nuestra salida. Por ejemplo, pintar. Si esta es nuestra caja, y
estamos saliendo de arriba, la introducción debería ser desde abajo Si estamos saliendo del oriente, la intro debería ser
el Creo que es una regla simple, y nos facilita un
poco las cosas en estos momentos. Vamos a crear
posteriormente algunas comprobaciones, por lo que una variable nunca viene
con otra variable. Pero por ahora, sigamos adelante
con lo que estamos haciendo. Ahora, para hacer esto. Nosotros Necesitamos una manera de
encontrar a los vecinos, las celdas adyacentes, como
quiera llamarlo, Lo que está alrededor
básicamente nuestra primera, nuestras primeras coordenadas como
nuestras coordenadas son cero, cero, cero, x, cero, y ¿Cuáles serían los
vecinos en una cruz? Porque estamos construyendo
con una cruz. Esa es también una información
sobre nuestro calabozo, cómo hace que el calabozo cómo hace que el calabozo
sea creador. Vayamos
a pintar otra vez. Ahora, como pueden ver, puse flechas en el
Nordeste Sudoeste. No tenemos flechas en el
noroeste o noreste, o esto requeriría un tipo
diferente de edificio. Pero para nosotros ahora, vamos
a hacer lo básico de tener apenas Noreste Suroeste y
continuar con esta lógica. Ahora Para conseguir los vecinos de
esta coordenadas actuales. Vamos a necesitar
otra función. Va a ser una función
pura otra vez porque es un cálculo
matemático. Vamos a crear
una nueva función. Vamos a llamarlo base de cruz de
viento en él. Esta es la ortografía
para adyacente. Enviados. En fin, no importa. Si sigues cometiendo
un error ortográfico, si es el error
ortográfico constante, realmente no
importa porque
puedes encontrar tu función. Pero la ortografía es
algo importante. Ahora, entremos en esta función. En realidad, está abierto. Ahora, lo que vamos
a necesitar es un insumo. Vamos a necesitar una
entrada de coordenadas. Voy a ir a entradas, y voy a
seleccionar un punto in. Y voy a ponerle nombre a esto ds. Como dije, ds, el punto en es dos d vector. Eso significa que tiene una x y
una y. No tiene una z. Así como podría e
con la transformación. Entonces puedo hacerlo con cordones, pero no quiero usar split
porque si uso split, se ve así,
y voy a
tener que
arrastrarlo de
aquí desde aquí. De todas formas va a ser un desastre. Entonces voy a recombinar los dos, lo que voy a hacer es, voy a arrastrar
esto aquí y escribir break in break in point Ahora, es un
poco más claro, que no va a estar
al final para ser. Porque lo que tenemos que hacer es que vamos a
necesitar
sumar manualmente una en las
coordenadas superiores o restar una Y también hacer lo mismo o y. así obtenemos nuestras coordenadas
norte-sureste oeste. Porque vamos a
definir que nuestro norte es el seno más de x. Sur es nuestro menos menos
en la palabra dirección x, y comer es la dirección
positiva en, y nosotros es la
dirección negativa en y. Oh. Ahora, he atraído
y agregado
manualmente los valores. Pero necesito hacer los puntos. Lo que voy a hacer es
como hice el hacer un rayo. De hecho puedo hacer en punto. Puedo tener este nodo por aquí que crea
otro en punto. La mayoría de las cosas se pueden
crear temporalmente así. Ahora necesito esto cuatro veces. Ahora, conectemos
todo, todo. Vayamos aquí, va aquí. Nos veremos obligados a
spagetificarnos un poco. Voy a arrastrar de la
y aquí a la 0x0y, y de la y aquí
a esta cero y, y voy a hacer lo
mismo con x aquí aquí, y va Ahora bien, lo que esto significa en
definitiva es que estamos creando un punto
final de neu variable con desde la posición actual
más uno a x o más menos dos x más uno
y más menos uno y tenemos una ubicación cruzada para encontrar a nuestros vecinos
desde nuestro punto actual. Ahora, voy a hacer
un rayo como lo hice antes, y voy a agregar pines. Vamos a conectar esto
aquí y aquí esto aquí, y vamos a dar clic en la cruz de vino adyacente
y crear una salida, que va a ser una matriz, y
llamarlo llamarlo j. Por último, necesitamos
conectarnos al nodo de retorno, la matriz que acabamos de
hacer a adyacente. Ahora, antes de continuar, demostremos
lo que creamos. Así que vamos a entrar en la
función en primer estilo, y vamos a poner un rt br de nuevo. L et's traen esta
función por aquí. No lo seleccioné para que sea puro, solo
voy a seleccionarlo ahora, seleccionando la función
en cualquier lugar que esté. En el talón de detalle, se puede ver esta opción pura.
Voy a seleccionar esto. Para las coordenadas, ahora mismo puedo usar
las cunas actuales. Y lo que al instante podemos
ver es que no podemos conectar
esta variable a esta porque esta es una caja. Tiene un símbolo de una caja, que es nuestro símbolo de matriz, donde este
solo tiene un símbolo de pin, este punto redondeado aquí. Oh, como podemos mostrar todo, todas las
listas de elementos de esta matriz. Lo que podemos usar es algo
llamado bucle for para cada uno. Ahora, hay un foreloop
también. Vamos a traerlo. Ningún ejemplo. Entonces, ¿cuál es la diferencia
entre estos dos? En primer lugar,
expliquemos lo que hacen. Lo que hacen se
basa en un índice que o nos
fijamos o lo obtenemos de una matriz. Esa es alguna acción
que podemos programar, que se llama body loop. Y cuando se completa, conecta el pin terminado. Ahora, como pueden
ver, estos tienen algunos pines diferentes
en este lado también. Este solo nos da un índice, por ejemplo, si
pongo el índice 55-55 Significa que va a indexar, el primer índice que
damos cuando se dispara el bucle corporal sería 55. Y la razón por la que sabemos que es
55, porque si cubrimos, dice ejecuta body loop para cada índice de índice de inicio
a índice de stop, inclusive Esa es la palabra clave, inclusiva. Esto significa que correrá 55, y correrá 65 también. Ahora bien, este
nos da un elemento array. Entonces, cuando estamos usando para
cada bucle de una matriz, en realidad
obtenemos el elemento
correspondiente al índice también. No, conectemos esto
antes de la cadena de impresión. Y ahora queremos
señalar este elemento A. Voy a conectar esto aquí. Va a eliminar este bucle. Y nuestras coordenadas son
ahora mismo cero y cero, cero sobre y y cero x Así que debería
darnos un más uno en x, un menos uno en x, un más uno en y, y un menos uno en y
manteniendo el correspondiente
opuesto a cero. Voy a compilar.
Estoy en el overp Lo siento. Ir al nivel M. Ve a guardar todo
y presiona play. Ahora juego de estilo, podemos ver
las coordenadas aquí arriba. Si es demasiado rápido, podemos abrir algunas opciones extra
en la cadena de impresión, que tiene toda la duración, algunas otras cosas o avance. Nosotros, pónganse esto. Si yo, por ejemplo, ahora, se quedará más tiempo. Ahora bien, si lo probamos
con diferentes valores, llamemos al generador ma, en lugar de los potro actuales, voy a dividir esto Seleccione, digamos que
partimos de uno y uno. Debería actualizar correctamente
como lo hizo los valores. Una cosa más antes de
cerrar para esta lección. Creo que deberíamos poner
alguna explicación encontrar cruz adyacente al orden del
que están viniendo. Como dijimos, norte es más en x, y sur es menos en
x y oeste menos en y, y plus es este. Voy a ir a la función. De hecho puedo
ponerlo como una descripción sobre herramientas, pero lo prefiero en el nombre La tengo aquí. Renombrarlo con F
dos en el espacio y norte noreste oeste. Puedo tener esto y
explicarme el orden en que vienen
estos. Ahora, creo que esto es
suficiente para éste. Te voy a
ver en la siguiente. Adiós.
12. Mapeo de coordenadas y generación de mosaicos: Hola, y bienvenidos de nuevo al taller de Diseño de
Juegos
y Curso de creación de Real Engine five Procesal Dangon
Action RBC Anteriormente, creamos nuestra fina cruz adyacente a la función
Norte-Sureste Oeste. Y vamos a recombinar
esto en realidad. Tenemos una entrada de
una entrada de punto int, y estamos exportando
tenemos una salida una
matriz de t puntos. Ahora, demostramos la
capacidad con un bucle delantero de agregar cualquier coordenada nos
da los vecinos,
los vecinos cruzados Entonces ahora conectemos esto aquí
y en realidad dejemos esto también. Ahora, lo que queremos es conseguir
lo contrario de la última salida. Para ello, lo que vamos
a utilizar es esta lista de aquí. Voy a conseguir copia. Ahora bien, la diferencia
entre una copia y una referencia es que cuando
estoy recibiendo una copia, estoy obteniendo un duplicado
básicamente del elemento real. Fue de la referencia, en realidad
puedo
manipular la fuente, la entidad real de la matriz. Entonces lo que necesitamos es una copia. Y ahora vamos
a usar un nuevo nodo. Vamos a usar un
nodo selecto. Déjame demostrarlo. Vamos a escribir select. Como puedes ver, tenemos
este nodo por aquí, lo que nos da algunas opciones y un índice de un
comodín y un valor de retorno. Ahora, basado en este comodín
índice, viejo comodín porque
puede cambiar a muchos tipos En realidad vamos a
usar la am que tenemos. Por ejemplo, voy a
conectar la última salida aquí. Yo auto convertido. Ahora bien, este
valor de retorno es un entero porque solicitamos una
selección de un entero. Si solo iba
a solicitar select, se
puede ver que
todo es una tarjeta Y. Entonces podemos usar este nodo
en muchos casos diferentes. No, hacemos un primero norte, cero porque
las matrices están numeradas por cero, yendo a uno, dos,
tres, etcétera Oh, Norte es cero
este serían dos, Sur sería uno, y oeste serían tres. Pero con base en el índice que
es entrante,
viene al sur , elige dos, cuando es un Norte elige el
correspondiente. Pero el problema con esto
es que si viene Norte, entonces estamos seleccionando norte. Si viene Oriente, entonces
estamos seleccionando oriente. Lo que queremos es
invertir estos números. Pero cuando viene al norte, queremos al sur, pero aquí
vamos a elegir uno. Cuando está al sur, queremos al norte, así que aquí vamos a
elegir cero. Cuando está al este, queremos al oeste, y donde está
al oeste, queremos Oriente. Entonces ahora podemos invertir eso
básicamente en los ingresos, lo que obtenemos de esta matriz. Ahora para finalmente llegar a nuestra meta en todas estas acciones sería
decirle al programa que esta caja debería tener estas
coordenadas en nuestro mapa, nuestra bidimensional
debería tener el inicio. Bueno, no el inicio, sino el bloque de intro, por ejemplo,
llamémoslo intro De hecho, vamos
a crear un plano para eso. Vamos a la carpeta Blueprint. Vamos a hacer click derecho. Vamos a seleccionar
una clase de plano. Voy a hacer actor. Vamos a llamarlo BP intro
o globo o lo que sea. Vamos a usar un globo. Por eso dije globo. No. Ya que queremos
que intra se genere ahí, debemos decirle al laberinto que esto debe mantenerse vacío Estas coordenadas. Entonces, ¿qué voy a hacer si
vas a azulejos especiales? Uy. Ya me
equivoqué aquí. Estoy adivinando que esto pasó. No debería tener ningún elemento.
Voy a borrar esto. Azulejos especiales deben
ser un cero elementos. Yo supongo que esto
pasó porque yo
creé el elemento a partir de aquí Duplicé esta variable, así que podría
haberla guardado o por error, podría haber agregado
o para alguna nación. Así que los azulejos especiales estarán vacíos. Ahora, voy a copiar
estos mosaicos especiales, pegarlo y cambiarle el nombre a stt Pero vamos a tener
otra lista, nuevamente, vamos a traer esto
aquí con control y seleccionar AD y agregar esta
variable desde get Ahora, vamos a usar esta lista cuando estemos
construyendo el laberinto, para crear algunas reglas para decir, no coloquemos nada
aquí porque
tal vez queramos colocar algunas
cosas ahí nosotros mismos, como vamos a hacer ahora mismo. Digamos que queremos proponer
este azulejo de introducción, Pon este spot Voy a utilizar de
nuevo a este propio actor porque así es como
responden los actores del mundo. Y voy a seleccionar
el en O. Es una R. Oh, vamos a ir en realidad
a este plano La forma en que pasé a él
es que seleccioné estas cejas, lo que significa navegar a un set, lupa por aquí, y me lleva
al plano, como si estuviera en otra carpeta,
eso es esto, listo
para Ahora, voy a hacer
doble clic en él, y voy a
agregar una malla estática y seleccionar para la malla
estática
seleccionada automáticamente aquí, un tubo. Tenemos un tubo. Tubo SM. Bien, dejemos
este tubo por ahora. Entonces sabemos dónde está nuestro intra. Ahora, encuentra la ubicación. Como dijimos, cuando divido
esto, recombine struct. Sí. Se pueden dividir también
los propios vectores. Pero lo que queríamos era
recombinarnos para demostrar que
esto era una transformación Ahora si lo divido, puedo
ver la ubicación, la rotación. Tengo mis coordenadas locales o una matriz bidimensional. Pero, ¿qué se
traduciría eso en coordenadas en el mundo? Debido a que esto necesita coordenadas de
palabras, no se puede generar en
base a uno y dos, menos uno y menos dos,
en qué parte del mundo Pero para eso, vamos
a crear otra función, otra función pura para
poder darle coordenadas, y nos da una ubicación de palabras. Oh. Vamos a nuestras funciones, presionemos de nuevo este símbolo más y agreguemos una nueva función. Llamemos a este punto ubicación. Creo que ya es suficiente. Como dijimos, necesitamos
otro insumo aquí. Va a conseguir la
ordenanza puntual en estos agujeros. Y va a tener
una salida de un vector. Tenemos un espacio w de x y y z Digamos esto. No sería genial
si puedo conectar esto aquí y tú solo
podrías trabajar. Pero lo que tenemos que hacer
es romper esto. Recuerdas cuando hablamos
en pintura sobre el tamaño de la pila, como ¿qué tan grande es nuestro tipo de laberinto
real? Bueno vamos a necesitar
crear esta variable. Voy a presionar
nuestra variable aquí, voy a cambiar
su tipo entero. Voy a llamarlo ile es. Porque sé el
tamaño de las baldosas R, que 600, voy a escribir 100. Este es el valor predeterminado, pero podemos hacerlo instancia
editable y exponer en spawn Para que podamos cambiar.
Tenemos diferentes mosaicos, cuando estamos desove el laberinto, vamos al menú principal
y gráfico, archivo Actualicemos esto. Recúpalo, y no
pasa nada porque no he
compilado este plano Y ahora tenemos tamaño de baldosa. Podemos ajustarlo por nuestra cuenta si tenemos diferentes
tipos de baldosas, 400 por 400 o cualquier
número que muramos. Voy a compilar y guardar nuevo, y volver a nuestra ma. Ahora, tenemos este
tamaño de mosaico que es cien, y si multiplicamos esto por x, lo
multiplicamos por y. vamos a vector. En realidad, porque con vectores. Ahora esto es Los vectores son flotadores. Entonces, si solo trato de hacer de esto
un vector, no sucederá. Ahora, siempre puedo hacer
un cambio de dos flotación, y va a crear flotación. Pero real hoy en día nos da
la opción de ir a este pin, hacer clic
derecho y
convertirlo a lo que quiera. Voy a elegir un flotador. La precisión única
no importa para nuestro Por lo tanto, tal vez un
procedimiento más grande para nosotros porque
estamos multiplicando enteros Y bueno, para ser honestos, porque merece la pena ubicarlo y podríamos estar
desovar el laberinto Floto. El poderío no
importa o no importa. Oh, de aquí, ahora
puedo hacer tor. Y este es mi valor x, y este es mi valor y. Y por el valor z, sólo
voy a agregar esto
al tor asi.
El llenado es importante. Sí. Entonces, como esto es cero, va a estar
sumando el eje Z desde nuestra ubicación del actor. Y la razón por la que estamos agregando esto es porque este
es nuestro punto de partida. Y cuando después vamos
a estar desove próximos laberintos, como arriba e incluso con un punto
de partida diferente 002000,
digamos Podría ser 500 por 600
X y algunos Z.
al azar es por eso que necesitamos agregar
la ubicación del actor así Los próximos laberintos que se van a construir van a tomar en
consideración que
su ubicación es
relativa a la ubicación de los actores a la ubicación
de los laberintos, la ubicación del constructor de Mazes Oh, voy a poner esto aquí. No especificamos
mucho este plano. Voy a compilar,
voy a guardar, y voy a volver
a esto en primer estilo, y voy a traer multa
tation, ir a hacerlo puro, por lo tanto va de nuevo,
y voy a conectar esto aquí y esto aquí. Ahora si juego, debería engendrar. De hecho lo podemos ver porque tenemos la pantalla
de carga. Entonces vamos a la pantalla
de carga. Vamos al panel de cavas
y pongamos la visibilidad a oculta. Compilar y guardar. No
hay pantalla cargada. Pero supongo, no lo estamos viendo porque
no
hay luz Arreglemos esto. Llevemos la luz a nuestro nivel. Vamos a ir
a la caja de aquí arriba que se agrega rápidamente
al proyecto. Vamos a ir a las luces y agregar esa luz direccional. Volvamos a jugar. Realmente no puedo ver ninguna caja porque nuestra cámara no era
el lugar correcto. Oh, supongo que
esta es nuestra introducción. Entonces, en algún lugar por aquí
está nuestro generador de laberinto. Ahora, creo que este es un buen punto de
parada para este. Y en la siguiente,
deberíamos empezar a diseñar nuestro azulejo para
poder ver nuestro primer azulejo. Adiós.
13. Visualización del laberinto con flechas: Hola, y bienvenidos a
Game Design Workshop y Real Engine cinco procedimientos Dungeon action RPG curso de
creación Anteriormente, creamos la función de ubicación de teselas
finas, que multas
basadas en coordenadas, y en función del tamaño de nuestro mosaico, la ubicación de nuestras
coordenadas pares, la palabra ubicación. Oh, agregamos esto a nuestro código, y también generamos
nuestro bloque de introducción Eso en realidad debería estar
desove un poco más alto, así que solo voy a agregar aquí
y hacer un vector agregar matemáticas Voy a sumar
a los Zaxs, 300. Voy a conectar esto aquí. Por lo que ahora va a
engendrar un poco más alto que el
resto de nuestro laberinto Ahora, un detalle más antes
de empezar a hacer los mosaicos, como decíamos, necesitamos agregar esto a los actores para destruir array. Voy a traer a los
actores para que destruyan. Yo sólo voy a presionar add. Y voy a agregar
este actor también, que es el resultado del
desove actor PP intro Ahora vamos a compilar y guardar. Vamos a abrir nuestra pila. Ahora cuando
lo abrimos la primera vez, nuevo, el plano
se abre así Solo necesitamos abrir editor de planos
completo. Nuevamente, en caso de
que alguien se lo pregunte, este es el valor
predeterminado tina por defecto de este blueprint, también se
puede encontrar en los valores predeterminados de
clase por
aquí en el detalle Voy a enganchar esto aquí. Y comencemos. Lo que vamos
a hacer primero es agregar algunas mallas de ático y algunas
flechas en nuestra tina de componentes Entonces, para verlas,
vayamos a nuestra ventana gráfica. Y vamos a presionar agregar
una malla estática. Estamos agregando una malla estática.
Vamos a nombrar esta malla. Cuatro. Y este es un componente
de malla estática. Entonces necesita que se agregue una entidad
de malla estática en estas
propiedades aquí mismo, porque esto es lo que le está diciendo al blueprint es
que tienes una malla estática No le dice al
plano, qué malla estática. Pero vamos a ir aquí en
la puñalada detallada e ir a propiedad de malla
estática
y seleccionar nuestro piso Ahora, ¿hay dos pisos, el 400 por 400, y el piso llano. Este es un piso 600 por 600, así que vamos a usar este. Ahora, como dijimos, nuestro norte es el eje
positivo sobre x, y nuestro oeste nuestro este es
el eje positivo sobre y Para hacer las cosas un poco
más visuales para nosotros para que
podamos decir cuál es fue con solo
mirarlas en el mapa. Vamos a sumar cuatro flechas. Addr primero. Entonces voy a copiar y pegar. 43 veces. Oh, voy a volver a
nombrar también en flecha flecha norte flecha
sur y flecha oeste. M. Ahora. Debido a que estas flechas son pequeñas, aumentemos también su tamaño. Voy a
seleccionarlos todos e ir a escala y aumentarlo en un
factor dos, básicamente. Ahora son un poco más grandes. Vamos a rotarlos
correspondientemente. Voy a presionar el rotador,
que E, rotar
la segunda flecha, la flecha este, y rotar
ahora la flecha sur Gire la flecha hacia el oeste. Todo eso está bien
y bien. cuatro flechas que muestran dirección, pero no estamos teniendo ninguna información
especial sobre lo que es qué. Entonces si veo esto, no tener herramienta
seleccionada ni nada, no
voy a poder decir es
este norte, es Occidente. Pero agreguemos algo de
texto en cada flecha. Texto, texto de flecha,
seleccionando la flecha. Seleccionando la última
flecha y texto. ¿Por qué los estoy seleccionando? Porque cuando los selecciono, lo agrega automáticamente como hijo
del componente seleccionado. Si hubiera seleccionado la raíz, le
agregaría los
componentes de texto parentales a la raíz Ahora están parendados
a la flecha. Entonces, si estoy cambiando la
dirección de la flecha, también lo hace el texto. Ahora, voy a
sacar los textos Un poco más adelante. En realidad, como se puede ver, porque las flechas se
renderizan con e de dos, nuestro texto, se
agrega automáticamente con 0.5. Entonces básicamente se escala uno si lo pongo fuera del
padre de la flecha Yo me crié a la
raíz del plano,
no hago raíz, solo toque Se puede ver que
volvió a uno, uno, uno, pero el texto
permanece del mismo tamaño. Volvemos y lo padres a
la flecha, que estaba al norte, veo que volvió
a 0.5 0.5 0.5, pero pad el tamaño. Esto se debe a que la flecha
misma se escala en dos. Fue como cuatro,
sería 0.25, por ejemplo,
Demostremos este adjuntar. De nuevo, lo hice una raíz. Yo el uso de la palabra. Por eso. Aquí, la flecha o voy a volver
a tocar el texto. Se puede ver que es 0.5. Ahora bien, si
devuelvo la flecha a dos, el texto se va a
quedar 0.25 porque ahora estoy escalando mientras
tengo esto de niño. Entonces el motor piensa que estoy pensando que todas estas matemáticas automáticas suceden al mismo tiempo. Voy a volver a desparentarlo. En realidad no
necesitaba unparent. Sólo voy a uno, uno, A. Voy
a rotarlo un poco. Rota al revés, así que
voy a esto también. Voy a cambiar en
los detalles el texto de texto a n para norte. Aquí. Ahora, nuestras flechas están en la
ubicación cero con ese cero. A lo mejor esa no es la mejor opción porque deberían estar un poco
más altos que el piso. Ahora mismo, están
exactamente en el piso. Entonces voy a cambiar de ubicación. Yo controlo seleccioné
cada uno de ellos. Voy a cambiar la
ubicación a net. O 100 o 50, sólo
un poco más arriba. 90 k Ahora bien, para los que son nuevos, la forma en que me mudo aquí es la
forma en que estoy moviendo al editor. Esto significa que manteniendo pulsado
el botón derecho y usando AWS T&E, muévase Oh. Ahora que tenemos n, no del todo
centrados aquí. Muévelo. Lo muevo, no puedo
centrarlo con el tema de espaciado de cuadrícula actual. Pero porque son diez, si lo pongo en cinco, lo
mejor se centra bien. Sí. Es centros mejor cinco. Pero si no estuviera
centrándose ni en cinco, claro, podría
ponérselo en uno Lo vuelvo a activar y ahora mismo, podría simplemente apagar esto
y el chasquido estaría apagado. Lo mismo que podemos hacer con la
rotación con los grados, y lo mismo que
podemos hacer con escala controlada por
estas opciones de aquí. Ahora, pongamos más textnra, llamemos en realidad a este
textrander Voy a ir al
otro textnder. Voy a
ponerle escala a uno. Recuerda tener esto bloqueado, así escala todo en uno. Si tienes esto desbloqueado, tienes un componente de escala, y ten cuidado si
esto es incluso escalado, lo bloqueo,
escalará esto en consecuencia Vuelva a bloquearlo. Establecer uno, 11. Otra vez. Vamos a traerlo aquí. Vamos a rotarlo. Esto realmente sabe qué. Esto debería ser así. Lo traigo aquí. Voy a cambiar el texto a West W. E one. Bien. Hagamos el
oriente. Este fue el. Ahora, ya ves, porque estoy
rotando incluso largo girarlo. Y esta en realidad
es la flecha del este. Entonces, voy a reiniciarlo transformar y rotar
y volver a ir. Lo restablezco marcando
la flecha en negrita
aquí cuando mueves algo y
te pregunto si quieres
restablecerlo a la propiedad predeterminada
por aquí con esta flecha Voy a ponerlo de esta manera. Voy a rotarlo de esta manera, esta manera, y vamos a
defraudarlo más abajo. W E de cambio para disparar de
nuevo, un poco más abajo. Creo que se ven bien. Ahora, en la flecha oeste, hagamos la
flecha correcta esta vez. Voy a poner el
texto a Ws en otra parte. Voy a cambiar
la rotación. Correctamente. Escala a uno, y ponlo un poco
más abajo aquí abajo. Archivando bien, para
el último, Sur, Baje, S para el
texto, y deje en consecuencia. Por supuesto, establecer la escala en uno, y nosotros establecemos la ubicación. Ahora tenemos una dirección noreste
suroeste para ver dónde están nuestras posibles
salidas y entradas Por ejemplo, si
vamos a jugar ahora mismo, podremos ver la pantalla de carga. Sí. Entonces vayamos a
nuestra pantalla de carga, vayamos a nuestro panel de cavas, y hagamos que sea oculto
compilar y guardar, para que podamos ver realmente
lo que estamos construyendo Si presiono play, la cámara no
se ve correctamente. Pero si expulso, presiono
Alt y S, por ejemplo. No por ejemplo, ese es
el atajo para expulsar. Puedo volver a moverme libre
en el editor editor. Podemos ver el
noreste suroeste, pero no podemos ver las flechas. El motivo es porque
hay una opción a las flechas. Lo mostraremos después. Entonces hay una opción
a las flechas para hacerlas ocultas en el juego. Bueno, ahora, como pueden ver, nuestra salida es probablemente está en el norte porque el
sur opuesto es nuestro bloque de introducción Como puedes ver, esto
no está exactamente centrado, y la razón es
que si vamos a la apertura al
bloque de introducción, vamos a la ventana gráfica Se puede ver que el centro es en realidad esta esquina de aquí, no el centro de la plaza. Entonces por eso se ve.
No necesitamos esto. Por eso no se
ve centrado. Pero si se tratara de un pivote central de
tubo, entonces
se habría centralizado. Ahora, creo que esto es
suficiente para éste. En realidad, vamos a
mostrar de nuevo las flechas, la variable de juego oculto, ir a la ventana gráfica, al
puerto Ti, no al generador de laberinto Seleccionemos todas
las flechas y vamos a luego ganar opción en los detalles. Acabo de escribir aquí HID, y voy a apagar esto
el Si compila y guardo. Actuar. Ya podemos ver las flechas y
la salida es del oriente, por lo que nuestra introducción es del oeste Eso es todo para
éste. Te voy a ver en la siguiente. Adiós.
14. Agregar paredes de castillo: Hola, y bienvenidos a Game Design Workshop
underal Engine cinco procedimientos Dungeon action
Bz Anteriormente, comenzamos a
crear la flecha de mosaico. Agregamos algunas flechas,
agregamos piso, y agregamos algo de texto para indicar la
dirección de las flechas, en
base a nuestras coordenadas. Oh. Cómo usamos las
coordenadas, básicamente. No, ahora. Empecemos algunas cosas más
para que este calabozo un poco más se sienta como si
solo tuviera piso, si presionamos play,
se ve raro Piso en medio del cielo. Entonces agreguemos algunos extras, hazlo más como mazmorra No, lo que vamos
a añadir es lío estático. Ser pasado uno. Cuatro. Entonces
tenemos cuatro de ellos. Podemos nombrarlos dos pared uno. Pared dos. Y cuatro. Ahora bien, a esto porque
había escrito HID, sólo
estaba mostrando opciones
con HID en ellos. Entonces lee esto, para que
pueda verlo todo. Y para la malla estática para todo esto,
seleccionaré todo. Y como este es un atributo
común, puedo agregarlo a todos ellos. Voy a seleccionar de nuevo y
esta vez el 400 por 400. Y en realidad, voy a
cambiar el material también. Tengo que hacer esto seleccionando
cada uno de ellos y usar el ladrillo poner arcilla de ladrillo B. No
tengo idea de cómo
pronunciar esto. Pero esto es lo que estamos usando. Y voy a
seleccionarlo en todo. Este material en
este piso es
del paquete de arranque original de motor real. Ahora, vamos a moverlos para
crear algo así como paredes. Pero antes que nada,
voy a cambiar la escala en realidad para que sean dos. Quizá un poco más largo 2.3, en altura, y necesito
desbloquearlo antes. Gracias. Ahora, voy a copiar, copiar este valor e ir
pegarlo al resto. Esa es otra
opción que tenemos. Podemos copiar incluso conjuntos de opciones
completos, como puedo copiar toda la categoría de
propiedad
transformar, por ejemplo, y si el otro
elemento tiene lo mismo, pegar, y
debería haber funcionado. Nuevamente, propiedades de pila
en categoría, y Propiedades basales
en categoría. Bien. Ahí vas. Obras. Es. Ahora todos ellos tienen
las mismas propiedades. Ahora, el tema ahora se convierte en eso porque esto se multiplica
por dos, es 400 por dos, crea 800 piso, no un piso 600, lo que no es un gran
problema para nosotros en este momento porque necesitamos la habitación extra. Vamos a colocarlos
en los bordes, tal vez. A lo mejor me equivoco, a lo mejor Nuestra
talla no es 600, es 800. A lo mejor me informaron mal. De las tres personas D
sobre los bienes. Pero está bien. Simplemente podemos
cambiar nuestro tamaño de baldosa a 800. Sigamos Podemos hacerlo al valor predeterminado en tamaño de baldosa del generador Maze, al
menos 2800 o también
podríamos
haberlo hecho aquí en el menú principal. Ahora mismo, tenemos que hacerlo el menú principal seguro porque el antiguo valor predeterminado habría sobrepasado
porque no se
habría actualizado aquí Ahora, Archivo guardar, guardar completo. Nuestros azulejos son 800. Ahora. Vamos a colocarlos más o menos. Ahí. Ellos sí tienen que crear una caja. Cuando
los reemplazamos aproximadamente y en realidad los hacemos fríamente. Un poco más bajo porque
como se puede ver el a la misma
altura que el piso, los materiales pueden superponerse, y no queremos que
esto suceda. A medida que baja. Sí,
esto se ve bien. Realmente no importa.
Sí, está bien. Ahora mismo, tenemos algo
que parece paredes. Vuelvo a expulsar, lo
de algún lado. Tienes algo
que parece paredes. Cuando colocamos los
artículos encima de ellos, como paredes y todo, tal vez necesitemos reajustar de
acuerdo a lo que vemos Vayamos al generador de laberinto y
en realidad tile el azulejo BB, en realidad agreguemos una cosa más. Vas a agregar un texto. Otro renderizado de texto.
Eso va a colocarlo aquí
arriba y girarlo
mira a la cámara. Oh, no pude deshacer
porque dejé que se pusiera. Y cuando estás
jugando en cualquier editor, los cambios necesitan una
cierta combinación para guardarse también.
Bueno, en realidad. Pero cuando estás
jugando en editor, básicamente no hagas cambios. Esa es una de las reglas. Se puede. Como dije, se
puede ahorrar. Si tienes un nivel
que quieres jugar y expulsar y
mover algo, puedes y
en realidad puedes guardarlo Es el botón k.
Déjame demostrarlo. Pasemos al nivel de juego. Si presiono play,
voy a expulsar ahora mismo. Por ejemplo, quiero
mover no esto
porque esto se ha generado
a través de nuestro plano, sino que quiero mover, por ejemplo,
la iluminación direccional No vamos a la
luz direccional digamos que es otra mesa de actores. Quiero mover su ubicación. Y tal vez rotarlo
también algún otro grado. Si presiono K seleccionándolo, podrás ver el estado seguro para
K. Cuando deje de jugar, mantendrá la rotación y ubicación o escala
que le he configurado. Volvamos esto al valor predeterminado, y volvamos
a nuestro plano Ahora, volviendo a nuestro texto, me va a gustar
esto, fechado en realidad. Y para el texto, lo
vamos a estar sintiendo desde otro lugar y
Shona aumentará el tamaño Y vamos a hacer esto
con tamaño de arte de 26, voy a ponerlo a 30. 40 50, 50 se ve bien. Lo puse en alguna parte de aquí
porque va a hacer una frase. En realidad, voy
a hacerlo por aquí. Voy a ir al guión
de construcción. Ahora. Hablo un poco
sobre guión de construcción. Lo que hace es crear
cosas y fis información, y manipula el plano
básicamente A lo mejor vamos. Voy a conseguir este nuevo texto, que no nombré
nombre al número de archivo. Voy a traerlo
aquí con control, y voy a poner texto. Voy a conectar
esto primero que nada. Para el texto,
voy a cambiarlo
para que suene realmente texto, lo que hace en cadena a texto. Ahora, voy a hacer una pluma aquí, que significa en la
cadena de arriba a la cadena de abajo. Para la primera cadena,
voy a tener pila es O B, en realidad voy a
crear un mosaico variable. Cuando le puse una palabra,
no le gustaron dos palabras porque tenemos el número de texto
número de texto, y ponemos una puntuación t
delante de él. Ahora, puedo compilar y
cambiar esto a madera. Oye, voy a cambiar esto a la variable de número T
de N a entero. Voy a traerlo aquí, y voy a conectarlo a B. Ahora bien, donde este
número ty va a ser llenado con información
que va a estar en spawn Si compilas y no
funcionaste en la primera vez, dice, no se puede analizar el valor
predeterminado cae. Yo no voy a entrar en ello. Se puede compilar de nuevo,
y está arreglado. Oh. Va a ser Esto
va a ser llenado en instancia editable
y exponer en spawns Cuando estamos generando
un azulejo, por ejemplo, nuestro primer azulejo en
el generador de laberinto, ve a nuestro primer azulejo de desove St a azulejo. Ahora tenemos este número de
mosaico aquí, y el primer mosaico es cero. Para compilar y guardar,
veamos cómo se ve. Yo expulso. El número es cero.
Ahora, no me gusta que expulsemos cada vez Sólo voy a
traer una cámara. Dios. Va a ponerlo a cero, cero,
cero, o un poco
más arriba. Mira hacia abajo. Mi lo ponemos aquí y lo
hacemos en un ángulo. Ahora si empiezo, no hizo
nada porque no la hemos configurado para poseer esta cámara. Vamos a ir a un
plano de nivel ahora mismo, como la cámara, ir al plano
de nivel Haga clic y cree una referencia. Voy a ponerme
más fresco de eso, voy a
mezclarte con Blend. Conecta el nuevo objetivo, esta cámara y conecta
esto a Bigin play, compile y seven play Y ahora estamos
poseyendo esta cámara. Bien. Entonces tenemos el número de
baldosa es cero, tenemos las flechas, y
en realidad tenemos algunas paredes, que esta pared está un
poco fuera de su esta pared. Lo que dejé que se
superpusiera, lo puse apretado, un poco más bajo.
Bien, vamos a jugar. Anuncio. Tenemos nuestro número de tiempo, tenemos nuestras direcciones, y tenemos un comienzo que
aleatoriza cada vez. Ahora bien, lo que tenemos que hacer es hacer un camino a cuando
tenemos nuestra salida de, y cuando sabemos que
estamos bloqueados desde el oeste, estas flechas así que estén ocultas. Pero esto es algo que
vamos a dejar para
la siguiente lección. Adiós por ahora, nos
vemos en la siguiente.
15. Comunicación de planos con interfaces: O Hola, y bienvenidos a Game Design
Workshop y real Engine five Procesal Dungeon
action RPG curso de creación Anteriormente, agregamos
algunas paredes en nuestro azulejo, y también agregamos texto de número de
mosaico que agregamos al script de
construcción. Como decíamos esto corre antes de que el Blueprint
genere en el mundo, mientras que si
lo tuviera, por ejemplo, en la jugada de inicio,
correría el momento Fue después de que estaba desove. Oh, ahora, sigamos con nuestras flechas
con los ojos en base nuestras salidas en función qué lado está bloqueado
y cuál no ¿Vamos a
usar en realidad esto también para averiguar cuándo estoy construyendo la siguiente
pieza, si la anterior, dónde está la salida,
dónde puedo construir realmente ir a hacer eso, vamos a necesitar una función, pero no vamos
a necesitar ninguna función. Por si acaso quieres crear más tarde tus propios azulejos,
tu propio laberinto. Vamos a crear
y tal vez tengamos un laberinto que creó un montón de azulejos. Si tienen las funciones, en realidad, no si
tienen las mismas funciones, sino si tienen
cierta adición al blueprint que se
llama interfaz blueprint, pueden ejecutar las mismas Se pueden usar
desde el mismo algoritmo Déjame explicarte pintura morder. Digamos que tenemos un
algoritmo que dice, Vamos a crear algoritmo en realidad. Si la baldosa actual es
igual a la baldosa Mc, p? Si no es igual,
entonces pon tile. Esto es lo que
estaremos creando más adelante. Cuando un azulejo de desove y yo
queremos alternar sus flechas, ya que cuando nuestra mecánica de desove nos
da una referencia a
lo que
engendramos, podríamos llamar directamente una función que está
dentro Digamos que en nuestro
plano de azulejo, azulejo. Y si tuviera P voy a hacer. Y a esta función
no le gustaría. Si tuviera, como, cuando
estoy seleccionando una clase, si le pongo una
caja aleatoria aquí para seleccionar de diferentes fichas, clases
aleatorias. No me gustaría que
esté dibujando de esto y ejecutando una
función específica de este plano Entonces, aquí está lo que donde vienen las interfaces
de blueprint. Tienen un montón de nombres de
funciones con entradas,
salidas, lo que sea que pueda hacer
una función, en realidad, que se pueden compartir algunas clases de las
que seleccionamos. Entonces, cuando estoy teniendo
una función BI,
una función de interfaz
de blueprint aquí, puedo estar enviando un mensaje
independientemente a la clase, independientemente no es
una palabra independientemente a la clase, pero estoy generando, siempre y cuando la clase tenga
esta interfaz de blueprint,
dentro de ella, como heredada
en Te voy a mostrar cómo
agregar esto ahora mismo. Entonces básicamente, ese es uno de los usos de las
interfaces de blueprint No vamos a ir sobre
lo que es más óptimo. Hay otras formas de
enviar información. Hay despachadores de eventos, hay referencias directas, hay un montón
de formas de hacerlo. Pero, ¿qué es más óptimo o no? Depende de muchos factores. Y por lo general no se
trata de que los problemas
no vienen de ahí. Suelen ser problemas de
colisión. Suelen ser problemas de
navegación, el lío de navegación y con la IA, diferentes tipos de problemas crean
problemas mucho más severos en los juegos. Pero siempre, puedes
usar el perfilador y comprobar donde tu juego tiene hipo Ahora, agreguemos esta interfaz, pero para agregarla,
necesitamos crearla. Así que vamos a nuestra carpeta
Blueprints. Haga clic derecho, vaya a crear
una nueva carpeta, en realidad. Se llama a esta carpeta,
BI, interfaces Blueprint. Vas a
entrar en esta carpeta. Vas a ir a Blueprints, click
derecho e ir a planos
y seleccionar interfaz de blueprint Voy a nombrar a
este BI plt Homes. Y voy a abrirla. Ahora, cuando lo abro, aquí, nos da ya
una nueva función para agregar. La primera función
que añadiremos es una función para
encontrar la siguiente salida. Porque para donde
estamos, necesitamos, antes que nada,
encontrar la siguiente salida. Así que encuentra Entonces vamos a
necesitar dos entradas para esto. Van a ser
del tipo e dirección. Oh, ya es para mí porque es la última
variable que creé, y vamos a
nombrar a este ingreso. Erección. E ir a salidas y
crear otra variable. Va a ser otra vez
de la dirección e, y esta va
a ser la salida. Ba esta función
va a estar haciendo cosas para encontrar la dirección en
función de la
dirección entrante, ¿dónde está la salida? Porque no
queremos que la salida
sea la misma que la dirección
entrante. Porque entonces vamos a hacer ping
pong de ida y vuelta. Y la siguiente función
serían las flechas de ogle, para establecer la visibilidad en
función de si la ruta
está bloqueada o no. Ahora bien, como pueden notar, para los que son nuevos, aquí no
puedo colocar ninguna codificación. Esto se debe a que en las interfaces de
blueprint, les
debemos en el plano real al que los
estamos agregando. Y la razón es
porque podríamos querer la misma función con las
mismas entradas y salidas. Eva hace algunas matemáticas diferentes, algunas
operaciones diferentes dentro de ella. Pueden estar trabajando de
manera diferente en baldosas BV. También pueden estar trabajando de
manera diferente en la baldosa BV, pero las entradas y salidas
serían las mismas. En fin, continuemos. ¿Cómo agregamos esta
interfaz en nuestro blueprint? Para ello, vamos a ir a los valores predeterminados de
clase, lo siento, configuración de
clus, y
vamos a ir a interfaces tina e interfaces
implementadas Vamos a seleccionar Agregar
y llamar al BI Mase viene. Ahora, bajo nuestras
funciones variables y variables se ha creado una nueva categoría
llamada interfaces. Si abro esto, puedo
ver claramente que no he compilado esto. Puedo ver claramente
nuestras dos funciones. Las funciones que
estabas viendo antes era una función que
probé del registro, pero no funcionó bien. Entonces sí, estas son nuestras
dos funciones ahora mismo. Compilar de nuevo y
compilará. Siempre compile su plano de clase
I. Dave, y luego cierra
antes de hacer cosas en tu plano
que lo hayas agregado. Ahora, nuestro siguiente paso
antes de comenzar a arreglar estas funciones, no fijarlas, sino crearlas sería
crear una variable para controlar la información de si
una dirección está abierta o no. Si alguna dirección tiene acceso, podemos ir hacia adelante
o está bloqueada. Y como pueden ver,
ya estaba jugando con esto,
y esta es una
variable de mapa que creé. Empecemos desde
el principio aualmente. Digamos que, por
ejemplo, no es un mapa. Digamos que es una
sola variable, y va a ser
del tipo direcciones. Cree una nueva variable de
las direcciones de tipo, y luego seleccione la
variable de mapa, el contenedor de mapa. Y la segunda parte de
esto sería un Bolan. Dirección encendido apagado. Esto es lo que creamos aquí. Voy a llamar a esta
variable direcciones. Ahora, voy a necesitar
otra variable, que de esta vez
volvería a ser un mapa, y voy a tener
ambos lados a e d. Voy a nombrar esto opuesto. Voy a compilar y guardar. Y para estas dos variables, necesito establecer algunos valores
predeterminados. Entonces voy a ir primero
a direcciones. Voy a añadir uno. Voy a decir que esto es oeste. Voy a agregar
otro, decir que esto es sur, agregar otro,
decir que esto es este, y voy a agregar
otro que va a estar al norte. Voy a dejar el En parte, la segunda clave como als. Ahora bien, ¿por qué no presioné
siempre agregué un add four? Y entonces porque
si uno de ellos es norte y el
valor por defecto es norte, no
puedo agregar otro. Como puede ver,
dice que no se puede agregar una nueva clave
porque ya existe. Ahora, voy a hacer esto por direcciones opuestas también. Y esto sería sur,
enfrente es norte. Esto sería oriente, así que frente es poniente. Esto sería poniente, así que enfrente está el este. Y esto sería el norte,
que enfrente es el sur. Voy a compilar y guardar. En realidad usemos primero
las indicaciones. Vamos a nuestra función de
flechas Tal. Ahora, se creó como un evento donde
lo quería como una función. Entonces voy a borrar esto. Voy a eliminar esto e ir a queso el sistema un
poco porque no me va
a permitir que funcione fácilmente. Lo que voy a hacer para
hacerlo pasado es que solo voy a agregar la pila de parámetros, volver a nuestro plano Ocho flechas totales de función. Añádele algo. Vamos a esto. Agreguemos el Esto está bien. Esto, compilar y guardar. Vuelve aquí,
voy a borrar la salida y compilar y guardar. Y ahora lo tengo como función. Ahora, para nuestra función flechas
totales. Vamos a obtener las indicaciones del mapa. Y cuando estamos manipulando
información del mapa, realidad no
podemos
obtener como una matriz Tenemos que recurrir a array, una de las dos claves. Voy a conseguir ese. En realidad son claves y
valores. No son dos llaves. Es e y los valores de De todos modos, voy a conseguir claves y voy
a o a cada bucle de las claves. Te explicamos algunas cosas
sobre qué bucles antes, ahora va a ser muy fácil. Voy a conseguir
dirección otra vez, y voy a encontrar un valor. Encontrar un valor basado
en una clave es posible. Lo voy a hacer es
conectar esto aquí, el elemento array
desde el bucle fore, y estoy encontrando la clave
desde las direcciones. Y en realidad voy a sacar
todas mis flechas. Uno a o Lo que necesitamos es un let basado
en las indicaciones. Entonces voy a conectar la flecha
norte con el norte. Voy a conectar la flecha
Sur con Sur, para conectar este este,
oeste a oeste. De esta matriz que está
seleccionando rayo basado, basado en esta selección
basado en las direcciones. Voy a e visibilidad, y también voy a
propagar a los niños Y la visibilidad que se
establecerá se
definirá en base al
resultado del hallazgo. Ahora, tiene dos pines opcionales. Uno de ellos es si encontró el artículo porque
hay un caso de ellos solicitando
algo que no está dentro de las direcciones hacia arriba. Y el otro es
el valor de los datos. Voy a conectar
esto a la visibilidad, y voy a
conectar esto aquí. Base esto aquí e incompleto. Voy a establecer terminado. Devolver nota que
completamos la función. Ahora, voy a
compilar y guardar. Y vamos a probar
esto, por ejemplo. Pongamos las flechas Tg
aquí mismo. Compilando decir Cuando presiono play,
no se debe
mostrar ninguna flecha porque las
tenemos de manera invisible Nosotros los tenemos que
todo está bloqueado. Pero si presiono, digamos que Norte
y Sur están abiertos, va a estar funcionando.
Sí, está funcionando. Oh, creo que esto es
suficiente para éste. Te voy a ver
en la próxima. Adiós.
16. Búsqueda de salidas disponibles: Hola, y bienvenidos de nuevo al Taller de Diseño de
Juegos Re lensing five Procesal Dungeon action Un curso de creación de Pus En la lección anterior,
hablamos un
poco sobre las interfaces de planos, y también creamos algunas variables, la variable de
dirección, que contiene toda la
información para Occidente, Sur Este y Norte y la visibilidad acordada de
las flechas en forma booleana Y también creamos el mapa de direcciones
opuestas, que tenemos las direcciones
y lo contrario de ellas. También creamos la función de flechas
totales, que estamos tomando
las indicaciones y mirando a través
de cada una de ellas y encontrando la flecha adecuada de acuerdo para establecer la visibilidad dentro o fuera. Ahora, sigamos
con la búsqueda de salida. Un poco de vapor reventó
aquí. No importa. Entonces, sigamos con la
búsqueda de nuestra salida. Lo que primero tenemos que
hacer es promover la dirección del
ingreso a una variable
en caso de que la necesitemos después. De hecho podemos usarlo
libremente en esta función, sólo porque aquí tenemos
este ingreso. Déjame mostrarte una
genial y real Ahora, déjame mostrarte una funcionalidad genial
y real. Si renombro esto,
para ser más claros, Destinos de
ingresos,
pongamos aquí una S. Mientras estoy dentro de la función, puedo llamar a cualquier entrada que
esté llegando a esta función, simplemente escribiendo la
e, dirección de ingresos. Claramente, esto es diferente
en una categoría diferente. En realidad no está en ninguna categoría. Significa que está dentro de
esta función. Puedo llamarlo como una variable, siempre y cuando
esté en esta función. Si salgo de esta función a la gráfica y pego
esta variable, vas a ver
que no existe. Ahora cuando una variable
no existe, podemos hacer clic derecho y
crear una variable para hacerla, y mantendrá los datos y el tipo de
datos y estas cosas. Ahora, eliminemos esto.
No lo vamos a necesitar. Volvamos a nuestra función. Oh, conecta esto aquí. Tenemos direcciones de ingresos. Nuestro primer paso debe ser que nuestro mapa
de direcciones se actualice, que esta dirección sea
en realidad una dirección móvil. Es libre de moverse desde
un lado. No bloquea. Entonces debemos encender las flechas. Pero lo que vamos a hacer es
conseguir la dirección opuesta. Vamos a encontrar el valor
de la dirección del ingreso, que solo puedo arrastrar de
aquí, no importa, y luego voy
a agregar al mapa. Y por qué voy a
sumar, como explicamos, porque estamos agregando un
valor que ya existe, simplemente cambia el valor. No agrega uno nuevo. Entonces
voy a conectar esto aquí y establecer el valor verdadero y conectar
la miseria Ahora bien, el siguiente paso que debemos
hacer es
averiguar cuál de estas direcciones
es libre para crear una salida. Lo que vamos a hacer es
en realidad duplicar direcciones. Todo este sale. Voy a compilar, y
como esto es un duplicado, ya tiene nuestros valores. Ahora bien, lo que voy a hacer es quitar las direcciones de ingresos, que en realidad deberían ser las
llamadas a dirección de ingresos. Ese muchos es solo uno. Aquí lo vivo. Ahora, ya que quitamos un valor de aquí,
la dirección del ingreso, el resto de los valores deberían ser libres para continuar
nuestro edificio Me, como encontrar la salida que queremos. Entonces voy a conseguir las llaves. Ahora bien, esto serían solo
las respuestas posibles, y voy a
conseguir un ítem aleatorio. Voy a promover
esto a una variable, y voy a
llamarla posible salida. Este año este año. Ahora, tenemos una posible salida. Ya que lo decidimos y
clasificamos a una variable, deberíamos retirarlo nuevamente
de las posibles salidas. Voy a conectar esto aquí. Voy a conectar esto aquí, y se va a quitar. Por lo que ahora esto se quedará
con dos posibles salidas. Lo siguiente que
debemos hacer es agregar en las direcciones como
y diciendo add, me refiero a actualizar el valor
de nuestra posible salida. Y esto, lo
convertirá en verdad. Entonces ahora mismo, compilar y guardar, el siguiente paso sería
comerse con los ojos las flechas. Ya que actualizamos los
valores en las direcciones, la función La que
creamos a flechas Togal, actualizaremos nuestras flechas Al final,
llevemos el nodo de salida, conectado aquí y conectemos la posible salida
a la salida de salida. En realidad podríamos
nombrar esta salida, no posible salida.
Compilar y guardar. Ahora, vayamos a pintar y a explicar qué va a hacer realmente este
código. ¿Cuál es la teoría detrás de esto? Ahora mismo, tenemos una
caja, nuestra caja de azulejos, y decidimos tener una salida, digamos al azar
desde este lado, y como esta
es la primera caja, esta sería nuestra introducción Bloque de introducción. Ahora, estamos encontrando una
salida aleatoria en el primer azulejo del teléfono. La segunda pieza
que vamos a construir. Pongámoslo en
amarillo, en realidad. La segunda pieza
que vamos a construir, será automáticamente
automáticamente. Vamos a ejecutar la función, por
supuesto, para hacer eso. K que este lugar es su entrada y decidirá aleatoriamente un
lado para continuar. Tomemos, por ejemplo, que sigue subiendo. La siguiente pieza, también sabremos que aquí hay otra salida, y digamos que
continúa así. Ahora estás viendo a dónde
voy con esto. En realidad va a
terminar yendo aquí, y no va a
poder continuar. La forma en que lo estamos construyendo
es como una serpiente como un gusano. Crea una salida más. Lo que haremos
es crear un algoritmo como un algoritmo de track
buck para aquellos que estén
un poco más avanzados. ¿Qué es un algoritmo de seguimiento de dólar? Significa que a corto
plazo, coloca algo,
coloca algo hasta que las reglas dicen que no se puede colocar algo. No hay más
colocación en base a esto. Entonces vuelve atrás y comprueba si puede comprar otra manera de ir. Ahora bien, esta es una explicación muy
aproximada. Esto es lo que vamos a hacer. Pero para nosotros, exactamente, queremos ir un paso atrás. Al igual que un algoritmo de
retroceso más tradicional solo
va a ir de aquí Encontró un lugar que
no puede continuar, así que regresa. ¿Puedes encontrar algún otro
lugar para continuar? De hecho, elegiremos un bloque aleatorio para
hacerlo
creando aleatoriamente mazmorras que
ramifiquen la mazmorra en diferentes lugares Fuera, nos estamos adelantando
demasiado. Creo que este es un buen punto de
parada para este. La siguiente lección,
podemos comenzar construyendo esto y explicando
algunas cosas más. Adiós. Nos vemos
en la siguiente.
17. Algoritmo para la forma de laberinto base: Hola, y bienvenidos al taller de
diseño de juegos bajo motor cinco procedimientos Dungeon acción RPG curso de creación Anteriormente, creamos
la función find exit, que cos la
dirección del ingreso a nuestra variable, y hace algún
cálculo y agrega elimina direcciones de
nuestra variable de dirección. Actualiza las estadísticas, qué flechas así que sean visibles, y desde nuestras
posibles direcciones, estamos quitando la dirección de la
que venimos. Y luego estamos almacenando una dirección aleatoria
de las que quedan, y estamos quitando eso también y también cambiando las flechas,
las direcciones, variables
para hacer visibles las flechas. Y luego sumamos flechas con la función que
creamos antes. Ahora, también explicamos
un poco sobre nuestro algoritmo que va
a ser un algoritmo de retroceso Para aquellos que necesitan
una explicación más sobre elalgoritmo
y lo que es Básicamente, es una técnica para resolver problemas de
manera incremental
probando soluciones parciales y luego abandonándolas si no
son adecuadas Para nuestro ejemplo, intentará
crear para colocar otra baldosa, si no puede colocar otra baldosa,
retrocederá
a una posición anterior, como dijimos a
una posición
previa aleatoria e intentará crear más
mosaicos a partir de ahí Ahora, comencemos a
crear algoritmo. Vamos a ir a Even graph en el generador de laberinto,
no a la baldosa. Nosotros, en el generador BPM,
vamos a ir a VNGraf. Vamos a crear
un evento personalizado. Llamemos a este campo
de evento personalizado. Ahora bien, la primera pregunta que
debemos hacer es con una rama, ¿hemos terminado son nuestras fichas actuales con
iguales a nuestras fichas mac? Voy a traer esto hasta aquí, y voy a conectar esto. Se hace la primera pregunta. Si es cierto, hemos terminado de construir la primera parte de nuestro. Si no, que es la parte
más jugosa, deberíamos empezar a construir. Ahora, Nuestra siguiente acción será aumentar en uno los mosaicos
actuales. Voy a pegar esto aquí, voy a hacer un plus uno, y voy a poner
los mosaicos actuales. Yo lo estamos incrementando en uno, también
podríamos agregar plus plus, que es incremento en, que aumenta en uno Pero esto también está bien. Para la siguiente parte, viene la parte
más difícil porque aquí viene básicamente una
pregunta múltiple. Y para ello,
necesitamos una función. Qué va a hacer esta función. El primer paso de nuestra
pregunta será
encontrar no la cruz adyacente, sino la cruz adyacente
que estén vacías. Vamos a crear otra función, y la llamaremos base vacía. La ortografía correctamente, quizá. ¿Quién sabe? No. Lo que vamos a hacer es que
vamos a obtener nuestras coordenadas
actuales, y también obtendremos
la función que
creamos la cruz de hallazgo adyacente. Y de esta lista que
hemos explicado, estamos obteniendo todo lo
adyacente a nuestras coordenadas. Vamos a para
bucle, para cada bucle. R y vamos
a hacer algunas pruebas. La primera prueba que
debemos hacer es, ¿estas coordenadas
ya pertenecen al calabozo Si ya pertenece,
significa que tiene un azulejo, así que no deberíamos b ahí. Voy a conseguir
nuestro mapa de mazmorras, y voy a conseguir nuestras llaves, y voy a preguntar si
las llaves contienen algún artículo Y el ítem sería el elemento array de
los vecinos adyacentes. Oh, esta es nuestra primera pregunta. Pongamos una rama.
Conectemos esto aquí. Ahora bien, si esto es cierto,
deberíamos continuar. Y la siguiente pregunta sería, ¿pertenece a las coordenadas de entrada
forzada? Como por ejemplo, el
bloque de intro o para los siguientes niveles, el bloque elevador
del anterior Me. Oh, veamos si estas
coordenadas también están siendo contenidas en una copia pega
esto en la lista de fuerza vacía. Ahora, cuando tenemos una rama
y tenemos dos cosas que
queremos que sean verdaderas para
continuar de lo verdadero. Tenemos la variable. En realidad no los dos. Lo cambiar esta frase a si tenemos una rama
y queremos comprobar si alguna de las
condiciones es verdadera, podemos usar esta o nodos. O Boulan lo que significa
que si esto es cierto, o esto es cierto a esto Esto quiere decir que si alguna de
nuestras condiciones es cierta, la rama disparará de verdad. Lo que queremos es que ninguna de
las condiciones sea verdad, así que dispara de falso. Ahora, necesitamos otra condición, y la condición estaría en ¿qué tan grande puedo construir el laberinto? Al igual que, ¿qué significa el
max en x e y, puedo ir en el layout Para ello, necesitamos
una nueva variable. Vamos a crear una nueva
variable a partir de variables plus. Vamos a elegir una
variable y establecer su nombre M s y cambiar su
tipo a un entero. Se trata de un entero, claro, porque no hay medios bloques. Sólo hay uno, dos, tres, cuatro,
cuántos bloques queremos. Y al tener solo una variable, solo
podemos crear laberintos no cuadrados porque se
generará aleatoriamente Pero si los pasillos máximos están algo cerca de
lo que es el tamaño del laberinto, lo que pueden sentir, entonces
va a ser squash Si quisiéramos
diferenciar entre x e y y crear
paralelogramos, entonces necesitaríamos
tamaño máximo x tamaño máximo y
Ahora, para nosotros,
solo necesitamos el tamaño mac. Ahora, para nosotros,
solo necesitamos el tamaño mac Vamos a traerlo aquí.
Lo que queremos hacer es comparar mayor o moller Dije lo contrario. Si es mayor es ésta, si es más pequeña es ésta. La x y la y, así que
necesitamos duplicar esto. Conectado aquí. Oh, si tenemos nuestras coordenadas
actuales, que no son nuestras
coordenadas actuales en este momento, es este elemento array real, que voy a
romper aquí porque es un punto in y yo
la x e y se separan. Oh, si mi x es mayor o mi y es
mayor que el tamaño may, entonces estamos fuera de límites Pero al mismo tiempo,
queremos usar los valores
negativos también, por lo que nuestro laberinto se ramifica incluso
desde detrás de la estrella. Si empezamos aquí
y apenas empezamos a sentirnos en el
eje positivo de x e y, este es nuestro espacio de construcción. Pero si empezamos aquí y
allá lo negativo también, entonces nuestro tamaño y los triples Lo que vamos a
hacer es que vamos a multiplicar esto por menos uno, para que podamos negarlo, y
conectaremos estos dos Esto es un desastre. Traamos lo positivo
los mayores arriba y los negativos
abajo y conectemos esto aquí. Lo que podemos hacer es crear algunas notas de lectura haciendo clic
en los propios cables. Esto conecta aquí, así que
voy a conectar esto aquí. Voy a traer esto de
vuelta y conectar esto aquí. Y hagamos
otro aquí, nosotros aquí. Ahora, ¿sabes qué? Sólo
vamos a duplicar esto es variable aquí, tal vez
conectado aquí. Listos pueden ver mi error. Bien,
porque cuando está tan espaguettificado, es difícil
darle sentido. X va aquí y y va aquí. Y esto no es necesario. Bien. Ahora es un
poco mejor. Ahora bien, lo que voy a
hacer es volver a usar la marcha o una o lógica. Voy a conectarme
a esto aquí porque si algo de esto es t, entonces volverá verdad. Si todos ellos son falsos, volverá falso, así que
estamos dentro del laberinto. Y un bonito truco poco
nifty y real también tiene es que
puedo llevarme estos Puedo hacer clic derecho, y puedo
colapsarlos, función. Voy a hacerlo
puro y llamarlo. Tecnología fuera de vocales. No, no creé la salida porque no la
habíamos conectado. Pongámoslo en una variable. Llamemos a esto fuera de límites. Mecanografía de rebote. Vamos adentro y
conectemos actuar aquí. Compilar y guardar. Volvamos a nuestro get empty adyacente y creamos otro pin en este o y conectarlo aquí. Pasé un
poco más allá de esto. Sí, podemos concretar más pines haciendo clic en el
pin del anuncio como lo hice aquí. Debí haberlo exed. En fin, continuemos. La lógica es la parte importante. Ahora, tenemos digamos
que todo es falso, y todo está de acuerdo a nuestro plan, que es correcto. Y uno de estos adyacentes
está completamente vacío. No pertenece
ya al laberinto. No es forzado a vaciar, y no está fuera de límites Déjame comprobar muy rápido fuera de los límites,
que no pasa nada Si el tamaño ma es
mayor que la X. Ahora bien, eso es lo contrario. Si la x es
mayor que el laberinto, y si la x es
más pequeña, y esto. Eso significa que, por ejemplo, si x es menos diez y el
tamaño es menos cinco, es s, y
es, está fuera de límite. Esto es correcto. Entonces,
si estos son correctos, tenemos las coordenadas, pero no tenemos cuál es,
Noreste, Suroeste,
¿dónde están estas coordenadas? También necesitamos esta información. Entonces lo que vamos
a hacer es crear una variable temporal si
bajamos aquí en la lista de variables. Podemos ver ahora una nueva
opción, las variables locales, que son las variables,
como se puede ver, obtener vacías adyacentes que
pertenecen sólo a esta función. Esto quiere decir que cuando se ejecuta
esta función, están obteniendo
sus valores predeterminados. No almacena ninguna
información sobre ellos. Oh, ya que esta es
una función pura, en realidad
podemos usarla. Lo que vamos a hacer es
que vamos a llamar a esto, primero
vamos a
convertirlo en un mapa. Y la primera clave la clave
serán las direcciones, la rameración La variable, la
segunda variable sería el punto
de coordenadas. Oh, tengo que traerlo aquí. Digámoslo también. A cationes. Ahora, vamos a nombrarlo. A
No hay ubicaciones disponibles. Es el adyacente válido. Bien. Pero tenemos
válido adyacente. Y aquí vamos a sumar
a esta válida adyacente. Este valor que
proviene de la matriz. Vamos a conectarlo aquí. Ahora bien, ¿cómo sabemos si es
nororiente sur u oeste? Lo que vamos a
hacer es que vamos a usar un nodo select aquí. Y para las opciones, vamos a conectar
el índice de matriz. En realidad, esto no
funcionó muy bien. A veces no
te da las opciones Zake. Hagamos una selección. Así con un comodín, y si lo conecto, todavía
no me da las opciones. Entonces, vamos a
quesarlo un poco y obtener la última salida de aquí
y hacer una selección de aquí. Voy a conectar
esto también aquí y luego conectarme aquí, y eliminar esto. Esto no funcionó. Vamos a intentarlo de nuevo. Vamos a traer la exit y de index array, voy a elegir
Vamos a conectar esto aquí. Y. Aquí tenemos los valores. Voy a conectar
esto aquí primero, y después voy
a desconectar esto. Así es como traemos
este selector. Increíble. Traemos
de la matriz. Hacemos una selección, traemos una
variable de nuestras direcciones e. Lo conectamos al selecto, por lo que mostró las opciones en lugar de
tenerlas como variables. Podría haber habido una manera
más fácil de hacer esto. En fin, ahora, como sabemos nuestro índice corresponde a
este índice del rayo, porque este es el
que estamos para looping Sabemos que el primero
es Índice cero es norte. El primero es el
número uno es Sur, número dos es el este y el número tres es el oeste. Entonces podemos hacerlo correspondientemente
aquí norte nouth, oriente oeste Ahora bien, lo
siguiente que necesitamos es
una salida en esta función Voy a seleccionar
esto y a partir del completado del bucle de cuatro. Porque si lo agregamos aquí, entonces cada vez que el cuerpo de bucle disparado se
higaría completo. En realidad en la primera,
quedaría fig completa. Voy a conectar esto aquí, y voy a cambiar la
salida a una variable de mapa, en realidad e variables de direcciones que hará un mapa a partir de ella. Y el segundo volvería a
estar en el punto. Así podemos conectar
nuestro adyacente válido. Llamemos también
válidos los valores. Por qué agrego los valores
en esto y no
aquí en este nombre porque
si tienes los mismos nombres, puede confundir el motor y por
lo general no te deja,
pero en caso de que te lo permita, puede confundir el motor al empaquetar el juego
en muchas otras Entonces sí, es mejor tener diferentes nombres para las variables
locales para
las variables que no son locales en tu blueprint y también para las
notas de retorno y todo La creación de nombres de variables
es algo mejor hecho con mucha explicación como valores
adyacentes válidos. Tal vez esto debería haber sido válido laberinto cruzar valores
adyacentes. Más explicaciones sobre los nombres de las
variables, mejor. Oh. Ahora mismo, hemos
terminado con esta función, punto vacío adyacente, y
estamos devolviendo esta lista. También creamos esta función
checkout of bones, y creo que es un
buen punto de parada. Te voy a ver
en la siguiente. Adiós.
18. Lección 3D 17 Desove continuo de mosaicos: Hola, y bienvenidos de nuevo al taller de Diseño de
Juegos y motor
real cinco procedimientos Dungeon action bs curso de
creación En la última lección,
dejamos con la creación de nuestro get empty adyacente. De hecho,
pasamos por nuestros vecinos. Fundamos a los vecinos cruzados, y los cuatro miramos
a través de cada uno de ellos. Comprobamos si pertenecen
al mapa de Dungeon, si pertenecen
al vacío forzado, o si están fuera
de los límites creando
esta función it por esta función it Entonces, entonces si no
pertenecía a ninguno de estos, lo
agregamos a una variable
llamada valid adjacent, que es una variable local
en esta función, y le dimos este valor
con nuestras notas de retorno cuando se completa el bucle for. Sigamos con nuestro laberinto. Algoritmo de construcción. Ahora, vayamos a par graph, y vamos a traer esta
pequeña y agradable función que hicimos, que es conseguir vacío adyacente. Pero no lo hicimos puro. Va a hacer clic en
compue y ahora es uno puro. Ahora, tenemos esta lista. Lo que queremos hacer
con esta lista es verificar si la última salida
pertenece a alguna de estas. Entonces, lo que voy a
hacer es que voy a encontrar la última salida. Si no encuentro la última salida, entonces necesitamos retroceder, entonces no hay
forma posible de continuar porque todos los adyacentes vacíos no
corresponden en la
salida que queremos El bloque quiere
salir de ahí, pero el siguiente bloque en realidad
no es válido. No, no vamos a hacer
la pista trasera ahora mismo. Lo que vamos a continuar
si encontramos la última salida. Voy a poner una sucursal aquí, vamos a
conectar esto aquí. Y desde que fundamos nuestra
última salida, y existe. Significa que puedo
construir un nuevo bloque. Significa que finalmente puedo tener una
nueva coordenada. Voy a traer
los Cordones actuales y voy a
conectarlo para conectar esto aquí. Ahora que tenemos nuestras
nuevas coordenadas, necesitamos encontrar la ubicación en la que generaremos
el nuevo mosaico Oh, vamos a traer clase de actor propio. Y vamos a seleccionar de nuevo
el mosaico de clase, mosaico
P, y vamos
a dividir la transformación. Ahora, para encontrar la
ubicación que necesitábamos, creamos una función para esto, que se llama
no fini location Voy a conectar esto aquí. Voy a conectar esto aquí, y por fin podemos
tener un nuevo bloque. Ahora, que responden
al nuevo bloque. Nuestro número de mosaico no
debería ser cero. Nuestro número de azulejo debe
ser nuestro arn tiles. Porque ahora mismo, hemos agregado uno y cero más
uno es igual a uno, así que este es nuestro primer mosaico
con base cero de conteo. Lo siguiente que debemos hacer
es sumar esto al dang. Voy a traer
el mapa dangon, y voy a agregar
colocar esto aquí Y va a traer
aquí las coordenadas
actuales y el valor
de retorno del actor spawn al actor de
la mazmorra Además, tenemos que llamar
desde aquí a la salida de búsqueda. Sí, me mas coms encuentran salida. Queremos el mensaje
uno porque si
hubiera seleccionado la salida. Podemos seleccionar esto. Como puedes ver, tiene
un objetivo diferente. Probablemente no hubiera funcionado porque este color de
aquí significa que
lo estás llamando en este plano, incluso si he
conectado el objetivo Pero de todos modos, debería
ser el plano. El mensaje cuando tiene
esta carpeta por aquí, significa que está enviando un mensaje. Ahora, voy a
borrar esto, y voy a conectar esto aquí. Y para la dirección entrante, vamos a elegir el último. Salida. Y. Y nuestro valor de salida sería establecer nuestra última salida. También hay que agregar a este
actor para que se destruya, así que voy a llevar a
los actores a destructor Voy a hacer un add en la matriz y conectar esto aquí. Vamos a mover
todo un poco. Aquí, y tal vez hacer los
cables un poco menos pagiados. Luce mejor ya. Ahora bien, cuando todas estas
funciones han sucedido, lo que debemos hacer es
alrededor construido de nuevo. Si hago clic aquí, pueden ver,
me lleva al inicio, y esto continuará
hasta que
se cumpla esta condición o esto o
ahora encuentre un problema. Demostremos
lo que creamos. Voy a ir a
la variable Mi talla y seleccionar un número. Digamos cinco. Hagamos
que esta instancia editable y expongamos en Spone, para que podamos configurarla desde el menú
principal de este spon Pero actualicemos esto
también Vamos a compilar primero. Actualicemos esto también. Y tenemos tamaño de laberinto por aquí. Máximo de mosaicos 20, por supuesto, también
necesitamos llamar
al evento de compilación
después de nuestro evento de
primer estilo de generación Entonces vamos a llamar aquí a
nuestra compilación y compilación. Vamos a p. vamos a
pre inicio, y se molestó. ¿Por qué fue un error? Ahora funcionó. Aquí aquí aquí. ¿Por qué es este callejón sin salida? Tener Ops Aquí de nuevo, este es un callejón sin salida. Vengo de aquí, me estoy quitando esto. Aquí. Algo está
pasando con las flechas. Así que vamos a
ir al azulejo BP, y vamos a nuestras funciones de
interfaz. Probablemente encuentre salida. Comprobemos qué estamos
haciendo en la dirección que viene. Estamos encontrando lo contrario. Estamos agregando que de
lo contrario estamos viniendo. Lo estamos quitando de la salida
de claves de lista. Estamos agregando la salida, y estamos alternando flechas Pasa de dirección de ingresos. Sí. Este es el problema aquí. Verás, estamos quitando
la dirección de ingresos. Estamos quitando una
manera de que podamos salir. Lo que deberíamos estar quitando es lo contrario de la
dirección del ingreso al principio. Entonces si compilamos play ahora Sí, tenemos dos flechas y
termina con una flecha Bien, genial, y
mantiene esto vacío. También. Tenemos algo que
ha empezado a crear laberinto, un laberinto de gusanos, partimos de aquí. Veamos algunas
veces más si retrocede. Y vamos a cuántas piezas es. 11. Cómo decimos este máximo. Oh, llegué al final. Por eso. El final. Adivinando. Digamos cinco. Entonces esto es cero, uno, dos, tres o cinco. Este es el final. Por eso
se detiene aquí. Todo bien. No, creo que este es un
buen punto de parada. En la siguiente lección,
vamos a hacer la lógica Bata. Adiós. Nos vemos
en la siguiente.
19. Sistema de retroceso personalizado: Hola, y bienvenidos de nuevo al Taller de Diseño de
Juegos y real de
creación de ARPs de Acción de
Mazmorra Procesal Engine five creación de ARPs de Acción de
Mazmorra Anteriormente, creamos el inicio de nuestro algoritmo,
nuestro algoritmo construido. Creamos mucho, en realidad. Creamos la
primera pregunta que
es que nuestro algoritmo ha
llegado a los mosaicos MC. Después agregamos una ficha extra, una extra al
mostrador de las baldosas. Hacemos algunas preguntas, por
ejemplo, si nuestros adyacentes vacíos
a nuestro alrededor son válidos, y encontramos la ubicación
de nuestras nuevas coordenadas, si son válidas, y
generamos el azulejo Agregamos a la lista de destruir, agregamos la lista de la mazmorra, encontramos una nueva salida, y seguimos construyendo Ahora, continuemos
con nuestro bucle de bactra. Oh. Ahora, tenemos que volver a hacer
algunas preguntas. Entonces, vamos a abrir pintar
y explicar esta parte de nuestro algoritmo
lavid con más detalle Ahora, digamos que
tenemos nuestro calabozo que
se está creando Déjame copiar y pegar esto. En algún momento, no
puede crear más. Se ha intentado ir, y ya no
hay espacio para seguir adelante con las reglas
que tenemos hasta ahora. Entonces, ¿qué hacemos? Vamos a hacer una pregunta muy sencilla. Vamos a decir el bloque aleatorio
choose 11 de los que
hemos creado e
intentar ver si hay una
salida que sea válida. Pero también, vamos a
estar haciendo una pregunta más que si hemos
visitado una cuadra, y seguimos construyendo
a partir de esta cuadra, bla bla bla a Roa, es edificio continuo, y
encuentra al final otra vez No queremos
volver nunca a esta cuadra. Entonces crearemos otra lista que pondremos los bloques
que hemos visitado. Entonces crearemos otra lista a partir de los bloques que
estamos visitando, para que nunca más los visitemos. La razón es pero
desde mi perspectiva, crea una mazmorra mejor,
una mazmorra más ramificadora de lo
que lo haría sin ella En fin, esta es nuestra regla. Vamos a implementarlo. Ahora, para ello,
necesitamos una nueva función. Ahora, vamos a crear
otra función, y llamemos a esto. Trate de doler camión. Lo primero que necesitaremos es duplicar nuestro mapa de mazmorras Voy a llamar a ese duplicado z. Creo que está bien. Voy a traer esto
aquí y voy a traer nuestro mapa de mazmorras también Ahora, del mapa de mazmorras, voy a seleccionar las llaves Y voy a conseguir
la longitud, en realidad. Puedo obtener un elemento aleatorio
de la matriz directamente, y voy a promover
una variable local,
el entero, el
índice de salida, no el punto final. Y voy a nombrar
esta ubicación aleatoria. Voy a conectar esto aquí. Comprobemos si esta ubicación
aleatoria está dentro de nuestro visitado
en realidad tengo esto aquí. Ubicaciones. Voy a revisar
las dinas. Y voy a necesitar
en la llave para encontrar
voy a necesitar
sólo voy a conseguir. Hay una referencia,
necesito una copia. Voy a conseguir esta ubicación
aleatoria. ¿Por qué lo hago de esta manera? Voy a explicar
en un segundo. La forma en que lo estoy haciendo de esta
manera es porque quiero explicar que si elegí, si hubiera conectado esto aquí, iba a conseguir un nuevo azar. Si la guardo en una variable, entonces estoy obteniendo esta
variable que guardé. Pero si estoy recibiendo de
este nodo por aquí, entonces voy a obtener un
aleatorio un nuevo aleatorio cada vez que algo está solicitando
algo del azar. Lo mismo hubiera
pasado si tuviera un int aleatorio. Si estuviera solicitando dos veces, entonces obtendría dos números
diferentes. Y todos los nodos aleatorios,
como, por ejemplo, un aleatorio en rango,
funcionan así. Darán un valor diferente todo lo que esté
conectado a ellos. Vamos a continuar. Ahora bien,
si esto es cierto, entonces queremos terminar con esta
función por aquí. Entonces, vamos a
tener una salida, y será del tipo lean, y vamos a nombrarlo. No. Voy a
conectar esto aquí, y voy a colocar la salida. Ahora bien, porque estoy terminando
la función aquí, no quiere decir que si
tengo cosas aquí, no
se ejecutarán si
esto se ejecuta falso. Puedo tener muchos nodos de
retorno dentro una función en función de donde
quiero que termine la función. Entonces. Aunque si es falso, voy a ir a la
lista de Nangon, nuestro mapa de Dungeon Voy a traer esto aquí. Voy a presionar d.
Voy a conectar esto aquí. En realidad, de este captador, sólo
voy a poner esto aquí También, necesitamos viento
podemos conseguir el objeto también. Y error instantáneo. No quiero el mapa de
mazmorras aquí. Quiero la
ubicación visitada aquí. Estoy encontrando desde
el mapa dangon y estoy agregando a la ubicación
visitada Oh. Ahora, he agregado a
la ubicación visitada, la nueva ubicación que
estamos probando
si puede tener una salida. Sea incluso si esta ubicación
no tiene salida, todavía
queremos agregarla
a las ubicaciones visitadas. Ahora bien, ¿cómo vamos
a comprobar si
hay una salida a ésta? Vamos a necesitar abrir
nuestros peines I maze y agregar una nueva función y nombrar a
esta función nueva salida Voy a compilar
y guardar los bi coms, mas coms, e ir a nuestras llantas Ahora, esta nueva
función aparece aquí. Sin embargo, esta nueva función necesita una salida. Nosotros, agreguemos una salida. No sería salida. Y necesita otra salida de dirección de salida.
Vamos a llamarlo. Va a ser a partir de
las direcciones de tipo, las direcciones de enumeración, y ahora podemos compilar y guardar realmente y volver tile Esta es una función. Ya
no es un evento. Vamos a abrirlo, y vamos a
crear algunas cosas aquí. En serio, ¿sabes qué?
Terminemos primero esta parte. Y entonces vamos a hacer eso. Entonces, voy a llamar a la nueva salida como mensaje porque estamos
mandando un mensaje. Es una interfaz de blueprint. Y si es verdad, no
quiero una N.
Quiero una sucursal. Si esto vuelve verdadero, entonces significa que no tenemos salida, entonces no regresamos ninguna salida. Copiamos y pegamos el nodo de retorno. Ahora bien, si esto es falso, vamos a estar
estableciendo la última salida a la dirección de salida, y vamos a estar estableciendo
nuestras coordenadas actuales A W es la ordenanza de aquí. Vamos a leer un poco a spaghetti pi aquí, va aquí. Aquí. Un poco mejor. Yo quiero hacer esto. Bien. T arriba. Siempre es bueno
amarrarlo un poco. No, vamos a devolver esto con agujeros.
Hemos encontrado una salida. Podemos seguir construyendo. Creo que deberíamos
conectar esto aquí. Llamemos a esta función. Mochila, que no
será pura, que va a ser
una verdadera función. Y vamos a poner
una sucursal por aquí. Y tenemos que hacer
algunas cosas más. Ahora bien, si iba
a colocar, digamos, nada de salida, así que seguimos
construyendo con nuestros nuevos datos. Si iba a
correr desde build, entonces
pasaría por esta comprobación, lo que realmente no importa, pero agregaría un extra
a los mosaicos actuales, y no queremos que
esto suceda. Entonces vamos a crear
otro evento personalizado. Y vamos a
llamarlo continuar construir, y vamos a
conectarlo a la rama de
aquí que estamos tomando
para adyacentes vacíos Vamos a seguir
construyendo desde falso. Significa que si ninguna salida es falsa, vamos a
seguir construyendo con nuestros nuevos datos que
serán pasados aquí. Se comprobará la ordenanza
que hemos establecido, y va a funcionar en consecuencia. Ahora, ¿qué pasa si ninguna salida es cierta cuando no
tenemos otra salida? Bueno, vamos a hacer
una pregunta muy sencilla. Nuestras ubicaciones visitadas
y el mapa de mazmorras son de la
misma longitud para hacer esto Voy a pedir longitud, lo que nos da el
número de entradas en este mapa o array o conjunto? Y si estos dos son iguales, y no hay salida, entonces ya no podemos vencer
al laberinto. A vamos a parpadear
por el bien de los bugging. Yo no puedo construir. Y así nuestro código no falla, estableceremos nuestros mosaicos principales. Al máximo estilos, y vamos a llamar build. Esto significa que si el
laberinto ya no puede construir, establezca nuestro mosaico actual
dos estilos máximos y salga esta base de
construir la mazmorra Ahora bien, cuando esto no es cuando el mapa de mazmorras no
es igual a las ubicaciones
visitadas, solo
deberíamos correr de nuevo
el tri para retroceder Y esto no va a crear un problema porque no será infinito, porque cada vez
que estamos corriendo el backtrack y estamos
seleccionando un nuevo punto, lo
estamos agregando para
visitar esas ubicaciones En algún momento, estas dos
variables serán las mismas. Básicamente no serán los mismos porque
estarán en un orden diferente, sino que estarán conteniendo
la misma información. Por lo que saldrá y
saldrá de nuestro construido. Creo que esto es
suficiente para éste. Continuaremos con el siguiente
rellenando el nuevo código de salida. Te veré entonces. Adiós.
20. Finalización de reglas de retroceso: Hola, y bienvenidos de nuevo al Taller de Diseño de
Juegos Rail Engine five Procesal Dungeon
Action At Ps curso de creación Anteriormente, creamos nuestras reglas
personalizadas para el retroceso. Dijimos que si no
podemos encontrar un adyacente entonces vamos
a tratar de dar marcha atrás Oh, tenemos las llaves
del calabozo, lo que sea que se haya hecho Almacenamos el índice aleatorio de esta matriz que
obtenemos de las claves, y verificamos
si está visitado en la lista
de ubicaciones visitadas. Si está en la lista
de lugares visitados, estamos saliendo con caídas Si no es cierto, que no
hay salida. Entonces vamos y corremos esto de nuevo
para encontrar otro posible. Ahora bien, si no es cierto, entonces no está contenida en
las ubicaciones visitadas, entonces estamos agregando esta ubicación a las ubicaciones visitadas. Estamos tratando de
encontrar una nueva salida. Si no podemos encontrar una nueva salida, devolvemos false y
ejecutamos esto de nuevo. Y si encontramos una nueva salida, almacenamos a las variables, almacenamos las coordenadas, y vamos afuera, y continuamos construyendo a
partir de un nuevo evento personalizado. Ahora, cuando estamos
tratando de encontrar una nueva salida, estamos comprobando si
las ubicaciones visitadas son tantas como hay
en la lista de mazmorras Entonces lo siento, usando la
longitud de estos dos mapas, y si son iguales, salimos con un mensaje que ya no
podemos construir. Configuramos nuestros mosaicos máximos
a los mosaicos actuales, y
volvemos a ejecutar el constructor y esta vez
volverá de ser verdadero. Ahora, salimos de aquí sin llenar la nueva salida
en la baldosa BP. Así que vamos a hacer eso. Vamos a abrir nuestra función nueva salida que hemos creado en
la interfaz del blueprint, y comencemos a
crear algunas reglas La primera regla que deberíamos tener
es que llevemos la sucursal. Consigamos las posibles salidas, y vamos a conseguir la longitud. ¿Esta longitud es igual a cero? Como, ¿hay alguna salida
posible? Porque si
no hay salidas posibles, entonces tal vez deberíamos solo
flechas, antes que nada. Por si acaso algunas
flechas están equivocadas. Y luego vamos a
regresar sin salida. Ahora bien, en caso de que esto no sea cero. Aquí es donde viene la parte
interesante. Lo interesante podría ser duro. En fin, vamos a
llegar de lo contrario. Vamos a
seleccionar uno rondo. Y vamos a fijar la salida. Yo traje salida, la traje
de los variabs, sosteniendo t y trayéndola
aquí y soltando, lo
que consigue un setter Voy a conectar esto. Aquí. Ahora, estamos haciendo lo
mismo que con find exit, pero con algunos cambios. Ahora, vamos a
agregar direcciones y agregar la dirección de salida. Vamos a agregarlo a t, y lo vamos a
quitar de nuevo. Voy a
traerlo de nuevo. Voy a arrastrar una mesa desde aquí. Retire la salida de
las posibles salidas. La próxima vez, podemos elegir probablemente no
habrá la próxima vez porque
estamos configurando este estilo
para que nunca más se
vuelva a visitar a través de nuestras ubicaciones
visitadas. Pero de todos modos, no,
vamos a flechas feas, he llamado las flechas de
Toggle equivocadas en ambas. Pero sí, está bien. Lo más correcto sería
hacer éste con
el nodo amarillo. Pero, vamos a leer el correctamente. Porque cuando tenemos un nodo
amarillo, significa auto. El objetivo es uno mismo y es
básicamente, eso es todo. Significa que te estás
apuntando a ti mismo. Incluso aquí tiene yo, pero por alguna razón,
esto es mejor. Y esto es esto es un pin, en realidad, me he estado refiriendo
al pin como un nodo, de todas formas. Estamos hablando de flechas, y luego necesitamos de nuevo el nodo de
retorno. Esta vez encontramos una salida. Deshacemos clic en esto, y conectamos
salida a salida dirección. Entonces ahora esto vamos a obtener
alguna información. Ahora, vamos a tratar de ejecutar esto. Como podemos ver. Bien.
De hecho, veamos que sucede. Vayamos a nuestro gráfico de eventos, y pongamos un retraso aquí. Pongamos un retraso de 0.2
segundos. Sí. Eso está bien. Y vayamos a nuestro
menú principal. Hagamos esto más grande. Hagamos tamaños de pila. Bien, 200 puede ser
un poco grande, pero digamos 100. Veamos tamaño y
bastaría,
creo, diez por 10100 Y si contamos
los negativos, veamos diez Así juega. Ya lo expulso, y podemos sed tratando de
construir nuestro laberinto Construyendo una mazmorra, se nota aquí con retroceso, retroceso Cuando no puedes
encontrar otro, ves cuando esto da forma esta forma cuadrada o paralela, trata de retroceder.
Ahí está. Creo que esto es de
las últimas piezas, es 100 Bueno, por
lo que puedo decir, lo
puse en lo contrario. A lo mejor deberíamos cambiar, a lo
mejor deberíamos poner este número hacia este lado. Bien, vamos a
esto, vamos a nuestro azulejo. Esto es del norte, debe ir desde el Sur. L et's volver a ejecutarlo. No. Bien. ¿Por qué? Yo sólo lo cambio. Bueno, no importa. Vamos a deshacer. ¿Qué está pasando aquí? Es correcto. Le doy
la vuelta a la cámara. Mi mal. Es correcto. Da marcha atrás, crea Vamos a probar y
jugar un poco a la prueba Pongamos mil. Pongamos esto a 50. Pongamos este 20.1, así que es un poco más rápido Y rechazar y jugar. Ing fuera. Sí. Crea un nivel, lentamente, pero lo hace. Esto no va a faltar. Queríamos
hacer un error un poco. Hagámoslo como
queremos poner mil piezas, pero en un laberinto tamaño de cinco. Entonces esto no va a caber. Veamos este ejemplo. Aquí ahora debería decir que en algún momento
puso nuestro mensaje de error. Yo no puedo continuar. Construirá una caja humilde, no una caja porque
estamos rastreando el dólar Imprimió el mensaje. El laberinto no puede construir más.
Cómo abrí esto. Presioné la tecla de mosaico, la que está al lado de una. Entonces, si hago esto, puedo
ver los últimos mensajes. Entonces como pueden ver, también
puedo ver lo que he estado haciendo pinchando sobre
fondo, por ejemplo. Entonces, tenemos Mace
no puede sino más. Y tenemos estos
pequeños huecos aquí y por aquí porque
nuestro seguimiento de espalda para no ir Tiene algunas ubicaciones
visitadas, así que elegí no hacer esto. Ahora bien, el problema que
podemos
ver instantáneamente es que algunos de los, algunos de los bloques, aunque tengan
acceso a otros bloques, no
tienen la flecha. Y eso es por cómo se construyeron
los laberintos. Estamos actualizando algunas flechas, pero algunas no estamos actualizando. Déjenme darles un ejemplo
sobre esto. Vamos a pintar en la papelera. Ahora, digamos, por ejemplo, que estamos construyendo herramienta de
pintor, estamos construyendo el primer bloque, y estamos consiguiendo esta salida. Ahora estamos construyendo
el segundo bloque, y estamos habilitando esto, y estamos
tratando de salir de aquí Entonces estamos construyendo este bloque. Estamos habilitando esto
y tratamos de salir de aquí. Ahora estamos enmarcando este bloque. Estamos habilitando aquí y tratamos de salir de aquí,
lo cual no podemos Entonces esto realmente
se pone realmente no, si tiene una flecha
porque trató de ir aquí. No puede construir,
pero encontró algo, así que hay acceso a él. Ahora, intentemos
retroceder desde aquí. Estamos retrocediendo desde aquí,
así que estamos habilitando esto. Se trata de ir por este camino. Vaya, así que estamos habilitando esto. Ahora bien, fuimos por aquí, y estamos habilitando esto. Y queremos ir por este camino. Bueno, no podemos. Entonces
estamos habilitando esto pero no
lo estamos habilitando aquí. Entonces cuando esto sucede muchas veces, como vimos, en el gran
laberinto que acabamos de crear. Podemos ver que esto
va a pasar mucho, y crea un patrón que algunos de ellos
van a ser así, y algunos de ellos
serán así, y no van a
tener el último porque el
último venía de aquí y decía
que no pueden continuar o
no puso una flecha. Simplemente trató de dar marcha atrás.
Entonces, arreglemos esto. Entonces, nuestras flechas en el laberinto
son realmente correctas. Pero esto lo haremos
en una segunda fase. Nuestra primera fase fue
construir un valioso basado en
los valores que tenemos, porque 1005 lo hará si los mosaicos
máximos no son ajustados, siempre
va a
crear una cosa cuadrada. Entonces pongamos algo mejor. Pongamos este tres, y
pongamos esto en 20. Lo que crea.
Revisé de nuevo. Sí, algo así debería ser más de un primer nivel. Tiene una cosa pequeña, y
luego ahí continuamos, podemos estar aumentando los
inicios de tamaño principal y azulejos. En realidad, dijimos demasiado. Creo que este es un
buen punto de parada, y seguiremos con
eso en el siguiente. Adiós.
21. Conexión de mosaicos después de la generación de laberintos: Hola, y bienvenidos de nuevo
al Taller de Diseño de Juegos, y motor real cinco
Procesal Dungeon acción RPG curso de creación Anteriormente, creamos
la función new exit, que estamos encontrando una
nueva salida si es posible cuando el generador de laberinto solicitó en el algoritmo Pack
track. También demostramos
nuestro laberinto en juego. Y nos damos cuenta de un problema
con las flechas direccionales. Así que vamos a arreglar esto. Vamos al generador de mayo. Voy a detener la emulación, y voy a crear
un nuevo evento átomo Y voy a nombrar este
evento decorando, por ejemplo. Bueno, las flechas no son decoración, pero esta sería
básicamente nuestra fase dos. Ahora, vamos a
necesitar una función para arreglar todas las
conexiones que no se conectan que tenga algún sentido. Sí, en realidad vamos a
nombrarlo así. Fijar no unos. Voy a poner
entre paréntesis, s, visibilidad. Bien, entonces lo que
vamos a hacer para lograr esto es que vamos a
llevarnos todo el calabozo. Vamos a
coger todas las llaves. Y a partir de ahora los procesos, seremos un poco
más lentos que uno corriendo de esto. Porque a partir de ahora,
vamos a ir,
vamos a estar mirando por todo
el calabozo y
agregando algunas reglas Esta no sería la forma más
óptima de hacerlo, y los planos no serían la forma
más óptima de hacerlo Excedente plus sería mucho más eficiente para crear
cosas como esta. Pero en aras de
mantener las reglas separadas, podemos mirar hacia nosotros
miramos a través de la mazmorra muchas veces y hacemos acciones específicas Ahora, hay otro problema con tener demasiadas
acciones en un bucle. Se trata de cómo para bucle para
cada bucle o para recuentos de bucles. Hay un límite máximo que irreal detecta si
se trata de un bucle sin fin Si esto va por mucho tiempo, irreal podría estar diciendo que
este es un bucle interminable Entonces en realidad no
cuenta los índices. Cuenta también, cuenta
el índice por supuesto, pero en su mayoría cuenta cuántas acciones están
sucediendo dentro del bucle. También hay en la
configuración del proyecto si vamos y encontramos bucle infinito. Número máximo de iteraciones de bucle. Como puedes ver, se trata de
iteraciones lo que importa. Ahora, podría haber
cambiado un poco, pero si te encuentras con un
problema de bucles infinitos, aumenta esto a
un número mayor. Sí, creo que este
es un número máximo. En fin, eso es algo de información
extra. No creo que
necesitemos cambiar esto. Creo que el número estuvo
bien, pero dejémoslo aquí. Si te encuentras con este problema, también
hay otra forma en planos de engañar al sistema, poniendo algo de retraso
antes de algunas acciones Pero de todos modos, continuemos. Así que vamos a pasar por
todas nuestras coordenadas de mazmorras. Y a partir de las coordenadas de esta
mazmorra, vamos a verificar si hay
vecinos válidos, básicamente, para adyacentes válidos, ¿pertenecen a una
mazmorra, la siguiente Y si lo hacen los vecinos, entonces vamos a ayudar
a nuestro bloque, habilitar la dirección de la flecha
hacia ese lado. Acción simple, pero
hay una cosa. No deberíamos estar haciendo esto
realmente en el primer azulejo. Pero, ¿por qué no? Hagámoslo en la primera baldosa. También. Entonces, lo que voy a
hacer es obtener del elemento L. Si no quería que esto pasara
en la primera baldosa, lo siento. Yo no quería que pasara
en el primer azulejo, simplemente
igualaría esto a cero. Entonces si este es el primer índice, No hagas nada. Esto es básicamente lo
que queríamos mostrar. Entonces, si es el primer
índice, no hagas nada. Y podemos tener algunas
reglas extra si es el índice 24, por ejemplo, no hagas eso. Pero hay otras formas de
habilitar reglas como
esta más eficientes. Ahora, si comprobamos nuestras funciones, solo
tenemos et vacío adyacente. Lo que necesitamos es lo
contrario de esto. Entonces, vamos a crear
otra función. Vamos a llamarlo obtener F. D un adyacente. No. Piensa que estamos llamando a esta
función desde nuestras ordenadas. Se necesita una coordenada porque necesitamos encontrar
lo que hay por aquí. Vamos a ir a insumos. Vamos a seleccionar un
punto in como tipo de variable. Voy a nombrar estos puntos. No, ¿qué hacemos con
estas coordenadas? Bueno, encontramos la
cruz colindante. Tenemos este hallazgo socent. Entonces obtenemos nuestra lista de rossócentes. Y luego iteramos a través esta lista con un para cada look Y vamos a comprobar
si esto está contenido. En realidad, necesitamos
la mazmorra aquí,
la variable mazmorra, mapa de mazmorra Y si podemos comprobar si esto
contiene este punto final. Si todos los vecinos o
algunos de los vecinos están siendo contenidos, en esta lista. Significa que son
parte del calabozo. Si no lo son, entonces
son un lugar vacío. Entonces, necesitamos un mapa
para generar esto. Necesitamos almacenar cada
variable en un mapa porque necesitamos la ordenanza, y también necesitamos la
dirección que conocemos aquí, es noreste Sur
Norte Sureste Oeste. Por lo que nuestro rayo Índice corresponde al Noreste
Norte Sureste Oeste. Ahora, voy a crear
una variable local. Vamos a
llamarlo Das válido. Mundo en serio.
Sí, está bien. Va a ser del tipo E. Y va a ser un mapa, y la segunda clave estaría en. Vamos a traer esto
aquí y seleccionar Agregar. Vamos a hacerlo nuestro para obtener el nodo select porque
si lo consigo elegir aquí, no habilita las opciones. Aquí no me permite
habilitar para habilitar
las opciones aquí. Entonces voy a
traer la última salida. Voy a hacer nuestro en realidad desde el índice y AR
voy a los elegidos. Voy a conectar
la última salida aquí. El habilita las opciones. Voy a conectar esto aquí, y luego voy
a desconectar esto. Solo agrega opciones. Voy a conectar
el elemento RA e ir al norte sur oeste. Ahora nuestra lista se está
llenando correctamente. Cuando terminemos, necesitamos un nodo de salida para dar nuestros resultados y
hacer esto realmente. Así que vamos a crear una salida del mismo
tipo que válida adyacente. En realidad, creo que
sólo puedo hacer esto. Salida. Si arrastre y suelte
algo aquí, aunque arrastre y suelte aros Si arrastro y suelto este, crearía un nodo válido para mí. Esto, no lo necesito. Una salida Un pin de salida para mí. Conecta esto aquí.
Compilar y guardar. Y volvamos a nuestra solución no hay
conexiones de conexión son visibilidad. Voy a traer
esta función por aquí, se llena adyacente. Voy a conectar esto aquí. Y a partir de aquí,
voy a conseguir las llaves. Tengo una matriz con
noreste sur y oeste que puedo para bucle. Y luego voy a
conseguir mi trapeador de mazmorras. Voy a encontrar el elemento array
actual. De este actor,
voy a sacar Acciones. Y agrega el elemento
correspondiente, conecta esto aquí
y configúralo a true. Al final de esto,
tan solo alternamos flechas, lo
que podemos hacer al
final o podemos hacerlo aquí. Realmente no importa.
Es lo mismo. Pero lo que debemos hacer es
alternar flechas. Como mensaje. Porque, como decíamos, esta
podría ser una baldosa diferente. Podría ser para nosotros. Ahora tenemos un azulejo BP. Podría ser cualquier actor. Si elegimos tener
la variable como actor, no la haremos ahora
porque estropeará el laberinto y
será t como mensaje. Entonces ahora, vamos a explicar
lo que hicimos aquí a los que no lo entendieron es
que como estamos consiguiendo
su fied adyacente, y estamos
pasando por las direcciones, estamos encontrando esa
dirección así que esté en. Entonces estamos obteniendo las
indicaciones que deberían estar
encendidas para el mosaico actual
que estamos comprobando, y los estamos habilitando. Les estamos diciendo
en compilar y guardar, y veamos si funcionó. En realidad, aún no lo hemos
llamado, o no va a funcionar. Vayamos a la primera construcción
y llamemos a nuestras decoraciones, función de
decoración,
evento, no función, y todas nuestras conexiones ik no
conectadas. Ahora, si juego, tan lejos. Podemos ver que
creó estas cruces. Bueno, tenemos algunos callejones sin salida que se suponía
que no fueran callejones sin salida, pero arreglaremos esto donde se suponía
que
eran callejones sin salida. Eso es lo que se referían.
Como, por ejemplo, aquí, porque cuando estamos
tratando de colocar algo, estamos habilitando la flecha. Esta es la razón por la que esto sucede. Ha ocurrido en todas partes mot. Así que sí. Pero el primer problema está arreglado. El primer problema es que
las cosas que se están conectando a algo siempre
deben tener una flecha. Ahora, antes de continuar
y arreglar esta parte que las flechas están apuntando
hacia ninguna parte cuando estaba comprobando si
podía jugar algo. Vamos a crear la barra de carga. Vamos a progresarlo y
ver cómo se ve. Entonces vamos a ir a cargar. Vamos a elegir a los Cvas
y volverlos a visitarlo. Compile y guarde, y
vayamos a nuestro generador de laberinto
y agreguemos nuestra carga. Tenemos nuestro porcentaje establecido y nuestra función de carga de culk,
función Vamos a copiar y
pegar este código aquí. Vamos a venir aquí, y vamos a colocarlo aquí mismo. Ahora, solo colocarlo
no hace nada si
no lo estamos conectando. Entonces vamos a conectarlo. Esto se puede acercar un
poco y en realidad vamos a comentar algunas
cosas todo este pas. En campo, deletreaba el laberinto. Nosotros por archivos. Pilas. Enorme comentario. No tiene ningún
sentido. Puedes poner el
comentario que quieras. Esta es la forma en que me ayuda. Los comentarios son personales. Esto es lo que yo lo
entendería mejor. Vamos a continuar. Pongamos a empezar a jugar. Eso es suficiente. Compilemos
y guardemos, y juguemos. Y podemos ver nuestra
carga pero siendo
llenados en dos 40% cuando se hacen las
baldosas. Vamos a parar.
Volvamos a cargar. Vamos a poner esta guarida
invisible en realidad, compilemos y guardemos, y
sigamos arreglando
nuestros callejones sin salida. Entonces, lo que necesitamos va a
ser una función que la
llamaremos vientos callejones sin salida, tal vez. Arreglar salidas falsas. Sí, arregla salidas falsas. Así que vamos a crear una función. Llamémoslo arreglar salidas falsas. Y entrémoslo. A, vamos a
necesitar Primero que todo, vamos a explicar lo que
vamos a hacer. De hecho vamos a hacer
lo mismo que hicimos aquí. Así que vamos. Todo
esto. Como aquí. Pero en lugar de cordones, usaremos el mapa de mazmorras Y vamos a
conseguir las llaves. Llaves. Vamos a conectarlo
aquí, así que vamos a iterar a todo el mapa Copié el Sí, copié la función equivocada. Suprimir esto, eliminar esto. Copié get field adyacente, pero queríamos las conexiones fijas que no
conectaban. Entonces voy a copiar esto, voy a ir a arreglar las salidas de fas. Vamos a iterar a través todo
el estiércol y en lugar
de obtener campo adyacente, simplemente
nos vamos a quedar vacíos Y aquí aún no
tenemos coordenadas. Entonces lo que realmente hacemos es que vamos a cambiar esto
conectado aquí, y vamos a
hacer clic derecho y encontrar referencias, lo que nos llevará
a donde lo usamos. Que está aquí en
la sección de construcción, y vamos a conectar a los
cordones los cables actuales, porque esto es lo que aquí
necesitábamos, pero cuando lo usamos, en salidas f fijas, lo
necesitamos así. Vamos a
conectar esto aquí. Ahora, tenemos las
claves del
adyacente vacío y en vez de t, vamos a ponerla en false. Si compilo juego, no
funcionó. Y la razón es porque
nosotros no lo conecté. Así que volvamos a
May Gen. Vayamos a
VNGraf para decorar
y obtener esta VNGraf para decorar
y Arreglar salidas falsas. Compilar y guardar, y vamos a p. Es tipo de trabajo en algunos en uno, o puedo ver dos, puede ser más, pero no en todos. Pero este es un tema que
resolveremos en el siguiente. Te voy a
ver entonces. Adiós.
22. Corrección de errores y planos de decoración: O Hola, y bienvenidos de nuevo al Taller de
Diseño de Juegos y re motor cinco procesales Dungeon accional Ps curso de creación Anteriormente, en la última lección, creamos la función de visibilidad de
flecha de conexiones fijas no
conectadas que toma las teclas de
todas las mazmorras, como todas nuestras coordenadas Una vez que el campo adyacente obtiene las claves del campo adyacente y en función de la dirección, estamos habilitando la
visibilidad de las flechas. Ahora, también creamos la función get filled adjacent
pure, que usamos, que
obtenemos los adyacentes, verificamos cuáles de ellos
pertenecen a la mazmorra, y así es como se está creando nuestra
lista Y ahora nosotros lo último que intentamos hacer es
arreglar las salidas pálidas. Entonces, como que
descubro w por qué no funcionó. Si vamos a vaciarnos adyacentes, sólo obtiene los que
están en los límites
de la mazmorra Entonces los que están
fuera de la mazmorra, realmente no los consigue. Entonces no podemos verificar si hay callejones sin salida si están en el
borde con esta función. Lo que vamos a hacer es
que hay muchas soluciones. Podríamos crear un buling aquí para tomar esto en jaque y
tal vez no tomarlo en jaque Podríamos crear una nueva función que simplemente no
tenga esta comprobación, pero me gusta usar
lo que ya tenemos. En fix falls salidas, no
vamos a conseguir el vacío adyacente. De hecho volveremos a obtener el
campo adyacente. Y desde el campo adyacente, lo que vamos a hacer es básicamente muy
diferente a lo que hicimos. Así que en realidad no
necesitamos eliminar mucho. Pero lo que necesitamos es el actor
de las coordenadas actuales. Entonces vamos a conseguir al actor de las coordenadas actuales, y vamos a
obtener sus direcciones. Básicamente, en el
azulejo en el que estamos, obtener las indicaciones, y de las direcciones, obtener las llaves. Ahora bien, no necesitamos esto aquí, pero sí necesitamos esto aquí. Desde las llaves, vamos a estar comprobando es una dirección
que contiene aquí. ¿La dirección que estamos
comprobando tiene un adyacente válido. Si lo hace, todo está bien. Si no es así, entonces
apagamos el apagado. Pero esto podría ir falso. Esto podría ir aquí.
Conecta esto aquí. Esto es un poco desordenado. Déjenme esperar. ¿Cómo podemos hacer que
esto se vea mejor? Podríamos estar promoviendo algunas
cosas en variables. Sólo voy a
desenredarla un poco. Es un poco
más claro de lo que vemos. De cada baldosa, estamos
obteniendo las indicaciones. Estamos consiguiendo al actor
de sus coordenadas. Estamos encontrando en
el mapa de peligro. Estamos obteniendo las
indicaciones de ese actor, y desde todas las direcciones, estamos comprobando si cada
dirección tiene un adyacente válido. Esto es un poco
más pesado, pero está bien. Vamos a compilar y guardar ID
conectar las flechas togal, así que necesitamos conectar esto El actor que estamos comprobando. El actor checando está en flechas, guardar
cumplimiento, y vamos a
comprobar que esta vez funcione. Parece estar funcionando. Ahora, para un chequeo puro, preciso, porque el problema
eran los bordes del laberinto. Pongamos 202 mil 2000
e cien, lo que sea. Enorme número, por
lo que crea una caja. Entonces revisamos solo los bordes. Tienen flechas, y
ahora se han ido. Y ahora tenemos una dirección más clara con las flechas que donde podemos caminar
y donde no podemos. Entonces creo que es momento de comenzar
a hacer que esto parezca más una
mazmorra con muros, con apoyos, con
objetivos y Entonces voy a cerrar esto. Vamos a
devolver esto a 20. Si se ve bien,
creo que se ve bien. Podemos tener algunas habitaciones, podemos tener punto de pata, y
punto final Entonces, ¿cómo vamos a hacer esto? Hay muchas formas de otras baldosas,
hay formas de desovar habitaciones dentro de Vamos a
demostrar algunas formas. Por ahora, lo que vamos a hacer es que vamos a
ir a nuestro azulejo P. Cierra estas flechas. Y voy a añadir aquí a un niño actor. U Es actor, que básicamente significa que podemos agregar otro plano
dentro de este plano Para nuestros propósitos, se
va a utilizar para tener un plano que tenga
todas las decoraciones en una sola y habilitamos y
deshabilitamos algunas de ellas. En algún momento,
hablé de referencias, referencias
duras y referencias
suaves. Una breve explicación
sería que es para administrar dependencias
y uso de memoria Una referencia dura es apuntar
directamente
al activo u objeto, asegurando que siempre se esté
cargando en la memoria. Ocupará
ese espacio de memoria, por ejemplo,
vayamos a nuestro nivel. Vayamos al Mapa de Sis. Podemos ver las dependencias que siempre requiere para funcionar Requiere no
he agregado mucho, pero podemos requiere que la arcilla de ladrillo esté
siempre en la memoria, requiere
que la vegetación, el motor de
script esté en memoria basado en los
activos que hemos usado, haciendo referencia en nuestros mosaicos Básicamente. Aquí el piso, las paredes, todo lo que es
referenciado por el laberinto y mantenido en una variable. Si voy aquí, por ejemplo, y hago de esto una
referencia suave al modo de juego. Significa que si ejecuto este generador de laberinto en otro mapa que no
tiene este modo de juego. Por supuesto, va a producir algunos errores en los lugares
que lo he usado, pero no
lo cargará a la memoria. Entonces cada dependencia
del modo
de juego no se cargará en la memoria porque no estoy
llamando al modo de juego. Si tuviera dentro de DOA
elenco al modo juego, que
en realidad tenemos al principio, eso lo negaría porque el
casting lo obligaría
a cargarse en la memoria Obligará al plano a cargar el modo de juego de arriba hacia abajo en la memoria porque
lo estoy lanzando y lo está sosteniendo Aunque si no
tuviera este elenco y esta era una referencia suave, no
lo cargaría. Entonces, básicamente, las referencias blandas contienen una referencia al activo u objeto sin
cargarlo inmediatamente en la memoria
hasta que se llama. Hay mucha optimización
de hacerlo. No vamos a estar haciendo eso.
Es como dicen, cuando tengas un problema,
revisa el perfilador. Esa es siempre la
regla, construirla y luego verificar los problemas. Para nosotros, no creo que
tengamos ningún problema. Ahora, vamos a
necesitar a este niño actor. Y estará sosteniendo
todas las referencias de
todos los artículos que
necesitamos para mantenerlos en un solo lugar y mostrar
cómo los utilizamos. Una mejor manera sería
solo poseer, por ejemplo, cualquier utilería por encima del que
mostraremos también en algunos otros algunos activos
especiales Ahora, vamos a crear este actor infantil.
Vamos a ir al contenido. Vamos a ir a planos, vamos a
hacer clic derecho y seleccionar una clase de blueprint
y seleccionar actor Y vamos a nombrar a
este BP Decoraciones. Vamos a llamarlo decoraciones BP. Yo presento, voy
a guardar todo, y vamos a abrirlo. Ahora, la voy a traer
aquí al lado de la baldosa. Voy a cerrar
esto porque ya que
tenemos una decoración directa
será hijo de azulejo. Tenemos un acceso directo el uno
del otro. Ahora voy a ir
al azulejo BP y seleccionar las decoraciones, decoraciones BP. Vamos a agregar algunas paredes. En primer lugar, voy a agregar algunas mallas estáticas,
todas ellas en realidad. Les voy a nombrar
muro digamos
muro n norte es muro para Sur, luego todo para comer y muro. W para Occidente. Y lo que voy a hacer
es ir al guión de
construcción y traer aquí
cada una de estas variables. Mientras mantengo
el control, estoy consiguiendo getters. Sólo un recordatorio. Y voy a hacer ray. Almacénelos como información
en una matriz para su uso posterior. Voy a promover
esta variable, voy a llamarla muros. Y voy a conectar esto con
el guión de construcción. Compilar. Ahora vamos a poner algunos
mensajes estáticos a las paredes. Voy a seleccionarlos a todos. Y voy a ir a nuestra lista. Voy a controlar y
acercarme un poco, esperar a que desaparezcan. Bien. Nosotros esto es todo. Combinado 67a9 67. Yo creo. Sí, esto lo
parece. Vamos a colocarlos espaciándolos. Oh, podemos espaciarlos. Los podemos ver aquí. Si tienes dos pantallas, esto podría ser un
poco más fácil para ti. Pero voy a tener
esto así . Voy a tener esto. Esto y los voy
a estar moviendo los pupilos
del lado correcto. Digamos que este es
el lado correcto. Voy a fijar los
valores después. Realmente es el lado correcto. Este es el muro norte, por lo que sería como 90 grados en algún lugar de aquí. Eso es suficiente de colocación visual. Voy a
volver a poner esto aquí atrás
aquí arriba y voy a revisar
sus coordenadas 0390 Vamos a redondear hasta 400. Estaría bien menos e -400. Cheque Sí. Está bien. Decoraciones, y
voy a rotar estas salas de este lado, creo, y la ubicación
será lo contrario de esto. Voy a copiar y
pegar la ubicación simplemente negar formas opuestas Y voy a la pared. Cien 100. Esto sería de 100
o cien -400. Toma el eje. Algo anda mal. Esto debería ser el st
opuesto de 400, 400 fue. Ahora tenemos muros. Ahora.
Oh, yo compila y juego. Ahora tenemos bordes, algunas paredes. Creo que este es un buen punto de
parada para este. En la siguiente, de co,
vamos a despejar el camino. Nos vemos
en la siguiente.
23. Colocación de paredes en función de trazados bloqueados: Hola, y bienvenidos de nuevo
al Taller de Diseño de Juegos, Curso Real Engine five Procesal creación de
Real Engine five Procesal
Dungeon Action RPC Anteriormente, agregamos
el
azulejo de decoraciones encima de nuestro
azulejo blupin como actor infantil Usamos las decoraciones de clase BP
para este actor infantil, y creamos
primero las decoraciones BP. Agregamos algunos muros, y los agregamos a una matriz
en el script de Construcción. Ahora, también depuramos,
para ser honestos, la gran
función de salida falsa que elegimos para usar otro sistema al que
describí al principio, que es justo esta vez obteniendo las direcciones del mosaico
del mosaico actual que
estamos comprobando, obteniendo de las
direcciones si hay un adyacente válido
hacia esa dirección, y establecemos la ser falso estar apagado en
la visual de las flechas, y nosotros las flechas dobles. Ahora, Y para ser honestos, en realidad
podemos
mover estas dos f, estas dos funciones por
aquí antes de decorar. Y vamos a avanzar también en la barra de
carga. Nuestro gusto. Digamos que este
es otro 5%, así que iremos al punto cero. La vida. Y luego
vamos a decorar. Como puedes ver, a partir de ahora, solo
vamos a estimar qué es una acción y cuánto porcentaje de
la carga se necesita. Depende de nosotros.
Depende de nuestras pruebas. Como dije, hay formas
más complicadas de hacerlo y
tenerlo como porcentaje, pero necesitaría muchos cálculos y mucho más código. Ahora, volvamos a
arreglar nuestras decoraciones, nuestras paredes, para tener un
diseño básico para nuestro laberinto. Para ello, iremos
a nuestro generador de laberinto B. Vamos a ir a Even graph, iremos a decoraciones
ahora que está vacía, y vamos a crear
otra función. Llamemos a esto diseño básico. Llamemos a esta función aquí. Vamos a entrar en esta función. Y lo que vamos a hacer
es bastante sencillo. Llamaremos a cada actor para que llame a cada propio niño
ductor para hacer algo, y eso sería
ocultar las paredes en base a ocultar las paredes en base las direcciones que
tenemos por aquí. Entonces voy a cambiar el nombre de este conducto
hijo por los cors. Y también, lo que voy
a hacer es, como dije, ahora que sabemos
que este actor va a ser
hijo de este actor, podemos tener una
referencia directa a él, es
decir, que al empezar a jugar, voy a llamar tenedor. Sí. Actor. Y luego voy a echar a azulejo BP. Ahora bien, esto crea una dependencia. Ahora bien, esta decoración necesita
tener el azulejo BP
como actor padre. Si no lo hace, entonces no
va a funcionar. Esto es lo que básicamente
son las dependencias. Oh, voy a promover
esto a una variable. Sabemos que es como no fallar elenco. Siempre va a tener éxito. Y en realidad, lo que
voy a hacer también es crear una dependencia en el azulejo BP
del generador de laberinto. Y voy a llamar azul a
este generador, y voy a ser
del tipo generador. Oh, como lo llamamos maze gen Mazen BP maze
gen object reference Ahora bien, por qué esto
realmente no importa. Ya que vamos a estar generando un azulejo y va a ser
generado a través del generador de
laberinto,
entonces en la memoria, el casting aquí no crea mucho hussle Hace cast, que es
una carga pesada
porque está pidiendo la
referencia de clase en la clase, pero ya se
cargará en la memoria. Porque el azulejo está desove antes de que
se generen las decoraciones Ahora, vamos a crear
ese generador, hagamos que en realidad sea instancia editi y expongamos en spawn Así que no tenemos que
lanzar ni nada. Podemos simplemente ir a
nuestro generador de laberinto, vamos a nuestro gráfico de eventos, y vamos a nuestro
azulejo de desove, que está aquí Vamos a restablecer esto
porque no se actualiza. ¿No compilé? Sí, no compilé. Y
en realidad voy a, hay una B. Ahora bien, cuando abrí
esto, expuso a un dueño. Podría usar esto como yo y
luego aquí en el dueño de BP. Dueño, entonces podría
echarle esto al generador y
hacerlo así. Pero prefiero la forma
de exponer sobre el engendro. B a nuestro voy a
borrarlo en auto. Y como puedes ver ahora
, decidió actualizar. Entonces me voy a hacer
auto en el generador. Y ahora tenemos una
referencia directa cuando se trata de patas. Sólo hay una baldosa
que no tiene, que sería una primera baldosa de
cuchara. Entonces esto necesita ser
actualizado también con cell pon first tile, y luego en nuestro bucle construido. Necesitamos actualizar
también hijo actor P tile para tener el generador como auto. Ahora, volvamos
a nuestras decoraciones, compilemos y guardemos, y
creemos otra función, y llamemos a esta función. Digamos esconder muros. Sin esta parte extra. Bien. Ahora, vamos
a conseguir nuestro azulejo BP, y vamos a
obtener indicaciones, y vamos a obtener
las claves de las claves, vamos a
bucle for para cada bucle. Entonces vamos a hacer
la pregunta sencilla. Vamos a encontrar el
valor de P. Y pregunta, ¿
eres visible o no? Ahora, el problema viene cuando
tenemos nuestras paredes arregladas, y vamos a
pasar por todas ellas. Y ¿cómo sabemos
qué muro es cuál? Bien, tenemos el nombre, los
tenemos en un orden. Pero, ¿y si
los coloqué en el orden equivocado? W Siempre tengo que verificar
el orden de cada array, y si corresponden, No. Hay otra manera
realmente fácil. Podemos ir a cada
pared y poner un remolcador, algo que se llama remolcador Entonces voy a buscar
algunos detalles para remolcador y presionar el elemento Por ejemplo, voy a poner
para el muro n, el N remolcador. Y para la pared S.
voy a poner el tirón S para la pared E. voy a poner el
ug y para el muro W, voy a poner el remolcador W. ¿Por qué elegí estos nombres? Porque corresponden
a nuestra matriz de cadenas, básicamente a nuestra lo siento, no a la matriz de cadenas a
nuestra matriz de enumeración Oh, voy a
comprobar si esta
es lo que voy
a hacer es convertir esta enumeración
en cadena básicamente Hay una cadena, y esto nos da el nombre
de enumerador a un valor de cadena Y lo que puedo hacer, hay un nodo que se
llama componente en. Voy a conectar esto aquí. Lo convertirá automáticamente a nombre. Y seleccionar si el componente tiene el tirón correcto
que estamos comprobando, luego establece su visibilidad. En realidad ops en ganancia,
no la visibilidad. Porque si hacemos la visibilidad, entonces es un poco menos óptima. Pero lo que tenemos que nuevo
oculto sería cierto. Lo que tenemos que hacer también es
fijar su colisión también. A ninguna colisión. Porque entonces si no lo
hiciéramos, tendríamos
muros invisibles bloqueándonos. ¿Qué son las etiquetas? Básicamente, se trata de un sistema
para identificar objetos para crear identificador para objetos que es menos pesado, por ejemplo, luego constantemente lanzando
dos, obteniendo todos los actores, y comparados con conseguir actores con remolcador o si verificar
algo específico tiene una etiqueta Se puede agregar a los componentes. Se puede agregar a los actores
también los valores por defecto de clase. Se puede ver que hay una etiqueta que cuenta para la etiqueta de actor. Entonces la pregunta no sería
componente tiene etiqueta sería actor tiene etiqueta
comparado con lo que estamos comprobando
ahora mismo para componentes. Entonces, una pequeña explicación
de lo que hicimos de nuevo, estamos obteniendo cada lista de dirección de
mosaico que tiene tanto información
si están dentro o fuera,
estamos iterando
a través de la lista Entonces estamos iterando a través de cada muro para cada
iteración de la lista Este bucle dentro de
un bucle se llama bucle anidado, básicamente Así que para cada componente de este bucle
recorre algo más, y estamos comprobando
si el componente de la pared tiene la etiqueta de la enumeración que
hemos convertido en una cadena Cierto. Correcto aquí. Si tiene la etiqueta, existe. Y si el valor es verdadero, porque si el valor es verdadero, significa que no hay muro, significa que nuestra
flecha es visible. Significa que nuestra flecha es visible, estamos apagando la pared. Ahora bien, si vamos a jugar, antes que nada,
conectemos esta función. En realidad nos hemos conectado, ¿no? Sí, tenemos. Bien.
Esto está vacío. No hemos pasado por
todas nuestras mazmorras, así que mazmorra, Esta vez
vamos a conseguir los valores, no las llaves Entonces vamos a
iterar a través de cada actor, no por las coordenadas Vamos a hacer bucle. Entonces a partir de cuatro bucles,
vamos a obtener operaciones, que serán las últimas. Entonces a partir de aquí,
nos vamos a esconder. Ahora, tenemos que lanzar. Ahora ves ahora
tenemos que echar a, ¿cómo llamamos las
decoraciones? PP. Ya pueden ver, ahora no puedo
lanzar dos decoraciones BP. No lo encuentro porque
decoraciones es un actor infantil. Devuelve un componente
actor hijo. Entonces tenemos que conseguir
Actor actor niño actor. Por lo que este es un componente y es un componente
de actor infantil, que ha lanzado dos decoraciones
BP. Como esta es la celda, y esto es lo que hay en la celda. Voy a convertirme a
un elenco puro, éste, y voy a esconder murciélagos. Básicamente, eso es todo. Entonces parece una función
simple. Es pesado porque
tiene toda esta información, necesita del actor, que necesita un niño, que el niño que necesitamos lanzar
para conseguir la decoración, y dentro de aquí, también estamos
haciendo muchas más cosas. Entonces algo que se ve aquí y óptimo podría
no estar al final. Compila y guarda,
y juguemos. Y ahora tenemos una zona agradable. Creo que esto es para éste. Te voy a ver a continuación. Adiós.
24. Patrones de corredor predeterminados: Hola, y bienvenidos de nuevo
al taller de diseño de juegos, Real Engine five,
Procesal Dangon action BZ creation Calls En la última lección,
agregamos algunas referencias
del generador a la baldosa y la baldosa
al actor hijo, que son las decoraciones BP, y creamos la función
hide wall, que toma esencialmente
la baldosa BP. Obtiene las direcciones de él, y de la dirección que
pasa por las llaves, encuentra qué llaves son visibles y oculta las paredes en consecuencia. Y también cierra la colisión. Ahora, cuando creamos
el laberinto así, lo que podemos notar instantáneamente, es que es un
poco plano. No tiene algunas formas de girar
a la derecha y a la izquierda. Es un área abierta,
que por supuesto, podríamos decorar con
algunas habitaciones y algunos accesorios, y quedaría bien Pero vamos a crear un poco de complejidad de dónde puede ir el
jugador y no. Para ello, vamos
a actualizar un poco nuestra función existente
de dejar de jugar. De conexión fija no
conectora. Ahora mismo, lo que
estamos haciendo es que estamos consiguiendo cada cuadra y diciendo, tú bloqueas, ¿estás atado
a cualquier otro bloque? Y si la respuesta es, sí, entonces establecemos esa visibilidad esa flecha a visible
hacia el otro bloque. ¿Y si pudiéramos preguntar si
hay otro bloque, y señalo hacia
su dirección, crearía una flecha? Por ejemplo, vamos a pintar. R: Cuando nuestros bloques hacen
esto de aquí con flechas, que están
buscando la habitación contigua, están creando lo contrario, están
buscando la habitación contigua, están creando lo contrario, están
buscando la habitación contigua. Y nuevamente,
crean lo contrario, pero ahora nos quedamos con esto. Pero si modificamos
el código en lugar de cuando tienes un bloque, entonces este bloque solo
abre esta flecha. Entonces conectamos todas
las flechas que son los Laberintos tratando de averiguar
si hay otro bloque Por ejemplo, si
había un bloque aquí, y luego continuó así y nunca trató de
ir por este camino, como digamos que
vino de aquí, entonces tenemos otro bloque aquí. Y luego trató de
ir por este camino. No trató de ir por aquí,
así que aquí no hay flecha. Entonces básicamente, mantenemos nuestro gusano serpiente como
patrones de la ma. Entonces para hacer esto, en realidad solo necesitamos
agregar algunas cosas aquí. Que es cuando estamos iterando a través de los adyacentes
disponibles, lo que haremos es apuntar esa dirección
en nuestro bloque original O bloque que estamos probando
desde el Dungeon Mac. Mapa. Entonces lo que tenemos que hacer es encontrar ese bloque
de los bloques válidos. Voy a enrollar
esta base de valor, el valor que estoy comprobando. A partir de eso, voy a usar la mazmorra para encontrar
al actor apropiado Ahora, voy a obtener direcciones
opuestas porque
queremos que aparezca la
flecha opuesta. Y voy a enrollar
de nuevo de los otros elementos. Esa dirección opuesta. Voy a conectarme aquí. En realidad, en lugar de
tenerlo siempre cierto, solo
voy a tenerlo igual que el bloque de direcciones. Ahora bien, aclaremos en las líneas aquí porque
hay demasiadas. Haz este original, vamos a conectarnos aquí. Tal vez tenga más bajo aquí también. Para aquí, solo necesitamos
uno, no necesitamos dos Tal vez podamos
variable local, todo esto. Adyacente. Ahora bien, esto no es realmente necesario en
las cosas un poquito Aquí. Aquí. Aquí. Ya no
necesito línea. Puedo romper. Aquí. Ahora, es un poco mejor. Podría ser mucho
mejor si promovemos esta tan variable y
conectamos con todo. Pero creo que es legible. Uno, acércate un poco más. Creo que es mucho más legible
posible como puede ser ahora mismo. Entonces, veamos si esto funcionó. Compilar. Vamos primero. Ahora podemos ver que tenemos algunos
lugares que están bloqueados. Pero la mayoría de los lugares lo son. Tenemos corredores, realmente
tenemos, debe
haber algún
error porque esto debería estar disponible para el acceso Dame un segundo para comprobarlo. Sí, theta es, no estoy alternando las flechas
en lo correcto Voy a cambiar las flechas en
el primer bloque de comprobación. No voy a cambiar las flechas
en el segundo bloque de comprobación. Entonces si conecta esto
aquí en realidad. Podría ser arreglado.
Tendrás algunas guaridas. Esa razón es acción que estoy comprobando. Oh, sí, estoy sumando a la misma
dirección que estoy comprobando. Entonces voy a obtener las
indicaciones de aquí. Queremos que la dirección se agregue a las direcciones
del bloque opuesto. No el que estamos comprobando
actualmente, sino el que está
respondiendo a ese cheque. Por lo que este
complemento tienen las direcciones del
campo adyacente actor. También compilar y V, funciona. Lo único que no
funciona es el primer azulejo. Estar en el primer azulejo, no
estamos alterando flechas Así que vamos a hacer eso. Vamos a ir a nuestra
función en primer azulejo. Y vamos a
arrastrarlo aección. Y vamos a conseguir las llaves. Y cada uno. En realidad, podemos no necesitamos
pasar por todos ellos. Necesitamos un bucle for. Podemos simplemente agregar éste como compilar y volver a guardar. Y ahora es mucho más
viable. Vamos a comprobarlo de nuevo. Sí, tenemos un bonito laberinto
y podemos ver que
hay algunas paredes que
crean una ruta. Ahora. La siguiente parte lógica
sería cuando tenemos nuestro laberinto, tenemos algunos hodors, algunos caminos que son en
su mayoría se pueden bloquear, algunas partes que no están cerradas, lo siguiente sería agregar algunas reglas a las ocho habitaciones Aunque, ya que
queremos que cierta habitación sea una salida y algunas
ciertas habitaciones sean, por
ejemplo, un cofre
que sostiene la llave de salida. Eso sería más sabio
poner primero en el laberinto. Ser, por ejemplo, si
creo una habitación aquí, entonces limita mucho
donde pueda poner las llaves. Ese es yo dije que
las llaves en esta caja, entonces de pronto, la habitación dividirá automáticamente estas
áreas un poco mejor. Entonces, si me he extendido
alrededor de bloques que no son viables para las habitaciones, debería estar versado en lógica Creando todas las habitaciones.
No obstante, lo son. Sea que les haga ser
capaces de espaciar más afuera. Al tener un mapa que
tienes lugares con xs
no colocan aquí, limita mucho donde se pueden construir
habitaciones. Entonces esta es la forma en que lo
vamos a hacer. Y creo que este es un buen punto de
parada por ahora. Lo que vamos a hacer en
la siguiente es crear el plano del elevador
y el plano del cofre, y luego encontrar
una manera de engendrarlos Eso es todo por ahora. Adiós.
Te canta en la siguiente.
25. Construcción de habitaciones y plano de ascensor: Hola, y bienvenidos a
Game Design Workshop y Real Engine five
Procesal Dungeon action RPG curso de creación Anteriormente, actualizamos
nuestra función para las
conexiones Pi que no conectan en lugar de buscar alrededor de cada bloque
una ubicación de campo válida, ubicación que
pertenece al Laberinto, para estar comprobando,
si ese campo, en realidad
verificamos
las ubicaciones de campo, pero estamos comprobando ahora que
si esa ubicación de campo, nuestro bloque que estamos comprobando
tiene una flecha hacia él, deberíamos activar la
flecha opuesta a esa ubicación. Entonces básicamente,
llevemos pintura y por ejemplo, pintura Neda amarilla Entonces, por ejemplo, si nuestro bloque tuviera una flecha
hacia este lado, y digamos una flecha,
hacia este lado, y el bloque opuesto tenía una flecha hacia este
lado y este lado, Ahora, nuestro bloque que está comprobando
de aquí a este bloque. Esta es la comprobación
que se está haciendo. Dice, tengo una
flecha hacia ti. ¿Tienes una flecha hacia mí? Si no lo haces, entonces
crea una flecha. Además, si no
tiene una flecha y esta tiene una flecha, en realidad la
apaga porque la hemos configurado
Hemos agregado, no establecido porque AD es un setter para mapas si
el valor existe Entonces, si no tengo una flecha, entonces no tienes una flecha porque estamos obteniendo el hallazgo de nuestras direcciones en el bloque de cheques
original. Ahora bien, en este, dijimos que
seguiremos creando algunos bloques en todo nuestro laberinto que no podremos
tener habitaciones, como tenemos el
bloque elevador y el bloque de caja, la caja con el bloque clave. Entonces es más fácil decir en
las reglas que cuando estamos,
digamos, por ejemplo,
queremos que el elevador esté en las últimas cuadras. Entonces digamos que esta es la
última caja, pon L aquí, última caja, y queremos de segunda
a última, tercera a última. Digamos que queremos que la
caja el elevador, perdón, esté en una
de estas habitaciones. Ahora bien, si
se están creando estas salas. Si estas baldosas, no las habitaciones se
están creando en una habitación, entonces nuestro elevador no
podría estar en la habitación, y nuestro código se estrellaría. Por lo que sería más fácil para nosotros establecer lugares que en
todo el laberinto no creen una habitación porque tenemos
reglas al respecto y dejamos el resto del
laberinto para poder crear habitaciones siempre que sea posible. Ahora bien, vamos a ver estas cosas en acción con mayor claridad, creo. Oh, lo primero es lo primero. Vamos a crear los planos que usaremos
para el elevador Estantes de los planos. Así que vamos a hacer click derecho
sobre nuestra carpeta de planos. Vamos a elegir
el plano, y vamos a seleccionar Actor Entonces vamos a nombrar a
este elevador BP. Entremos al elevador
y agreguemos una malla estática. Y va a ser Ahora, esto es solo para mostrar ahora mismo, así que solo pondremos algo
lo que sea. Pongamos una mesa. Pongamos esto. Esto es grande. Queremos algo más pequeño. Sí. Esto
lo haremos bien por ahora. Esto representará a
nuestro elevador. Voy a compilar y guardar, y vamos a crear
otro plano AEP est. Gran est. Bien. Vamos a abrirlo, y vamos a una malla estática. Hizo este mes estático. Tenemos un cofre,
creo, el primero. Bien. Por ahora, compilar y guardar. Pero tenemos algunas
representaciones de ellas cuando
estamos haciendo las reglas en el
laberinto donde construirlas. Ahora, sigamos
con nuestra decoración. Creamos los azulejos básicos. Y como creamos
los mosaicos básicos, aumentemos también
nuestro bit de barra de carga. Entonces voy a
copiar y pegar este conjunto por ciento c sin que el
c cargue realmente. Pero voy a
eliminarlo después. Sea a partir de ahora, estamos fijando un valor que queremos
en la pre oración, y esta vez será
5.0 0.5 porque
estábamos desde el 0.45 con el fijo no conectando
y las salidas fs fijas Ahora, sé honesto, porque esto va a estar
pasando un poco rápido. Aquí podemos poner algunas demoras
falsas. Pongamos un retraso de 0.1. Entonces damos la ilusión de que
la computadora está pensando. Ahora, vamos a
necesitar una nueva función, y vamos a llamar a
esta función en elevador. Y luego vamos a
entrar en esta función. Ya estamos en
Y lo que necesitamos, en
primer lugar, es nuestro mapa de mazmorras
variables de mazmorras Ahora, vamos a sacar
las llaves de esto. Y para engendrar nuestro elevador, vamos a usar
el último índice Que es el último azulejo
colocado en el laberinto. Ahora, vamos a conseguir esto esta esta copia
del último índice, así que tenemos nuestra ordenanza, y vamos a promover
estas coordenadas a una
variable que vamos a llamar ubicación del elevador
en caso de que la necesitemos. Ahora, vamos a
conseguir nuestros azulejos especiales, los azulejos que no queremos que se construya
nada sobre ellos, y vamos a
agregarles
esta ubicación de elevador porque no
queremos que se construya nada más sobre las baldosas
especiales Ahora, lo siguiente que hacemos es crear un perímetro
alrededor del elevador. Entonces nada va a desovar
alrededor del elevador. Entonces queremos
agregar realmente el perímetro de esta baldosa a
las baldosas especiales. Y para ello, vamos
a necesitar una nueva función. Y esta vez va
a ser pura porque sólo va a hacer algunas operaciones matemáticas. Va a ser una especie de
copia de nuestras fichas cruzadas. Simplemente obtendrá las fichas de la
vista también. Entonces Todas las ocho direcciones
alrededor de una baldosa. Entonces vamos a
hacer esta función. Vamos a crear una función. Llamémoslo en perímetro de teja
única. Correcto. No lo he hecho. Y entremos en esta función. Ya estamos dentro. Hagámoslo ase uno
desde el principio. Y para la entrada, claro, vamos a necesitar algún punto t o hacer coordenadas
las coordenadas verifican. El nombre es dos puertos. Ahora, vayamos a nuestra cruz de
viento de viento adyacente. Entonces vamos a copiar esto. Y volvamos
a nuestra función. Vamos a pegar
esto, el abajo, y voy a
conectar los cables aquí. Ahora, tenemos la cruz. Lo que necesitamos básicamente es más, lo que sería cuestión de
organización en estos momentos. Como, por ejemplo,
los
colocaríamos el Noreste
entre el Noreste, el Suroeste entre
el Sur y el Oeste, o los mantendríamos igual que
antes y los agregaríamos a continuación. A lo mejor voy a hacer eso.
Manténgalos igual que antes, y en los nuevos a continuación. Bien. Entonces voy a necesitar o más, y voy a
necesitar el más uno de los x y el más uno de los y Entonces voy a necesitar El más uno para el x
y el menos uno el y, luego el más uno ops, tomar más uno de la y, y el menos uno de la x, y luego ambos
en el menos uno. Aquí, Ahora,
realmente no importa cuál es cuál
o qué queremos hacer. Pero podemos entenderlo. Ahora mismo no. Vamos y
continuemos con esto. Entonces tenemos el elevador de desove. Agregamos la ubicación del elevador, y ahora vamos a
usar esta nueva función f single pero no he
creado una salida. Entonces, vamos a crear una salida. Vamos a convertirlo en una matriz. Llamemos a esta baldosa
perimetral ps. Y conectemos esto aquí. Volvamos al elevador. Ahora, vamos a obtener la ubicación de
nuestro elevador. Vamos a para bucle
a estas ordenadas, que son el perímetro
de esta baldosa Y ahora
los vamos a agregar al azulejo especial. Voy a copiar y pegar este
código de aquí por aquí. Voy a conectar
esto aquí y esto aquí. El único problema con
esto sería que si una baldosa del perímetro no
estuviera en la mazmorra, se agregaría
a baldosas especiales Por lo que los mosaicos especiales
contendrían coordenadas que no
están en la mazmorra Podríamos haber usado
algunas reglas para decir que si los azulejos especiales
no están en la mazmorra, hacer algo al respecto, pero también podemos filtrar esto
aquí para no tener eso Voy a conseguir
el mapa del calabozo. Voy a traerlo aquí. Voy a preguntar si contiene las coordenadas que estamos agregando y si las contiene, voy a usar una
rama para agregarlas. Si no, no los agregue. Voy a compilar y guardar. Y por ahora para ver
si está funcionando, vamos a
engendrar el elevador Entonces, lo vamos a eliminar
después porque
vamos a estar generando todos nuestros
apoyos en cierto punto Entonces, ahora voy a engendrar
actor de clas para depurar, y vamos a
ver qué va a ser si se genera
en la última,
va a dividir esta va a dividir Va a obtener la ubicación del elevador. Y vamos a
conseguir Dungeon Mp también. Y el mapa de Dungeon, vamos a encontrar al actor
en la ubicación del elevador, el azulejo Y a partir de eso, voy
a conseguir la ubicación del actor. Voy a conectar esto aquí. Y para la clase,
voy a seleccionar. Tor. Y podemos dejarlo
así por ahora. No necesitamos eliminarlo. Y voy a
promocionar en realidad esto a ribal llamado Elevador Bien. Eso está bien. Compilar y guardar. Juguemos. Y no hay elevador porque no estoy
llamando a la función. Oh, llamemos a elevador. En nuestro gráfico de ventilación
en el corting. Empecemos y juguemos.
Tenemos nuestro elevador, y está en nuestro último azulejo. Entonces estamos partiendo de aquí, y tenemos nuestro elevador aquí que nos llevará a
la siguiente mazmorra Creo que esta es una buena
parada por ahora. En la siguiente,
vamos a spond nuestro pecho. Adiós.
26. Plano de llave de pecho: Hola, y bienvenidos a Taller de Diseño de
Juegos n motor
real cinco Procesal Dungeon Action P
Z Creation Calls Última lección, comenzamos a decorar nuestro laberinto
con nuestro elevador. Y en esta, vamos a seguir con nuestro pecho que vamos estar dejando caer la llave
para el elevador. Entonces, lo que hicimos en el elevador es que
obtuvimos el mapa de mazmorras Obtuvimos las llaves
del mapa de mazmorras, y obtuvimos el
último índice porque el elevador estará
desove en la última ranura Entonces agregamos esa última
ranura a la baldosa especial, así que nada más genera ahí, y creamos una
función para encontrar el perímetro de una sola baldosa agregando las ocho
coordenadas direccionales básicamente Entonces, después, agregamos
estas coordenadas a las fichas especiales y filtramos si
están contenidas en la
mazmorra arriba o no, y luego engendramos el
elevador para su depuración Ahora, vamos a crear una nueva función para
generar el cofre. Pero vamos a llamar a
esta función p est. En realidad no los estamos
desovar, así que tal vez el nombre no debería
ser elevador de desove Debe ser crear ds elevador, y esto debe ser
crear cordones est. Porque como dije,
vamos a eliminar el código más tarde del
elevador, éste, y vamos a estar
generando todos nuestros apoyos en otro lugar del algoritmo Volvamos a crear
los núcleos para el cofre. Ahora, vamos a conseguir de
nuevo nuestro En realidad, podemos copiar y pegar
el código de aquí. Podemos obtener el
mapa de Dungeon, las llaves, y en realidad, solo necesitamos eso Entonces voy a pegar esto aquí. Y lo que necesitamos es de
nuevo, último índice. Y vamos a
dividir este yo dos. Entonces podemos tener la mitad ¿dónde está
el medio de nuestro calabozo? También podríamos hacer
estilos mac divididos por dos, y sería lo mismo. Pero esta también es una buena manera. Por si acaso queremos
actualizar el laberinto más tarde para tener algunas fichas adicionales, por ejemplo, además
del cuerpo principal. Digamos, por ejemplo, estamos
desovar algunas zonas secretas. Estamos generando algunas cosas
extra fuera del algoritmo común
que construyó la mazmorra Oh, vamos a
conseguir la mitad de ellos. Y vamos a promover
esto a una variable local. Llamemos a este índice del tesoro. Y ahora, ¿por qué estoy promocionando
estos dos índices del tesoro? Es porque quiero
comprobar desde la mitad de las fichas y arriba si hay un lugar para desovar
nuestro cofre del tesoro Porque no queremos que
nuestro cofre del tesoro se genere en la primera baldosa, por
ejemplo, las
dos primeras, tres fichas Podría basarse en cómo se ramifica
nuestro laberinto, y esta sería una de las
omizaciones que ocurre Pero deberíamos intentar que esto
suceda un poco menos. Entonces vamos a estar comprobando la mitad
de lo anterior del laberinto. Y para ello, vamos
a estar usando un wild loop. En realidad, déjame traer
pinturas por un segundo. Entonces lo que hicimos es, si tenemos los
mosaicos totales, nuestro laberinto,
en realidad, vamos a este
nuestro mapa de mazmorras Entonces conseguimos el último índice. Este último índice, y lo
dividimos por dos. Digamos que son 20, así que
ahora hay este diez. Ahora, fijamos este diez para que sea el inicio de nuestro índice de
tesoros. Esto es diez. Vamos a hacer un bucle
Y que verifique. Si el índice del tesoro
es igual a esta mitad, porque no lo
tendremos exclusivo. Entonces queremos por encima de la
mitad del laberinto, no exactamente en el
bloque, digamos, por
ejemplo, en el en el
índice que representa. Entonces Pero debido a que
hay un caso de que esto
va a correr sin fin, ya que los loops, wi loops son un
poco esto necesita una edad Sí. Pero los wi loops son
un poco desagradables, digamos, pueden congelar tu
computadora hasta que completen su tarea
porque se están ejecutando en la forma en que los estamos
ejecutando ahora mismo, está en el hilo principal, así puede congelar completamente
tu computadora. Entonces para evitar eso, vamos a crear también
intenta variable. Y diremos try por, por ejemplo, 30 veces. En realidad, lo que vamos a hacer es
sí, algo así. Estilos Mac divididos
por dos básicamente. Si esto está por encima de este número, entonces corte el bucle y. Ahí no encontró
ninguna ubicación válida. Así que vamos a establecer acation
manualmente, que sería exactamente el
medio Así que sí. Eso es de lo que quería
hablar de wi loops, que son difíciles, y no
deberían usarse realmente en tiempo de ejecución. Pero para nosotros, este
tiempo de ejecución no es exactamente tiempo de
ejecución porque estamos
construyendo sobre la carga. Entonces no lo estamos haciendo
en tiempo de ejecución del juego, que FPS son algo
importante. Lejos. Hagamos esto. Vamos a traer el wi loop. Esta cosa peligrosa. Y vamos a tenerlo
por condición que índice de
medida sea igual al
último índice dividido por dos. Si esto es cierto, esto va a
estar ejecutando el bucle del cuerpo. Cuando este término
caiga, saldrá. También hay un tooltip que lo
explica un
poco mejor que yo. Oh. Desde ahora
no tenemos otras condiciones
para agregar a las habitaciones especiales. Esto suele
ser en la mitad más uno porque vamos a estar
incrementando esto en uno. Pero primero,
hagamos que nuestro falle sea seguro. Vamos a hacer una
nueva variable local, va a ser de entero otra vez. Vamos a nombrar este precio. Primero que nada, aumentemos esto en uno. Y hagamos una pregunta. I R tris igual al último índice
dividido por dos, porque cada vez que agrega
uno, comienza desde cero. Cuando esto es cierto, significa que esto tiene
la mitad de nuestro laberinto. Entonces, si esto es cierto, vamos a establecer el índice
del tesoro 20, y esto saldrá de nuestro bucle. Ahora, solo en K, bueno, para nosotros,
serán todos los casos. Cuando trice no es igual
al 50% del laberinto, obtendremos nuestro índice de tesoros, lo haremos más una t, y vamos a
obtener nuestro mapa de Dungeon, y vamos a encontrar
al actor y
necesitamos al actor y
necesitamos las coordenadas Entonces voy a
conseguir las llaves aquí. Voy a conseguir una copia
y conectar este más uno. Y luego voy a encontrar
a ese actor. No, voy a comprobarlo. En realidad, lo siento, no
necesito que el actor lo revise. Sólo necesito las
coordenadas para verificar. Si están contenidos
en las baldosas especiales. Si está contenido en
los azulejos especiales, voy a hacer nada. Si no está contenido en
las fichas especiales, voy a establecer nuestro índice de tesoro
variable del tesoro. Tesoro más uno. Bueno, porque estoy agregando
antes de la sucursal, no significa que esté configurando. Por eso lo hice de esta
manera para explicar esto. Cuando estoy agregando
algo y
comprobando los mosaicos especiales, básicamente, si las coordenadas Así que cuando estoy agregando a este
índice antes de la rama, no significa que
lo esté configurando. Solo estoy sumando para obtener un valor, un número, y estoy comprobando en base a ese número,
algo que quiero. Y si lo que quiero
no es cierto en este caso, entonces estoy poniendo ese número
al índice del tesoro. En fin, continuemos. Ahora bien, este bucle y ha
terminado de una forma u otra. Si ha terminado con el índice del tesoro
cero, necesitamos saber. Voy a comprobar si el índice del
tesoro es cero. Si es cierto, voy a poner el índice del tesoro a
la mitad del laberinto. Si no es cierto,
realmente no importa porque significa que esta rama ha corrido y ha encontrado un nuevo valor. Lo siguiente que voy a hacer es que voy a conseguir de nuevo las
coordenadas. Voy a llegar de aquí. Voy a agregarlo
a los mosaicos especiales. Voy a promocionar este ps. El get necesita el índice de edad. De lo contrario va a estar obteniendo
el primer índice cero, que sería el bloque de inicio. Voy a promocionar
esto a una variable también y llamar a esta ubicación. Ahora para depurar, llevemos nuestro elevador BP del actor telefónico
del elevador de ocho cables, volvamos a
crear Cordones est En lugar del elevador, voy a elegir
el est grande est. En lugar de la ubicación del
elevador, sólo
voy a poner
aquí est ubicación. Voy a eliminar esto, y voy a promover
esta tan variable. Sí. Actuar. Para compilar y
guardar, y vamos a jugar primero. Y, pero de co me olvidé volver a
llamar a esta función. Crea el cofre del núcleo después de
crear el elevador del núcleo. Ahora, b milagro,
no vuelve a funcionar. Oh, no, lo es. Aquí está. Tenemos el cofre. Está en
una esquina. No importa. Está en el número
11 desde 20 M. Y es diez más uno. Entonces el bucle Y funcionó correctamente. Como si partiéramos de cero, tenemos que ir por aquí, conseguir la llave y volver
e ir a nuestro elevador. Vamos a crear
otro. Por aquí, el elevador está aquí. Sí, ¿por dónde empezamos? Empezamos Aquí. Empezamos aquí. Esto lo podemos ver. No sabemos si las llaves aquí, podríamos pasar por
aquí, podríamos ir. Crea algunos escenarios de
juego válidos a partir de lo que puedo decir. Estamos empezando por aquí. Podemos ver instantáneamente
el elevador. Sí, escenarios válidos
por aquí. Bien. Creo que esto es para éste. Te voy a ver
en la siguiente. Adiós.
27. Algoritmo de creador de habitaciones: Hola, y bienvenidos a
Game Design Workshop, Unreal Engine five
Procesal Dungeon action RPG curso de creación Anteriormente,
creamos la función de cofre de crear coordenadas
en el generador de laberinto. Se utilizó el mapa de Dungeon. Obtuvimos el último
índice de las claves. Nos dividimos por dos,
y lo almacenamos
en una variable que llamamos índice del tesoro. Ahora, creamos un
bucle while que comprueba que si bien el índice del tesoro es igual a la mitad del índice, luego agregamos uno a una
variable trice que parte de cero, y se nos comprueba
si esa variable es igual a la mitad de la longitud Dijimos que si esto es cierto, significa que no podemos encontrar
un índice de tesoro válido, así que establecemos el índice del tesoro a
cero y salimos del bucle Y, o bien, si no es igual, entonces tratamos de encontrar una opción válida que
no esté en las fichas especiales, para nosotros, es más
uno ya que
no tenemos otras
reglas especiales de empate en este momento. Entonces cuando salimos del bucle, si es cero,
lo que significa que intentó encontrar
uno y no pudo, entonces colocamos las fichas del tesoro exactamente
a la mitad del índice, y luego cuando era falso, nosotros Agregamos el nuevo
índice del tesoro que cuando es falso, significa que encontró un nuevo índice. Agregamos ese índice a
nuestra matriz de mosaicos especiales, y agregamos las coordenadas
a la ubicación del cofre. Y después, engendramos
para depurar un cofre. Ahora, es el momento de agregar estas
llamadas salas a nuestro juego. Así que tenemos más variedad y
mecánicas más complejas a nuestro laberinto. Para ello. Primero llevemos pintura y expliquemos algunas cosas que se
necesitan para nuestra lógica. Si por ejemplo,
tenemos cuatro cuadras, olvidemos
los bloques especiales. Digamos que hay
cuatro cuadras en nuestro laberinto. Lo primero que haremos es si estamos comprobando
desde esta habitación, por
ejemplo, lo siento,
no desde esta habitación. Empecemos por abajo a la izquierda porque así es como
vamos a estar comprobando. Vamos a empezar desde
la posibilidad de abajo a la izquierda. Y vamos a estar pidiendo desde este azulejo para comprobar si
hay un azulejo aquí o aquí. Entonces ni norte y oriente. ¿Hay un mosaico en esto
en estas coordenadas? Si hay un mosaico, entonces
estaremos creando una matriz para esto, y estaremos para hacer un bucle En realidad, no es mucho. Puntos. Estaremos creando un bucle cuatro con esta ordenanza. De todos modos, dentro de este bucle for, comprobaremos algunas reglas
y de hecho tendremos muchos cuatro bucles
para verificar cada regla específicamente. Entonces queremos exagerar
todo en un bucle for, va a ser más confuso si
tenemos un montón de reglas aquí
y ramas y todo, entonces tenerlo separado Este bucle cuatro hace esto,
este bucle for hace esto, este bucle fo hace esto, luego tenerlo todo en uno. Y luego cuando esto sea suficiente, lo
agregaremos a
una nueva variable Ahora bien, ¿por qué digo una nueva variable? Porque esta vez,
usaremos una estructura, una variable llamada estructura.
¿Qué es una estructura? Una explicación aproximada
sería una lista personalizada de variables de nuestra elección para
mantenerlas en una estructura, para mantenerlas en un formato que
podamos juntar todo este tipo
de variables. Por ejemplo, tenemos un bulion para asgun, por ejemplo, Tenemos un entero para amo. Tenemos un entero para el maná. Tenemos un flotador de por vida. Para nuestro caso, será una
estructura hecha de arrays Y eliminar todo esto, una
estructura hecha de arrays que serán las
coordenadas de las habitaciones. Entonces será una matriz de 0.0, entonces será 0.1, será 11, será 1.0
si y está aquí y aquí. De todas formas, No,
usaremos esta estructura para tener todas las
posibilidades porque después de que ésta corra por estas tres coordenadas
adicionales, entonces ésta correrá
para las siguientes coordenadas, y luego ésta correrá
para las siguientes coordenadas, y esta correrá para
las siguientes coordenadas. Y va a ir uno hasta que
sienta que es todo el laberinto, y tenemos una lista con
las posibles habitaciones. Ahora, por supuesto, nuestras habitaciones
serán de dos en dos. Y para mayor cantidad de habitaciones, si elegimos este sistema, que no es muy óptimo
para habitaciones más grandes, sería como si agregáramos coordenadas
adicionales como
verificaríamos este bloque también, si quisiéramos un dos por tres, o si quisiéramos un
tres por tres, verificamos las coordenadas de
abajo y abajo. Ahora, hagamos esto. Entonces Algo familiar, primero. Vamos a crear una función.
Tenemos un montón de funciones. En algún momento, podemos categorizar nuestras funciones para que sean por ejemplo, podemos poner
las puras en la categoría P. Creamos la categoría
de aquí, puras Ahora tenemos no
dice puro, dice poner. Puro. Bien, para que podamos elegir todas nuestras funciones puras y
agregarlas a esta categoría,
por ejemplo. Hagámoslo muy rápido. Entonces estamos encontrando todas
nuestras funciones que dicen puras y las estamos sumando
a la categoría puras. Entonces básicamente, tenemos muchas
funciones puras en estos momentos. Estos son nuestros bloques de construcción. Digamos, y esta
es nuestra matemática. Ahora, continuemos
creando una nueva función, cantemos el símbolo más aquí, y llamemos a esta función encontrar posiblemente habitaciones
dos por dos habitaciones. T de dos en dos. Ahora bien, esta será una función un
poco pesada ya que va a tener
un múltiplo next for loop. Entonces vamos a conseguir las llaves
del calabozo. Por cada coordenadas,
vamos a verificar si son una habitación válida. Entonces para hacer eso, voy a
crear una variable local, y voy a hacerla
del tipo b. id habitación válida. Sólo por el bien de ello,
hagamos lo contrario. Digamos que la
habitación válida está encendida al principio. Entonces el valor predeterminado de aquí, necesitamos compilar para
establecer el valor predeterminado. El valor predeterminado de
la habitación válida así que sea t Ahora, vamos a
traer esto aquí,
en realidad, con un setter, y podría simplemente
configurarlo aquí para que sea verdad No necesito el valor predeterminado, pero podría ser del
predeterminado al comping save Y ahora vamos a
crear una nueva variable llamada R. Y va a ser
del tipo en punto. Y el punto tipo es
porque son coordenadas, y va a ser
un array contenedor, y vamos
a traerlo aquí, y vamos a limpiarlo. La razón por la que estamos limpiando en realidad y configurando
la variable aquí para que sea cierta es porque vamos a
estar revisando cada habitación, voy a estar llenando
esta información. Queremos que esta parte
del bucle cuatro esté
restableciendo la información
antes de hacer nuestras comprobaciones Porque cuando hacemos nuestras comprobaciones, cuando hacemos el resto
de los cuatro bucles, porque aquí va nuestro bucle F, No
serán cuatro
bucles para cada bucle, eso será para las
coordenadas vecinas de este,
las grabaciones de vecino de habitación. Necesitamos crear esta función. Va a ser
una pura otra vez. Entonces vamos a
estar tomando como
dijimos en pintar las siguientes
coordenadas x a ella, la x más una, la x y más una, y la y más una para crear
una habitación de dos en dos habitación. Y luego vamos a que
ellos revisen algunas reglas. Ahora, vamos a crear esta función. Pero antes de crearlo, lo que vamos a
necesitar básicamente es de nuevo una parte de las coordenadas finas,
la fina adyacente. Entonces vayamos al puro
, busquemos adyacente. Cruzo adyacente.
Y vamos a copiar. Copiemos todo y
borramos lo que no necesitemos. Oh, Nueva función. Llamémoslo hacer dos por dos s. Hagámoslo uno puro, y pongámoslo en
la categoría puro. Por supuesto, necesitamos una
salida sería s. ray endpoint, por supuesto, de nuevo. Ahora, vamos
a necesitar una entrada, que serían cables, y esto no
necesita ser una matriz. Es solo un punto final de
coordenadas ipari. Y peguemos lo que obtuvimos
de la otra función. Ahora, no
necesitaríamos los menos. Necesitaríamos el más uno. Es x más uno. Es y más uno, y es x e y más uno. Ahora, necesitamos que las
habitaciones originales también se coordinen. Entonces, vamos a
conectar esto aquí. Vamos a eliminar
esto, y
vamos a conectar esto también aquí. Tenemos todas las coordenadas de
habitación, el más uno en x,
el más uno en y, y el más uno en cada una de ellas y las
coordenadas originales en una matriz, que sacamos como coordenadas de
habitación. Volvamos a nuestra función,
busquemos posibles habitaciones, y llevemos aquí esta
nueva función pura, que no agregué
a la categoría. Ahora, ejecuto la función equivocada. Añado hacer coordenadas de dos por dos
habitaciones. Aquí estamos, y vamos a forop
a través de ellos. Ahora es el momento de las reglas,
las reglas maravillosas Y
la primera pregunta, por
supuesto, debería ser, ¿
pertenecen a la mazmorra Entonces vamos a
conseguir nuestra
variable de mazmorra una copia pegada aquí. Y te voy a preguntar si
contiene esta información, que es la información de todas las coordenadas
de la habitación. Ahora bien, si no contiene, vamos a esa habitación válida falsa porque esta no
es una habitación válida. Todas estas coordenadas
no pertenecen a una habitación válida, y esto significa que estamos saliendo Si lo son, deberíamos agregarlos a
nuestra nueva variable, matriz de sala de variables
locales, at y conectemos. Si este disparador cae, solo por un poco de
optimización, cambiemos esto para cada bucle a para cada
bucle con break. ¿Qué significa esto? Esto
significa que podemos rematar este recuento de cuerpos
cuando queramos. Si los disparadores, van
a poner esto aquí, esto significa que no
recorrerá todas las coordenadas. Siempre que encuentre una coordenada que no esté dentro del calabozo, detendrá esta comprobación Entonces, si multiplicamos esto por
1,000 digamos mosaicos, esto realmente
tendrá un beneficio sobre cuántas veces se ejecuta
nuestra función. Ahora, continuemos
con una pregunta sim. Es habitación válida Si es cierto, debemos continuar
con la siguiente prueba. Si no es cierto,
entonces no deberíamos correr todas las demás razones por las que
tenemos que mantener esta habitación. Creo que este es un buen punto de
parada para este. Vamos a continuar con las siguientes reglas sobre la siguiente. Adiós.
28. Encontrar posibles habitaciones 2x2: Hola, y bienvenidos de nuevo al Taller de Diseño de
Juegos Re motor Cinco Procedimientos Dungeon Action ApS Creation Courts Anteriormente, creamos nuestras
posibles dos por dos habitaciones,
las primeras partes
de esta función, y también creamos la
marca dos por dos cuerdas de habitación, que esencialmente
toma las cuerdas que tenemos más uno
en la x más una en la y y más una en ambas para crear
las dos por dos. Ahora, entonces nos fordop, y comprobamos si
pertenecen al mapa de Dungeon Si no lo hacen, salimos de
nuestro bucle for anidado. Y si lo hacen, los
agregamos a la matriz de habitaciones. Como decíamos,
vamos a sumar a una estructura que
serán todas las matrices de habitaciones. Sigamos ahora mismo con
otra regla. Sigamos
con la regla que es hace está contenida
en nuestras salas especiales. Oh, vamos a
conseguir nuestro arreglo de habitaciones. Porque ahora mismo,
los teníamos en hacer de dos en dos. Ahora mismo, si es cierto, lo
hemos almacenado
en la matriz de habitaciones. Vamos a pasar
por alto con break nuevamente desde la verdadera rama de la habitación válida
porque si es válida,
continuamos, si no es válida, dejamos de fumar, y conectamos
la matriz de habitaciones Vamos a
traer los azulejos especiales, especiales. Sí, azulejos
especiales. Lo siento. Vamos a preguntar
si contienen artículo, alguno de los que tenemos. Vamos a poner una
rama para lograrlo. Si está contenido, entonces
vamos a establecer las caídas drom
válidas, y vamos a romper Si no está contenido,
entonces todo está bien. No necesitamos hacer nada. Esta habitación es válida. Y entonces vamos a
volver a preguntar cuando se complete esto, si es válido porque
si hemos frenado, queremos salir y no
ir al siguiente paso Ahora, el siguiente paso requiere un paso más que
poner algún código. Requiere la habitación ST de la
que hablamos, la estructura de las habitaciones. Entonces vayamos al contenido. Vamos a la carpeta de
planos. Vamos a hacer clic ligero y
crear una nueva carpeta. Y pongámosle un nombre a estas carpetas. E ingrese a esta carpeta y haga clic
derecho nuevamente y vaya a planos y seleccione
la variable de estructura Ahora, vamos a nombrar a
estas habitaciones de subrayado ST. Sí, habitaciones ST. ¿Por qué no? Está bien. Habitaciones ST. Vamos a compilar y guardar, y vamos a estar
agregando una variable, que ya tiene. Va a ser
del tipo punto de tinta. Y ahora va a
ser del tipo array. Llamemos a esta sala artes. Esta es una forma de crear
una lista de matrices, básicamente. Tenemos una estructura con
la lista de la matriz, y luego creamos una
matriz con esa estructura. Entonces, vamos a crear una nueva variable en nuestro blueprint, va a ser del tipo S, rooms, y va a ser una matriz,
que ya es es Y vamos a
nombrar a este ST mes y. ahora, vamos a necesitar una variable temporal
de una estructura, si agregamos un índice aquí, podemos ver que el índice es de en sala cods que
tiene sus propios elementos Entonces para agregar esto aquí, voy a eliminar esto ahora, debería ser cero elementos. Para agregar esto aquí,
vamos a crear una nueva varia llamada Ros Rom en realidad Y cuál sería el
punto aquí sería para Esto es una matriz. No
debería ser una matriz. Debe ser una sola variable. Estamos confundidos. Por qué
estoy viendo una matriz aquí. Así estructuras. Esta es una variable de estructura, y tiene esta matriz dentro. Entonces, básicamente, lo
que hemos hecho es que tenemos una matriz de una
estructura con matrices, si eso tiene sentido. Lo que necesitamos es hacer
en esta estructura es fijar miembros en salas ST. Porque esta es la forma en que estamos cambiando los datos sobre nuestras estructuras. No podemos si establecemos habitaciones, no enviamos miembros, colocamos
habitaciones por encima del nodo. Hay un conjunto de habitaciones ST, y hay un conjunto de
miembros en la sala ST. Entonces, si configuro las habitaciones
ST como la variable, entonces significa que
cambias toda la variable. Si pongo miembros, entonces puedo cambiar los
miembros de la estructura. F ejemplo, si esta estructura tuviera como describí antes,
una variable de salud, una variable arma, una variable amo, entonces podríamos estar
configurando a los miembros de decidir qué queríamos
de este nodo de aquí. Por ejemplo, ahora mismo,
tenemos coordenadas de habitación. Quiero establecer las coordenadas de la
sala de miembros. Hemos tenido otro valor. Salud. Por ejemplo,
podría haber seleccionado un pin el valor de salud y no actualizar el
resto de la lista. Lo que necesitamos no es
el setter regular, es que necesitamos establecer miembros Es un nodo único
para las estructuras. Si la habitación es válida, vamos a estar
configurando a los miembros. Vamos a configurar
la habitación que acabamos de crear, la matriz de habitaciones para que sea
miembro de esta estructura de sala. Entonces lo que vamos a
hacer es conseguir que nuestras habitaciones ST se arreglen y agreguen estructura. Entonces, nuevamente, tenemos una estructura que tiene coordenadas
internas. Almacenamos estas coordenadas, que es en
forma de matriz. Los almacenamos en nuestra estructura, que tiene una matriz
dentro de las coordenadas, y luego usamos esta
estructura para
almacenarla en una matriz de este
tipo de estructura. Espero que esto tenga sentido. Ahora bien, esto sería básicamente si
lo dejamos tal cual, pero esto crearía una lista
con todas las posibilidades. Como, por ejemplo,
vamos a eliminarlo. Yo tenía una habitación aquí, una habitación aquí, una baldosa, no una habitación, una baldosa aquí, una teja aquí, una baldosa aquí, azulejo aquí, azulejo aquí. Hagamos una grilla. G. Si estoy, necesitamos más teja. Yo estoy comprobando este, estoy comprobando Y si estoy comprobando este,
estoy comprobando esto. Pero éste se superpone. Entonces tiene una posibilidad. Obtenemos las coordenadas de todo lo
que básicamente está disponible para nosotros. Necesitamos algunas
reglas más para aclarar esto. Y como tenemos esta
maravillosa estructura por aquí, matriz de estructuras por
aquí que acabamos de crear, podemos hacer otra regla
antes de agregarlas. Podemos preguntar. Vamos a conseguir esta estructura, esta matriz de estructuras, traerla aquí, y
vamos a o o cada lop con break de nuevo. Y vamos a conectar esto. Esto. Vamos a
traer esta sucursal en realidad, por aquí. Y vamos
a preguntar, si alguna de estas coordenadas son nuestras coordenadas de
comprobación, básicamente, si están en
alguna de estas coordenadas. Para ello, como podemos ver, no
podemos simplemente verificar
un igual desde aquí. Se va a desconectar
porque este es del tipo ST.
Es una estructura. Para verificar si hay una estructura, tenemos que romper. Como lo hicimos, me dejaron traer actor. Como hicimos en el actor de spa la
transformación, la dividimos. Es de la misma manera Pero al contrario. Transformar
es una estructura. También podemos dividirlo si queremos. Pero debido a que está en un bucle de cuatro, podemos incluso en un bucle de cuatro. Podemos dividirlo aquí y
obtener directamente la variable. Pero solo quería
mostrar el nodo break. Vamos a recombinar. Si tenemos una estructura que
tiene muchos elementos, dividir en los cuatro bucles no
sería tan visualmente bueno. En fin, sigamos con el bucle de cuatro.
Conecta esto aquí. Y vamos a preguntar, en realidad, necesitamos un descanso aquí
para cada bucle con break. Descanso. Conecta esto aquí. En realidad necesitamos
una sucursal aquí para preguntar si sigue siendo una habitación válida. Porque si no es una
habitación válida, deberíamos romper. Aquí no estamos comprobando
algo, pero si rompemos aquí, también
estaremos rompiendo aquí. Voy a poner una sucursal
aquí y preguntar si esto está contenido en la habitación. Voy a conectarme. Si está contenido, entonces
estamos poniendo poldrum a agujeros y estamos rompiendo Es falso, estamos rompiendo. Intenta
volver a correr, es falso, estamos rompiendo y luego necesitamos otra
sucursal con es válida. Y si es falso, estamos rompiendo de nuevo y
volviendo al bucle original, que inicia para las
siguientes coordenadas. Ahora bien, la razón por la que
agregamos el aquí es porque estas son las coordenadas
que estamos comprobando aquí. Y estamos comprobando si alguna de las habitaciones tiene estas
coordenadas en ellas. Si lo hacen, se rompen, esta no es una habitación válida,
continúe con la siguiente. Y ahora podemos
conectar esto aquí. Y si todo es verdad, si todos nuestros cheques son ciertos, entonces estamos agregando
a las habitaciones ST. Creo que esto fue
mucha información. Deberíamos tomar un pequeño descanso aquí y continuar con el siguiente. Adiós.
29. Función del perímetro de la habitación: Hola, y bienvenidos a Game
Design Workshop Under Engine five Procesal Dungeon action RPG creation Course Anteriormente, creamos
continuamos en realidad el hallazgo
posible de dos por dos habitaciones. Creamos la estructura
de la matriz de habitaciones. Y hicimos algunas pruebas. Verificamos si la habitación está
dentro de baldosas especiales, si es descanso y seguimos
revisando la habitación contigua. También verificamos si nuestra habitación está contenida en alguna de
las habitaciones que ya
agregamos rompiendo la
estructura que
creamos a través de la matriz de habitaciones
ST, que es una matriz que
contiene muchas estructuras que tienen una matriz variable
de coordenadas. Y luego comprobamos si están contenidos, contienen alguno
de nuestros arreglos de sala de cheques. Si no lo hacen, estamos agregando significa que
nuestra habitación es válida, no pertenece
a ninguna otra habitación. No pertenece a
ningún azulejo especial, y está dentro de nuestro calabozo Agregar las coordenadas a nuestro
sistema, matriz de habitaciones ST. Ahora, el único problema con
problema. No es un problema. Es una elección de diseño
en realidad con esto es que las habitaciones canpawe una al
lado de la otra Por ejemplo,
agreguemos algunos más. La consistencia amarilla como mis malos dibujos.
Son consistentes. Consiste mal. Entonces, si tuviéramos
una habitación en estos bloques, entonces otra habitación
podría engendrar aquí, lo que personalmente no me gustaría porque crea
dos habitaciones una al lado de la otra Podrían tener una puerta, puede
que no tengan una, pero siempre tendrán
una pared separándose, lo cual no me gusta
la posibilidad de no tener una puerta en realidad. Podríamos hacer algún código si
dos habitaciones se superponen, dos cambian tal vez siempre poner una puerta en un lado
o cualquier lado Pero me parece más
divertido aprender a crear un perímetro en la
habitación o esto como variable. Y entonces podemos hacer lo que
queramos por el perímetro. Por ejemplo, podríamos
crear otras reglas si
detectamos una habitación que podamos
atravesar tres o cuatro, creamos un corredor
entre ellas o no vamos a estar haciendo eso. Nos quedaremos en nuestras
dos por dos habitaciones. Pero creo que es más versátil tener
conocer los perímetros de
los dos por dos o tres por
tres o dos por tres o de dos por tres o lo que sean las habitaciones
que hayamos diseñado Ahora bien, ¿cómo vamos a hacer esto? Vamos a
crear una función. Va a ser increíble. Vamos a hacer una función. Vamos a llamar a esta
función perímetro de sala de viento, establecer perímetro de habitación. Lo que va a estar
haciendo, va a estar encontrando el perímetro de la habitación. Va a estar agregándolo a las habitaciones especiales y a las salas especiales de
acción a las habitaciones perimetrales de
la habitación. Y vamos a
necesitar una nueva variable. Y tendremos que
eliminar algunos muros. Ahora bien, ¿por qué es eso?
Volvamos a pintar. Vamos a estar necesitando
cuando tengamos una habitación, las paredes que se están
utilizando son estas paredes de bloques. Entonces esto quiere decir que
cuando tenemos una habitación, estas paredes, si están puestas
, se quedan encendidas. Entonces tenemos que encontrar la manera de
eliminar estas paredes, y simplemente mantener las
paredes de la habitación que queremos. Vamos a hacer eso. Nueva función. Vamos
a llamarlo conjunto perímetro. Porque está configurando todo. Nosotros, vamos
a necesitar una entrada, y eso sería de tipo array, y sería nuestra matriz de
habitaciones. Llamemos a esta función
porque si no la llamamos, esa es una carrera. Encuéntralo posible
dos por dos habitaciones al final
donde estamos agregando nuestra habitación ST nuestras habitaciones se
arreglan a la habitación st, y luego estamos
agregando esta habitación ST a las matrices de salas STs. Ahora, al final aquí, nosotros
así que ese perímetro de habitación. Porque este es el fin. Dijimos que la habitación es válida, entonces como es válida,
su perímetro. Voy a conectar
nuestra matriz de habitaciones con
la matriz de habitaciones aquí y
volver a nuestra función. Ahora bien, sabemos que
a partir de esta matriz, el último es
el spot original. Entonces si vamos a nuestra marca
dos por dos cuerdas de habitación, podemos ver ese
tercero, el último, hemos configurado esto es
las coordenadas originales. Entonces aquí es donde comienza
nuestra habitación. Aquí es donde empieza. A partir de estas coordenadas, si obtenemos el último índice,
sabemos que son tres. El último índice tres,
podríamos haber establecido sólo tres. Pero por si acaso
queremos que las habitaciones
sean más grandes, por ejemplo, cuatro por cuatro sería mejor obtener el
perímetro de la habitación para el último índice. Ya que sabemos que el
último índice siempre
serían nuestras
coordenadas originales de comprobación para la habitación. Porque el resto
de las coordenadas son las coordenadas que
estamos comprobando. Este es el original Oh, ¿qué vamos a hacer
a partir de esto? ¿Por qué es importante esto? Porque ahora voy
a romper esto. Como es un dos por dos, solo
voy a
menos uno en x, y luego voy
a durar dos en x Este tipo de lo hace
inválido para habitaciones más grandes? Tendríamos que
cambiar esta cantidad si fuera mayor a dos b dos. Ahora bien, ¿cuál es esta cantidad? Si volvemos a nuestra pintura, y eliminemos esto. Oh, maravillosos dibujos otra vez. Se trata de habitaciones. Si esto es 0.0. Si voy menos uno en x, este es el valor x, este es el valor y. Menos uno es -1.0, x, esto es y
Si voy más dos,
sería 01,
dos, será 2.0. Si voy más dos,
sería 01, dos, será 2.0 Voy a hacer lo mismo en y Así que voy a traer esta caja por
aquí, esta caja de aquí, esta caja de aquí,
esta caja de aquí, esta caja de aquí, esta caja aquí, esta caja de aquí. En realidad, porque lo estoy
haciendo en ambos, voy a traer esta caja por aquí, esta caja por aquí, esta
por aquí y por aquí. Entonces esto sería
menos uno menos uno, esto sería más dos más dos. ¿Cómo voy a
pasar por todo esto? Hagamos lo mismo en y. Bueno, hasta ahora, hemos
estado usando para cada loops, lo que requería una matriz. Esta vez, vamos a usar un bucle cuatro anidado,
como un bucle de cuatro, de
nuevo un four each loop
for loop con break,
y nuevamente, un bucle de cuatro con break,
un
bucle anidado para dos bucles anidados
o uno de cuatro bucles anidados de todos modos Entonces voy a conectar
esto con primer índice y este último índice y este
primero en último índice. Entonces, a partir de menos uno x, vamos a estar
comprobando el menos uno y. Así que cuando estemos comprobando
el menos uno x, vamos a estar
comprobando el menos uno y hasta el más dos y. Entonces esto va a
pasar al siguiente índice. Esto es básicamente anidado cuatro bucles como lo fue del resto de los cuatro bucles con para cada
cuatro bucles con la matriz Ahora bien, ¿qué vamos
a estar comprobando? Voy a estar comprobando si nuestro arreglo de habitaciones vamos a traerlo. Oh,
aquí tengo esta variable. Habitaciones ray. Si tipo habitaciones ray, voy a obtener una
referencia a esta variable. Entonces no necesito arrastrar un cable. Hablamos de esto. Se
trata de las convenciones de nomenclatura, y de cómo no deben ser las
mismas que las variables. Las variables locales, las variables de
entrada y salida, todas
deben ser únicas. Oh, voy a comprobar si esto contiene estas coordenadas, lo que significa que voy
a estar rompiendo esto. Voy a estar sumando los valores
x del primero o bucle y los valores y
del segundo. Y ahora creé un
octavo punto basado en este bucle de dos for, rompemos. Voy a la sucursal. Voy a conectar esto aquí,
voy a poner esto aquí. Y si esto es cierto, voy a crear una
nueva variable local, Olim va a ser del tipo eh point Y va a ser una matriz. Voy a añadir. Qué referencia, voy a agregar estos dos valores
a esa matriz. Compilar y guardar. Entonces básicamente, ahora tenemos
nuestro perímetro de habitaciones. F o loop con break
no era necesario porque en realidad no
necesitamos romper aquí. No hay razón
para que rompamos esto. Entonces cambiemos
esto a solo bucle. O simplemente puedes dejarlo como
facilidad, realmente no importa. Es solo que se rompe. La forma en que estoy moviendo nodos de esta
manera es que estoy manteniendo el control, solo arrastrando y seleccionando Y si mantengo el control
un arrastre desde un alfiler, simplemente
mueve el cable. A lo mejor esto se ve
mejor. No hay manera de. Ahí está, si eres artístico
y verso con mesas, hay formas de hacer que se
vean mucho mejor. Compilar y guardar. Y creo que este es un
buen punto de parada. Tenemos nuestro perímetro. Tenemos las coordenadas
de nuestro perímetro. El siguiente punto, lo
siguiente que debemos hacer son ocho las paredes del
perímetro hacia la habitación. Esto es algo que
voy a hacer la próxima vez. Adiós por ahora. Te voy a
mandar en la siguiente.
30. Listado de habitaciones y depuración: Hola, y bienvenidos de nuevo
al taller de diseño de juegos, y motor real cinco procedimientos Dungeon acción RPs curso de
creación Anteriormente, hablamos de
crear el perímetro de la habitación. Entonces, creamos una función. Obtuvimos nuestra matriz de habitaciones al
final de encontrar posibles habitaciones
de dos en dos cuando realmente
decidimos que esta es una habitación
bien para crear, agregamos esta matriz. Y como sabemos
que la última opción de esta matriz es
nuestro bloque de comprobación, creamos algunas coordenadas para verificar toda la
ordenanza a partir de ella. Hacia el final, si
pertenece a la habitación, si pertenece a la
habitación, Esto es un error. Debería ser en caídas. Si no
pertenece a la habitación, entonces estamos agregando al perímetro de
la habitación, no si pertenece a la habitación. Si pertenece a la
habitación, no la agregues. Si no
pertenece a la habitación, entonces agréguela porque como
dijimos, estamos revisando todo
alrededor de la habitación, todos los pasillos vecinos, y estamos revisando
también los internos. Entonces, los internos, no, no es un perímetro,
es la habitación. Y ahora vamos a borrar los muros del
perímetro hacia la habitación. Porque podrían
tener otras bolas, así que no están por encima de la habitación, y no
queremos eliminarlas. Lo primero que tenemos que hacer
es conseguir el perímetro de nuestra habitación. Ahora, vamos
a pegarlo aquí, y a partir de esto,
vamos a para cada bucle. De todo esto, vamos
a encontrar cruz adyacente. Queremos saber
qué está al lado. Por supuesto,
vamos a para bucle de cada erección de todos
los vecinos adyacentes. Ahora queremos saber cuál de estos vecinos adyacentes
es en realidad una habitación uno. Lo que vamos a
hacer es que podríamos simplemente salir aquí mucho
código y verificar si está contenido en una habitación e
ir con más siguientes. Pero no podemos hacer
que sea una función pura porque vamos a usar esto un poco más para comprobar si
hay una habitación al lado de nosotros. Entonces, una nueva función, y esta vez va
a ser pura. Voy a crear una función. Voy a llamar a esto hallazgo Vamos a
llamarlo encontrar índice de habitación. Porque más adelante, vamos a necesitar saber, es una habitación, pero también qué habitación es, ya que tenemos una
estructura de habitaciones. Una estructura con
la información de, matrices, que contienen todas las
coordenadas de cada habitación. Entonces podemos decir, esta es la habitación número uno,
esta es la número dos, número tres, la número cuatro ,
esta matriz, estará
sosteniendo nuestras habitaciones, cuántas son, y las
tiene numeradas. Ahora, L et's continúan
con índice de cuarto de pinta. Por supuesto, vamos a
necesitar unas coordenadas de entrada, y va a ser punto final, pero una variable de tipo único. Entonces vamos a necesitar
la matriz de habitaciones St. Vamos a por loop con break esta vez porque
hay muchas coordenadas. Un lugar este de aquí. Y vamos a romper esto porque es información
de nuestra estructura. Nos da cada elemento
sería una matriz de
coordenadas para una habitación. Vamos a comprobar si
esto con nuestras ordenadas. Porque si esto contiene
nuestras coordenadas, significa que hay una habitación. Para indicarlo,
utilizaremos una variable local. Dado que se trata de algunas
funciones, nuevamente, un pequeño recordatorio, las variables
locales no afectan a las funciones de pipí. Va a ser de tipo pool, y va a ser
una sola variable. Vamos a ponerle nombre habitación. No se recomiendan las funciones completas. Bueno, contrarresta
el punto de tener sumar variables de configuración
que son externas. Pero si es una
variable interna, función local, solo existe aquí, realmente no le afecta. Y vamos a promover
esto también a una variable local. El índice, que
será el número de habitación. Si encontramos una habitación,
vamos a romper y ahora necesitamos salida. Entonces nuestro resultado
sería nuestro hallazgo. Rom va a ser del tipo, y aquí nos vamos a conectar. Y para el siguiente, sería índice de habitaciones. Ahora ves que nombrar es raro porque yo
nombré al otro Va a ser
de tipo entero. Nombré al
otro número de habitación. No pude nombrar este número de
una habitación porque lo estropearía. Entonces voy a conectar esto
aquí y compilar y guardar. Ahora, tenemos un índice de habitación fino y nos da si encontramos
una habitación y el índice de la misma, y podemos continuar nuestro perímetro de habitación
establecido. Entonces, ¿nuestras coordenadas noreste suroeste
pertenecen a una habitación? Encuentra índice de habitaciones. No es una función pura. Hagámoslo una función pura, y volvamos a ponerla en la categoría de funciones
puras. Vamos a traer una sucursal. Y
voy a conectar esto aquí. Ahora, encontramos una habitación. Ahora tenemos que recurrir a nuestro actor que estamos comprobando que el actor responsable de
estas coordenadas que teja sobre estas coordenadas. En realidad, el acto. Es un azulejo para nosotros, pero es un actor de planos De todas formas. Entonces, necesitamos encontrar al actor
responsable de estas coordenadas. Entonces vamos a
obtener nuestro mapa de puntos, y nuestro mapa
sería nuestro calabozo Pero ahora tenemos
acceso a nuestro azulejo. A partir de eso, vamos
a sacar nuestras paredes, creo, muro, cómo lo
hemos llamado. Decoraciones BP. Vamos a conseguir decoraciones, el niño actor en realidad, que necesitamos para conseguir actor, que luego vamos a
lanzar a P decoraciones. Convertiremos esto
en un elenco puro. Así podemos chuparnos todos estos maravillosos nodos uno
encima del otro. A partir de esto, vamos
a obtener componentes por s. y la clase
sería componente pic mesh.
Componente de malla Tic. Aquí está. Ahora bien,
¿qué significa esto? Para aquellos que son nuevos cuando
estamos obtenemos componentes son todo lo que estamos
agregando dentro del plano Entonces estamos obteniendo
todos los componentes que son de tipo malla estática, no de la baldosa BP, de las decoraciones BP, que serían todas estas paredes. O ahora. Más adelante, que vamos a tener más cosas. Obtendrá una lista de
todos esos componentes. Por ejemplo, si tuviéramos una pared y un barril,
digamos aquí, y ellos tienen las mismas reglas
que vamos a crear ahora, ambos desaparecerán. Ahora, sólo vamos a hacer desaparecer
las paredes. Y lo que usaremos son
las etiquetas que tenemos, el sistema de etiquetas de S y W y E. Así que volvamos al laberinto. Obtener componentes por clase, y vamos a o bucle
o cada bucle de ellos. Conecta eso con la verdad.
Derecha. Ahora, lo que vamos a hacer es que el
hash bug tiene componente tirón Como hicimos en la función
hide walls, el remolcador estará determinado
por el índice de nuestra matriz De hecho, podemos ir a nuestras decoraciones en
muros de piel, solo copiar y pegar. Pero ahora no estamos
usando las paredes, estamos usando los componentes get all components attic
mesh. Voy a
volver a nuestro laberinto. Va a ritmo este año. En realidad
no necesito de todo. No necesito este. Voy a conectar este año,
a conectar este año. Necesitamos crear
una selección personalizada. Y tenemos de nuevo el tema. Voy a traer
la última salida. Voy a dejar desde el índice. Voy a conectar
el último aquí. Voy a conectar esto aquí. En realidad, este es
el índice equivocado. Queremos este índice
porque este es el índice de no y mojado. Vamos a
conectar esto aquí. Voy a sumar dos variables
más, 32 más. Elimino esto, y será
al norte de Nouth, al este oeste. Y ahora voy a
conectar esto aquí. Tey está conectado. Sí, está conectado. Pero ahora está escondiendo las paredes de nuestro
perímetro hacia nuestra habitación. Ahora, solo por el
bien de la depuración, vamos a demostrar
lo que creamos Vamos a obtener nuestra matriz de habitaciones ST, y vamos a o cada bucle, vamos a
conectarlo a la completa aquí de la realidad, no aquí. Consiga las cosas de aquí.
Volvamos a nuestro hacer dos por dos encontrar posibles
dos por dos habitaciones. Y aquí, agreguemos
nuestra matriz de habitaciones ST. Conectemos esto aquí. Y vamos a romper. Voy a ho a cada grupo. Y vamos a
conseguir el calabozo. Y vamos a encontrar
fueron encontrando cada uno de cada tle, y vamos a conseguir piso. A partir de eso, vamos a establecer el material L et's seleccionar
un material diferente. Seleccionemos esta base de madera, pared de
ladrillo sucia, o
lo que quieras. Sólo quieres
ver si funciona. Construye, y
no hizo ninguna habitación. Hagámoslos un
poco más grandes para verificar. Digamos M estilos
50 en cinco talla. Y también comprobar si he
conectado las salas de crear. En gráfico par, puerta,
no, no lo he hecho. Así que encuentra posibles dos por dos habitaciones después de crear
cordones para el pecho. Juega y tenemos algunas habitaciones. Tenemos algunas habitaciones bonitas. Ahora. Lo siguiente que necesitamos es crear algunas
paredes en estas habitaciones. Y por ejemplo, cosas
como estas que
crean un callejón sin salida a esta
sala no deberían suceder. Entonces lo arreglaremos
en la siguiente lección. Adiós por ahora,
señor, el siguiente.
31. Creación de la estructura de la habitación: Hola, y bienvenidos de nuevo al Taller de Diseño de
Juegos
Andal motor cinco, ARPs de Acción de Mazmorra
Procesal Anteriormente, terminamos con nuestra función de
coordinadores de habitación fina, y agregamos un
perímetro a ellos también. Um Como podemos ver, hay algunos errores al respecto. Al igual que podemos crear habitaciones
junto a otras habitaciones, y si presionamos stop y
vamos a nuestro dock de mensajes, estamos viendo un error repetido. Así que vamos a repasarlo un poco de nuevo y corregir
los errores esta vez. Ahora, yo nuestro conjunto de sala perimetral, lo primero que debemos
cambiar es que creé esta sala perimetral
a local integer, local array, local variable, local array de int points. Esto debería promoverse
a una variable, y llamémoslo a
todos los perímetros de habitación Voy a borrar esto. Voy a traer aquí todos los perímetros de
habitación. Voy a añadir
a ésta también. Voy a romper esto
y agregar y on y y x en x. Realmente no
necesito
hacer nada más porque esto
estropeará el código. Pero calzados tenemos una variable que en tiene todos los perímetros Ahora, lo siguiente que
debemos hacer es verificar este error, este error de
mensaje. Dice, sucursal
no puede acceder no. acceso no suele ser
intentar acceder a algo, que no hay ninguna variable. Si haces clic en algo, te
llevará a una macro constante. Pero sí nos dice
dónde mirar. En esta sucursal en base gen
en conjunto perímetro de habitación. Nuevamente, la rama
conduce a la función. Pero es en el perímetro de la habitación del set. Así que vamos al perímetro de maze gen
y Strom. Lo que realmente hace
es que en algún momento, estamos tratando de encontrar
desde el mapa de mazmorras Pero cuando estamos saliendo del perímetro de
la habitación,
existe la posibilidad de que el perímetro no esté
dentro de la mazmorra No tiene ninguna teja. Entonces lo que vamos a
hacer es que vamos a preguntar si el mapa de mazmorras
que estamos solicitando, el actor que solicitamos solicitando a través de las
coordenadas es válido Y vamos a
usar el segundo nodo, que en realidad
nos da una opción de ramificación Voy a conectar
el true to es válido para el xy y el válido
para el bucle fore. Si no es válido, no
nos importa, y esto no va a suceder.
El error no va a ocurrir. Entonces presiono play
ahora, j. No es así. Si una parada de prensa, entonces nuestro registro de
mensajes debe ser claro, tráelo y está
claramente diseñado. Ahora, el siguiente problema estamos teniendo es que se están
creando
habitaciones junto a otras habitaciones, como si el perímetro no hiciera nada. Esto se debe a que aún no he
agregado el código. Entonces vamos a ir a buscar
posibles de dos en dos habitaciones. Y cuando estemos comprobando
azulejos especiales, vamos a comprobar también para
todos los perímetros de habitación, vamos a hacer
un contiene aquí Vamos a conectar
nuestra matriz de habitaciones, y vamos a hacer
un final, no un final, o bulion
porque o está en las baldosas especiales
o está en las habitaciones No queremos que
sea una habitación válida. Si presiono compilar.
Presionemos play. Las habitaciones no deben crearse una al
lado de la otra habitación. Bueno, posiblemente aquí, no
pudieron. Vamos a intentarlo de nuevo. Laberinto más sólido.
Sí, más sólido. Como podemos ver, las habitaciones
no están al lado de otras habitaciones. Crea esta
distancia entre ellos. Una distancia de teja,
el perímetro. Ahora, Una cosa también, deberíamos cambiar
sería no cambiar el material,
vamos a eliminar esto. Pero podemos agregar todas las habitaciones, todas las coordenadas
a una matriz. Entonces, voy a crear una
nueva matriz, nueva variable. Voy a
llamarlo todo aposentos. Va a ser
del tipo endpoint. Y va a ser una matriz. Y voy a
agregar a esta matriz, todos los cordones de habitación
que estamos rompiendo desde el final del hallazgo
posiblemente de dos en dos habitaciones. Cuando finalmente salimos
del bucle de palabras principal, vamos y rompemos todos
los array est rooms, y agregamos todas las
coordenadas que
encontramos dentro de las matrices de
estructura. Ahora bien, lo siguiente que debemos hacer es construir las habitaciones. Entonces, adivina qué,
vamos a volver a hacer una función para
construir las habitaciones. Entonces al final aquí, vamos a
crear esta función. Llamémoslo construir habitaciones. Vamos a llamarlo al final. Porque cuando probemos,
olvidaré agregarlo aquí, y entremos en esta función. Pero antes de
entrar en la programación, expliquemos qué debería estar haciendo esta
función. Así que vamos a pintar para
unos dibujos increíbles. Ahora bien,
lo primero que debería estar haciendo es sanar a las baldosas, como si tuviéramos cuatro fichas. Pero básicamente, necesitan
remodelar sus paredes
para estar en los bordes Y en base a sus flechas, esto no va a suceder. Entonces, lo que necesitamos en realidad se sujeta a cada baldosa
que tenga la habitación, qué paredes deben
estar encendidas y cuáles apagadas. No, eso es
lo primero lo primero. No va a
ser lo primero, pero es una de las cosas
que nuestra función necesita hacer. Ahora bien, lo segundo
sería decir qué tipo de paredes como lo segundo sería, ¿qué tipo de paredes
estamos poniendo en nuestra habitación? Porque tenemos cierta cantidad de muros, diferentes muros. Si vamos a nuestros líos estáticos. En realidad, si vamos
al mapa de visión general, hay más cambia
el color de los mapas también. Ahora los mapas son rojos, ¿verdad? Entonces si voy a vista general
mapa guardar seleccionado, podemos ver que
tenemos uno, dos, tres,
cuatro, cinco azulejos,
diferentes conjuntos de muros. Entonces, en base a estas paredes, deberíamos tener cinco tipos
diferentes de habitaciones. Entonces esto también es
algo de lo que esta función será responsable. Pero esta es otra
parte que tenemos. Función. Ahora, por último,
agregaremos un aleatorizador. Entonces si tenemos nuestra habitación, tal vez al azar, podemos crear
una pared aquí o aquí. En algún lugar de la habitación, podemos agregar al azar
una pared o no. Entonces crear este muro
aleatorio sería lo tercero que hace
esta función. Ahora, volvamos a intercambiar a nuestro mapa. Pasemos al nivel de juego, y vayamos a
nuestro generador de laberinto dentro de la función de dormitorios. Lo que vamos a necesitar
es la matriz de habitaciones ray ST, y vamos a hacer un bucle para
cada bucle en todas ellas. Y lo primero que
vamos a hacer es romper la estructura para obtener
las coordenadas de su habitación. También promoveremos
el índice a una variable que
será controlada localmente. Promueva la variable local,
y llamemos a este índice de sala. Y
conecta esto aquí. Porque cada vez que
ejecutamos esto for loop, estamos ejecutando básicamente
una habitación diferente. La primera vez que se ejecutará, el primer índice
de esta estructura de arrays será
la primera sala. La segunda vez que
correrá, será la segunda
habitación, y así vamos. Entonces podemos tener una
regla, por ejemplo, digamos que como
tenemos cinco habitaciones diferentes, que las primeras cinco siempre
elegirían una apariencia diferente. O para hacerlo aún
más interesante. Digamos que los dos primeros de ellos serán de una apariencia
diferente, y luego el resto de ellos
serían de los s de
alguna aleatoria. Entonces esto creará la ilusión de que algunas
habitaciones son realmente especiales, y algunas son más comunes. Así que vamos a crear otra variable
local, que llamaremos índice All. Llámalo índice de muro. Eso
va a ser un entero otra vez, y no una matriz, va a ser una sola
variable. Y ahorra. Vamos a establecer este
índice de pared de habitación, este índice de pared. Entonces, vamos a comprobar si esto
es mayor a dos. Entonces cero, uno, dos, en realidad, las tres primeras
habitaciones serían diferentes. Y luego a partir del
cuarto y después, elegiría deshacer. O elegiríamos el número uno, e iría a
las dos primeras habitaciones. Pero hagamos tres en realidad. Entonces, voy a
seleccionar una sucursal, voy a conectar aquí. Voy a conectar esto también. Entonces, si está por encima de dos, significa que es
mayor que nuestra cantidad deseada, y pondré el índice de pared
a una tinta aleatoria en rango. Eso sería 0-4. Y la razón por la que son
cuatro es porque
tenemos cinco
juegos diferentes de habitación. Entonces 01234 es cinco opciones
diferentes. Contando desde cero como
número como entidad, es un poco difícil
al principio, pero te acostumbras a ello. Ahora bien, si no es
mayor que dos, entonces calzamos ese índice de muro Digamos al índice de habitaciones. Por lo que siempre
será el índice de habitación uno, índice de
habitación dos, el índice de habitación cero. A, Contando desde cero, algo tenemos
que acostumbrarnos. Ahora, vamos a leer
aquí para conectar estos dos nodos. Aquí. Creo que este es un buen
punto para esta lección. Ya que vamos a tener que
hacer cosas un poco más complejas después, y van a necesitar un
poco más de explicación. Adiós por ahora, voy
a enviarte el siguiente. Adiós.
32. Función de habitación y fijación de paredes: Hola, y bienvenidos de nuevo a Game Design Workshop rail engine five Procesal Dungeon
Action Apes creation Anteriormente,
arreglamos algunos problemas que teníamos algunos errores
en el generador de laberinto. Y también explicamos algunas
cosas sobre nuestras habitaciones construidas. Comenzamos la función
de habitaciones construidas con pasar por todas las
habitaciones con un cuatro e l, y luego creamos una
variable para almacenar el índice, una variable local para almacenar
el índice de las habitaciones. Creamos una regla para
cambiar los tipos de muro, y ahora creo que es el
momento de continuar. Ahora, lo primero que tenemos
que hacer, lo primero. Una de las cosas que tenemos que hacer, y que vamos a hacer
ahora mismo es decidir si nuestra habitación tendrá
una pared aleatoria, y ¿dónde estaría esa pared? En realidad, si lo ha sido,
decidiremos más adelante, pero por si acaso lo ha hecho, decidamos dónde estaría
ese muro aleatorio. No, voy a copiar y pegar
este rango entero aleatorio, y voy a
cambiar la variable a tres porque nuestra
habitación es de dos en dos, así que cero, uno, 23 lleva
a cuatro opciones. Ahora, voy a promover
esto a una variable local, y voy a llamar a
este índice de muro interno. Y también, voy a sacar
del break sting de habitaciones como esta es nuestra habitación
coords de dos en dos, voy a conseguir P, y también promover esto
a una variable local, y llamar a esto Pila No Pasillo de
pared interna. Coordenadas. Bueno, esto es una coordenadas, pero podemos decir eso por el tipo
de variable. Y voy a
conectar esto aquí. Para el getter, voy a
usar el seted de lo aleatorio. Nuevamente, si me hubiera conectado
aquí desde el azar, este probablemente sería un número
diferente a este
porque generaría uno nuevo aleatorio. Así que quería
conectarlo desde el seted, o en realidad traer
la variable real aquí y conectarla
así sería lo
mismo de cualquier manera Oh, ahora. Lo siguiente que deberíamos
estar calculando es ¿dónde están nuestras paredes
basadas en nuestro índice de habitaciones? Ya que esta línea de aquí nos
trae la habitación break ST, todos nuestros índices de habitación. Voy a calentarlo aquí abajo. Podemos para bucle.
Para cada uno de ellos. Y sabemos que el último índice
es creo que el Noroeste, tenemos que checar esto en
donde creamos las habitaciones. Ahora bien, esta es la
creación de coordenadas encontrar posibles dos por dos habitaciones. Estamos haciendo un dos
por dos acordes de sala. Entonces la última es
la sala de cheques, y luego agregamos uno en x, uno en y, no y Entonces esta sería la habitación norte. Esta sería la habitación norte, la habitación noroeste. Entonces sumamos y. este sería el Nordeste, número dos, y el número uno es, Ya que X se queda igual, podemos llamarlo sureste, y el valor original
es el Sudoeste. Por supuesto, cuando estoy
hablando de Sureste, Suroeste, estoy hablando de
las paredes que
estarán activas en la habitación. Al igual que el primero
sería oeste y sur. El de arriba sería oeste
y norte, y continúa. Si quieres anotarlo, esto sería norte y este, y esto sería
sur y este. Básicamente, tenemos que
decir dos direcciones. Nuestras direcciones están en el azulejo en el
actor de azulejos, el azulejo BP. ¿Cuáles son tus lados cerrados? Direcciones con el W. De todos modos, así que volvamos
a nuestras habitaciones construidas. Para hacer esto, ya que
conocemos el orden, nos dimos cuenta del orden en
el que estos están establecidos, realidad
podemos alcanzar en int y tener tres
resultados diferentes porque es una matriz de cuatro longitudes,
cuatro resultados diferentes. Lo siento. Y vamos a
eliminar el valor por defecto. Ahora bien, ¿cuál es el
interruptor? Hablamos un poco de enumeraciones. Es lo contrario de un selecto. Puede activar cadenas, puede activar enumeraciones
y básicamente le da una salida diferente para ejecutar en
función de la selección de entrada Ahora, para estas coordenadas, necesitamos los conjuntos de ti. Para ello, vamos
a conseguir nuestro calabozo, y vamos a pelear Ahora, quería decir algo
sobre la pinta y todo. No pienses que esa pinta es
solo una acción que
ocurre instantáneamente Estas son solo
funciones listas para nosotros, que están pasando por
las variables y comprobando si la variable es igual a la variable que queremos. No es que un nodo como
este sea algo que
no sea tan pesado como un bucle
for, por ejemplo, que
pasa por el mismo
número de variables. En fin, continuemos. Es un poco mejor. Es un poco mejor. Ahora, como nos encontramos con eso, necesitamos las indicaciones. Y tenemos que añadir es cada vez porque estamos
hablando de dos muros. Y en realidad, necesitamos
copiar y pegar esto. Habría soluciones más fáciles para hacer esto con una función, pero por ahora, esto
sería eficiente. Ahora, también
los necesitaremos para apagar todas las
demás paredes. Vamos a duplicar. Tengo que volver a conectar
las líneas. A lo mejor voy a tratar de
hacerlo un poco, leer nota aquí, va así, mamá, va así. Se ve mejor. Mueva esto, más abajo. W haga clic aquí también. W haga clic aquí también. Estamos haciendo un montón
de nodos de lectura. Entonces no hay octa. Esto lo hizo. Modos, Tarea espantosa podría decir Digamos que
los primeros son los que se encienden a través. Hay una manera de moverse, y los segundos van a ser los que
están teniendo muros. Para el primer set
siempre es darle la vuelta a esto. El segundo conjunto es encender las
paredes. Entonces está apagado. Ahora, vamos
a averiguar las direcciones. Como decíamos, el número cero es un gran dolor otra vez
al oeste y al norte. Entonces el este y el sur deberían estar apagados. Oeste y Norte? No, sembré lo contrario, no
hice este y
sur este y sur. Hagamos primero los primeros, y después hacemos los segundos. Ahora, para la segunda baldosa, la primera en orden
sería Norte y Oriente. ¿
Esa es la segunda? Se me olvidó otra vez, tengo que comprobarlo. El primero es solo más x, así que ese es el noroeste. El segundo
no está en x y más y El segundo es el sur. Bien. El
segundo es éste. Esto es dos, este es uno. Esto es tres, y esto es cero. No, lo siento. No voy
a dar mis propias reglas. Entonces esto es cero. Este es uno. Esto es tres, y esto es dos. Entonces, siempre tener un out pad haciendo cosas simples
como esta es útil. Ahora, El segundo, nosotros que es oriente sur así que
Norte y Occidente deberían estar cerrados, Noroeste. El tercero 1 segundo
tercero en número de orden, el número dos
sería Norte y Oriente. Entonces esto es poniente y sur
que están en el primero, el último
sería Norte y Oeste. Entonces esto significa norte y este. Aquí tendremos
al Sudoeste número tres, número dos,
será norte y oriente. Y Oriente. Comprobemos que
cada línea tiene todos los. Como este es
Norte y Oeste, esto es sur y este y
este y este es este y sur, entonces es Norte y Oeste. Duplicados, por lo que sea correcto. Lo
resolveremos en las pruebas. Entonces esta es la parte
de nuestra función que pone en los mosaicos las nuevas flechas reales basadas en
que son una habitación. Me vas a decir, sí, pero ¿dónde ponemos la puerta? Bueno, este es un tema
diferente porque cuando
cerremos todas nuestras habitaciones, vamos a querer poder navegar por todo
el calabozo Entonces vamos a
hacer esto después. F ahora, creo que esto es
suficiente para esta lección. Y en la siguiente lección, intentemos sumar
nuestro muro interno. Adiós. Nos vemos en la siguiente.
33. Finalización de funciones de la habitación: Así que anteriormente, añadimos algunas cosas a nuestra función
bdroom, salas
construidas bild Así función Bilroom. Agregamos la variable de índice de
pared interna
y la variable de mosaico de pared
interna, que es un punto de tinta. Básicamente, estamos haciendo enteros
aleatorios para el índice, y luego estamos
almacenando ese índice, las coordenadas de ese índice. Ahora, después, hacemos
un bucle a través de
cada una de nuestra matriz de habitaciones, que pertenece a la
estructura de las matrices de habitaciones, y
configuramos manualmente qué paredes deben corresponder a qué
lado de la matriz de habitaciones. Ahora, como dijimos, lo siguiente que
debemos hacer es agregar realmente esta
pared interna o no agregarla. No todas las habitaciones necesitan
tener una pared interna. Para ello, vamos a bajar
más el interruptor en int. Y T a través de ese
interruptor de int. Como pueden ver, lo
conecté desde el completado de este bucle fd. La razón es que
todavía estamos dentro de este bucle fd. A esto se anida para
cada incremento del índice, básicamente para cada matriz, estamos teniendo esto
en switch on int, y vamos a
agregar tres variables En realidad, vamos a
sumar cuatro porque digamos, por
ejemplo, cero,
uno, dos, tres, vamos a estar sosteniendo variables
para realmente colocar un muro, y cuatro
no sería colocar un muro. ¿Y cómo vamos a hacer esto? Vamos a elegir int. A, pico A, vamos
a un pool aleatorio. Entonces algunas habitaciones tendrán una pared. Por lo que las habitaciones no tendrán. Pero cuando es pico A,
vamos a elegir el número cuatro, por ejemplo, que
sería no poner una pared. Vamos a eliminar
este pin de ejecución, el predeterminado porque
no lo queremos. Y en B, en realidad, necesitamos un índice aleatorio. No lo nombraste al azar.
¿Cómo lo nombramos? Índice de pared interna. Entonces, aquí necesitamos el índice de pared
interna. Genial. Entonces tenemos B por 0123 Pero qué habitación es la que
otra vez, ahora mismo, necesitamos hacer algo como
esto para fijar las paredes de
las habitaciones porque entonces
vamos a pintar para mostrar que ir a borrar necesario. Entonces tenemos nuestros cuatro
pasillos que son nuestra habitación. Y sabemos que por ahora, hay un muro por todas partes. A lo mejor esto debería
haber sido un
poco más grueso. Línea Ticker. Seríamos capaces de elegir una línea
más gruesa. Boleto uno. Entonces tenemos nuestras paredes alrededor de nuevo estilo de
dibujo, paredes con cajas. Oh. Ahora bien, si estuviéramos en
esta cuadra de aquí, podríamos tener una pared
por aquí o por aquí, todavía estaría disponible
en toda la habitación. Y eso va por cada cuadra. Podríamos tener ambos
lados de cada baldosa, uno de ellos, pero podemos seleccionar uno en ambos
lados en cada pasillo Oh, como dije, vamos a estar haciendo de nuevo un
sistema como este. Vamos a estar
agregando manualmente las variables. Pero tenemos que
averiguar qué habitación es cuál. Y con base en que esto
está en nuestra estructura. En realidad teníamos ese dibujo
anterior. Vamos a pintarlo de nuevo. Voy para que pueda mejor. Este es el tercero seguro. Esto es cero. Esto es dos, y este es uno,
y este es dos. Creo que así es
como lo teníamos. Volvamos a comprobarlo. Voy a tomar un segundo
para encontrar la función. Voy a ir a funciones, encontrarla para construir habitaciones, hacer dos por dos s. Esto es lo que queremos porque
era la pura. Cero es p uno en x, uno es p uno en y, uno es oriente sur, y el segundo es uno. Éste. Entonces sí,
eso es correcto. Genial. Volvamos a nuestras salas de construcción y vengamos
aquí para llenar el terreno de juego. Ahora, como queremos que ocurra una
de las dos paredes, vamos a poner cuatro ramas porque es o es
una u otra pared. Y a estas condiciones, sólo
voy a hacer y boll conectado a
todas las condiciones En el número cuatro,
necesitamos este paso porque no va
a estar sumando todo. Pero vamos a conectar
esto después a lo que venga después, que en realidad es
la colocación de la pared. Oh. Vamos a traer algunos nodos
que ya tenemos. Vamos a necesitar
dos para lo anterior, dos para el siguiente, otros
dos, y otros dos. Esto se puso grande, pero está bien. Solo necesitas espaciarlos, así que es un
poco más leído en azul. Cuando tu plano se vuelve un poco complejo
hay demasiadas cosas Enfréntalos,
realmente no importa. Tenemos un espacio sin fin,
un desplazamiento sin fin. Punto. Oh, vamos a conseguir el
calabozo que necesitamos, el azulejo no lo siento dangon, del calabozo, el
azulejo que Entonces vamos a
conseguir mapa de dungon, y vamos a encontrar
lo que vamos a Esta baldosa variable de paredes
internas que
tenemos almacenadas por aquí. Ya que conocemos el azulejo. Sabemos cuál id en
los dos por dos es, qué colocación en los
dos por dos ochos Solo podemos encontrar
y obtener ecciones, Y ahora tenemos que conectar
direcciones a todo este anuncio. Uno, dos o se expanden también, se
convierten en una
molestia aún mayor en el plano Permite conectar a False. No sé si alguno
de ustedes ha tocado con editores de música como Reason. Se parece mucho a las
conexiones a la razón. De todas formas. Basarlos. Ahora. Vamos a averiguar
qué muros necesitamos. F cero, estamos en el
sur noroeste. Necesitamos en realidad las paredes internas
correspondientes. Básicamente, tenemos esto
iluminado un poco por encima de nosotros. Pero como es un
poco desordenado, no
lo hice y lejos, hagámoslo de nuevo Necesitamos el oriente y necesitamos el norte es este o
norte, sur, perdón. Este y sur para el
superior. El siguiente. El siguiente es este
fondo de aquí, así que necesitamos al norte y al oeste. Norte y poniente. El siguiente es el número dos. Número dos, la pintura aquí está. Número dos, necesitamos
al oeste y al sur. 02 es este Oeste Sur. Para el último,
necesitamos al norte y al este. Nora, ya está
aquí para nosotros. Épico. Ahora bien, ¿cuál
sería el siguiente paso? En primer lugar, ya que
cambiamos tanto la
información sobre las flechas. Creamos nuestro propio sistema de flechas. Vamos a solo flechas totales. Vamos a hacer eso. Lo
que necesitamos son cables ST room. Vamos a
traerlo de todas partes de la w aquí y escribir cada bucle. Y vamos a
conectar todo a e. básicamente, en los bloques que
son habitaciones en los
azulejos que son habitaciones, o nuestros ajustes de flecha se están
reconfigurando a lo que queremos Ahora, también necesitamos conectar
este cuatro por aquí, que no es de pared interna
aquí a los cuatro cada bucle. Entonces mantiene todo esto. Y ahora que estamos dando vueltas con los cuatro bucles
a través de las coordenadas, busquemos al actor
apropiado En realidad, podemos simplemente copiar esto porque
esto es lo que necesitamos. Obtenemos el estiércol, el hallazgo, y nos conectamos de
acuerdo con el hallazgo Y a partir de aquí,
vamos a conseguir decoraciones. La variable,
siempre está en la parte inferior, y vamos a
fundir a decoraciones. PPG primero el médico infantil. Y a partir de esto,
vamos a conseguir decoración. Lo siento, vamos
a cust decoración. Y vamos a hacer
del cust un puro cust. Nuevamente, más rápido, es
más eficiente, y ayuda con los asentimientos que
vienen no los espaguetis Conviértete en torre. Ahora, alternemos flechas en todas
estas decoraciones. Toggle flechas mensaje porque es nuestra interfaz de blueprint Voy a conectar esto aquí. En realidad, si sí, vez
he conectado esto a
las decoraciones. Creo que le pasó
a las lecciones antes. Pero ahora creo que podemos probar y ver lo que creamos con flechas. Vamos a ver algunas
flechas creando habitaciones, creo que si todo
ha ido bien. Entonces no estoy segura. Posiblemente esta es una habitación. lo mejor tal vez no deberíamos
haber eliminado el deshorneado de cambiar rápidamente
un generador tom Vayamos a la gráfica par. Vayamos rápidamente al hallazgo
posible de dos en dos aquí. Lo tenemos en copia, el mapa Dungin encuentra Va a usar esto para
establecer el material del piso. En realidad vamos a
elegir el piso para nosotros y también establecer material,
traernos un nodo. Vamos a elegir la suciedad
esta vez. Compilar guardar. Juguemos, tengamos
alguna suciedad, expulsen. Bien. Entonces tenemos algunas habitaciones, pero Teams realmente no funcionaba. ¿Por qué es eso? Averiguemos el material ahora, estuvimos aquí. Estamos alternando flechas en
las flechas co
no están en decoraciones. Por eso esto es
mandar el mensaje, pero las decoraciones no tienen ningún código que ver con las flechas. Deberíamos estar enviando las
flechas a la baldosa directamente, no a la decoración.
Conecta las decoraciones. La forma en que está conectado fue que lo usé por si
te lo estás preguntando. Solía presionar Alt y hacer clic y conectar la línea a la
que has apuntado. Entonces como compilar guardar, esta vez debería funcionar porque estás actualizando
el plano correcto, no el niño de decoración Y, aquí estamos, y también tenemos algunas puertas
que no están por sentadas. Van a ser posteriores ps. Ahora, como pueden ver, las
paredes de las habitaciones no se han actualizado porque aquí no hemos
actualizado las paredes. Pero las flechas están correctamente. Esto es lo que necesitamos ahora mismo. Necesitamos las flechas. Con base en las flechas
de la siguiente lección, vamos a estar
cambiando las paredes, y finalmente va a ser una pared con una habitación con
paredes y sin techo. Vamos a arreglar
todo esto después. Adiós por ahora, al
verte el siguiente.
34. Aleatorización de paredes internas: Hola, y bienvenidos de nuevo
al taller de diseño de pandillas, y al curso de
creación de RPG de acción
Dungeon real engine five procedural curso de
creación de RPG de acción
Dungeon Anteriormente, añadimos
algunas cosas más a nuestras habitaciones construidas. Agregamos qué pared debe
colocarse al azar a través este interruptor de aquí y las variables
que guardamos antes, la baldosa de la pared interna, el índice de pared interna. A través de este switch,
decidimos uno aleatorio, que sería colocado, o si elegimos el número
cuatro en este int aleatorio, no colocará nada. Y también usamos la función de
flechas totales correctamente, después de algunos intentos conseguir que las flechas se
comporten como las queremos,
las flechas dentro de la habitación Ahora, sigamos
fijando qué paredes deberían estar arriba y qué paredes no
deberían estar levantadas. Vayamos a las decoraciones
PP y creamos una nueva función, que en realidad será
algo similar a esta. Podríamos actualizar esto,
pero hagamos uno nuevo. Por el bien de la claridad. Vamos a nombrar
esta función build. No. Deje que las paredes de la habitación. Paredes de habitación. Y vamos
a necesitar una entrada porque vamos a estar
llamándolo desde el generador de laberinto
directamente aquí. Entonces tenemos acceso directo para obtener indicaciones desde el azulejo. Ya que tenemos
acceso directo desde esto, podemos alimentarlo directamente ahí. Aunque, esto podría, ya que
tenemos nuestro parentil aquí. No pongamos una
información para que pase. Es más eficiente
obtenerlo de aquí para obtenerlo de las decoraciones
reales de PP, porque tenemos una baldosa PP. Oh, vamos a
obtener indicaciones. De las direcciones,
vamos a conseguir las llaves. Como lo adivinaste,
vamos a mantener bucle a través de estas teclas o cada bucle Entonces vamos a mantener
bucle también desde nuestras paredes. Y vamos a estar comprobando
si el componente tiene stug, que es el elemento de la matriz de la
anterior o direcciones Ahora bien, si tiene tirón, vamos a hacer pero algo depende del valor que
tengamos en las direcciones Así que vamos a encontrar el valor correspondiente
al elemento array, que es la madre, el host o loop. Esta es la nave nodriza
que dirige el resto. Bueno, para ser sinceros,
en este caso, esta es la nave nodriza que
corre tantas veces todo esto. Pero como puedes ver, solo toma unos segundos. Eso lo veremos en
la barra de carga. Ahora, ¿qué vamos a hacer? Vamos a establecer
visibilidad En realidad, creo que los estamos ocultando
que se esconden en. Hagamos las dos cosas. Yo ellos en ganancia. Realmente no importa.
Queremos que sean visibles, y también queremos que
no se oculten en la ganancia. En caso de que sean
colisión está apagada, también
deberíamos establecer colisión. Eso es todo Dante y agradable, pero ¿qué ponemos aquí? Así que para la visibilidad. Si esto es cierto, queremos que la
visibilidad esté apagada. Entonces necesitamos una t aquí. No toro. Do O, L. Si esto vuelve a ser cierto, queremos que sea invisible
y oculto esto va aquí. Y si esto es cierto, lo que significa que hay un paso, cuando es cierto, significa
que puedes pasar a través. Necesitamos una selección aquí. Y necesitamos
conectar esto aquí, es más fácil encontrarlo,
si es a través de ninguna colisión, si es falsa, colisión
habilitada física de quaran Compila y guarda, y eso es prácticamente
todo. Vamos a probarlo. Lo hemos conectado
a Nope, no lo hemos hecho. Entonces voy a leer esto. No lo necesitamos. Necesitamos de
aquí cómo lo llamaron. Las paredes de esa habitación. Entonces paredes, Ahora, deberíamos tener estas medias paredes que
tenemos alrededor de las habitaciones. Llévala de nuevo. No, no lo hacemos Hay un problema.
Vamos a resolverlo. ¿Qué podría ser? Comprobemos
desde el generador de laberinto. Comprobemos desde aquí. Estamos ejecutando esto, ejecutando
instancia va aquí, y su instancia está
estableciendo sus propias variables. Entonces vamos a agregar una pared
falsa de una pared de habitación. Todo esto debería ser
falso básicamente. Porque si es verdad, estamos de paso. Pero tienen los
medios falsos tenemos el muro. A ver si esto está arreglado. El, las paredes, no el ok, tenemos una pared aquí,
tenemos una pared aquí. No esperaba que se arreglaran las paredes
reales. ¿Por qué no están ocurriendo las paredes? V pregunta. Vamos a
revisar. Detén esto. Volvamos
al generador de laberinto, para hacer un bucle, conseguir
el toggler de decoración hasta aquí, sabemos que funciona Establecer paredes, decoraciones para
cada bucle es operaciones de componentes. Da vuelta al nombre del enumerador. Sí. No
queremos esto exactamente. Lo que queremos es la primavera. Queremos este nodo.
Este nodo devuelve, vamos a imprimirlo cadena por ti. Aquí, conectemos estos dos, así vamos a tener esto correcto.
Y compilando juego Ahora, tendrá
algunos números
y nombres raros . Dirección E. Bien. E direcciones, numerador un numerador
dos, numerador Ahora bien, si conserva un nombre muy
genérico, como puedes ver. Yo para ser honesto, pensé que habría estado
devolviendo el número de byte. Pero sí. Entonces este era el problema. Cierra esto, así que no
necesitas esto. Aquí. Desde el elemento array, necesitamos um para cadena, y luego esa cadena,
nos conectamos al remolcador Y lo
convierte automáticamente en una variable de texto
una variable de nombre. Oh. Juguemos a esto
una vez más. Y deberíamos
poder ver habitaciones. Habitaciones cerradas. Sí.
Están completamente cerrados. Y creo que es hora de poner realmente algunas
paredes reales en las habitaciones. Oh, vayamos a una decoración
y creemos una nueva función. Y vamos a
nombrar esta función. Paredes. Vamos a entrar en él.
Ya estamos en. Pero antes de comenzar a
programar esto, vamos a necesitar una
nueva malla de ático aquí. Esto se debe a que se trata de una habitación. Cuando estamos intercambiando dos paredes, también
debemos poner un techo porque si
no tiene techo, entonces son solo cuatro paredes No es realmente una
habitación, ¿no es ahora? Entonces, vamos a presionar add, vamos a agregar
una malla estática. Y vamos a ponerle
nombre a este techo. Así es como se deletreó. No estoy segura. Otra palabra
difícil de deletrear. Vamos a seleccionar
un lío estático para ello. Creo que hay una malla ctic. Para el material, ¿
tiene un muro de piedra? Por defecto, vamos
a ir a su visibilidad. Y ponerla en invisible. Y en realidad podemos cerrar
su colisión también. Entonces vamos a ir a
su configuración de colisión. Por supuesto, más adelante cuando
estemos construyendo el juego, estaremos cambiando muchos de
los ajustes y tipos de colisión y tipos objetos
y
todo lo que interactúen con, pero eso es más tarde. Presets de colisión, et know. No queremos los presets de
colisión. Queremos el H.
Pongamos esto en los ajustes preestablecidos de colisión personalizados y configuremos la colisión
habilitada para que no haya colisión Pero cuando lo hagamos visible, también
debemos dejar que la colisión esté habilitada para tirar de colisión. Ahora, creo que este es un buen punto de
parada para este. Deberíamos estar llenando esta
función en la siguiente, así podemos explicar cómo funcionará también
nuestro proceso de selección. Adiós por ahora, S
eres el siguiente.
35. Agregar paredes de habitaciones: Hola, y bienvenidos de nuevo a Game Design Workshop
y al motor cinco Procesal Dungeon
Action Simios creación En la última. De hecho nos las arreglamos para
completar las habitaciones construidas. Tenemos una cosa más que hacer, y será ahora. Pero veamos qué hicimos. De hecho, creamos la función
set room walls, que es una función
dentro de la decoración VP, que toma el azulejo padre, toma las direcciones de
él, mira a través de ellos
y a través de ese bucle, mira a través de la matriz de
paredes y verifica cuáles deberían ser visibles
y tener la colisión encendida. Ahora, vayamos a intercambiar muros que creamos una
función pero no completamos. También agregamos el techo. Y en esta función,
vamos a necesitar dos entradas. Vamos a ser
del tipo entero. Ya está hecho para mí. Vas a
cambiar el tipo aquí, y pongamos el
nombre. ¿Cómo lo nombra? Es la variable de aquí
no el índice de pared interna. Porque como decíamos, tenemos cinco juegos diferentes de
paredes para las habitaciones, así que vamos a mirar a través de ellas. Sin bucle, pero seleccione
un tipo de ellos. Además, necesitaremos
la segunda variable, que sería índice de habitación, pero que se utilizará más adelante para escondernos y
mostrar nuestros techos cuando nuestro jugador se mueva
por las habitaciones. Entonces voy a nombrar el
primer índice de una habitación, y el segundo índice de pared. Y voy a promover índice de
sala para variable. No importa si
se ejecuta algunas veces. Siempre va a ser
el mismo índice de habitaciones. Y ahora tenemos que hacer un
bucle for a todos los muros array. Un bucle porque
vamos a manipular el componente de malla estática para establecer un
elemento de malla estática para ellos. No. Por supuesto,
vamos a pic mesh. Y para la malla estática, tenemos que elegir. Ahora, para que esto sea un
poco más fácil, vamos a volver a nuestro mapa general.
Tenemos de todo. Y tenemos uno, dos, tres, 45, hagamos cinco opciones. Uno, dos, tres, cuatro, cinco. Y para la c salvaje, solo
queremos conectar
el índice de muro. Llamamos índice W. Ya que estamos dentro de la
función, podemos hacer esto. Ahora vamos a arrastrar selectores aquí. Porque cuando estamos
seleccionando un tipo de pared, tiene o tres variaciones básicamente y una
variación de puerta para cada una de ellas. Oh, vuelve aquí. Voy a añadir un pin
más o pegamos co. Entonces voy a pegar. Uno, dos o cinco. Ahora, para el comodín aquí, lo que podemos hacer es
seleccionar al azar en rango, y sería 022 porque
tenemos tres opciones Voy a conectar
esto en todas partes. Y voy a hacerlo también. Entonces, ¿por qué abrí el resumen? Es sencillo porque
voy a seleccionar un muro. Voy a
encontrarla en realidad, voy a hacer click derecho. Hay una opción encontrar rosa
para actuar. No me ayudó mucho. Aquí está. Voy a ir
al activo, arrastrarlo y soltarlo aquí. Voy a ir a
la segunda pared, click
derecho, cs a asset. Yo ayudaría un poco más. Arrastre y suelte aquí,
y voy a repetir este proceso para
cada uno de los activos. Observe que no estoy seleccionando las puertas. Esto es a propósito. Las puertas se colocarán posteriormente a través de código en ubicaciones muy
específicas. Paredes de madera, Embros a activo, ros activo. Otro. Increíble cómo algunas acciones simples
pueden llevar mucho tiempo. No me preguntes por qué siempre
estoy cerrando el navegador de contenido antes
de ir a los planos Parece un hábito.
Debería estar pinchando directamente en los planos. Activo. Ahí está el
activo. Aquí está. Este 12, dos conjuntos más. Este 12, cejas dos activos,
y arrastrar y soltar. Podríamos haber
almacenado en algún lugar toda esta información, de unos arrays de ellos y simplemente
sacándolos de ahí o tablas de
datos que
serían más encantadoras
tenerlas en la tabla de datos. Pero ya sabes, no
siempre tienes lo que quieres. El trabajo se vuelve un poco más tedioso. Activos, ecuación, contenido, en la captura de pista Visión general, activo. Casi por fin terminamos, pero dos paredes más para asar. Aquí es un asado más. Todo bien. No. Antes de habilitar los techos, veamos si funciona. Pero antes que nada,
vayamos al generador Mz. Vayamos al final
de las habitaciones construidas. Seleccionemos las decoraciones, y vamos a
llamar a las paredes de intercambio. O paredes de intercambio, y
vamos a necesitar el índice. Y también vamos
a necesitar índice de muro. No en este momento. El mismo nombre y convención realmente no
importaban. Índice rom a índice de habitación
e índice de pared de pared. La razón es porque todo
esto reside en una clase completa diferente
en un plano diferente Entonces esto reside en decoraciones
BP ya que esta res
reside en generador de laberinto BP. Entonces esto no es un problema. Esto en realidad puede ser útil a
veces para tener el mismo nombre, para que sepas qué variable
corresponde a qué. Donde compilar y guardar. Volvamos a nuestro nivel de juego de
mapas. Guarde todo lo que pueda jugar. Ahora, deberíamos tener
paredes en nuestras habitaciones. Sí, lo hacemos. Tenemos algunas
paredes bonitas en nuestras habitaciones. Tenemos una habitación de madera,
tenemos una habitación de piedra,
tenemos una habitación de piedra musgosa Hay algunas brechas
por aquí y allá, pero eso es solo colocación. Si quieres tomarte un tiempo y arreglarlo, eso sería. Creo que básicamente
por lo que veo, hay que bajar un
poco las paredes y
va a estar bien me siento. En fin, vamos a
habilitar los techos. Lo que tenemos que hacer es ir
a nuestras decoraciones VP, dentro de
las paredes de intercambio, cambiar a paredes. Vamos a conseguir nuestro techo, y vamos a
conseguir visibilidad T. Y vamos a ect
colisión habilitada. Pero esta vez, vamos
a tener un pequeño truco. Mamá, en realidad de aquí. Queremos habilitar la colisión
total. Permitiremos la consulta y
no la física porque no
hay necesidad de que el
techo tenga ninguna física o alguna física de
colisión, pero queremos consulta de consulta
debido a nuestros eventos de clic. Entonces, hablando de
los eventos de click, ahora estamos empezando a entrar
en con el área de juego. Vamos a necesitar una forma
de
encender y apagar nuestros techos cuando estemos
entrando o saliendo de una habitación. Y en este caso, sólo
estoy
hablando de cuando estamos caminando dentro de la habitación. Pongo pintura justo a lo que me refiero. No me refiero mientras
estoy entrando aquí, estoy hablando de
cuando ya estoy dentro y caminando de un
lugar a otro lugar, vamos a estar cambiando azulejos. Entonces un comando debería decir que me moví un azulejo,
comanul decir algo Y el laberinto, la
habitación misma necesita una manera de saber si si me voy a
mudar la próxima vez, si no me voy a mover dentro, y va a ser el código va a
necesitar una manera de saber que todavía
estoy dentro de la habitación
y no me mudé afuera. Entonces para eso, vamos a usar una caja de colisiones extra aquí. Pongámoslo
caja de colisión. Por qué dije extra. Aún no lo hemos hecho, pero vamos a necesitar una caja para el propio azulejo le diga
al jugador en qué
ficha están. Para que podamos hacer las cosas cuando
sepamos en qué baldosa están. Va a incrementar esto. Quería ajustarse apenas
hacia los bordes. Creo que esto está bien.
Veremos en jugabilidad. Entonces, para los que son nuevos, formas de
colisión forman en todas las formas. Hay cajas de colisión, capturas de
colisión, esferas de colisión, incluso
son
formas de colisión personalizadas que podemos crear. Pero las formas de colisión
básicamente se utilizan para determinar qué sucede cuando algo está colisionando
con algo, pueden desencadenar la física,
pueden desencadenar cualquier cosa que tenga que
ver con colisiones Los hemos considerado
como disparadores, por
ejemplo, y a medida que te
acostumbras al motor real, te acostumbras más a las
formas en que los estamos usando. No. Por defecto, ya que no todas
las decoraciones serán una habitación. Vamos a establecer que estas colisiones generen
eventos de solapamiento a caídas Entonces esto no hace nada básicamente. Y vamos a
ir a nuestras paredes a. Y cuando estemos
habilitando los techos, también
vamos a habilitar los eventos de
generación de colisiones que generan eventos de superposición
hasta ahora estará activo. Ahora, antes de seguir adelante, ya que hemos hecho muchas
cosas en el generador de laberinto, vamos a la gráfica par,
no necesitamos todas estas
funciones abiertas. Voy a mover la gráfica
par a la izquierda, y sólo voy a cerrar
la pestaña a la derecha. Entonces, ahora está claro
aquí otra vez. Veamos qué hemos hecho. Empezamos por desovar
el primer estilo, creando la carga
y todo Construimos aproximadamente la
forma de nuestro laberinto. Entonces arreglamos un
poco las flechas. Ahora, copiemos y pegue
este porcentaje establecido. Pero necesitamos aumentar un poco
la carga, y empezamos a decorar. Empezamos con una disposición básica de los ladrillos y paredes
como deberían ser. Y lo que hicimos aquí fue simplemente esconder los muros
que no son necesarios. Y ahora creamos algunas
coordenadas para el elevador. Creamos algunas
coordenadas para el pecho. Encontramos las habitaciones y
construimos las paredes de la habitación. Ahora aumentemos nuestra carga. Dos, la última vez fue
0.5, digamos 5%. Un buen valor. Nosotros
hicimos las acciones, cuatro de ellas en realidad,
dos de ellas iguales. Entonces eso sería 65%. Vamos a cargar la
pantalla progresando, seleccione los cavas que Es el laberinto. Y todo lo demás es
realmente muy rápido. Pero incluso nuestro
generador de laberinto sería rápido. No tuvimos este retraso de 0.1. Entonces, vamos a disminuir. Esto
está tardando demasiado. Pero pongamos otro
cero frente a uno. Presionemos play. Tiene
tazas aquí, lo que queremos. Bien. Vamos a esconder esto otra vez. Ahora, lo que vamos a hacer a continuación no
es crear las
puertas, lo que vamos a continuación. Por lo general después de
crear las habitaciones, decimos vamos a crear las puertas. Pero aún no es el momento adecuado. En realidad, pongamos
el retraso antes de aquí. Vemos el acup un
poco mejor. No es el momento de
crear las puertas, y la razón por la que no
es el momento. Cuando estamos creando un laberinto. Ahora mismo, tenemos
todas estas áreas. Es material buggy
aquí lo que está pasando. Vamos a ver qué
pasa en la siguiente. Parece que
hay dos materiales. No veo ni dos pisos. Vamos a revisar el piso,
qué está pasando aquí. Tenemos extra. ¿Por qué tenemos? Esto no debería estar pasando. ¿Qué está pasando? ¿El techo? Sí, no aumenté
la altura
del techo. Vamos a poner. Esa es la altura de nuestras paredes, f cien, un poco
más baja que la altura máxima. Sí, era el techo. Entro, no veo nada. En realidad, no
debería haber reventado volver atrás. Sólo puedo entrar aquí
y puedo poner t. y el piso. Ahora, a lo mejor el techo
está un poco bajo. Pero está bien. Todo bien. Creo que este es un buen
punto de parada para este. Te voy a ver
en la siguiente. Adiós.
36. Puertas de habitaciones y segmentación del laberinto: Hola, y bienvenidos de nuevo al Taller de Diseño de
Juegos y motor
real cinco Procesal Dungeon Action ApS
creación Curse Anteriormente, finalmente terminamos con nuestra colocación de paredes y colocación de qué tipo de paredes y mostrando el
techo en las habitaciones? Cómo se ven más habitaciones adecuadas. Y en realidad creamos
una caja para generar eventos de
superposición cuando
el mosaico es una habitación. Y empecé a
hablar de las áreas segmentadas, pero nos interrumpió el techo que no
se bajó, se
subió, no bajó Se quedó encendido
antes de la posición. Ahora, hablemos de las áreas segmentadas de las que
estaba hablando Como pueden ver, digamos, por
ejemplo,
tenemos una habitación aquí, y sólo está
conectando con esta zona. Esta área está aislada
en comparación con las otras áreas, mientras que esta área está siendo
conectada por tres habitaciones. Esta zona ha sido
comunicada por dos habitaciones. Esta zona está conectando de nuevo
dos habitaciones. Y esta área de aquí es solo una sola área
con dos cuadras, y esta es una zona con una cuadra que conecta a una habitación. Entonces, ¿y si tuviéramos una manera de
categorizar estas áreas? Básicamente, lo que
haremos es que cualquier área que conecte
más de una habitación, consideraremos un corredor. Si conecta dos habitaciones o
tres habitaciones, es un pasillo. Si un área es individual y
se conecta a una habitación, entonces es una habitación especial, habitación
oculta,
algo así. Y la otra categoría que podemos
tener es que si un área tiene dos o tres pasillos y
está conectada a una habitación Podemos considerarlo un balcón o un borde o
algo así, que también es un área
que es más grande
que dos o tres cuadras y
se conecta a una habitación. Podemos considerarlo
un área especial. ¿Cómo vamos a hacer esto? Bueno, creo que
todos ustedes saben la respuesta. Vamos a hacer una función. Entonces vamos a dejar de jugar. Voy a cerrar
estas funciones. Ya no los
necesito. Y vamos a hacer esta nueva función. Llamemos a esta función aumentada Estas son las áreas
de ortografía Creo que deletreé las áreas
correctamente, aunque y encuentro. No, no lo hice. Agregué
un símbolo divisorio. ¿Qué vamos a hacer aquí?
Tenemos que explicar. Esta va a ser una
gran función otra vez. Vamos a abrir la pintura en realidad. Voy a ser un poco más fácil. Consideremos que
tenemos nuestro mas. Esta fijación por aquí marcó toda
la diferencia. Ahora, en este laberinto, tenemos algunas habitaciones. Y luego tenemos algunas paredes que están separando las áreas. Hazlos más grandes. A aquí, aquí, et's apagados y tal vez aquí o
aquí. Esto es un ect. Ahora, como
dijimos, vamos a separar
algunas áreas a corredores Representemos ese gris. Entonces, básicamente, esto
sería un corredor. Y esto sería un corredor
porque conecta dos habitaciones. Ahora, el naranja
sería el área secreta, y el azul
sería un balcón. Y el morado
sería un área especial
porque conecta solo a una habitación y es
más grande que dos o tres
cajas. Digamos tres. Oh. ¿Cómo vamos a hacer esto? Ahora mismo, nuestro
laberinto, nuestro calabozo, tendrá algunas paredes levantadas. Oh, lo que vamos a hacer es que vamos
a usar estas paredes. Digamos, vamos a tomar, por ejemplo, un área aleatoria. Vamos a tomar esta. Polar no es el
mejor. Redonda. Vamos a partir de aquí, por
ejemplo, y
vamos a trazar líneas,
¿qué es el trazo de línea? Una técnica utilizada para detectar
objetos a lo largo de una línea en
la palabra del juego básicamente. Implica proyectar
una línea invisible o una visible si la
depuramos desde un punto de inicio hasta un final y verificar si hay colisiones
con objetos en la ruta Esa sería una explicación
aproximada. Entonces, lo que vamos a
hacer es que vamos a trazar un trazo
de línea desde nuestro punto. Sin palabras nuestros vecinos cruzados. Pienso o algo parecido. Entonces, lo que estaremos
buscando es cuál de los vecinos está
directamente conectado conmigo. No tienen pared entre, no
tienen espacio entre en realidad era es lo
único que nos importa. Entonces, cuando hagamos eso, los
vamos a estar
agregando en una lista. Pero este vecino está bien, este vecino está
bien, este no lo es,
este no es porque
aquí chocamos contra una pared, y aquí en realidad
también golpeamos una pared, que es el fandangon externo Ahora, con esa lista, vamos a repetir
el proceso y jugar un poco con
variables y agregarlas y eliminarlas de listas para crear qué áreas
están conectadas, y con cuántas
habitaciones se conectan. Porque esta podría
no ser un área vacía, sino que es una habitación, así que necesitamos
diferenciarnos para eso. No. Básicamente, esta es
la teoría detrás de sobre
lo que vamos a hacer. Posiblemente usaremos dos
veces la frase de línea, una vez para un primer cheque, una segunda vez para
un segundo cheque, pero estaremos explicando
siempre y cuando estemos creando un largo. Entonces, comencemos. Vamos a hacer
pop esta jugabilidad. Y volvamos a nuestro generador M en las áreas segmentadas
finas Ahora, claro, de nuevo, vamos a usar las coordenadas del
calabozo, y vamos a conseguir las llaves Esta vez, vamos a estar promocionándolos en
una variable local. Vamos a llamar a esta
variable claves de mazmorra. Porque podríamos
necesitarlos en el camino
y arrastrando cables Va a ser un hussle ya que esta función será enorme e incluirá
otras funciones dentro Ahora, a partir de estas claves dngon, vamos a conseguir P. Entonces, vamos a
partir de nuestro primer índice, que sería Índice cero y
empezar a verificar desde ahí Voy a promover
esto una variable llamada Estudio, una variable local. Y conecta esto aquí. Oh, este será el punto de
partida para estudiar. Esta es la primera se. Tenemos que empezar por alguna parte. Por qué no empezar por el principio. Vamos a comprobar a
cuántos mosaicos está conectado y
cómo se conecta? Oh. Lo que vamos a hacer es también crear una variable local de
matriz temporal. Vamos a llamarlo. Ray, O. no
me gusta que esto me vaya
a Cardy Cordones uno Llamemos a este
estudio coords uno. Oh, voy a estar trayendo
esto debería ser una matriz, y calzo ser un punto en Muy molesto cuando estás promocionando algo
a una variable local. No se guarda en la
memoria porque
crearon otro contador de variables antes del cual queremos que
estés usando. Esto pasó un
poco de co, creo. Ya que estamos, vamos
a utilizar esta matriz de estudio para agregar El punto de estudio. Debido a que esta
sería la primera matriz, estaríamos sintiendo, y luego vamos a estar
probando contra otra matriz. Básicamente, vamos a estar sintiendo
esta matriz ahora mismo, siempre y cuando las trazas de líneas, por ejemplo, no golpeen paredes, realmente volvamos un
poco atrás a pintar. La forma en que
en realidad va a
funcionar será vamos a
elegir un nuevo color, vamos a elegir es rojo brillante. Sí, es que estamos
empezando por el estudio, y vamos a estar
revisando a los vecinos. Entonces esta será una de ellas. Este será el
otro de ellos. Este será uno más, y éste será uno más. Estos dos de aquí, éste, y éste,
van a ser añadidos a la lista porque
son los correctos. Entonces vamos a estar
comprobando de esta lista, donde hacen esta y
esta se conecta. Entonces básicamente se conectan
a esto, esto y esto, y vamos a
estar transfiriendo cada lista entre nosotros y probando y probando nuevamente
hasta que no pueda agregar más, y estas dos listas son iguales, y cuando son iguales, pasamos a la siguiente parte. Oh, vamos a continuar. Ahora, tenemos que hacer pruebas para los dos
primeros vecinos. Vamos a hacer
estudio, estudiar cultivable. Vamos a encontrar bs adyacentes, y vamos a pasar por
alto a través de eso La razón por la que agregamos estudio antes de hacer esto
es porque queremos incluir el estudio a
cualquiera que sea nuestro resultado, porque si no lo agregas, entonces ahora solo vamos a
empezar a buscar vecinos. No vamos a volver
a ir al primero. Entonces lo agregamos antes de
iniciar todo este procedimiento. ¿
Pertenecen los vecinos al calabozo? Entonces vamos a
hacer un mapa de contener. Y claro, el mapa
sería nuestro calabozo. Andon arriba, y vamos a
blanquear y conectar esto aquí Ahora vamos a traer nuestro rastro de línea. Trazo de línea O, por canal. ¿Qué significa por canal? Ahora, tenemos la
visibilidad del canal y la cámara. Este es un canal de colisión. Lo que eso significa es que cuando
fuimos a decoraciones, por
ejemplo, y
seleccionamos la caja, cuando vamos a colisiones
y abrimos los presets, podemos ver el
tipo de objeto word dynamic Y luego podemos ver las
respuestas a este tipo de objeto. Esto pero este tipo de objeto, pero ¿cómo
responde esta colisión al resto
de los tipos de objetos? Tipos de objetos como visibilidad, objetos como cámara,
tipos de objetos como palabra estática. Todo depende de la
configuración de aquí? Voy a ir sobre ello
un poco más en detalle más adelante cuando
estemos haciendo el juego, qué colisiones serán muy importantes sobre las huellas
y todo Ahora mismo,
solo vamos a usar el canal de la cámara porque visibilidad se utilizará
desde nuestro juego. Y como vamos a
tener algunas cosas apagadas en la colisión de
visibilidad, entonces vamos a usar cámara que siempre
va a estar encendida, como si estuviera interactuando con
cualquier línea de traza que le esté
golpeando mientras que la visibilidad, cerraremos algunas de ellas. Ahora, continuemos. Vamos a ir a
nuestro generador de laberinto. Vamos a elegir
la cámara de línea base, y necesitamos un inicio
y fin en este nodo. Entonces, para el inicio, lo que vamos a hacer es que necesitamos que tengamos las coordenadas. Tenemos que encontrar al
actor en la mazmorra. Vamos a enrollar, y vamos a
conectar esto aquí y conseguir atent
actor A esta ubicación de
actor, vamos a agregar eje A Z, así que está un poco
más lejos del piso Pongamos este 25. Está un poco
más alto que el piso, y ahora necesitamos un final. En este caso, porque el próximo
arqueado será diferente. En este caso, nuestro fin
será nuestro estudio. Porque estamos dibujando de los vecinos de los vecinos encontramos así es las
coordenadas de un vecino. Este no es nuestro estudio. Entonces estamos comenzando
en el vecino y terminando en nuestro bloque de estudio. Entonces voy a encontrar de nuevo,
voy a copiar esto. Conecta esto, conecta esto, y voy a catión, voy a copiar y pegar la altura,
para conectar esta esfera, y luego conectar esta
esfera hasta el final, y sí tenemos un trazo de línea. Ahora bien, si escribí el
tipo de error, esta opción por aquí, que nos muestra una línea, y la hago persistente y en realidad llamo a esta
función por aquí. Áreas segmentadas
después de la carga. Tenemos a la carga entonces sí, jugar, deberíamos ver esta
línea apareciendo aquí. Ahora bien, este solo tiene
un vecino válido, por lo que lanza una línea. Intenta tirarlo desde el principio desde el
vecino hasta el principio. Y como podemos ver por aquí,
aquí es donde encontró un golpe. Nos dice que este
bloque tiene una pared. Entonces en este caso, no lo
estaríamos agregando
a la lista. Ahora, creo que este es un buen
punto de parada para esta lección. Vamos a continuar
más tarde con la lógica y un poco nuestros resultados de calor
fuera, que es la forma en que estamos
obteniendo los datos que acabamos, y también el valor de retorno, que es si realmente
se calentó o no. Esto es más de lo que calentaba. Más explicaciones sobre la
siguiente. Adiós por ahora.
37. Segmentación de las áreas de mazmorra: O Hola, y bienvenidos de nuevo al
taller de diseño de juegos y al curso de creación de RPG de
acción Dungeon real Engine five procedural Anteriormente. Comenzamos con nuestra función áreas de segmento fino, que dividirán nuestro
laberinto en base a algunas reglas, los
corredores de conexión, básicamente, a diferentes tipos de áreas Tendremos, como
dijimos corredores, tendremos balcones Fuera, tendremos algunos tipos
diferentes de áreas. Entonces, comenzamos a hacer esto
agregando nuestro mapa de mazmorras, obteniendo nuestras claves de mapa de mazmorras y promocionándolas
a una variable A partir de eso, obtuvimos el primer
índice porque decidimos, ese es un buen lugar para comenzar, y lo agregamos a la matriz de coordenadas
Estudio. También promovimos
eso a una variable, que va a
ser el primer
bucle for del que vamos a
obtener los vecinos. Acerca de los vecinos, y cuando los
vamos a agregar, va a ser el de los cordones de
Estudio. Y como decíamos,
vamos a por loop y hacemos algunos trucos
para comprobar por toda la zona. Ahora bien, la forma en que estamos
buscando sobre estos azulejos que están en
esta zona están divididos por habitaciones por paredes es creando una línea tras que proyectamos desde el vecino hacia
nuestro azulejo de estudio. Y esto nos dirá si le
pegó a algo o no. Como describimos,
cuando usamos el persistente dibujar la
bolsa tipo persistente. Podemos ver en nuestro primer estilo, pero sí necesito
ubicar el estilo cero. O. Creo que al mismo tiempo que ero
se convirtió en una habitación. Posible. Antes No. Hurdas. Estoy un poco ciego. Este un mosaico cero se conecta a este y este
con un trazo de línea. Esta vez no tuve muro. Voy a
crearlo muy rápido. Yo quería tener una pared, y tiene dos paredes. Entonces estamos partiendo
del vecino y esta
es nuestra línea de deba, que se vuelve verde
cuando ha golpeado algo. Cuando obtenemos esta
cajita y se pone verde, significa que calienta algo y la caja es el indicador. Ahora, hablamos de
eso cuando usamos algunas reglas basadas en nuestro
resultado de sombrero y nuestro valor de retorno. Básicamente, sólo vamos
a usar el valor de retorno, que es, ¿golpeó
algo o no? Voy a presionar B,
conectar esto aquí y aquí, si calentaba algo, no
hacemos nada. No lo queremos a nuestras
coordenadas, la de coords. Vamos a traer esto aquí. Pulsa y voy a conectarlo a false porque
si no teníamos algo, significa que está en la misma zona, y voy a conectar
esto al elemento array. Ahora bien, de lo que quiero decir algunas cosas es
del resultado de calor. Si rompemos esto porque
es una estructura, si pasamos el cursor sobre ella, podemos ver la estructura del
resultado de calor Podemos ver que tiene
algunos datos. En realidad tiene
mucha información, no poca información. Como actor de calor, tiene
la ubicación del calor,
el punto de impacto exacto del impacto. Tiene la distancia desde
nuestro inicio hasta el calor, el tiempo que tardó desde
el inicio de la línea t carrera,
calentó algo. Y empezar a terminar,
claro, tiene mucha información. Esta es una estructura muy agradable para usar incluso para
depurar cosas, como si tienes un
sistema de depuración, que lanzas un
trazo de línea y quieres probar las cosas por Este es muy buen punto de partida para crear un sistema de depuración
por diversas razones. En fin, solo
quería mostrar esto básicamente que hay
esto, esto es una estructura. Tiene tantas variables
que nos puede dar. Ahora, continuemos con nuestro Algoritmo. Como dije, vamos
a necesitar una nueva matriz de cordones de estudio para poder comparar
entre cada uno de ellos. Si hemos archivado todas las posibles coordenadas de la zona determinada
que estamos comprobando. Voy a crear
una nueva variable. Voy a ser
del tipo punto. B aquí. Voy a nombrar a los ds Esta convención de nomenclatura no
es la mejor, pero lo hacemos por ahora Oh, nuestro siguiente paso es
promover nuestros Cuerdas de Estudio uno, dos cordones dos. Voy a conectar esto aquí. Lo que tenemos que hacer
es similar a esto. Voy a copiar y
pegar esto. Nosotros aquí. Y lo que necesitamos primero,
otro for loop. Esa apuesta porque
queremos pasar por cada
uno que encontramos, como vimos aquí, hubo casos en los que estábamos agregando
uno, estábamos agregando dos, o podría haber
casos en los que
incluso estamos agregando cuatro ubicaciones. Queremos pasar por
todas estas ubicaciones, y luego para cada una de ellas,
verificar por los vecinos. Necesitamos este bucle extra de cuatro, y esto se convierte en un lío cuatro. Esto se convierte. De todas formas. Ahora, tenemos que cambiar
un poco las reglas. Por supuesto, necesitamos un inicio y final igual como
del vecino al de estudio actual. Y el estudio actual es el que estamos obteniendo el resultado de este
cuatro bucle de aquí. Voy a conectar un poco este
punto. No. Como dije, necesitamos
algunas reglas extra, y la regla extra
sería ¿Estudio uno contiene alguno de los
vecinos que estamos revisando? Porque si está conteniendo, no
deberíamos agregarlo de nuevo. Entonces, voy a pedir
estudio uno contiene m Esto fuera esto por aquí. A traerlo aquí. A lo mejor aquí vamos a hablar. Que sea un poco claro
las líneas están conectadas. Uno. Sí, son espaguetis. Siempre es un poco de espagueti. Puedes pasar más tiempo y
hacerlo más visible, más claro a la vista. Pero creo que si
entendemos la lógica
de lo que estamos haciendo, entonces va a ser más fácil. Ahora, voy a necesitar
otra condición aquí, no condición, un nodo, que va a ser el m. Lo usamos antes, lo que
significa que si cualquiera es dos. En realidad, no
queremos el aquí. Queremos ser si está en
el calabozo, continúe. Necesitamos una segunda sucursal en realidad aquí, vamos a hacer algo de espacio. Entonces la segunda rama sería si ya pertenece a las coordenadas, no
hagas nada. Queremos el pulso de éste. Voy al pulso aquí. Voy a
desconectar este pulso, y conectar esto
porque a partir de esto, queremos hacer esta
pregunta por aquí. Está bien. Estas cosas paginaron. En fin, vamos
a estar manteniendo las coordenadas de estudio una ya que califican que
estamos agregando algo Y cuando todo este
orop haya terminado, vamos a estar comprobando Si la longitud de nuestras cuerdas dy uno es igual a las cuerdas de estudio
dos. Ahora bien, ¿por qué hacemos esto? Porque si aquí, agregamos
algo a esta lista, y Ady Cords dos no
estaba completa. Agregamos algunas piezas nuevas. No, hagámoslo. Rancho y pregunta, ¿
nuestro Ady coords dos de longitud es igual al Study Cords uno? Oh, si no es igual, vamos a este uno o dos. Como nada en ella. Y lo que en realidad
vamos a hacer es el mismo bucle. Vamos a estar
agregando el Cordones uno, dejándolo en los Cordones dos. Entonces vamos
a comprobar si podemos agregar algo al de coords uno Y si añadimos algo, entonces irá una y otra
y otra vez hasta que termine. Creo que este es un buen
punto para este. Te voy a
ver en la siguiente. Adiós.
38. Finalización de la mecánica de segmentación: Hola, y bienvenidos de nuevo
al taller de Diseño de Juegos, Real Engine five Procesal Danson Action ARPC
Creation En la última lección, continuamos con nuestra función de áreas
bien segmentadas Creamos los
Cordones de Estudio dos Variables, los cuales promovemos
nuestros Cuerdas de Estudio. Y luego nosotros para todos
nuestros Cuerdas de Estudio uno. Se revisan todas las áreas
que hemos agregado. Ahora, revisamos estas zonas por el noreste oeste
sur, todos los vecinos, y preguntamos si
pertenece a la mazmorra o si ya está
contenida en el Estudio uno Después, hicimos
nuestro sistema de líneas de rastreo que estamos comprobando si
chocamos contra una pared o no. Y si no lo hacemos, agregamos
estos cordones al Estudio uno. Cuando termina el bucle cuatro, el primer bucle cuatro, lo
que significa que ha completado todas las coordenadas del estudio uno, estamos comprobando si nuestras dos coordenadas de
Estudio son iguales a Estudio uno, porque antes de hacer esta
acción para agregar cosas nuevas, promovimos las de estudio
a las dos coordenadas de Estudio Ahora bien, si esto era Cuando
esto era falso, no es cierto. Mi mal. Despejamos Estudio dos, y lo restablecemos para que sea
igual a Estudio uno. Entonces intentamos nuevamente agregar
para estudiar una nueva coordenadas, y si no hay
nuevas que agregar, continuaremos ahora
con la parte verdadera, que es cuando Estudio dos
es igual a Estudio uno, y significa que
no tiene más coordenadas. Lo primero que necesitamos es
crear otra estructura como el array de habitaciones ST
que contendrá las coordenadas para
nuestras áreas segmentadas Pero como va a ser
del mismo tipo de estructura, va a ser solo
una estructura que tenga una matriz de coordenadas, una matriz de puntos finales. Podemos usar la misma estructura. Así que puedo pasar la matriz de habitaciones
ST y
llamarlo ST todas las áreas. Y va a ser del tipo
variable habitaciones ST, que podemos renombrar, pero dejémosle habitaciones ST, que es como dijimos, una matriz de coordenadas. Voy a traer esto aquí,
y voy a presionar add. Ahora, voy a
conectarlo a. Hablemos de este nodo de aquí. Esto necesita una estructura. Antes hicimos una estructura, y dijimos que en realidad podemos dividirla y agregar las
coordenadas aquí. Ahora mismo,
vamos a hacer esto. Solo vamos a
dividirlo y agregarlo así porque sí funciona, pero es mejor a toda
la ruta de hacer una estructura y agregarle miembros si eres
muy nuevo en las estructuras. Si tienes experiencia
con ello y sabes cuándo funcionan las estructuras, podrías hacerlo cuando
sea necesario disponible. La razón que estoy
diciendo es porque las estructuras pueden crear problemas. Por ejemplo, si voy y cambio algunas cosas
en la estructura, entonces muchos nodos como
este necesitamos reconectarnos Porque cuando lo he
dividido aquí, no siempre
actualizará las variables. Yo recombino,
tenemos la estructura, y si agrego algo
a la estructura, voy a la variable
de la estructura y le
agrego algunas variables más, y esto podría tener un problema Voy a
dividirlo, y voy a traer uno
a nuestros coords de estudio Y lo voy a conectar aquí
porque los
cordones de estudio uno y los
cors de estudio dos son ahora iguales Pero esto va a estar creando
una lista básicamente de nuestras áreas segmentadas como
lo hizo para las habitaciones Ahora bien, lo siguiente que
voy a hacer es que voy a despejar una de las coordenadas de estudio Y ahora tenemos que continuar con la comprobación del
resto de las áreas. Porque como lo hicimos ahora, partimos del bloque de
estudio cero, y comprobamos, cuántos de los mosaicos están conectados
al bloque de estudio cero. Primero, comprobamos si
están conectados,
verificamos para más. Vamos a jugar si
conseguimos un ejemplo. En S, mapeó todo
el estudio, uno, todas las coordenadas
desde puntos cero que no
están conectados que no
están bloqueados por habitaciones, por muros o habitaciones. No, tenemos que hacer esto
por el resto del laberinto. Para hacer esto,
en realidad vamos a volver a ejecutar todo esto aquí Pero primero, necesitamos
crear un verificador. ¿Me quedan más
lugares para estudiar? Porque si todos los
lugares están mapeados, entonces esta cosa debería dejar correr. Bien,
vamos a crear eso. Lo primero que necesitamos
son nuestras llaves de mazmorra, y vamos a tirar de
bucle a través de cada una de ellas. En realidad, porque esto es
algo que va a ser una regla que queremos comprobar si vamos a
ejecutar esto de nuevo o no. Esto sería y debería
ser o con descanso. Porque aquí vamos a
seguir la misma lógica. Vamos a usar una variable. Voy a crearlo en local, va a ser tipo b, no va a ser una R
va a ser soltero. Llamemos a esto pertenece. Si pertenece,
¿entonces a dónde pertenece? Si pertenece a las reglas
que vamos a crear. Y cada chequeo que estamos haciendo es pertenecer a las llaves del calabozo, entonces significa que ya terminamos Significa que hemos
revisado todas las áreas. Si no pertenece
si algún cheque de aquí no pertenece
a ninguna de nuestras reglas, entonces significa que
tenemos que ejecutarlo de nuevo, o el elemento c A,
la ordenanza determinada. No, voy a conectar
eso pertenece aquí, y voy a dejarlo para que se
ponga a caídas porque cuando
comencemos a verificar todas
las variables, aquí es donde queremos que
esté apagada o cada variable. Vamos a necesitar otro o cada bucle con break,
vamos a conectarlo aquí. Y ahora necesitamos la
variable que ha creado el ST todas las áreas. Porque vamos a comparar ¿esta llave de mazmorra
pertenece a alguna de las áreas Si no pertenece
a ninguna de las áreas, como decíamos,
vamos a reiniciar esto. Vamos a rastrillar
la estructura, que son las salas ST, y vamos a preguntar si alguna de estas matrices
contiene directamente, no
necesitamos para bucle para cada una de estas y
omitir que contiene Podemos preguntar directamente esta matriz contiene el valor original. El valor del estudio actual. A lo mejor. Oh, voy
a poner una sucursal aquí. Voy a poner
aquí, y poner aquí, y luego, vamos a
establecer pertenece a la verdad. Entonces esto significa este
valor que estamos comprobando, ya pertenece a un área. ¿Vamos a romper? Y continuar con una pregunta que
¿le pertenece? Porque tal vez en este cheque, terminamos con todo lo falso. Lo que estamos comprobando
no pertenece a ninguna zona. Existe la posibilidad no sólo de
pertenecer a no
pertenecer a una zona. Esto podría ser una habitación. Ya que estamos revisando todas las
llaves del calabozo Y si se trata de una habitación, siempre activará
caídas a todas las áreas. Entonces tenemos que pedir que
pertenezca a una habitación. Y aquí vienen las
coordenadas de todas las habitaciones que
almacenamos en una matriz. Entonces no tenemos que ir no
tenemos que hacer esto en realidad. Si tuviéramos todas las áreas
también en una matriz, podríamos preguntar si está
conteniendo Pero me parece más adecuado en este momento,
más tutorial, como, si se quiere,
tenerlo como hornear ST y familiarizarse con el uso de estructuras
en una matriz Vamos a preguntar
si se está quejando. Y vamos a poner una rama, y si esto es falso, no es cierto. Por supuesto, necesitamos obtener las coordenadas actuales.
Nosotros lo hemos hecho. Y ahora, lo único que nos importa es que si
esto no es cierto, si no es cierto,
vamos a
agregarlo para que sea el estudio actual. Y cuando encontremos bloque para estudiar, deberíamos estar rompiendo nuestras llaves de
mazmorra para encontrar el estudio Bajar en realidad un poco. Un error, sí necesitamos
algo a la verdad. Sí necesitamos que eso
pertenezca a ser verdad. Entonces nosotros tampoco
necesitamos conectarlo. Solo tenemos que darle la vuelta
porque cuando salimos
del bucle principal, cuando salimos de nuestro bucle de llaves de
mazmorra, necesitamos preguntar si pertenece Vamos a usar una sucursal, y vamos a ir a pertenecer. Si pertenece, B si ya
no pertenece, como dije, tenemos que
volver a ejecutar todo el asunto. ¿Y cómo lo vamos a hacer? Vamos a arrastrar
un sable enorme desde s hasta el inicio de nuestro add Agrega las dos las llamadas, que en realidad, voy
a desconectarme de aquí, solo conéctalo
así. Compilar y guardar. Ahora bien, este bucle todo se ejecutará hasta que termine todas las áreas. Probemos si funciona, comencemos. Y todas las áreas están
segmentadas ahora mismo. Tienen sus propias flechas. Y tenemos categorías. Casi tenemos categorías.
Los tenemos en una lista. Pero lo siguiente que debemos
hacer es crear
algunas reglas a partir de esa lista
para definir nuestras áreas. Pero eso es algo. Vamos a partir
para la siguiente. Adiós por ahora.
39. Categorización de áreas por tamaño: Hola, y bienvenidos a
Game Design Workshop y real Engine five procesal Dungeon action RPG curso de
creación Anteriormente, creamos
terminamos con el bucle de áreas de
segmento de pino. Creamos la parte que
estamos almacenando todas las áreas en una variedad de habitaciones ST fcture Y creamos un
mecanismo para verificar si alguna de nuestras llaves de mazmorra pertenece a alguna de las
áreas que acabamos de crear, o pertenece a una habitación Si no lo hace, significa que
todavía tenemos cosas que verificar, y vuelve a ejecutar
todo el algoritmo. Ahora, lo nuevo que necesitamos es
categorizar estas áreas. Y Sorpresa sorpresa,
vamos a necesitar una nueva función para esto.
Vamos a crear una función. Llamémoslo carros áreas. De hecho, llamémoslo
encontrar áreas de segmento. Vamos a entrar en él. Ahora, lo primero que vamos a necesitar es pasar por
todas nuestras áreas. Entonces voy a conseguir
el ST o áreas, y voy a bucle. Digamos que es una estructura, tenemos que romper. Ahora, hazlo fácil para nosotros. Tenemos una regla simple
de cuántos bloques, cuántos azulejos es cada área. No, podemos obtener la
longitud de esta matriz, las coordenadas
de habitación del área, y podemos promover
la habitación en realidad a una variable local que
vamos a llamar. Y aquí lo vamos a
conectar. Y de nuestra longitud,
nuestra longitud entera. Vamos a que
int porque
nos da ¿cuántos azulejos
tiene esta zona? Oh, vamos a tener una
regla para no cero fichas. No necesitamos el azulejo
cero en realidad. Vamos a tener para
uno, dos o tres. Y vamos a eliminar el cero. En realidad, para eliminar el cero, que puede iniciar el índice de uno. Y vamos a quitar el
o cuando esté por encima de tres, ¿cómo va a
encender esto en reaccionar? Se ejecutará el cable por defecto. Aquí dentro, vamos
a dejar el valor por defecto. Si quisiéramos reglas más especiales, podríamos haber hecho
un interruptor en int y especificar los AC que queremos por aquí. Por ejemplo, no
querríamos cuatro, necesitaríamos ocho,
querríamos otros números específicos. Ahora, comencemos con nuestras
reglas para áreas de una baldosa. Entonces, lo que necesitamos es primero
verificar si nuestro ese caso, que es una matriz,
que no importa. Aunque sea uno,
vamos a obtener la primera copia, que es cero, que es la única copia cuando
tenemos una longitud de uno, y vamos a romper esto. Ya que es un punto, es una
estructura de dos enteros, y vamos a comprobar
si son iguales a cero Aquí vamos a
usar la bola final, lo que significa que ambos tienen que ser ciertos para que esto se desprenda a través. Vamos a poner una sucursal,
vamos a conectar esto, y vamos a conectar
la sucursal al número uno. Es esto, tomamos espacio de libido, podemos aumentar la altura
libit pero podemos trabajar aquí Ahora bien, ¿cuáles son las posibilidades
de tener una cuadra? ¿Qué podría ser esto? Entonces, esto podría estar dolorido.
No necesitamos este. Tú. Corteza. Y o. ahora, digamos que tenemos un
bloque aquí, un azulejo aquí,
un azulejo aquí , un azulejo aquí, un azulejo aquí,
en realidad, haz eso. Voy a hacer
la grilla maravilla. No. Digamos que tenemos
una habitación por aquí. Entonces tenemos algunos muros aquí, y tenemos otra
habitación por aquí Este estilo de aquí podría estar conectando esta
habitación con esta habitación. Se trata de un corredor. El otro
caso que podríamos tener es que, digamos, por ejemplo, no conecta con esta sala. S. Entonces este es le aquí. Entonces podemos llamar a esto
una habitación oculta. Tengámoslo en una
opción especial por sí solo, como un azulejo que está
conectado a una habitación, y no conecta con
nada más. Y la tercera opción
sería el azulejo de inicio, no conectando nada y
siendo como una habitación oculta, que no queremos
que sea una habitación oculta. Es una ficha inicial. Entonces es por eso que estamos
comprobando el primer mosaico aquí. Entonces, si es el primer mosaico, deberíamos agregarlo
a una nueva categoría, una nueva matriz de estructura de
sala ST. Va a duplicar todas las áreas. Y voy a todos
estos corredores S. Se trata de corredores ST. Voy a borrar uno de ellos. Pasillos SD, y
voy a traerlo aquí. Si esto es cierto,
voy a agregar nuestro estudio. Voy a dividir, y
voy a traer estudio aquí, y seleccionar conectado a true. Ahora bien, si vamos y pres
jugamos, podemos ver que hay bloques que tienen flechas
hacia las habitaciones Pero el primero,
no en este caso, porque continuó a partir de aquí, así que 012 en realidad esto es seis, adivinando, quién está Sí. Continúa en
línea recta. Entonces pero hay veces que
tenemos las flechas están
apuntando hacia habitación, aquí, tenemos un ejemplo perfecto. Esta loseta conecta ambos lados. Entonces tiene ambas flechas. Si se tratara de una habitación oculta, solo tendría una baldosa. Sería más como éste. Tienes el único
punto de flecha hacia la habitación, y sería un diáfano
Entonces tenemos estas flechas, podemos decidir si nuestros casos de estudio de un azulejo son
conectores o una habitación oculta No. No te detengas. Hay un mensaje de error. ¿Cuál fue el mensaje de error? Añadir entrada de movimiento. Controlador de arriba hacia abajo. Bien, esto es porque no hemos arreglado el mando para el
juego y todo. Arreglaremos esto más adelante. Ahora bien, lo que necesitamos es
este valor de aquí, nuestro estudio de caso, y necesitamos
las direcciones de la baldosa. Oh, lo vamos a encontrar
en nuestro calabozo. Mapa de estiércol. Y ahora
tenemos al actor. Y del actor,
podemos obtener nuestras indicaciones. Yo me salen los valores. Vamos desde el lado de los
valores esta vez. Podríamos hacerlo desde
ambas direcciones. Lo que realmente
necesitamos son los valores porque no nos importa si es
nororiente sur u oeste. Nos importa cuántas de
las flechas son visibles. No nos importa si por
la dirección de ellos. Ah, para contar cuántas flechas, voy a usar un contador. Voy a crear
una variable local, voy a llamarla
contador contador local. Y va a ser
del tipo entero. Y cuando voy a ejecutar
mi bucle de cuatro en los valores, quiero que empiece desde cero. Voy a ponerla a
cero antes del bucle de cuatro. Voy a por cada bucle.
Y conecta esto aquí. Y la pregunta sencilla es, ¿cuántos de estos y
cuántos no? Voy a poner una
sucursal para conectar, y voy a poner mi contador
local dos más uno. No cuando esto termine,
voy a preguntar con una sucursal. Es mi encuentro uno. Porque si no es
uno, es un corredor. Voy a
conectarlo para agregar un corredor. Si es uno, entonces
es una habitación oculta. Voy a duplicar
los pasillos, la variable y
nombrarla en habitaciones Voy a traer
esto aquí. S agregar. Y voy a agregar a esta
estructura matriz de arrays. O variable de estudio. Y ahora hemos categorizado todas nuestras habitaciones de una sola baldosa para que sean pasillos
o habitaciones ocultas Creo que este es un buen punto de
quiebre por ahora. Bueno como tú en la siguiente. Adiós.
40. Reemplazo de piso por categoría: Hola, y bienvenidos al taller de Diseño de
Juegos, y Real Engine cinco procedimientos Dungeon action BZ llamadas de
creación Anteriormente, terminamos con nuestra categoría de habitaciones de azulejos uno. Se utilizó el estudio que
creamos al principio, que es la matriz D de
coordenadas dentro de nuestras áreas STO. En este caso, este estudio
solo tiene una baldosa ya que estamos comprobando la longitud
y cambiando entre ellas. Y como tenemos este azulejo, estamos comprobando si
es el primer azulejo. Si es el primer mosaico, lo
estamos agregando
a nuestra coordenada a nuestra matriz de corredores,
array tract Y si no lo es, estamos comprobando si es un bloque que tiene
una o más salidas. Si tiene más de una
salida, es un corredor. Si solo tiene una salida,
es una habitación oculta. Ahora, continuemos con las estructuras de dos y tres
longitudes, lo que significa que estas áreas tienen sólo dos o tres tejas. Dijimos, vamos
a hacer una
categoría especial para estos azulejos, que se va a
llamar balcones. Y no es sólo que
hay dos o tres largos porque, por ejemplo, jugar,
podríamos tener suerte y
obtener este ejemplo. Ch. Bien. Ya ve éste. Este conecta
En realidad, no lo hace. Simplemente conecta una habitación. No, conecta dos habitaciones. Conecta una puerta
aquí y una puerta aquí, y esto está al final. Ya que está conectando dos habitaciones, y es un azulejo de tres tamaños. No debería ser un corredor. No debería ser un balcón.
Debería ser un corredor. Aquí, tenemos una habitación secreta, y su balcón
sería éste, como una habitación que se conecta a
dos azulejos y por una puerta, y están conectando
a nada más. En nuestra regla fijada para los dos, tenemos que
hacer también la pregunta. ¿Conecta
más de una habitación? En este caso, este
mostrador local no sería suficiente. Y si estamos comprobando
si es justo lo siguiente, en realidad, vamos a
mostrarlo en acción. Entonces lo que vamos a
necesitar es un nuevo contador, llámalo local ahora. A. Y vamos
a empezar limpiando esta matriz. Aún
no es una matriz. Tenemos que seleccionarlo aquí
dos conjuntos a una matriz. S cambiar el tipo de variable. Vamos a conectarnos con n tres. Por qué estamos limpiando Porque cada vez que corremos por una nueva área SD, queremos que esto se reinicie. Oh, vamos
a conseguir nuestro estudio, y vamos a
flop para cada Ahora, vamos a encontrar
cruz adyacente. Lo que quería
decir antes es que cuando estamos
buscando css adyacente, podríamos estar revisando la misma habitación más de
una vez como dos cordones. Dos azulejos podrían estar
yendo en la misma habitación. Oh, para comprobar esto. Lo que vamos a hacer
es que vamos a para cada bucle de los
adyacentes. Entonces vamos a
revisar a los vecinos. Si pertenecen a una habitación. No, en realidad vamos a hacerlo, si contiene ahora mismo porque no podemos hacerlo
con nuestros puertos de todas las habitaciones. Porque si hago un
contenedor aquí, Ray. Qué contengo aquí. Quiero saber qué habitación
está siendo contenida. Oh, necesito la habitación uno, habitación dos, la habitación tres variables. Y esta es nuestra ST, todas las habitaciones. Habitaciones ST ray. Necesitamos nuestra estructura porque nuestra estructura tiene que
esta es la habitación uno. Esta es la habitación dos,
esta es la habitación tres. Así que vamos a hacer un bucle. A partir de esta de aquí. También. No estamos en bucle
desde las habitaciones. Se revisan los adyacentes
porque esto solo nos
da cada cuatro bucle
aquí serán cuatro veces. Como corriendo para cada estudio, éste dará como resultado
dos cálculos más. Creo que vamos
a romper esto. Y ahora podemos comprobar si
estas coordenadas están siendo contenidas en alguna matriz
de las habitaciones ST. O iban a b contener. A ellos les gusta esto aquí, pueden usar una sucursal para comprobar
si esto es cierto o no. Ahora, la nueva parte
viene justo aquí. No solo agregaremos a
esta matriz, el índice, que hace referencia a
qué número de habitación es
porque el índice 12345 corresponde
a nuestras habitaciones 12345 Lo que queremos hacer es único. Esto significa que
si la habitación ya
existe en esta matriz, no la volverá a agregar. Voy a corregir esto aquí. S por alguna información extra, si esto fuera un conjunto, que es esto otra vez, podría
haber dicho esto antes. Si esto fuera un conjunto, solo
agregaría único. Esa es la regla de los conjuntos. Pero las matrices son más manipulables. No necesitamos nada más. Pero cuando todo esto esté terminado, vamos a pedir una sucursal. Si nuestra matriz de contadores locales es la longitud es mayor en realidad
es igual a uno. Porque si preguntamos si es uno, entonces cubrimos cualquier otro. Posibilidades. Si es
uno, es un balcón. Sólo se conecta a una habitación. Si se conecta a
más de uno, es corredor. En el cuarto ramal,
vamos a traer corredores ST. Vamos a añadir.
Vamos a dividir esto y traer nuestro estudio. Si no necesita
una nueva variable, dupliquemos la de
habitación oculta. Está bien. La misma estructura. Es una
variedad de estructuras, habitaciones ST. Vamos a nombrar a
estos balcones ST. Entonces vamos a
agregar A siguiente estudio. Y esto definirá nuestras áreas a las que llamamos balcones
basados en nuestros gobernantes. Ahora, para el resto de las áreas, vamos a hacer
exactamente lo mismo. Pero con una diferencia, si están conectados a uno, ya no son balcones. Son grandes áreas que están
conectadas a una habitación. Pero
les vamos a llamar zonas aisladas. Yo solo voy a copiar y
pegar esto a continuación, voy a conectar
el pin predeterminado, que corre con cualquier cosa por
debajo de uno o por encima de tres. Y vamos a eliminar
estos balcones ST. Vamos a duplicar
un balcón variable, llamarlo ST o áreas relacionadas. Y vamos a
traer esto aquí. Entonces, las áreas que están
conectadas a una sola habitación, son áreas aisladas
cuando son lo suficientemente grandes. Y los que no
son nuestro coordinador. Pero todo lo que hemos
hecho ahora mismo son datos. No hemos cambiado
nada visualmente. Si vamos y todos y jugamos. No vamos a ver ninguna
diferencia, nada cambia. Pero hemos almacenado los datos que necesitamos para que las cosas sucedan. Entonces la siguiente función
que vamos a necesitar en el generador de laberinto sería
después de categorizar las áreas, insinuarlas, hacer
algo con ellas. Y eso sería para
nosotros sumar nuestros pisos. Vamos a crear
una nueva función. Vamos a
llamarlo agregar pisos. Al agregar pisos, quiero decir, vamos a cambiar el
material que tienen porque el mese estático
seguirá siendo el mismo. Por ejemplo, comencemos
con las habitaciones ocultas. Vamos a conseguir
nuestras habitaciones esten. Vamos a cada bucle. Por cada
habitación oculta que tengamos, vamos a encontrar al
actor Mac Dungeon Y. Necesitábamos
romper esto primero. Porque esta es la estructura. Esta es una matriz de fracturas, aunque tenga una habitación, es una matriz de un índice. Vamos a para bucle a
través de este índice, o en realidad podemos ya que
sabemos que es un índice, en realidad
podemos obtener el índice cero, entonces podemos encontrar nuestro calabozo Dungeon,
obtendremos piso estatal. Nosotros lo nombramos. Y material de fraguado. Para bucle.
Intentemos en esto un
poco, que sea compacto. Elemento cero porque nuestro
piso tiene un solo elemento, y este es el que
queremos cambiar. Que sería para
los cuartos de calefacción. Que se podría seleccionar. Vamos a nuestras mallas de ático. Busquemos uno
que se vea bien para a. este. Con la lava. Hagamos
habitaciones iden que cubran lava. De hecho necesito
establecer la malla estática. Lo siento, no el material. No, voy a establecer malla de
ático porque tenemos
diferentes mese estáticos. No sólo un material. Y voy a mover esto
aquí. Ahora, vamos a jugar. Tener una sala de sanación
que no mintiera. El motivo posiblemente como siempre, tengo un anuncio el add floor aquí. El compilar y guardar de nuevo, y tenemos un iden
que es el elevador Ahora bien, ¿por qué sucedió esto? Ser Las áreas categorizadas. Nosotros no aquí sí
pedí la primera habitación, pero la identificación pregunta si
contenía las áreas especiales. En nuestro elevador, nuestros perímetros de
habitación, nuestros perímetros de habitación no
son áreas especiales Pero lo que tenemos que
hacer es agregar aquí o Si es la primera
habitación o Estudio uno está contenido R A
áreas de ternera, azulejos de ternera. Debería ser un corredor. Así que vamos a compilar y guardar de nuevo. No hay habitaciones ocultas. Una vez más. Bien, aquí tenemos dos de ellos, tenemos uno aquí que
conecta con esta habitación, y tenemos uno aquí también
que conecta con esta sala. Oh, creo que este es un buen punto de
sopping para este. En la siguiente,
vamos a seguir basando los
pisos en cada estilo, y algunas cosas que tienen algunos problemas como
este y arreglarlos. Porque necesitaremos
arreglar algunas cosas. Por ejemplo, tendremos que
agregar algo a nuestro laberinto sobre esta parte aquí.
Pero yo estoy haciendo una digreción. Adiós, verte
en la siguiente.
41. Categorías de habitaciones ocultas: Hola, y bienvenidos al Taller de Diseño de
Juegos, curso real de Engine five
Procesal Dungeon creación de RPG de
acción Anteriormente, terminamos
con nuestro generador, no nuestro generador, sino nuestras áreas
categorizadas funcionan. Pero agregamos
las reglas del balcón al verificar cuántas habitaciones cada
estilo es centavo dos, y creamos una matriz
con matriz de contador local, lo que agregamos un valor único, lo que significaba que si ya se
agregó
el índice, si, por ejemplo, ya se agregó el
número uno, no se
volvería a agregar cuando estemos
revisando otras fichas. Si no se conectaba
a más de una habitación, sería un pasillo, y si estuviera conectando
solo a una habitación, sería un balcón. E hicimos lo mismo para
categorizar para áreas
aisladas y pasillos para habitaciones que son
más grandes que tres También iniciamos la función
para agregar los pisos, y agregamos la malla oculta del ático del
piso, y ahora vamos a
continuar con los siguientes. Oh, comencemos con balcones. Vamos a necesitar
para cada baja otra vez. Vamos a necesitar
nuestros balcones et. Y tendremos que
romper el resultado. A partir de este resultado, sí
necesitamos foop porque ésta era
sólo una variable, una coordenada, así que obtenemos cero, pero para aquí, tenemos que
pasar por todo eso Así que para cada bucle,
así aquí, y luego vamos a encontrar en nuestro t realmente podemos
copiar exactamente esto. Ahora, conectemos. Para el piso, vamos elegir si no
teníamos balcones. Teníamos uno de tierra. Piensa que es bueno para balcones. Aquí está, este
combinó A B tres A, da6b. Increíble. Vamos a hacer exactamente lo mismo
para el siguiente, que sería vamos a
conseguir zonas aisladas. Bueno, ahora para las zonas aisladas, no
seríamos exactamente lo mismo porque no queremos que
tengan mantequilla. Queremos hacerlos un
poco más especiales. A lo mejor al final de ellos
en un autobús o algo así. Lo que vamos a hacer es
hacer una selección aquí. Para el índice, vamos
a hacer un rango aleatorio. Yo 23 pisos de ellos? A. Piensa seguro que deberíamos
usar algunos aquí más f aquí. L et's acaba de poner piso.
Tenemos algunos normales. Normales y llamas, como los pasillos normales,
pero es Hablando de corredores. Hagamos los pisos del pasillo.
Voy a traerlos. Aquí. Aquí están los pasillos. Bien. Nosotros comenzamos con
el material del piso. Entonces nos saltaremos este paso. No necesitamos hacer corredores. No hay razón
para agregarlo de nuevo. Pero sí necesitamos hacer las habitaciones. Puertos perimetrales. Podríamos ir todas las coordenadas en realidad, y podríamos por Esto es coordenadas. No tenemos descanso. Podemos copiar y pegar
esto directamente aquí. En directamente. Para las habitaciones, sí
tenemos piso de madera. Este Y. Así combinó BC D siete o tres. Códigos nucleares. Y creo que
terminamos con los pisos. Compilamos Ave.
En realidad podemos vamos a crear, eso es demasiado lava. Mucha lava. Tanto. No tenemos
balcón aquí ni aquí. Tenemos un balcón por aquí. Bien. También necesitamos
cerrar la base. Entonces vamos a ir
a un generador. Vamos a ir a
categorías, áreas de segmento fino. Vamos a ir a nuestras huellas de
línea y eso n. volvamos a nuestros pisos. Haz los de lava. Oh, bien. Por eso porque
me refiero a cero, M cero, pero hago menos posibles
las de lava. Agrega un extra, para
seleccionar piso nuevamente. Aquí se pone 0-3. Los de nivel son un
poco más raros. Sí, eso se ve bien. ¿Qué pasó aquí? Oh,
esta es una habitación especial. Por eso Y
creo que nuestros pisos son. Ahora que esta parte está terminada
con la categorización de áreas, et áreas categorizando y
agregando los pisos para ellas, debemos avanzar en nuestro Digamos que este es
otro que no sé. Pongamos 7.72. Sólo por el bien de ello. Y nosotros sí retrasamos Nuestra barra de
progreso en esta parte, 0.1 en esta parte, va en ank por pedazo Se mueve porcentaje de la misma. Si quisiéramos ser un poco más agradables
visualmente, podríamos haber hecho una línea de tiempo
para aumentar de la corriente al
porcentaje que queríamos. Pero eso son visuales por
el bien de los visuales. Entonces sigamos con la
creación de algunas puertas. Porque ahora mismo, realmente no
podemos movernos
de una habitación a una. Ni siquiera podemos empezar
desde el principio. Es solo puertas. En ninguna parte. Como dijimos, necesitamos
algún código para hacer eso. Tenemos que definir donde nuestra puerta debe todo nuestro laberinto ¿Primera habitación? Pensé que era un escondite
que no consiguió el piso, pero es el baño. Oh, lo que vamos a usar es la dirección de la flecha para crear una puerta a cada habitación
desde su segmento. Y el Por ejemplo, este segmento conecta a
esta habitación muchas veces, pero sólo una vez
debería tener una puerta. Este segmento
se conecta a dos habitaciones, se debe crear a ambas habitaciones. Una puerta. Esto debería ser crear. Se
conecta a esta habitación también. Es por ello que
no es un área especial donde esta es
una zona especial. Demasiado fuego. Pero sí tener algunas áreas sería solo
fuego también estaría bien. Oh. Vamos a crear nuestra función para crear
las puertas ocultas. Las puertas ocultas del área de la habitación. Vas a necesitar
función. Vamos a llamarlo. Ella luego se va Lo primero que necesitamos para este
son los cuartos ocultos. Vamos a conseguir esto.
Voy a pasar por todas las cuatro pulgadas. Bucle. Vamos a romper
la estructura. Tenemos que encontrar en nuestro
calabozo, coordenadas. Voy a conseguir una copia de
cero porque es un le tile. Para encontrar mazmorra. Y a partir de aquí, vamos a obtener indicaciones. Y desde las direcciones,
vamos a conseguir las llaves. Esto al cuerpo de flujo, hazlo un
poco más compacto. Quiero saber en qué dirección tengo una
flecha que apunta a la pared. Este caso sería fácil de
hacerlo porque solo tenemos una dirección que tiene pared,
una pared de habitación, y todas las demás direcciones
son escombros bloqueados, otras cosas que
no están conectando a ella. Entonces hacemos un bucle esto para cada bucle. Vamos a enrollar el valor con el
índice cuando sea cierto. Significa que es el
único que tiene una flecha, lo que significa que tenemos pasaje. Oh, es una puerta. Vamos a promover esto a un variabl local llamemos a
esta dirección variable local Y ahora tenemos una
dirección en la que nuestra habitación centavo teja
como puerta de. Oh, en esta baldosa, vamos a conseguir Queremos que los cinco vecinos lleguen a encontrar el adyacente y
de este adyacente, queremos la dirección actual
desde nuestra dirección. Vamos a traer
esta variable por aquí. Vas a obtener de la RA, seleccionar cual me equivoco
seleccionar el comodín. Éste, no éste.
Este siempre es un matón. Lo dice también en la descripción sobre herramientas. Seleccione. Va a
conectar esto el índice, y tenemos norte cero, es 213. No, podemos seleccionar directamente al vecino de nuestra cuadra que es la habitación
que necesita la puerta. Entonces vamos a encontrar nuestra habitación. Usa de nuevo este mapa de mazmorras
con nuestras coordenadas. A partir de aquí, vamos
a obtener acciones opuestas. Vamos a encontrar la
corriente opuesta que queremos. Vamos a
conseguir conseguir habitación de
opuestos Desde nuestra habitación, O sala de
azulejos en este momento, hemos encontrado con
nuestra cruz adyacente. Desde nuestra habitación en la dirección
que te muestra a ella todo lo contrario y haz que
la flecha esté encendida. Entonces eso significa que nuestro calabozo tiene
nuestro jugador puede
atravesar eso Va a conectar esto
al final de este cuatro lob, que son las claves
del mosaico actual, porque no queremos conectarlo
al final después de que se
hayan comprobado todos los mosaicos Queremos conectarlo
al mosaico actual
que estamos comprobando. Juega raíces no yo. Habitación oculta otra vez. Tenemos una habitación escondida aquí. Yo voy adentro aquí, eso se supone que es
una flecha por aquí. Creo que todos tenemos una
idea de por qué sucedió. Tenemos que ir con ven graph
y después de nuestra carga, debemos agregar la función de áreas ocultas de la
puerta. Vamos a compilar y jugar. Arte, ojalá una habitación escondida. Empecemos de nuevo.
No hay habitación oculta otra vez. Aquí tenemos uno. Ahora, de nuevo, no funcionó. Y la razón simplemente. Agregamos a las direcciones en las
que está esto no
hemos alternado flechas. Entonces vamos a alternar. Dave, de una
sala de calefacción para realmente. Ahora, en realidad nos
muestra que aquí, se supone que deben ser adorados Y también funciona, el resto
de ellos son correctos. Cualquier otro cuarto de calefacción. Mucho. Sí, tenemos una tercera. Yo aquí también. Significa que está funcionando. Creo que esto es
suficiente para éste. Te voy a
ver en la próxima. Adiós.
42. Función de intercambio de pared a puerta: Hola, y bienvenidos de nuevo
a Game Design Workshop, y Real engine five procedural Dungeon action Un curso de
creación de Psy Entonces, en la anterior, terminamos con nuestra función
add floors. Agregamos los pisos
de los balcones, con cuatro bucles en
los balcones ST y rompiendo a los elementos RA, y luego foo a través de los elementos
LA y agregamos y fijamos
la malla estática Ahora, después, lo hicimos
para las áreas aisladas, también, el mismo código exacto con
el cambio de que seleccionamos
a través de entero aleatorio para ser de los pisos de lava
o un piso normal, y agregamos dos veces
el piso normal, por lo que tiene más
posibilidades de pspone De hecho podemos
agregarlo una vez más. Aquí. Entonces tenemos tres
de ellos y dos de ellos. Lo siguiente que
hicimos fue iniciar nuestra función de código de
áreas de puertas ocultas para colocar puertas en
las áreas ocultas. Revisamos nuestra
lista de habitaciones ocultas. Rompimos la estructura
para obtener la matriz. Obtuvimos el primer índice porque
es una sola habitación de baldosas, y encontramos esa
baldosa en nuestra mazmorra Obtuvimos las direcciones,
y de las direcciones, averiguamos cuál está encendida, lo
que significa que tiene acceso. No, esto significa que tenemos una puerta. Y luego cuando terminamos, arreglamos las flechas
del bloque opuesto, el bloque de habitación, para estar habilitando la flecha
hacia la habitación oculta. Ahora, lo que tenemos que hacer es crear una función dentro de
la decoración DP, que se encarga de que nuestras paredes agreguen
para reemplazar la puerta la
pared a la pared de la puerta. Y vamos a hacer esto aquí porque en la decoración BP, porque tenemos el índice de habitaciones, que estamos usando para elegir
qué tipo de pared? En realidad, en realidad necesitamos el índice de pared, el índice de habitaciones. Entonces, en la función de muros de intercambio, solo
promovamos el
índice de muro a una variable también. Nuevamente, para quienes están
buscando donde estamos, estamos en las decoraciones VP. Vamos a crear
una función aquí, y antes de hacer eso, queremos de la función
que ya tenemos
paredes intercambiadas para promover la variable de índice de
muro Porque vamos
a usar esto para decidir qué tipo de
puerta de pared queremos agregar. Ahora, vamos a crear esta función. Vamos a llamarlo Agregar puerta. Ahora bien, en esta función, también
vamos a necesitar comprobar que es nuestra habitación
individual la que estamos creando conectada a nuestra habitación porque existe la posibilidad de que nuestra habitación individual
esté por aquí, girada, claro, pero
podría ser así, base en nuestras reglas, esta también se considera
una habitación oculta. Pero esta habitación
no requeriría una puerta. Detente aquí, vuelve
a la decoración, y agrega una salida de pared. Cuando corremos la puerta, volvamos a
nuestro generador de M, vamos a agregar desde
el mapa find dunge, nuestro azulejo básicamente referencia Vamos a Necesitamos
un niño. Decoraciones. Sí, ese es el nombre. Y
de las decoraciones infantiles, vamos a actor. Y desde el niño actor, vamos a lanzar
dos decoraciones y hacer de esto un puro cust Y ahora que
tenemos la referencia, vamos a alargar. Puerta. Vamos a
conectarlo aquí. Tráelo así. Ahora que tenemos una salida, sabemos que tenemos esta
salida de un muro. Sabemos que cuando
esto corre, a continuación, podemos hacer la pregunta, ¿encontramos un muro o no? Y si no encontramos un muro, agregaremos nuestras
coordenadas a todas las puertas. Pero no hagamos eso ahora. Vamos a hacer
esto después. Terminemos con
nuestra función en. No. En primer lugar, vamos a necesitar
la matriz de muros. Porque queremos
pasar por todas ellas. Entonces vamos a para cada uno. Pero como saben, cuando
atravesamos todas las paredes, sí
necesitamos una dirección porque
tenemos el sistema de tirones
de un elemento como
componente remolcador tiene remolcador Y porque necesitamos
tirar, necesitamos una dirección. Entonces agreguemos a nuestra puerta
una entrada de erecciones E. Nombrarlo erección. Ahora, recuerden, esto necesita
traer con cuerda, no para morder, y
vamos a agregar esto aquí. Entonces necesitamos una sucursal. Volvamos a
nuestro generador PP. Y de nuestro resultado opuesto, vamos a conectar esto aquí porque estamos
probando a través la dirección de nuestra pila
que tiene la habitación oculta. Estamos haciendo lo contrario
para el vecino. Entonces ingresos, y esto nos da el resultado de la
I es la habitación. Volver a las decoraciones. Entonces esta es la parte que
tenemos que preguntar si hay una guerra. Pero lo que podemos hacer es
que vamos a arrastrar esto aquí y el set es visible. O en realidad no
se oculta de nuevo, hola en el juego todavía oculto en el juego. Vamos a poner una
rama cuando esto sea cierto. Y vamos a
seleccionar un aquí o b I no es visible o si
está oculto en ganancia. Necesitamos visible aquí. No b porque si fuera visible, se volvería verdad, y
entonces correría verdad. Pero si estaba oculto en la ganancia, y corre verdad, significa que no podemos verlo. Entonces necesitamos lo contrario. Pero tenemos esto. Necesitamos crear
una variable local. Llamemos a esto realmente muro. Porque aquí tenemos
el no muro, y conectémoslo
realmente aquí también y pongámoslo cierto cuando nuestra pregunta sea cierta. Ahora bien, lo bueno de saber es que podemos agregar
etiquetas en tiempo de ejecución. Veamos, por ejemplo,
si estaba
atravesando todas las paredes de una habitación. ¿Cómo sé
cuál es la pared de la puerta? Podríamos ir al generador de
laberinto. Vamos a mostrar ambas formas, en realidad. Podríamos ir aquí,
y eso lo haremos. Vamos a agregar a
estas coordenadas una nueva matriz que se llamó vamos a duplicar s vacío. Es una matriz de punto final.
Esto es lo que queremos. Llamemos a esto todos ors. Tráelo aquí y
agreguemos las coordenadas. Del operador,
lo siento Agregar a matriz. Si esto es falso,
si no tenemos muro, agregamos las coordenadas
de nuestra puerta, lo cual es resultado de nuestro
hallazgo cruz adyacente. Al mismo tiempo,
podríamos tener otra matriz. Llamémoslo a todo erecciones
de puertas. Cambiemos el
punto a direcciones. Pero por ejemplo, si
traigo esto aquí también y agrego la
dirección opuesta que queremos aquí. No, yo
los estaba agregando así, podría tener dos matrices
correspondientes de tener todas las puertas
y su dirección. O podría tener también otra variable de
mapa con t puntos, y el segundo valor
sería de ocho direcciones. Pero como dije,
podemos hacerlo en remolcadores enanos. Podemos agregarnos al
ejecutarnos a los componentes, a los actores, a lo que queramos. Entonces lo que también puedo hacer es arrastrar desde el bucle for
desde el elemento array, la pared que estamos
manipulando aquí, y agregar g remolcadores lo que tenemos que hacer es
un poco raro Tenemos que obtener etiquetas, obtener remolcadores de componentes, y
viene como una variable de matriz Y porque viene como una
variable, en realidad podemos, que es nuestra
referencia directa a esta variable, en realidad
podemos manipularla y expresarla y podemos
poner la puerta ug. Ahora bien, si por bucle
a través de cada uno de ellos, cada una de las paredes,
y al final, vamos a hacer otro bucle de proa. Y solicita la lista de etiquetas. Ahora, el muro que tenemos
esto, en realidad lo imprimiremos. Pero no lo probemos. Es una pérdida de tiempo. Esta es la forma en que está
programado para funcionar. Lo siguiente que necesitamos es
establecer la malla estática. Malla de tic. Esto podría haber sido diferente. Es más visible,
lo que conectamos. Sí. Veo que esto es claro ahora. ¿Qué malla estática agregamos? Vamos a elegir. Para nuestro índice, vamos
a elegir nuestro índice de muro. Vamos a sumar un total
de cinco variables. Vamos a nuestras mallas
estáticas y seleccionemos nuestras puertas
correspondientemente Ahora, sí necesito revisar qué
era lo que correspondía a dos. Vamos a ir a Evan graph. Vamos a ir
a construir habitaciones. Y a partir de ahí, vamos
a ir a intercambiar a paredes, que en realidad está
dentro de decoraciones. Podría haberme quedado
ahí. Y vamos a comprobarlo. Entonces el número cero es este tipo. Entonces si vamos a a, número cero, debemos agregar este tipo
de muro a la selección. Creo que esto es todo. Todo bien. Combinado 85a1 9f8d. Increíble. Ahora, el
siguiente. Vamos a. No. Vayamos a parar muros. El siguiente es el
de madera fácil de encontrar.
El de madera es Mi boca grande, fácil de encontrar. Bien. Sí, es aquí está. Yo esto combiné b91xb. No estoy segura. En este año. Vayamos por el
siguiente. La piedra si paredes. Esto, esto fue más fácil de encontrar. Combinado cero E CC 57. Creo que ya basta con nombrar. Los últimos
serían los muros de ladrillo. Las paredes de ladrillo. No estoy muy seguro de
cuál es cuál, pero no creo que importe. Yo elegiré esto
para el primero. Combinado 025159 bla, bla. Y el otro
sería éste. Bien. Ahora, basado en nuestro sistema
posterior
sobre cómo vamos a estar
entrando en las salas de estar. Vamos a necesitar algunas colisiones
adicionales aquí que vamos a estar habilitando a
través de esta función Vamos a ir a ellos. Vamos a necesitar ir a la ventana gráfica
y agregar en realidad, podemos duplicar
la caja de colisión Muy rápido tráelo por
aquí y hazlo más pequeño. Piensa que está bien, de tamaño fino. A lo mejor un poquito.
Sí, está bien. Yo creo. Voy a
duplicar esto otra vez. Ir a rotarlo. Va a traerlo a todas partes donde se supone que debe estar
una puerta. Realmente no importa
si es preciso o no. Voy a duplicar
otra vez, cruzarlo. Y luego duplicaré esto
también y lo traeré por aquí. Todos ellos porque
son una copia de la caja, obtuvieron los mismos ajustes
que agregamos aquí. Entonces no están generando eventos de
solapamiento. A lo mejor esto un poco más. Pero está bien. Oh, esto quiere decir que
en nuestra puerta aquí, debemos habilitar su lesión. Y en realidad podemos
dar un paso sencillo. Vamos a seleccionar este muro. Vamos a apaciguar
esta caja a esta pared. Pero también seguimos nombrando esto. Entonces vamos a apaciguar
esta caja a esta pared. Aquí, esta caja a esta pared, y luego esta caja a esta pared. Voy a volver
a la función, y desde nuestra malla estática, voy a conseguir que los niños
obtengan los componentes infantiles, no de la caja dos, como pueden ver, Mostró muchas opciones. Uno de ellos era
traer cierta caja. A veces cosas reales, puede predecir lo que quieres hacer. Pero de todos modos, en el conseguir niños vamos a,
vamos a p cada bucle. Entonces vamos
a erupción componente. Y generar
eventos de solapamiento, cierto. Ahora por qué necesitaba lanzar. La razón por la que necesitaba
lanzar aquí es porque estoy pasando por todos los componentes que
este en mesh tiene. Y quiero para las operaciones. No es un
componente de malla estática, es un componente de caja. Perdón por la caja. Componente de caja. Esto no hubiera funcionado si
fuera una ma estática.
Entonces no lo sé. Esta es la razón porque no
sé qué tipo de char. Puede tener como 520 niños. Bien, no es bueno
tener tantos hijos, pero no puedes hacerlo. Y va a
ser un poco más pesado. No sé qué tipo
de componentes son. Entonces estoy echando a decir, eres tú el componente box, si eres el generar eventos de
superposición. No necesito etiquetar
estos componentes. No necesito nombrar
estos componentes. Sé que pertenecen a las paredes. Creo que este es un buen
tema de conversación por ahora. Te voy a ver
en la siguiente. Adiós.
43. Colocación de puertas y sellos: Hola, y bienvenidos al taller de
diseño de juegos bajo Lensing five procedural Dungeon action RPG curso de creación En la
lección anterior, terminamos con la
función d y las áreas de puerta agregando
la función de puertas que llamamos desde decoraciones
BP. Y también mostramos una manera de
agregar información sobre las
puertas de una manera que conocíamos, creando una matriz y agregando las variables y creando
una matriz correspondiente, también que se están
llenando al mismo tiempo. Entonces sus índices
se corresponden entre sí. También agregamos esta función, la puerta que
empezamos a llenar con conseguir la dirección desde donde queremos que se agregue
la puerta. Pasamos por nuestras paredes. Encontramos el componente
que tiene la etiqueta, la pared que tiene la
etiqueta de nuestra dirección, y nos hicimos una pregunta
que es nuestra pared visible o no solo en caso nuestra habitación oculta sea
señalada en alguna parte Y continuamos eligiendo
En realidad, esto está mal. Algunos errores otra vez.
Cuando era cierto, queríamos establecerlos no era a true y cuando era falso, queríamos agregar la
etiqueta al componente, que este componente es una puerta. Entonces, cuando queremos
atravesar la matriz de paredes, podemos averiguar fácilmente
cuál es la puerta. Entonces, desconectamos ahora
esto y lo conectamos a las cataratas y está bien.
Esta es la correcta. Y luego agregamos
la malla estática, elegimos la malla apropiada, y también
agregamos algunos componentes de caja o
nuestra mecánica de juego. Pero cuando el Cuando se activa la
puerta, también
estamos activando los eventos de superposición a
nuestros nuevos componentes de caja. Ahora, hay una
cosa más que debemos agregar, y voy a explicar por qué
necesitamos agregar una malla estática. Mostrar ¿dónde está la puerta? Porque nuestra cámara va
a ser desde un ángulo de 45 grados. Si la puerta está en esta
pared, no podemos decirlo. No podemos decir, Oh,
aquí, hay una puerta. Entonces tiene que haber algo para el jugador cuando
estamos mirando desde arriba, que aquí hay una puerta. Para hacer eso, vamos
a usar algunas chicas. Oh, solo voy a
agregar una nueva búsqueda estática. Añadió el muro porque
he seleccionado el muro aquí, pero queremos el CGL Encontremos el C l. Aquí está, ¿
verdad? Esto es grande. Hagámoslo un
poco más pequeño. Creo que 0.3. A lo mejor eso es un poco pequeño
o un 0.4 se ve bien. Acuérdate de bloquear todo el eje, para que se escala uniformemente, y vamos a llevarlo a
donde estaría el. Base La altura de
nuestra palabra es 400. 93 80, a lo mejor ahí está bien. En realidad, para los Cgels, también
voy a usar remolcadores Podríamos simplemente
ser padres de niño, continuar con la otra
ola que mostramos, pero vamos a acostumbrarnos a los remolcadores Entonces esto es S. Esto es dos
pegamos, rotarlo. Voy a negar
el valor negado. Esto es un Norte. Voy a verificar con la pared. Y. voy a rotar
copiar y pegar esto otra vez. Voy a
rotarlo 90 grados. B Posición Oeste B. Sólo
voy a copiar
esto. Pégalo aquí. I. A mitad de camino así dos Sí. Lo siento.
Porque esto es medio. 380 Wu otra vez. Dirección. El 400 negado, es 400, y está en el lugar correcto Lo que tenemos que hacer para todos es o es también convertir el juego
oculto en realidad. Porque queremos
habilitarlos cuando queremos. Yo también voy a ir, y realmente,
vayamos a la construcción c. Tráigalos aquí,
haz una matriz. Y promover esta variable, todas estas chicas C. Bien. Ahora puedo ir a la puerta y coger a los Cgals y
pasar por alto a cada uno de ellos De nuevo, voy
a usar esta cadena este nombre de texto por aquí como el componente
tiene tirón Si lo hace, nosotros en su visibilidad. Visibilidad que el juego
oculto acto falso. La visibilidad y lo oculto en el juego
son dos cosas diferentes. Y son opuestos.
Escondido en el juego, sí, significa que no se puede ver. Visibilidad, sí,
significa que no se puede ver. De todas formas, Ahora,
nosotros antes de hacer esto en realidad, tenemos que hacer una pregunta. ¿Es posible que
estemos en una pared? Porque si estamos en una pared, y no debemos encender el C D porque va a haber un CD snding en
medio del aire Si no es pared, simplemente salga
sin pared a través. Si se trata de una pared,
pasa por los geles de mar y
habilita el correcto. Ahora, compilemos y guardemos. Y choque. Teníamos
que tener un choque. A medida que volvamos,
continuemos. Vamos a probar. El mapa. El nivel. ¿Hay alguna habitación secreta? Sí, hay una habitación secreta, tenemos residual, y
tenemos nuestra puerta. Oh, lo único que queda por
hacer es hacerlo por todo lo demás. Oh, lo siguiente que
debemos agregar
serían las puertas de área única. lo que me refiero con áreas individuales como los balcones y las
áreas aisladas de una regla común. Solo se conectan a una habitación. O balcón aquí, área
individual aquí, aislada, tenemos otra habitación. Siendo este un bonito mapa. De todas formas. Agreguemos las puertas de
un solo área. Cuando tengo dos diferentes. Vamos a crear una función primero. Vayamos a pen graph, iden áreas de puertas y
agreguemos una nueva función No, áreas de una sola puerta. Como dijimos, tenemos dos
matrices de estas áreas. Tenemos los balcones
y las áreas aisladas. Bueno, podría hacer una cantidad
diferente de loops para cada uno de ellos y
superarlo así con ello. Pero también hay
otra opción. W dos matrices tienen el
mismo tipo de variable, en realidad
puedes agregarlas. Esto significa que los estás
fusionando a uno,
porque no quiero
estropearlos a estos dos arreglos Voy a crear una
nueva variable local. Voy a hacer que
sea un punto int. Va a ser una matriz,
y voy a llamarlo tal array. Voy a traerlo aquí. Voy a un bolígrafo. Y voy a
co-repastarlo, hazlo de nuevo. Entonces lo que voy a hacer es, esto no debería ser un punto final. Estas deberían ser habitaciones SD. Ningún punto final cambia el tipo de
variable porque estas
matrices son de espacio No. L et me desconecte, Déjame compilar y
reconectar pila, y ahora se pueden agregar Ahora bien, el primer no, el primer pin es la matriz que
vamos a agregar cosas, y el segundo pin es la
matriz que estamos agregando. Entonces esta matriz se convierte en
un total de estos dos. Si hubiera conectado los balcones aquí y conectado las áreas
aisladas aquí, habría estropeado
nuestra variable Ahora, ya que tengo este
total de arrays, puedo caer. Para cada bucle para cada habitación, porque lo que vamos a
hacer va a ser lo mismo. También vamos a
necesitar otra variable. Va a ser de entero, y va a
ser de tipo array. Eso es porque
necesitaba ser una matriz. Pero quiero mostrar sobre código
clave como programar algo sobre la necesidad de ello.
Te voy a mostrar en un momento. Vamos a nombrar a este ex. Mm. Oh, lo hice. Pero tienes
índice de habitación en otro lugar. No me gustó.
Voy a llamarlo Index. Va a estar bien. Compilar y guardar. Y en realidad, creo que este es un buen punto de
parada para este. Te voy a mostrar
la exageración de este código después
en la siguiente lección Adiós por ahora.
44. Funciones de área de una sola puerta: Hola, y bienvenidos de nuevo
al taller de diseño de juegos, y motor real cinco procesales Don acción ps curso de creación. Anteriormente, creamos,
terminamos en realidad con
nuestra función add door. Agregamos la parte que
estamos comprobando cuando el para el bucle de cada
pared haya terminado, y hemos habilitado
nuestra caja. Nuestra caja de puerta. Estamos comprobando cuál de las branquias C tiene la etiqueta de componente que
queremos la dirección, y las estamos
configurando demasiado visibles A medida que establecemos las nuevas dos caídas
ocultas. Ahora, y salimos
sin muro o no. También creamos el inicio de nuestro generador maj de
nuestras áreas de una sola puerta, y explicamos un poco sobre el append en una matriz Y ahora vamos a
continuar con esto. Y como prometí, voy a explicarte un poco de exageración con esta
matriz de enteros Estoy usando una matriz de
enteros para hacer esto porque el impacto
será mínimo Es una buena oportunidad
para explicar algunas cosas. Oh, comencemos por
romper nuestra actura. Entonces obtenemos la matriz
de nuestras coordenadas, y luego for loop
a cada una de ellas. Para cada bucle. Ahora, tenemos una función llamada in room index, que si abrimos, lo que estamos haciendo es
pasar por todas las salas de matriz St, o las coordenadas de las habitaciones, y preguntar si las coordenadas que estamos ingresando
pertenecen a alguna de ellas Esto nos devuelve si se
encuentra una habitación y qué índice de
habitación es. Vamos a cerrar
esta función. Ahora factive áreas de una sola puerta. Ahora con esto,
vamos a poner un brunch y conectarlo aquí. Y digamos, si encontramos una
habitación, ¿qué haremos? Si no lo hemos hecho, no hacemos nada. Pero si esto es cierto, hagamos el overkey
en index room Entonces, voy a preguntar si esto está contenido. Contiene un artículo. Y el ítem
sería el índice de habitación. Porque si estamos agregando una habitación, si uno de los coords
encuentra una habitación, no
queremos
agregar el siguiente bloque que encuentre una habitación también, encontramos en algún lugar donde
podemos crear una puerta Oh, cuando hago esto, y sé que quiero que mi habitación sea única
en estos contiene. Si agrego a esta matriz, ¿
puedes oír hablar de único Esto sería exagerado porque la razón
es cuando intenta agregar único, primero
pasará por
todos los índices, y luego decidirá
si lo agrega o no Ahora, como mencioné, los conjuntos también tienen
esta funcionalidad, pero no son tan pesados
como los arrays en la adición de únicos. De hecho, pueden aumentar rendimiento en la parte única de
adición. Disminuirían el rendimiento
en la memoria porque
tienen un sistema subyacente. El mecánico llamó mesas sh. Es algo más profundo
en la programación sobre administración de memoria,
obteniendo referencia rápidamente. De todos modos, los sets son mejores
para agregar cosas únicas. Las matrices de índices son mejores
simplemente agregando normalmente. Entonces aquí,
solo seleccionaría agregar, y sería más rápido. No es que tenga que ver
con nuestro laberinto ahora, pero creo que esta
es una buena información. Voy a agregar el índice de
habitación a la matriz. Y tenemos las puertas
y todas las direcciones. Ya que dijimos que estos dos necesitan ser llenados al mismo tiempo. Vamos a sumar a esto voy a agregar
las coordenadas de. Voy a añadir a esto también. Ahora, para obtener la dirección, sólo
vamos a seleccionar. Y sí conocemos nuestra
matriz de índices desde la sala de frenos. Tenemos que volver a hacer el
tramposo aquí. Entonces voy a encontrar esta selección de alguna otra función que la
hayamos usado, y simplemente copiarla de ahí. Creo que lo usamos
en salas de campo. Pienso en mi
celo para mostrar esto, olvidé un Vamos a nosotros estamos
comprobando el punto. Estamos consiguiendo todos sus
puntos. Sí, aquí está. Para cada uno de sus puntos, debemos t vecinos. Así que consigue cruzar cruz adyacente. Por qué y cruzar adyacente, y luego necesitamos
para bucle estos puntos. Va a conectar esto. Y esta es la habitación, como la cruz contigua, estamos comprobando, es
una habitación, no la baldosa. No las coordenadas de mosaico de las
que venimos, sino la cruz adyacente. Porque sabemos que la
baldosa de la que venimos, es un pasillo o un balcón, no un pasillo, una
zona aislada o un balcón. Entonces es por esto que necesitamos la cruz adyacente y
de la cruz adyacente ahora. Esta, todas las puertas deben
ser también una cruz adyacente, no la coordenada de la habitación. Oh, estamos mirando a través todos los balcones
y áreas aisladas. Estamos obteniendo las coordenadas
de cada área segmentada. Lo estamos comprobando vecinos y cuando el vecino es una habitación, entonces agregamos a la sala índice. Aquí explicamos las cosas. Ahora, ahora
en realidad podemos obtener la dirección porque desde el
noreste suroeste, conocemos la dirección
de la muralla. Entonces voy a hacer el
truco con un selecto. Como pueden ver,
esto no funciona. Yo otra vez para tener opciones para
tener todas las direcciones Lejos. Voy a traer
la última salida. Voy a elegir de aquí. Voy a conectar
la última salida y última salida e ir al norte sureste oeste, norte sureste oeste. Se honesto, no creo que
vayamos a usar esta
variable para nada, pero ¿por qué no tenerla? Quién sabe cómo vas a pensar para actualizar este programa. Ahora, todo lo que queda por hacer es
en realidad crear las puertas. Y para ello, vamos
a necesitar dos variables locales. Van a estar otra vez
del punto final y dirección. Pero los aquí tienen toda la información
sobre todas las puertas. La razón por la que
vamos a crear los locales es porque vamos a filtrar solo
a esta categoría, lo que sea lo que creamos aquí. Para que podamos usarlas. Para encontrar el
estilo apropiado y obtener la dirección adecuada de
la puerta y las flechas. Pero vamos a desplazarnos hacia abajo, a ir a variables locales, y vamos a
añadir dos nuevas. Llamemos al primero puertas. Deben ser coordenadas
de tipo punto y la otra debe ser ctions
debe ser de dirección Y vamos a
traerlos al final aquí. Y agrega exactamente las mismas
cosas que agregamos aquí. Esto se ve un poco bonito, este paquete define
puntos, pero bien. Ahora, continuemos. ¿Dónde vamos a llamar a
la creación de nuevas puertas? Tenemos tres opciones. Tenemos la opción de crear
justo después de este bucle f, tenemos la opción de
crear aquí o aquí. Este es el bucle fd que tiene cada tesela, es una
coordenadas, tiene, pero digamos cada tesela
que está en estas dos matrices, que son matrices de
muchas coordenadas. Tienen listas de coordenadas. Entonces, si lo agregamos en cualquier otro
lugar, entonces al final, significa que va a
correr intentará agregar los tos tantas
veces como todos estos sean. Lo agregamos a las
coordenadas aquí, incluso
sería peor
porque está multiplicando esto por cuántas fichas hay
en su acto en su deuda Ray, en realidad, usamos una matriz. Entonces el menor daño que podemos
hacer es agregarlo aquí porque todos estos para cada
loops que hemos creado son muchos
cálculos. Así que llevemos nuestras puertas. Aquí, Vamos a por bucle. Para cada bucle. Ahora podemos fac Lo siento. No
necesitamos cerrar adyacentes. Tenemos que encontrarla
en la mazmorra. Encontrar. Y vamos a obtener indicaciones y vamos
a sumar como cierto, así. Lo que vamos a agregar como verdadero va a ser la dirección con el get del índice. Entonces vamos a agregar la
dirección con el get
del índice porque
estas dos matrices se corresponden entre sí. Lo siguiente que tenemos que
hacer son flechas para perros. Bien. Bien. Baja y también en la puerta. Cómo necesitamos un niño, así que consigue decoraciones obtener decoraciones en
comparación con plaga y a. y para esa dirección, vamos a conectar
esto o getter Y eso debería ser. Vamos a jugar. La puerta aquí. O puerta aquí. Estoy adivinando. Ellos conectan esto. Siempre
es lo mismo, ¿no? En puertas. ¿Lo es? En zonas de puertas. Aquí está. Empezar de nuevo. No. Puerta. ¿Verdad? Vamos a averiguarlo. Por favor. Oh,
vamos a revisar nuestro código. Entonces empezamos, estamos agregando
el halcón está aislado, estamos retrocediendo a las fracturas, encontrando cruz adyacente,
estamos sumando a la sala índice Seguir agregando a esto es un problema porque si
agregamos la misma habitación, Sí, yo somos la misma habitación, la misma habitación tiene
dos áreas aisladas. Digamos una
zona aislada y un balcón, y luego sale
tiene tres puertas. Entonces no agregará, pero sí necesitamos
restablecer esta sala de índice. Entonces vamos a escucharlo
antes de seleccionar una nueva área. Ahora, agregamos al exo esto no
causaría un problema el
problema que teníamos aunque. Estás creando
erecciones. Adición de puertas. Aquí estamos recibiendo las puertas, estamos tomando la
dirección de la puerta. Entonces vamos a cambiar las flechas
al trabajo de flechas. Éste debería
tener una flecha aquí. No lo hace. Tampoco lo
son las flechas. Bien. Ya ves lo que pasó
aquí, así que esto es al norte. Esto no es hacer al norte. Bien. Entonces básicamente, está aquí. No hicimos lo contrario porque cuando estamos
consiguiendo al vecino, sobrepasa una dirección, necesitamos
la dirección opuesta Sí, de co, eso tiene sentido. Ilan guardar. Y esta
vez, tenemos perros. Un área aislada. Sí. No es un área aislada. Es porque
tenemos esto por aquí, que es una caja especial. Entonces entre esto y esto, considera que tiene un bloqueo. Entonces esta es una zona aislada, y esta es una zona aislada. Pero, también usamos los bloques
especiales. Entonces, trabajando de cerca
a lo que dije. Así que tenemos puertas por todas partes. Tenemos una puerta aquí.
Deberíamos tener uno aquí. Tenemos las ventas que
son un poco altas, un poco dentro de la pared. Podemos arreglarlo rápidamente a nuestras
decoraciones, bajarlas. 340. 30. Eso son los 30. Ese 30 ed. H. Si. Vamos a estar mirando
desde arriba, entonces este tema. Eso es demasiado.
Voy a adivinar por 20. H. Cp y guardar. Para que no vuelva a hacerlo. Se ve bien. Bien así. Pero sí tenemos puertas, y sí teníamos una en medio
de nuestra. Creo que deberíamos en la
siguiente. Te veo entonces. Adiós por ahora.
45. Conexión de paredes de mazmorras: Hola, y bienvenidos de nuevo
al Taller de Diseño de Juegos, y motor real cinco Curso de creación de
ARPs de Acción de Mazmorra
Procesal creación de
ARPs Anteriormente, terminamos con
nuestra función de puerta única. También arreglamos algunos errores
que ocurrieron durante el mismo. Y lo que realmente hicimos fue
agregar un claro de nuestro índice de habitaciones en el primer cuarto
bucle antes de comenzar las coordenadas de
cada área segmentada Entonces invertimos las direcciones porque estamos consiguiendo a
los vecinos. Y luego usamos la
matriz de puertas que creamos dentro aquí para obtener la dirección y agregarla a la baldosa específica. Alteramos flechas y
agregamos nuestra puerta. Ahora, vamos a hacer esto de nuevo, pero para nuestros corredores esta vez, que en realidad serán
casi exactamente los mismos Vamos a ir a nuestra
función, áreas de puerta única, y vamos a duplicar
esto y llamarlo áreas. Lo que vamos a cambiar es que vamos a eliminar estos dos. Vamos a
eliminar el templo A, y sólo vamos a
agregar nuestros pasillos a A. El compilar y guardar De hecho agreguemos
a la van gra también. Áreas de pasillo, puertas. Compile y guarde,
y juguemos. Ahora dos puertas aquí, momento de acamiento, pero funciona. Ahora bien, ¿por qué
agregó dos puertas aquí y no habilitó la C aquí? Porque la diferencia con los colisionadores es
que en realidad sí queremos solo uno en cada corredor En cada segmento de pasillo, con cada habitación
que conecta, queremos solo una puerta, mientras que ahora agrega
tantas como pueda como
señala porque así es como
hemos codificado esta parte. Como pueden ver aquí,
se pincharon con la branquial C, pero
vamos a arreglar Detengamos nuestra jugabilidad, vayamos al generador de mayo, vayamos al interior de las puertas del área del
pasillo y veamos las reglas. Fuera. Cada vez que
corremos por una
sala de descanso diferente, pasillo. Estamos agregando una puerta
y una dirección. Entonces lo primero
que puede pasar es que esa misma coordenada
tendría dos direcciones. Lo que vamos a hacer para arreglar esto es que
vamos a conectar y de correr las puertas
al final cuando terminemos de
sumarlo todo. Vamos a agregarlo por aquí, que será para cada adyacente. Jugar. Se ha arreglado un poco nuestras
cosas. Tenemos una puerta aquí, aquí
tenemos una puerta, pero sí tenemos una CDL aquí, que es el problema
que detectamos antes Adivinando que hay una
cierta dirección en esto. Puede que no hayamos
puesto el tirón correcto. ¿O fue? Poniente poniente oriente poniente. Entonces este sed que se
suponía que iba a ser este no tiene la etiqueta correcta y choca. Una vuelta otra vez, y
ahora está arreglada. Y si presionamos play, y puertas puertas. Pensar porque aplastó,
no salvó algo. Generador H, las puertas no
guardaron la adición aquí. Lo agregué de nuevo. Es por ello que
siempre debemos ahorrar constantemente. Ahora tenemos dos, solo uno por corredor. Sh estar bien. Parece correcto. C aquí. Este es un corredor de este aquí. Tenemos puertas por todas partes. Ahora todo nuestro laberinto y habitaciones están conectados
entre sí y ellos un jugador puede navegar por todo el
laberinto y todas las habitaciones. Ahora, ya que
terminamos con las puertas, aumentemos nuestra carga. Arriba, y voy a copiar esta cosa aquí por aquí, base. Digamos 85 mucho. Esto también cuatro bucles. Se trata de muchas acciones otra vez. Ahora bien, ¿cuál sería nuestro siguiente
paso en nuestro edificio de mazmorras? Bueno, nuestro siguiente paso
sería
averiguar las paredes externas, qué paredes son externas y
qué paredes son internas. Entonces, con eso, quiero decir
que estos muros de
aquí es cuando nos estamos olvidando. Y éste y
éste son muros internos, mientras que éste o
éste es un muro externo. Queremos que los internos los
cambien por algunos apoyos, algunas cruces, algunas mesas, algunas sillas, algunas dagas, una cantidad masiva
de apoyos que van estar bloqueando básicamente Pero todos ellos, algunos de ellos, podemos vivir como son. Va a ser un al
azar. G para hacer eso. Vayamos a nuestro generador de laberinto. Detengamos la jugabilidad
y creemos una nueva función que llamaremos paredes externas de
viento, que en realidad
encontraremos que el interno también era, pero sí, es un buen nombre. No. Nuevamente, lo primero que necesitaremos son todas nuestras coordenadas de
mazmorras Y vamos a conseguir las llaves. Por supuesto,
vamos a partir de ellos. Para cada bucle. Y vamos a encontrar la cruz
colindante de cada uno. Y vamos a permitirnos bucle para cada bucle de
la cruz adyacente. Ahora, lo que queremos es
preguntar si la cruz adyacente
es parte de la mazmorra Entonces vamos a contener, pedir que contenga el mapa. El mapa será nuestro calabozo. Y vamos a poner una sucursal. Entonces comencemos la lógica
de cuando nuestros vecinos, nuestro vecino no está
dentro de la mazmorra, es un muro externo hacia esa dirección
del vecino, es un muro externo Para hacer eso. Vamos a necesitar
las paredes, básicamente. No get. Lo sentimos, encuentra
la pila correcta, que es la baldosa
que estamos examinando. No es el vecino. Es
el azulejo que estamos examinando. Ese es el importante
porque el vecino es
el no válido. Vamos a conseguir las paredes. A una matriz para eso. Paredes. No hay
arreglo para eso. Lo siento. Quise decir que
necesitamos al niño. La decoración tiene las
paredes, no el azulejo. Entonces sí necesitamos un niño. Vamos a conseguir decoraciones. Vamos a tener hijo. Y vamos a las decoraciones
convertidas a puro elenco. Y vamos a conseguir muros, y ahora tenemos los muros. Pero además de muros,
necesitamos la dirección también. Entonces tenemos este S EW, y tenemos que encender eso, que vamos
a encontrar el interruptor Este es el interruptor opuesto. Podemos hacerlo enfrente aquí. Aquí. Yo conecto esto. Esto debe ser norte, debe ser sur, debe
ser este y el sh oeste. Aus ahora mismo no
queremos lo contrario. Y vamos a reventar a
través de cada pared. Vamos a elegir
la rama falsa porque aquí es cuando
no pertenece al calabozo Y vamos a
hacer una matriz. No. Para promoverlo a variable. Haga clic en promover variable,
ejecutando este muros externos. Desconecta, esto y
trae las paredes externas. Voy a añadir este muro. Voy a crear otra
matriz de las direcciones de tipo. Así que copat todas las direcciones. Voy a la erección interna de
la pared. Y también, voy a
añadir esta información. Por si acaso lo necesitamos.
Tal vez queramos manipular. Es posible que queramos cambiar la malla
estática a todas las paredes. Quizá queramos
cambiar algunos de ellos. A lo mejor hacer una aleatoria, eso cambia algunas
de ellas para que estén en una forma que produzca va, y luego comprobaremos si
esa pared está en una baldosa que está en una zona especial o
en una zona aislada, que tenemos los bloques de lava. En fin, creo que este es
un buen punto de parada. Así es como obtenemos
las paredes externas, y vamos a
continuar en la siguiente con
un poco más de código aquí y agregando algunas
imágenes más. Adiós por ahora. Nos vemos el siguiente.
46. Decoraciones de pared: Hola, y bienvenidos de nuevo
al Taller de Diseño de Juegos, Rail Engine five, Acción de Mazmorra
Procesal en el curso de creación de Ps Anteriormente, en la última lección, terminamos con nuestras puertas de área de
pasillo. De hecho copiamos pegamos
las puertas individuales, y acabamos de cambiar algunas
cosas. En realidad una cosa. Ejecutamos la matriz de puertas
para agregar puertas o cada uno descubre adyacentes en lugar de correr cuando terminamos por todos
los pasillos También iniciamos la función de muros
externos definidos. En realidad fundamos
todos los muros externos
y las direcciones de los mismos
y los agregamos a una lista. Y como decíamos,
vamos a seguir añadiendo algunas
imágenes más a nuestro laberinto Oh, vamos a
ir a nuestro montón. Vamos a ir
a nuestra ventana gráfica, e intentemos ocultar esta
horrible brecha por aquí. Haz esto. Sólo vamos a
hacer clic en una pared. Sólo vamos a
agregar arroz astático. Malla. En realidad, no
necesitábamos hacer clic en una pared. Necesitábamos hacer clic en la raíz. Entonces no lo hacemos ninguna
raíz, solo tocarlo. Estos muros deben ser
irrelevantes para los otros muros. No deberían ser niños. Deberían ser
hijos de la raíz. Ahora, para esta malla estática, vamos a la vegetación
como vegetación. Es, es vegetación demoníaca. Está un poco compensado. Vamos a reescalarlo. En realidad hacer la rotación también. Pongámoslo por aquí, tal vez un poco de frente. Lo que queremos es sólo
esconder estas líneas por aquí. Oh, lo hacemos un
poquito, tal vez la cerradura es 1.1. Esto un poco, más abajo. Este hecho esa parte que
es más latigazo, más grueso. Voy a estar más cerca de la línea, así que tal vez incluso en la
parte superior de la línea. Sí. Él. Vamos a
copiarlo y pegarlo. ¿Voy a cambiar la rotación? Uno. Otra vez. Cuán preciso depende
de ti cuando se ve bien, es el mínimo visual, así que no vamos a mucho tiempo. Visuales. ¿Correcto? Creo que me
parece bastante bueno. Ahora, vamos a darles algunas etiquetas. Entonces este lado es Oriente. Entonces esta E, este
lado, Norte Sur. Por lo que tiene una S. Este lado oeste. W, y este lado lo es. Todo bien. Ahora, vayamos a nuestro generador Ms y paredes externas
finas. Ya que tenemos los externos, podemos solo de nuestro azulejo aquí No necesitamos
hacer las decoraciones porque ahora estamos en azulejo. Podemos necesitamos hacerlo para
conseguirlo y siendo ty otra vez. Seleccione, esto. Como, no Fue para. No estoy seguro de cómo es esta edad. No es Oeste. O. Bien. Ahora, escoge
a todos ellos. Vayamos al guión. Vamos a traerlos, y hagamos algunos valores esto y
promovamos una variable. Llamémoslos a D
también para basura de galga. Y así mantenemos
el mismo error. Entonces esto de aquí, volvamos a mi
generación y sacemos esto. O el fin. Es y vamos a y
vamos a para al final. Los muros, voy
a poner juego a falso. Voy a volver a un azulejo, a todos de nuevo y a
establecer juego oculto. Cierto. Ahora bien, si jugamos, no deberíamos ver nada porque esta
función no se está ejecutando. Entonces ya sabes, el simulacro. Ahora tenemos nuestro follaje, pero lo tenemos en todas partes. Entonces la razón es que acabo de poner todo en
oculto no lo hice yo. Si. Lo que queremos hacer
es obtener la dirección
hacia y desde esta
cadena. Vamos. Consigue este año, como hicimos
anteriormente en muchas cosas. Voy a poner aquí
la sucursal. Y si es cierto, entonces
sólo mostrar el follaje. Ahora es correcto. Nuestra
maza tiene follaje. Es mucho más. Es como es que voy a relacionar
esto. Va a estar bien. Terminamos con este detalle. El siguiente detalle que
debemos hacer es cambiar los muros internos por muros
que sean de otro tipo. Oh, para hacer esto,
volvamos a nuestro generador maj. Vayamos a nuestra sucursal era. En nuestro hallazgo muros de salida. Los muros, en realidad nuestra
verdadera rama. No nuestras caídas. Esto quiere decir que esto
pertenece al calabozo, y vamos a
hacer otra pregunta Si pertenece
a la mazmorra, ¿también es una habitación tal vez? Porque si es una habitación,
no queremos cambiar la pared. Queremos tener las paredes de la habitación. No, vamos a traer el Vamos a traer el todas
las habitaciones,
todas las llamadas de sala, que
es un punto final, y solo vamos a ver
si no contiene esto, no los vecinos,
sino este elemento, que es la clave
que estamos probando. Entonces, esta es la llave de una habitación. Si es una habitación,
no hacemos nada. Si no es una habitación,
vamos a conseguir nuestras paredes otra vez que tenemos aquí
mismo. Vamos a f. O paredes, que es una habitación. Vamos a conseguir
el muro correcto hacia la dirección, así que debemos copiar
esto. Electo nodo. O aquí. Eso es conectarlo al índice
de bucle de forraje que se conecta a la cruz
fina adyacente Y vamos a
un Cs u y estos dos y conectamos esto
aquí y seleccionamos una sucursal. Ahora, por supuesto, lo que
vamos a hacer es establecer malla estática. Para la malla estática, vamos a ser ect de entero
aleatorio en rango. Lo cual sería de cero a tres porque tenemos
algunas cosas extra. Una sería esta tabla
combinada, creo. Esto es demasiado pequeño. Este 1938 A, tres, cuatro, usa este. A continuación, combinado 9d57 47a7. Estoy bastante seguro de
que teníamos algo más. Bien. Aquí estamos
combinados 0d44 Recordar a c17. Y sólo vamos a usar el
muro combinado real que tenemos. Entonces de ellos será sólo una pared. Ahora, una cosa extra
que hacemos aquí, pero vamos a explicar más adelante cuando llegue
el momento es que
cuando estamos en el juego, y ahí está nuestro personaje
está detrás de algo, deberíamos poder ver una
figura de nuestro personaje. Y para ello, vamos a jugar un poco con
atom depth stan sll value, se llama renderizar profundidad
personalizada básicamente Entonces no vamos a hablar mucho de
ello en estos momentos. Hablaremos de ello
cuando llegue el momento, pero deberíamos habilitar las opciones ahora para que
no tengamos que volver. Cuando estamos en paredes internas, queremos ver básicamente el
fondo de nuestro personaje,
y algunos de los activos
son un poco más altos, así que a través de ellos, nuestro
personaje silete Nosotros hacemos eso, vamos
a conseguir el yo estático. Vamos a establecer la profundidad personalizada de
renderizado. Cierto. Vamos a
conectar esto aquí. Y también, queremos
establecer el valor sencil. Creo que cero. Si no lo es, vamos
a comprobarlo después, cuando llegue el momento, volveremos y
cambiaremos este valor. Ahora si pre compila y juego, tenemos nuestras cajas. Tenemos nuestras otras cajas aquí las paredes internas se volvieron
un poco más interesantes. Y nuestro calabozo consiguió algunos apoyos. Algunos de ellos están un
poco superpuestos, y me di cuenta de que esto sucede también con las esquinas
de algunas paredes. Mi tal vez necesitamos empujar las
paredes ale un poco más lejos. Pero creo que también está bien. Lo que podríamos hacer para solucionar
este problema es simplemente ir a nuestras decoraciones
y la ubicación, por ejemplo, esto en x, esto sería un cuatro
oh cinco, tal vez. Si este, cuatro oh cinco. Éste. ¿Por qué? Yo hice esta. Para. A lo mejor esto lo arregla un poco. Diablos. Sí, la esquina ya no
es visible. Aquí es un igual
con el de madera. Bien, está bien. Hetils, creo que si jugamos
con los valores,
podemos calcular algún valor que
sea mejor para todo podemos calcular algún valor que
sea mejor para Pero por ahora, seguiremos
construyendo nuestro generador M. Hay mucho por hacer. Seguiremos en la
siguiente. W para verte entonces. Adiós.
47. Ajustes de flecha direccionales: Hola, y bienvenidos de nuevo al Taller de Diseño de
Juegos motor cinco creación de
simios de acción
Procesal Dungeon Anteriormente, agregamos
nuestras maravillosas imágenes de estas plantas por
aquí alrededor de nuestros bloques Y terminamos el
código para agregar, haciéndolos visibles cuando
están en los bordes, cuando están en el perímetro de las paredes
externas, y en realidad cambiamos los
apoyos en los muros internos, también para ser abdom variación
de apoyos que Ahora bien, en esta, lo que vamos a hacer es, y voy a presionar
play para mostrar esto. Tenemos que arreglar las flechas
perimetrales. Esto quiere decir que algunas flechas
por aquí son correctas, algunas flechas no son correctas. En este caso, todo
estuvo casi correcto. Entonces aquí, por ejemplo, tenemos una flecha que
apunta hacia aquí, pero en realidad podemos
acceder por aquí. Y el Esto no ha
pasado mucho en este, pero es un tema. No deberíamos tener flechas
que apunten hacia lugares a los
que no podemos ir. lo arreglamos. Vamos a crear una nueva función que
recorra todo
el laberinto y
probará alguna colisión
con trazo de línea. Entonces sabemos si es
o no puede ir. Dado que esta es la forma
final de nuestro dg, cómo el layout ya
no cambiará. Entonces, vamos a crear una nueva función. Llamemos a esto cosas. Aros. Y en realidad, en esta función, vamos a hacer
algo diferente. Bueno, casi diferente. La forma en que vamos a
manipular nuestras variables, para cambiar nuestras flechas de dirección. Vamos a crear un ary de lingotes y
ary de dirección, y debido a que esto va a ser
correspondiente entre ellos, en realidad una matriz de puntos también Podremos
establecer las direcciones irrelativa a cuántos
o están equivocados en un empate Básicamente un poco lo mismo que estamos haciendo siempre de una
manera diferente. Entonces no se trata de optimización
o no en estos momentos. Se trata de mostrar
diferentes técnicas. Oh, vamos a conseguir
nuestra variable de mazmorra. Vamos a conseguir nuestras llaves. Sólo llaves. ¿Y vamos a
fluir a través de cada uno de ellos? Porque vamos a
pasar por todo el calabozo, y vamos a encontrar
vecinos cruzados adyacentes Y vamos a seguir a
través de cada uno de ellos también. Así de aquí. Aquí viene la primera pregunta. ¿Este vecino
pertenece al calabozo? A te vamos a preguntar
si contenía? El calabozo Y si no lo es, entonces vamos a crear
una variable local, una variable buling, que
va a ser una matriz Voy a llamar,
digamos a estos toros. Y cuando no lo es,
vamos a estar agregando caídas, claro, falso porque
no está conteniendo el calabozo, así que no hay acceso a él De lo falso. Si es cierto, vamos a base por canal. Vamos a configurar para
cámara, no visibilidad. Para la ubicación de inicio, vamos a
necesitar al vecino. Entonces lo vamos a encontrar desde
el calabozo. Una ubicación. En realidad vamos a
agregar algo de altura Z, S 25. Este es nuestro inicio y nuestro final es el
bloque actual que estamos comprobando. Voy a conectar esto aquí. Esto lo hicimos antes, una vez más. Sólo voy a pegar. Conéctate aquí, y ese es
el final de nuestra línea tat. Vamos a la sucursal.
Quiero traer esto aquí. Léelo. Aquí afuera. Esto va a ser
de la rama dos. Si le pegó a algo, entonces otra vez, no tenemos acceso, así que este b será de si no
pegamos no
lo hice, vaya a estar encendido. Esa es la principal
diferencia, ¿no? No. Lo siguiente que
necesitamos son las coordenadas. Pero vamos a
crear otra matriz. Todos estos puntos o
puertos o lo que sea. Va a ser del
tipo en puntos. Bien. Y luego le vamos a sumar de
ambas ramas a o paredes. Realmente no importa porque todos
necesitan
aunque sea falso, sí
necesitamos las coordenadas
para apagarlo. Y las coordenadas
serían el bloque que estamos, el azulejo que estamos comprobando. Ahora, por último,
necesitamos la dirección. Vamos a agregar
otra matriz. Yo lo llamo. Erección. Vamos a simplemente
poner un tipo de erecciones e, y vamos a
agregar necesidad de seleccionar Vamos a copiar el
selecto de otro lugar. Lo tenemos aquí. Encuentra externo. Y vamos a
conectar el índice de esto para cada bucle
para los vecinos? Porque basado en los vecinos, tenemos nuestro noreste suroeste. Ahora bien, estas son las
tres variables. Esta es una forma diferente
de hacerlo esta vez, pero tenemos una lista de biones, una lista de puntos, y
una lista de direcciones No. ¿Cómo le vamos a decir a cada bloque que establezca sus direcciones
apropiadas? La forma en que lo hemos configurado este momento que no
teníamos únicas, sino muchas direcciones
en una matriz. Esto quiere decir que en cada cuadra, estoy corriendo cuatro
veces la línea como. Esto significa que cada bloque
producirá cuatro veces
el mismo punto final, pero corresponde a cuatro direcciones diferentes
y cuatro booleanos diferentes Entonces, hagamos esto. Vamos a cuando
terminemos todo esto, así que vamos a llamarlo
desde el primer bucle de cuatro. Vamos a
llamar a otros cuatro. Oop. Aquí vamos a conectar
nuestros puntos finales. De esta manera, es un
poco más sencillo. Es yo creo que es más
acciones que otras formas. De todas formas, um voy a conseguir nuestro calabozo para conseguir nuestro azulejo Bueno, encuentra al
actor seleccionado, al actor almacenado, que es azulejo, y
vamos a obtener indicaciones. Y vamos a agregar Por
cierto lo vamos a agregar,
es muy, muy, muy simple. Vamos a obtener nuestra
variable de biones, y vamos a
obtener nuestra variable
nuestras variables array
bulions y direcciones, y vamos a
obtener una copia de ellas Y porque corresponden a nuestro índice de arrays,
desconectando índices aquí Un poco de cruz de acantilado. Está bien. Y entonces vamos a totalizar RO. Esta sería la función
para arreglar todas nuestras indicaciones. Lo hemos conectado. Ahora, no lo
he hecho, claro, no lo he hecho. Fijar flechas. Compilar y guardar. Juguemos y ahora
las flechas arregladas. Cada dirección que
se supone que debemos ir, tiene una flecha, cada
dirección no podemos ir. No tiene una flecha. Genial. Creo que esto
es para éste. Te voy a
ver en la próxima. Adiós.
48. Ocultar flechas de depuración y crear antorchas: Hola, y bienvenidos de nuevo al taller de diseño de
juegos y cinco procedimientos de
Real Engine curso de
creación de RPG de acción
Dungeon Anteriormente, terminamos con
nuestra función de flechas fijas. De hecho, esta vez usamos una forma
diferente. Almacenamos un montón de puliones, y un montón de puntos
y direcciones, matrices
correspondientes, y a
nuestro sistema de trazado de líneas, si hay un bloque o no Y cuando terminamos esto, corrimos nuestros puntos y conseguimos todos nuestros actores hicieran los cambios
correspondientes. Ahora, como que
hemos terminado con la parte de información de la inducción con la
gestión de datos y todo. Una última cosa podría
ser ocultar todas las flechas. Entonces vayamos a nuestro azulejo BP. Vayamos a nuestro gráfico de eventos y hagamos clic derecho y
creemos un evento de tormenta. Vamos a nombrar este evento. Ocultar todas las flechas. De aquí, vamos
a conseguir nuestra flecha norte, vamos a conseguir
nuestra flecha este. Vamos a conseguir nuestra flecha y flecha
oeste. En realidad, deberíamos estar obteniendo el número de mosaico también porque
queremos ocultar esto. No, vamos a establecer, y vamos a
conectarlo todo. Y lo nuevo oculto será cierto. Ahora, vamos a comprobar si tenemos
en decoración, algún texto. No lo pienses así. Aquí no
necesitamos esconder nada. Vamos a compilar. Guardar y compilar.
Guardar y compilar siempre. Esta es la tercera vez
que esto sucede. Y estamos de vuelta, y vamos a compilar
y guardar y compilar, siempre guardar y compilar
porque por si acaso se bloquea,
deberíamos haber guardado. Ahora, lo que vamos a hacer es volver a
nuestro generador de laberinto, crear una nueva función, esto. Busquemos nuestro laberinto. Esta vez, vamos a obtener los valores porque
los valores son los mosaicos, y vamos a bucle for. Para cada bucle, y
vamos a llamar flechas. Entonces ahora,
llamémoslo en la gráfica in. Flechas. Sin
compilación de respaldo y comp. Juguemos. Y necesita esconder a los niños. También, así propaga a los niños, esto ocultará los renders de texto que están dentro de las flechas, vimos WS y
todo quedó, y ahora tenemos más
de una vista de juego Vamos a presionar encendido. Por fin es el momento de ver iluminado. Ahora, no vamos a empezar con el sol porque primero debemos
iluminar el laberinto, porque si empiezo a jugar
con la visibilidad
del sol ahora mismo y
ponerla para, como y una. Entonces cuando estemos
mirando el laberinto, no
vamos a estar viendo mucho. Está bien, pero
dejémoslo en uno por ahora, es más oscuro
como debería ser Derecha. Lo que vamos a hacer
ahora en esta lección es comenzar a iluminar nuestro laberinto con algunas luces personalizadas
que respondamos. Iremos a los planos de la
carpeta. Vamos a hacer clic, crear una nueva carpeta. Llamemos a esta carpeta apoyos. Vamos a entrar en esta carpeta. En realidad, podemos mover
el elevador también aquí, y podemos mover el cofre
grande también aquí. Y podemos mover BP
intro también aquí. Entonces para la
generación del laberinto, en realidad, estos son los tres
mosaicos que se necesitan, y el resto son apoyos que están haciendo
cosas por nosotros. Entonces, volveremos a hacer clic derecho, y vamos a
seleccionar la clase de impresión. Voy a seleccionar Actor. Va a ser BP Porche. Esto va a
ser antorcha Ábrelo, va a anclarlo aquí arriba. Vamos a
necesitar una strat ques. Vamos a necesitar
una luz puntual. Y claro, vamos
a necesitar un sistema de partículas. Para el sistema de partículas,
vamos a usar cascada porque nuestras partículas son
cascada para el fuego. Y esto es a partir de los
componentes que necesitamos. Voy a ir a
las preguntas estáticas. Voy a seleccionar un porche. Voy a seleccionar la
puedo ver porque es
Esta es una antorcha grande,
es una antorcha pequeña. Voy a seleccionar
este tubo de cama de fila. Fila sea tubo. ¿Todo bien? Ahora, ¿dónde está aquí? Lo que necesitamos es padre de la partícula
a la malla estática, así que por si acaso esto
se mueve juntos. No voy a hacer lo
mismo con la luz puntual, sho voy a hacer lo mismo
para la luz puntual también Y seleccionemos primero el sistema de
partículas. Vamos a usar la plantilla. Queremos el fuego P. Es un poco grande. Eso son cuatro. ¿Correcto? Cambiar la dirección de la pluma. Sí. I pie 92 eje. Que creo que el terreno de juego. Y luego voy a
ir a señalar la luz. En realidad, lo voy
a dejar
así porque después
vamos a crear algún código para que
parezca que está parpadeando,
et c. por ahora, et c. por ahora, solo
queremos agregarlo en nuestro estiércol, en él en nuestro
dungon Volvamos al generador
de Mz y vamos a crear una función Vamos a llamarlo luces P. Y ahora viene la pregunta, ¿
dónde sacamos estas luces el lugar donde los
vamos a estar desove está al lado de las puertas, como izquierda y derecha o una
de ellas, o ninguna de ellas. Algunas puertas podrían
no tener luz. Entonces vamos a necesitar la fractura
de la habitación. Entonces voy a conseguir la habitación S. Voy a conseguir espacio. Y a partir de ahí,
voy a parar e. Y a partir de esto, me voy a romper. A partir de eso,
voy a por bucle. Por lo que hacemos esto para
cada coordenada de habitación. Ahora, lo que necesitamos es encontrar
al actor antes que nada. Para ello, necesitamos nuestro calabozo. Y de este actor,
realmente necesitamos nuestras decoraciones. Actor en realidad consigue decoraciones. Y de esto, vamos
a conseguir y de esto, vamos a las decoraciones Cust. Voy a convertirlo en
un cust puro. Esto. Ahora, decoraciones F,
realmente necesitamos crear T, algunos puntos de escena. Vayamos a nuestro plano de
decoraciones. Vamos a nuestra viewport. Voy a cerrar
las flechas aquí, y voy a agregar una escena,
que como puedes leer, es solo un componente
que tiene una transformada que se puede unir o
adjuntar otros componentes también. Es sólo un punto, básicamente, un punto que podemos definir. Voy a elegir la escena, y voy a
moverla por aquí. A lo mejor a la izquierda a la derecha. Sólo por esta, voy a cambiar esto a una puerta, para encontrarla,
voy a seleccionar nuevo
la escena,
o casi correcta. Voy a colocarlo
aquí, tal vez aquí. Bien. Voy a copiar
la escena, duplicarla. Necesitamos una cruz, y esto
va a etiquetar muro este. Esto sería muro este A. Izquierda. Entonces EW L, y esto
sería es pared derecha. Ahora, cambiemos
esto a lo que era. Voy a seleccionarlo aquí, encontrarlo en el navegador, a la izquierda atrás en la pared, y
arrastrarlo y soltarlo aquí. Todo bien. Voy a
conseguir las escenas. Voy a duplicarlos, y voy a
moverlos a través. Están en la posición correcta. Ellos r. cuando engendremos, vamos a e mejor.
Voy a ponerle nombre a esto. R uno. Este será W W L uno. Yo voy a hacer lo mismo por el norte y el este.
Voy a añadir. Para moverlo hacia aquí. Y voy a comprobar el
offset en el otro, que era 140 para el siguiente fue 145. Está bien si no
son simétricos porque algunos de ellos
serán engendrados, algunos de ellos
no serán engendrados Voy a seleccionar de nuevo
el original es él. Aquí está. Voy a
poner 140 aquí. Voy a duplicarlo pone 45. Y voy a ponerle
nombre al norte. El remolcador. Esto es sur. Entonces esta es
la pared Sur esta pared dejó. Voy a duplicarlos. Y voy a ir y este será muro uno a la izquierda, que en realidad son opuestos. Esta es la correcta. Este es el de la izquierda. También esto también sucedió W. El otro W L. No es que importe,
pero ¿por qué no? Oh, voy a
compilar y guardar, y vamos a
dejarla aquí para ésta. Vamos a tener un descanso
y continuar en la siguiente. Adiós.
49. Luces de antorcha de desove: Hola, y bienvenidos de nuevo
al taller de Diseño de Juegos, y al curso real de creación de
ARPs de Acción de Mazmorra
Procesal Engine five creación de
ARPs de Acción de Mazmorra
Procesal Anteriormente, comenzamos con
nuestra función Laberinto de luces. Creamos el inicio
del algoritmo, qué salas buscamos y cómo obtenemos la
información de ellas. Y también agregamos
algunos
puntos de un montón en realidad a nuestro
plano de decoraciones para unir las luces Al mismo tiempo, también escondimos nuestras flechas y creamos
el plano de la antorcha Ahora, continuemos. Vayamos a nuestro generador de laberinto, y vayamos a nuestras luces de laberinto de
funciones. Quizá antes de eso volvamos a hacer
otra tarea tediosa. Agreguemos algo más aquí porque sé que no es el mejor, pero no es el mejor momento,
pero tenemos que hacerlo. Y esa tarea tediosa es
sumar los remolcadores en las escenas. No. Estas son las escenas del norte. Entonces vamos a
ir tirones tach tag. Vamos a añadir. Como pueden ver, puedo
seleccionar ambos, y va a
agregarlo a ambos. Voy a seleccionar los
del Sur, voy a agregar un remolcador, seleccionar S.
Voy a seleccionar los del este,
agregar el remolcador E,
y los del oeste en el
remolcador electo W. Bien,
la tarea estudiosa se acabó volviendo a las Ahora bien, ¿cómo podemos saber
dónde está la puerta? Si recuerdas, si
conseguimos nuestras paredes una A, y vamos de cada una
de ellas por bucle. Podemos conseguir los remolcadores. Y podemos verificar si
contiene el ítem, que en realidad distingue entre mayúsculas y
minúsculas. Entonces, cuando agregamos este
remolcador a las puertas, ¿cómo lo agregamos? Vamos a buscar esta función, que estaría
dentro de decoraciones y era mayúscula D O R. Así que vamos a ir aquí, mayúscula D 00 R. Ahora bien, no necesitamos saber
dónde está exactamente la puerta, dónde dirección
o lo que sea. Solo podemos verificar qué
puerta tiene una puerta de etiqueta. Y a partir de eso,
porque sabemos que el primer remolcador es nuestro
noreste suroeste Podemos obtener P de cero,
que es el primer remolcador. Y entonces sí necesitamos una
matriz de las luces. Así que volvamos a las decoraciones. Algunas tareas más tediosas. Seleccionemos todos ellos. El orden no importa, ya que vamos con remolcadores,
creo que son todos ellos. Hagamos una matriz.
Copia. Él es éste. Ops. Y son ocho, entonces es correcto porque
cuatro lados, dos en cada uno, ocho, van a
promover esta dos lib. Ts, o tal vez ranuras de luz de puerta, porque podríamos agregar
más, ¿quién sabe? Vamos a compilar y ahorrar. Volvamos a
nuestro generador de laberinto, y de nuestra decoración, vamos a conseguir ranuras de luz de
puerta. Voy a cada uno. Si es t, si
contiene la puerta, vamos a componente ug. H tug realmente
componente tiene remolcador, que será el tirón
cero de Voy a la rama, al bucle de barrio. Y ahora porque vamos
a necesitar rotar la luz porque la luz tiene
cierta rotación por sí sola. Podríamos ir en
elaborado sistema con trazas
de líneas y/o coordenadas en
negrita. Pero no, lo que vamos a hacer es yo tipo de los
valores por mi cuenta, y cuál corresponde a qué
rotación corresponde. Porque sólo tenemos cuatro
rotaciones, básicamente. Cada uno. Entonces lo que vamos
a hacer es que vamos a cambiar basándonos en la etiqueta con el nombre. Y esto es sólo
cuando esto es cierto. Vamos a tener cuatro casos. Voy a quitar
el pin de ejecución, y los casos
serían nuestras indicaciones. Todo esto sería norte, sur, este y poniente. Guardar, guardar y compilar. Ahora, voy a hacer una costumbre, una variable local, es decir, light, y va a ser
del tipo rotador Entonces voy a fijarlo a
cada uno de ellos es Southwest. Y los valores son
-90 para Norte, 0490 para Sur, cero para Oriente y 180 para Occidente Entonces voy a poner una
sucursal porque como dije, algunos de ellos van a tener una luz, algunos de ellos
no van a tener una luz, y yo voy a hacer, y voy a
sacar clase de actor. Voy a dividir la cuchara voy a conectar
la podredumbre ligera A la rotación.
Y para la ubicación, solo
necesitamos la ubicación, la palabra ubicación de nuestra escena. Así que vamos a obtener la
ubicación y conectarla aquí. Y debemos seleccionar la clase, la clase sería antorcha Una cosa más que necesitamos es algo que no hemos
usado desde hace mucho tiempo. Necesitamos que los actores destruyan. Vamos a agregar a
esta lista, las luces, porque cuando
creamos un nuevo laberinto, las luces en realidad son
caras en rendimiento. Entonces
los vamos a eliminar. Vamos a jugar. Veamos qué es lo que en realidad. Vamos a agregar esta función
al final de esta línea. Laberinto luces, y
ahora podemos ir a jugar. E inyecte, y tenemos luces. Están demasiado lejos. Algunos de ellos están demasiado lejos,
algunos de ellos no. Esto debería ir. 70, también son grandes. Volvamos a las decoraciones. Digamos cuáles son
los puntos que son. Esto debería ser 370 estuvo bien, creo, 370 esto ¿Por qué? -70. Esto parece interno. Lejos, vamos a hacerlos un
poco más pequeños primero. Entonces vayamos al
desove de ellos en realidad. No necesitamos
hacerlos más pequeños aquí. Simplemente podemos hacerlos
más pequeños en general. Cuando las mae se encienden,
cuando las engendramos, reducimos la escala 2.5 55. Comprobemos de
nuevo cómo se ven. Están un poco bajos y están un
poco lejos. No podemos ver al pariente aquí. No podemos ver al
pariente de aquí. Por supuesto, no
podemos vamos a necesitar
ir a decoraciones y de hecho
con los valores aquí. Voy a poner 20,
el otro mojado. Poner todo en t
Este está en para 20. Cual era el
sur sur, creo que estaba demasiado lejos. Sí, para 20. Y este también 20.Es unos, no
hemos tocado falso ¿Hay demasiado en A lo mejor deberíamos cambiar
todo aquí a 30. 160 fácilmente con bajo, así es 81 25 o 30 o 25280, está bien W el otro? Son cinco. Esta es la peor tarea tediosa. Hay mejores
formas de hacerlo. Pero esto es lo que
elegimos ahora mismo. ¿Arreglamos todo, todo está arreglado,
y el agua del sur. Bien. Compile y guarde,
y volvamos a probar. Creo que esto es un buen lote. Aunque sean
un poco tal vez 425. Si quieres puedes
cambiarlo a 425, podría quedarte un
poco mejor, pero no creo que
vaya a ser visible. Entonces, creo que esto
es para éste. Te voy a
ver a continuación. Adiós.
50. Efecto de parpadeo de antorcha: Hola, y bienvenidos de nuevo
al taller de Diseño de Juegos, y al motor de cinco
Acción
Procesal Dungeon ApS creación Cs Anteriormente, añadimos nuestras
antorchas a nuestro laberinto. Creamos el código en
luces de laberinto para generar nuestras luces. Usamos la matriz de muros
para obtener la etiqueta de componente, si es de norte a sur u oeste. También comprobamos si la pared es una puerta porque
si no es una puerta, entonces mostramos otra luz. Y usamos algunas rotaciones de luz
preestablecidas y basándonos en una prohibición de un sangrado,
en un bleion,
generamos nuestra Y luego agregamos a
los actores para destruir. Lo trabajamos un poco
con dónde está y
cómo es Lo siento, plano
equivocado, las decoraciones, a través
de nuestro plano de
decoraciones, a través
de nuestro plano de
decoraciones, y usamos los puntos de escena
para establecer Ahora, vamos a jugar un
poco con la luz. Oh. Vamos a
ir a nuestra antorcha BP. Dave, porque no se guarda. En realidad guardar todo. Y vayamos a nuestro punto de luz. Ahora, tengo en mente algunos
valores que
hemos probado y cómo
se ven en el laberinto. Voy a usarlas. La intensidad sería de 258o4. Entonces 25,804. Y el radio de atenuación
sería dos o 37437. Ahora, nuestro
color claro sería de x lineal F F 58 47 FF. Ahora puedes elegir la luz
que quieras, pero para nosotros eso funcionó Y L et's hacen que el paseo de
origen use 30. Y vamos a
anular la selección de sombras proyectadas. Entonces es un
poco más óptimo. Si quieres, si tu computadora puede manejarlo,
puedes dejar esto encendido. No vamos a
optimizar las luces para que sean invisibles cuando
estemos demasiado lejos. Simplemente dejamos eso al
motor a lo que sea que necesite. Pero lo que vamos a hacer es jugar
al creador tembloroso. Vamos a ir a comenzar a jugar, y vamos a
agregar una línea de tiempo. A quien c con las luces. ¿Quién es la Reina con las luces? Fue Barbadi ¿Fue imbo? De todas formas, solo una
referencia de South Park, no importa. Oh, ¿qué es una línea de tiempo? En definitiva, sería
una herramienta que podamos manipular variables a lo largo de
un cierto periodo de tiempo. ¿Cómo hacemos esto? Bueno, hacemos
doble clic en la línea de tiempo, y podemos ver que
tiene algunas opciones. Lo que vamos a utilizar es
una pista de un flotador. Los camiones de vectores y pistas de
eventos y pistas de color. Pero lo que necesitamos es un flotador. Ahora, en esta camioneta, vamos a cambiar y
hacer clic y crear algunos puntos. Débito. Creo que
ya son suficientes puntos. Entonces nuestro primer y último punto así que el tiempo cero debería
ser el valor cero. Y usaremos la longitud de tiempo
actual, que es cinco y la mantendremos ahí, así que el tiempo cinco, el valor
volverá a ser cero. Hay otras opciones por aquí, pero la opción que sí
necesitamos es la opción de looping Lo que significa que cuando se reproduce
nuestra línea de tiempo, se reproducirá una y
otra y otra vez, lo que sea. No. ¿Cuál es esta pista de flujo que creamos en estos puntos Entonces estos puntos son
básicamente nuestro impulso Alfa, lo que significa que nos
darán un valor 0-1 No debemos ir por encima de
uno y dos menos uno. Pero no debería ser este punto. Cambiemos este punto. Vamos a tener dos mínimos. Y entonces vamos
a dar la vuelta y poner las luces, otros puntos, hacerlo como dem, como si estuviera divagando,
aunque no lo sea, no sé si esto queda bien No necesitamos realmente
tener uno y menos uno, y podemos tener
donde queramos, pero si ponemos grandes valores duros, aumentará exponencialmente
la luz demasiado, et No, a lo mejor esto está
bien. A lo mejor no lo es. Lo que vamos a hacer es
seleccionarlos todos y hacer clic derecho y
usar la función auto, que
los curvará un poco. Entonces no va a ser instantáneo. Lo vamos a dejar como está, y vamos a
comprobarlo cuando
completemos nuestra codificación aquí. Entonces vamos a
conseguir la luz puntual, y vamos a poner la luz. También vamos
a establecer intensidad. Y vamos a establecer también atenuación de atenuación de conjunto Estas son las variables
que vamos a cambiar en la línea de tiempo, que es una especie de manera
pesada de hacer esto. Pero para nosotros,
va a estar bien. No tenemos tantas
cosas en nuestro calabozo. Oh, este es el regreso
de nuestro nuevo track. No lo hicimos, e n eso. El nombre y el nombre Alfa. Esta es nuestra luz Alfa. Vamos a dejar que el color lineal, vamos a dejar y
en realidad otro flote. ¿Qué es a b? A er
pisa del valor A ir a B basado en un Alfa. Impulsión alfa que creamos. Conectado. Aquí aquí. Y ahora vamos a hacer clic en un color, que en realidad podemos
copiar en el punto de luz. Yo sólo cerca del punto de luz, y copiarlo aquí y pegar. Ahora, para el segundo, hagamos clic en él y
tecleemos el F F O. Con más naranja. Podríamos estar
cambiándolos más tarde si
no se ven bien. Ya veremos. Y por la intensidad, en realidad
estamos
sobrepasando estos 25 mil Parecía mucho para ser honesto. Entonces va a pasar de 5 mil. También le puse la
luz 5000-6 mil. Y desde el conjunto en el radio de
nación 600-800. Estos en realidad están anulando
nuestra configuración aquí. Entonces estos deben ser los valores
correctos. Voy a poner 600 aquí. Vamos a compilar y guardar. Vamos a jugar, cómo se ven. Demasiado cambio.
A mucho cambio. Así que volvamos a nuestras luces. Este color está demasiado lejos. Escojamos uno cerca de esto. A lo mejor el
cancela naranja basado aquí. A ver, no. un poco demasiado amarillo demasiado. También es un poco demasiado rápido. Pero está bien.
Creo que está bien. Si quieres, puedes empatar
con los valores y hacer que se vea mejor. Ahora más cosas que podemos hacer en este estilo en este
blueprint serían
ir a la
malla estática y apagar la generación de eventos de superposición
porque no lo necesitaremos Apagarlo colisión
por completo. No lo queremos. Y de las luces, creo que eso es todo de
este tipo de luz porque ahora vamos a agregar algunas otras luces.
Déjame mostrarte. Aquí tenemos estas
maravillosas luces, pero necesitamos estar desovando en
el laberinto de los pasillos Entonces, antes que nada, vamos a
crear un plano para agregar este mese estático. Vamos
a ir al contenido. Vamos a ir a planos, vamos a ir a utilería,
y vamos a hacer clic
derecho y crear un nuevo actor
tipo clase blueprint y
llamarlo BP, Voy a abrir esto, y
voy a añadir una malla estática, que va a ser
la luz del pasillo. Busquemos malla. Sólo estuvimos ahí.
Voy a usar Esto, y tenemos nuestra luz. Ahora, para que sea más bonita, agreguemos algunas cosas Agreguemos algunas cenizas
más estáticas, que no va a ser una
linterna. Llamemos a esto. Escudo. Y agreguemos a más. Sh. Llamemos a este tipo
otra malla estática. Llamemos a esto o a unparent esto
porque está parentado Llamemos a este post terrestre. Para el escudo, creo que lo
llamamos escudo. Voy a traerlo aquí. Voy a elegirlo, y
luego lo voy a traer aquí y
voy a cambiarlo. 2.5 porque es demasiado grande, tal vez un poco más grande. 7.7 es cinco. Bien. Lo voy a poner un poco arriba. Ahora vamos a traer las espadas. Vamos a elegir
el método estático. Espada Ford, sácalo. Debe estar aquí. Aquí está el arma. Voy a agregarlo aquí. También lo
vamos a poner 2.7. Gale rotarlo un poco. Lo traeré aquí. Ríndele. Yo f. aquí, voy a conseguir
la segunda espada. Un sd. No he puesto el arma de malla. Nuevamente, 0.7. Voy
a rotarlo un poco. No lo quiero en el suelo. Digámoslo de esta
manera. Para agregarlo aquí. Y en la gráfica vm
en comenzar a jugar, voy a traer una
referencia a cada una de ellas. Y yo voy a ver. Juego o cada uno de ellos por separado.
Voy a conectarlos. Cada uno de ellos a un
juego oculto, y voy a hacer una. Ahora bien, ¿qué es una secuencia? Una secuencia, es una forma de
organizar un
poco nuestras acciones. Pero hay que tener en cuenta
que aunque diga cero, entonces uno, luego dos, no
significa
que los ejecutará. Los ejecutará en orden,
pero no esperará a que termine
una ejecución. En el momento en que corra el primero, correrá el segundo, y luego correremos el tercero. No va a esperar a que termine la
ejecución. Repito, porque si aquí tengo
algunas matemáticas, por ejemplo, eso digamos que la línea
tres las está necesitando, entonces las matemáticas probablemente no se completarán cuando se ejecute la
línea tres. En el nuevo oculto,
voy a seleccionar aleatorio b. Así que cada luz tendrá una combinación
aleatoria de
estos apoyos visibles Creo que esto es para éste. En la siguiente, los vamos
a agregar en el mapa. Boo adiós por ahora, les importa.
51. Sistema de iluminación de corredor: Hola, y bienvenidos de nuevo al Taller de Diseño de
Juegos y real Engine five procedural curso de
creación de RPG de acción
Dungeon En la lección anterior, agregamos nuestro
plano ridor light. Nosotros lo creamos. Agregamos la
malla estática de la luz, el escudo, la
espada, el tipo dos. Y en la jugada de inicio. También creamos algún código para hacer visibles algunos de
los apoyos, algunos de ellos invisibles.
Va a ser aleatorio. También agregamos con una
función con una línea de tiempo, lo
siento, en la antorcha BP, en la jugada de inicio,
un pequeño código para jugar con la
luz de nuestras antorchas Entonces se ve como la
pandeada o algo así. Ahora, continuemos con la adición nuestras luces de pasillo al laberinto. Oh. Lo que vamos a hacer es sacar primero
las reglas simples del camino, y luego vamos a hacer
algo más complejo. Oh, vamos a necesitar los pasillos, una serie
de estructuras Entonces son los corredores ST. Bien, vamos a
por cada bucle a partir de ahí. Y lo primero que necesitamos
es romper la estructura. Entonces tenemos nuestras coordenadas. A partir de nuestras coordenadas,
necesitamos saber si esta longitud es mayor que uno. Porque si se trata de un solo azulejo, no
deberíamos agregar una luz. No va a quedar bien. Ahora bien, como no sabemos
cuántos mosaicos hay, lo que podemos hacer es que
podemos hacer un bucle de cuatro, no un para cada bucle, sino un bucle de cuatro con
el último índice, como el último índice
de los cuatro bucles. Así que tantos como los tienen, esta es tu última vez que
ejecutarás este bucle de cuatro. Pero esa sería
nuestra primera parte. Estamos consiguiendo las habitaciones del
pasillo, las coordenadas de cualquier corredor, cuántas son,
y estamos comprobando si son más de uno, y si son más de uno, estamos para hacer un bucle de
cero a la última Lo siguiente que deberíamos estar revisando es la actual
una habitación especial. Entonces, vamos a preguntar si um si nuestras coordenadas
actuales de posición dentro de nuestras habitaciones especiales. Ahora, para hacer esto, vamos a conseguir que se copien las
coordenadas que queramos. Y la forma en que lo vamos a hacer es que vamos a
usar este índice, que es de cero a
último índice de esta matriz. Pero esto corresponde correctamente. No va a si está
contenido un elemento de matriz, que es la habitación especial. Azulejos especiales. Esa
sería la loseta del elevador, esa sería la loseta de caja, la loseta del cofre,
y eso sería. Estas son las ranuras.
Básicamente, no queremos engendrar una luz No. Ahora es el momento de una
regla un poco más complicada. Déjame abrir la pintura. Lo que vamos a tener es, digamos en nuestra grilla, laberinto. Veamos que engendramos
una luz por aquí. Lo que hacemos es
crear una caja a su alrededor. Pregunta, ¿hay alguna
luz en esta caja? En realidad, antes de que lo
engendremos, preguntaremos, ¿hay
alguna luz en esta caja? Porque si hay una luz
en esta caja y estamos aquí, no
deberíamos estar desove bien. Entonces esto nos ayudará a
espaciar un poco mejor cómo
van a
desovar nuestras luces en nuestro laberinto Entonces, hagámoslo. Veamos
cómo lo vamos a hacer. Vamos a usar algo que se llama multi baseline, multi box para nuestro ejemplo. La llamada de L et sobre la
primera diferencia. No el multi uno, sino el cuadro uno entre el
rastro y la caja. La caja es como
la caja de colisión. Las huellas se pueden hacer en
esferas, cajas, forradas. E incluso podemos crear algunas formas personalizadas con
un poco de esfuerzo. Pero por ahora,
vamos a usar una caja. ¿Y qué es la multiparte? Significa que puede en muchas cosas y
mantenerlas en una lista. Esta es la razón por la que nuestra salida se
calienta es de un tipo array. Es un contenedor array. No, ¿por dónde empezamos? Básicamente, sólo vamos a sacar
al actor de aquí, así que vamos a
encontrar en el calabozo Gin map, así obtenemos el
mosaico actual que estamos probando. Voy a conseguir la ubicación del actor. Este tipo de ubicación de guerra
tipo Dan. El motivo es cuando estamos
consiguiendo la ubicación del actor, siempre está en el mundo, porque el actor es
una parte del mundo, donde cuando estamos obteniendo
de un componente, queremos ubicación de guerra o
relativa a la ubicación del actor, porque un componente pertenece al actor que el actor
pertenece al mundo. Una forma Vamos a
establecer el inicio aquí, y esto también
va a ser el final porque no
vamos a moverlo. Sólo va a por una garrapata, comprueba lo que hay a su alrededor. 00 la media talla, vamos a usar
los valores 800, 801. Tu orientación está bien. Visibilidad,
vamos a verificar la cámara, y eso es prácticamente todo
para nuestro rastreo de caja múltiple. Ahora, de nuestros resultados de calor, vamos a cada uno. Pero antes de continuar, necesitamos crear
una variedad local, que va a
ser de tipo ban. Vamos a llamarlo. Voy a ser tipo b.
Vamos a traerlo aquí y darle la vuelta antes de que
empecemos por loop. Ahora, lo que vamos a hacer
es romper nuestro resultado de calor, cada uno de nuestros resultados de calor
porque esta matriz de sal, estamos rompiendo cada una de ellas. Lo que vamos a hacer es ir
al actor de calor y
solicitar la clase. Vamos a conseguir clase. Y vamos a
comprobar si su clase es igual a las luces de nuestro pasillo. Sucursal, Corrija esto. Voy a poner esto aquí. Trae a este pequeño. cerrar esto para que se
vea un poco mejor. Y ahora, si es corredor, entonces vamos a girar
la nota ligera encontrada de Esto en realidad
podría ir con break, cada uno con break porque es una acción que cuando encontramos
lo que buscamos, debería estar rompiendo. No, voy a conectar
esto al descanso. De la falsa, no
necesitamos hacer nada. Y cuando esté terminado, vamos al autobús. En realidad, necesitamos una sucursal aquí. De lo contrario esto no hace nada si no
usamos una sucursal. Vamos a traer
la luz pero encontramos. Si esto es cierto, en realidad
vamos primero,
vamos a comprobar, vamos a
elegir la luz. Luz M, luz pd. Y luego vamos a sumar
a las luces no
funciona así, pero tenemos que conseguir que los actores
destruyan y lo agreguen. Nada de lo que engendremos
debería quedarse en el mapa. Ahora, para transformar,
vamos a dividir esto y conectar la
ubicación de nuestro actor. Ahora, agregamos las luces. Vamos a verlas en nuestro juego. No existen o
algo no salió bien. Vamos a comprobarlo.
Vayamos a nuestra función. Los pasillos. Son más grandes que uno, sí, o bucle más índice de eso, y si pertenece a especial, si no pertenece
a azulejos especiales, siempre las pequeñas cosas. Ahora, he visto luces
que son diminutas. E vamos a arreglar eso. Vamos a presionar para. Vamos
a nuestras luces de pasillo, y aumentemos
esta altura a dos. Voy a volver a mover
el escudo. Mi tal vez uno era el
correcto o el tipo también. Voy a poner esto aquí. El otro tipo. Pon
esto aquí, guárdalo uno. Vamos a compilar y ahorrar. Voy a jugar. Este aspecto de luces. Luce bien. Tenemos que mover un poquito de
espadas, pero eso está bien Esta tiene dos espadas. Éste tiene un escudo, por cierto. Agujeros. Por qué cada
hay dos agujeros. Sostén el sod dos. B es
aleatorio y puede suceder. A lo mejor podamos poner alguna
rama en el segundo tipo. Conecta esta bola aleatoria aquí, así hacemos que el segundo tipo sea
un poco más raro. Compilar y guardar, Lwer las
suelas un poco también. Es demasiado alto. Bien. Mi creo que esto está bien porque esto lo
vi un poco redondo. Voy a levantarlo un
poco. Inclínelo un poco más. Queremos más bajo. Creo que suelo, más bajo puede estar
bien, puede que no lo esté. No veo, no sabemos. Las luces. Entonces se ve bien. O sea, vamos a ser pi
con vista, así que casi bien. Sí, creo que están bien. Pero lo único que
falta es la luz. Entonces agreguemos la luz. Vayamos al plano. Vayamos al poste de la lámpara porque van a ser
hijos de la farola, y voy a presionar add Vamos a
seleccionar luz puntual. Esta es una luz puntual enorme, vamos a traerla aquí en la lámpara, y cambiemos los ajustes a lúmenes y volvamos a usar gs 500. Y el color debería para el 97 A uno. Se ve bien. Ahora la
radio de atenuación debería ser. 800 y el radio de origen 50 y el radio blando a 50. Y vamos a
dejar que se enciendan
las sombras porque creo que está bien. Ahora, voy a duplicar esta luz y moverla por
aquí de ambas luces encendidas. Voy a compilar y
guardar y vamos a verlo. Yo. Tenemos algo de
iluminación en nuestro laberinto, empezando a conseguir un nivel más vivo, se parece más a un nivel de juego. Derecha. Creo que esto
es para éste. Te voy a
ver en la siguiente. Adiós.
52. Mecánica de trampas y sistema de daños: Hola, y bienvenidos de nuevo al Taller de Diseño de
Juegos Motor
real cinco Creación de
RBC de Acción
Procesal Tangente Anteriormente, agregamos
algunas luces en Armas. En realidad, agregamos
todas las luces Mae. Um Son un poco cuadrados porque
están proyectando sombras. Pero prefiero dejarlo
así en vez de no proyectar
sombras o
colocarles un montón de vuelos. Podríamos contrarrestar
esto colocando una luz puntual en cada
lado, u otras formas. Pero por ahora, lo
vamos a dejar
así porque vamos
a añadir algunas cosas más. Vamos a agregar algo de niebla. Vamos a agregar efectos de post
procesamiento. Entonces después de todo esto, podemos comprobar cómo
arreglar las luces. Ahora, lo que
vamos a hacer es ir a nuestro generador de laberinto y es
hora de empezar a traer
algo de piel de utilería. Entonces, vamos a
crear una función. Llamemos a este dueño de utilería. Vamos a la
gráfica principal y llamémosla. I. Ahora, recuerda cuando dije cuando estamos
construyendo el elevador, no
lo vamos a posponing ahí. Vamos a nuestro
elevador, para estar aquí. Cortemos esto de aquí. Vamos a nuestro
posponer y pegarlo. También necesitamos hacer lo
mismo o nuestro pecho. Ven aquí. Voy a conseguir estos nodos, los vamos a cortar
, controlar C, y pegarlos con
control V. Ahora. Vamos a crear un utilete
que estaremos desove a la mayoría de las
fichas de la mazmorra Vamos a estar
desove en pasillos, y va a ser una trampa Entonces, cuando el jugador lo pise, nos estaremos dañando. Vamos a ir
a nuestro contenido. Vamos a ir a nuestra carpeta de
planos y nuestra carpeta prop y hacer clic
derecho y crear una nueva que se va
a llamar BP p.
ahora vamos a abrirla. Cor por aquí. Y antes de
continuar con nuestra trampa. Esta es la primera
vez que necesitamos
tocar un poco a nuestro
personaje. Entonces vamos a ir al contenido. Vamos a ir
de arriba hacia abajo, vamos a ir
a planos y abrir nuestro carácter PP de arriba hacia abajo Y sólo tenemos que hacer
algo muy sencillo. Lo mismo que hicimos
con los remolcadores en las paredes, tenemos que hacer por el
componente cápsula del jugador Entonces seleccionaremos el componente
cápsula, iremos a sus detalles
e iremos a remolcadores Y agrega la etiqueta o jugador. ¿Y por qué hacemos esto? El motivo
es porque, por ejemplo, digamos, para nuestro
jugador, vamos a tener un me me ataque, yo, yo. Creo que es una
pronunciación correcta. Entonces vamos a tener un ataque conmigo. Y que mi ataque
estaría generando una colisión. Sea queremos comprobar lo que sea que
esté dentro de nuestro ataque me. No vamos a estar haciendo va
a ser un ataque mágico a mí. No va a ser una espada que
pudiéramos conseguir el swing de la misma. Pero aunque fuera una espada y podíamos conseguir
el swing de la misma. ¿Y si la espada
tocara el suelo? ¿Desencadenaría una trampa? No, no queremos que
esto suceda. Entonces queremos poder preguntar, ¿la cápsula real
del jugador tocó esta colisión? ¿Entonces lo hacemos a través del remolcador? Podríamos ir con checar casting al jugador
y obtener la cápsula, y luego comparar el otro
componente con la cápsula? Demostremos esto.
Vayamos a nuestra trampa. ¿Cuál es el plano?
Aquí está. Debería estar justo
aquí al final. No. Para toda trampa, vamos a necesitar una colisión. Y voy a usar
una colisión de caja. Pues, dejémoslo así. El visual cambiará en
función de nuestras medidas, y vamos a ir a la colisión de la
caja y elegir la superposición de inicio. No. No vamos a pasar por todo, pero vamos a pasar por los
dos pines que usaremos, el otro actor y
el otro componente. El otro actor se refiere al actor que comenzó
a superponerse con la caja. Y eso significa, como expliqué, eso incluiría el
ataque de may si estuviera
incluido en nuestro jugador. Si engendré,
pongámoslo aquí, se colisión. Digamos que lo tengo por aquí
para verificar muchos ataques. Ahora bien, si esto por alguna razón,
por ejemplo, por aquí, y era disparador
dispararía la
trampa si le preguntara si el otro actor si el otro actor es el personaje de arriba hacia abajo con
un elenco, por ejemplo. Pero lo que hicimos al agregar
esto Esta etiqueta de aquí, la P es que de este
nodo, otro componente, lo que significa qué componente
del actor que se solapa
conmigo se superpuso Si es la esfera,
tendría esta etiqueta P. Si fuera la cápsula de
colisión, perdón, no la esfera,
sería la etiqueta P.
Tendría la etiqueta P. Podemos preguntar como ug. Si tiene la etiqueta P,
podemos hacer lo que queramos. Ahora, lo que queremos
al personaje, conseguir el otro nodo actor. Pero en nuestro caso, vamos a explicar cómo
va a funcionar un
poco nuestra trampa . Déjenme traer dolor. Es hora de los
impresionantes dibujos. Deberíamos poner
temas musicales aquí o algo así. De todas formas, tenemos nuestros destinos
de trampa de caja en algún lugar de
aquí en el pasillo, y tenemos a nuestro jugador
que se mueve por ahí Cuando pisa la trampa, queremos activarla. Entonces los escalones en la trampa. Llamemos a este
duplicado a esto primero. Odio. ¿Correcto? Oh, cuando
el jugador lo pisa, llamemos a esto Fase uno. Entonces esto se activa. Ahora, en la fase dos, que vamos a que vamos a
estar aplicando el daño, que va a estar activando, pero atacando o tal vez esto debería ser más grande
y luego activado. No importa. Esto
dice ataque, por cierto. No estoy reconociendo la
palabra mirándola, pero dice ataque. Entonces, deberíamos preguntar si el jugador sigue en la trampa o si
no está en la trampa. Si sigue colisionando. Entonces, si está colisionando, vamos a estar
dañando al jugador Si no está colisionando, entonces no vamos a estar
dañando al jugador Entonces, si iba a hacerlo, volvamos a nuestro evento a nuestro evento superposición de colisiones. Si tuviera que bajar
cuando estaba atacando, entonces si conectaba
al otro actor, tengo una referencia directa
al otro actor. Entonces eso significaría
lo que sea que el otro actor sea ataque. Entonces necesito un cheque. ¿El actor está realmente
en mí o no? Hay muchas maneras en las
que podríamos hacer eso. De hecho podríamos
decir sobre la superposición final, y mantener una referencia a esto y cuando
terminemos de superponerse, despejando esa referencia
y continuando. Pero me gustaría
demostrar otro nodo. Si consigo la caja, pregúntele actor
superpuesto. Podría filtrar la clase
para que fuera mi de arriba hacia abajo. Actor, podría obtener
una referencia directa, como si pudiera obtener el
primer ejemplar y preguntar, digamos, por
ejemplo, aplicar daños. Yo aplicaría daño
a este actor. Pero vamos a estar usando carácter de
arriba hacia abajo
también para la IA. Nosotros en realidad, en este caso, vamos a estar
usando una copia pegando. No vamos a
estar usando a un niño, pero si fuera un niño, había una posibilidad de que esto le disparara de nuevo a
ese actor. Así que en realidad
tendríamos que o bucle. Si, por ejemplo, se trataba de
un juego multijugador, y queríamos que la camioneta
solo dañara al jugador original. Tendríamos que adelantar
bucle y comprobar si este es nuestro actor jugador. Oh, vamos a obtener un signo igual. Tenemos que emitir
primero porque esto devuelve una referencia de
objeto actor. Incluso si estamos
filtrando clase a través de nuestro personaje de
arriba hacia abajo, esto todavía devuelve
un a, un actor general. Oh, tendríamos que lanzar
a de jugador abajo
de personaje abajo. Y entonces podemos si esto es igual a nuestro jugador
en, por ejemplo. Y entonces tenemos que
echar a partir de aquí también. Esto podría ser un elenco puro. Ambos en realidad
pueden ser un elenco puro. No hay razón para que
no estén en la sucursal. También podríamos tener un
tirón o algo más, como si pudiéramos tener
una variable aquí, un bullying que podríamos conseguir y comprobar si el buling es cierto Podríamos tener un remolcador
hacia el propio estanque. Hay muchas
maneras de hacer esto. Este es uno de ellos también
mucho porque tiene dos casos, pero se puede hacer y realmente
no afectará a nuestra jugabilidad porque
no es tan complicado. Ahora bien, lo que tenemos
que hacer o para completar esto es conectar realmente este elemento array o
obtenerlo del elenco. Realmente no
importa aplicar daños. Y lo que se aplica daño
es sólo un mensaje que real envía a cualquier
objeto básicamente. Es un sistema que
Epics nos proporcionó. Ahora el daño base
debería ser uno. Y creo que explicamos
mucho en esta lección, y deberíamos conectar todo esto y cayó
todo en la siguiente. Adiós por ahora.
Nos vemos el siguiente.
53. Animación de trampas y SFX: Hola, y bienvenidos a
Game Design Workshop y Real Engine cinco procedimientos Dungeon action RPG curso de
creación Anteriormente, comenzamos a crear nuestra trampa. Vayamos a una trampa. Y agregamos una colisión de caja, y también agregamos que llamamos desde la colisión de caja
que comienzan evento de superposición. Donamos el solapamiento. Y nos preguntamos si el
componente que está tocando la trampa como la etiqueta P. Ahora, dijimos algunas
cosas sobre la superposición y cómo podemos obtener una
referencia al personaje, obtener los actores superpuestos. Este fue el
nodo importante que podemos obtener en cualquier momento los actores
superpuestos. Y luego hicimos una prueba pesada para comprobar si es nuestro personaje. Y si es nuestro personaje, aplicamos algún daño con un nodo predeterminado que Anil tiene que aplicar mecánico
que puede aplicar daño. Por supuesto, podemos crear
nuestra propia mecánica, pero ¿por qué no encargarnos de esto Aprovecha esto. Puede que no me ocupe de esto. Aprovecha. Oh, Ahora bien, si nuestra trampa se ha activado, veamos disparador esta vez. No quisiéramos
volver a activar para dañar instantáneamente
al jugador una y otra vez. Así que vamos a crear una variable bul. Llamemos a esto disparado. Vamos a traerlo aquí. Podría usar una rama bk después de
esto si se activa p, pero vamos a hacerlo un
poco más fácil y pongamos fin bion aquí. Si se activa, si
tiene el componente P ahí. Si el componente que nos
toca tiene el remolcador P, y no se activa, entonces necesitamos un aquí No, haz otra cosa,
no hagas nada. No. Lo primero que debemos hacer es decir que se
ha disparado la trampa. Pero ahora podemos
iniciar una cuenta regresiva con cuándo
atacará cuando la trampa soltará el gatillo
y atacará, básicamente. Va a ser una trampa de picos, así que va a estar empujando
algún pico hacia arriba. Pongamos un sonido de advertencia. Vamos a hacer un sonido para que el jugador sepa que
la trampa ha sido disparada. Ahora bien, el sonido
sería, vamos libras. Aquí está. No he comprobado
esto. Qué fuerte es, así que los usuarios de auriculares avisan. Esto suena como
la parte más grande, en una p aquí. Este es un sonido
no es exactamente un sonido, que es básicamente una clase que permite hacer algunas
manipulaciones sobre el sonido Ahora, después de que se reproduzca el sonido, inmediatamente después
del momento en que el sonido comience a sonar, no esperará a que termine el sonido. Vamos a hacer un retraso. Hasta que activemos nuestro t rap. Pongamos cero punto y Seamos generosos con nuestro jugador. Y después,
vamos a necesitar crear un evento personalizado. L et's llaman a este
disparado disparado tomado
del bleion, o ataque A está bien. Después de
eso, atacaremos. B si esto no fuera una
trampa pon y estaban saliendo, podría ser una trampa de flecha, por
ejemplo, Ataque está bien. Ambos están atacando. No vamos a
sentir ataque ahora mismo. Seguiremos con esta
lógica para terminarla. Pongámoslo más allá. Y después del ataque, vamos a tocar el sonido del ataque
o antes del ataque, será más lógico,
o al mismo tiempo. Entonces podríamos poner una
secuencia y decir, primero tocar el sonido
y luego atacar. Y después del ataque, vamos a conectar nuestro plop aquí para conseguir al
actor superpuesto y aplicar el daño. Y sabes qué,
restablecemos también nuestra trampa y creemos un evento personalizado de
antera Llamemos a esto revertir. Entonces después de que dañemos al jugador, o si no hay
jugador, no daña a nadie, vamos a demorar. Digamos 5 segundos. Y después de 5 segundos, vamos a volver a armar la trampa. Entonces voy a llamar al revés. Por qué llamo a la reversión. Porque para el ataque,
vamos a estar usando una línea de tiempo para
reproducir una animación. Y con base en esa línea de tiempo, estaremos revertiendo
y reiniciando la trampa Pero antes de comenzar
con nuestro código de línea de tiempo, necesitamos algo que animar porque la línea de tiempo se
utilizará para animar la trampa, y nuestro daño se está haciendo aquí La animación sería
algo aparte. Entonces, vamos a
ir a nuestra ventana gráfica, y vamos a medidas
estáticas Duplicar esto. Todo este cuerpo. Llamemos a esto. Picos. Encontremos nuestras mallas s, que deberían ser
las mallas de carpeta De veras me pregunto cuál
sería ese nombre. El find spike think tube. Cuerpo de la trampa, ve a
buscar el tubo de trampa. Y para espigas, yendo
al tubo trampa siete. ¿Correcto? Como puedes ver, su punto de pivote es
correcto desde el principio, como nuestra ubicación predeterminada del actor está en medio de los picos exactamente
aquí hacia la cima. Entonces van a ser pro cruding un poco del suelo
porque vamos a estar desovándolos en el Esto quiere decir que el suelo
estará en este lugar de aquí. Y los picos están mostrando un poco, lo cual es increíble. Ahora, lo que vamos a hacer, vamos a conseguir nuestros picos
en el evento start play. Vamos a conseguir la
relativeación, lo que significa obtener
la ubicación con
el sistema de coordenadas
de No comparado con el mundo, comparado con este plano Pero cuando los movemos relativamente o obteniendo una ubicación
en relativo, estamos hablando de
esta entidad de aquí, este plano, todos x Y
y Z de este plano, y distancias basadas en este centro de este
plano, este Ahora, volvamos. Promovemos esta variable. Lo nombró perfectamente para nosotros. Podríamos
haberle especificado picos, pero está bien. Ahora, agreguemos una línea de tiempo. Tendrás que nombrarlo,
y vamos a conectarnos de
nuevo para jugar desde el principio y
volver a vers ferment En el acabado
, vamos a cambiar en función de la dirección en la
que va la línea de tiempo. A medida que encendemos, medida que cambiamos del suroeste, este es nuevamente un switch
basado en la enumeración Esta es una
enumeración de dos valores hacia adelante hacia atrás, y vamos a
conectar no la fecha, sino el final aquí. Y cuando esté al revés
y esté terminado, vamos a
dispararnos Vamos a
apagar el disparado. Entonces esto significa que nuestro
camión puede ser reactivado. Recuerda, la reversión
corre 5 segundos después de que haya intentado dañar
lo que sea que estuviera en ella. Ahora, jugamos la línea de tiempo, vamos a entrar en
la línea de tiempo, vamos a agregar
un camión,
vamos a agregar un camión de flujo. Y pongamos dos puntos. El primero estaría
en cero valor cero, y el segundo estaría
en 0.2 y de valor uno. Va a hacer clic en estos
dos Zoom para sentirse horizontal y vertical
para hacer visible nuestra línea. Y esta vez, como pueden ver, he elegido una manera de valor inferior a nuestra longitud de cinco
segundos. Ahora, podría cambiar este 2.2, pero puedo usar solo
usar el último fotograma clave, lo
que significa que usará el
último punto con el que he fechado Si tuviera más camiones, tomaría el último
punto del tiempo más largo. Ahora, volvamos a la nra. Y aquí vamos
a necesitar agregar un código muy sencillo de conseguir nuestros picos y esa
relativa aación Simplemente vamos a aprender del valor A a B en nueva ubicación. Vectores, y la A sería nuestra
ubicación relativa, la original. El B sería que
en realidad podemos codificarlo duro. Seleccionemos los picos, y del relativo que es cero, cero, cero, básicamente. Queremos ir 20 30, 30 serían ocho. 30 aquí. Vamos a conectar
Alpha a nuestra nueva camioneta. Ahora bien, lo siguiente que
debemos hacer es en realidad
poseer las trampas. Están bien, están trabajando. no tenemos un personaje,
pero nuestras trampas podrían dañarnos. Pero creo que esto es algo que
vamos a vivir
para la próxima vez. Tú el adiós.
54. Función de generación de utilería: Hola, y bienvenidos a Taller de Diseño de
Juegos motor
real cinco Convocatorias de
Creación de PZ de Acción de
Mazmorra Procesal Creación de PZ de Acción de
Mazmorra Anteriormente, terminamos con nuestro componente begin
over lap event. Comprobamos si
la trampa está activada, y si es nuestro personaje, dijimos que la trampa se activaría si no se activa,
tocamos un sonido, esperamos, tocamos
otro sonido y jugamos la
animación de ataque. Y pasamos por alto para comprobar si el jugador
sigue en la trampa Usamos una línea de tiempo para animar
los picos de componentes, que es una matemática estática que agregamos y la matemática estática de
la base de la trampa Y usamos la ubicación
relativa establecida para
mover los picos a través de la
alerta y nuestra línea de tiempo. También usamos un interruptor
que cuando la línea de tiempo es hacia atrás corre hacia atrás
en el evento revert, debería establecer la trampa
que no se activa Ahora, volvamos
a nuestro laberinto y espetemos nuestra trampa.
Lo primero es lo primero. Vamos a necesitar nuestras coordenadas de
mazmorra. Y en realidad vamos
a necesitar las llaves también. Voy a conseguir
en realidad los valores. Yo también. Voy a
claves y a los valores, y voy a promover esto a dos variables, variables locales. Voy a llamar a esta mazmorra. Éste, promoverlo
también al valor de Dungeon. Antes de continuar,
hablemos un
poco sobre cómo
va a funcionar nuestro grifo. Nuestra trampa spon trap, solo
necesitamos la trampa sponer El primer paso sería
pasar por nuestras coordenadas de
mazmorras Entonces vamos a
pasar por nuestro calabozo. Azul esta vez. No
sé por qué. Entonces vamos a pasar por las coordenadas de
nuestras mazmorras. Y vamos a
crear algunas reglas para comprobar si pertenece a
los mosaicos que queremos. Básicamente, lo que queremos estar
revisando es si es una habitación, o si es una habitación especial. Entonces no progreses. No engendrar la trampa. Aquí. No engendrar la trampa. Entonces, ¿qué
vamos a hacer? Esto llamemos de
nuevo a esto fase uno. Cosa impresionante dibujo. En fin, entonces, lo que vamos a hacer es
crear una función que va a estar llevando uno de nuestros
mosaicos a las coordenadas, tenemos las coordenadas, y sabemos si tenemos
las coordenadas, podemos conseguir nuestro azulejo. Pero vamos a conseguir nuestro azulejo. Y para ese azulejo, vamos a obtener la
ubicación del piso. Desde esa ubicación,
vamos a, vamos a crear una caja. Porque si nuestro azulejo es esto, entonces hay una distancia que
no queremos que en realidad se
genere
una pista porque digamos que
si se genera aquí, entonces el camión
podría ser así Y no queremos
que eso suceda. Por lo que en esta medida se debe
tomar eso en cuenta. Esta caja que vamos a estar creando usando veremos
cuando la creamos. Entonces esta es una de las razones. Hay muchas razones, pero el único problema con
este sistema en este momento es que si engendramos una trampa y está colisionando
con otra trampa, consideraremos que esto Digamos que es una trampa más grande. Esto es lo que podemos
Es una característica. Es una característica.
Crea trampas más grandes. Entonces, sí, el único problema con esto es que
esto se puede crear. Hay formas de contrarrestarlo, como podemos comprobar que
si cuando aparece la trampa,
¿ colisiono con otra Si choco con otra
trampa, entonces destrúyelo a mí mismo. Y entonces podemos ir a este engendrador de trampas y decir menos uno a las trampas
que has Por supuesto, esto requiere también algo que no
expliqué. Tendremos un sistema
que va de cero a los ttraps MC engendrados Y esta parte, las trampas MC
que vamos a estar desove, vamos a usar
una nueva variable Vamos a usar una variable
llamada nivel generador,
que será la cantidad de mazmorras que
hemos generado en una fila Entonces, si ésta es, por ejemplo, una, podríamos engendrar
máximo de dos trampas Si esto es dos, podríamos
engendrar dos más uno, así como máximo de tres trampas o ahora mismo más
tres, por lo que equivale a cinco Sí. En fin, eso es básicamente
lo que vamos a hacer. Nosotros a eso. Crearemos
este sistema para poder utilizarlo con diversos
elementos, no solo con las trampas. A lo mejor queremos
crear el total, pero a lo mejor queremos expandir esto agregando algunas
monedas de perno, por ejemplo, o una bolsa o algo
para estar desove al azar, y podría desovar
en una trampa Entonces usaremos
este sistema usaremos esta
función para hacer un sistema
para poder generar
cualquier cosa que queramos basándonos en nuestro nivel
generador de generación, y algunas reglas las vamos a crear Ahora, vamos a hacerlo. Baje esto. Y el paso de prensa, como dijimos, es que vamos a
crear algunas reglas para nuestros raps específicamente cuando
queremos que los genere, porque las reglas de
cuando estamos desove el ítem es una
parte diferente a la función, pero solo explica la función que estaremos desove Porque si engendramos, por
ejemplo, monedas, podríamos querer reglas diferentes los lugares en los
que estamos
desovar las Entonces la primera parte es para el nosotros, cuando tenemos el nosotros,
la segunda parte es, cuántos y localmente
donde los vamos a desovar Así que de nuevo, vamos a necesitar
un bucle de cuatro para cada bucle. Vamos a conseguir
nuestras llaves de mazmorra, y vamos a preguntar
si estas llaves contenían Con una matriz, vaya a
duplicar esto aquí. El primero serían
las coordenadas de la habitación. Una habitación coordina.
No queremos que llegue a ninguna habitación. Solo lo queremos
afuera en pasillos,
balcones, áreas especiales
y no áreas especiales Lo siento. El segundo
serían áreas especiales. Entonces no lo queremos ni tampoco de los si no los queremos en
cada uno o en ellos, necesitamos un. Vamos a presionar una sucursal, conectar este año,
conectar este año, hacer esto aquí, y
es descuidado pero listo Tenemos nuestra regla
que no engendran en azulejos especiales o coordenadas de
habitación Ahora, vamos a necesitar
nuestro mosaico como dijimos, y para obtener nuestro mosaico,
estas dos matrices se corresponden entre sí. Si solo obtengo nuestros valores y obtengo p y uso el índice
de este bucle de cuatro. Voy a obtener un índice válido,
el índice correspondiente desde
el punto final hasta el actor. Ahora, vamos a crear nuestra función, y llamémosla teléfono. A los apoyos. Ya sabes, interactiva, utilería
personalizada, algo Lo que vamos a
necesitar para la entrada es una variable llamada Max Max props Va a ser
del tipo integer, y vamos a necesitar
una variable de target, que sería el tile, va a ser tile PPP. Este es el actor que
vamos a estar usando consigue todo este actor de la t Porque estamos
consiguiendo esto desde afuera. Yo uso la flecha. Se puede ver, esta es
una característica tan agradable. Si paso de una función a una función a
otra función, y solo quiero regresar y
no recordar dónde estoy. Puedo usar esta flecha aquí, y me lleva a la selección
anterior, el punto anterior que yo s. oh, lo que quería decir es que vamos
a conseguir este objetivo, este valor de aquí. Y conéctalo aquí. Ahora, por último,
para poder generar cualquier cosa, vamos a necesitar una nueva entrada Y esta vez, va
a ser del tipo actor. Pero no va
a ser una referencia, va a ser del tipo de referencia
de clase, lo que significa que puedo decir qué
tipo de actor de clase quiero. Esto lo voy a demostrar. Vamos a usar esto
para generar algo. Así que cuando estamos
engendrando, desde la clase, realmente
puedo
ingresar una clase aquí, pero vamos a
estar configurando esto exactamente de qué tipo
de clase quiero Ahora, antes
de responder el actor, claro, necesitamos
algunas cosas extra. Lo que vamos a hacer es
crear una variable local aquí. Voy a llamar a este
contador y entero. La razón es porque
con este Mx props, podemos usar el contador
y Max props, crear un loop personalizado Entonces, si el contador es igual a nuestros x props, entonces nos detendremos Si no es igual, entonces vamos a abarcarnos. Ahora bien, lo siguiente que necesitamos es ¿dónde somos pequeños?
Necesitamos una ubicación. Aquí, obtendremos
nuestra ubicación de actor, que es nuestra ubicación de marea. Y ahora tenemos que
crear nuestra caja. Lo que vamos a utilizar es una función pura llamada
punto d en cuadro delimitador Esto significa que en un punto esta caja se coordina con medio tamaño siendo el
medio tamaño de la caja. Aquí, vamos a usar 300300, O Z, vamos
a dejarlo como está Voy a conectar
esto Para ser honesto, voy a añadir un
poco de altura. T para estar en el lado seguro de que nuestras trampas de caja sean un
poco más visibles. Voy a agregar un vector, voy a agregar un cinco aquí. Esto crea una caja de tamaño 600 básicamente porque nuestra
media talla es 300, pero no toma en
cuenta de lo que hablamos. A lo mejor hagámoslo un
poco más pequeño. Hagámoslo a encajar. Creo que nuestra trampa
es de 100 de longitud. No estoy seguro de cómo
comprobamos por estas cosas m3d. No puedo traerlo al
mundo y contando cajas aquí porque box, creo que está bien
ahora mismo está fijado a cinco, así que lo dije a diez,
uno, dos, tres, cuatro, cinco, seis, siete, ocho, son
ocho. Está bien, está bien. 250 está bien. Y
ahora nuestras trampas no van a desovar en los bordes Hay una opción automática para la anulación de manejo
colegial. Por ejemplo, siempre
desove, ni cosanos, tratan de simplemente la colocación,
pero No podemos usar para evitarlo. Intentamos ajustar la ubicación,
pero siempre engendramos. Y eso creará un
poco mejor espaciado. Ahora, por último, tenemos que
continuar con esta función, pero creo que esto es algo que vamos a
dejar para la próxima vez. Lo único que necesitamos
cambiar en este momento es solo una ventaja de optimización. Vamos a ir a trampa BP. Vamos a ir a nuestra caja, y vamos a ir a
colisiones sobre detalles Vamos a seleccionar
una colisión personalizada. Vamos a seleccionar ignorar todo excepto el pom. Esta colisión sólo
se desencadena cuando un poema se superpone, choca con él, y todo lo demás es
ignorado Creo que esto es para éste. Te voy a
ver en la siguiente. Adiós.
55. Plano de decoración de habitaciones: Hola, y bienvenidos a
Game Design Workshop, n real Engine five
Procesal Dungeon action RPG curso de creación Anteriormente, comenzamos con
nuestra propia función de utilería, y continuamos almacenando el mapa de Dungeon como
clave y valor En variables locales. Y luego continuamos
con las reglas de dónde desovar nuestras trampas Y comenzamos a crear la función que
generará apoyos personalizados Utilizamos para las entradas,
los apoyos Max, el mosaico VP objetivo y la clase que queremos generar Creamos un contador
en nuestra función, que en realidad
desconectaré esto y solo max props porque simplemente no me gusta ver la
línea, y de aquí, vamos a desconectar
este tipo más el fondo, y aquí, solo
voy a apuntar Y la razón por la que puedo volver a hacer
esto es porque esta es una función
y los valores de entrada, podemos simplemente
llamarlos como variables. Ahora, después del contador,
cuando sea cierto, simplemente
nos detendremos,
no hagamos nada, así la función está completa. Antes de eso, en lo falso, estaremos engendrando a nuestros actores Ahora, comprobaremos si
el actor es válido. Por si, por alguna
razón, no lo es. No genera, a
pesar de que creamos intentamos
ajustarnos y aún colisionando Si lo tuviéramos para tratar de
ajustar la ubicación, no ppone si sigue colisionando,
entonces necesitaríamos Pero si lo tenemos en
tratar de ajustar la ubicación, pero siempre engendrar,
en realidad no necesitamos esto Pero en caso de que
quieras experimentar,
vamos a dejar esto es válido aquí porque la forma en que se
manejan las colisiones aquí, necesitan un poco de eso arriba en los
planos y con lo que están colisionando y
cómo Oh, queremos hacer esto Lo que vamos a hacer es sumar a
nuestro actor que responda, nuestra trampa que engendramos a
los actores para destruir lista Entonces, vamos a
necesitar encontrar la lista. Aquí está, y vamos a agregar el actor
cuchara. Si es válido. Si no es válido, entonces ya
terminamos con ello. Lo que hacemos a continuación es promover
agregar a nuestro mostrador más uno. Y tenemos que
poner también el contador. Recuerde, el control es
para es para el ajuste. acaso queremos
hacer la cuchara en pons pone si está colisionando, queremos experimentar
con esto Simplemente agregaremos una nueva variable, y la vamos a
llamar y y trice Y vamos a aumentar
esto también más uno. Consígalo también. Desde
cada adición, el pedido realmente no importa. Ahora, nos vamos a conectar
desde el no es válido aquí. Vamos a agregar a las reglas
originales o o b. Y vamos
a conseguir trie plus Ahí está el máximo aquí, aquí. En realidad no más, mi error es mayor que los apoyos Mx
multiplicado por dos Barre dos veces, básicamente. Intenta sumar el
doble de los apoyos Mx en caso de que los apoyos
no estén desove Porque nuestro primer contador cuenta cuántos
son engendrados Nuestro segundo contador X sobre cómo ha habido que
engendrar algo Porque después de un punto, como,
digamos, por ejemplo, en el laberinto generar
o nivel 25, este número podría ser con un sistema que no está
desove cuando está colisionando Sería desovar cinco
trampas en un punto, por ejemplo, o no podría spa en realidad, cuando no está
colisionando,
no podría desovar
después Podría haber tantas trampas que no sería
posible engendrar más Entonces esto se volvería infinito, y entonces
bloquearía nuestra carga. Se detendrá ahí
y nunca continuará. Básicamente aplastar nuestro juego. Entonces después de esto, vamos a ir
a conectar esto por aquí, el inicio de la sucursal, y completará
nuestro bucle con una seguridad contra fallas del doble del
número de nuestros apoyos Mx Ahora, vamos a llamarlo
en nuestros accesorios Spooner. Vamos a traer los apoyos constantes de
spon. Vamos a conectar
esto a postes. Piensa que sí,
porque si es nuestro descordinate, o si es un azulejo especial, no
queremos que algo suceda.
Queremos cuando no lo es. Ahora, voy a conectar los valores de
mazmorra con el objetivo, que son nuestras pilas, las matrices
correspondientes Para clase, voy a
seleccionar la trampa. P trop Hagamos los apoyos Max. Ahora, vamos a
crear una nueva variable. Vamos a
llamarlo nivel anator. ¿Tenemos un nivel de generador? Azulejos, Tamaño Max laberinto, Mx azulejos. No, nosotros no. Entonces, deberíamos tener
un nivel generador, y vamos a traerlo aquí. Ahora qué, hagamos también instancia y expongamos en spawn, para que podamos progresarlo
cuando engendremos el laberinto Entonces déjame recordarte de nuevo, tenemos que volver al
menú principal, ir a nuestra gráfica. Compilar y guardar el ma guardar
y compilar el laberinto primero, e ir al
menú principal, y sólo esto. Laberinto. Ahora tenemos el nivel generador. Empecemos desde el nivel uno. Volvamos a nuestro laberinto. Con este nivel generador, lo
vamos a sumar,
digamos más uno. Hazlo simple el primer
nivel tiene dos trampas, el segundo nivel tiene tres,
y continúa y continúa. Demostremos
lo que creamos. Vamos a empezar. Y vamos a subir. Aquí estamos. En trampa aquí, una trampa aquí, la
mezcla muy bien. Desde arriba, no estaríamos
para contar mucho bien que lo haríamos, pero los vamos a esconder con alguna niebla y, algo de iluminación
extra. A distancia, sigamos haciendo algunos apoyos para nuestras
habitaciones porque ahora mismo, iluminadas, están un
poco vacías De hecho, vamos a mostrar esto. Vamos a nuestras decoraciones, seleccionemos nuestro techo
y fijemos visibilidad. Para ser un juego de visibilidad,
perdón, oculto. Eso, creo que
no lo va a ocultar. Dijimos un juego
oculto de visibilidad, para que ahora podamos ver lo que
sucede dentro de nuestras habitaciones. Ahora bien, si no
tuviéramos esta luz de barrio, las habitaciones estarían muy oscuras. Además de utilería, sí necesitamos
tocar algunos relámpagos
también en las habitaciones Y esta vez, vamos a
crear otra manera. No lo agreguemos como lo
hicimos con este utilería, con las trampas Vamos a crear otra
forma de hacerlo. Así que tenemos
bastantes ejemplos de
cómo rellenar bloques
básicamente en nuestro laberinto. Para eso, vamos
a necesitar un nuevo plano. Ir a utilería. Vamos a hacer clic, crear una
nueva clase de blueprint, escriba actor, va
a ser BP, room, props Ahora, vamos a engendrar los accesorios de
esta habitación. Vamos a ir a
nuestro generador de laberinto. En realidad vamos a detener
la jugabilidad. Y de lo completo
de nuestro bucle fuerte. Sólo vamos a copiar ta
este bucle for para cada bucle. Y para la matriz,
vamos a elegir todas las ordenadas de habitación Para todas nuestras coordenadas de habitación, vamos a obtener nuestros valores. En realidad, vamos
a conseguir nuestro calabozo. Esto es, voy a encontrar
al actor apropiado. Entonces esto nos dará todo el
actor, todo el actor de habitación. Básicamente, todos los azulejos
que pertenecen a las habitaciones. A partir de ahí, voy
a ser dueño del actor plus. Voy a dividir
la transformación. Voy a conseguir y voy a conectarlo
a la ubicación. Para la clase, vamos
a seleccionar los accesorios de la habitación. Para ser honestos, necesitamos
una variable más. Vamos a nuestros accesorios de habitación. Voy a abrirlo, abrirlo, ir a variables y
crear direcciones. Sería un
mapa de erección. Y el segundo
sería el pulion como tenemos en nuestras baldosas, y vamos a
hacerlo incienso comestible, exponer sobre desove Volvamos al generador de laberinto. Vamos a refrescar esto
en realidad cae. Y vamos a obtener la
dirección de nuestro mosaico, el array de direcciones
y conectarlo aquí. Ahora, estamos desove habitación apoyos actor a cada
azulejo que es una habitación, y sabemos sus direcciones Entonces sabemos donde tenemos una pared y donde
no tenemos una pared. Creo que esto es para éste. Entonces en la siguiente, podemos explicar cómo
va a funcionar este plano Adiós por ahora, S
eres el siguiente.
56. Conceptos básicos del creador de utilería de habitaciones: Hola, y bienvenidos de nuevo al taller de diseño de
juegos y R sine five procedural Dungeon
action ps curso de creación Anteriormente, terminamos con
nuestros accesorios en accesorios personalizados. Terminamos nuestro ciclo agregando nuestro actor a los
actores para destruir. Comprobamos si el actor
que engendramos es válido, si es válido, estamos
aumentando el contador Si no es válido, estamos
aumentando los intentos, lo que hacemos también cuando
aumentamos el contador. Que intenta dijimos, va a ser una variable. Por si acaso queremos cambiar
esto para ajustar la ubicación, pero no engendrar si
está colisionando Continuamos con la creación de
nuestra gama de habitaciones A. Continuamos haciendo para cada bucle en todas las coordenadas de nuestra
habitación, y generamos el plano que
creamos los apoyos de sala BP,
que es un plano que
creamos una variable,
llamada direcciones,
y transferimos nuestras coordenadas de mosaico
de
nuestra habitación al
actor generado creamos los apoyos de sala BP, que es un plano que
creamos una variable,
llamada direcciones, y transferimos nuestras coordenadas de mosaico
de
nuestra habitación al Ahora bien, ¿cómo usamos a este actor y cómo usaremos
estas indicaciones? L et va a este actor. Lo primero que vamos a hacer es que cuando el actor esté arado, vamos a conseguir
nuestra dirección, y vamos a
pasar por nuestros valores Valores, y vamos a
para cada bucle a partir de valores. Lo siguiente que
vamos a preguntar si el valor es verdadero o
no, cuando es cierto. Significa que podemos
pasar cuando no es cierto, que hay un muro. Oh, vamos a almacenar cuántos tenemos cuando
no tenemos una pared, o cuántos vacíos tenemos. Llamemos vacío a este bar. Vamos a hacer que
sea una
variable de tipo único del tipo integer. Y cuando podamos caminar, aumentaremos cuando
podamos caminar, aumentaremos esto en uno. Ahora, lo segundo que hacemos
es que vamos a crear otra variable
esta vez de NRA, va a ser NRA entera Entonces vamos a llamar a
esto no lo sé, vals. Y vamos a aquí, y le vamos a sumar
índices que tenemos muros. Entonces ahora tenemos dos
variables que
tenemos cuántos lugares vacíos. Hay cuántas
entradas, salidas, pasos, lo que
sea que podamos caminar, y también tenemos una variable que tiene cuántos muros existen
en nuestra baldosa actual Recuerda, cuando engendramos esto, engendramos uno de
ellos en cada ficha Entonces nuestra habitación cuenta con cuatro azulejos. Significa que tenemos de P
room apoyos en cada habitación. Entonces cada habitación tiene
cuatro accesorios de sala P, uno en cada pasillo En el tiempo anterior que
engendramos en antorchas, porque lo primero que
vamos a estar desove es En realidad, vamos a hacer
dos cosas al mismo tiempo, pero lo vamos a hacer
con una secuencia básicamente, van a
suceder simultáneamente. Oh, cuando engendramos los porches, usamos en nuestra ventana gráfica en
nuestra decoración en un plano
declarativo, usamos Esa es una forma de hacer las cosas. Otra forma de obtener una ubicación específica
es conocer la ubicación. Si sabemos que el centro
de nuestro plano cero, relativamente Conocemos algunos lugares, ya que sabemos que nuestro
azulejo es de 600 por 600 Sabemos que a mitad
de camino del centro se encuentran 300. Bueno, vamos a crear nuestro
nuevo plano para antorcha. Llamemos a esta habitación antorcha. Al instante, puedo ver la vieja
antorcha que usé una en malla. Porque esta debería haber
sido la habitación me antorcha. Voy a abrir la
antorcha BB y voy a cambiar la malla por la antorcha grande.
Esta es la antorcha correcta. Sí necesito que el muelle esté bien, compilar y guardar, y
vayamos al porche de nuestra habitación. Creado aquí. Ábrela. Voy a guardar todo
en mucho tiempo desde que salvé. Voy a añadir.
En realidad, ¿sabes qué? Puedo ir a la antorcha grande. La antorcha BP, sólo
copia. Estas cosas. Pégalos. Voy a cambiar la estática
a la antorcha pequeña y poner la partícula
en menor. Bien. Y ahora también puedo copiar y pegar el comportamiento
del gráfico de eventos. El mismo efecto. Jugar play desde el principio aquí, realmente
no importa ya que
esta es una línea de tiempo en bucle Lo haría si nosotros en
algunos otros escenarios. De todas formas. Cambiemos
el regazo de la luz 4-5 k Cambiemos el radio de 400 para compilar y guardar. Y ahora tenemos nuestra
propia antorcha de habitación. Volvamos a nuestro cuarto de utilería. Y antes de que propongamos a cualquier actor, en realidad
podemos hacer
algo diferente. Podemos agregarlo de niño. Voy a agregar un actor infantil. Voy a ponerle nombre antorcha de habitación. Y voy a poner su
clase a antorcha de habitación. Yo compa seguro, ahora puedo ver dentro
del plano. No. Pregunta o primera regla. Eso sería si
tenemos alguna pared. Voy a conseguir
mis muros variables. Voy a preguntar es la
longitud mayor a cero. Si no es mayor que cero, entonces voy a
destruir este componente. Ya no necesitamos esto. Esta habitación no tiene paredes. ¿Qué sería una
habitación sin paredes? Sería una habitación que tiene
una puerta básicamente porque una puerta y ninguna otra dos
puertas, una, dos puertas. Entonces, si vas a pintar, esa sería una habitación que tiene una puerta por aquí, y una puerta. Por aquí. Así que el resto de la habitación
no tendría paredes para ello. Esto estará abierto y
el lado estará abierto. Tiene básicamente cero
paredes para agregar una antorcha. Ya que nuestras reglas se
basan en si el jugador puede
moverse a cada lado. Volver a la programación.
Ahora lo siguiente que necesitamos son las direcciones. A partir de eso, vamos
a conseguir las llaves. En realidad, aquí, vamos
a obtener una dirección aleatoria
de las paredes. Aleatorio. Esto, si recordamos correctamente, hemos almacenado el índice
del que no teníamos muro. Así que incluso teniendo dos
o tres paredes, obtenemos una pared aleatoria
reemplazamos nuestra antorcha. Como dije, necesitamos establecer la ubicación
relativa de este Nuestro B, estamos fijando la ubicación en
base a las coordenadas
del plano Porque sabemos que el tamaño de la habitación va
a ser inhibidora. Ahora, he
calculado previamente algunas ubicaciones que creo que fueron correctamente. Puedes crear el tuyo propio. Lo que vamos a usar
es un se Para el índice, vamos a obtener
las indicaciones. Tenemos una
pared norte, una pared este, una pared sur y una pared oeste. Para el muro norte,
voy a poner 40,
150, y para el Este, voy a poner -340,
50, 250 es la altura, y x e y son
los ejes x e y -40 para el sur y 300 para x, y, y 250 para z y 300
menos cien 42 50. Deja que me quede aquí. Cien 40 50. Ahora, colocándolo en un
lugar aunque como mover esto ahí y allá y allá. Pues no siempre tienen
la rotación correcta. Nuevamente, tenemos
que verificar cuál debería ser la
rotación correcta si estaba aquí, cuál debería ser la rotación
correcta
si estaba aquí, y así sucesivamente. Ya lo he hecho,
así que tenemos los valores, y también vamos a conseguir la antorcha de habitación y establecer relativo. Esa
ubicación relativa. Oh, Dios mío. Quieren escribir y desobedecer. No hay ubicación, lo siento,
establecer rotación relativa. Como pueden ver, lo obtuve
de la línea de ejecución. Así que ahora puedo elegir el
porche de la habitación porque tiene un sistema que
me da algunas opciones de reinicio
que me podría encajar. Y si, esto me queda extra. Y otra vez, voy a
seleccionar voy a esto. Ahora, ya que estamos usando
dos veces esta variable. Porque tengo un azar aquí, obtendrá un
valor diferente aquí y aquí. Entonces tengo que promover
esta una variable. Aquí. Voy a esta
variable a dirección aleatoria. Y voy a traer dirección
aleatoria aquí. Aquí, aquí. Bien. Ahora, sobre las rotaciones, necesitamos 90 al norte Necesitamos 180 oriente,
necesitamos menos nueve. Sur y cero en poniente. Y eso sería todo.
Ahora tendríamos algunas luces en nuestras habitaciones.
Vamos a ver esto. Y sí tenemos algunas
luces en nuestras habitaciones. Si quieres diferentes
localizaciones, claro, puedes experimentar
con los números, los
encuentro o no. Creo que esto va a
ser por éste. Vamos a continuar
en la siguiente con el resto del
propósito de las habitaciones. Boe adiós.
57. Finalización de la decoración de utilería: Hola, y bienvenidos a Game Design Workshop
Under Engine five, Procesal Dungeon action
RPG, curso de creación Anteriormente, creamos nuestra
sala de accesorios para comenzar el evento de juego. Empezamos a llenarlo. Pero sacamos nuestros valores
de nuestras direcciones. Pasamos por alto, y
categorizamos cuántos muros están vacíos y cuántos
agregamos no cuántos, sino los índices de los muros
existentes en una matriz Entonces creamos nuestro plano
para nuestra antorcha de habitación, que está aquí mismo Copiamos pegados el comportamiento, cambiamos un poco
con los valores, y copiamos pegados también
las mallas estáticas, las luces No. Después, creamos
una pequeña función por aquí, pero función, una cadena
de eventos, si se quiere. Pero comprobamos
cuántos muros tenemos. Si no tenemos paredes, entonces destruimos la antorcha de habitación de
componentes hijo que hemos agregado
a nuestro plano Entonces si es cierto y sí
tenemos algunas paredes, entonces obtuvimos las direcciones, obtuvimos la dirección aleatoria. Estancamos una dirección aleatoria, y dijimos que la
ubicación relativa y rotación de
la antorcha de la habitación por algunos valores
que fueron precalculados Ahora, hagamos lo mismo para el resto de
los artículos de la habitación. Para eso, vamos
a hacer un switch. En int. El índice int
partiría de uno. Ahora pin predeterminado, y
agregaremos índices hasta cuatro. Eso es porque
vamos a estar cambiando en base al vacío, y no podemos tener
nada vacío. Podemos tener una vacía, que es una habitación, eso es así, y tenemos la otra habitación
aquí y la otra aquí. A lo mejor deberíamos haber borrado
el anterior, el espacio. Entonces la habitación contigua estaría aquí, y la habitación
contigua estaría aquí, la brecha aquí. Entonces esto tendría uno vacío, y comencemos con ese. Lo que vamos a necesitar
sumar a las medidas estáticas. Llamémoslos thatqu A y thatqu B o A uno,
pero llamémoslo B. Si tenemos un Mt, entonces mi regla que
agregué es que no vamos a
tener dos medidas estáticas Tendremos uno, vamos a estar usando dos en el
resto de las opciones. Oh, voy a esto de fin de cuentas. Entonces vamos a
conseguir nuestros mes estáticos. A M. Y a partir de esto, vamos
a seleccionar de una lista, vamos a elegir. Y para el índice, vamos a tener
un rango aleatorio. El rango sería de
cero a cinco. Y agreguemos cinco opciones.
Oh, por las opciones. En realidad tenemos
tres, pero vamos a jugar un poco con sus
posibilidades de desovar Entonces, voy a ir al contenido. Voy a ir a
nuestros meses estáticos. Voy a seleccionar esta tabla. Y hay una mesa más. Y ahí está esta ficha también. No creo que
haya otra. Creo que estas son las
tres variaciones. Y juguemos con las chances. Digamos que uno de ellos tiene
más posibilidades que los otros. Uno más tiene uno extra. Eso sería por éste. Y entonces tenemos que
fijarlo rotación relativa. Vamos a hacer eso. Ación. Lo que queremos hacer
aquí es con una masa, iterador, solo queremos
cambiar el ya Un
ángulo de giro de mesa cada vez. Vamos a usar a distancia. Va a usar 600 a 360. Ahora bien, ¿por qué no
cambiamos de ubicación? Porque cuando abarcamos este ítem, va a estar exactamente centrado, va a estar aquí. Pero lo que estamos haciendo es cambiar la rotación solo para tener
una aleatoria cada vez. Ahora bien, ¿qué hacemos cuando
tenemos dos o las paredes MT? Vamos a obtener
nuestras indicaciones. Vamos a conseguir nuestras llaves. Y luego vamos a hacer un
bucle áspero nuestras paredes. Por supuesto, con base
en nuestro elemento A, vamos a obtener la dirección
adecuada. De nuestras paredes,
necesitamos seleccionar una de
estas dos medidas estáticas. Para ello, vamos
al índice sería nuestro índice RA, porque vamos
desde dos o una pared. Entonces esto tendrá uno o dos. No he conectado esto
cuando ejecutamos el tercero, realidad
vamos a lete
la mesa estática, la segunda mesgan estática Ba como en un MT, solo
necesitamos una malla estática. Entonces lo hacemos cuando
sólo hay una pared básicamente porque la otra
habría sido una salida. Voy a conectar esto
aquí. Sigamos. Necesitamos estas dos medidas
estáticas. En caso de que solo haya
una pared para colocar. Esto no va a ejecutar
el segundo índice, pero no necesitamos un es válido aquí porque no
habrá error, probablemente. Lo siguiente que debemos hacer
es que vamos a aceptarme ático aunque sea A o B va a ser elegido
tres a través de este índice. Lo siguiente que debemos agregar es el nodo select ahora que en realidad
tenemos muchas opciones. Bueno, de nuevo, son cinco, pero esta vez
en realidad son cinco. Voy a borrar esto.
Voy a traer este selecto, que ya tiene cinco. Voy a conectar esto aquí. Voy a hacerlo. Aquí
necesitamos un azar. Andom aquí, cero a cinco. Un índice aleatorio, y los
tres primeros van a ser
los que hemos agregado. Los tres primeros son
únicos. Único. Para el resto de los tres,
necesitamos este
partido combinado con las casillas. Entonces este con el casco. Puedo ver ese rojo encima. Por eso sé que es
uno con el casco. Hay una más de esto, esta con las cajas más grandes. Este tiene dos pequeños. Este tiene uno más grande. No estoy muy segura. Ábrela. Ahora tiene tres cajas. Bien. Y ahora conseguimos uno de ellos. Lo siguiente que debemos hacer
es en la ubicación relativa. Nuevamente, vamos a necesitar
un selecto. Selección múltiple. Para el índice, esta vez, sí
necesitamos la dirección. Con base en la dirección,
vamos a cambiar estos valores a 54 norte. A 54 este, pero en y enésimo, y menos en los valores x e y
correspondientes T sería la rotación
relativa. R aquí. Esa pudrición aquí. Nuevamente, un selector,
gírelo a, nos limitamos a direcciones. Vamos con -90 090180. Si compilamos, vamos a
verificar el nivel. Y comprueba si nuestros
accesorios han generado. Sí, han engendrado.
Sus esquinas, bordes. Ahora tenemos algunos accesorios puestos
en las habitaciones. Creo que se ve bien. Me parece un poco
compensado en cada lado. Entonces, intentemos arreglar
esto por un segundo. ¿Y si los ponemos a
un poco más grandes? 1.2? Además, en estos momentos parecen mucho mejores. Sienten el lugar
un poco mejor. Ellos sí tienen una pequeña brecha. Las mesas no funcionan, pero me parece que no vamos
a ser capaces de realmente el infierno que estamos jugando. Ya veremos si lo es,
vamos a arreglarlo. No, ¿qué hacemos con
la cuarta opción? La cuarta opción sería
la opción de tener puertas. Ya no tenemos uno de ellos. Afortunadamente, pero digamos que
cuando teníamos dos puertas, no
podríamos
poner aquí un mach estático Lo que vamos a hacer es
crearemos algunas cajas, haremos cajas,
y les habilitaremos la
física, para que el jugador pueda empujar pero
esto es para la próxima vez, te
voy a ver luego pasar
58. Agregar elementos de física a habitaciones: Hola, y bienvenidos de nuevo
al taller de diseño de juegos, y motor real cinco
procesales Dungeon action rbs curso de creación Anteriormente, creamos algún
código para nuestros apoyos de habitación. Agregamos el código al cual basado en It basado en
el número de paredes vacías, cuando tenemos una
pared vacía, dos paredes vacías,
o tres paredes vacías,
ajustamos nuestras mallas estáticas, malla
S a otra cosa Y si no fuera necesario, al segundo nosotros,
lo conseguimos destruyó dos casos. Ahora, elegimos de la mesión aleatoria
seleccionada, tanto de la función, la entrada de eventos Y en la primera, solo establecemos una rotación
porque es un ítem. Y en la segunda, establecemos una ubicación relativa y rotación porque la queremos
en los bordes de la habitación. Ahora bien, lo siguiente
que debemos agregar, como dije, serán
los objetos de física. Para ello, aquí vamos a
obtener nuestra medida estática. Vamos a hacer una ra añadir una gota, y luego vamos
a para cada bucle. Vamos a conectarnos.
Aquí. Aquí. Y nosotros para bucle a través de
nuestras mallas estáticas No sea que lo que hagamos
es que sea y la estática sea una de las cajas Ten algo aquí esto.
Tenemos una caja. Iga, déjalo caer aquí. Y lo siguiente que
debemos hacer es leer aquí esta lectura aquí,
luego esa ubicación. Ahora, para la palabra ubicación, voy a la
ubicación del actor ya que nuestro actor
está encima de nuestro azulejo, y solo voy a agregar un
poco en los ejes del set. Como 20. Incluso es un poco
más alto que antes porque ya
hemos agregado altura de desplazamiento
a este actor, y luego voy a hacer un punto
aleatorio en cuadro delimitador Como hicimos antes, y con
tener talla 40, 40, y una. Voy a establecer
esto como una ubicación. Ahora bien, la razón por la que estoy dando un
poco más de altura es que queremos pero
vamos a habilitar la física
y ellos sí tienen gravedad. Caerán y caerán en un lugar
aleatorio cada vez, por lo que no
parecerán que
se han colocado en el
mismo lugar cada vez. Ahora, lo siguiente que debemos
hacer es un personaje arriba. No queremos que nuestro personaje
esté escalando estas cajas. Solo queremos que los
empujen por ahí. Y entonces vamos a estar agregando un tirón. Vamos a hacerlo. No. Ese tirón componente, lo siento, y vamos a hacer una
matriz a partir de aquí y poner tirón de H como elemento de
física porque
vamos a necesitar este tirón para
empujarlos con Ahora bien, lo siguiente
que deberíamos hacer ly, sería quizá Física. Oh, ésta no. Emula a mí. No habilitar la física, emular a mí. Yo quiero que esto. Ahora, hagamos un
poco de espacio. Ya que tenemos este mecánico
cuando no tenemos muros. Cuando este plano sea dueño, cuando no tenga muros, ejecutará esta mecánica, creará básicamente dos cajas Lo que podemos hacer toma un
poco y ya hemos creado otro actor
encima de nuestro actor. Por eso, podemos poner
un cuarto extra de cajas. Para ello, vamos a
ir a las habitaciones que tengan dos o tres espacios vacíos. Porque no queremos hacer eso
la habitación que tiene un
solo espacio vacío, va a ser dos chateada Pero cuando tenemos dos formas de
salir de nuestra baldosa o tres
formas de salir de una baldosa, entonces tener cajas adicionales
sería más aceptable Entonces para hacer eso,
vamos a ir al completado
de este bucle de cuatro. Vamos a crear un casi 30% podría no ser 30%,
pero lo intentaremos. Entonces vamos a hacer un switch, va a ser 30%. Encender int. Y vamos a sumar
y nueve en realidad
hasta el número nueve porque cero
va a quitar el viejo. En realidad no
necesitamos tantos. ¿Eso? Porque es más rápido
que eliminar esto. Yendo a sólo tres de ellos. Necesitas o nueve. Pero nosotros solo vamos
don int. Rango. De hecho vamos a dejar
el default para todo esto. Fallos de encendido. Tenemos de cero a nueve, y tenemos cero, uno, dos. Todo lo que esté por encima de dos
activará default. ¿Qué significa uno, dos y
tres P? ¿Qué hacen? Ellos en realidad spa
actor de clase. El actor
sería PP room plops. La transformación sería la ubicación de
nuestro actor. Dos, uno. F aquí desde nuestra dirección, vamos a maquillarnos
Vamos a sumar o valores, Norte estaría cerrado, Oriente estaría cerrado, Sur estaría cerrado, abierto, perdón no cerrado, abierto, así que todo básicamente
estaría abierto. Usamos el sistema que hemos creado cuando
todo está abierto, y entonces esto
abarcaría una física extra, extra,
cuadrados, ts, crea. Ahora bien, el único problema
con esto es que cuando
estamos desove esta habitación, Maze De hecho vamos a agregarlo nuestros actores de destrucción
y el matroide Tenemos la referencia aquí, y vamos a agregarla subasta. En cuanto a destruir, tráelo aquí. Vamos a enumerar. Ahora, podemos destruir esta habitación, pero no tenemos una referencia sobre esta habitación extra
que engendramos Pero no se preocupe. una referencia en esta
sala que está consiguiendo esto y hay un lazo muy
bonito, como los llamamos. Hay eventos que
puedes atar siguen escuchando hasta que estas gallinas cuando esto sucede,
siguen escuchando Ellos reciben un mensaje
cuando esto sucede. Oh, vamos a arrastrar
de aquí y decir:
No, no de aquí, perdón de aquí, de la línea de ejecución. Voy a decir,
encontrar en destruir. Porque cuando este actor está siendo destruido,
no este actor. Cuando nuestro actor que está desove este actor
queda destruido Es por ello que un drat de aquí y no
del valor de retorno Necesitamos evento. Digamos sobre destruido. Cuando nuestro actor está
siendo destruido, vamos a este y actor. Pero de esta manera, nos aseguramos que cuando
nuestro actor sea destruido, este plano
también será destruido Vamos a jugar. A ver si nuestras cajas engendraron. Responde, pudimos ver un
poco de movimiento, así que la física está funcionando. Ahora bien, no son la física
perfecta. No hemos jugado
con valores. Este es un lindo como vamos
a intentar entrar a la habitación, y va a ser
y lo bloqueó. Vamos a ser lentos
caminando por aquí. Si somos machos, los vamos a
empujar alrededor. Sí. Hablando de física
perfecta. No podemos ver cajas volando por
todas partes fuera de nuestro laberinto, ni siquiera escupiéndolas. Esto podría suceder porque la amortiguación
angular y la masa y no es realmente eso
pero creo que están bien No sucede a menudo. Y cuando sucede, es gracioso. Viste que éste se fue realmente
casi salió de la habitación. Ahora, cuando empecemos a jugar,
el techo, vamos a estar en. Entonces al menos ellos
se quedarán ahí. Pero con los ataques de may
y todo, podrían salirse del mapa. Seguirán siendo destruidos
cuando cambiemos de nivel. Oh, creo que esto
es para éste. Te voy a
ver el siguiente. Adiós.
59. Importación de Revenant y el plano de la torre Hellgate: Hola, y bienvenidos de nuevo al Taller de Diseño de
Juegos
yRel gen five Procesal Dungeon Action
ARPs En la última,
creamos nuestras cajas de habitación,
las de física, y las
generamos a través de nuestro código Creamos una matriz que buscamos bucles con
nuestras mallas estáticas Ponemos la malla estática en una caja. Establecemos la palabra ubicación para que sea un poco más alta que
el actor, así que caen. Establecimos que el personaje
no puede pisar, y les agregamos una tacha, que es pH para que podamos
ponerlos con nuestros ataques ma También establecemos simular
la física en true, por lo que ejecutan la física. Después, agregamos un
pequeño mecanismo de trampa, como si aprovecháramos
nuestro código para agregar un poco de cajas
adicionales a nuestra habitación sea más difícil para
nuestro jugador moverse,
que en realidad
usamos el bucle de proa que en realidad
usamos el bucle de proa de las dos paredes
vacías y tres vacías en nuestras fichas, que al final de la misma,
generaría una probabilidad de
aproximadamente 30% Empeñar al mismo actor con indicaciones
específicas. Siempre corre las
cuatro paredes vacías, y volverá a generar
nuestras cajas. Por lo que cada habitación tiene la
oportunidad de tener cajas adicionales, excepto la habitación que
solo tiene una pared vacía. Ahora, destruye a estos actores, ya que no tenemos una referencia
a ellos desde nuestro laberinto, usamos el
evento bind on destroyed, que hace referencia a nuestro propio actor que el laberinto destruirá. Entonces, cuando este actor esté
siendo destruido,
destruirá al
actor que ha engendrado Ahora, sigamos construyendo apoyos
adicionales en nuestro calabozo. Y el nuevo utilete que
construiremos
será la puerta del infierno, la torre, un plano que
atacará al jugador cuando
esté cerca con un ataque
automático, y será resguardado con IA Ahora, para completar el
código de esta torre, necesitaríamos tener la
IA y pocas cosas más. Entonces, por ahora, solo vamos
a construir las imágenes para ello. Vamos a ir
a nuestro contenido. Vamos a ir a planos. Vamos a ir vamos a crear otro los todos estos enemigos. A lo mejor las trampas deberían
estar en los enemigos. Pero puedes hacerlo fácilmente. Podemos ir a utilería, conseguir nuestras trampas y moverlas a
los enemigos Ahora, cuando estamos moviendo
algo en el motor, siempre es bueno ir al contenido, hacer clic
derecho y arreglar redirectores Ahí también es cuando
estamos renombrando cosas. Ayuda al motor
con los redirectores. Ahora bien, ¿qué son los redirectores? Básicamente, enlaces y caminos
para objetos en nuestro contenido. Una explicación aproximada de nuevo. Ahora, vayamos a
nuestra carpeta Enemigos, haga clic
derecho y seleccionemos
planos, tipo actor, y vamos a
llamar a esta puerta BP Ahora. Agreguemos una malla estática. Para la malla, vamos
a seleccionar el techo. Esto es grande. No queremos que sea tan grande. Vamos a
darle la vuelta a la escala de tamaño 0.5, y vamos a
girarla 90 grados. Entonces vamos a
copiarlo y pegarlo. Tócalo a sí mismo y para rotar el segundo uno al
otro 90 grados esta vez sobre el eje y. Ahora vamos a
seleccionarlos a ambos. Y para el elemento,
vamos a usar el Mm. Pero la instancia una,
la original. Ahora, vamos
a usar una partícula. Vamos a ir a
raíz y una partícula, que va a ser de nuevo,
cascada, no na gara. Para la partícula, necesitaremos descargar
nuestro personaje renacido Vamos a ir a depilncer. Vamos a ir
a la tina de nuestra biblioteca, y vamos a
ir a nuestra bóveda. En bóveda, vamos a
teclear renant. En caso de que no
tengas el activo. Vamos a ir al
mercado y buscar renacido Aragón
Revenant aquí está,
y lo vamos a
agregar al proyecto, o en realidad para ti, podría ser agregar a la
tarjeta porque primero, necesitamos agregarlo a la tarjeta y luego aparecerá
en nuestra biblioteca Ahora, cuando
lo tengamos en nuestra biblioteca, presionamos agregar al proyecto, vamos a regañar a nuestro proyecto
gen cose el nombre, y vamos a
agregar al proyecto Esto podría tomar un tiempo, así que voy a hacer una pausa aquí
y continuar después. Cuando hayamos agregado el personaje
renacido, aparecerá
una nueva carpeta a nuestro contenido, que sería nuestro renacido
paragon A partir de este paquete, necesitamos
establecer el sistema de partículas, que será el asado. No es suficiente. Cabeza asada roja. Rast rojo. Rojo. No hay rojo y
tenemos que crearlo. No hay problema. Comprobaremos
el que queremos. Creo que es ésta. Y es un poco pequeño. Tenemos que escalarlo y así fue. Lo hemos matado en todas partes.
Es por eso que uno en x, 30 en y, 20 en eso, y para
la ubicación menos y.Necesitamos hacer algunos cambios a. Voy a ser una, pero
tiene que haber algunos cambios. Vamos a abrir la partícula. Y vamos a
eliminar el de spawn, que es el
responsable de este resplandor No queremos este resplandor.
No borres esto. No necesitamos el emisor. Sólo necesitan estas llamas. Yo y guardar. I. ¿Verdad? Algo así como de un lado, en todas partes. Y bien. Además del color,
creo que necesitamos
cambiar la velocidad inicial también. Entonces lo hacemos más uniforme. Antes que nada,
cambiemos el color. Vamos a la tina de color inicial, seleccionamos no verde, no azul, sino rojo, pongamos. Misiva, vamos a
hacer lo mismo aquí, hazlo. Es más rojizo. Ahora ves lo
diferente, esto es así , cuanto más flameado. Pero en nuestro plano,
es más fibroso. El motivo es porque
cambié la escala en 30 20. Por eso hice la báscula, así se ve más así. Puedo escalarlo de nuevo, pero
me gusta el fibroso en. En fin, vayamos hasta aquí y
cambiemos la velocidad inicial. Entonces se extiende
un poco más. O distribución. No necesitamos un uniforme de flujo. Necesitamos un vector. El
uniforme es de a máx. Esta es una dirección. De esta manera, esa es una línea. Pero lo que usamos es un vector. Lo pude ver. Vector. Estoy en radio de velocidad de arranque. Lo siento, quiero que
esté en velocidad de arranque. Sí, aquí tenemos un vector. Bien, este es un vector, pero tiene sólo en
un eje sobre el eje. Tenemos que aumentar la
bility put y aquí y aquí menos diez menos diez. Entonces tenemos ida y vuelta
desde nuestro punto de partida, lo
hacemos tres
básicamente todos los lados. Entonces si volvemos a nuestro pozo, no haciendo nada,
H me salvó esto. Sí, ¿funciona? Solo agreguemos una velocidad con. Para ello, vamos a hacer
clic derecho e ir a velocidad en velocidad, vamos a seleccionar velocity
con. Esto lo logrará. Si volvemos, me salvé. Ni siquiera lo hizo como él. Creo que sé lo que está pasando
porque pongo x en uno, ponemos esto el 30, 2015, 15 miradas A. Voy a bajar esto también. 15 20 15 15 Sí. Es un poquito demasiado, creo, ve a etiquetarlo
un poco más bajo. 15 fue demasiado. Y cinco. En cuanto a baja ocho. No. Diez, estuvo bien con diez. Diez estuvo bien.
Dejémoslo así. Pongo también. ¿Correcto? En realidad no lo sabe
quién no sabe. Redujamos su vida útil, vaya a la vida útil y vayamos a un máximo de 1-2 0.8. No. Mi 0.5, vamos a tenerlo 22.5. Oh, es aún peor. Voy a encontrar
algunos ajustes nuevos, y
los vamos a hacer en la siguiente. Adiós por ahora.
60. Lección 3D 59 Integración de imágenes y laberintos de la torre Hellgate: Él Hola, y bienvenidos de nuevo a Game
Design Workshop rail Engine five Procesal Dungeon
Action Apres curso de creación Anteriormente, comenzamos a crear
nuestro plano de la Puerta del Infierno. Y nos pegamos con la partícula
de nuestro carácter renacido. Entonces jugué con los valores, y me
pareció aceptable esto. Lo que hice fue el sistema de
partículas, selecciono una escala diez a
todo, uniforme. Y en la propia partícula, cambié la velocidad
inicial a máximo cinco mínimo a
menos cinco de valor x. El valor Y sería cinco
a menos cinco nuevamente, y el valor z
sería cinco constantes. Ahora, para toda la vida, agregué el 0.4 en la
distribución mínima y el 0.5 en máximo porque
queremos un poco de desequilibrado hacia arriba pero
no tanto como antes Y para spe, cambié de diez era a 20 en el ajuste de
cuchara en tarifa, por lo que abarca en tasa Y creo que también
cambié la esfera. No. Lo dejé un ocho. Entonces, ¿cuáles son los cambios ?
Creo que ya deberías
tener esto. Y realmente rápido, escala
de diez sobre tasa de 20, vida útil de 0.4 y 0.5. Tamaño inicial dejamos tal cual. Velocidad inicial, cambiamos 00-55 de mínimo 00 a
menos cinco y menos cinco, y en el eje z cinco Ahora lo siguiente fue que
cambiamos el color, de co, a rojo. Y agregamos el código de velocidad. Ahora que tenemos nuestra partícula, vayamos a nuestra puerta, y necesitamos agregar algunas
variables y componentes de
variables más . Vamos a añadir un, un punto de luz. Lo dejaremos
como por ahora porque
vamos a manipularlo código, probablemente tome el código de porche. Vamos a agregar una cápsula, Y la cápsula es solo para colisión así que
en realidad podemos comerla. Entonces vamos a
escalarlo un poco. Vaya, yo lo seleccioné. Y si no necesitamos asustar, solo
podemos ajustar los valores, ser digamos 100 y digamos que las radios
cápsula serían. Sí. Aquí será donde
golpeemos a nuestro actor. Ahora, vamos a estar usando
esto para golpear a nuestro actor. Iremos a nuestras medidas
estáticas, las seleccionaremos tanto con control
como haciendo clic en ellas, e iremos a no
colisionar y no generaremos eventos de superposición ya que
esto aumentaría
nuestro rendimiento. Ahora, lo siguiente que
agregaremos es un componente aquí, aquí colisión, lo
dejamos como está por ahora, porque vamos a usar esto para programar ataques
y cosas así. Pero lo siguiente que
agregaremos es un componente giratorio. Movimiento giratorio. ¿Qué es el movimiento giratorio? Es un componente que
crea rotación. Tiene algunos ajustes preestablecidos, pero vamos a cambiar
como en vez de otros que 80, si presiono simula, van a ver que va
a estar rotando así Y la razón es porque está
rotando a todo el actor. Ahora, lo que queremos hacer es
simplemente rotar esta malla del ático. No queremos estar
rotando a todo el actor. Es mucha información
extra que
no necesita ser rotada. Por ejemplo, la
cápsula, la luz, y qué e incluso la
colisión de esfera de la que
seremos los decisores si estamos
enganchando al jugador o no Entonces, lo que haremos es seleccionar
el componente giratorio, ir a Ben graph,
traerlo aquí, al comenzar a jugar,
y seleccionar el componente de actualización. Ese componente actualizado. Y lo vamos a
conectar aquí, y para el componente actualizado, vamos a usar la raíz
de las dos mallas estáticas, que para nosotros en este momento
es una malla estática Voy a conectarlo aquí. Si voy a viewports
y la estimulación, también gira correctamente Entonces parece que giré la malla estática de manera
diferente que en mis nodos. Porque si lo tuviera
girado de otra manera,
era así. Hacer. Sí, de alguna manera, lo estropeé. Se está actualizando, está en la misma rotación, está
rotando de manera diferente. Estos son momentos reales increíbles. Todo esto ha pasado porque aquí cambié
las rotaciones Voy a
reiniciarlo todo. Un real tiene un problema cuando
estamos criando algo. Voy a
rotarlo desde aquí. Voy a ser padre en esto, y voy a rotar esto. Si simulo. Yo sólo voy a
cambiar 180 aquí. Creo que se
arreglará. Sí, está arreglado. Verifique ambos valores. Depende de cómo nos
conectamos y con qué rotación el
niño a la malla. Nosotros sistema para auto
cambiar rotaciones en coordenadas locales
basado en child De todas formas, ahora tenemos
algunas imágenes que van, L et's go lo engendran en nuestro laberinto Oh. Dejamos a este desove profesional con desove nuestras Y después de esto,
vamos a por cada uno. Ahora bien, ¿dónde
engendramos este heliado? Vamos a crear
una nueva variable, variable
temporal, una local. Vamos a llamarlo agujeros DM. Va a estar en el punto. Y va a ser
de matriz de contenedores. Voy a traer aquí,
para conectar esto aquí. Ahora bien, ¿cuáles serán nuestros cables de
temperatura? Van a ser las
zonas aisladas y los balcones. En estos lugares,
deberíamos tener enemigos. Voy a traer los
cables temp y voy a
anexar y luego volver a anexar Conecta los aros de los balcones. No debería ser un punto de entrada, debería ser de la estructura, habitación
S habitaciones ST, un cambio de tipo variable, ¿verdad? Porque nuestros balcones
conectan esto, reconectados. Porque nuestros balcones
y áreas aisladas son listas de
coordenadas básicamente. Entonces Conecta esto aquí,
conecta esto aquí, desconecta esto y
vuelve a conectarlo por si acaso Y ahora vamos a
romper la estructura y para cada uno para cada una
de las coordenadas. Y necesitamos algunas
reglas sobre cómo
vamos a engendrar estas puertas ele ¿Cuáles son las reglas
de ellos para desovar? La regla será simple. Cuando construimos nuestro laberinto, Bueno, no sucedió. Tenemos uno aquí. algunas cajas que llevan puesto este
símbolo. Entonces vamos a preguntar. ¿La caja tiene algún tipo de símbolos porque tenemos
uno que brilla demasiado, uno que brilla demasiado bajo, este que brilla encendido Entonces elegiremos estos puntos
para generar nuestras puertas infernales. Y usaremos
la misma técnica que usamos para las luces. Así que no engendran muy
cerca el uno del otro. Ahora, volvamos
a nuestra función. Dejemos de jugar,
y tomemos nuestro calabozo y enrollemos
nuestro mosaico actual Nuestra baldosa actual,
vamos a conseguir el piso. Abajo, antes que nada, vamos a conseguir materiales. Vamos a sacar muchas cosas
de estos pisos, así que voy
a leer al principio. Ahora, si vamos a nuestros pisos, por el contenido,
vayamos a nuestros pisos. Podemos ver que el elemento del CG es
el elemento cero, y lo mismo se aplica
a todos los materiales que puedan tener este CG como este suelo de
tierra, elemento cero. Ya que
lo hemos diseñado así, donde está el laberinto aquí, y siempre consideramos el elemento
cero, ese material. Oh. Vamos a preguntar
si este material es igual a nuestras instancias materiales
y materiales, ese sería GL que es el CGL CGL en uno y el g en
dos de un tercero Pero como me informan, no
se usa en ninguna situación
por defecto. Vas a poner una sucursal. Vas a usar un nodo, y vamos a
agregar un pin extra a esto y conectar estos tres. Aunque sea alguno de ellos, lo
sabremos y
seguiremos con
nuestra cadena de eventos. Pero creo que este es un buen punto de
parada para este. Te voy a
ver en la próxima. Adiós.
61. Fundamentos de elementos y tablas de datos: Hola, y bienvenidos de nuevo al Taller de Diseño de
Juegos y motor
real cinco Curso de
creación de simios de Acción de
Mazmorra Procesal creación de simios de Acción de
Mazmorra Anteriormente, terminamos con nuestra colocación de nuestras puertas infernales. Y cuando empezamos, también
arreglamos. Con un punto de quiebre. En realidad, no usamos
un punto de quiebre para arreglarlo, pero demostramos el
punto de quiebre. Va a quitarlo. Reanudar la estimulación, y solucionamos el problema con el material vacío
y nulo. Ahora, tenemos algunas puertas infernales, tenemos más o menos s. Aquí
hay un error. Vamos a averiguar por qué sucede esto. Volvamos a nuestro laberinto. Y no estamos preguntando a ninguna parte Sí, no
preguntamos en ninguna parte si las coordenadas son
una habitación especial. Entonces vamos a poner un o
aquí o toro adentro y también anunciar la regla que son
nuestras coordenadas contenidas
en las habitaciones especiales. Azulejos especiales. Entonces ahora, esto ya no debería
pasar, porque si es un
azulejo especial o está al lado de una puerta, vamos a poner el
material a nada,
vacío, y entonces no
va a engendrar Vamos a comprobarlo de nuevo. Esta es una habitación oculta. Es por ello que como nadie, ni puerta. Entonces todo parece correcto. Y lo siguiente que
debemos hacer es empezar a pelar el resto de las
cosas como el elevador, la caja, M un poco
de nuestra funcionalidad. Pero para hacer eso. Necesitas una cosa
más para prepararte. Necesitamos crear los artículos
y los artículos que se pueden soltar, ya que el elevador
requerirá un artículo, la caja requerirá
dejar los artículos, y así sucesivamente y así sucesivamente Entonces comencemos por ir a nuestra carpeta de planos y hacer clic
derecho y
crear una nueva carpeta Llamemos a estos ítems. Vamos a entrar en esta carpeta, hacer clic
derecho y crear un
blueprint plus of plus actor Y llamemos a este ítem BP. Ahora bien, este
artículo del plano BP, vamos a abrirlo. Este plano se
convertirán en todos los artículos. Y para ello,
vamos a estar usando algo llamado
tabla de datos que
es para los que son
nuevos una tabla de datos es como una colección de
datos en filas y columnas. Es similar a una
hoja de cálculo, básicamente. Y por eso necesita
un formato en las columnas. Y para usar un formato
en las columnas, usamos una estructura. Vamos a crear
esto muy rápido. Lo que primero necesitamos
crear es una estructura, que podamos definir nuestras
lúmas en nuestra tabla de datos Entonces vamos a
usar una estructura, vamos a ponerle el nombre ST items. Vamos a entrar en él. Ahora, esta estructura estará conteniendo la información
de nuestros artículos. Por ejemplo,
lo primero que necesitamos es un nombre de elemento es playnam El nombre del artículo está bien. Lo
segundo que vamos a necesitar, este es un artículo, qué
artículo es una manzana. Bien. Y este ítem,
¿qué tiene para una representación
visual? Tendrá una malla estática, por lo que necesitamos una malla estática. El nombre del elemento debe ser
del tipo string o name, pero string es mejor si tenemos elementos con guiones
y cualquier otra cosa Entonces necesitamos la malla. Vamos a llamarlo mesh, y va a ser
del tipo. Malla estática. Malla estática simple, no componente de malla
estática, y va a ser referencia de
objeto. Lo siguiente que vamos
a necesitar es un sonido de elemento. Como qué sonido
hace este artículo cuando lo recojo o lo
dejo caer o lo uso. Podríamos tener dos
sonidos para eso, pero vamos a
usar un solo sonido. Entonces vamos a
tener sonido de ítem. Y lo siguiente que necesitamos
sería una imagen de inventario. Entonces tendríamos a I Mach Primero voy a
crear los nombres y luego establecer las variables. No van a ser mensajes
estáticos, claro. Artículos sonido inventor imagen. Ahora, después,
vamos a tener en una variable para explicar si podemos recoger
esto en el inventario o no. Llamémoslo al inventario. Entonces el último realmente segundo al último sería si el ítem es. Entonces vamos a llamarlo taxi. No creas que esa es la
ortografía. Podría necesitar una K. No
estoy seguro. Está
bien. Está bien. Y si es escabullirse, entonces sí necesitamos una cantidad también Oh. Llamemos a esta cantidad. Ahora, el caso de
que se agregue al inventario. Vamos a
tener pastillas de oro. El oro no va
a ir a un inventario, pero va a ir en
un mostrador de nuestra pantalla. Oh, vamos a seleccionar este
aban Vamos a sonar. Tiene que ser de und Bound cube porque
estamos usando cubos de sonido. Y la imagen inventada debe
ser del tipo textura. En realidad textura a D. La diferencia de textura
y textura dos D es que la textura es una categoría
general, que incluye como mapas de tubos, dos detecciones, objetivos de render, texturas de
volumen,
muchas cosas Donde textura a d se especifica a una
imagen de dos de textura que estamos usando. Oh, voy a salvar esto. Voy a cerrar
el stru en realidad. Necesitamos establecer
Staab en lingotes, y necesitamos establecer la
cantidad también en entero Entonces esto es contar uno, dos, 34, y Staab es sí o no Voy a guardar
esto y cerrar esto, y volvamos a nuestros artículos. Oh, para nuestro plano de artículo. No, no, no, no
volvamos a nuestro plano de artículo. Tú vas a traerlo por aquí. Vamos a pre parada a la carrera porque no
hay necesidad de que el
juego esté corriendo. Ahora, lo siguiente que necesitamos
crear es una tabla de datos, como dijimos, esta recopilación de información sobre
filas y columnas. Oh, vamos a ir a
donde es micelneo. Aquí está, millneous, y vamos a
elegir la tabla de datos Cuando estamos eligiendo
una tabla de datos, se requiere elegir
una estructura de filas. Entonces tenemos que definir nuestras filas. Es por ello que creamos primero
esta estructura. Entonces vamos a
seleccionar nuestros artículos ST. A, voy a
nombrar los ítems DT. Ahora, abramos esto. Como puedes ver, está
prácticamente vacío en este momento, pero podríamos importar de fuente
externa si tuviéramos un documento
CSV o algo así. Creo que Json también aplica. Pero para nosotros,
solo crearemos algunos artículos. Vamos a colocar manualmente sus valores y sus mensajes. ¿Y a qué me refiero? Vamos
a presionar esto Aquí. Vamos a
presionarlo como seis veces, vamos a tener seis ítems. Y el primer ítem sería, digamos, uno, y
vamos a llamarlo oro. Ahora bien, ¿cuál es el nombre de la fila? El nombre de fila se utiliza para recuperar la información de cada
fila en sus columnas. Vamos a mostrar en la práctica cómo se
va a usar, pero cuando llenemos
esta tabla de datos. Oh, o una malla, tenemos una bolsa, creo. P, tenemos una bolsa. Y para el sonido del artículo, tenemos una moneda. Aquí, tenemos una moneda. Imagen de inventario,
tenemos nuestra bolsa. No va a
ser un inventario de dos. Se va a agregar en
A UI en nuestro puerto de vista, así que no voy a
presionar los dos inventarios. Y azul Saka, no es necesario ya que no es un artículo de
inventario Y por la cantidad, seleccionemos uno hacia abajo. Vamos a crear código
para cambiar esta cantidad, pero eso
dependería del enemigo,
del cofre, de
quién lo está dejando caer. Ahora, vamos a crear
el segundo ítem. Bueno esto va a ser yo dos. Esta sería nuestra poción de olla HP. En realidad sin s. para la metanfetamina estática, creo
que sí tenemos una porción. Tienes mucha poción. Todo es una
poción básicamente. No, vamos a
poner la poción roja. Para el sonido del artículo, tenemos un sonido de botella. Sí. Para nuestra imagen de inventario, tenemos una poción roja Ahora, esto se agregará
al inventario, y lo es, y es
de una am de uno. Ahora, nuestro código estará creando una
cantidad infinita de pilas. Pero si quisiéramos un impuesto MC, deberíamos tenerlo como variable
en nuestro array de estructura. Entonces, sería una opción
en nuestras columnas aquí. Ahora, para el tercer ítem,
vamos a nombrarlo. Tres. Va a tener
el nombre de velocidad. Poción. Y para el partido, tenemos una poción azul Y para nuestros artículos
vamos a volver a usar las botellas. Y para la imagen de inventario, tenemos la poción azul Va a ser inventario. Pero digamos que la
poción de velocidad va a ser apilable Va a estar
en un inventario. Un uso único. Digamos que de
nuestra poción azul, queremos tomar dos
sorbos para terminarla Entonces puedo poner una cantidad de dos. Ese sería su valor por defecto. Cuando lo meto en
el inventario, puedo usarlo dos veces. Nuestro cuarto punto sería yo cuatro. Y esta sería una poción
que cuando la bebemos, explota, crea
una rabia explo Digamos a nuestro alrededor, y mata a todo el
objetivo que nos rodea. Vamos a llamarlo poción de rabia. Vamos a establecer su malla estática a esta poción pardusca pardusca. Volvamos a usar las botellas. Y para inventario en marzo, tenemos Océano rojo oscuro. Bien, marrón rojo oscuro, podría verse diferente
en el mundo. Ya veremos. Entonces, vamos
a agregarlo al inventario, y va a ser de un solo uso. Ahora, para nuestro quinto ítem, va a ser yo cinco. Y llamemos a esta poción. Porque aumentará nuestro tiempo disponible
para seguir jugando. Si se acaba el tiempo,
vamos a estar muriendo. Vamos a usar
la poción amarilla. Vamos a usar la botella. Y para la imagen de inventario, vamos a usar
el amarillo océano. Va a estar
en nuestro inventario. Va a estar
en cantidad de uno, y no va
a ser apilable Oh, para un último ítem, pongamos a esto I seis. Y va a ser del nombre E. Va a tener la malla clave, y el sonido del ítem Sí, key drop aquí frente a nosotros. Inventario ma debe ser clave también. Se agrega a cantidad de uno, y no es apilable Vamos a ahorrar.
Cerremos nuestra tabla de datos. Y creo que esto
es para éste. Vamos a continuar
en el siguiente
haciendo que este plano de ítem
pueda convertirse en cualquier cosa Adiós por ahora.
62. Comportamiento del elemento y widget del cursor: Hola, y bienvenidos de nuevo
al taller de diseño de juegos, motor
real cinco procesales Dungeon action RPG curso de
creación Por último, nos fuimos con
la creación de la tabla de datos y la
estructura para la tabla de datos. Dijimos que la información de nuestro artículo
sería el nombre del artículo, la malla, el sonido del artículo, la imagen
del inventario, la
pregunta de inventario T que tenemos, la pregunta apilable que
tenemos y una cantidad Y luego agregamos que
usamos esta estructura para crear nuestra tabla de datos
para los olumes Y luego llenamos
la tabla de datos manualmente con los valores
que queremos para los ítems. Y creamos el ítem del
plano. Ahora, continuemos con
el ítem del plano. Para esta parte del tutorial, llenaremos los componentes
y el arrastramiento de construcción Entonces, cuando propongamos nuestro artículo
, tendrá las
propiedades que queramos. Oh, vamos a explicar un
poco cómo funcionarán nuestros artículos. Voy a abrir pintura. Digamos que este
de aquí es nuestro actor. Este es nuestro plano de artículo. En primer lugar, tendrá la malla que la
estaremos representando. Entonces, si esto fuera una manzana, una manzana verde,
usaría la malla de la manzana. Ahora, como queremos que nuestros artículos sean un poco más visibles, también
agregaremos una fuente de
luz puntual, vamos a esto con azul. Esta es una fuente de luz.
Bueno, vamos a corregir. Yo lo corrigí. Sin comentarios. Esta es la lámpara, esta
es la fuente de luz. Pero lo específico que va a
tener
esta fuente de luz es que
solo encienden esta malla y no afecta al
resto del mundo. Lo tercero que
vamos a necesitar es algo para mostrar el nombre
del ítem al jugador. Entonces crearemos un
widget que agregaremos dos elementos que obtenemos el nombre. Y por último, tendremos una colisión alrededor
del objeto para poder saber cuándo nuestro jugador está fuera de la colisión o
está dentro de la colisión, para poder elegir
el objeto para que esté en rango entre el
jugador y el objeto. Entonces, si el jugador está
dentro de esta colisión, podrá elegirlo. Si no lo está, no
podrá elegirlo. No, vamos a esto. Vamos a necesitar en malla. Llamemos a este artículo malla. Vas a necesitar
una colisión de cerveza. Alrededor de nuestro artículo.
Vamos a nuestro mirador, para que podamos ver un
poco mejor Vas a
necesitar una luz puntual. Y vamos
a necesitar un widget. Un widget, vamos a
hacer un poco más tarde. Vamos a visitar ocultar la deuda. Y para la malla del ático,
necesitamos seleccionarla. Vamos a ir a los detalles
e ir a la colisión, y vamos a seleccionar expiación Vamos a ignorar todo excepto la visibilidad Ama. En realidad, no nos
superponemos, vamos a estar bloqueando. Lo siguiente que
debemos hacer es no dejar que arroje sombras porque
va a ser muy caro. Vamos a ir
a proyectar sombras. Vamos a apagarlo. Ahora es el momento de hacer lo del canal
relámpago. Vamos a seleccionar canales, cuales son los canales de iluminación, cuales de estos canales
están iluminando este ítem, y vamos a seleccionar
el canal para estar activo. ¿Vamos a ir
a nuestro punto de luz? Entonces tenemos canales aquí arriba. Seleccionemos los
dos canales dos, y seleccionemos
el canal cero. Entonces todo en el mundo
se ve afectado por el canal cero. Pero esta luz no
emitirá en ese canal. Estará emitiendo
al canal dos, cual nuestra malla está diseñada
para obtener luz. Cerrar esto, cerrar, cambiar el mundo básicamente y volver a nuestro punto de luz. Voy a seleccionar
algunos ajustes que tenemos predeterminados 1280,
knes, Radio de Atenuación siete, y el resto se van
a dejar así Por último, seleccionemos
la esfera y fijemos su radio de lanza en 300 Pero este será el radio donde podamos recoger el artículo. Y este es un código
bastante simple. Entonces, lo que vamos a hacer es simplemente
llenar rápidamente este código. Iniciar evento de superposición, vamos a crear una
variable, una variable Boulan, llamadas capaces de recoger
o recoger rango o
lo que sea, capaz de recoger Voy a configurarlo a
elegí solapamiento final. Yo quería elegir
comenzar solapamiento. Pero necesito el solapamiento final también, así que voy a traer ambos. Va a ser cierto al comenzar
la superposición. Si nuestro otro componente, tiene el remolcador, E, que es nuestra cápsula jugador, y si tiene la etiqueta P, entonces el artículo a recoger Y lo mismo que
vamos a hacer en la superposición final. En una prisa COVID y establecer
el capaz de despegar. Y como queremos que esta esfera esté haciendo nada más
con otra cosa, podemos cambiar su configuración de
colisión,
también, volver a la costumbre de ignorar
todo excepto la p, que va a estar superponiendo. Porque cuando dejamos
todo en la computadora, calcula constantemente
si una visibilidad se calienta,
si una línea de rastreo de cámara se calienta, si los enemigos auxiliares
van a ser juegos de palabras, así que vamos a estar
revisando a los enemigos Pero nuestra física bo nuestras cajas. Si tuviéramos vehículos descritos, estaría calculando todas
estas cosas constantemente, aunque la respuesta sea no. Como esto no tiene ninguna colisión
física ni nada, solo
tenemos en lugar
de física queriana Pero eso es por defecto. No. Lo siguiente que
necesitamos es el widget. Así que vamos a
crear rápidamente ese widget. Vamos a nuestra carpeta y y seleccionemos clic derecho en la
interfaz de usuario, plano del widget Llamemos a este ítem W G. A. En realidad, widget de elemento. Esta palabra. Palabra del ítem. Este widget no va a ser
necesario muchas cosas. Así que vamos a llenarlo muy
rápido. Vamos a abrirlo. Es solo Esto es
del widget que
no necesita convas Es porque somos
alguien en el mundo, y podemos dejar que se
muera por nuestro plano, por otros lugares, luego
por las convas Pero lo que vamos
a necesitar es un botón. Y para el botón,
necesitamos un xt. Y lo que vamos a hacer es que vamos a
hacer un poco de trampa. Vamos a seleccionar el botón va estilo, uno su matiz, y seleccionar el
cero Alfa en normal, para que podamos ver solo
el nombre del elemento. Y cuando estemos flotando, solo
vamos a dejar que
el tinte esté en 0.1 Es un poco visiblemente. Vemos algo
detrás del nombre. Digamos que cuando lo
estamos presionando, vuelve al cero. Alfa. Entonces, tenemos un bucle a través de
estos tres como yo lo flotaba. Fue lo puedo ver. Lo flotaba, y luego
cuando lo hice clic, volví a como
era cuando flotaba Entonces se siente bien. Ahora bien, por cómo parece que
el mundo realmente quiere
porque queremos que este widget se muestre por encima del mensaje estático, por encima de cualquier otra cosa,
básicamente, eso mismo. En realidad vamos a estar
mostrándolo en la pantalla. No vamos a tenerlo realmente
engendrado en el mundo. Y para ello,
vamos a ir a nuestro
widget sobre nuestro artículo. Y donde dice Top, ¿dónde debería estar en qué espacio debería
colocarse en el mundo
o en la pantalla? No, vamos
a elegir pantalla. Y tengo algunos tamaños de fila
predeterminados, que serían 240. Para la báscula, sólo voy a elegir dos en todo. Tiene que ser sentarse un
poco más alto también. Pongámoslo 112, está bien. Pero aún no podemos ver
los resultados. Podremos verlas
cuando dejemos caer los artículos. Oh. Continuemos con la información de llenado automático
de la pantalla de construcción. Esta es la primera vez que
vamos a utilizar nuestra tabla de datos. Vamos a conseguir datos. Y desde la fila de la tabla de datos, vamos a seleccionar
para Tabla de datos nuestros ítems DT de tabla de datos, y esto nos da una lista aquí, que en realidad no
vamos a usar, y vamos a estar promocionando el nombre sin procesar a una variable. Todo el nombre en bruto,
nombre crudo es un nombre fino. Ahora bien, si compilo
puedes ver que mantuvo su valor
original de I uno. Pero vamos a querer
cambiar esto externamente, así que lo haremos instancia
editable y expondremos en spawn Pero cuando
respondemos al artículo, podemos cambiar de nuevo el nombre de
este elemento desde
allí cuando lo estamos generando Entonces cada uno de los actores que están
generando el ítem puede tener una costumbre de sobre lo
que van a engendrar Ahora voy a promover el
afloramiento de ítem ible iluminado. Datos. Este ítem conoce sus propios datos. Y vamos a conseguir los
items y la malla estática, que es una información que
necesitamos de nuestros datos. Entonces, voy a
romper la estructura. Y conéctate aquí la
información de la malla. Voy a conectar esto aquí. Ahora como se puede ver si voy
a viewport y compila. La pequeña bolsa
apareció por aquí. Porque nuestro nombre de
fila predeterminado es I one. Si selecciono I dos, aparece
la poción roja Si selecciono I tres, aparece uno
azul. Vamos a revisarlos todos 56. Oye, mira, bien. Creo que este es un buen punto de
ruptura por ahora. Vamos a continuar
en la siguiente. Adiós.
63. Animación de planos de pecho: Él Hola, y bienvenido de nuevo al Taller de Diseño de
Juegos, Motor
Real cinco
Procesal Dungeon Action ARB Z Creation Course Anteriormente, terminamos
con nuestro artículo. Terminamos el código para clasificación
de los datos del artículo
a través de nuestra tabla de datos. Utilizamos una variable
a para obtener su propio nombre, y que también se
expone en spawn, para que podamos establecerla cuando
estemos desove el ítem Y a partir de estos datos, usamos los datos de
la malla para establecer el componente
de malla estática de nuestro blueprint También agregamos el widget, y creamos el widget, que son elementos que
usaremos para mostrar en el mundo, que dijimos que
básicamente estará en la pantalla, así que no tenemos que
hacer algunas partes adicionales. Muestra por encima de cualquier malla estática. Hay otras formas de hacerlo, pero requeriría
pasar por materiales un poco de cosas
más complicadas. Vamos a
entrar en ese dominio para que nuestro jugador pueda
ser visible a través de muros, pero queremos hacerlo en
los widgets ahora mismo. Oh, ya que estamos en los artículos, creo que es un buen momento para mostrar cómo los vamos
a estar desove. Y creo que es momento de
completar el cofre, el plano del pecho
para demostrarlo Vamos a ir a nuestros apoyos, carpeta dentro de
los planos de carpetas, y vamos a
abrir nuestro Ahora, si recuerdas, si vamos a nuestra ventana gráfica, agregamos nuestra malla estática
para el cuerpo del pecho Pero también necesitamos una portada, creo que se llama,
la parte superior en todo caso que vamos a estar animando cuando estemos
abriendo el cofre Voy a agregar
otra malla estática. Y por su propiedad
de malla estática, voy a seleccionar
la parte superior del pecho. Y lo voy a colocar
justo encima del pecho. Como puedes ver, la olla de guisantes
ya está en el borde
de la parte posterior. Pero esto nos ayuda cuando
queremos rotarlo salta. Estoy volteando. Esto nos ayuda
cuando queremos rotarlo. Y sí necesito cambiar esto a siestas de
cinco puntos mejor Sí, creo que está bien. Allá. Voy a
compilar y guardar. Ahora, como lo necesitamos para el artículo, una colisión al objeto
es el plaar en rango de furia, lo mismo que necesitamos para el cofre Entonces, voy a copiar esta esfera del ítem
del plano, y la voy a pegar
en el cofre grande Voy a dejarlo tan fácil porque esta es la misma
distancia que queremos usarla. Y la siguiente parte que voy
a copiar desde aquí es en realidad el widget porque
va a ser el mismo widget, voy a pegarlo aquí. Y también, voy a necesitar el código de las
colisiones de la esfera Voy a copiar esto, y
voy a traerlo aquí. Ahora bien, estas dos variables esta variable en realidad no existe en nuestro plano Entonces lo que voy a hacer es que
voy a hacer clic derecho
sobre él y decir, crear variable, capaz escoger cómo esto
sería capaz de abrir. Entonces, para cambiar esto. Y esta parte es p y cuando
podemos interactuar con ella. Y ahora al decir interactuar, abrimos un nuevo capítulo. Que es como vamos a
interactuar con nuestros artículos. Nuestro juego es un juego de clic del ratón, o es como un Daloclon Entonces esto significa que
cuando estamos haciendo clic, queremos estar interactuando
con lo que está bajo nuestro mouse. Ya que estamos en
vista isommétrica y angulada, no va a ser muy
sencillo hacer eso Vamos a tener que
hacer algunas matemáticas, algunas matemáticas para conseguir
el punto que queremos Pero después de todo este
cálculo, cálculos, lo que importa es que
mandemos un evento interactuar
a este prop, la caja o al ítem. Y la forma en que
vamos a hacer esto es usando la interfaz de
blueprint,
una interfaz de blueprint que vamos a diseñar
para los ítems Sea ya que nuestros artículos
van a ser diferentes
tipos de actores, esta es una manera agradable, una forma óptima de hacerlo. Hay otras formas de hacerlo, pero en este tipo de escenarios, las interfaces de
blueprint se usan comúnmente
y
son una técnica mejor Vamos a nuestro navegador de contenido. Vayamos a nuestros planos. Vamos a nuestra carpeta BI. Hagamos clic derecho y creemos
una interfaz de blueprint op. Aquí estamos. Vamos
a llamarlo Bi ítem Cs. Vamos a abrirlo. Vamos a crear un
evento llamado Inter. Ahora, tenemos esta interfaz, agreguémosla tanto a
nuestros planos, al cofre grande como al ítem BP Para ello, comencemos
desde el ítem BP. Vamos a la configuración de clus. Vamos a nuestras
interfaces implementadas y presionemos Agregar, y vamos a seleccionar Interactúo. Lo siento, me viene el artículo. Ahora, voy a
compilar y guardar, y voy a hacer
el mismo cofre grande. Yo hice exactamente el mismo tipo vía interactuar en el artículo viene. Vamos a compilar y guardar. Ahora bajo nuestras funciones, tenemos nuestras interfaces. Voy a abrir
y hacer doble clic en la interacción para crear un evento. Entonces, cuando enviamos el
mensaje para interactuar, la primera pregunta es, ¿
está el jugador en el rango? Voy a poner una sucursal, y voy a seleccionar A para abrir
conectada a la sucursal. Ahora bien, si estamos en rango, necesitamos saber si ya
hemos interactuado porque
desde la animación estaremos jugando
para abrir el cofre, no
queremos
reiniciar esta animación Creamos otro toro, un copy paste para abrir y
nombrarlo interactuando. Voy a traer esto
aquí. Voy a seleccionar una t. Y
voy a seleccionar aquí a y nota. Esto significa que tenemos
que ser capaces de abrir, y tenemos que estar
no interactuando. Entonces, si esto es cierto, esto volverá falso
y volverá falso. Esto es falso, entonces
volverá a pasar a falso. Ambos necesitan ser ciertos. Lo siguiente que voy a
hacer es establecer la interacción. Ahora, cuando nuestro pecho se abra, deberíamos tocar un sonido.
Voy a tocar sonido. Y tenemos un sonido en el pecho. Y lo siguiente que tenemos que
hacer es por el widget. Entonces voy a que luego
juego al widget para hacer. En realidad, también podemos destruir este componente
porque ya no es necesario. Después nos sentamos invisiblemente. Y ahora necesitamos
animar nuestro pecho. Entonces voy a
traer una línea de tiempo. Voy a
conectarlo para jugar desde el principio e ingresar a esta línea de tiempo. Voy a crear
un camión de flujo. Voy a sumar a la
variable dos puntos. El primero
será cero y cero. El segundo sería, digamos, lleva 1 segundo. Mucho, digamos
punto p 7 segundos, y el valor sería a uno. Haz que se acerque. Usemos la última lluvia o no alrededor de
los 5 segundos enteros. Vamos a actualizar. Oh. Vamos a
traer nuestra malla,
que es la parte superior de la caja. Y vamos a establecer la rotación
relativa. Ahora, no necesitamos almacenar
variables ni nada. Esto lo codificamos duro. ir a
alertar al avión o al Alfa, vamos a usar la camioneta Vamos a usar
el camino más corto. Vamos a revisar nuestro pecho. Ahora mismo digamos 91 x. Queremos ir -20. Menos t. Quiero pasar de 90. A 20. Ahora, algunas cosas que
tenemos que hacer
también es ir a nuestra
malla aática del cuerpo de raíces, y vamos a ir a su
colisión y cambiarla Vamos a seleccionar
el reset personalizado. Voy a poner
todo en ignorar, excepto la visibilidad,
la cámara y el estanque, porque
queremos que el cofre esté
bloqueando nuestro camino. No deberíamos
poder atravesarlo. Oh, voy a dejar la parte superior, la cubierta en ninguna colisión. En realidad, si
lo dejamos a ninguna colisión, podría
haber una posibilidad que no podamos hacer
clic en él. Pero ya vemos. No me gustaría que el
jugador fuera bloqueado por el pecho abierto. Pero ya veremos
cómo va a funcionar. Ahora, viene la pregunta, ¿qué pasa cuando
abro el pecho? Lo que nos pasa es
que vamos a generar los artículos. Siempre podemos establecer una cantidad prefijada de artículos para que siempre
sean telefónicos así Pero si tenemos la información de nuestro
laberinto, podemos obtener el nivel de nuestro laberinto y
ajustarlo en consecuencia. Entonces, voy a
crear una nueva variable. Voy a llamarlo laberinto. Voy a hacerlo
del tipo generador laberinto. Su Generador. Oh.
Bien. Aquí estaba, referencia de
objeto, generador de
base, y voy a exponerlo
en Sone y edición de instancias En realidad edición de primera instancia porque si no es
instancia editable, entonces esto creará un error, como si deshago clic en
esto para
compilar, dirá exponer en
hijo pero no instancia Tiene que ser editable por instancias. Nuevamente, cuando estamos trayendo
un plano al mapa, es una instancia
del plano Entonces, si queremos que el valor tenga números
diferentes
en cada instancia, tiene
que ser editable por instancia Ahora, volvamos a
nuestro generador de laberinto. Encontremos dónde estamos
desove el cofre, que creo que funciona en los apoyos El comienzo en pecho grande. Voy a refrescar
esto. No compilar. Dave. Voy
a refrescarme de nuevo. Y aquí lo tenemos.
Entonces para el generador Mz, vamos a usar la salud Ahora tenemos una referencia a nuestro generador
Me en nuestro pecho. Creo que este es un buen punto de
parada para este. Te voy a
ver en la próxima. Adiós. Oh.
64. Mecánica del pecho y sistema de caída de objetos: Hola, y bienvenidos a
Game Design Workshop y Real Engine five
Procesal Dungeon action RPG Creation Course Anteriormente, iniciamos nuestra cadena de eventos para nuestras interacciones. Creamos una interfaz de blueprint que llamamos item coms Y dentro de esta interfaz, creamos una función
llamada interact. Implementamos esta interfaz a nuestro cofre grande y
nuestros planos de artículos, e iniciamos la cadena
de eventos, el cofre grande Entonces después del evento
interactuamos, preguntamos si estamos en el rango y no estamos interactuando
en el momento actual. Y si la condición se aplicaba, continuamos con la configuración de
interactuar a true, reproduciendo un sonido, y ocultando el widget y
también destruyéndolo. Luego fuimos y creamos una línea de tiempo para
animar nuestro top est También creamos una variable
llamada Maze generator, que está almacenando la
referencia a nuestro generador, el que sembró el cofre Ahora, vamos a comenzar a
jugar evento y crear una variable que será vamos a llamar a este número máximo de ítems Vamos a ponerlo en comenzar
a jugar para que sea de un rango aleatorio. Aleatorio en rango. Empecemos
con que es un gran gesto. Debería caer por lo menos
digamos tres artículos. Cuando alguna habitación, y
el máximo debe ser un nivel de generador de laberinto. Nivel generador de
nuestro generador laberinto, debe ser el nivel de
nuestro generador más tres. Por lo que la primera vez
caería 3-4 artículos. Debido a que nuestro
generador principal no desde cero,
inicia desde uno, que si vamos al menú principal, podemos ver que al
hacer clic en el botón Inicio, generamos el primer generador, tenemos el
nivel generador en uno Por fin es tiempo. Vaya
a nuestra línea de tiempo, el evento terminado
y en nuestro primer artículo. Vamos a usar el actor
spawn de clase. Vamos a dividir
la transformación, y vamos a
obtener una ubicación de llamada. Para usar como
punto de desove para la ubicación. Esto significa que nuestro objeto
realmente va a aparecer dentro de nuestro pecho, como en el cero, cero, las coordenadas locales
de este plano, que sería que estamos aquí Pero eso no es problema
porque vamos a crear un mecánico en nuestros artículos para encontrar un
lugar al lado de nuestro pecho. Pero este código
estará en nuestros artículos. No. Estamos respondiendo al primer ítem. Se va a ver
del ítem clase P. Y tenemos nuestro nombre de fila, que es yo seis, que en realidad es
nuestra clave, ¿no? Porque yo seis es el
valor por defecto y es la clave. Y este es el único lugar donde vamos a estar
generando la llave, vamos a quedar yo seis, y vamos a
agregarla nuestra lista para destruir Para ello, vamos a conseguir nuestra referencia de generador ma. Vamos a conseguir que los
actores destruyan de ella, y vamos a agregar a esta matriz el valor
de retorno del actor engendrado Para el resto de los artículos, sólo
voy a copiar
el artículo BP del actor telefónico. Voy a conectar
la ubicación del actor, y vamos a
crear un loop personalizado. O incluso podemos ponerlo en un
for loop act to tom o loop. ¿Y ves lo que pasó? Cuando tengo estos dos
conectados así, pero quería un nodo
detrás de estos dos. Así que solo arrastre de aquí, hago o bucle nodo, y auto conectó
lo que quería hacer. Pero siempre es bueno
verificar que funcione si
las conexiones son correctas. Ahora, para el último índice, vamos a usar el número
máximo de ítems. Para el primer índice,
vamos a usar el número uno porque
ya generamos un ítem Entonces, si queremos
generar tres artículos, debería comenzar en uno Porque si comenzara en cero, entonces engendraríamos
un artículo extra Ahora por cada elemento generado, necesitamos de nuevo agregar actores para destruir una base de copia
esto agregar asentimiento aquí Vamos a agregar este
valor aquí y llevar esto a los actores para que lo destruyan. Frente a esta manera. Y la razón por la que necesito hacerlo opuesto es cuando me conecto, este es un nodo comodín. Entonces sea lo que sea a lo que me conecte, lo primero
que voy a conectar, obtendrá el
tipo de datos de esa cosa. Aquí, estamos devolviendo un tipo de
objeto de ítem VP, mientras que nuestros actores para
destruir la lista son actores. Un actor está arriba en
jerarquía del ítem VP. Entonces no puedo agregar una jerarquía anterior a
algo en las partes inferiores. Cuando conecté esto,
esto se convirtió en
objeto VP items donde el
objeto item no puede ser un actor, pero el actor puede
ser un objeto item. Entonces voy a desconectar esto, voy a conectarlo
aquí, y luego conectar esto. Todos nuestros actores que
estamos engendrando se
están sumando a los
actores para destruir Ahora, qué artículos hago
spon de raw ID, nombre, voy a seleccionar
y para el comodín,
para artículos, comodín
aleatorio en rango Va a ser 0-4,
tres a cuatro cos 01234. Y comencemos con
el oro I uno. ¿Sabes qué? Ya que sabemos que nuestra
mesa empieza con I, lo que puedo hacer es usar un Si la
escribo correctamente, sonar. ¿Qué significa una cadena de pluma? Significa que somos una
cadena pendiente A a cadena B. Si pongo yo aquí, y conecto el entero
anum aquí, y obtuve I y algún número,
y puedo
conectar directamente esto aquí en lugar de sentir todos estos
hacen la lista electa Y esos serían nuestros artículos stpone cuando hacemos
clic en nuestro pecho. Vamos a comprobarlo
todo más tarde, y vamos a depurar
todo lo que se necesite. Pero por ahora, vamos
a dejarlo como está. La única parte que
falta en este momento es el nombre del
cofre en el widget. Porque tenemos un widget aquí. Cuando aparece,
tenemos que ser un nombre, y la clase widget no es. Estoy en el ítem.
Sí, es lo mismo. No seleccioné la
clase de widget en estos dos widgets. Ahora lo vas a hacer.
Vamos a llamarlo W G. Item world. Este es un widget. Pi Ahorra en pila, y aquí haz lo mismo Mundo. Dave y compilar. Oh, Dios mío. Es un movimiento por defecto
porque está aquí y aquí. Y va automáticamente. De todos modos, vamos al widget, y vamos a crear una función. En el evento gráfico, por supuesto, el gráfico de eventos del diseñador. Llamemos a esta función. Eso es Ahora, esto vuelve a ser un
poco redundante. Voy a ir a
diseñador en realidad primero. Voy a seleccionar el texto
porque no es una variable. Debería ser una variable,
así que soy capaz de motor. Vamos a nombrarlo también
al texto en realidad elemento. Y podría estar en nuestro plano y simplemente
obtenerlo del widget, esta parte y simplemente
arrastrando ese texto También aquí listo. Bueno, como puedes
ver, está re hecho, es la misma
función, básicamente. Pero no necesito arrastrar
el elemento t del
widget de esta manera. No, va a
hacer las cosas un poco. Ahora, para poner el
texto en nuestro pecho. Tenemos que traer nuestro widget. Y como hicimos con el
componente infantil que necesitamos para obtener lo que hay dentro del componente hijo,
¿qué es el actor? ¿Cuál es el actor infantil
del componente infantil? Lo mismo tenemos que
hacer para el widget. Estos son componentes, componente
widget, componente actor
hijo, componente de malla
estática, incluso aquí lo mismo, necesitábamos agregar qué tipo de malla estática. Son celdas que
contienen la información, pero no
saben lo que tienen.
Tenemos que preguntarles. Para pedirlo, vamos
a conseguir widget. Y entonces necesitamos ver
si el widget que obtuvimos es nuestro WG it item world,
algo así Entonces voy a emitir
a WG item world. Sabemos que esto es todo
lo que vamos a tener éxito. Voy a
convertirlo en puro reparto. Aunque no, sí
tenemos éxito, pero necesitaríamos
implementar algún código. Pero a partir de aquí, sólo voy a un mensaje de texto. Ahora está aquí así, más fácil. Menos nodos. Cuantas más notas tengas,
más puede llegar a ser la torre realmente convirtiéndose en una torre de
defensa después de un punto. Entonces para el texto,
vamos a conseguir pecho pecho, y eso es todo. Compilar y guardar. Y desde el
lado de la programación, nuestro cofre está listo. No vamos a poder jugar con él ahora mismo. No vamos a
poder verlo. Eso es un fastidio, pero lo haremos cuando nuestro personaje esté habilitado, y podremos etag todo esto por si
acaso no funciona Adiós por ahora, canta
el siguiente.
65. Cofres de habitación ocultos: Hola, y bienvenidos al Taller de Diseño de
Juegos y Real Engine cinco llamadas de
creación de PZ de acción de
Dungeon procesales creación de PZ de acción de
Dungeon En la lección anterior, terminamos de crear
nuestro cofre VP Big. Comenzamos por almacenar una variable del número de ítems
que posponemos, y encontramos un valor aleatorio
entre tres y Mx, que es el
nivel generador más tres Luego establecemos texto a nuestro widget. Y finalmente, agregamos la funcionalidad del actor spawn al final
de nuestra línea de tiempo Agregamos el primer ítem para ser la clave que
siempre queremos dejar caer, y luego agregamos ese actor a la matriz para ser destruida. Después creamos un bucle de cuatro con el número máximo de
ítems como último índice, y primero Índice uno, ya que son como hemos generado la primera
clave, el primer ítem, y luego
continuamos generando el resto
de los ítems y agregándolos a los
actores para destruir la lista Creamos un pend
de I más
entero aleatorio 0-4 para obtener un
elemento aleatorio a través de nombre sin procesar, porque nuestra tabla de datos
se llama I y un número, y esta parte tiene
un pequeño error Empezamos desde cero cuando
queremos comenzar desde uno y terminar en el ítem cinco. Nuevamente, tenemos un rango de cuatro porque nuestra tabla de datos va a nuestros elementos de tabla de datos. Empezamos desde I uno, dos, yo seis, pero queremos
generar ítems aleatorios 1-5 Ahora, ya que tenemos la caja grande. De hecho podemos
duplicarlo y hacer la
pequeña caja fuera de ella. Voy a ir a utilería. Voy a ir
a nuestro pecho grande, y voy a duplicarlo, y llamarlo cofre PP.
Nos ponemos lo grande. Ahora, abramos esto. Cambiemos algunos ajustes. Vamos a establecer los elementos mínimos uno y el generador
uno más uno. Por lo que va a ppone de uno a dos
ítems y cada nivel más. Y como
vamos a estar
engendrándolo En las salas ocultas, hagamos una regla de que ésta
siempre genere una poción de tiempo, que en nuestra
tabla de datos es la Vuelve al pecho
y pon estos dos I
cinco en lugar de una llave. Ahora, vamos a dejar
el resto igual para que tal vez
puedas tspone dos porciones de tiempo, realmente
no importa Y vamos a ir
a nuestro generador de laberinto. Vamos a ir a proponer. Vamos a copiar Esta parte, que tiene las habitaciones, pero no necesitamos las habitaciones. Sólo necesitamos todos estos. No necesitamos direcciones, pero la vamos a cambiar.
Vamos a pegarlo aquí. Para la matriz,
necesitamos las habitaciones, creo, las nombramos. Tome nuestras matrices. Habitaciones Biden. Pero es un ST, así que voy a desconectar esto. Voy a conectar esto aquí. Yo aquí, me voy a romper, y voy a
copiar el ritmo el
bucle for , conectarlo así. O configuración clásica, y aquí en adelante, necesitamos spone la prueba BP No necesitamos las indicaciones. Tenemos que conectar estos
dos pines por aquí. Y vamos a poner también
otra regla aquí, vamos a poner una rama que nuestras coordenadas actuales no están contenidas en la matriz
de pasillos especiales Entonces por si acaso uno
de nuestros pasillos especiales se considera un oculto.
Vamos a decir que no. No lo vamos a engendrar. Voy a conectar esto aquí
en el completo este. Esto también se podría
hacer en una secuencia. Cada secuencia debe ejecutar
uno de estos segmentos. Pero vamos a
dejarlo así por ahora. Si vamos a jugar a compilar, veamos si engendramos el pequeño cofre en las habitaciones ocultas Mientras que en la
habitación oculta, aquí tenemos. No hay cofre. Pero sí vemos el widget, pero hay un cofre. Que cofre es que
supongo que es
ese es el pecho final.
Vamos a encontrarla. Fin en el pecho. Ahí está el cofre. Aquí está. Se ve
un poco pequeño. Es un cofre grande, pero
sí se ve un poco pequeño. En fin, descubramos por qué no engendró el pequeño
cofre en las habitaciones ocultas De la jugabilidad. Va a ser algo
sencillo otra vez, probablemente una rama falsa. Sí, pregunté si contiene y tiene que
estar conteniendo, no. Esto debería ser en falso. Juguemos. Aquí veo una habitación escondida, y sí tiene un cofre, que se ve igual. Ahora, arreglemos esto. Vamos a nuestro nuevo cofre. Creo que sí tenemos
un cofre diferente. No voy a
buscar así, voy a ir
a la carpeta de mallas, él mallas estáticas aquí, estamos y hay otro
cofre No. Ahora vamos a revisar de
nuevo, y ya está aquí. No es que
agregáramos de cámara. Oramos demasiado para
gap y se agrega. Voy a usar esto el
fondo y esto para el top. Voy a acercarlos
un poco más, adelante. Y se ve bien. Ahora, sí se veían
un poco pequeños. Lo que podemos hacer es ir
al pecho grande y
poner su e en 1.5. Si eso es demasiado,
1.25. De lo poco. Bien. No, no está nada bien. Ahora, está más bien. Hagamos esto para este cofre también 1.25. Todo bien. Mientras.
Presionemos play. Reviso y no veo habitación oculta. Esto es un oculto. nuestro pecho pequeño y
en algún lugar está el grande. Encuéntralo también Aquí está. Como podemos ver, se
genera junto a una puerta. Tenemos que agregar la regla para las puertas para este cofre también. Y es un
poco pequeño todavía. No es tan impresionante. La llave del pecho debería ser más grande, así que voy a
hacerla 1.5 por debajo de 1.5. Pero sí se veía mucho en la
escala del cofre pequeño. Eso es, vamos a nuestro laberinto. Vayamos al lugar en el que estamos usando las indicaciones
para el cofre, que está justo al principio en el crear núcleos para pecho. Aquí tenemos las reglas. Estamos comprobando si está
contenido en los mosaicos especiales. Tenemos que traer
este funcional que hicimos es adyacente para hacer. Aquí vamos a conectar
las coordenadas. Poner o entrar porque si
es un azulejo especial, o si está adyacente a
la puerta, no lo genere No agregue el índice del tesoro. Compilación guardar. Vamos a jugar solo para comprobar el tamaño. Sabemos que la
regla está funcionando. Aquí está, y es un
poco pequeño. Es demasiado pequeña. Entonces vamos a
ir al extremo
y poner la báscula en dos, y eso será dos,
sea lo que sea dos, lo es a menos que nuestro jugador no pueda pasar pero vamos
a cambiarlo de nuevo. Ahora está bien. Sólo
para mirarlo. Nuestro pecho. Aquí está, bien. Este es un cofre grande ahora. Esto lo podemos encontrar fácilmente en
los pasillos y localizarlo. Éste es cuchareado junto a
una torre, también puerta del Infierno. De todas formas, así que en la siguiente lección, deberíamos comenzar a crear el mecanismo para que
los ítems caigan. Pero antes de eso, déjame hacer
una explicación realmente rápida. Entonces sabemos lo que
estamos haciendo a continuación. Sabemos lo que vamos
a estar programando. Voy a traer
pintura. Y consideremos que Este
es nuestro bloque otra vez. Esta es nuestra pila, y nuestro
pecho aparece en algún lugar de aquí. Ahora, cuando engendramos nuestro artículo, se corta
aquí mismo en el medio Si vemos un tres D V, digamos ese archivo
esto, baja así, y
tenemos nuestro pecho
aquí, eso está abierto. No cubriría esto nunca, pero de todos modos, y nuestro
artículo aparece aquí Lo que vamos a crear es un sistema que desde el lugar en el
que se genere el ítem, conseguiremos que un punto aleatorio
en el aire se vuelva polar Y a partir de ese punto,
vamos a
iniciar la línea trazando
hacia el suelo. Pero vamos a trazar líneas
en un radio alrededor de la caja. Vamos a conseguir líneas
continuas, pero muchos puntos, muchos
puntos alrededor de la caja, que vamos a definir el radio. Y cuando encontremos el lugar en el
que podamos aterrizar el artículo, y estará en el piso, vamos a decir que ese es
el lugar al que hay que ir. Y para ello,
vamos a hacer animación ese ítem va de
aquí a ese punto. Pero eso es algo que
voy a hacer en la siguiente? Esto es suficiente por ahora.
Adiós. Nos vemos entonces.
66. Animación de objetos cerca del pecho: Hola, y bienvenidos al taller de Diseño de
Juegos, y al curso de creación de RPG de
acción real de Engine five
Procesal Dungeon curso de creación de RPG de
acción Anteriormente, añadimos el cofre
pequeño y arreglamos algunos errores que ocurrieron
durante el juego. De hecho aumentamos
los tamaños de ellos también. Y una cosa que no
abordamos fue que cuando
jugamos, en realidad vimos el widget de la caja grande y la caja grande. Caja grande. Aquí está. Lo que pasó es
que la caja grande estaba en
realidad en nuestra opinión original. Se puede ver que
apareció en estos momentos. Si me expulso poseer de nuevo
la jugada el juego. Se puede ver que esto en realidad está en el lugar en el
que debería estar. Pero si muevo esto, vuelvo a
mover la caja, se
puede ver que el
tooltip del cofre está por encima de él Y ahora en realidad podemos
ver cómo se vería. Es un poco
grande, pero bien. Lo que vamos a hacer
es simplemente configurarlo entonces, así no podemos verlo por defecto. Entonces vamos a
ir a nuestros widgets, el elemento de impresión azul, esa
visibilidad, invisible. Y vamos a
hacer esto para la caja, el cofre grande,
widget, visibilidad. Visible y para el pecho
pequeño también. Obtenemos visibilidad invisible. Ahora, volvamos a nuestro artículo, y vamos a crear la
mecánica que explicamos. Mecánico donde vamos a seleccionar un punto
por encima del artículo, lanzar algunas líneas de rastreo, encontrar un lugar vacío y generar el artículo La forma en que lo vamos a
hacer es que solo vamos a usar un cuadro delimitador Y encuentra el punto dentro de
esta caja delimitadora. El inconveniente de esta
técnica es que a lo mejor la línea se perforará
mostrará que va ahí, pero el artículo se detendrá por colisión o
algo en la caja, o incluso podría encontrar una línea
que está golpeando la caja, y diría que eso es aceptable
y la deja ahí. Um, podría haber formas de
que pudiéramos crear alguna función que
creamos como un círculo y luego
a ese círculo, vamos como le damos un porcentaje de más o menos hacia ahí. O lo que podríamos hacer
es que podríamos crear algún código para comprobar
si nuestra caja de vinculación, punto que encontramos
como cuando tiro una línea desde aquí
y cae aquí. ¿Pertenece a coordenadas
desde el centro hasta aquí, por ejemplo, creamos una zona muerta que
no dejan caer artículos aquí Pero no vamos a estar
haciendo estas cosas. Sólo vamos a poner una caja
y conseguir un punto en la caja. Eso sería
suficiente ahora mismo. No, vayamos a nuestro
artículo en nuestra jugada de inicio. Entonces, hace un tiempo, hablé sobre por qué
loops y por qué no
deberíamos usarlos en la jugabilidad. Bueno, por cada regla,
hay una excepción. Hay algunas razones por las
que necesitamos
usar los bucles il en el juego, que en realidad romperán
el juego si no lo hacen. Por ejemplo, tenemos alguna mecánica de
rompejuegos,
como, por ejemplo, nuestra llave ahora mismo, queremos estar 100% seguros de que está cayendo. No caerá fuera del mapa, no caerá en ningún otro lado , caerá, y
podremos recogerlo. Nuestro sistema
realmente no cubre esto, pero es una excepción
que podríamos usar un bucle wile para
estos cálculos Encuentro el lugar correcto. Tenemos que redefinir nuestras reglas, si esto está tardando mucho, si esto es pzing nuestro juego, si esto está haciendo algunas otras cosas porque si no lo hiciéramos,
rompería el Ahora, por supuesto, hay
otras razones para usar bucles dentro de la jugabilidad. Algunos más avanzados serían asignar recursos, memoria, y pero en términos generales, los mecanismos de ruptura de
juegos podrían usar bucles para
asegurarse del resultado. Oh, lo que vamos a hacer ahora mismo es crear una
variable de tipo vector, que creo que no hemos
creado una antes. Este es un
vector de tres puntos, tres enteros, y vamos a nombrar
esta ubicación get Recuerda, esto se ejecuta
en cada artículo. Cuando se genera un elemento, este código se ejecutará Vamos a buscarlo por cada ubicación
objetivo. Es igual a cero, que es nuestra variable
predeterminada original. Esta será nuestra condición
para un bucle salvaje. Voy a conectar esto aquí. Ahora, la segunda
variable que vamos a crear es nuestra variable is, que va a ser
del tipo integer. No necesitamos pedirlo como condición porque
internamente en el bucle corporal, cambiaremos en función de
la ubicación objetivo, por lo que romperá nuestro bucle. No. Lo primero que
hace el cuerpo es sumar 12 ts. Y ahora empezarán a comenzar las cosas
complejas, un poco complejas.
No es tan complejo. Vamos a lanzar un ritmo. Helling es importante. Sí. Pase y el. No es una carrera multiesfera, solo un rastro de esfera
porque el primer calor queremos solo
un resultado de calor. No queremos obtener
una lista de ellos. No. El punto de partida. Vamos a conseguir la ubicación de
nuestro actor. Y vamos a sumar a Z. digamos 200. Un poco
alto, pero está bien. Pero ahora creamos
este punto por aquí. Ahora, para nuestro objetivo, vamos a obtener un
punto aleatorio en el cuadro delimitador. No. Porque como puedes ver, esta
es una completamente diferente. Esto requiere navegación. Es como pudimos ver, estaba está en la navegación de
pestañas, que está en la pestaña AI. No queremos esto en
punto aleatorio en caja fundadora. Ahora, para su media talla, vamos a usar el
doble de la talla 600. Es más grande. Pero
esto podría tirarlo internamente a otras baldosas. Entonces usemos la mitad del tamaño de
esos 300, cien un z. Y conseguimos un punto. Básicamente, obtenemos un punto en
el suelo en este nivel. Ahora bien, si estamos aquí arriba, ¿cómo apuntamos ese punto? No, vamos a conseguir o o, que es una dirección hacia y vamos a
multiplicar esto por nuestro rango. ¿Cuánto arriba, si
somos x estamos empezando de aquí, cuanto arriba vamos? Porque si es una
dirección desde un 0.1, entonces digamos que
todo lo demás es cero, entonces esto significa en eje
x, ir 0.1, multiplicado por número
sería esa dirección. Eso muy lejos. Para ello, vamos a cambiar
esto a un entero, y voy a multiplicar
por un número positivo. Vamos a multiplicar
por menos, digamos 500. Entonces, en vez de subir,
vamos a bajar. Y si sumamos esto
a este punto, conseguimos nuestro destino final
hacia ese punto. Voy a conectar esto a n. Voy a establecer
radio para digamos n. Así que es una bola un
poco grande, no sólo una línea porque
si vamos a golpear la caja, debemos conocerla un poco. Lo siguiente que necesitamos es en realidad, ¿qué
vamos a golpear? No es eso si pegamos. Entonces no podemos poner una rama aquí, digamos, odiamos algo
engendrarlo ahí Necesitamos saber si lo que calentamos es lo que
queremos, que es el piso. Y haz esto, solo vamos
a usar un remolcador en nuestro piso. Vamos a ir a nuestro piso, que es el azulejo BP,
ir a la ventana gráfica, a seleccionar nuestro piso, ir
a remolcadores, al remolcador, y vamos Ahora h. de vuelta otra vez. Ahora que agregamos el remolcador F.
Volvamos a nuestro artículo. Comprobemos nuestro resultado de calor. Voy a romper
esta estructura. Voy a ir al
componente de calor y preguntar si tiene remolcador. Voy a poner una sucursal aquí. Y ahora, no es la única pregunta
que queremos hacernos si es F, sino que queremos preguntar
si nuestros intentos
también son digamos, iguales a. Intentemos 30 veces.
No conectar aquí. Ahora, va a ser si tiene F o las etiquetas están
por encima de 30 o iguales a 30. Entonces vamos a establecer la ubicación objetivo
a nuestro punto de impacto, que es el punto, el punto
real de impacto. Y podríamos establecer la ubicación también realmente no importaría. Pero, ¿por qué no usar
el punto de impacto? Ahora, sólo para una demostración,
conecta esta condición. Simplemente conecta los
30 iguales a 30. Pase lo que pase,
lo intenta 30 veces, y vamos a subir a nuestro
juego y vamos a jugar. Vamos a expulsar el navegador de
contenido. Vas a traer
un artículo al mundo. Hazlo. Nuevamente, yendo
artículo al mundo. Oh, por si acaso no estás
viendo los spots fuera de cámara. Podría haber habilitado el
sorteo el tipo de error. Entonces, necesitamos que esto sea
persistente para ver las líneas. Ahora, podemos ver que esta en intentó 30 veces encontrar
el piso a su alrededor. Pero esto es un poco
demasiado cercano al artículo. Entonces vamos a
aumentar el tamaño del buey, vamos a tirar cien, 600. Él otra vez. Vamos a
traer otro artículo. Bien, ahora están
un poco más esparcidos. Oye, duplica esto. Duplicando aquí y se mudó aquí. Al comenzar la jugada, se pueden ver
los dos puntos pin diferentes. Creo que esto está bien. Tal vez podamos hacerlo un
poco más grande porque el cofre está mojado la ubicación aquí. Cientos cientos. Oh, es demasiado grande. Yo traje esto muy lejos. Además, ves que van real por debajo del ítem. Esto en realidad se debe a
que aumento el rango. Se honesto, solo quería
mostrar un aumento de rango. Esto en realidad podría
funcionar así. Sea estamos consiguiendo un
punto para el artículo, y luego sólo
vamos de aquí para allá. Entonces volvamos a jugar. Esto va demasiado lejos. Ese valor está muy lejos. Vamos a usar los 300. Creo que 300 estuvo bien o el 600 fue el 600 ¿
no? Trae esto aquí. Ahora fluye, el juego fluye. Bien, entonces sí necesitamos esto, en realidad, no
tanto, lo necesito puesto, digamos 50 o sí, vamos a mantenerlo en 500. Y la razón es
que la razón por la que el mío se apresuró es que
esto no estaba funcionando. En realidad lo fue. Pero cuando llegó a los 30 tri, esto no era válido, eso no calentó nada
porque vamos al dolor. Si partimos desde arriba, y vamos exactamente ahí. No quiere decir que
estamos tocando ahí. Significa que llegamos ahí. Añadiendo a eso, esta es esta distancia B es
mayor que esta, perdón. Esta distancia, 300. De aquí para llegar al piso. Necesitamos ese rango extra. Podría haber usado un poco la
explicación, pero necesitamos el rango extra para
llegar al piso porque
estamos en una pendiente y porque necesita pasar por
el piso para tocar el piso, no ir dat en el vamos a conectar esta
bien y
usemos el rango 600 en realidad. Creo que se veía mejor. Apenas una prueba más si
aplasta, y la dejaré aquí. No creo que nunca digas
nunca. Traigo esto aquí. No veo nada. Esto sigue moviéndose y yo me muevo,
así que no se estrelló. Podría haber desactivado
el artículo aquí está. Sí, apagué
la línea de depuración. Oh. Vamos a intentarlo de nuevo. El ítem. Choque porque lo coloqué
en medio del aire, para que no vuelva a llegar
al piso. Si pudiera expulsar ahora mismo, verías que
la clave está muy,
muy lejos de la mazmorra Bien, vamos a parar aquí. Vamos a probarlo de
nuevo en la siguiente. Adiós. Nos vemos entonces.
67. Animación de elementos de acabado con líneas de tiempo: Hola, y bienvenidos de nuevo al taller de diseño de
juegos y motor
R cinco procesales Dungeon action psy curso de
creación En la lección anterior, demostramos la
importancia de ir a bucles
wile
interminables e ilimitados y por qué deberíamos usarlos
solo en la mecánica central Ahora, estoy tratando de
depurar algo. Estoy tratando de mostrar algunas
cosas de una manera muy larga, como agregar elementos como
este en tiempo de ejecución, y sobre todo cuando
empiezan con un wi loop es una muy mala idea. Um, exceso de confianza,
tal vez. Pero sí, pueden pasar muchas cosas. Entonces si voy a jugar otra vez, hagámoslo más profesión, y voy a ir al
lado del piso. Voy a traer
el artículo aquí. Las líneas realmente
tocarán el piso. Encontremos nuestra gota. Sin artículos. Tráelo aquí, y no encendí las
líneas de las bolsas. Dave, porque cuando te estás estrellando, estás
perdiendo tu trabajo Además, cuando estás chocando, necesitas controlar eliminar
y encabezar el proyecto todos modos cerca de esto
él hizo una línea, pero realmente no podemos decir, así que te esperaba mucho. Sí. Creo que está bien. Vamos a parar.
Volvamos a nuestro artículo. Este es el widget. Artículo. Encontramos un punto para dejar caer nuestra clave para dejar caer nuestro
artículo, cualquier artículo. ¿Cuál es el siguiente? Lo siguiente debería ser
hacer visible nuestro artículo
porque seamos honestos, un artículo sentado ahí hasta
que encuentre a donde va, luego solo hace una
animación y va a un lugar no es
realmente guapo porque digamos que los 30 ts
podrían tardar no medio segundo, sino 0.1 de segundo. Oh ojo va a atrapar eso, veremos el artículo
que están sentados y luego de repente moviéndose. Así que vamos a hacer que nuestro elemento sea visible y vaya oculto en el
juego, entonces es verdad. Esto está en la malla del artículo. Y después de nuestro bucle i, vamos a crear un evento personalizado. Hagámoslo donde más. Animar artículo. Así
llamaremos a este evento. Porque ahora vamos
a tocar la animación. Incompleto. Para animar el artículo. Y lo primero que
vamos a hacer
es hacer visible nuestro desorden. Visible. Dejemos entonces falso. Lo siguiente que necesitamos es almacenar nuestra ubicación original de actor, así que vamos a conseguir actor. Vamos a
promocionarlo a una variedad. Yo lo llamo original porque tenemos que
ir a animar
de aquí para allá Esto es de aquí. Ahora, todo lo que tenemos que hacer
es agregar la línea de tiempo. Ahora, vamos a
conectarlo para pagar desde el principio. Vamos a ir
en nuestra línea de tiempo, crear un camión de flujo. Vamos a necesitar
puntos. Si el ick. El primer punto
sería cero valor cero. El segundo punto
sería 0.25 y uno. Uno. El tercer punto sería 0.5 a ayunar. Creo que está bien. El valor
sería en realidad cero, así que volvemos a la base del suelo. Y este sería nuestro movimiento. Seamos un poco mejor. Ahora, debido a que había
seleccionado este, estaba tratando de
encajar solo esto con el pre del
anterior porque presioné el Zoom
vertical también. Cuando hayamos seleccionado
algunos puntos y presionemos este Zoom
pzonal a vertical, intentará hacer los puntos que tenemos más
el anterior Ahora, vamos a
seleccionarlos a todos en realidad. Haga clic derecho. Eso es a auto. W para dar click en la parte superior. A lo mejor hacer la c un
poco más así. El primero también. Eso está bien. Si va un poco
más alto de lo que vamos a calcular. Ahora bien, lo que queremos es
hasta este punto que el ítem esté subiendo recto
hacia arriba, y luego yendo hacia la dirección en la que
queremos hacer esto. Necesitamos eso de vuelta para catión. Para mover al actor, no
sólo la malla de artículo, y esto va a estar a la fecha. Entonces queremos dejar que Vector
cree este movimiento. Entonces este es nuestro Alfa. Nombremos esto golpeado al movimiento este es
nuestro movimiento Alfa. Dijimos, hasta el 50%, básicamente, porque es el
025, y esto lo sabemos Hasta el 50%, queremos subir
así que si esto es menor a 0.5. Queremos ir en
cierta dirección. O B, nuestro objetivo, tendría que cambiar. Entonces podemos poner un selecto aquí. La condición es que este ion es
nuestro Alfa menos de la mitad. Si queremos subir, debería
ser nuestra ubicación
original. L. Digamos 200 de altura. Y si no lo es, entonces
deberíamos ir al blanco. También vamos a conectar
la ubicación objetivo. Ahora, pensemos
esto por un momento. ¿Qué hace nuestro Alfa? Porque desde ahora, hemos usado 0-1 Pero ahora estamos usando
0-1 y nuevamente a cero. Esto quiere decir que cuando termine
esta línea de tiempo, Alpha sería No Alpha s A.
A sería el último punto
sería el final de este leerp, porque este Alfa
volverá a cero Entonces no queremos esto en B.
En realidad lo queremos en A porque nuestro objetivo
es en realidad A. Así que este tiene que cambiar también. Esta sería nuestra
B real desde abajo del 50%. Vamos 0-1 0-1
sería el más 200. ¿Cuál sería el Alfa, el verdadero de menor que esto? Bueno, esa sería
la ubicación original. Vamos a repasarlo una vez más. A Si estamos por debajo del 50% de Alfa, tenemos 0-1 pasar de A a B. Si está por debajo del 50%, pasamos del original
a nuestra altura Si es después del 0.5%, vamos de B a A, esa sería nuestra altura, y yendo A, que
sería nuestra ubicación objetivo. Ahora, espero que esto
no haya sido demasiado confuso, pero así es como lo hice funcionar. Pero basta de eso,
hagamos una cosa más aquí. Agreguemos otra pista de flujo. Esta vez, va a ser
una pista de flujo muy simple. Además, la rueda del ratón no funciona realmente aquí
porque se acerca y se acerca. Tienes que tener tu rueda
del ratón aquí para que funcione, donde si
ya la tienes aquí, simplemente
puedes hacer clic
y defraudarla. No. Esta va a ser
una simple vía de flujo. Vamos a tener dos
puntos a partir de cero valor cero. Vamos a ir
a 0.5 valor uno, y no olvidemos
usar nuestro último fotograma k porque ambos
están en 0.5 0.51 Y lo que vamos a hacer es que
vamos a seleccionar nuestros artículos. Vamos a poner
su k a cero. Vamos a traerlo
por aquí y poner tres D. Escala Mundial tres D. Recemos estas cosas. En realidad es un
poco más allá. Estas dos líneas no son necesarias. Podemos leer aquí.
Me sale una línea. Ahora en la nueva escala, vamos a dejar Vector. Creo que todos podemos ver a
dónde va esto. Vamos a usar el camión
nuevo para Alpha o B, vamos a poner 111. Oh, el artículo se hará más grande a
medida que esté alcanzando su objetivo, y alcanzará
su tamaño original. Entonces creo que esto
sería para éste. Te voy a
ver en la próxima. Adiós.
68. Mostrar widgets de artículos e inventario: Hola, y bienvenidos al Taller de
Diseño de Juegos bajo motor cinco Curso de creación de RPG de
acción Procesal Dungeon Curso de creación de RPG de
acción Anteriormente, animamos
nuestro elemento de caída básicamente. Entonces porque como se
ejecuta en la jugada de inicio, correrá sobre gotas de mafia en
gotas de pecho. O si las torres del Infierno
también dejan caer algo, esta es la forma en
que se van a dejar caer los artículos. Así que creamos un
evento personalizado llamado elemento animado. Usamos la malla del artículo para establecerla no oculta
porque comienza oculta. Almacenamos nuestra ubicación original. Hicimos algunos métodos raros que explicamos para
establecer la ubicación. Y también
escalamos la malla 0-1, así que se ve más grande a medida que
sale del pecho Ahora, lo siguiente que
debemos hacer es obtener nuestro widget. En realidad, esto podría suceder
en dos tiempos diferentes. Podría suceder. Podría suceder después de que
el artículo haya caído, por lo que podríamos usar terminado
desde la línea de tiempo o antes. No, lo voy a hacer antes de
que el artículo realmente
haya caído porque así es como suele suceder especialmente
en todos
los juegos de Ablo. Básicamente, multijugador, no
podías ver caer los artículos. Todos los estaban
recogiendo en el aire. Entonces vamos a
mantener esto de esa manera. Vamos a mostrar el widget en
el momento en que inicia la
animación, básicamente. Y de esa manera, iba a ser seleccionable
desde el momento en que podamos
hacer clic en el widget Creo que en Diablo, hasta los widgets están animados, pero no vamos a hacer eso. Vamos a llamar a
este evento personalizado. Widget. Pero sí necesitamos llenar
alguna información aquí. Pero antes que nada, llamemos a
este show widget event. Vamos a ir aquí
que estamos llamando elemento
animado cuando esté terminado. Vamos a hacer una secuencia. Y el primero
sería artículo animado. El segundo
sería Mostrar widget. Oh. En primer lugar, vamos a conseguir nuestro widget. Así que consigue widget. Como decíamos, este es un contenedor
y el contenedor, necesitamos obtener el widget, y luego tenemos que preguntar ¿
qué widget eres? Así que lanzan al mundo de los artículos. W mundo de dos elementos y ese texto. Para nuestro en texto, necesitamos nuestros datos de artículo. Necesitamos romper la estructura
y conectar el nombre del elemento. Oh. Lo siguiente que necesitamos es algo para activar y desactivar nuestra visibilidad
widgid Entonces voy a
crear una función. Y llamémoslo rígido. Va a necesitar
una entrada de y. Llamemos a esto. Y aquí dentro, voy a obtener la referencia del
widget. Voy a visibilizar lo
que sea que sea este pin. Excepto que necesito
generar eventos de superposición. A lo que sea la
visibilidad es otra vez, y en realidad llamar visibilidad
así, pero recuerda. Además, necesitamos un
final de colisión a un selecto aquí, y el selector
será esto básicamente. Entonces es verdad. Solo necesitamos consulta. Si es falso, no
necesitamos colisión. Por qué necesitamos hacer
estos dos pasos porque incluso si un
widget es invisible, porque existe la posibilidad de que sus ajustes de interacción
sigan permitiendo eventos de entrada. Al decir esto, quiero decir, estoy apagando la visibilidad del componente del widget,
pero los widgets en realidad tienen algunas otras configuraciones
en visibilidad. Por ejemplo, si vamos
aquí y establecemos visibilidad, se
puede ver que tiene
visible, colapsado, oculto y no comprobable por calor Esto significa que es visible
y se puede comprobar por calor
donde podría ser
capaz de hacer clic en él. Entonces, ¿por qué no solo dejar
que sea colisión, también para estar más seguro Podría ser un
poco exagerado, donde seguro es una exageración, por mejor a salvo que No le agrega mucho en realidad
hace que incluso haga menos cálculos. Y básicamente, incluso este
actor podría, incluso invisible, en realidad
podría recibir la entrada y enviarla al widget, por lo que el widget podría no
ser ni siquiera responsable. De todas formas, hay muchas
razones por las que a veces pones algún código extra solo para
cubrir algunas bases adicionales. En lugar de buscar, qué
ajuste habría estado apagado. A veces
es mejor cerrar
algunas configuraciones de raíz que
buscar subconfiguraciones. Entonces me digrego. Volvamos a
lo que estamos haciendo. Entonces estamos mostrando widgets, y ahora tenemos una manera de
activar y
desactivar nuestra visibilidad. Pero cuando queremos nuestra
visibilidad dentro y fuera nuestros artículos en
nuestro widget de artículos, o nosotros para nuestro proyecto. Lo que vamos a usar
es nuestro mouse sobre eventos. Pero cuando estemos por encima de algo, le vamos a mandar un
mensaje con el mouse sobre usted. Y cuando estamos enviando cuando
estamos fuera de ese objeto, vamos a estar
mandando un mensaje, A, solo
nos dejó el ratón
sobre ti. Y esta será una de nuestras formas hacer la visibilidad
del widget. Así que el ratón se ciernen. Otra forma lo
vamos a usar es que
vamos a tener un botón. Vamos a tener la izquierda en. Pero cuando lo presionamos, mostramos todos los elementos que hay
alrededor dentro de nuestra viewport Y la forma en que
vamos a hacer esto es usando algo
llamado despachador de eventos Ahora bien, cómo funcionan
los despachos de eventos en un entorno rudo
sería que enviaran un mensaje
a todo, y si eso todo lo está escuchando,
hará algo U Tal vez una de las cosas, es una de las formas
más pesadas
de comunicación de planos No se debe usar
en cosas constantes. No se puede usar, pero sí, es
lo más pesado de las comunicaciones de
planos Dejémoslo ahí. No, ¿cómo hacemos esto? Vayamos a nuestro controlador porque ahora necesitamos ingresar al territorio de
nuestro controlador. Así que carácter de arriba hacia abajo, carpeta de
arriba hacia abajo, planos, y PP, controlador de arriba hacia abajo No. No vamos
a estropearlo todavía. Lo que vamos a hacer
es crear una entrada, que queda fuera. Y esto va a
ser un insumo constante. No vamos a poner
insumos mejorados en este proyecto. Y aquí abajo
las funciones, macros y variables,
tenemos los despachadores de eventos Vamos a hacer clic en
despachador de eventos y quedarnos en artículos Tal vez. No, voy a compilar. Y necesito agregar a la entrada. Llamemos a esto uno
elementos visibilidad. Y llamemos a
otro Alt press. Esto va a ser un
poco redundantemente presionado Alt. Nos vendría bien uno, pero
hagámoslo con dos para que quede
un poco más claro. Entonces, cuando estoy presionando Alt, quiero que todos los artículos se coman con los ojos. Así es como
despachamos un evento. Creamos, hacemos nuestras entradas, y hacemos una llamada para ello cuando queremos en
la línea de ejecución. Pero cuando se presiona, quiero elementos
visibles y alt presionados, un copy paste es para liberar, y Descartar estos dos,
que el a false Vamos a compilar y ahorrar. Vamos a cerrar
el mando del juego. No lo vamos a necesitar
para un futuro cercano. Lo podemos cerrar mucho. Podemos cerrar el menú principal. Y comencemos a cerrar esto. Ahora, lo que tenemos que
hacer es obtener una referencia a
nuestro despachador de eventos, para que podamos encontrarle algo Para obtener una referencia al
mismo, necesitamos al actor, el objeto que lo contiene. Entonces voy a conseguir
su controlador. Y voy a pedir al mando de
arriba hacia abajo
porque como nuestro modo de juego, nuestro
controlador get pair es general, y queremos
especificar a nuestra parte superior hacia abajo para obtener el despachador Bind event to go do we
call it Hogle items. Evento a artículos togal, esto vinculará un evento
a nuestro despacho Vamos a
conectar esto aquí. Vamos a traerlo aquí, y vamos a crear un evento personalizado desde el nodo de evento del enlace. Llamemos a esto ítems. O artículos togal mente. No importa.
Conectemos esto aquí. Conectemos la
visibilidad aquí, y vamos a
promoverla a una variable. Donnie que en algunas cosas
ya lleva el nombre de nosotros. Bueno, hagamos espacio porque estamos muy
cerca el uno del otro. Cuando comenzamos a jugar, estamos
ejecutando el elemento animado, y estamos mostrando el
widget configurando su texto y vinculando el show
u hide en Alt Lo siguiente que tenemos que hacer
es el ho y hover se une. Bueno, no se une. Lo
que realmente usamos son algunas funciones adicionales
en nuestras comunicaciones de artículos P I. Oh, voy a añadir
una función extra. Voy a llamar a esto inicio. Terminado. Voy a dar
una llamada más y otra vez. Volvamos a nuestro artículo. L et's vaya a nuestra interfaz, haga clic en end hover,
haga doble clic en start hover Tenemos estos dos.
Esto sería fácil. Vamos a conseguir visibilidad con la visibilidad a true, conseguir visibilidad a false. Ahora bien, ¿por qué la
prensa alternativa era redundante? El motivo es que realmente
no lo necesitamos para cambiar el final hover
para preguntar si Alt está abajo, y si no está abajo, y apagar la visibilidad. Porque no queremos
en Ed hover cuando
tenemos presionado Alt para
detener la visibilidad. Y la otra forma de hacerlo, que en realidad es
mejor sería conseguir controlador
del jugador y preguntar es entrada abajo. Y aquí podemos seleccionar alt o tener nuestra información
clave personalizada, lo que vencería el propósito
de tener esta pulsación alt. En fin, eso
sería para éste. Te voy a
ver en la siguiente. Adiós.
69. Recoge artículos y agrégalos al inventario: Hola, y bienvenidos de nuevo al Taller de Diseño de
Juegos Motor real cinco Curso de creación de Arbis de
Acción de Mazmorra Procesal Anteriormente, terminamos
con la creación de nuestros eventos show widget. Agregamos el texto a nuestro widget, que es el nombre de nuestro artículo. También vinculamos un evento
de nuestro controlador de juego, un despachador de eventos, que
explicamos cómo funciona Y creamos la función de visibilidad del widget que también
totaliza la colisión
del componente widget de y luego creamos el evento
hover start y
hover end y los codificamos
con la Y al final del evento, usamos la tecla de entrada este hacia abajo para verificar si
nuestro alt está abajo, así que cuando estamos flotando un elemento y terminando el hover, no
desaparece Ahora continuemos con
nuestro otro evento de interfaz, que es el de interactuar. Oh, voy a
acercarlo al principio. Habitación. No necesitas estos dos. Todo bien. Entonces, lo primero que
haré ahora mismo antes de comenzar a crear toda
la cadena de eventos, lo que tenemos que hacer
y comenzar a jugar, obtener nuestros widgets, obtener widgets
de nuestro componente widget. Y echemos a
item wt a pure cast. Y vamos a conseguir botón. No lo tenemos porque aún no lo
he convertido en
una variable. Entonces vamos a
ir a nuestro widget. Vamos a
seleccionar nuestro botón, y el botón 31 se va a
llamar botón item, y vamos a convertirlo en una variable. Ahora, puedo llamarlo
dentro del ítem. Botón Obtener artículo. Y
nos vamos a unir. Entonces, si estamos haciendo clic
en nuestro widget, estamos haciendo en realidad
el acto de intell del evento Incluso si se trata de una interfaz de
blueprint, todavía tiene este delegado de
salida que podemos conectar a nuestro enlace Ahora bien, la primera pregunta debería ser, ¿estamos en rango capaces de escoger? Y esto estaría interactuando. Vamos a
promoverlo a variable. Y cuando sea cierto, vamos a establecer la
interacción en true. A lo mejor hacer un
poco más de espacio. Tal vez tomando esto más arriba, puedes quedarte sin espacio
en un espacio sin fin. Siempre increíble. Ahora, vamos a necesitar ejecutar una
función sobre nuestro estado de ánimo de juego. Pero ahora no vamos a llenar completamente esta
función. Así que vayamos a nuestro Holder de
arriba hacia abajo. Vayamos a nuestros planos de
carpetas y lleguemos a nuestros estados de ánimo de juego Vamos a
crear una función, todo el inventario, y va a tener
una entrada de un nombre. Reclamar, y la salida
sería un Ben, que sería escogido. Por ejemplo, si lo
escogimos o no. Vamos a dejarlo como está cuando estemos haciendo el inventario, vamos a
empezar a llenar esto. Bueno, volvamos
a nuestro artículo y desde nuestro set interactuando, vamos al anuncio necesitamos
el gad en cuanto a GM Al GM del modo de juego abajo. Vamos a
convertirnos a puro reparto. Y vamos a
sumar al inventario. Ahora, para el nombre sin procesar, vamos a usar nuestro nombre en bruto. Y después,
vamos a sucursal en
base a si elegimos
el artículo o no. Empecemos con el. Oh, ¿qué va a pasar cuando no vamos a recoger un artículo? Vamos a volver a reproducir
una animación, vamos a sumar on line. Vamos a entrar en esta línea de tiempo, y vamos a crear una pista
de flujo. Las variables. El primero sería 00. El segundo sería
0.27, digamos esta vez, y esta sería uno, y el tercero sería 0.6, eso sería cero otra vez Ahora, ¿por qué más tiempo que
la línea de tiempo anterior? Porque Ya que
no hemos podido recoger el artículo. Deberíamos indicarle al
jugador que no es un objeto nuevo, si acaso matamos algo. No lo sé. Elección de diseño, considere la elección de diseño. Considero que debería tener una animación más larga
porque no se recoge, es algo para indicarle al jugador,
esto no es habitual. Cuando estás dejando caer artículos constantemente y de repente no
puedes
recoger algo no debería ser la animación habitual
que ves, incluso un poco de tiempo de más tiempo creo que
crearía un impacto. Ahora bien, el movimiento
sería muy fácil de hacer. Vamos a esa ubicación. Vamos a alertar vector. Yo uso esta nueva
pista para Alpha y nuestra Esta ubicación final no
debería estar ahí. Nuestra ubicación objetivo
sería el Alfa, la A y la
ubicación objetivo más. Como, digamos 150, sería RB. Desde donde estamos,
vamos subiendo y luego
bajamos. Y cuando esto termine, vamos a girar interactuando. Ahora bien, si es cierto, si recogimos el artículo, sólo
vamos a actor bajo. Y eso sería. Y con esto concluye nuestro
código para nuestros artículos. Este es todo el
código para los artículos. Ahora, podríamos comenzar
con el inventario, pero sí necesitamos
hacer un poco de pre-trabajo iniciar el
inventario en nuestro modo de juego. Entonces, cuando estamos ejecutando
el inventario de R dos, que ahora hago clic para
meterme en el modo de juego, necesitamos tener algunas
variables listas. Una de estas variables
sería nuestro nivel gon. Nivel generador nivel mazmorra. Sí. Va a
ser de tipo entero. Para llenar este nivel tangente, vamos a ir
a nuestro generador y vamos a
ir en nuestro inicio de juego y donde establecemos el modo de juego Mueve este pedacito aquí. Y vamos a establecer el nivel de
dangon a nuestro nivel
generador Tráelo por aquí,
conectando. Ahora. Lo siguiente que necesitamos. Es errante
porque no compiló. Ya terminamos con los
ítems, compilar la tabla. Voy a cerrar algunas tinas. Hay muchos apoyos. Ya no necesitamos esto. En fin, ahora puedo ver. Entonces estamos buscando
el juego viejo. Aquí estamos. Ahora, la siguiente variable que necesitamos, va a ser de
un mapa, básicamente. Con el primero
hagámoslo un mapa. La primera clave sería el nombre, lo que significa nuestro ítem. Y el segundo
sería entero, que va a ser la cantidad. Voy a nombrar esta variable. Capas. B no necesitamos guardar
nada más para nuestros artículos. Solo necesitamos
saber qué artículo
es y ¿cuántos de
ese artículo tengo? Ahora, estamos listos para llenar esta función que vamos a hacer
en la siguiente lección. Adiós por ahora.
Te canta en la siguiente.
70. Contador de monedas y widget de recogida: Hola, y bienvenidos de nuevo
al Taller de Diseño de Juegos, y al curso de creación de ARPs de
acción de 95 Procesal Dungeon Anteriormente, terminamos
con nuestro artículo BP. Terminamos nuestro evento de
interacción que lo
vinculamos también en nuestro click de
nuestro Widget Wood Item World. Ahora, cuando estamos interactuando, estamos preguntando si somos
capaces de escoger si estamos en el rango y si
ya estamos interactuando. Si no estamos interactuando, estamos configurando la interacción verdadera. Estamos agregando nuestro
artículo al inventor. Estamos tratando de agregar el artículo
al inventario porque tenemos nuestro valor de devolución de elegido. Entonces, en base a eso, si no
podíamos elegir el artículo, jugamos una animación, y si lo hacemos, destruimos a nuestro actor. Ahora, después, pasamos
a nuestro modo de juego y
almacenamos el nivel de
la mazmorra a través de
nuestro generador Maze Vamos a compilar esto en realidad. Y almacenamos el
nivel de mazmorra en la jugada de inicio, y creamos un inventario de
variables, que es un mapa de
nombres y enteros, nombres para la fila de
la tabla de datos y enteros para ¿
cuántos Sigamos llenando
nuestro anuncio al inventario. Lo que necesitamos primero
es nuestra tabla de datos. Entonces vamos a obtener datos. Y para su propio nombre,
vamos a conectarlo a w name. Para la tabla de datos,
vamos a usar nuestros ítems DT, y para nuestra fila de salida, vamos a promover
esto para la variable local. Vamos a llamarlo Data. Ahora, vamos a
romper esta theta. Y vamos a hacer
una pregunta sencilla. Es aplicable este artículo, ¿puedo agregarlo al inventario? Si no puedo agregarlo
al inventario, significa que es oro porque es nuestro único artículo que no se
agrega al inventario. Esto significa que necesitamos calcular cuántas monedas
vamos a estar agregando. No. Lo
primero que tenemos que
decidir es cuántas monedas
vamos a agregar. Oh, vamos a conseguir
nuestro nivel de mazmorra. Vamos a conseguir
un rango aleatorio. Voy a empezar con uno
y nivel de mazmorra más uno. No vamos a usar las
monedas en realidad en este juego. Lo que podríamos hacer es que
podrías hacer si quieres, es crear tal vez una actualización de
una tienda y engendrarla
en algún lugar o hacer estallar una interfaz de usuario entre niveles y elegir algunas mejoras y
gastando estas monedas Ahora, vamos a
promover esta variable. Vamos a nombrar monedas, y vamos a
conectarlo a caídas. Lo siguiente que tenemos que hacer es cuando tenemos nuestro
widget para actualizarlo. No, comencemos a crear
nuestro widget de juego. Vamos a ir a I. Vamos
a hacer clic y seleccionar la interfaz de usuario, blueprint
widget, er widget, y vamos a llamarlo W G, jugabilidad Voy a abrirla.
Voy a atraparlo por aquí. Lo primero que voy
a añadir es un Canvas. L et me acercan un segundo. Ahora, para nuestra interfaz de usuario de monedas, lo que representará nuestras monedas será
una caja horizontal. Y dentro de esta
caja horizontal, vamos a agregar un Y el texto. La imagen sería
para nuestra imagen de bolsa, y nuestro texto estaría sobre
cuántas monedas tenemos. Vamos a
seleccionarlos ambos y
establecer ambos para rellenar con
la diferencia de que
el texto debe estar alineado en alineación
central horizontalmente
y alineación de centavo verticalmente. Para nuestra imagen,
seleccionemos la bolsa. Déjalo un poco más. ¿Correcto? Ahora, hagamos
esto un poco más grande. Donde esa se
ve nuestra imagen y no sale mucho. Creo que este alfiler. Seleccionemos nuestro bloque de texto, ponle 30. A fo, ¿puede caber cuatro? Sí, cuatro dígitos está bien. Incluso cinco dígitos está bien. Vamos a sólo tres dígitos. Ahora usemos los anclajes
para anclarlo por aquí. Podríamos cambiarlo después en comparación con el resto de la interfaz de usuario, pero ahora mismo, la tenemos aquí. Y hagamos del bloque de
texto una variable. Vamos a llamarlo puntos. Ahora, volvamos al juego. Y en realidad necesitamos
generar este widget. Entonces iremos a Even graph como hicimos en
los widgets anteriores. Vamos a crear
un evento para clientes. Vamos a
llamarlo show game play. Vamos a crear widget. Vamos a
elegir el Gameplay. Poseer jugador es un controlador de
jugador. Vamos a
promoverlo como una variable. Vamos a llamarlo jugabilidad W. Y vamos a
agregarlo a viewport. Ahora, volvamos para agregar al inventario y obtener
nuestra referencia de juego de WG y obtener
nuestro texto de puntos Vamos a establecer el texto. Para el texto, vamos a usar las monedas. Nuestro siguiente paso ahora mismo es nuevamente indicar que nuestro jugador
recogió algo. Nuevamente, vamos
a necesitar un widget. Vamos a utilizar de nuevo el
widget de jugabilidad para esto. Lo que vamos a hacer es duplicar
esta bola horizontal, pero no dentro de ella, para enraizarla en el Lienzo. Y voy a
hacerlo alrededor de la talla. Son aproximadamente del mismo tamaño. Y voy a
colocarlo por aquí. Voy a ponerle unas
anclas alrededor. Se pueden poner las anclas
afuera, así que aquí. Lo que voy a hacer es
que voy a revertir esto. Cambia esto de 000
a escogido a puntos. Esto es un poco grande. A lo mejor necesitamos un
formato o tamaño más bajo. Ocho. 28 encaja muy bien, y vamos a animar esto Ahora, para animar, vamos
a ir a animaciones. Como pueden ver, la
tengo seleccionada, la caja vertical, no
algo dentro de ella. Voy a presionar
más dos animaciones. Voy a llamar a este ítem, y voy a
seleccionarlo, ir a rastrear. Debido a que he seleccionado esto, en realidad
puedo
seleccionarlo como un elemento. Oh, voy a seleccionar
el cuadro horizontal. Y voy a presionar plus
y se transforma de nuevo, y ahora puedo manipular
su transformación con el tiempo. Entonces en cero, cero, vamos a empezar aquí. Digamos que en medio segundo, voy a mover mi
barra a medio segundo. Quiero haber
movido la traducción x aquí
arriba al 61, Vamos a rodearlo hasta. Voy a mantener esta
ubicación hasta digamos 0.8. Voy a colocar
este vaso por aquí, y esto agregará otra marca. A lo mejor 0.8 también lo es. Pongámoslo en
uno. Cambia esto. Yo solo voy a arrastrar esto,
y voy a arrastrar también esto necesitas arrastrar
esta primera acción. Nosotros sólo hemos arrastrado el
punto y lo lograría. Yo los dejaría caer a los dos. Ahora, después, necesito agregar otro valor
realmente aquí en uno, que sería nuestro eje y. Hasta 1.5, quiero que
esto se baje. Cuánto Mucho más. Digamos aquí, realmente no
importa porque también
lo vamos a desvanecer. Pero dejémoslo
aquí, digamos 60. Ahora quiero agregar una pista pa. Cuando esto va a bajar, esta parte de tal vez mole point bien. 0.9. F 0.9, quiero
agregar una nueva pista, que sería renderizar opacidad Pasaremos de 120. Así es como
animamos nuestro widget. Pero queremos que esto esté jugando siempre que estemos
recogiendo algo. Para eso, vamos
a necesitar una función. Pero vamos a continuar con
esto en la siguiente lección. Adiós por ahora. Nos vemos entonces.
71. Fijación de la funcionalidad del contador de monedas: Y bienvenidos al
taller de diseño de juegos y motor real cinco llamadas de creación de
acciones de mazmorra procesales BZ Anteriormente, comenzamos a crear nuestro anuncio para inventariar en
nuestra función de modo juego. Entonces, usamos la tabla de datos para obtener nuestro temporal del
nombre de la fila que es entrante, que proviene de nuestro elemento BP. Ahora, empezamos con una sucursal cuestionando si se trata un artículo que se está
agregando al inventario, ¿
o simplemente es aplicable
en nuestro caso oro? Ya que es el único
pable que tenemos, y creamos algún código para aleatizar
cuántas monedas obtenemos Y establecemos ese
valor en nuestro widget, lo que en realidad es
incorrecto porque necesitamos una variable de monedas totales para
agregar a nuestro widget de juego, no la temporal la
que estamos obteniendo. Entonces, vamos a
promover esta variable. Conviértalo en monedas totales. Y nosotros conectamos esto.
Voy a desconectar esto, y voy a conseguir
las monedas temporales, y añadirlas al total de monedas. Voy a establecer este
valor en monedas totales. Y luego voy a usar monedas
totales para agregar
al widget. Podríamos haber usado esta parte para la siguiente parte que diseñamos. También creamos el widget de
jugabilidad. Y en el widget de jugabilidad, donde establecemos el total de monedas, está este valor por aquí, este texto por aquí, que
dice nuestras monedas totales. Ahora, y tiene
este icono de bolsa. Entonces seguimos adelante y copiamos pegamos este widget por aquí, invertimos el orden de estos dos, y pusimos nombre a las monedas, dejamos que digan escogido Añadimos un icono. Ahora bien, si
agregamos un número aquí, escogimos
y un número, y luego el icono, podríamos haber usado nuestra
variable de monedas por aquí para decir
cuántas monedas recogimos. Pero como estamos usando
solo una imagen, está bien. No vamos a usar
esa variable para eso. Sólo lo vamos a estar usando para agregarlo al total de monedas. Ahora, para continuar
con esta función. Lo siguiente que vamos a necesitar, que va a ser común
en la rama verdadera y la rama falsa es
actualizar para mostrarle al jugador
que recogimos algo. Y creamos la animación
en la pestaña de animación. Nosotros como que trabajamos un
poco rápido aquí. Entonces esta es la parte que sostiene las animaciones
para los que son nuevos. Y cuando hacemos clic
en una animación, obtenemos sus camiones, que los elementos
vamos a estar animando Y esto de aquí es
el paso del tiempo, y fijamos lo que queremos que esté sucediendo en cada camión en
cada elemento que queramos, en la
categoría específica que queremos. Aquí hay un montón de
categorías. Lejos. Entonces, animamos esto, pero para jugarlo,
necesitábamos la función. No necesitamos una función.
Crearíamos un evento personalizado o lo ejecutaríamos
incluso desde otro lugar. Pero, ¿por qué no hacer nuestra
vida un poco más fácil y tenerla en una función a la que podamos llamar con algunas entradas Luego programando una y
otra vez cuando sea necesario. Oh, vamos a
crear una nueva función. Llamemos a este ítem de función. Pickup. Y dibujemos desde
la línea de ejecución, y ellos tocan animación. Necesitamos especificar una animación. Si hago clic aquí, no
veremos ninguno porque
están en esta pestaña por
aquí, pick and pick. Ve a conseguir esta animación,
C conectado aquí. Y una cosa más tenemos que hacer antes de
tocar la animación, porque ésta es prácticamente. Así es como
jugamos una animación. Vaya a la tina de diseño, seleccione la imagen, nuestra imagen
del artículo aquí y el conjunto es variable. Llamemos a esta imagen del ítem, y volvamos a
graficar nuestra función, obtener esta imagen del ítem, y apresurarnos de la textura. No necesitamos hacer clic
mucho en el tamaño porque queríamos mantenernos en
el tamaño que queremos. Y esto, nuestra textura
que necesitamos es ser pero va a
ser la variable de entrada. Voy a conectarlo aquí. Voy a crear la variable de
textura aquí para nosotros. Voy a compilar y guardar, y volvamos a
nuestro juego de top town. Vamos a conseguir nuestra referencia de Wood
you game play. Voy a decir recogida de artículos. Vamos a conectarlo aquí. Y para la textura, necesitamos un poco más de espacio. Vamos a obtener
nuestros datos t term, que son los datos del ítem que
almacenamos al principio. Voy a dividir esto y obtener nuestra imagen de inventario y
agregarla para recoger artículo. Ahora, cuando se reproduzca la
animación, va a tener la
imagen apropiada de cada elemento. Ahora continuemos
con nuestra siguiente parte, la verdadera rama si el artículo es seleccionable, entonces es seleccionable. Podemos ponerlo en el inventario. La primera pregunta debería ser, vamos a obtener nuestro inventario aquí. ¿Existe en nuestro inventario? Entonces voy a preguntar si pinta
como lo hicimos tantas veces con la
Mazmorra Y lo que va
a estar conteniendo es el nombre crudo que
estamos ingresando Así que el nombre de la fila aquí. Sí. Pero yo uso un montón. Que aquí se vean un
poco mejor. Ahora, comencemos con una sucursal que no contenga
en el inventario. Y la siguiente pregunta que debemos hacer es que nuestro artículo ¿está lleno
nuestro inventario? Para nuestro inventario,
contaremos con cuatro ranuras. Entonces voy a
copiar esta sucursal, y voy a preguntar si
la longitud del inventario es igual o menor o menor
o igual a tres. Si son tres,
todavía podemos agregar uno más. Si son cuatro, entonces
va a ir en falso. Aquí en falso, va a
ser muy fácil de completar. Solo vamos a
obtener nuestro nodo de retorno, y decir que el artículo no es elegido, reproducirá nuestra animación. El artículo no ha sido recogido. Ahora, si es cierto, sólo
vamos a
conseguir nuestro inventario. Vamos a agregar nuestro artículo, que sería el nombre de la fila. Y sí tenemos de lo
temporal saquemos esto. Nuestros datos temporales.
Tenemos la cantidad. El siguiente paso otra vez, debería ser la recogida del artículo.
Voy a conectar esto. Aquí, voy a traer esto aquí. Creo que está bien. Sigamos con
la verdadera rama si ya está contenida. No, vamos a preguntar
si el artículo es estable. Voy a traer
esto que por aquí. Porque si no es estable, entonces no tiene
sentido recogerlo. Entonces vamos a
traer esto por aquí. Y nuevamente, el
nodo de retorno dirá no recogido, por lo que el artículo rebotará. Estamos llenos de este ítem. Ya no lo queremos. Podríamos quererlo, pero
podría ser un solo artículo en stock. ¿Qué podemos hacer? Oh,
qué pasa si lo es, y sí tenemos algunos de
ellos en el inventario. Vamos a conseguir el inventario porque eso es a lo que
nos enfrentamos. Vamos a encontrar el
nombre de nuestra fila. Cual es nuestro artículo. A partir de eso, vamos a
promover nuestra variable local, llamar a esta viable,
costilla, nombres terribles. Parece ser un
tema en este caballo. Cuando trabajas con
más gente que loo, cada nombre debería describir para
qué sirve básicamente. Siempre debe haber actualizaciones sobre las variables sobre lo que se
creó y todo. Es un buen equilibrio,
no exagerar. De todas formas, así que ahora vamos a
obtener los datos de nuestra tienda, cantidad. Bueno, en realidad, el monto del artículo, ves datos de Tem, confundirme. El monto del artículo
de nuestros datos Tem, así que vamos a aceptar más. Vamos a agregar esta
variable tem a estos datos temporales, y vamos a agregar
nuestro mapa de nuestro inventario. Su propio nombre. No lo volveré a agregar. Sólo voy a actualizarlo, y
la suma de esta adición. Lo siguiente que debemos
hacer es recoger artículos. Pero debería
haber un paso entre esto y la recolección de artículos que
ninguna de estas acciones necesita. En realidad, esta acción
también necesita porque estamos agregando
al inventario algo nuevo, que es actualizar la
parte visual del inventario. Oh, vamos a crear nuestro
inventario en la siguiente lección, y esto sería para esta. Te voy
a ver entonces. Adiós.
72. Inventario de visuales en el juego: O Hola, y bienvenidos a ganar taller de
diseño, y real Engine five, Dungeon
procedimental, RPG de
acción, curso de creación Anteriormente,
continuamos nuestra función de agregar al inventario. Arreglamos nuestras monedas y variable de puntos
totales
que se necesitaban, y continuamos
creando una función
para la recolección del artículo. Creamos una entrada de textura. Establecimos el pincel en la
imagen de nuestro artículo a partir del pincel que ingresa de nuestro artículo desde
la textura de nuestro artículo, y jugamos la animación. Ahora, seguimos
verificando la verdadera sucursal, algunas reglas y condiciones aquí, si ya está contenida, si nuestro inventario está lleno o no. Cuando las condiciones
no aplican, volvemos con false, cuando las condiciones aplican, agregamos a nuestro array o
cambiando nuestro monto. Nuevamente, con solo agregar
porque se actualiza, ya que es un mapa, y luego seguimos jugando
la recolección del artículo. Ahora, una mejor versión
de recolección de artículos sería tenerlo
en un widget separado y mientras se reproduce, repente desaparece y genera uno nuevo cuando estás
recogiendo con demasiada frecuencia O otra actualización. Ese podría ser un código mucho
más detallado con reglas y todo y creando cosas,
creando entidades básicamente. Pero ahora es nuestro momento de
crear un pequeño inventario. Entonces, voy a usar otra vez una caja
horizontal. Voy a
colocarlo justo por aquí. En realidad. Vamos a traerlo aquí. Entonces voy a traer
podemos usar los presets,
siempre más fáciles Y esta vez vamos a dimensionar esto
correctamente. Va a ser inventario. Va a ser más detallado. Oh, para la talla X
vamos a elegir cien, o la talla ingenio elige 150. Y para colocación,
elijamos O. 50 e Y O -100 Porque creo que este
es un buen lugar para optar por el inventario en nuestra pantalla. Por supuesto, vamos
a animarlo también. Ir a ser una animación muy
sencilla. Vamos a las animaciones. Agreguemos un camión.
Llamemos a este inventor. Yo de palabra, y entrar. Vamos a crear una pista a
esta caja horizontal. Puedo seleccionarlo así
porque lo tengo seleccionado. Si te estás confundiendo, cuál es cuál, siempre
podemos cambiarles el nombre. Ya sabes cuando
va a ser el. Caja horizontal,
y esta sería la caja horizontal de monedas. Esta sería la caja horizontal de
inventario. Volvamos a nuestras animaciones. Podemos ver que
tenemos la correcta, y vamos a agregar una camioneta, que va a ser transformada. Lo que
vamos a hacer es el
primero el primero el primer segundo, va a estar en la acción de cero
segundos. Va a estar en X cero. Digamos un tiempo de la p. cinco. P 0.5 estaría genial. Esto sería 900,
creo, -900. Y lo trae por aquí. Creo que esto ya está bastante bien. Yo está muy lejos. No estoy segura. Creo que
es un buen lugar. Puedes colocarlo
donde quieras, pero para nosotros, ahora esto servirá. Ahora, para la parte interna, restablecemos la animación, seleccione nuestro cuadro
horizontal de inventario. Agreguemos cuatro botones. Uno, dos, tres, cuatro. Vamos a nombrarlos también. ¿Por qué no? El B n uno. Y vamos uno con n dos. Tres, y cuatro. Ahora, vamos a
seleccionarlos a todos, y vamos a ponerlos a fiel. Vamos a seleccionar el
primero para configurarlo estilo, y luego vamos a copiar esta base a
los otros botones. O nuestra imagen. Vayamos a nuestras texturas. Y tenemos sí este
artículo marco uno. Dejemos el tinte
S el cuadrado está fino. Tinte para el normal
, dejémoslo como. F el hover uno,
también copiemos probar la imagen. Entonces, para el encubierto
, vamos a seleccionar un tinte amarillento, y luego vamos a
pegar de nuevo la imagen Para el prensado,
seleccionemos un tinte verdoso. Todo bien. Y ahora vamos a
copiar pegar esta pila, copiar, seleccionar el botón,
pegar y pegar. Último botón, pegar. Ahora tenemos algunas imágenes. Ahora, por dentro de los botones, usemos una caja de báscula ops y
pongamos dentro del botón ide, es un hijo del botón. En el cuadro de escala,
voy a usar una superposición En esta superposición, vamos a tener
una imagen y un texto. Ahora, muy rápido por qué
estamos usando cada parte. Imagen, necesitamos para
la imagen del artículo. Texto, necesitamos para la
cantidad, y superposición, necesitábamos que la ma estuviera
detrás y el texto al frente. No, que en realidad está hecho. Yo solo estoy es lo contrario. Necesito tener el texto anterior, creo. Debería tener el texto. Esta imagen en déjame
cambiarla por un segundo. Eligió el texto.
Sí, es por cobrar. Entonces el texto debería ser el segundo objeto
dentro de la superposición. La caja de báscula, estamos usando la caja de báscula por casualidad,
nuestras imágenes son grandes en la caja o para hacer
lo que hace una caja de báscula, se ajusta al interior del
contenedor que se está alimentando. Lo escala para que
se ajuste al contenedor. Así que vamos a copiar y pegar la caja de escala con sus
hijos a todos los botones. En realidad,
arreglemos el primero, voy a borrar
el pegado Arreglar primero visualmente porque
si arreglamos los visuales, luego copiamos pegando,
también tendrá los mismos Así que vamos a establecer
superposición para llenar todo, y vamos a
establecer el cuadro de escala. También ya está lleno. Entonces vamos a configurar la
imagen para que llene todo, y el texto va a estar abajo
a la derecha. Entonces vamos a seleccionar
una opción más aquí abajo, que es la justificación
donde el texto comienza y termina para estar en medio. Y queremos, por supuesto, que el
texto sea cero por ahora. Y claro, deberíamos cambiar el teléfono a
algo realmente más pequeño. El ocho no tan grande, no llega hasta la cima. Creo que esa es una buena
proporción para el número. Para la imagen,
vayamos a nuestras texturas. Y creo que es gracioso
creo que es gracioso, se ve amable bien. Si selecciono el CGL o
incluso la textura HP, la primera textura,
parece que está
bloqueada o algo así De todas formas, puedes elegir
algo que se sienta. Pero hay algunas reglas
especiales. Verás, tenemos un espaciado
alrededor de nuestras texturas. Por lo que se llena muy bien con el
fondo. Por ejemplo, si
traigo la poción roja, se
puede ver que se llena correctamente, mientras que si traigo
digamos esto aquí o aquí, esconde el fondo Entonces voy a tal vez
la porción de salud está bien. Esto también es genial, pero los jugadores pensarán que
aquí hay algo para hacer clic, e intentarán hacer click. Bueno, esto parece más
como que está cerrado. En fin, voy
a seleccionar esto. Te voy a copiar ahora nuestro cuadro de
báscula porque hemos establecido los atributos,
voy a pegarlo. Voy a pegarlo también
en tres, número cuatro. Ahora, seleccionemos en todas estas imágenes y
hagamos de ellas una variable. En realidad, sí
necesitamos nombrarlos. N uno, dos, tres, la capital desde que
empecé con mayúsculas. Cuatro. Ahora, lo siguiente que
vamos a necesitar es ir a nuestra gráfica y crear una nueva función a la que
vamos a llamar update. Y claro,
va a necesitar una entrada, y va a ser nombre, y va a ser un mapa. La segunda variable
va a ser un entero porque
ese es nuestro inventario. Inventario. Creo que este es el cierre, solo
necesitamos lo siguiente que
tenemos que hacer es ir a
nuestro modo de juego de arriba hacia abajo, y desde nuestro juego WT,
llamar a nuestro inventario. Ahora, podemos
llamarlo aquí mismo o podemos
llamarlo al final. Realmente no
importa porque como nuestros Puntos no actualizan
nada en el inventario, simplemente
hará una actualización
sin cambiar nada. Pero podríamos tenerlo aquí, pero esto es
digamos más óptimo. No lo es.
Realmente no importa. Pero hace menos operaciones. Si tuviéramos un inventario muy enorme, empezaría a importar. Vamos a traer
inventario aquí, vamos a conectarlo aquí, y lo tenemos listo para funcionar. Y esto
será para éste. En la siguiente lección, vamos a completar esta función. Adiós, C. entonces.
73. Actualización de los visuales de inventario: Hola, y bienvenidos a
Game Design Workshop y Real Engine five
Procesal Dungeon action RPG Creation Course En el último,
dejamos con diseño de nuestro widget
para nuestro inventario, que está en nuestro juego de widgets,
jugabilidad aG. Entonces agregamos algunas imágenes. Agregamos un texto para indicar cuántos ítems
del ítem en particular tenemos. Los agregamos a una superposición
así la superposición entre ellos, y lo agregamos
a un cuadro de escala, que pertenece a los
botones que agregamos. Y agregamos la caja de
escala para hacer que la parte interna llene
el botón correctamente. Animamos nuestro inventario usando un seguimiento muy simple de traducción simplemente
moviendo el valor x, y comenzamos a crear nuestra función de
actualización de inventario. Eso es en si puedo
encontrarlo modo de juego aquí, en nuestra función de inventario A. Entonces, comencemos a llenar
esto. ¿Qué va a hacer esto? Hablemos de ello a
medida que lo construimos. Lo primero que esto
va a hacer es conseguir nuestras llaves. Básicamente, nuestras filas de artículos. Y después de eso,
vamos a necesitar también nuestros valores para obtener los montos porque necesitamos
actualizar los montos también. Estamos obteniendo nuestras claves para obtener de nuestros datos,
los datos del artículo. Entonces vamos a promocionar a
cada uno una variable local, llamemos a las claves. Promovemos esto
también a una variable. Llamemos a estos valores. Oh. Vamos a por bucle a
través de todas las claves. Voy a traer
las llaves para bucle. Y voy a obtener la tabla de fila de
datos de
los elementos de la tabla D de datos. En realidad voy
a hacer un rayo. Voy a promover
esta una variable local. Llamemos a este ítem data. Voy a borrar estos
dos y traer los datos del ítem y en conecto la fila de salida aquí. Entonces tengo un rayo con
mis datos de ítem también. Ahora, voy a conseguir
mis imágenes de inventario. En uno, I M dos,
tres y cuatro. Voy a hacer
array. Ahora puedo ir todos nuestros botones con bucle 14. F dos. Para cada uno de ellos, voy a hacer una pregunta
muy sencilla. ¿El artículo es aca? Llega aquí, conectado al
índice, voy a romperlo. ¿Por qué estoy haciendo esto y
cómo lo estoy haciendo? Dado que nuestros artículos se agregan a nuestra
matriz de inventario en un orden determinado, y este pedido se
mantiene a través de nuestras matrices. Entonces, pero en uno, cotejamos para
indexar cero de nuestra
matriz de inventario, y así sucesivamente Entonces, si nuestros artículos
son estables o no, comencemos si no
son estables. Necesito el texto, volvamos al diseñador. Seleccionemos nuestros textos. Los haré
variables T, En uno. El siguiente sería en dos. La habitación será t En tres. Ahora de las variables, puedo traerlas aquí en el cierto orden otra vez,
una, dos, tres, cuatro. W para hacer una matriz.
Quiere agregarlos a esta matriz. Dado que estos arrays
son correspondientes, puedo obtener un índice que quiero
para el patrón específico que quiero y hacer que la
visibilidad sea invisible. Oculto en realidad. Voy a
ir esto a falso. Lo siguiente que tengo que hacer
es obtener nuestro elemento array. Esto va a
si un poco. Eso es textura de pincel. Conectado aquí, y
para la textura del pincel, vamos a obtenerlo
de nuestros datos del artículo, inventariar un desconectado aquí, y esta parte está lista Estamos configurando
esa pequeña madera en la parte inferior para que sea invisible, y estamos configurando la
imagen de textura a nuestro artículo ture Oh, yo es visible, simplemente
vamos
a obtener nuestros valores
de nuestro inventario,
que son los montos. Y vamos a conseguir nuestra
textura de la textura, lo siento. Vamos a conseguir el
texto para llenar la cantidad. Voy a decir texto. Voy a poner nuestros
valores por aquí, voy a conseguir copia, el valor sería el
índice que estamos ejecutando. Por supuesto, necesitamos configurarlo
visible por si acaso
es invisible. Es decir, el texto que
estamos agregando un número, y luego vamos
a establecer la textura del pincel. Eso sería. Esa sería nuestra función que
actualice el inventario. Obtiene nuestros valores y
claves nuestras claves y valores, y luego crea una lista
de nuestros ítems actuales. Pasa por nuestros botones, y aplica los números y las imágenes o
los establece de manera invisible Creo que después de todo esto, hemos terminado con
nuestro sistema de inventario. Ahora, creo que después de
comer todas estas cosas, es momento de empezar a
engendrar a nuestro personaje Podemos comenzar a probar
algunas de estas mecánicas. Para ello, necesitamos crear algunas cosas para que la
transacción sea un poco fluida. Porque como dijimos,
sí tenemos esa carga. En esta carga, vamos
a crear una animación, un camión de animación múltiple. Pero vamos a
llamarlo fade load. Lo primero que
agregaremos es nuestra barra de carga, que va a sumar
camión de visibilidad. A camión, camión barra de carga, y otro tipo de camión,
que es la visibilidad. Ahora va a estar oculto. Vamos a seleccionar
ahora el texto de carga, de nuestra animación en el
camión o el elemento. Y ahora agreguemos el camión
para manipular el elemento, nuevo la
visibilidad, tan oculto. Por último, vamos
a seleccionar nuestra imagen. Vamos a
volver a la animación, agregarlo como camión, agregar el
camión a sus propiedades. Vamos a establecer la
opacidad del render. Vamos a darle. Digamos 2 segundos medio, 25, vamos a crear la diferencia, y aquí va a ser cero. Entonces uno a cero. Tenemos este ocho de
nuestra carga y pantalla. Vamos a compilar y guardar. Volvamos a
nuestro generador de laberinto. Vamos a acercarnos al
final. Estamos en 0.85 Vamos a ponerle mal pasta. L establecer por ciento. Esperemos
también un fragmento de segundo. Vamos a establecerlo en uno. Ahora llamemos a carga de dolor. Juguemos en la animación. Ahora, vamos a crear una sucursal aquí. En realidad rama por aquí, que esta condición para ser
un el nivel generador. Eso equivale a uno. Si este es el primer nivel, vamos a hacer la
animación play de la carga. Como vamos a
quitarlo de padre. Entonces, lo que necesitamos ahora. Llamémoslo un evento. Voy a hacer
un jugador de eventos. Vamos a llamarlo por aquí. Jugador. Y consigamos nuestra
animación y tiempo. Pero sabemos cuánto tiempo lleva
esta animación, y pongamos un laico. Pero podemos esperar hasta que
el phaate esté completo, y pongamos capa sobre
troll y tu mouse No te pongas. Ratón. Y esto habilitará
nuestra jugabilidad. Pero viene la pregunta, ¿nos hemos escondido la boca? Creo que
no lo hemos hecho. No, vamos. El inicio en la jugada de inicio
cuando estamos mostrando cargando. Queremos ocultar nuestro ratón. Antes de cargar el show, vamos a establecer el
show mouse en false. Vamos a nuestra
pantalla de carga, y al widget. Seleccionemos nuestros cavas
y pongámoslo a visible. Si todo está bien, no, o no. Esto necesita conectar
el objetivo al widget
porque reproduce el objetivo animado es un widget de usuario Significa donde estoy
jugando esta animación. Esta es la animación
que la estoy jugando,
pero ¿a quién pertenece?
Esto es lo que necesitaba. Archivo guardar un juego de inicio de prensa. Comienza el juego. Maravilloso. Creo que esto es para éste. En el siguiente error. Vamos a traerlo aquí donde está. Es movimiento artístico. Aún no hemos programado
estas cosas. Por eso no le
gusta. Controlador de bajada. Lo arreglaremos más tarde. Pero esto es para éste. Vamos a continuar con
la siguiente. Adiós.
74. Generación del zoom cinematográfico del jugador: Anteriormente, terminamos con nuestra función de actualización de inventario, que obtiene nuestro inventario. Agrega nuestras claves y nuestros valores para separar los valores
temporales. Repasamos nuestras claves, las agregamos a nuestros datos
de inventario. Obtenemos a través de nuestros nombres de tabla de
claves y los agregamos a los datos de inventario. Después pasamos por nuestras imágenes,
los botones, básicamente, y estamos sintiendo las
estadísticas en consecuencia. Y después de eso, fuimos
a nuestra pantalla de carga. Creamos una animación simple con muchas entradas, muchos elementos
diferentes. Conseguimos que nuestra
imagen de fondo se desvaneciera. Usamos la carga y nuestro bloque de
texto para no usarlos. Los ponemos a escondidos al
inicio de la animación, así desaparecen y luego
empieza a desvanecerse. En nuestro generador de laberinto, llenamos nuestro porcentaje
de carga. Y si el generador
está en el nivel uno, significa que estamos
en el primer nivel. Así que estamos jugando la animación
fade de nuestro inventario de
nuestra barra de carga, y luego engendramos a nuestro jugador En realidad hicimos
solo una función. En realidad todavía no
engendramos al jugador. Pero después de eso, conseguimos la hora de
fin de nuestra animación. Nos retrasamos y pusimos
tan áspero ratón. Y lo siguiente que debemos
hacer en realidad Obtener nuestra carga. Nos movemos com parent. No, vamos a engendrar a nuestro jugador ahora. Lo primero que
vamos a necesitar, Magine eso, van a
ser las coordenadas del calabozo Vamos a conseguir nuestro calabozo. Vamos a encontrar nuestro
primer bloque, para dividir esto. Dice 00 por defecto, y vamos a obtener la ubicación. Vamos a añadir un
poco de altura a esa canción va a presionar Agregar cien, y esto es punto de desove Ahora vamos a
usar actor plus. El actor sería el actor. Vamos a
dividir la transformación de esta ubicación de transformación. Si vamos a jugar así, lo que va a pasar es
que probablemente vamos a ver el pom. Y en una distancia enorme también. Esto es porque
no tenemos control sobre él,
porque engendramos pon, es como cualquier otro actor que engendramos en este mundo Entonces, sí tenemos un nuevo error. En su lugar en los artículos de Max. ¿Cuál fue el error? ¿Por qué está tratando de Maze generador? Oh, probablemente dentro del laberinto. No tenemos lo que es nuestro gran pon de pecho en
props, spa, atrezos personalizados No. No. Yo solo
salgo habitación y voy directamente a sp y nuestro pecho grande está Aquí, ¿auto generador de
laberinto? ¿Era nuestro pecho grande o
era nuestro pecho pequeño? L et's encuentran el pecho pequeño. Sí, era un cofre pequeño. Yo mismo. Pero el pecho grande. Probablemente no cambié
esto o pecho grande en el pecho. Necesitamos un cofre aquí. Aquí. H. ¿Por qué no
puedo otra vez, no
puedo estar por defecto Lo selecciono de esta manera. No sé por qué no me
gustó al revés. Y aquí necesitamos una generación. Entonces aquí es donde engendramos
el cofre pequeño, básicamente. Yo no cambié la clase. No sé por qué Andel
tuvo un problema tan grande. Oh, porque yo había conectado
el valor de retorno correctamente. Sí, por eso. Así que volvamos a nuestro personaje de spawn, y veamos por qué no podemos
tocar nada, hacer nada Cuando engendramos a cualquier otro actor, igual, todavía no podemos mover al otro
actor ni nada Ahora, las patas y los personajes tienen una habilidad específica llamada poder
ser poseídos Y para poseer algo, necesitamos el controlador del jugador. Y desde el controlador del jugador, arrastramos, que en realidad, como puedes ver en la descripción sobre herramientas, se adhiere al controlador del
jugador y le da posesión a esa
pata desde ese controlador Significa que puedes mover
esta pata básicamente. Hay mucho más
sobre poseer. No vamos a hacerlo ahora mismo. Pero si lo dejo así, entonces esto significa que puedo mover mi personaje mientras ocurre el
desvanecimiento. Aquí vamos a poner un retraso. Y vamos a usar el
enti de la animación. Ahora, vamos a presionar play, y verás también la
cámara cambiada por aquí. La cámara cambió un poco, y de hecho podemos movernos. Entonces nuestros picos no nos perforan, solo nos hace p. Vamos a arreglar esto. Posteriormente esto. Vayamos a nuestra trampa,
vamos a nuestros picos. Dado que esto es solo visual, debemos fijarlo a ninguna
colisión físicamente. Esto es algo que sucede
visualmente. No queremos que
genere eventos de superposición. Además el cuerpo de la trampa tampoco necesita tener ninguna
colisión. Vayamos a colisión.
Sin colisión. No genere
eventos sobre rap, compile y guarde. Todas estas pequeñas cosas simplemente adoptan porque
hay muchas trampas, y van
a ser muchas más. Y nos desvanecemos el tiempo,
y podemos jugar. Yo es algo raro
con la animación. Voy a comprobar de qué se trata. Podemos entrar a las habitaciones. Vamos a arreglar
esta cosa porque la cámara ahora mismo es rara. Y como pueden ver, estoy
dando click por aquí, así que no va correctamente. Estos son problemas de
un controlador de ganancia, y hay muchos
problemas que debemos solucionar. En cuanto a esta antorcha, por ejemplo, se apaga fácilmente. Déjame ver. ¿Todas las antorchas? Todas las antorchas. Entonces L
et's empiezan a arreglar las cosas. Partimos de esta antorcha que vemos como todo lo que encontramos. Deberíamos arreglarlo al instante. Entonces vamos a ir a
las luces del pasillo. Va a ir directamente. Así que utilería, utilería de habitación. Vayamos a donde
engendramos nuestra antorcha. Una antorcha en realidad lo
primero que hacemos. Entonces debo serlo. Antorcha Roo. Cambiemos estos
valores a otra vez, estamos en el
blueprint room props, esta primera parte de
la cadena de eventos ¿Cuál era el problema aquí? Creo que estos son los tres, 320. Comprobemos con
320 y todo. Juego de pila. está aún más lejos. Déjame seleccionarlo. Voy con el niño. Es hijo de niño, así que en realidad no puede hacer eso. Lo que puedo hacer es
encontrar los cultivos de habitación. Y a partir de ahí, la antorcha. Entonces 20 fue la dirección equivocada. Eso es 375. Comprobemos otra dirección. Esto es. ¿Cuál es este? ¿Bien? Sin embargo, esa es la misma
dirección. Éste. Lo encontré en
Sly haciendo clic en él. 375. Sí, básicamente,
ese es el valor. Bien, entonces 375, 375 menos 375 -75. Estos son los nuevos valores. Oh, vamos a continuar. Comprobemos primero en realidad. Pero creo que ahora
va a estar bien. Estas antorchas están bien
están dentro de la pared, pero no importa eso, estas ya son mejores Esto es un poco
dentro de la pared. Pero está bien. Bien. No. L et's continúan con nuestra posesión del
poema. Lo que pasa realmente. Lo que podemos ver es
también que cuando juego, tengo una
luz diferente en
comparación con cuando estoy poseído y
poseyendo el personaje Como cuando eyecto, de repente
la luz se vuelve impresionante, cuando no eyecto, la luz es mala No. Arreglemos esto porque
es una ruptura instantánea de trato. No podemos estar probando
así. Es realmente feo. Vamos a nuestro personaje op
down,
planos, personaje p down
, la cámara ect Empecemos por agregar
la exposición a la luz. Esto significa que cuanto más tiempo
permanecemos en una luz, nuestro ojo, se adopta, por lo que la cámara crea
un efecto como este. Entonces vamos a
buscar postura. Vamos a establecer la
media de un máximo 2.1. 0.1 podría ser un poco más bajo. Pongámoslo a uno y comprobemos si necesitamos
bajarlo jugar. Y ya se puso un poco más oscuro. Si eyecto, podemos ver que la paleta
de colores se queda igual,
la iluminación, lo que crea Todo esto es fijo. La razón por la que funciona
aquí así es porque no estamos
usando la configuración del juego. En realidad, le hago clic, no
hay mucha
diferencia, y e V cero, donde si lo pongo a uno, se va a poner más oscuro, y si lo pongo a menos uno,
va a ponerse más brillante. Ahora lo pongo de nuevo a cero. Y lo que esto es
el nivel de exposición. Eso es lo que creo que representa
E V. Lo que tenemos que hacer también
es crear una pequeña introducción porque va realmente
abruptamente al personaje Entonces voy a parar. Voy a ir
a añadir algo. Añádase rápidamente al proyecto. Voy a ir a cámara. Actor, voy a fijar
esta posición a 000 por y ¿sabes qué? De hecho voy a mover
el hacia arriba, ir a presionar play. Voy a rechazar. Encuentra la cámara.
Creo que esto es. Cera. No, esto es porque
como pueden ver, esto es 1520, mientras que
nuestra cámara estaba en 300 Voy a buscar esta cámara. Voy a pinchar a él, voy a piloto de cámara. Para ponerlo en una
posición general tal vez. Aquí, no lo sé. Esta será nuestra cámara intra
que va a nuestro reproductor. Tal vez enfrentando al jugador. Y ángulo. Sí, bien. Ahora voy a presionar A, y se guarda la posición. Entonces, si presiono stop, esta cámara está en esta posición. Ahora voy a ir al plano
de nivel. Oh, nosotros teníamos una cámara. Me olvidé de eso. Voy a borrar la primera cámara. Sí, debería romper
las conexiones. Y el plano de nivel. Lo acabo de abrir en la última. Voy a elegir la cámara. B el nivel y
crear una referencia. Ver ahora se refrescó
porque no se refrescó antes de configurar la cámara Esto se desconoce porque
borré la cámara anterior. Voy a conectar esto.
Vamos a eliminar esto. Vamos a compilar y ahorrar. Y aquí que tenemos reproductor spawner, voy a hacer una secuencia
antes del retraso Y
te voy a prestar y vamos a deshacer clic sensible al
contexto porque no
podemos verlo. Entonces voy a seleccionar una vista
suave con un objetivo de vista suave con un objetivo de vista
conjunto
soso con soso Ahora bien, ¿por qué no apareció? Es porque no es una función
realmente común, y tiene un requisito. El requisito es
el controlador de juego. Entonces, si dibujo desde aquí y
obtengo view blend target, veamos blend con target. Veamos objetivo
con levantamiento suave
y conectemos esto aquí puede ver, instantáneamente lo
conseguimos sin el contexto sensible porque pertenece al controlador del reproductor tiene
esta función, básicamente. Está en la categoría jugador. Entonces, el tiempo de mezcla
sería de nuevo nuestra carga, nuestro no cargando, nuestro
pagado de la carga, y tal vez -0.1 segundos cuando termine, tenemos un punto 1 segundo
para, esta es mi opinión Y por último, necesitamos conectar nuestro nuevo objetivo de vista con nuestro personaje porque este es el objetivo que
vamos a estar viendo. Va a conseguir
nuestra actual, nuestra cámara, e ir
a otro objetivo. Vamos a probar esta jugada. Y como que funciona. Creo que esto es
suficiente para éste. Vamos a arreglar
todo en la siguiente porque necesitamos
arreglar algunos ajustes, muchos ajustes para arreglar.
Te vamos a ver entonces. Adiós.
75. Correcciones de colisiones y detección de mosaicos de jugadores: Hola, y bienvenidos a
Game Design Workshop y Real Engine cinco procedimientos Dungeon action RPG curso de
creación Anteriormente, creamos nuestra mecánica de
cámara que establecemos view get con blend nuestra cámara original en
nuestro nivel que colocamos, y creamos una referencia
dentro del plano de nivel, que teníamos una anteriormente, pero hicimos una nueva realmente no
importa Y también completamos el
código cuando estamos desove para mezclarnos entre los objetivos
y poseer al jugador cuando la
animación fade out haya terminado Ahora, también jugamos un poco y encontramos algunas cosas mientras
nos movíamos. Por ejemplo, nuestro jugador cuando
estamos dentro de la habitación, el ratón obtiene un comportamiento extraño. Y cuando estábamos en realidad no
teníamos ese ejemplo, pero cuando estábamos
pasando por azulejos, el personaje estaba haciendo
un movimiento extraño, sobre todo entre la
conexión de las fichas. Ahora, vamos a deducir por qué están sucediendo estas
cosas. En primer lugar, si expulso, todavía
puedo seleccionar del menú
de espectáculos cosas Pero si selecciono colisiones, podemos ver instantáneamente
lo que está pasando Por ejemplo, nuestros arbustos de
aquí están puestos en invisibles, pero su colisión está encendida. Lo mismo sucede
con nuestros sigilos, que los hacemos invisibles, pero la colisión sigue encendida Y esto prueba que al convertir algo invisible
u oculto en el juego, no significa que en realidad estemos
cerrando la colisión. Otro tema que ocurre es
que cuando empezamos a jugar, nuestra exposición a la luz es
diferente a la cámara del juego. Entonces, arreglemos estas cosas. Seleccionemos nuestra
cámara en una palabra. Busquemos la exposición, aquí está, y fijemos la exposición
mínima y máxima a una
como es nuestra cámara en el juego. Va a ahorrar. Ahora, lo siguiente, vayamos a nuestro
mosaico DP, seleccione los ns. Al elegir las vides, y
vamos a ir
al comportamiento predeterminado porque no
necesitan
generar eventos de superposición No necesitan ser
pisados por el personaje. No necesitan
tener ninguna colisión. Es sólo una cosa visual. Para que podamos poner todo
a ninguna colisión. Vamos a guardar y compilar. Ahora, a veces podríamos tener un choque mientras hacemos
cosas con las vides. Espero que lo hayamos arreglado en el lanzamiento.
Hay un problema. Déjame mostrarte.
Voy a seleccionar un activo. Voy a ir a
mostrar explorador. Y en Explorer, voy
a ir al curso Dungeon Jin, y voy a ir
a guardado y
nos registra un rush log, por ejemplo. Ahora. En nuestro registro de bloqueos, si
podemos ver que hay un error de repetición, si
tuviste un crash, que es sobre las vides sobre solo los mods opacos
o de mezcla de máscaras actualmente
son compatibles, y tenemos
mods de mezcla especificados. Es un problema con translúcido como podemos ver sobre
las hojas ine. Creo que lo habremos arreglado hasta el proyecto,
pero si sucede, es solo que el motor podría chocar mientras
los mueve o cambia la
configuración a ellos. Ahora, lo siguiente que
haríamos es ir a nuestras decoraciones y
seleccionar nuestros CDL Los seleccionan todos,
uno, dos, tres,
cuatro, los seleccionan todos, y yo voy a ir
a la colisión también y comprobar generar sobre piens a no y carácter
pisar no y no colisión, porque esto de nuevo,
es algo visual No deberíamos estar mirándolo. No deberíamos estar
chocando con él. Bueno, si presiono play ahora, esos problemas se arreglarán. Entonces si paso por azulejo, se
puede ver un movimiento mucho más
suave, Y si voy al lado de puertas, no
me bloquea
por colisión. No creo que nos estuvieran
bloqueando de este ningún caso. Ahora bien, si entro a una habitación, intentemos entrar en una habitación, se
puede ver instantáneamente que el ratón tiene algunos problemas aquí. Estoy apuntando tanto a mi personaje al personaje
se mueve por debajo. ¿Por qué es eso? Nuevamente, hemos puesto el techo
para que sea invisible. En realidad es st aquí. No podemos verlo,
pero es aquí, un apagón colisiones. Y vuelve a encenderla,
y podrás verla actualizada para demostrar que
nuestro techo está aquí. A la vuelta de colisiones,
y comencemos nuestro sistema para esconder y
mostrar el techo en una habitación Pero antes de hacer eso, solo un pequeño cambio
a nuestra cámara. Vamos a nuestra cámara. Vamos a ir en realidad
a nuestro personaje, nuestra primavera, no a la cámara. El resorte es como un brazo de brazo. Es como un palo que
sostiene la cámara, y tiene algunas
reglas por sí solo. Vamos a cambiar la longitud del brazo
objetivo a 2,500. Entonces tenemos cierta distancia
con nuestro personaje. Y entonces vamos a cambiar la rotación tampoco
necesita ser absoluta,
va a ser relativa desde -50, vamos a mantenerla -50,
y al eje Z, al eje azul, vamos a sumar 45 para hacer
nuestra vista isométrica de juego Lo siguiente que
vamos a cambiar es, vamos a escribir lag, hay un lag de cámara habilitado que vamos a
desactivar porque queremos nuestro personaje esté
siempre centrado y no la cámara cambie
al personaje. Porque si vamos a jugar ahora mismo, eso hay un pequeño retraso en nuestra cámara cuando
nos movemos. Uy. Creo que me equivoqué
sobre la ubicación absoluta. Sí. Sí tiene que estar
en rotación absoluta. Entonces vamos a
seleccionar Mundo 45. Y ahora, volvamos. Sí. Necesitaba ser absoluto. Puedes ver a nuestro personaje se mueve, pero nuestra cámara tiene un retraso. En realidad no es centro
de nuestro personaje. Obtiene un retraso hasta que lleva la cámara
al personaje. Entonces hagámoslo más como juego
ablo sin este retraso. Vamos a ir
a un personaje. Voy a seleccionar Lug de nuevo. Voy a desactivar el terminal de la cámara. Entonces ahora, nuestro personaje debería
estar quedando en el centro. Tenemos mucho más control
como parar aquí, parar aquí. Sabemos lo que estamos
viendo. Derecha. Ahora, para comenzar el
sistema para las habitaciones. Lo primero que
vamos a necesitar es hacer una variable a nuestro personaje para almacenar donde está nuestro personaje. Voy a ir
a nuestro personaje. Voy a dar click sobre variables, y voy a
crear una nueva variable. Vamos a llamarlo ds, y va a
ser de un punto de entrada. Ahora bien, para decirle a nuestro personaje que es cuáles son nuestras
coordenadas, también
necesitamos ir a nuestro plano de mosaico y
crear aquí otro valor Vamos a llamar es. Cambiemos
éste en punto también. La mejor jugada para almacenar este punto final sería
cuando engendramos la ficha Vamos a hacer incienso
editar y exponer nuestro spawn, compilar guardar y compilar, y luego ir a nuestro generador de
generación laberinto Vayamos al
principio en la fase uno, pero estamos desove nuestras fichas, y necesitamos refrescar esto Contamos con cordones de baldosas. Y para los cordones de baldosas, solo
vamos a usar
las coordenadas curr Por lo que ahora la información
ha pasado a la baldosa. ¿Cómo se lo pasamos al jugador? Bueno, en decoraciones, sí tenemos una colisión que podríamos
haber usado para otra cosa, pero ahora mismo la vamos
a usar para esto. Pero tenemos que hacer clic en generar
eventos de superposición para que sea verdad. Y para los presets de colisión, lo
tenemos en Atom Ignorar todo excepto el jugador pon, el
estanque, básicamente. Esa es nuestra colisión de cajas
en nuestras decoraciones. Ahora a partir de esta colisión, vamos a que los componentes
comiencen a superponerse. Vamos a comprobar si el
otro componente tiene ug tug, que es el remolcador,
vamos a poner una rama
y si tiene el remolcador,
vamos a emitir
de otro actor vamos a poner una rama
y si tiene el remolcador, vamos a emitir
de Carácter de arriba hacia abajo. Y de nuestro carácter de arriba hacia abajo, vamos a en las coordenadas
actuales. Y para obtener nuestras coordenadas
actuales, vamos a ir como azulejo BP a
la referencia de la baldosa a la
que pertenecen las decoraciones, y obtendremos coordenadas de mosaico. Y vamos a
conectar esto aquí. Entonces, cada vez que estamos
entrando en un bloque, ahora nuestro jugador sabe
en qué estilo pisa. Ahora, creo que este es un buen punto de
ruptura para este. Te voy a
ver en la próxima. Adiós.
76. Mecánico de techos de habitaciones: Hola, y bienvenidos a
Game Design Workshop, real Engine five
Procesal Dungeon action Bz Creation Anteriormente, almacenamos
nuestras coordenadas, nuestras coordenadas de mosaicos
a nuestro jugador. Y para ello, creamos una variable
val en nuestro azulejo BP. Ahí está. Aquí está, P tile, que se llama coordenadas de
teselas, y construimos esa
variable cuando estamos generando nuestro mosaico P a partir de
las coordenadas actuales Luego procedemos a crear otra variable
en nuestro personaje, que son las coordenadas actuales, y usando la colisión
de caja de nuestras decoraciones, que cambiamos algunos
ajustes en la colisión. Creamos un evento begin
overlap que estamos comprobando si el componente
tiene la etiqueta de player, y si tiene, estamos dando
las coordenadas de la ficha. Y ahora sigamos
usando esta información para crear nuestro sistema
para ocultar nuestros techos. No. Estamos en las coordenadas del
plano. Vamos a recordarnos
lo que hemos creado. Hemos agregado algunas colisiones
por aquí que serán utilizadas para detectar si el jugador
está entrando dentro de una habitación Vamos a ir a
sus ajustes de colisión. Vamos a ir a
generar sobre eventos. Sí. Vamos
a cambiar de paso, vamos a dejar sí
y preselección de colisión, vamos a volver a poner costumbre e ignorar todo
excepto el sondeo del jugador. Lo siguiente que
vamos a hacer es seleccionar cada uno de
ellos y seleccionar el evento
begin over lap,
y el evento de componente
end over lap. Para ambos, necesitamos
comenzar el solapamiento y el solapamiento final. Podría haber una solución
más fácil que pudiéramos vincular
estas acciones. Pero hagámoslo algunas veces y acostumbrémonos
a agregar cables. Tenemos todo el
solapamiento inicial y el solapamiento final. Separémoslos. Entonces tenemos el final solapado juntos y el principio
se superpone juntos El orden en realidad no importa. Otra vez, ¿qué estamos pidiendo? Hagamos las superposiciones de inicio. Estamos preguntando si el otro
componente es el jugador. Entonces vamos a conseguir la etiqueta de
ciervo P y nuestra sucursal. Y vamos a copiar base
esto a cada función. Verás, casi cometí
el error ahí, casi
me conecté con el actor. Estos son los temas con las cosas no
vinculantes en las acciones. Pero si no te
equivocas, puedes hacerlo en una de
las acciones repetitivas El, ¿por qué el oeste no funciona? Entonces vamos a ver que Occidente no
está funcionando porque
el conectado con el actor. Bien. La siguiente pregunta que debemos hacer es nuestro
techo visible. Pero eso es una pregunta
para todo, que podamos conectarlo con todos. Voy a poner aquí
la sucursal. Voy a conectar todas
las sucursales t aquí. Y de nuestra variable de techo
que traje de aquí, vamos a preguntar es visiblemente Para la siguiente parte, vamos a necesitar nuestra referencia tangente, vamos a conseguir nuestro mosaico, y vamos a conseguir
gon se llama generador O referencia del generador, y
necesitamos crear otra
función en nuestro generador. Vayamos a nuestro generador de laberinto, creamos una nueva función. Vamos a llamar a
esta sala de funciones filling hydrom sep, va a necesitar una
entrada de un entero, que va a
ser el índice de sala porque cada baldosa sabe si es una habitación y
tiene un índice Entonces si bacter decoraciones, cuando llamamos habitación aquí, necesitamos también conseguir nuestra habitación X. No hay índice de habitación, ¿cómo? Lo siento, el índice de habitaciones está
guardado en las decoraciones. Se almacena cuando
estamos agregando las paredes. De hecho, estamos habilitando la colisión en el componente de la caja cuando agregamos las puertas. Qué componente de caja
permite colisiones. Paredes R A, desorden ático,
hijos de paredes. Entonces estamos habilitando
el componente de caja, que son las
entradas. Tener sentido. Pero si los tuviéramos habilitados aquí, entonces esto se dispararía
aunque no fuera una habitación, y daría una
respuesta de habitación cero. Por lo que cerraremos el
evento generar solapamiento de estas casillas. Entonces mi error. Es el programa enorme que
no va a mentir. Y todas nuestras cajas entre cajas necesitan que sus muros
generen eventos de superposición cerrados. Por lo que sólo disparan
cuando son una habitación. Ahora voy a conseguir que el índice de
habitaciones esté conectado aquí. Sabes, puede que no
lo parezca porque estamos en planos, pero estamos en unos pocos miles de
líneas de código y aún más Entonces la memoria es un
activo fuerte para un programador. Memoria personal,
memoria biológica, no memoria de computadora. Bueno, la memoria de la computadora
también es un activo enorme por sí misma. Ahora, vamos a esconder
las salas C función. Vamos a completar esta
función básica. Pero nuevamente, vamos a necesitar algo extra para
completar esta función. Eso sería un núcleo de
interfaz de blueprint. Así que vamos a abrir nuestros
peines de laberinto y agregemos una nueva función. Llamemos a esto D. Bueno, esto es básicamente hing
nuestro techo porque nuestro como comando para ocultar techo viene
de las decoraciones. Enviamos a un punto central. Digamos nuestro laberinto porque ahí
tenemos las coordenadas de la habitación. Ocultamos los techos de estas habitaciones. Y entonces nuestro Laberinto en este momento
estará enviando un mensaje a cada una de las habitaciones del índice
para ocultar su propio techo. Entonces es un poco de información de ida y
vuelta. En fin, vayamos a nuestro laberinto. No, perdón, a nuestro laberinto, y vamos a promover el índice de habitación de variable,
no una variable local, sino una variable real, variable
permanente, real.
Variable permanente. Llamemos a este índice de habitaciones. La razón por la que necesitamos
esto es porque cuando estamos ocultando los techos, vamos a necesitar saber qué índice de habitación necesitamos
ocultar el techo. Oh. Ahora, también necesitamos una
referencia de jugador y ya que estamos generando la referencia dentro de
esta gráfica, en algún lugar de aquí Desaparecer mágicamente,
hacerlo hacerlo desaparecer, hacer que parezca que
apareció de la nada, no Hacer que desaparezca, básicamente, el error que dejé aquí. De todos modos, para promover
esta variable, vamos a hacer clic derecho
y promover la variable. Voy a llamar a esto. Entonces ahora estamos sosteniendo una
referencia a nuestro jugador. Volvamos a
nuestros techos de él, y consigamos nuestra referencia de
jugador. Lo que tenemos que preguntar
es bastante sencillo es, ¿es nuestro tiempo actual?
Acordes actuales Sí. Son nuestras
coordenadas actuales, ese jugador que se pone de pie. No pertenece al
índice de habitaciones en el que estamos. Pero para hacer eso, vamos
a obtener nuestra matriz de habitaciones ST, que es una matriz con nuestras
coordenadas de habitación con todas las
habitaciones y sus coordenadas. Vamos a conseguir una copia. Voy a conseguir el índice de habitaciones. Y vamos a preguntar
si esto está contenido. Ray está contenido en una
matriz, lo siento todo lo contrario. Esto sucede cuando
piensas en el futuro, no
necesitamos
salir de la habitación. Solo tenemos que verificar si nuestras
cocoordenadas están en esto. En realidad sí tenemos que conseguir. Y sí necesitamos conectar la coordenada, esto
necesita romperse. Bueno, porque esto contiene una matriz, básicamente, por eso, y estamos comprobando
la matriz contenida si está en las coordenadas de la habitación. Voy a presionar una sucursal
aquí, para poner una rama. Y lo siguiente que tenemos que hacer es desde las coordenadas de nuestra habitación, vamos a ho
Y como
dijimos, vamos a esconder el techo. Ahora, lo conecté a falso. ¿Por qué lo conecté a false? El motivo es porque esto debería desencadenarse cuando
estamos entrando en una habitación. No debemos pensar mientras
estamos dentro de la habitación, ya que nuestras habitaciones están
compuestas por cuatro de estas. Y significa que podríamos
tener otra puerta que es colisión
va dentro de la habitación. Yo pasamos por
estas colisiones, no
queremos volver a
dispararlo. Por lo que esto debería desencadenarse sólo desde el exterior
hacia el interior. Por supuesto, podríamos haber
enfrentado una colisión como esta, pero ¿por qué no crear
circunstancias en las que
podamos usar algún código para comprobar
cómo podemos aplicar reglas No, vamos a por nuestro calabozo. Encontremos a nuestras
coordenadas, a nuestro actor. De este actor, que
es nuestro azulejo, básicamente. Consigamos nuestras decoraciones, que es el contenedor de
nuestro actor de decoraciones. Sí necesitamos conseguir
actor Y a partir de esto, vamos a presentar un mensaje. Enviaré el mensaje que acabamos crear en nuestra interfaz de
blueprint Porque si lo envío
directamente a la baldosa, y esto no quiere decir que
el niño actor lo consiga. Y también si lo envío a los
Corans, esto es un contenedor. No es el actor real. Entonces necesito al niño actor. T vamos a probar Y
tenemos otro choque. Volvamos a ver cuál es
el problema. Abierto al choque. Esto es ir al archivo g. Empezamos desde aquí. Usado en materiales
válidos de máquinas
no estáticas. Entonces el material tiene un problema. Sí, son los
mismos temas antes. Tiene el blend y opaco y
se especificó su modo blend, translúcido, y
luego es nit issue Entonces, vamos a arreglar esto, vamos a enviar y reiniciar. Y como pueden ver, no lo
hice no guardé
antes de compilar y guardar. Así que voy a hacer
esto muy rápido otra vez de cámara
alla, y ya está hecho. Ahora, antes de probar, vamos de hecho a hacer un código muy simple
para ocultar techo Vayamos a nuestra decoración, y vamos a agregar nuestra interfaz porque las
decoraciones no la tienen. Entonces vamos a agregar Mize, Pi,
PI . Yo lo he implementado. Si no lo has implementado, solo agrega I maze viene aquí. A partir de eso, vamos a ir a la interfaz y
seleccionar las alturas. Vamos sólo por ahora entonces en juego. Todavía tendremos el
problema con colisión, pero los techos deben estar
ocultos cuando entremos a la habitación. Además, vayamos a nuestro techo
y encontremos su visibilidad, oculto en
el juego, y vamos a esto o ya no está
oculto en el juego. Tiene que ocultarse
cuando jugamos. Cuando entramos en una habitación. Juguemos. Ojalá, todo esté bien. El cofre necesita la regla. Llegamos al techo, pero no podemos ser felices
porque el cofre necesita la regla para no desovar
frente a una puerta Vamos a agregar esto rápidamente. Vamos a nuestro generador de laberinto. Vayamos a donde
engendramos el est, donde establecemos las
coordenadas para el cofre. Y sí tenemos esta regla
es colindante a puerta. Mapa. Obtenemos las coordenadas. Intenté tantas veces
que falló y se mantuvo tal vez porque
sí tenemos esa regla, y esa regla es correcta. Lo comprobamos con las luces. A lo mejor lo intenté tantas veces y no pudo
colocarlo en ningún lado. A lo mejor fue eso.
Entonces volvamos a jugar. Ahora a veces el parsl se
cerró, donde está un cofre. No está frente a una
puerta, a lo mejor fue solo un. genial. Vamos a parar
aquí para esto. Te voy a cantar
en la siguiente. Adiós.
77. Mostrar y ocultar el mecánico de techo: Hola, y bienvenidos a
ganar Taller de Diseño, y Real Engine five,
Procesal Dungeon, curso de creación de RPG de
acción Anteriormente, comenzamos con
nuestro mecánico de techos ocultos. Creamos la función ym
dentro de nuestro generador de laberinto, que almacena nuestra habitación actual, y comprueba si nuestras coordenadas actuales del jugador están dentro de la habitación en la que
estamos tratando de entrar. Si no lo son, entonces
estamos ocultando el techo. Y después, para
ocultar el techo, creamos una interfaz de planos que usamos en nuestras decoraciones
BP. Un minuto. No es así. Esto es todo, pero por ahora solo
pone nuestro techo invisible. Oh, vamos a animar esto. Vamos a crear una animación para que
el techo se oculte, y la misma animación que
vamos a usar para
que aparezca. En primer lugar,
hagamos una variable para que podamos conocer el
estado del techo. Vamos a llamar a esta guarida. En Hight decir, vamos
a decirle que es verdad. No. No necesitamos esto más. Sí necesitamos la
referencia del techo, pero después, después de establecer lo oculto, vamos a agregar una línea de tiempo. Y vamos a
entrar en la línea de tiempo y crear una pista de flujo desde 01, con tiempo cero, cero o
cero y tiempo 0.3 o uno. Vamos a usar
el último fotograma clave. Sólo corre hasta aquí, y vamos a elegir
nuestro techo y establecer vendaval. Vamos a
conectarlo para actualizarlo. Lo que vamos a
hacer es alertar vectores. Vamos a
conectar nuestro Alpha,
nuestro camión de flujo de camiones, y vamos a ir 111-001 Por supuesto, al final, en realidad
necesitamos el set oculto. Vamos al juego donde
vamos a conseguir los elegidos, ¿dónde está el selecto quiere? Para nuestro índice, vamos
a usar la dirección. Si va hacia adelante,
queremos que esté sí oculto, cuando va a estar al revés, queremos que no esté oculto. Y como sabemos que esto va a crear
un problema de colisión, vamos a ir
a nuestro techo, y vamos a
seleccionar ninguna colisión. Ya está hecho.
Pero si no lo es, porque sí tuve un choque. No estoy seguro si lo
hicimos anteriormente, lo que tenemos que hacer es no
generar eventos de solapamiento en realidad y tener la colisión para volver a caer en nuestro techo. Si vamos a jugar ahora mismo, podremos ver
esta animación. Y. Ahora, no vuelve atrás. Pero arreglaremos los swaps. Ahí hubo un
retraso de marco. Entonces, se puede ver ahora el movimiento
sin colisión, y en realidad sí lo
animamos para que no estuviera aquí La colisión no
importaría en este momento. De hecho, podemos caminar correctamente ahora en las
habitaciones dentro de las habitaciones. Entonces, continuemos con la creación nuestras funciones de techo oculto. Déjame revisar por un segundo. ¿Por qué había un registro de marco así? Oye, creo que solo mi computadora. Ahí tengo algunos problemas. Puedo escuchar la parte superior. Oh, sí. No. Solo fue hipo
porque abrí el proyecto desde
después de ser Derecha. Vamos a arreglar nuestros
techos, básicamente. Empecemos frente esta vez. Vamos a nuestra interfaz de
blueprint. Vamos a agregar la función. No. Función de techo,
techo. Carácter D. Dijimos que mal llamado
es el tema esta vez. Vamos a llamar,
que es nuestro mensaje. Vamos a poner
lo oculto a falso, y vamos a
revertir desde el final. Simplemente reversa, no de fin, porque en caso de que salgamos en
el momento en
que estamos entrando, no queremos que
empiece desde el final, queremos que retroceda
desde donde sea que esté. Y lo mismo con el juego, y por eso no lo
conectamos para jugar desde el principio. Ahora bien, ¿cuándo sucede esto? Bueno, sí tenemos los eventos de solapamiento
final. Hagámoslos más compactos. Pero sí tenemos nuestros eventos de
superposición. Vamos a necesitar
hacer esta pregunta si lo que se superpone al final
es nuestro carácter. Conocemos el procedimiento,
copiamos y pegamos estas ramas. Nuevamente, vincularlos
habría sido una mejor opción. La forma en que lo
haríamos es que vamos a hacer una matriz. Vamos a conseguir nuestras cajas, y vamos a encontrar
al comenzar la superposición en un bucle
for que tenga todas las cajas y crear un evento personalizado que
haga estas cosas. Sigamos. Vamos a
conectar esto aquí. Y vamos a
conectar esto aquí. Y entonces vamos a necesitar ir
a nuestro generador de laberinto. Hacer una nueva función.
Llamemos a esto ide. No. Roh paso No vamos a necesitar
una entrada porque
tenemos almacenada la variable
de la habitación actual, y después de todo esto, voy a conseguir lo que es el
generador aquí referencia, voy a copiar pegar
la referencia aquí y conjunto de sala cuando todos estos sean ciertos. Ahora entremos al set de show room. Encontremos nuestro conjunto de
funciones hydrom. Vamos a copiarlo
tal cual sin el conjunto
del entero, pégalo aquí. O nuestro conseguir que
se desconectó, necesitamos nuestras
varillas actuales En lugar de
escondernos, necesitamos estar mostrando. I. Entonces, compilemos y guardemos. Vayamos a nuestro juego, y
vamos a comprobar si está funcionando. Me escondí, y apareció. Pero apareció instantáneamente. Y ahora ni siquiera funcionó. Estoy entrando y me voy. Entré, ¿qué pasó? Tenemos que fastidiarlo. Entró, tal vez entré
demasiado y luego me fui. ¿No? En fin, parece estar funcionando. ¿Qué pasó realmente ahí? ¿Todavía estoy
en la colisión? Sí, probablemente me quedé en la colisión y
no me di cuenta. Entonces vamos a seis la animación. Vayamos a nuestras pieles
y veamos qué está pasando. A habitaciones tan pronto. Lo siento, no. O yendo aquí. Pongamos un punto de quiebre. Van así, van así. Hs que ty S. raro. Oh. Oh, ¿por qué sucede esto? Sucede porque al final estoy configurando
la visibilidad. Entonces sí reproduce la animación, pero al final muestra techo. Entonces básicamente, vamos a
esto tal como está. No hace aros Comentario. Vamos a dejar esto como e e e ir aquí y
simplemente conectar esto aquí y hacer que esto sea falso Ahora podemos ver el techo
antes de la animación. Esconder, Ocultar, Y, y estamos
terminados con nuestro techo. Oh, esto es para éste. Te voy a
ver en la siguiente. Adiós.
78. Blueprint de visuales para ascensores: Hola, y bienvenidos a Game Design Workshop
real Engine cinco procedimientos Dungeon action
Pz llamadas de creación Anteriormente, terminamos con nuestras funciones de mostrar y ocultar
techo. Animamos nuestros
techos, con nuestra línea de tiempo. Usamos la escala mundial establecida
para crear esa animación, y luego creamos el evento show
C blueprint interface event Y establecemos el id y a las caídas. Ponemos el
techo oculto a caídas, que podamos ver la animación, ya que nos estamos escondiendo
en I. Al final de adelante, como al final del evento ding. Y luego conectamos los eventos en nuestro
extremo eventos de superposición. Comvisamos si es nuestro jugador el
que termina superponiéndose, y creamos el techo de la cerda para que el techo de la habitación en
nuestro generador de laberinto, que es exactamente el
mismo código que en el techo oculto Pero esta vez estamos
mostrando techo. La única diferencia
es que estamos
usando las coordenadas actuales de la
habitación, mientras que en el techo oculto, realidad
estamos haciendo ping a
esta coordenada. Ahora, sigamos con la
creación de nuestro pozo sin fin, en realidad
no interminable como
hablamos al principio. Pero tiene una posibilidad
sin fin. Y vamos a la creación de laberintos. Vamos a completar nuestro elevador. Tener muchas pestañas abiertas. Voy a empezar a
cerrarlos a todos. Bae cuantas más pestañas
hayas abierto, en realidad
vuelve a bajar tu FPS si tu computadora
no es tan fuerte Voy a abrir el elevador. Voy a ir a
los planos, voy a ir a
utilería, y voy a elegir nuestro elevador Voy a traerlo aquí. Y también, vamos a
necesitar un nuevo plano. Llamemos a este
mecanismo elevador BP. Todo bien. Ahora bien, este mecanismo elevador debería tener nuestra rueda de
pasador por aquí. Voy a copiar esto, y voy a traerlo aquí. Ahora, tenemos que
cambiar la escala en. Voy a desbloquear
esto, y voy a poner 0.4 aquí y aquí 0.3, y en z 0.4. Entonces es un poco más pequeño,
y es un poco. Ahora, vamos a ser un
poco creativos aquí y agregaremos dos
mallas estáticas más, en realidad tres Para los dos primeros, vamos a ir a nuestras mallas, y hay un dispositivo de
tortura x Aquí está, y
vamos a fijarlo a éste y a uno más. Entonces básicamente,
vamos a tener esto por aquí y por aquí, este necesita ser
rotado. O cerrar. Movimiento de cadenas, es todo,
parece que es algo
que está funcionando. Sí, está bien. Entonces voy a usar este lío que tenemos
vacío y conseguir una caja. Voy a traerlo por aquí. Para hacerlo un poco más delgado. Así, para traerlo aquí. Y en realidad, voy
a hacerlo polar. Pongamos uno del
otro lado, también, métrico. Sí me gusta esta rueda de aquí. No lo hagamos simétrico. A mí me gusta ver esto. Si quieres, puedes hacerlo simétrico. Creo que desde el punto de vista anterior, es algo que
consideraremos que está bien. A lo mejor podamos hacer esto
un poco más grande. Este eje. También este. Está bien. Está bien. Si quieres, puedes
jugar más con esto y
hacerlo más visible. Lo que vamos
a hacer es girar componente, movimiento giratorio. Y vamos a ir al gráfico
par, traerlo aquí, y vamos a conseguir
nuestra rueda, que es,
creo que la malla de la planta. Si quieres, puedes esto, y vamos a ese
componente a nuestra rueda. L et's van a nuestro puerto de visión. Vayamos a nuestro rotativo. Si jugamos simulamos, podemos
verlo rotando todo. Déjame ponerlo en el guión
de construcción. Oh, yo no cambié nada. Oh, mira como puedes cortar
esta parte de simular. Sigamos a partir de aquí. Ahora, volvamos
a nuestro elevador y cambiemos
esta malla estática a nuestra plataforma de elevador. Tenemos una metanfetamina para eso. Come cubo elevador aquí
estamos. Esto es. Ahora agreguemos un actor infantil, que va a ser mecanismo
elevador. Ahora vamos a seleccionar un
sitio para colocarlo. Va a seleccionar este
sitio, tráelo. Yo vivo aquí. Sí, creo que está bien. Y ahora necesitamos
algunas cosas más. Vamos a necesitar algunas
cosas para bloquear a nuestro jugador. Por supuesto,
también seremos jugador local para no poder movernos. Pero, ¿por qué no tal vez
permitirle moverse? Es nuestra elección si
queremos habilitar esto o no y tener algunas paredes que
impidan que el jugador se mueva. Entonces, voy a agregar
más medidas estáticas. Todas estas plumas. Uno, y va a ser que necesitamos este
plano elevador o la malla estática. Vamos a rotar esto
y traerlo aquí. A lo mejor necesita ser
un poco más grande. Creo que esto está bien, vamos a
copiar y pegar esto aquí, vamos a pegarlo de nuevo
y girarlo, traerlo aquí, vamos a conseguir
esto y pegar, sacarlo por aquí. Todos los lados tenemos una pared. Porque lo que
vamos a hacer es cuando el jugador
entre al elevador, vamos a estar
levantando esto. Ahora, cuando lleguemos
al siguiente piso, vamos a necesitar
otra malla estática. I. No va a ser un avión, va a ser
el cubo elevador 031 antes de usar el 026 Entonces esta sería nuestra
plataforma extensible porque
tendremos un espacio desde el
elevador hasta nuestro azulejo para caminar. Entonces estaremos extendiendo
una plataforma como esta basada en el lado que está
disponible desde nuestro laberinto, que sería el bloque cero, y vamos a estar extendiendo esa plataforma hacia ese lado. Déjame restablecer su ubicación. Y lo siguiente que
vamos a necesitar es una cámara. Y vamos a
colocar esta cámara. Sigo dos E. Vamos a colocar esta
cámara encima del elevador. Vamos a ponerlo también un
poco a un lado o al costado. Este lado, y tal vez un poco más bajo. Eso está bien. Entonces cuando subimos, podemos ver y
larp a través de esto, así ya no podemos ver
el laberinto. No podemos ver a la izquierda y a la derecha. Sólo vemos el elevador. Aquí lo inclinamos un poco también. Veremos cuando
hagamos la animación, veremos cómo se ve. Ahora, lo siguiente que
vamos a necesitar es que vamos
a agregar una colisión,
una colisión de caja, pero sabemos cuando el jugador se
metió en el centro. Y en realidad
vamos a dejarlo como está porque queremos estar seguros de
que el jugador se metió. No queremos que
lo actives cuando el jugador está aquí, queremos que lo actives cuando el jugador está en el centro. A lo mejor lo hacemos incluso
un poco más pequeño. A lo mejor lo movemos hacia el
botón con el mecanismo, un poquito aquí. Sí, eso parece estar bien. Oh, una cosa más que debemos hacer es criar los componentes
necesarios que
queremos al cuerpo. Vayamos este cuerpo porque
el cuerpo va a estar subiendo. Pero no queremos que la
colisión esté subiendo, por ejemplo, con el cuerpo. No queremos que esto esté
subiendo con el cuerpo. Pero como vamos a ser realmente no
importa para ser honestos, porque vamos a estar
usando la ubicación del actor. Pero ¿sabes qué?
Hagámoslo de la manera difícil. Usemos el cuerpo, no la ubicación del actor, porque vamos a mostrar ambos sentidos. Si usamos la ubicación del actor, debemos desvincular a
este actor infantil Entonces esta parte está en el suelo, y luego podríamos
mover al actor hacia arriba. Pero vamos a separarlo sólo
para mostrar cómo lo separamos. Y luego movamos el cuerpo hacia arriba. Pero si queremos
mover el cuerpo hacia arriba, entonces tenemos que
criar las cosas que queremos
mover con el cuerpo. Entonces esas serían las vallas. Esa no sería la caja. No queremos la caja.
Esa sería la cámara. La cámara que
queríamos mover con nosotros. Ese sería el plano
elevador, y también la barda para. Sí. Por lo que estas cosas
tendrían que ser criadas en el piso
del elevador Creo que tenemos que bajar un poco
esto. Sí. Fue una especie
de superposición. Oh. Esta es la configuración
de nuestro elevador, y creo que este es un
buen punto de ruptura, y vamos a continuar en el siguiente para alimentar el código. Adiós. Nos vemos entonces.
79. Mecánico de laberinto: Hola, y bienvenidos a
Gain Design Workshop, n real Engine five, Procesal Dungeon action
RPG Creation Course Anteriormente, creamos las
imágenes de nuestro elevador. También creamos el mecanismo
elevador BP, que es un visual que hará que esta rueda gire y se
separe del elevador. Ahora, actualizamos solo
la malla estática, que es responsable la rueda con nuestro movimiento
giratorio, y creamos nuestra
estructura con nuestro cuerpo y los componentes porque vamos a estar
moviendo realmente nuestro cuerpo. Ahora, comencemos en lo que sucede cuando
colisionamos con la e. con el cubo de colisión No. Un componente comienza a superponerse, hagamos la primera
pregunta. ¿Es un jugador? Oh, tiene una y poner una rama. Si esto es cierto, necesitamos verificar si nuestro
jugador tiene la clave. Vamos a conseguir el modo de juego. Vamos a lanzar a GM
al modo de juego de arriba hacia abajo. Vamos a
convertirlo en un elenco puro. Y vamos
a conseguir inventario. En nuestro inventario,
vamos a encontrar I six, que es el nombre en bruto de
nuestra tabla de datos o nuestra clave. Ahora, vamos
a usar una sucursal, y vamos a
conectar esto a, ¿la encontró o no? Oh, vamos a conectarlo a verdad porque es un jugador, y no lo encontramos, entonces es bastante simple. Tocamos un sonido, y eso es todo. El sonido que vamos a tocar tiene algo que
ver con elevador. Falla de elevador. Elevador falla
Q porque queremos colas Sí, eso es. Si es cierto, lo vamos a hacer una vez. Porque
pase lo que pase después de aquí, no
queremos
repetirlo. Sucede. No debería haber ninguna posibilidad
de que vuelva a suceder. Oh, lo primero que
haríamos es desactivar
el movimiento del jugador. Pero como aún no hemos
creado estas cosas, vamos a agregar más tarde. Lo siguiente que debemos
hacer para conseguir a nuestro actor infantil, que es nuestro mecanismo
elevador elevador y conseguir actor infantil, y vamos a de actor. Vamos a mantener el mundo. Pero la escala de ubicación y
rotación se mantiene igual. Lo siguiente que
vamos a hacer es que
vamos a cust mecanismo Vamos a
convertirlo en un cust puro. A partir de aquí, queremos el componente de movimiento
giratorio, y vamos a
esa velocidad de rotación. Dos -60. Comienza a girar la rueda, y voy a
establecer M 62 y eje. De hecho, vamos a probar esto. Encontremos nuestro elevador.
Esto significa compilar De hecho, abramos el menú
principal y hagamos que nuestra Sra. un poco más pequeña. Menú principal. Aquí estamos. Y
vamos a ir a mosaicos y
pongamos esto en diez. Digamos diez por ahora. Voy a compilar.
Presionemos play. Un mapa muy pequeño.
Creé una habitación. Interesante. Nuevamente, se
puede ver que no
pudo encontrar un lugar que
sea válido para colocarlo, así que optó por estar al
lado de una puerta. Nuestro personaje es muy,
muy pequeño. De todas formas. Así que va por evert. Esto no debería estar rotando
desde el principio. Así que vayamos al mecanismo
elevador y fijemos la velocidad de rotación a cero. Vamos a compilar y guardar. Volvamos a jugar. Sí
tocó el santo. O eso es porque no
tenemos el artículo ni derecho. Pero
ahora no está rotando. Es bueno saberlo. Hagamos trampa un poco y agreguemos este artículo en nuestro inventario. Vayamos a nuestro bajista, vamos a nuestros planos Pasemos a nuestro modo de juego. Seleccionemos nuestra variable
de inventario, y agreguemos I six con cantidad de
uno. Nuestra compilación ahorra Creo que vivimos cantidad a cero cuando no hay cantidad. Vamos a estar seguros de ir a artículos, artículos dt, la cantidad clave uno. Tenemos uno en todo. Lo bueno que
agregué uno aquí. Compila y juguemos, y ahora sí tenemos la clave Esto seguro necesita una alerta de cámara
diferente. A aquí. Aquí está. Y empezó a girar
la rueda. Eso es bueno. Ahora, eliminemos esta
clave de nuestro inventario. Volvamos a su elevador. Vamos a conseguir nuestra
referencia de inventario que
tenemos de aquí, voy a redirigir bajo Y luego voy a
redireccionar aquí también. Voy a quitar el seis. Ahora, se retira, pero si tenemos nuestro inventario
abierto, esta madera actualizada. Necesitamos actualizar nuestras
imágenes en el inventario. Desde nuestro modo de juego,
vamos a arrastrar aquí, y vamos a obtener el
juego nuestra referencia de widget, la jugabilidad del widget, y
vamos a hacer un inventario. Y el inventario sería
esto el fuera de aquí. Porque aunque
solo la estemos quitando aquí, esta variable ha sido actualizada. Ahora, toquemos también un sonido. Vamos a copiar esto. Vamos a hacer que desbloqueemos. Creo que esto es
lo que jugamos aquí. Sí, desbloqueo del elevador. Y ahora es el momento de
plantear el siguiente laberinto. Entonces, ¿cuál sería la
ubicación de nuestro próximo? Bueno, esto depende
realmente de lo que queramos. Por ahora, acabo de
establecer la ubicación, obtengo la ubicación del actor. Y a partir de eso, agregué en
las Z 2,500 unidades irreales. Oh. Vamos a
promover esta variable. Llamemos a este nuevo Centro.
¿Y por qué nuevo centro? Porque nuestros laberintos empiezan a
construirse O las mazmorras
empiezan a construirse desde el centro hacia
cualquier dirección No, vamos a
poner una clase de policía, y vamos a
elegir nuestro generador. Laberinto gen. Y vamos a dividir la
ubicación y conectar esto. Ahora bien, tenemos un montón de opciones aquí
que necesitamos completar. Para completarlos,
necesitamos saber qué nivel
estaba el generador
anterior y alguna
información del mismo. Lo que vamos a hacer es
volver a crear una g de referencia. Vamos a hacer
que escriba Me gen. M. Otra vez referencia objeto , claro, y vamos
a traerlo aquí. Lo primero que necesitamos
son nuestros estilos mac. Porque en base a eso,
solo vamos a digamos agregar rango entero aleatorio. Eso sería de
digamos uno,
dos, vamos a conseguir nuestro nivel
generador. Uno, dos
niveles de generador más uno. En este caso, uno, 22, entonces sería uno,
dos, tres, uno, 24, uno, cinco, y así uno. Entonces vamos a
conectar esto aquí, y el tamaño del estilo
debería ser 600, significa que por defecto
debería ser 600. Estoy confundido. Tenemos el valor
correcto en el menú principal. Son 800. ¿Por qué estoy
atascado con 600? No lo sé. M talla F ma talla, obtenemos talla ma. Y debido a que estamos sumando
una cantidad incrementada, siempre
vamos a
aumentarla en una sola. Pero hagámoslo solo cuando nuestros estilos mac
no encajan en nuestra ma. Entonces como hemos
llegado al máximo. Vamos a hacer un
menos y vamos a
multiplicar esto de t. Entonces, esto básicamente es cuántos
azulejos podemos agregar a nuestro laberinto. Y si esto es
más bajo de lo que podemos colocar, entonces todo está bien. Entonces vamos a hacer
un tamaño de laberinto selecto, voy a usar esto
para una condición, y si es cierto, si esto es menor de
lo que podemos caber, entonces elegimos el
tamaño de may. Nosotros lo mantenemos igual. Cuando no podemos, entonces solo
agregamos uno. Vamos a traerlo aquí,
para que quede más claro. Agregamos uno a
todo el perímetro. Esto podría estar bien. Ahora, por supuesto, necesitamos
un nivel generador, así que vamos a obtener nivel
generador y
sumar uno a ocho. Y conecta esto aquí. Nuestro generador está actualizado ahora. Vamos a verlo en acción. ¿Tenemos un choque maravilloso, o todo está
funcionando a la perfección? Entonces vamos al elevador. Tan pequeño personaje. Y estamos mostrando carga y
pantalla. Eso no es bueno. Y tenemos un congelamiento. Voy a controlar eliminar. Esto es probablemente
algún bucle salvaje para. Eso es un bucle sin fin. Voy a usar
el administrador de tareas para y voy a
reabrir el proyecto Esto sucede a menudo con bucles. Pueden destruir completamente
lo que estás haciendo. Pero existe la posibilidad de que eso no fuera porque sí
tenemos nuestra carga, y sin cargar, algunas
cosas podrían no funcionar. Volvamos. Creo que este es un buen punto de
parada para este. Vamos a arreglar esto en
la siguiente. D entonces?
80. Generación continua de laberinto desde el primer mosaico: Y bienvenidos al taller de
diseño de juegos bajo Engine five procedural
Dungeon action o Pz creation calls Anteriormente, comenzamos con nuestro elevador comenzar evento de
superposición, que cuando
pisamos nuestro elevador, verificamos si es el jugador. Y luego comprobamos si el jugador tiene la llave que
se supone que tiene que tener. Si no lo tiene,
tocamos un sonido como fallar. No se puede proceder. Si sí tiene la llave, sí
queremos los eventos
que van a seguir. Entonces no estamos seguros de eso
así que estamos seguros de que no
vuelven a correr. Para comenzar, comenzamos con
separar a nuestro niño actor, que es este
mecanismo por aquí, y fijamos su componente de
movimiento giratorio que hemos agregado
al mecanismo elevador, para rotar en -16 en el eje y Luego continuamos retirando
la clave del inventario, y actualizamos nuestro inventario. Tocamos un sonido que
el elevador desbloqueó, y generamos nuestro nuevo laberinto, que tuvo algunos problemas Y para ser honestos,
claro, tenía algunos problemas. En primer lugar,
no hicimos clic en Continuar. No hice clic en Continuar
porque estoy haciendo el curso. Entonces fue este
botón de continuar jefe por aquí donde
necesitamos dar click para indicarle a este generador que
vamos a continuar. Si esta no es la primera
pieza, continúe construyendo. También podríamos haber
comprobado si el, el nivel
del generador
era el número uno. Ah, hemos almacenado también Entonces luego me nivelé a la
mazmorra, a la modalidad de juego Podríamos haberlo estado tomando
del modo juego en lugar de crear
referencia solo para esto, pero de todos modos, lo que tenemos que
hacer es conectar el
continuum al primer estilo Porque no queremos
mostrar una pantalla de inventario. Me han quitado de padre. Entonces cada vez que esto
se va a llamar, probablemente
va a
producir un error, pero no nos importa porque
sabemos por qué está ahí. Si no quisiéramos
ver el error, podríamos poner un nodo es válido. Así antes
del porcentaje establecido, y lo conectaremos
aquí, si es válido, establecemos por ciento, si
no es válido, vamos al siguiente nodo. Pero no vamos a hacer esto. Vamos a
dejarlo para que tenga un error, un error controlado.
Vamos a llamarlo. Cuando se le llama, alrededor de 5 horas. Está bien. Ahora, en nuestro primero en
nuestro estilo spawn first, necesitamos agregar el código de
desove el primer ¿Y por qué es diferente? Vamos a pintar. Oh. Cuando engendramos digamos que
esto es para acercar. Esto está fuera. Yo es
simplemente perfecto. Aquí. Digamos que este es
nuestro azulejo que comienza. Esta es nuestra baldosa que
tiene el elevador, por lo que esta es nuestra plataforma
del elevador. Cuando subamos. Cuando estamos desove el siguiente
laberinto y vamos subiendo,
se genera directamente encima Entonces, si esta es la primera teja, y necesitamos
desplazarla hacia una dirección. Y decirle a este estilo que la dirección que
desplazamos lo contrario de la dirección a la que lo compensamos es lo que llamamos la intro, donde en realidad tenemos nuestra caja que vendrá
el Entonces, al compensar esto, hacemos el centro
de nuestro calabozo, el bloque de introducción a partir de ahora Así que vamos a hacer
esto muy rápido. Lo que vamos a hacer es crear una nueva variable local. Pero vamos a llamar dirección
offset direction. Va a ser de
la dirección tipo. Entonces vamos a establecer un elemento
Random a partir de una matriz. Y vamos a hacer matriz para elegir una
dirección, eso es a las cuatro, esto será noreste
suroeste Norte Suroeste, y esta sería nuestra compensación. Lo siguiente que
necesitamos es una nueva salida. Así que vamos a volver a hacer un
bucle salvaje, volviéndonos salvajes. Para la condición,
vamos a usar nuestra última salida
no es igual en realidad
dos de dirección establecida. Así, el igual
en no el operador. Si bien esto es cierto, no
queremos continuar. Necesitamos encontrar una
nueva salida aleatoria. Entonces lo que vamos a hacer es esa última salida a cualquier
valor aleatorio que pueda asignar. Esto no necesita
ninguno Vamos a esto. En fin, continuemos. Entonces para ser honestos, el El verdadero laberinto, no
va a cambiar
el centro del mismo. Nosotros solo lo compensamos. No significa porque
lo que vamos a compensar ahora es el actor real. Entonces lo que tenemos que hacer
es la ubicación del actor. No vamos a estar
compensando la baldosa. Vamos a estar
configurando el generador. Entonces, cuando genere el mosaico, se lo compensará Eso tiene sentido. Y vamos a seleccionar
voy a añadir dos pines más, y el índice sería
nuestra dirección de desplazamiento. Vamos a traerlo. Y ahora necesitamos hacer una
compensación a nuestra ubicación. Eso sería obtener ctación. Eso también se requerirá para realizarlo o remarlo desde aquí. Dividamos esto. Norte sería solo agregar el tamaño de la loseta tamaño a x y el resto
permanecería el. Eso sería
noreste estaría sumando el azulejo hasta la y y el resto se
quedaría igual, x y anuncio. Tu estaría negando este tamaño
menos xy, y
el resto la s. este es un espagueti increíble,
este es el nivel de albonaa U y lo contrario para el poniente, tamaño de
azulejo aquí o y y
x y establecer lo mismo, y eso será oeste. Ahora tenemos compensado
que nuestro actor. Ahora, copiemos parte
del código que tenemos a continuación
porque lo necesitamos. Necesitamos el azulejo de cuchara BP. Cordones de azulejos, vamos a
dividir esto para ser 00. Tenemos que agregarlo para destruir. Tenemos que agregarlo al
mapa de mazmorras, los cordones actuales. Necesitamos el especial para
agregarlo a las baldosas especiales, y no necesitamos el resto. Traemos esto aquí. Nuestros cables de corriente predeterminados
son 00, así que está bien. Vamos rápidamente a través de los cables actuales
bien. Eso está bien. Bien cerca adyacente,
Noreste Oeste, vamos a pop a cada uno de ellos, así conseguimos a los vecinos. Digamos que el
índice es igual a. Lo que quiero hacer es simplemente agregar la dirección de desplazamiento
al vacío forzado. Voy a ramificar aquí. Si es igual a norte es cero, dos, dou es uno, oeste es tres, A, y vamos a agregar dos R y la matriz será la manguera I Y ahora
sí necesitamos una referencia a
nuestro dueño elevador, el elevador que
generó este laberinto Tenemos una referencia
del elevador en alguna parte, tenemos la referencia del elevador
de desove Duplica esto. Vamos a llamarlo dueño elevador. Muy mal nombrar aquí. Entonces lo que vamos a hacer, ir a nuestro elevador y crear
un vari, llamarlo acción Va a ser de la acción. Porque lo vamos
a necesitar más tarde. Hagamos que la instancia de
elevador de spa editable y expongamos en spawn El elevador bactor otra vez,
va a refrescar esto. Tenemos el elevador spon, vamos a poner tel El elevador spon, el que nos
engendró y el elevador de engendrar,
el que laberintos telefoneando Volvamos. Un generador. Un primer estilo pequeño. Al final aquí, consigamos
nuestro elevador de engendradores y fijemos Conéctelo para completar y conectemos la dirección de
desplazamiento. Ahora tenemos nuestro
primer spon estilo. Ahora, si voy a jugar, comenzó en el lugar cero. Yendo muchas trampas.
Voy a expulsar lúpulo. Por favor. ¿Verdad? Esto se esperaba. Vamos a controlar Al
eliminar cerrar este programa. Y, la tercera vez es el encanto. Vamos a ver
en la siguiente lección por qué no siguió. Adiós por ahora.
81. Animación de ascensores y efectos de sonido: Hola. Y bienvenidos al Taller de Diseño de
Juegos y Real Engine five procesal Dungeon action LPG curso de
creación Anteriormente, terminamos con nuestro evento de primer azulejo de desove Agregamos el desplazamiento
basado en una selección aleatoria
de nuestra ubicación Maze. Entonces empezamos a desovar
el primer azulejo. Lo agregamos a nuestras listas, y nosotros también por
el desplome PD. Bien. Entonces déjame agregarlo
realmente rápido otra vez. Vamos a ir al elevador. Yo guardé las indicaciones aquí. O, consigue nuestro engendrado por
elevador, no el engendrado. Nos quedamos con esto también. Así que vamos a obtener esa dirección de direcciones y establecer la dirección establecida a
nuestra dirección de desplazamiento. Ahora, después, intentamos jugar y
se pincharon. En primer lugar, vamos a
comprobar dónde
estamos desove el elevador, que proponer Lo
primero que hacemos, y no tenemos la referencia del
generador Vamos a hacer click en
nuestra variable generadora, vamos a
hacerla instancia editable y exponer en spawn
dentro de nuestro elevador Vamos a compilar y guardar, y voy a refrescar esto. Tor, y para generador,
vamos a ponernos a sí mismos. Esto cubre hasta cierto punto. Vamos a nuestro gráfico de eventos. Vamos a nuestro
evento Built, creo. O, no el construido. Volví a ir al primer azulejo porque aquí
hay un error. Queremos lo contrario de esto. Agregamos la
dirección de desplazamiento y utilicé el 02 basado en nuestra cruz
multada adyacente Sí necesitamos lo contrario de esto. Entonces ese sería uno. Entonces sur sería cero. Eso serían tres,
y lo que serían dos. Ahora bien, esto debería tener
cerdos son temas. No sé si vamos y mejor tocamos uno con el cofre, el vino. ¿Qué es el elevador? Lejos. Tenemos algo.
Ellos están arriba engendrados, pero no nos estamos moviendo Ahora, como pueden ver,
todo proyecta una sombra para arreglar esto. Vamos a hacer trampa
un poco y vamos a abrir nuestro azulejo, y vamos a
seleccionar nuestras paredes principales, y ponerlas para que
no proyecten sombras. Y vamos a hacer
esto también para el uso de la palabra. Y las vides. Voy a compilar y guardar play. Un poco de marco ahí. Vamos a movernos. A lo mejor deberíamos hacer estas
cajas un poco más pequeñas y hacer que la agricultura sea
un poco más grande. ¿Dónde está el
elevador de ahí? Oh, por cierto, he cambiado mi talla de ma a 20
otra vez en lugar de diez. Yo tipo de cámara. Entonces no tenemos estas
enormes sombras que teníamos, pero sí tenemos un resplandor. Estoy adivinando que el resplandor viene de esta lava que hay debajo de aquí Así que vamos a hacer trampa
un poco de nuevo. Vamos a salir
a donde teja otra vez. Vamos a
duplicar el piso. Base un piso, un
poco abajo, por lo que esconde lava. B otra vez. Fue un bonito resplandor
estar encendido yo era el mono. Resplandor demonio. Lo que el piso es lava, así que
tenemos que esconder la lava. Y sí, voy en la dirección
correcta. Y ahora no
tenemos este resplandor. No bloqueamos al jugador. Porque el ratón
realmente golpea aquí. No puedo moverme Oh, es hora de hacer subir
el elevador. Solo estoy comprobando que se encuentra en la ubicación correcta. Sí, tenemos d aquí, así que supongo que el S&P
una buena primera pieza, dos opciones aquí
para izquierda o derecha elevador y la caja están bien. Tener algo de tiempo ahí. Ahora, volvamos
a nuestro elevador. Y tienes esta referencia. Y ahora
hay que pasar dos cosas. Oh, vamos a
poner una secuencia, y vamos a
crear un evento. Llamemos a esto estaciones de eventos, y llamémoslo el indicado. Y vamos a completar
esto después. Ahora, lo segundo que necesita lo
primero que tiene que pasar es que obtengamos
nuestro controlador de reproductor. Entonces podemos sacar la
nota que queremos, que es el espacio
objetivo de vista terrestre, algo así. Ver objetivo con planta. Oh, el tiempo del plan
sería de 3 segundos, y el resto, sólo nos vamos
a dar ese. Después de que
comencemos a reproducir
las animaciones, vamos a
retrasar o 2 segundos. Y luego vamos a crear
un bulion en las variables. Llamemos a esta condición, y vamos a establecer
esta condición verdadera. Ahora bien, ¿qué va a hacer esta
condición? Vamos a usar el
evento tick para impulsar nuestra animación. Vamos a tener esta
condición por aquí. Eso es condición de calidad.
Un nombre poco mejor. Con base en esta condición,
vamos a estar manejando real cuánto sube nuestro
elevador. Y claro, estaba
bromeando cuando dije, vamos a hacerlo de
la manera difícil de mover el cuerpo y no al actor Vamos a estar
moviendo al actor. Es mucho, mucho mejor
ya que también desconectamos,
desapegamos al niño actor. Pero vamos a explicar cómo
iría para no el actor y si fuéramos a mover
el espacio relativo del cuerpo. Oh. Cuando nuestro elevador se mueve, queremos estar tocando un sonido. En este momento, solo
queremos reproducir sonido. Vamos a crear
un sonido porque nuestro elevador podría por un segundo. Vamos a hacer que el elevador se mueva en consecuencia como lo haría la parte de
carga, esperaría
a que se completara el laberinto para
llegar a destino. Porque si no hacemos eso, existe la posibilidad de que el
elevador suba y llegue al destino sin que el
laberinto esté completamente construido. Y esto es algo
que no queremos. Entonces vamos a
tener una unidad Alpha, como hicimos en los Lerbs, como hicimos en las
líneas de tiempo para Oh, comencemos con el sonido. Lo que tenemos que hacer para
que el sonido pueda controlarlo. Yo hago un sonido Lay.
No tengo control sobre. No tengo control sobre esto. Yo solo tengo control
sobre volumen playa, hora de
estrellas, ajustes de concurrencia, que es algo así como
puedes poner reglas como tamaño de reverberación, donde está un
poco completo En fin, no tengo una
referencia real al sonido, donde si utilizo el sonido
create, D. Entonces tengo este valor de retorno, que es una referencia
al sonido que estoy tocando pero en realidad
creando, no jugando todavía. Porque cuando estoy
creando un sonido, necesito ordenarlo para que
haga lo que quiera, es solo crear una
variable de sonido, un canal de audio básico. Entonces voy a
promocionar esto
pongamos primero el sonido,
elevador algo. Creo que es la máquina
del elevador. Sí. Es la señal de la máquina del
elevador. Voy a promover
esto tan Variable. Llamemos a este elevador con destino. Y ahora vamos a empezar a
jugarlo. Voy a presionar. Jugar. Y solo
pienso en este sonido. Nosotros lo hemos configurado para que sea un looping. Entonces esto es un sinfín. Hay que detenerla cuando
queremos dejar de tocarla. Oh, ve a guardar
todo. Caso Justin. Y comencemos con
nuestras animaciones. Pero hagámoslo
en la siguiente lección. Ese es un buen punto de
parada por ahora. W para verte
en la siguiente. Adiós.
82. Cinematografía de cámara para ascensor: Hola, y bienvenidos a
ganar taller de diseño, y real Engine five,
Procesal Dungeon, curso de creación de juegos de rol de
acción Anteriormente, creamos
las últimas partes de nuestro
evento de superposición inicial en nuestro elevador. Plantamos el objetivo de vista con nuestro que realmente
necesita yo aquí. No se mezclaría a través ningún objetivo si no
tiene un nuevo objetivo. Así que nos mezclamos con nuestro nuevo objetivo, y creamos el
evento de
inicio de animaciones que vamos
a sentir en esta lección. Usamos el retraso para
configurar las cosas, nuestras animaciones y
todo lo demás, y establecemos la condición
t en true después de eso. Creamos al sonido, y lo almacenamos en una variable, y lo configuramos para que se reproduzca. Y explicamos algunas cosas sobre cómo
va a funcionar nuestro movimiento de elevadores. Éste, comencemos por crear la animación.
Comencemos la animación. Lo primero que vamos
a necesitar es una línea de tiempo. Entonces vamos a agregar item, y vamos a entrar y
crear una nueva pista de flujo. Va a ser una pista de
flujo de flujo muy pequeña otra vez, vaya a ser tiempo cero, valor cero, y
0.3, 0.3 es cinco. 0.3. Sería uno. Vamos a hacer clic. También use el último
marco clave. Regresa aquí. Ahora, conseguiremos a nuestros fans. ¿Vamos a hacer? Voy a conectar
esto. Voy a hacerlo. Voy a conectar
esto para actualizar. Y ahora vamos
a conectar esto, para conseguir c. me voy a dividir. Voy a catión. Y voy a dividir el. Voy a agregar x e y. Ahora, para nuestra t, aquí es donde aprenderemos. Vamos a dejar flotar y vamos a
usar el camión nuevo. El lugar al que queremos
moverlos es de lo que sean
ahora mismo, a cero. Para ello, vamos a ir
a empezar a jugar. Eliminar este acto, no
importa, y vamos a conseguir la primera barda, obtener la ubicación
relativa. Voy a dividir esto. Voy a promocionar
la b y quedarme esta regional y que la
voy a conectar aquí. Ahora esto está almacenado. Voy a volver
a la línea de tiempo, y seleccionar esto para Alfa, y B sería cero
para A, no Alfa. Alpha sigue siendo nuestro nuevo
camión, nuestro camión de flujo. Entonces, veamos que esto funciona. C play. Objeto. Ve a agarrar a mi personaje porque no voy
caminando por ahí. Voy a traer aquí al
personaje. Yo recobro. El mando hace mucho, pero la barda sí sube, y sí, está funcionando. Entonces el siguiente paso es
hacer subir el elevador. Y para eso,
vamos a usar e. Ahora, tenemos nuestra condición. Si la condición es cierta, yo para subir gasolina. Mientras que, si hiciéramos
relativo aquí, estableceríamos una ubicación
relativa, y necesitaríamos el
cuerpo como referencia. Y esto llevaría
todo lo demás con nosotros. Pero vamos a usar
el conjunto de una ubicación. Oh, para la nueva ubicación, necesitamos ir entre la ubicación actual
y nuestra ubicación objetivo. Entonces vamos a necesitar
ir a empezar a jugar de nuevo. Creo que está por encima de todo,
y vamos a hacerlo. Vamos a estar promocionando
estos dos originales lo. Lo siguiente que haremos
es sumar a esto nuestra altura, que queremos
engendrar el siguiente laberinto, que sería más 2,500 Pero como necesitamos ir
un poco más alto, haríamos esto 2 mil 900 Tenemos que bajar, tener algo de espacio para bajar abajo. Ahora, vamos
a promover esto. Este sería nuestro
get pariente Pat. En realidad no relativo. Lo siento. Me pongo paciente. Ahora, tenemos estos dos valores. Volvamos a nuestro Tiki doblado. Oh, Cuando tenemos una línea de tiempo, tenemos un vector y vamos a
nuestro origen y nuestro objetivo. Este es nuestro origen, y
este es nuestro objetivo. Y el Alpha está siendo establecido por nuestro camión de
flujo de línea de tiempo generalmente. Ahora necesitamos promover
esta variable que se llama alfa máxima. Porque vamos a
estar configurando esto desde nuestro generador de laberinto como
hicimos con la carga. Y en base a eso, esa es la altura donde elevador intentará alcanzar
hasta que este Alfa
llegue al número uno. Entonces va completamente
de A a B. Para hacer esto. Vamos a usar en constante. Que como dice la propina, trata de alcanzar un objetivo
a ritmo constante. Entonces tenemos una corriente
y tenemos un objetivo. Para nuestra corriente,
vamos a conseguir una ccation. Y nuestro objetivo sería el erb, el resultado del erb Para nuestro tiempo Delta, ahora mismo, vamos a usar los segundos
Delta, que hace que sea un
poco confiable en el marco Hay una fórmula para que no
sea confiable en fotogramas, velocidad de
fotogramas no
afectaría el movimiento, pero no vamos
a hacer esto ahora mismo Para C, en velocidad terp, que es el paso
de esta vena b, usaremos 350 Ahora bien, lo siguiente que
debemos hacer es hacer una pregunta. Hemos alcanzado nuestro objetivo, porque has
alcanzado nuestro objetivo, entonces deberíamos detenernos y
revertir nuestras animaciones, hacer que las vallas bajen No, hay muchas maneras
de hacer esto. En realidad, podríamos
guardar nuestro Alfa igual a uno, pero asegurémonos de que nuestra ubicación objetivo es la misma que nuestra ubicación
actual. Vamos a hacer un igual,
perdón, casi igual. Para los que no vieron
fue este fondo aquí, no el exactamente igual,
el casi igual, y vamos a darle
digamos 1010 y unidades reales, que es yo diez centímetros. Ahora podemos darle la vuelta a nuestra
condición también. Este evento de palo ya
no se ejecutaría. Lo siguiente que debemos
hacer es que vamos a establecer la longitud de la pieza objetivo aquí. En lugar de vender para
el nuevo objetivo, desde nuestro controlador de juego, vamos a ser
controlados, y este sería
nuestro nuevo objetivo. De la cámara del elevador, regresamos al jugador. Vamos a poner un 52 aquí
en la mezcla exponencial, que es
Controla la forma de la
curva como puedes leer en la descripción sobre cómo va Lo siguiente que tenemos que hacer es que podamos entrar en el generador de laberinto y crear una nueva función. Llamemos a esto así formas. Y vamos a conseguir que
nuestros actores destruyan. Somos Paul Look. Vamos a comprobar
si es válido. La razón por la que estamos
comprobando si
es válida, es porque incluso estamos agregando artículos que
vamos a recoger. Si tenemos recoger el artículo, entonces ya no es válido. Entonces debemos verificar eso. Entonces el actor, si
el actor es válido. Entonces nosotros de nuestro hijo elevador, que es el elevador
del nivel anterior. ¿Ahí está? Ahí está. Este elevador no debería ser destruido cuando
creamos el nuevo laberinto, porque si
se destruye cuando creamos un nuevo
laberinto y caeremos a la nada realmente
al vacío sin fin. Entonces tenemos que verificar si
esto es válido también. El motivo por el que tenemos que verificar es porque si es el primer laberinto, entonces no
tiene este elevador. Por último, vamos a
destruirnos a nosotros mismos. A. Vamos a compilar. Dave Dave y compilar. Dave todo en realidad. A ver si está funcionando.
Para conseguir un personaje. Voy a mover el personaje
y conseguir el personaje. El elevador está aquí. Entonces me estoy ocupando y
el actor no se mueve. Esto es porque no
hemos puesto el pa. Blow Lo que tenemos que hacer
es en nuestro generador de laberinto, donde sea que estemos
realmente establecidos por ciento de nuestra carga
diferenciar entre estos dos y establecer por ciento
en nuestro elevador de bonos. Oh. Eso es algo que
haremos la próxima vez. Te voy a
ver entonces, adiós.
83. Solución: problemas de mezcla de vistas de cámara: Hola, y bienvenidos a
Game Design Workshop y Real Engine five
Procesal Dungeon action RPG Creation Course Anteriormente, terminamos con
nuestras animaciones de elevadores. Completamos la animación
de las cercas usando una línea de tiempo y un bucle for para
atravesar todas las cercas, y establecemos la ubicación relativa basada en Z y cero originales Porque en nuestra
Z original, ahí abajo. Entonces continuamos con nuestro t evento que cuando
nuestra condición t es verdadera, lo que significa que podemos empezar a movernos. Trasladamos la
ubicación del actor thro entre el original y el objetivo en la ubicación objetivo a la
que deberíamos ir Y usamos el Max Alpha para conducir la distancia
entre estos dos. Y luego usamos la bahía
interpretamos constante desde nuestra ubicación actor hacia el objetivo con pisar 350. Entonces verificamos con una sucursal si alcanzamos nuestro
objetivo, y si lo hicimos, mezclamos la cámara de visión y
apagamos nuestra condición t. Ahora, continuemos con
nuestro generador de laberinto, donde sea que tengamos el
porcentaje establecido de carga para crear dónde
está el primero. Aquí está el primero. Este
se pone a cero. Cero, empezamos,
no necesitamos hacer eso. Pero tenemos que
diferenciarnos en la construcción. Aquí en realidad
hemos puesto el válido, lo que nos da la rama básicamente. Hagamos algo de espacio. Vamos a necesitar más espacio. Creo que ya es suficiente,
más que suficiente. Así que vamos a leerlo
aquí y en realidad, la carga podría seguir siendo válida porque no
vaciamos la variable. Esta validez no es
lo suficientemente buena. Necesitamos una sucursal. Pero si es continuar, pero cuando es,
hacemos lo nuevo, cuando es falso,
hacemos el porcentaje establecido. Y lo nuevo llegará
a conseguir el elevador sponer. Y ese Alfa.
Creo que esto es 0.4, vamos hasta el 40%. Sí. Así que establece Max Alpha en 0.4. Nikki cosita aquí, casi no la veía, y me preguntaría
por qué esto no se mueve Una rama de copia y el setter, y la segunda
carga está aquí arriba Podemos saltarnos este acto. Ir directamente 0.5. Vamos a la rama, lo falso va a lo viejo. Lo cierto es lo nuevo, este 2.5. L et's avanzan. Vamos a
estar guardando algunos de ellos. Vamos a poner aquí 2.7. Aquí, las caídas a lo
viejo al nuevo peso. Esto es correcto. Desde Alpha, estamos pasando exactamente al
siguiente desde el porcentaje establecido. Claro, lo suficientemente claro. Vamos a quedarnos 85, y
vamos d uno. En realidad, esto no
necesita conectarse aquí. No estamos empeñando a un jugador, no
estamos jugando
ninguna animación No estamos haciendo nada de esto. Entonces esto puede terminar aquí en realidad
con uno. Entonces podemos cambiar
0.7, pongamos 0.8. Y eso sería suficiente. ¿Deberíamos
pensarlo dos veces? No, vamos a jugar. Inicio. ¿Le daríamos
un segundo pensamiento? No. Juguemos. Para. Encontremos el todo cerca. Madera. Y estoy consiguiendo
dz otra vez. Nos estamos moviendo. Nos estamos moviendo y se construye el
segundo laberinto. Y llegamos al segundo laberinto. Y el primer laberinto no
se destruye. La música no ha
dejado de sonar. Todavía podemos interactuar con esto. Lo primero es lo primero.
Detengamos la interacción. Lo que hacemos aquí es
ponerlo en nuestra colisión. Después de los do unos, entonces obtenemos nuestra caja y está
habilitado para no colisionar, que es el valor predeterminado. Segunda cosa. Arreglemos
este mareo con la cámara de verdad me
hace marear Acerquemos
un poco la cámara. L et's set inrotation a o Dios o éste, parece No. Creo que el primer cero
fue el de hacer dasy uno Vamos a escoger esto. Ahí está el elevador.
Oh, laberinto raro. Oye. Un poco mejor. Lo que estoy viendo estoy
empezando por el lado opuesto. Oh, ¿por qué empieza tan raro? Ahí. D toda la cámara solo ve directamente
arriba digamos, 800. Digamos, 600. Todo bien. Salgamos a los pacientes. Hoo. Sólo voy a atender la cámara 98 99. Puedo moverlo
un poco más fácil hacia aquí. En rotación. Tienes otra vez 108. Voy a dejarlo 9000600, así que no tenemos más tiempo Puedes ponerlo
donde quieras. Creo que esto estaría bien. Carácter. Elevador, que no
conseguí el personaje. Pero el piso. Me moví el,
el personaje cayó. ¿Dónde está el elevador? ¿Verdad? Oh, es incluso peor que nunca. Esta Increíble. Ocho, como se recomienda, es 60 -90 18 Los valores son que necesitamos
arreglar este también. Como soy
yo . Así que
investigué un poco sobre lo que está pasando. Es un problema con cómo funciona
el objetivo de vista soso con algo
llamado bloqueo Kimbal, que convierte la pantalla
en giros básicamente en pantalla partes lejanas sobre
Northeast Southwest
y sobre rotaciones ¿Qué pasa? Vamos a ver. Ahora, va a mover al
jugador al lado del elevador. Nuevamente, en el suelo. Ahora, podemos 123
círculos, básicamente. Como puedes ver, prende
casi tres veces. Esto tiene que ver con las pudriciones, rotaciones
relativas
y Lo que vamos a
hacer y va a funcionar es que vamos
a conseguir nuestra cámara y girarla
23 veces en círculo completo. Ahora si compilamos y vamos a jugar, estos arreglan el bloqueo de cardán
en nuestro elevador Elevador y casi fijo. Esta arriba y abajo del elevador de caja a esta comprobación de
dirección del jugador. Y está arreglado. Sí. Pero, lo mismo que tenemos que hacer para el juego de inicio. Esto vamos somos semicírculo, vamos una vez esto w Oh, fue todo lo contrario Voy a deshacer la
rotación de la manera opuesta. O. En círculo completo. Ayuda. ¿Qué está pasando exactamente aquí? Y voy a
expulsar la cámara. Yo estaba buscando desde aquí,
esos son los jugadores. La cámara está equivocada, debería estar más
hacia este lado, que es nuestra cámara original. ver lo que
yo. No lo hice pre De nuevo, voy a moverlo de este lado. Voy a presionar
K, posición David. Voy a pilotar esto. Mirando correctamente, nuestro jugador. Et's voy a
presionar a Kate tocando de nuevo. Sí, básicamente,
acabamos de traer la cámara para que se vea más desde el
lado del jugador. Trabajó. Puedes jugar
con rotaciones hasta conseguir un movimiento que está bien
para ti y para la posición, vamos a dejarlo como Comprobemos que el
elevador siga funcionando. Elevador. Todo bien. Por último, nuestras cámaras están fijas. Creo que fuimos de acuerdo con
este con los lotes arreglando. Esto fue realmente crucial. Y paremos aquí y
continuemos en la siguiente.
84. Animación de ascensores e inventario: Hola y bienvenidos al taller de
Diseño de Juegos bajo motor cinco procedimientos Dungeon
action z llamadas de creación Anteriormente, por fin arreglamos las rotaciones para las cámaras De hecho, podemos tener
una transacción sin problemas y no esta máquina lavavajillas. No sé en qué estábamos. Y el elevador sea También Sí. Y podemos llegar al siguiente piso. Pero el sonido sigue sonando y las paredes
no están bajando. Así que vamos a arreglar estos problemas. Y una cosa más que
menciono es que nuestro laberinto anterior no
estaba recibiendo id Entonces, comencemos con eso
porque el código para eso, simplemente no lo hemos llamado. Vamos a conseguir
nuestra referencia. Y vamos a
llamar Destruir Laberinto. Laberinto anterior, que en
realidad lo estamos llamando en el laberinto que va
a ser destruido, así que destruir Maze
sería un nombre mejor. Y vamos a probar. Como, bien. Al no lo superé. S. Hay un poco de brecha en la multa, y nuestra llamada
laberinto anterior destruida, pero no nuestro elevador actual. Eso es bueno. No queremos que esto destruya porque no vamos a caer
a ninguna parte. Sigamos arreglando
el resto de las cosas. Lo primero que
vamos a arreglar es la animación. Oh, tenemos que dejar caer las vallas. Yendo al auto eso. As en. Vamos a darle el
nombre de barda. Oh. Lo primero que tenemos que
hacer es del sonido del elevador. Vamos a detener la variable
de audio. Ahora, vamos a eso porque queremos
reproducir el sonido de parada. Y es elevador
algo, elevador, una Q, y luego
vamos a tocar sonido. Sólo juega. Y luego vamos a
conectar el extremo inverso. Ahora, esto
hará que bajen. Sin embargo, no hemos terminado. Necesitamos ampliar nuestra plataforma. No, vamos a hacer
un interruptor de dirección. Y vamos a conectar esto en el acabado de la línea de tiempo. Espacio, paquetes arriba, que
aquí, creo que está bien, y ahora necesitamos una
nueva línea de tiempo desde atrás una línea de tiempo. El revés porque
la razón es cuando pagamos hacia atrás, bajando la barda, no extendemos la plataforma. Y obtendremos nuestro avión
elevador, que es nuestra plataforma, y esa ubicación relativa. Ahora, recuerden, almacenamos una
variable llamada dirección. Y esta variable la
almacenamos cuando creamos el primer estilo en
nuestra generación de laberinto. El primer estilo continuó. Y esta dirección fue
el offset que
hemos compensado el primer
estilo básicamente. Entonces sí tenemos esa dirección, que es nuestra salida
hacia básicamente. Entonces hacia dónde está nuestro primer estilo que
debemos extender. Y esto es lo que vamos
a hacer con la nueva ubicación. Pero primero, tenemos que el er,
de, no sorbe normales, perdón. Ert Y necesitamos agregar una línea de tiempo. Digamos que son dos
segundos de lías, tardan 2 segundos 00 y uno,
alimentemos y también
usemos el último fotograma clave No, vamos a conectar
este Alfa, y para B, vamos a seleccionar y la condición
el comodín índice será nuestra dirección. Ahora, para Alpha, necesitamos la ubicación original
de la plataforma. Entonces, vamos a ir
al plato de inicio. Vamos a conseguir nuestra plataforma, vamos a conseguir una ubicación
relativa, y vamos a
promoverla a una variable. Vamos a nombrarlo
pf ubicación relativa. A lo mejor la plataforma original
re no importa. Vamos a conseguir esto aquí, vamos a
conectarlo a Alpha, y luego
vamos a agregarle. Bueno, vamos
a agregar para oriente, norte y norte y oeste, vamos a quitar
así que va a ser 300 en x o norte, duplicar esto, va
a ser cero en x y 300 en y o este, entonces vamos a
duplicar estos dos. Voy a conectar la
plataforma al prest uno, y negar la x
conectada al sur, a
negar, al oeste
conectada al oeste Ahora, Esto
concluye un poco nuestro elevador. Y digo un poco
porque vamos a necesitar cambiar algunos estados
del personaje para
soportarlo básicamente para que no pueda moverse
mientras esté en el elevador Ahora, lo siguiente que debemos hacer es llevar nuestra interfaz de usuario a nuestro juego. Ya hemos creado la función para ello
en nuestro modo de juego, que es s gameplay. Y lo único que tenemos que
hacer es ir a nuestro personaje. Abramos este plano
y busquemos ser juego. Y consigue el modo de juego. En cuanto a abajo, modo de juego, convertir a puro elenco, modo esta variable,
conectado para ganar juego, esto como una variable, sin jugabilidad. Y esto traería R U
Y cuando iniciemos el juego. Ahora ya podemos ver las monedas. Eso es lo único que podemos ver todavía porque no tenemos una llave traer el inventario. Hagamos una solución rápida
para arreglarlo ahora. Vamos a traer nuestro inventario.
Voy a escapar. Voy a ir a abrir nuestro controlador de arriba hacia abajo donde usamos
los elementos de pegamento del botón Alt. Ahora, voy a usar el Este es el fondo que abrirá nuestro
inventario y lo cerrará. Lo que tenemos que hacer es presionar. Vamos a rebaño. Cuando estemos en A,
vamos a abrir un inventario, así que vamos a obtener nuestra referencia de
inventario
y hacer esto. Pasando al modo A. Lanzar modo de ganancia de arriba hacia abajo, convertir a
reparto puro, y a partir de esto, vamos a conseguir que
la peluca A. actualice. Inventario. Vamos a
conseguir nuestro inventario. Y luego de nuestra
madera tu jugabilidad, vamos a
llamarlo animación, y vamos a
jugar animación. Necesito algo de espacio. Por una caja fuerte contra fallas. Vamos también Animación. Poner un retraso. Y luego conseguimos. Y
vayamos a nuestros widgets de jugabilidad. Y necesitamos caja horizontal
de esta caja horizontal. HB. Tenemos que
convertirlo en una variable. Volvamos a nuestro controlador. B, inventario y habilitado cuando estemos cerrando, le
pondremos agujeros. No es cierto. Entonces tenemos que volver a
jugar, la animación. Conectemos la animación, y necesitamos
conectar el objetivo, que es el juego del widget. Vuelva a ponerse, y esta vez va a ir en
reversa, no hacia adelante. Ahora, teóricamente,
tenemos un error. Os no
compilamos la jugada del juego. Por eso.
Dave. Juguemos. Tengo uno de prensa. Tenemos nuestro inventario, que los botones
no se ven muy bien. Oh, creo que esto es un arreglo para la próxima vez. Te
voy a ver entonces. Adiós.
85. Sistema de minimapa: Y bienvenidos a
taller de diseño de juegos y motor real cinco procedimientos Dungeon
acción RPG curso de creación Anteriormente, terminamos con nuestros mecánicos de elevadores,
casi terminados. Como decíamos, hay algunas cosas
más que
tenemos que hacer para cambiar
estados del personaje. Pero terminamos con nuestro
reverso de la barda. Paramos la música, el
sonido del elevador, empezamos un nuevo sonido, y luego procedemos a bajar las barandas con
el mismo código
a la inversa de la línea de tiempo Y luego creamos nueva línea de tiempo
basada en el canal hacia atrás
de la línea de tiempo anterior, como cuando la línea de
tiempo anterior termina al revés, luego ejecutamos esta, y agregamos la ubicación
relativa de nuestra plataforma en función algunos valores codificados hat
y la relativa, la ubicación relativa original. Además, agregamos nuestra jugabilidad
que a nuestra pantalla, e hicimos la clave para
generar el inventario, que en realidad está en el controlador de
arriba hacia abajo Entonces ahora empezamos a
hacer más cosas en el controlador y
pronto mucho, mucho más. Y usamos el número uno en el teclado para
flip-flop entre A y B, lo que A significa
actualizar el inventario y reproducir
la animación hacia adelante. Y con un retraso de la
hora de finalización, lo establece enable, y B sería
hacer lo contrario, lo
pone deshabilitado, y la
animación se reproduce hacia atrás. Habilitar y deshabilitar es
porque queremos no
poder presionar las teclas mientras la
animación aún se está reproduciendo. Ahora, sigamos arreglando uno de los
errores que acabamos de ver, uno de los problemas, que
viene cuando no tenemos imágenes, exactamente el mismo principio. Cuando no tenemos imagen,
cuando esta regresa, la textura de nuestro
artículo devuelve nula, luego pone una imagen en blanco. Entonces, lo que vamos a hacer usa una selección en
la textura hetect Y luego me voy a conectar. La imagen del inventario aquí, es posible que necesitemos desconectarla. Pero para el índice
para lo que necesitamos, debemos verificar si esta
imagen es igual a nada. Si es igual a nada, entonces seleccionamos otra cosa. Si no es igual a nada, seleccionamos la imagen del inventario. Otra cosa sería la
imagen que hemos seleccionado aquí. Voy a ir aquí, encontrarla. A, y después voy a
volver a la gráfica. Y arrástralo y suéltalo aquí. Ahora bien, esto debería haber
solucionado nuestro problema. Como yo, es arreglar las imágenes, y tenemos nuestra clave porque agregamos nuestra clave
al inventario. Podemos ver una pequeña caja
blanca alrededor de esto, lo cual no es muy agradable. Oh, vamos a arreglar eso también. Vamos a ir al juego. Vamos a ir a diseñador. Vamos a ir
al primer botón, y hay un empate
alrededor de esa caja. Al presionar G podemos ver
la vista del juego, y vamos a seleccionar de nuevo el
primer botón. Si cambio esto a imagen, entonces lo está arreglando. Entonces, voy a cambiar esto
a todo, a todo. Pero el hovert, deprimido, y lo normal, No
molesto logger a veces Tan dibujado como imagen en todo. Y voy a copiar y
pegar este azulejo a todo, copiar, y obtener este
botón, voy a pegar. Voy a pegar aquí, y voy a pegar aquí. Y está arreglado. Ya no
tenemos borde blanco. Para presionar play. Va a traer inventario. La primera vez que llega el
inventario, no deshabilitado, mientras que todas
las demás veces lo presentó Arreglemos eso también.
Déjame probarlo otra vez. Claro. Sí, la primera vez que
viene, no se presenta. Por defecto, calzamos
tener esta barra desactivada. Finalmente deshabilitado, necesitamos
deshacer clic habilitado, básicamente. Compilar y guardar, y
este problema también se soluciona. Ya que estamos aquí
arreglando el inventario, agreguemos también nuestro mínimo. No, vamos a
necesitar una superposición. Vamos a traerlo por aquí. L et's lo unc a la esquina
superior derecha. Por posición,
vamos menos 370, posición y 50, empate
sería 32020 Entonces hace una caja. Ahora, dentro de esta superposición, agreguemos una i. Re dos imágenes que
van a estar sintiendo. Segunda imagen. Vamos a nombrar el segundo
orden de imagen, que sea una variable. Hagamos la primera
imagen que yo la llamo mínimos. Que sea una variable. Para nuestra frontera, la pérdida es, tenemos nuestro
mapa de pedidos de fantasía, frontera mínima. Para nuestro minimapa, sí
tenemos un material, creo. No, nosotros no. O borde llano. Tenemos
el objetivo renderizado. ¿Qué significa el objetivo renderizado? No, vamos a ir a
nuestro personaje y agregar Es la captura a de componente. Ahora bien, esta es una cámara básicamente, pero no es ninguna cámara. Una cámara con reglas muy
específicas a la que apunta. Bueno, no los objetivos.
Puede renderizar cosas
específicas y no
renderizar otras cosas. Pero no
lo muestra a viewport. No es una cámara desde la
que miramos. Una cámara que alimenta
su velocidad a algo llamado render texture
render target. Entonces, este es nuestro mínimo de arte. Vamos a seleccionarlo en el objetivo
de textura de la cámara. Y en realidad vamos a establecer
su altura muy alta. Vamos a fijarlo en 3 mil 303 mil. Puede capturar una gran
distancia a lo largo de nosotros. Ahora, hagamos una comprobación
más de que en realidad no
tenemos
el material. Nosotros lo hacemos. Creo que tenemos que
rezar para volver a jugar. Entonces para cerrar esto, y ahora vamos
a abrirlo de nuevo o podríamos evolucionar que esté aquí. Y ahora sí tenemos el objetivo de renderizado del
minimapa material. Pero vamos a
abrir por un segundo, y vamos a
cambiar una cosa. Vamos a seleccionar
nuestra muestra de textura, cómo ya está establecida t minimapa, y ahora vamos a conectar creo que la
máscara de opacidad, o está conectando Este debería ser uno, la
forma el círculo de forma, debería ser uno, y
vamos a ahorrar. Ahora supuestamente vamos a
seleccionar el material en nuestro minimapa mínimo que renderizo, y está funcionando Ahora bien, esto es un mínimo de tres D, lo
que significa que es caro Pero podemos quedarnos un
poco. Vamos a arreglar este
movimiento de izquierda y derecha. Y pero sí tenemos un resultado. No podemos ver lo que nos rodea. La razón por la que no podemos usar una técnica tradicional
y usar texturas y coordenadas y todo
es porque nuestro mapa se está generando aleatoriamente. Entonces vamos a
necesitar tres D mínimos. Hay otras formas de
hacerlo también, pero para nosotros, esto estaría bien. Creo que este es un buen punto de
parada para este. Vamos a
continuar con el siguiente. Adiós.
86. Toques finales del minimapa y descripción de inventario: Hola, y bienvenidos a
ganar Taller de Diseño, Real Engine five,
Procesal Dungeon action RPG Creation Curse Anteriormente, arreglamos algunos problemas con la apariencia de nuestro inventario. Usamos ellos nos dibujan imagen en nuestro estilo para quitar las cajas blancas
alrededor de los botones, y solucionamos el problema de tener una variable nula en esa textura cuando estamos configurando
la imagen de inventario. Entonces necesitamos una rama
que cuando es nula, cuando no es nada, entonces solo
usa nuestra imagen para nada. En el inventario de actualización de código. No. Entonces procedimos a agregar nuestros elementos mínimos
en nuestra pantalla, que es una superposición
y dos imágenes Las dos imágenes son
una para el borde, que elegimos la imagen de fondo de
fantasía que tenemos imagen de borde, y para el material, elegimos el material M
mínimo I, que es un material que hemos hecho y cambiamos algunas cosas
dentro del material. En realidad, cambiamos una cosa, que el círculo de forma debe
ser el valor predeterminado de uno, por lo que el material lbs
para elegir el círculo porque está diseñado para un
cuadrado o un círculo mínimo. Ahora, no volvamos a guardar. Agregamos a nuestro personaje, render, este
no es nuestro personaje. No, es un personaje. ¿Bien? Entonces, agregamos nuestro componente
capturado, que es una cámara especial
que renderiza cosas específicas. Y establecemos el
objetivo de textura para que sea el mínimo RT, que es donde se proyecta la
alimentación de la cámara, digamos, más o menos eso. Entonces, ahora vamos a filtrar un
poco lo que graba la cámara. Porque ahora mismo,
como podemos ver. Lo graba todo. Incluso
podemos ver al jugador. Realmente no podemos ver al jugador, pero sí podemos ver al jugador.
El jugador está aquí. Sí me gusta que graba esto. Pero seguro, no debería
ser la grabación de poemas. No, volvamos a volver
a nuestro personaje. Seleccionemos la cámara. Pasemos a nuestra categoría de
captura de escena. Vamos a hacer clic en Avanzado. Digamos que no queremos
grabar los ESPs atmosféricos. realidad no usamos esto.
No queremos la niebla. O lo hacemos. No lo sé. Si quieres la esfera
en la atmósfera en la niebla, puedes mantenerlos. Lo que desde luego no
queremos son mallas esqueléticas. A lo mejor partículas que
eliminarán las puertas de él, pero no importa, mantendrá las mallas
de las puertas de curación Y
dejamos todo lo demás como facilidad. Si está tomando
demasiada potencia de procesamiento, tal vez podamos eliminar
algunos rayos. Pero si tu computadora puede
manejarlo, puedes dejarlo como. Si no es así, sólo sigue revisando
las cosas. Probablemente la iluminación
También la iluminación oculta, translucidez tal vez. Sí. De todos modos, o siempre puedes establecer los ajustes de
escalabilidad de tu motor para bajar Y eso resolvería mayoría de los problemas si
tienes una computadora baja. Ahora, lo siguiente que debemos hacer es volver a ir a nuestro personaje, ir a nuestra ventana gráfica y arreglar
el giro de la cámara Entonces vamos a
traer nuestro componente de
captura de escena aquí en comenzar a jugar. Vamos a permanecer absolutos, que es un nodo que le dice
al componente si debe estar siguiendo coordenadas
mundiales o coordenadas locales. Y queremos seguir la
rotación absoluta del mundo, por lo que se queda igual. Entonces vamos a usar esto, y ahora nuestro minimapa debería estar listo Sí. Constante, pero está en
nuestra dirección equivocada. Vamos a nuestra cámara y
seleccionemos 45 grados aquí. Compila y guarda,
y juguemos. Y ahora está en la dirección
correcta. Podríamos hacer que el mínimo aparezca en el momento en que termine la larp
de la cámara Pero esto va a estar bien por ahora. Vamos a dejarlo tranquilo. Y sería bueno que estuviéramos cerrando los mínimos cuando
lleguemos al ascensor, porque podemos ver el laberinto
el laberinto anterior desaparecer En fin, esto es gracioso, por lo
emisivo del cofre, el material emisivo aquí, podemos ver estas
aguas en el suelo No sé si son
visibles que es una reunión. En fin, pronto vamos a
cambiar algún modelo. Así que vamos a emparejarlo. Ahora que tenemos este
sistema por aquí. Pongamos un punto para que el
jugador también vea al jugador. Bueno, vamos a nuestro personaje. Agreguemos un sprite de papel. Oh, vamos a nuestro personaje. Agreguemos un sprite de papel. Y para el sprite de papel. En nuestras texturas, en realidad, solo
podemos seleccionar
el sprite de papel y simplemente seleccionarlo desde aquí Fuera. Vamos a girarlo para enfrentarlo correctamente con la flecha del personaje
apuntando como el personaje, y fijemos su altura en
2,900 y es la escala 2.1 En todo,
compilemos y guardemos. Ahora vamos a jugar. Tenemos un mínimo. Tenemos un sprite de papel para mostrar nuestra dirección
al mínimo Espera. Y como vemos mucho del cofre siendo
engendrado al principio, al no poder encontrar
algún lugar para desovar, vayamos a nuestro generador de laberinto
en nuestro create o Dividamos esto de nuevo por dos y en realidad solo agreguemos este nuevo por división
a la primera división. Entonces llegamos al 75%, y conectemos esto aquí. Vamos a conectarlo también aquí. Y eso sería todo. En realidad, también está aquí. Y ahora, ojalá, est
vamos a estar desove mejor. Pres el elevador. Oh, esta es una sierra muy bonita
comparada con donde estamos. Prometedor, muy prometedor. Ahora ya que estamos
en el tema UI. Agreguemos algo
más a nuestro inventario. Agreguemos algo que
cuando estamos rondando estos botones nos da información sobre lo que
estamos rondando Entonces vamos a
hacerlo de manera muy sencilla. Vamos a agregar bloque de
texto de texto. Vamos a
traerlo por aquí. Comprobemos con la animación. En algún lugar a la mitad
de nuestro inventario. Eso podría estar aquí, creo. Podemos simplemente
mirarlo ahora mismo. No hace falta que sea perfecto. Aquí está bien. Voy a
traer su ancla también entrar. El centro está aquí arriba. Así que sólo vamos a traer
el ancla aquí y establecer alineación 2.5 y 0.5. Lo siento, debería ser cero
y el s ser menos. No. En realidad correcto. Genial. No importa. Talla 200 porque esa es
la talla que necesitamos, y pongamos la justificación media ¿Por qué no me gusta? ¿Por qué pienso
que es A, está completa? Esa es la posición en x e y, y luego la alineación 5.5, no
vimos que esto estaba apagado. Ahora, sigamos adelante. Está un poco
apagada, pero está bien. Vamos a hacer esto al. Vamos a llamar a esto la g vamos a hacer una función. Hagamos una nueva función. Digamos sobre propina, y vamos a
necesitar algunas entradas. Va a ser de tipo habilidad. Verificación de visibilidad. Sí. Eso es lo que necesitamos.
Voy a ponerle nombre visibilidad. Y vamos a
necesitar otra entrada, va a ser entero, y va a estar adentro. Ahora, vamos
a conseguir el modo gay. Vamos a GM. Hacer modo ga. Vamos a
convertirnos a puro reparto, y vamos a conseguir ing. Ahora, del inventario, vamos a conseguir las llaves. Los vamos a hacer aquí. Y de la llave, vamos
a conseguir la ranura de inventario. Entonces vamos a
hacer una pregunta. ¿Existe nuestro artículo? Para ello, lo que
vamos a utilizar la longitud de nuestro inventario, y lo vamos a
comparar con plus, uno del artículo
que es entrante. Estoy haciendo más uno porque
cuando voy a llamarlos, los voy a llamar
botón cero, botón uno, botón dos, botón tres, y la longitud comienza con uno. Entonces por eso soy más uno. Simplemente no pude hacer el cero, uno, 23 e ir con 1234. Pero vamos a acostumbrarnos a tener estas diferencias de conteo
cero y al mismo tiempo, conteo
normal con
corte en uno. Bueno, vamos a comprobar
si esto es mayor o igual. Y esto, voy
a conectarlo aquí. Ahora bien, si es mayor o igual, si en realidad no lo es,
necesitamos este texto fuera. Vamos a
traerlo aquí. Voy a poner texto. Y vamos a
decir, voy a establecer bility a la visibilidad entrante. Ahora bien, ¿qué pasa
cuando es verdad? Bueno, vamos a conseguir mesa. Fila. Y para la fila, vamos a conectar este get. Para esa mesa,
vamos a usar artículos, y vamos a romper la SD. Vamos a copiar y pegar
este código por aquí. Y vamos a
seleccionar el nombre aquí. En realidad no necesitamos el resto, y la visibilidad
estará conectada aquí, que es la visibilidad de entrada
que tomamos de aquí. Es así como hicimos la descripción sobre herramientas, la función que la hace
visible o invisible Ahora bien, ¿dónde lo llamamos? Nuevamente, va a
ser bastante sencillo. Vamos a ir
a nuestros botones, y vamos a
bajar en la lista y ahí está cómo necesitamos
hacerlos variables. Entonces los necesitamos
encendidos y encendidos. Hagamos esto por cada botón. Variable n hover. Coloca el cursor. Ir al tercer
botón, es variable. Vamos al cuarto
botón, es variable. Vamos desde dentro de la gráfica. Lectm aquí, es mucho más rápido sobre hover y botón
tres hover y hover Hagámosles una buena lista. Para ponerlos en orden
después. Y. Entonces tenemos el botón
uno, dos, tres, cuatro, y tenemos el botón
uno, dos, tres, cuatro Ahora traemos la
función hover a cada patrón. Pasemos de cero, uno a tres, y
visiblemente por lo contrario N
sería el que el que entonces I. Aros a y escondido Y escondido. Comp y ahorremos. Vamos a jugar. haberlo sd invisible
al principio. Pero cuando voy a otras
cosas voy y cuando
voy a la llave, voy a la llave. Cuando estoy cerrando, desaparece. Cuando estoy abriendo, aparece. No aparece
hasta sobre algo. D. Ahora vamos a establecer el valor por defecto de que debe ser invisible visibilidad
predeterminada, vamos a la visibilidad, y configurarlo en oculto. Y ahora tenemos nuestro.
Hicimos mucho en esta lección. Sigamos con la siguiente. Pod por ahora, viéndote entonces.
87. Sistema de salud del jugador y widget: Hola, y bienvenidos a
Game Design Workshop y Real Engine five
Procesal Dungeon action RPG curso de creación Anteriormente, configuramos un
poco los ajustes de nuestro componente de renderizado D
en nuestro personaje. Entonces, fuimos a nuestra
cámara y dijimos qué se debía renderizar y qué no se debía renderizar. Nosotros hice clic en la cámara. Tenía la intención de hacer clic en la
captura sinusoidal al componente. Usamos los ajustes avanzados de captura
sinusoidal para ir a
nuestras banderas de espectáculos generales, y deseleccionamos partículas BSP
y medidas esqueléticas Y como
decíamos, también podemos seleccionar otras
cosas si no deseamos que aparezcan en nuestra
captura de pecado en nuestros mínimos Ahora, también agregamos sprite de
papel para representar a nuestro
personaje al mínimo Entonces cuando jugamos,
podemos ver nuestra dirección, podemos ver
hacia dónde estamos mirando en nuestro mínimo. Entonces sí sabemos hacia dónde
estamos mirando. De todas formas, Luego
procedimos y cambiamos nuestra regla en nuestra generación laberinto en la creación de cordones
para el pecho En lugar de usar la mitad del laberinto, usamos aproximadamente el 75% del laberinto y para verificar dónde deberíamos poner
nuestro índice de tesoros. Para lograrlo, dividimos la ya división del último
índice por dos nuevamente por dos, y eso lo agregamos a
la primera división. Oh. Después, procedimos a
agregar en nuestro widget de juego un cuadro de texto que
contendrá el nombre
del artículo Hobart
en Para hacer esto, usamos realmente nuestros
eventos hover y no hoovered en nuestros botones, y creamos una
función que toma el espacio de inventario basado en
el botón que Y hicimos algunos creamos una cadena de eventos
básicamente tomando el inventario del modo de
juego, comprobando su longitud si es,
si es mayor o
igual al ítem más uno solicitado
porque recuerde, la longitud comienza desde cero, lo que significa que no hay ítem y uno, que gana que
sí tenemos un ítem. Y luego agregamos uno en la ranura de
inventario porque cuando estamos diciendo qué
botón estamos usando, en realidad
hemos
usado cero para comenzar. Yo uso cero para comenzar. Entonces cero más uno significa uno, y si tenemos una longitud
de uno, estamos bien. No, que nosotros matematicas hice aquí. De todas formas, cuando
no tenemos un artículo, decimos ninguno, el texto dice que no, y establecemos su visibilidad, y cuando tenemos un artículo, obtenemos de nuestro el nombre del elemento y
lo configuramos en nuestro tooltip Ahora, sigamos con la
creación del uso de los artículos. Al igual que cuando hago clic en un
elemento, pasa algo. Y a través de eso,
podremos seremos requeridos, en realidad para llenar algunas
mecánicas de nuestro carácter. Por ejemplo, comencemos
con la porción de salud, y cuando usamos una porción de
salud, necesitamos agregar algo de
salud a nuestro carácter. Esto requiere tener un sistema de salud que
podamos agregar o quitar salud. Y una visualización de
eso a nuestro jugador. No, comencemos con
la parte visual. La forma en que hemos
configurado nuestro sistema para la parte visual es a través de
un material que
cambiamos un
parámetro interno para llenar el material a su
valor máximo o a su valor cero. Oh, vamos a mostrar cómo hacemos esto. Vamos a conseguir una imagen Bueno
tráela por aquí. Hagámoslo como
lo opuesto al mínimo. Entonces posición,
voy a poner 50, 50 o y veces x 256. 256. A lo mejor voy a bajar
esto un poco más. Aquí, los anclajes
también para estar seguros, tal vez un poco aún más bajos A lo mejor hacerlo un
poco más pequeño también. Sí, por eso. ¿Correcto? No está alineando,
pero es problema. Nuestro material, vamos
a usar el M U I HP. Este material vamos a
abrir el material. Tiene este parámetro HP, que va 1-0 y cambia el aspecto
de nuestra barra de salud. Entonces este es un valor
que vamos a estar
manipulando a través de
nuestro plano Para ello, volvamos
a nuestra jugabilidad de Wood. Hagamos esto viable. Llamemos a esto barra P. No, es una imagen y
vamos a ir a nuestra gráfica, y vamos a crear
una nueva función. Llamemos a esta fecha fecha HP. Debería ser una E aquí. Ahora, vamos
a necesitar una entrada, que va a ser
del tipo de float porque tenemos el valor
cero a uno, y vamos a llamar a esto HP. Lo siguiente que
vamos a hacer es conseguir nuestra salud básicamente, un elemento, y vamos
a conseguir material dinámico. El cual es un nodo que
nos permite acceder y
manipular el material del material de cualquier cosa que queramos
dinámicamente en la jugabilidad. Lo que vamos a hacer es
que un parámetro por valor, y vamos a
conectar el valor aquí. Esto en realidad así que sea p por ciento. Porque no es el valor
real de HP. Es un valor escalar 0-1, y es un porcentaje No es como si tuvieras 300 HP, devolveríamos 300 HP
de 50 como
no estamos devolviendo las matemáticas. Estaremos devolviendo
directamente el porcentaje. La parte importante aquí
es el nombre del parámetro. Esto se mecanografiará exactamente
como en el material. Vamos en el material,
creo que es valor HP. Y. Para estar siempre seguros, podemos elegir el
parámetro y simplemente
copiarlo y pegarlo aquí. Uy copia. Copiar y pegar. Lo que pegué
era en realidad coed porque el control no
funcionaba Cuando presioné el control C, no
funcionó por alguna razón. A lo mejor lo hice hacia adelante. Fragmento de segundos de segundos. Mi teclado es un poco
pegajoso, viejo mecánico. Ahora bien, ¿dónde
actualizamos este valor? Si recuerdas cuando hicimos
la trampa, vayamos a utilería. Vamos a abrir la trampa.
¿No está aquí? S corredor deberían ser enemigos. Entonces en nuestra carpeta enemigos, tenemos la trampa BP. Ahora, cuando aplicamos
daño a nuestro enemigo, usamos el nodo aplicar daño. Entonces, si vamos a nuestro personaje, Tipo A daño. Hay un evento cualquier daño. Por lo que esto se dispara cuando
estamos aplicando cualquier tipo de daño, y los tipos de daño. Podríamos estar estableciendo
clases y todo, pero no vamos a hacer eso. Davis, vuelve a nuestro personaje, y hemos recibido
algunos daños. Vamos a crear una función
para eliminar la salud. Entonces lo voy a llamar Salud. R y va a necesitar
dos entradas, aquí, entradas, O será un bulion que
dice agregar, cuando son dos, estamos agregando, y un
flotador que es daño. Lo siguiente que vamos
a necesitar son dos variables. Van a ser
del tipo de flotador, y uno será salud actual, y el otro
sería salud Mx. En MCs health, vamos
a dar un valor predeterminado, y ese valor predeterminado sería Ahora, vamos a establecer el valor actual a la
salud de Max en comenzar a jugar. Así que vayamos a nuestra
jugada de inicio después de que
fijemos el absoluto, vamos a establecer el
valor actual a la salud de Max. Y luego conectemos nuestra función y eliminemos
la salud a nuestro cualquier daño. Y entremos en nuestra función. Lo primero que debemos
saber es que estamos agregando o abstrayendo el daño porque
el daño también podría serlo Curar vamos a
hacer un menos o un plus. Menos debería estar en el
fondo porque vamos
a conseguir Maxel así Maxel
menos el daño, y luego Max salud plus. El daño sería el talón. Vamos a hacer una selección. Vamos a
conectar nuestro anuncio aquí. P A, estamos sumando. Si no es P A, es Pico B, así que estamos restando Vamos a regordete este valor. Pero eje, flotación de abrazadera. Porque queremos significar max. No queremos que vaya
por encima de nuestra salud MAC o por debajo de nuestro
bajo cero, básicamente. Vamos a conseguir
nuestra salud MAX, y la vamos a
conectar a Mx, y el
valor mínimo sería cero. No deberíamos estar
restando por debajo de cero. Y vamos a establecer
nuestra salud actual. Ahora, lo siguiente que debemos hacer es
dividir nuestra salud actual entre la salud Max. Y eso
nos daría eso nos daría un
porcentaje de nuestra salud. Ahora, vamos a
conseguir nuestro modo gay. Vamos a conseguir
Nuestro juego de widgets. A partir de eso, vamos
a decir que HP actualiza HP. Vamos a
conectar este año, y vamos a
conectar nuestro porcentaje aquí. Expediente, vamos a presionar. Guardan y compilan
en realidad todo. Vamos. A ver si funciona. Vamos a ir a una trampa. S. Pero ahora mismo, no
estamos muy seguros qué parte de estas
acciones no son trabajo. Empecemos por nuestra trampa.
Vayamos a nuestra trampa. Lo que queremos comprobar si
estamos aplicando daños. Voy a comenzar la
comprobación desde aquí. Consideremos que todo lo
demás se dispara correctamente, y queremos ver
si aplica daño. Llegamos a este lugar, por lo que
estamos aplicando daños. Voy a parar
porque tiene un retraso y para quitar el punto de
quiebre de aquí. Voy a ir a nuestro personaje de
arriba hacia abajo y aplicar un punto de quiebre
al evento cualquier daño. Ahora, encontremos la trampa. Las gorras no se reproducen en las habitaciones. Eso es algo bueno. A, aplicamos daños.
Nos habíamos quitado. Este valor es nueve. A tomamos un daño. 0.9 actualizar HP. B. Actualizamos HP, estableciendo el valor en 0.9. Nosotros sí tenemos el correcto
porque pegado. ¿Qué? Bien, no tiene
vista previa porque estoy jugando. Debería bajar nuestra salud. Quitar punto. Lo hace, y yo no lo veo. La copa tiene un sonido equivocado. Copa está jugando un
sonido equivocado al ataque. Ir al ataque. Aquí no estamos
tocando el sonido. Bien, estamos tocando
el sonido aquí. Este es un sonido correcto. E cultivo. Volvamos al material. Estamos conectando
esto, si esto es 0.9, debería estar luciendo así, si esto es 0.8,
debería ser así. Cero. Vamos a probar si el valor predeterminado
es cero. ¿Se actualiza? Sí, lo hace. Pero
después, no lo hace. Siempre yendo a 0.9. Ir a nuestro personaje.
Se puede ver que también podemos
depurar durante el tiempo de ejecución. Puedo ir a mi personaje, puedo seleccionar personaje. Este solo tiene un nodo. No lo veremos fácilmente, pero si lo traigo aquí, visible. De hecho podemos
verlo durante el tiempo de ejecución. Pero corre, lo que hace. Sí se mueve hacia adelante. Voy a poner un punto de
quiebre aquí. Voy a ver el valor 0.9. Cada vez que el valor
llega 0.9. Bien. Esto es algo que voy
a resolver la próxima vez. Lo voy a dejar aquí. Adiós por ahora.
88. Poción de salud de usabilidad de artículos de inventario: O Hola y bienvenidos al taller de Diseño de Juegos
bajo motor cinco procedimientos Dungeon action
Pz llamadas de creación Anteriormente, comenzamos a
crear nuestro sistema de salud. Agregamos nuestra imagen en
nuestro widget de que estamos manipulando su parámetro
escalar, valor
HP obteniendo la instancia
dinámica, que es el valor HP aquí Vamos a poner esto de nuevo en uno. Y luego continuamos
creando en nuestro personaje, el evento de cualquier daño y la función
add remove health, que en realidad hice un error
muy grande aquí. Estoy restando y
agregando un valor a la salud MAX en lugar
de la salud actual Cada vez que
aplicamos 0.1 de daño, en realidad
estamos reduciendo
nuestra salud MAX, por lo que siempre es 90%. Ahora, conectemos
la salud actual en lugar de la salud MAX. Si vamos a revisar, y
esto debería estar funcionando. S aquí. ¿Correcto? Sí. Está funcionando. Perdiendo salud gran
cantidad de salud también. Y tenemos el
sonido correcto finalmente en la trampa. Cambiamos el sonido de reproducción aquí, después del retraso, que es el momento en que
dañará al personaje. Juega antes de
la parte de gatillo, y después la parte con
el ataque de pico. Continuemos con
nuestra porción de salud. Para ello, tenemos que
volver a nuestro modo de juego Widegit. Y vamos a
necesitar nuestros botones. Vamos a
seleccionar el botón uno. En realidad, vamos a
hacerlo desde la gráfica. Ya no necesitamos hacer
los botones. Sabemos que por aquí
existen. Así que vamos al botón uno, y vamos a presionar
Vamos a hacer clic Y luego el botón dos en clicked
y el botón tres clicked y el botón cuatro t Bueno, sí
tenemos esto para eventos. sí
tenemos esto para eventos Lo siguiente que
tenemos que hacer es crear una función a la que
vamos a llamar use, y va a tener una
entrada de tipo integer. Llamemos a esta trama. Así que volvamos
a tu gráfica de Ben. En nuestros botones,
usemos esta función de uso. Usemos esta función de uso, y conectemos todo, comenzando 0-1, dos y tres Ahora mismo, cuando
presionamos a nuestros botones, ejecutan esta función
usan uno, dos, tres 0-3 Ahora, entremos en la función. Y necesitaremos nuestro inventario. Así que sí tenemos almacenado en hover, no almacenado, pero hemos usado este código por aquí
para obtener nuestro inventario Entonces voy a copiar y
pegar eso en uso, y voy a convertir a pure cast otra vez
porque cuando estás copiando pegando los moldes que son puros se están volviendo
normales otra vez Ahora sí tenemos acceso
a nuestro inventario, y vamos a conseguir nuestras llaves. Y
los vamos a promover a nuestra variable local. Llamemos a estas llaves. Y vamos a
conseguir nuestros valores. Y vamos a promover
esto a una variable. También, valores colle. Ahora tenemos acceso a nuestros artículos
y acceso a nuestros valores. Ahora, lo que
vamos a hacer es usar este índice de ítem para
obtener de nuestras claves. Vamos a conseguir.
Y vamos a ir I index, s. vamos a conseguir nuestro
slot, no item index. Ranura de inventario, básicamente,
y vamos a cambiar Basándonos en este nombre,
tenemos que poner los
nombres en nuestras suites. Voy a ir a detalles, vamos a quitar
el pin predeterminado, y los artículos que tenemos para usar son creo que dos por porción, el por tiempo y yo
cinco por destrucción. B fue este material compilar y guardar y vamos a revisar
nuestros artículos por un segundo. Recuerdo el yo
era para la salud. Ahí están los artículos. Aquí está. Los artículos. Las pociones de salud, la poción Pet, la poción eran cuatro
y cinco era Bien. Pero el número uno que
estamos haciendo ahora mismo, que es el número dos
en realidad son las pociones. Volvamos a nuestra Pam
p. y cuando es una poción, tenemos que comprobar si nuestro
jugador tiene plena salud o no Porque si el jugador
tiene plena salud, no
deberíamos estar
agregando más salud. Pero aunque lo hagamos,
deberíamos tener la opción diferenciar si
estamos sumando o no sumando. Bueno, vamos
a poner una sucursal. Vamos a poner jugador en. Esto nos lleva directamente el pone
controlado que
somos que nuestro controlador está
controlando está poseído. Vamos a
pasar el carácter dw, que en realidad es la
clase de nuestro estanque, obtener las variables que queremos Vamos a conectar
esto por aquí, aquí, y vamos a comprobar
si nuestra salud actual
es igual a nuestra
salud Mx, no establecida, obtener Si estas son iguales, entonces no
deberíamos estar haciendo nada porque el carácter
es salud plena. Si estos no son iguales, entonces deberíamos agregar salud
y debemos presionar el anuncio. Y ahora vamos a darle un
valor a nuestras pociones. Digamos que sanan a la salud. Si queremos poder beber pociones mientras el infierno está lleno de salud, solo
conectamos
esto por aquí O si queremos ser exactos
que faltan dos salud, para usar una poción, podríamos crear más
reglas por aquí Para nosotros, vamos a mantener
justamente esta regla, y lo siguiente que
haremos es obtener nuestros valores, que es cuántas pociones
tenemos en nuestro inventario Por aquí, y voy
a sacar nuestros valores. Voy a conseguir nuestro lote porque este es un espacio
de inventario. Y vamos a
hacer un menos uno, que es la poción que
acabamos de usar Ahora vamos a comprobar si esto es menor o igual a cero, y usar una rama. Si no es inferior a cero, entonces vamos a conseguir
nuestro inventario nuevamente. Realmente promovemos
esto a variable, pero realmente no importa. Convertir a puro elenco de
nuevo, comentario. Elenco. Si no es cero, significa que todavía tenemos porciones, vamos a agregar
nuestro artículo de ranura. Y el menos uno
de nuestros valores. Pero esto va a ser
restado por uno. Sé que puede ser confuso
que estemos agregando, pero agregando solo actualiza el
valor que ya existe. Ahora, vamos a actualizar inventario para nuestro inventario,
vas a usar. Inventario. No
importa que usemos la misma variable a la
que estamos llamando porque estos nodos son
dos cosas diferentes. Pero esto en realidad significa
que también arrojará hielo. Entonces promover esta variable haría un
poco más óptima, tal vez en constructo, estamos promocionando esta
variable y
sosteniéndola para que no la
llamemos cada vez. Pero es un mínimo impacto en
este momento en nuestro juego. Oh, Lo siguiente que tenemos que
hacer es actualizar nuestro tooltip Lo que no se llama información sobre herramientas de
actualización, se llama sobre información sobre herramientas Vamos a tratar de configurarlo a
visible y la ranura de nuestra ranura. La razón por la que esto funcionará
es que si
ingresamos, estamos comprobando si
este artículo existe. Si lo tenemos
en nuestro inventario. Si no lo tenemos
en nuestro inventario, entonces no estamos enviando ninguno. Volvamos a usar Ahora, ¿qué pasa cuando
estamos en cero? Oh, qué pasa
cuando estamos en cero, tenemos que eliminar
del inventario. Oh, voy a conseguir
nuestro inventario otra vez. Nuevamente, no importa
que copie y pegue este código porque aunque lo arrastre
de esto, volvería a hacerlo. Ahora me voy a mudar. Y para nuestro retiro, vamos a conseguir
nuestras llaves en slot. Vamos a poner
nuestras llaves en la ranura. Y luego sólo vamos
a actualizar el inventario. No, vamos a probar esto. Pasemos a nuestro modo de juego, seleccionemos nuestro inventario, y agreguemos algunas porciones, que es yo dos, y agreguemos dos pociones. Vamos a lastimarnos. poción está funcionando aquí, entonces yo. No pasa nada, y
vamos a buscar una trampa Voy a usar uno. Pero
tonto, vuelve a lastimarte. Demasiado pequeño, el 90%
realmente no se muestra y el 80%
muestra demasiado. En fin, usemos la
poción y ya no está. Un tema, el remolcador por aquí que tenemos las
dos porciones no mostró Entonces echemos un vistazo a esta. L et's van a nuestra jugabilidad. Vamos a la gráfica de Ben y no coloquemos el
inventario de actualización en realidad Podemos ir directamente de
la función, d inventario, y queremos cuando lo estoy
configurando a oculto, donde debería ser visible. Pero ahora, Nosotros sí tenemos
las dos pociones. No pasa nada, colocándose
sobre uno, uno a la izquierda, a la izquierda. ¿Por qué era tan grande el uno? Creo que lo hicimos un
poco demasiado grande. Está un poco compensado. Entonces arreglemos estos dos. De una manera, te estás preguntando cómo hice lo
de la pantalla completa. Presioné F 11. Y si pulsas
realmente shift N F 11, lo hace completamente a pantalla
completa. Cubre hasta la barra de ventanas que no se puede ver por aquí. Pero sí, Shift F 11 lo
cubre completamente. F 11 simplemente lo hace a pantalla completa
sin la barra de ventanas. En fin, arreglemos
el problema visual. Sí, no se ve bien. La razón para ello desaparece
debido a las reglas de renderizado. Entonces esto iría un
poco a la izquierda. Creo que ya está. Sí.
Entonces voy a hacer trampa y usar la transformación de
renderización de traducción. No muy óptimo uso, pero vamos a hacer por
ahora menos tres. Así que aquí. Y vamos a pegarlo aquí. Se puede ver cuando hago clic, porque es el mismo
tipo de elemento. Incluso si hago clic en el
botón también
porque sí tienen tipo de los
mismos tipos de elementos. Me quedé en el fondo. No restablece esto, lo cual es una característica muy agradable. Digamos menos aquí también. Creo que ahora
quería decir que se ven
mejor, pero el grueso. Sí, porque el
lugar tipo está en negrita. Entonces cambiemos esto para que no
lo sea. No me gusta regular. Sí, regular regular está
más bien. Vamos a usar. Podemos terminar menos optimizando las imágenes y
todo. Está bien. Está bien, está bien. Bueno,
creo que esto es para éste. Te voy a
ver a continuación. Adiós.
89. Barra de tiempo de juego y poción de tiempo: Hola, y bienvenidos al taller de diseño de
juegos, Real Engine five, Dungeon
procedimental, RPG de
acción, curso de creación En la lección anterior,
comenzamos con nuestro mecánico de uso. En nuestra jugabilidad b, usamos el evento on click en los cuatro botones y
creamos una función de uso, que usamos una entrada de un entero para determinar
qué botón, básicamente qué ranura del
inventario estamos presionando. Dentro de esta función,
obtuvimos nuestro inventario, de nuestro modo de juego, que almacenamos las claves y los valores en variables
locales separadas. Después de eso, en base a nuestra ranura, obtenemos de nuestras llaves
el nombre de la llave, que es nuestro propio nombre, y estamos cambiando
en base a estos elementos que tenemos. Yo dos, yo tres, yo
cuatro, y yo cinco. Yo dos es la poción de salud. Entonces comprobamos si nuestro
jugador está lleno de salud. Porque si nuestro jugador
está lleno de salud, no
deberíamos beber la poción. Y si la salud no está llena, utilizamos la función remove
health, para agregar dos HP a nuestro jugador. Después comprobamos los valores, de la ranura actual, que son las pociones de salud, para ver si menos uno está haciendo
cero o menor que cero En realidad, más bajo que cero nunca
debería activarse. Y si tenemos
pociones básicamente, eso es lo que estamos comprobando aquí Si tenemos pociones o si las pociones se están convirtiendo en
cero cuando estamos usando, actualizamos nuestro inventario en
consecuencia eliminando o agregando la
misma clave al Y luego actualizamos nuestro inventario y actualizamos también
el tip hover Por si acaso se convierte en
cero, entonces dice que no. Ahora bien, la orden
nos dice que deberíamos hacer la poción de
velocidad ahora mismo, pero no quiero comenzar con la mecánica de los personajes
exactamente en este momento Entonces, como estamos en
el widget de jugabilidad, vamos a crear la poción de tiempo, que prácticamente son
solo dos variables Vamos a hacer una
variable de flotación. Vamos a llamar a este padre de familia. Vamos a
duplicarlo y llamarlo Max. Lo que vamos a
hacer es que vamos a añadir a la hora actual un valor. Digamos que nuestra poción de una sola
vez
nos da 60 segundos porque
vamos a estar saliendo en segundos, y eso es en lo que deberíamos
establecer nuestra hora actual Pero solo vamos a
sujetar, sujetar eje. Lo siento, aprieta el flotador. Vamos a
conectar esto aquí, y nuestro grupo
sería nuestro tiempo máximo. Y vamos a dar
tiempo máximo al valor predeterminado. Tenemos que compilar para eso. Y eso sería digamos 220. Digamos que es 220, y estamos
agregando un minuto cada vez. Estamos bebiendo una poción de tiempo. Y vamos a conectar eso a cinco. Ahora, lo siguiente que
debería pasar ya está hecho. Vamos a conectar
esto a la sucursal aquí, y va a verificar si el
slot de valor actual tiene suficiente, y eliminará o agregará si es sable, que no es sable. Creo que las pociones del tiempo
son de un solo uso. Yo todo se usa una
vez excepto las pociones, y
la poción de velocidad Entonces, vamos a crear el
indicador para el tiempo, como necesitábamos en la interfaz de usuario. Vamos a p. vamos
a usar la misma técnica que el material
que
la barra de salud. Entonces vamos a usar una imagen. Et puso el ancla a
la mitad y a la parte superior. Vamos a establecer posición x -300, posición y 50 tamaño x 600, es
decir y 60 Y creo que es
un buen bar para pasar el rato. Ahora, para la aparición. Vamos a ir a cepillar, y vamos a usar el mer. Material de instancia. Ahora
tenemos nuestra barra de tiempo. Vamos a programarlo para que haga algo porque tenerlo no
significa que haga nada. Entonces vamos a
ir a nuestra gráfica. Vamos a ir
a nuestro gráfico de eventos. Vamos a ir al constructo
del evento, que es como empezar a
jugar o planos Y ahora vamos a usar un. como el tiempo por evento. Para los que son
nuevos, lo que es un temporizador, es básicamente un
nodo utilizado para crear
un evento cronometrado que activará una acción después de una duración
específica,
que, si hacemos clic en Lupin
también se puede configurar para que se repita
en intervalos durales Y la forma en que lo estamos usando, estamos creando un evento personalizado, y estamos vinculando
este evento a través del delegado de
aquí a nuestro tiempo. Cómo
sería alguna información extra que no
importa realmente cuántas veces tengas y dónde las
tengas. Importa cuántas acciones
realicen porque detrás en código, son
consideradas como un temporizador de un solo tiempo, como hay una
selección general detrás de todo lo que acaba
de acumular más o menos explicado, no así exactamente, pero digamos
que acumula las acciones de los tiempos Ahora, en nuestra teoría,
pongamos algunos valores. Entonces nuestro temporizador
va a estar haciendo un ciclo. Va a estar dando
vueltas cada 1 segundo. Esto significa que el primer palo
correrá 1 segundo después de
que haya comenzado el juego. Entonces, vamos a estar
fijando nuestra hora actual. Cada 1 segundo, dos tiempos
actuales menos uno. Y entonces vamos a preguntar si esta vez es igual a cero. En realidad igual o
menor que cero. Menor o igual. Ordene el asunto de tiro en esto
cuando quiero una nota rápida. Si es menor que cero, vamos a t a nuestro juego de
jugador básicamente. Lo que no hemos llamado así, vamos a hacer esto más tarde. Ahora, sólo una información más. No vamos a estar haciendo una pausa
o estoy posando este temporizador, pero para hacerlo por temporizadores, sí
tenemos un sistema llamado
Handles, Ter Handle Si promociono esta variable, y vamos a llamar a este
Timer ble y yo Ahora, si tuviera que llamar a este
asa en cualquier parte, si tuviera acceso a ella, puedo pausar o unpause timer y preguntar también si se plantea
el temporizador Esta es la forma en que
estamos haciendo esto. Y también hay un artículo
claro e inválido. Hay algunas opciones más. Yo solo quería agregar esto. No voy a
usar esta variable. Voy a borrarlo. Ahora tenemos un temporizador
que cuenta hacia atrás, y cuando estamos usando nuestro
artículo, agregamos a nuestro tiempo. Ahora, no se
actualizará instantáneamente, pero se actualizará básicamente instantáneamente
porque es cada segundo, cada segundo, se actualiza, y sí lo actualiza. Volvamos a nuestro temporizador. Vamos a necesitar una función. Y la función será muy
sim será muy similar a la que queremos actualizar HP. Voy a duplicar esto. Todos estos se actualizan. Y en lugar de la barra, voy a usar el. Hay un bar.
No es una variable. Vamos a diseñador.
Vamos a seleccionarlo. Hagámoslo una variable. Lo van a traer aquí. Pero esto nos da un porcentaje a partir de cuando estamos haciendo
los cálculos de salud. Pero tenemos que hacer los
cálculos aquí para el momento. Tenemos que traer la hora actual,
voy a necesitar x tiempo. Vamos a dividir a estos dos. Obtenemos el porcentaje, y vamos a conectar esto aquí. Vamos a eliminar esto. Y por alguna razón, estoy seguro de que este valor
sería el mismo. Pero vamos a comprobarlo. Vamos a revisar. Abrimos la instancia. Entonces sí, este valor es el valor P. Entonces esta es nuestra variable de
parámetro. Si abrimos el material principal, podemos ver que este es el parámetro que estamos
llenando y su valor P. Entonces estamos llenando
la P del temporizador. No el querer culpar a otros por nombrar convenciones,
para ser honestos Pero de todos modos, ya no necesitamos esta entrada porque
estamos actualizando aquí. Y usemos esta función
antes de nuestra sucursal. Vamos a configurar
este temporizador de actualización. Ahora bien, si quisiéramos ser
realmente, muy precisos, podríamos copiar esto a nuestro uso cuando establecemos
la hora actual, y se actualizaría instantáneamente. No es de un hussle, pero no creo que también
importara Estamos usando la poción, como el siguiente palo que se sentiría Lejos. Vamos a hacer trampa
para probar nuestra poción. Vamos a agregar un nuevo
artículo al inventario. Vamos a llamar a esto I cinco. Creo que cinco, y
va a ser uno. Y voy a
compilar y jugar. Guardemos todo
antes de presionar play. no nos importaría.
No nos estrellaríamos en esto. No hemos hecho ningún código. Ah, y ya no está
funcionando. Oh, porque no hemos fijado
la hora actual a nada. Entonces, en realidad uso esto. Podemos ver que está
funcionando. Pero sí necesitamos establecer la hora actual
al tiempo máximo en la construcción. O la otra cosa que podemos hacer, pero entonces tenemos que
cambiarlo cada vez que es nuestro tiempo máximo es 2:20 Podemos establecer la hora
actual en 220. Simplemente usamos el set max time a hora
actual y comenzamos a
jugar o construir, así no tenemos que cambiar
ambos valores cada vez. En fin, dejémoslo tan fácil. Creo que esto es para éste. Te voy a ver a la siguiente. Adiós.
90. Poción de velocidad y efectos de partículas: Hola, y bienvenidos a
Game Design Workshop y Real Engine five
Procesal Dungeon action RPG curso de creación Anteriormente, añadimos nuestro
timeer a nuestra ventana gráfica. Agregamos la barra del temporizador, y agregamos en el
evento Construct, que es el inicio de juego de
los Planos, establecido por evento, que es un evento que ocurre
cada cierta cantidad de tiempo Y creamos un
evento personalizado que nosotros ella a evento. Y usamos este evento personalizado para establecer la
hora actual -1 segundo. Luego seguimos adelante y actualizamos nuestra barra a través de nuestro valor de parámetro
escalar, que es el valor de HP, y obtuvimos el porcentaje de nuestro tiempo actual
a nuestro tiempo máximo. Luego procedimos
con nuestro evento de uso para completar actuamos
al revés Hicimos el evento de uso
primero, pero de todos modos, así que procedimos a hacer el evento de uso cuando estamos
usando el elemento I five, que es una porción de temporizador, agregamos 60 a nuestro
tiempo actual, 60 segundos Sí, básicamente 60 segundos. Estamos afianzando a nuestro tiempo máximo, y luego estamos
actualizando nuestros temporizadores, así que esta es una
actualización instantánea y no espera ni un tick 1 segundo Y luego usamos el código que tenemos para las porciones. También. Es un código común. Para toda esta acción, será un
código común para verificar si tenemos otras porciones
en el inventario, y si no tenemos que
eliminarlo de nuestro inventario y actualizar el
cursor sobre la información sobre herramientas Ahora, vamos a hacer
la porción de velocidad. Yo tres. No. A mí me gusta que arrastre esto. El mal clic es increíble. Ahora, para hacer esto, vayamos a nuestro personaje, y vayamos a nuestras partículas. Bueno, en realidad establece
para una partícula. Ya me fijé para ello. Vamos a necesitar el puerto de cabeza
glaseado P revenant. Si eso tiene algún sentido, esa es la partícula
que necesitamos. Vamos a seleccionarlo, y luego vamos a presionar add, y vamos a elegir el sistema de partículas en
cascada en cascada, y se agrega a nuestro personaje. Ahora vamos a
hacerlo un
poco más grande. Vamos
a fijarlo en dos. Y eso está bien. Y
vamos a abrir nuestra partícula. Haz algunos cambios. Voy a traer aquí
la partícula. Lo que queremos es este
MC carbonizante y vamos a cambiar
la vida de uno, 2.5 Te diré en un segundo por qué. Y básicamente, este es el tiempo que dura el partic esta
parte de la partícula, que si la cerramos, podemos ver que son las llamas
reales llamas Esta cosa. Y vamos a cambiar también
no el tamaño por vida Sí, el tamaño por vida, vamos a desactivarlo. Es una talla todo el tiempo. De lo contrario, si no lo hacemos, déjame deshacer clic en esto Quizá lo preferimos de esta manera, pero en realidad no lo hago. Parece que estamos
propulsados por gas. No queremos que nos promuevan gas. Queremos ser corredores de apuestas. No sé,
algo diferente. Entonces no lo vamos a
eliminar, sino deshabilitarlo, presionando esta x aquí
así esta la desactiva, y ahora es más como un aura, más como un
rastro real que estamos viviendo Cuando estamos estáticos, también es muestra que tenemos esto habilitado. Eso sería desde
el lado de las partículas. Vamos a programar esto. En realidad, una
ambientación más al artículo. Volvamos a la partícula. No queremos que se active
de forma automática. Entonces voy a
evaluar para activar, y voy a desactivar
la activación automática. Queremos activar
esto. No queremos que sea un estado constante. Voy a compilar y guardar, y volvamos
a nuestra jugabilidad. No nuestra jugabilidad.
Mi error otra vez, tenemos que quedarnos
en el personaje. Vayamos al gráfico de eventos y creemos
eventos personalizados en alguna parte. Voy a hacer un evento
personalizado aquí. Y llamémoslo,
no lo sé. PD. PD es un buen nombre. Entonces, consigamos nuestro puerto de cabeza
glaseado P revenant, y activémoslo También necesitamos en realidad, no
necesitamos establecer
activos. Sólo necesitamos. Esto es solo un nodo de activación. No necesitamos activarlo, y vamos a
restablecerlo también Ahora, hagamos también
su visibilidad, iden, y vamos a encenderlo por si
acaso esa visibilidad aquí está si acaso que no termine y
no empiece correctamente, por lo que no empieza abruptamente Se ve mejor. Por ejemplo, a lo que me refiero
son tecnicismos. Vamos a pintar otra vez. Lo que quiero decir es, si tenemos nuestro carácter y nuestro
efecto termina aquí. Por si acaso la activación
no empieza desde aquí. Para un marco, vemos esto. No queremos ver
esto de inmediato, queríamos ver expandiéndose
poco a poco. Es por ello que jugamos
con la visibilidad, reiniciándola y
luego encendiéndola y Entonces lo que
tenemos que hacer es usar nuestro movimiento de
personaje ¿Qué es el componente de
movimiento de personajes? Es específico para planos de
personajes. Por ejemplo, este plano me
ha dejado visible. Vamos a la configuración de clase. Y ver
clase padre es carácter, que cuando estamos
creando planos, si voy a crear un plano aquí, me pregunta, ¿es actor ¿Es un alfiler? ¿Es un personaje? Ahora bien, los personajes y
uno debajo del estanque, no en esta lista en jerarquía, porque los personajes son estanques, pero los estanques no son
todos Algunos de los estanques
pueden ser personajes. Es como lo del diagrama de la camioneta, lo que significa que básicamente el
carácter hereda del estanque, Pond no hereda
del Y la especial de
las cosas especiales del personaje es este componente de movimiento del
personaje, que es básicamente para manejar lógica de
movimiento para
tres caracteres D. Se puede usar para dos d, pero va a
ser un poco duro, podría necesitar algunos
enchufes. De todas formas. Entonces, esto, que es
responsable movimiento de
nuestro personaje
tiene un montón de ajustes, una cantidad infinita de
ajustes, si se quiere. De veras. De todos modos, lo que queremos de todos estos ajustes es
nuestra velocidad máxima de caminata. Entonces por defecto, lo tenemos 600, y creo que es una buena velocidad. Pero cuando seamos rápidos, pongámoslo en
algo mayor. Entonces vamos a establecer max walk. Velocidad. Digamos a 900. Entonces lo que vamos a hacer
suele ser poner un retraso. Por ejemplo,
podríamos poner un retraso, y después de digamos 14 segundos, restablecemos la velocidad máxima de movimiento a 600 de nuevo a nuestra velocidad
original, y establecemos la visibilidad
de la partícula, dos. Podríamos establecer también
podríamos de activar o usar el otro nodo
que no usamos, establecer act a negativo y
luego restablecerlo, por ejemplo. Pero tampoco podríamos hacer nada, pero esta partícula
quedaría con los recursos, muy pocos. Depende de la partícula también. Así que vamos a desactivar. Sólo para ahorrar unos pocos recursos. Ahora bien, este retraso aquí
funcionaría como puerta. Como si estuviéramos pasando por
esto, estamos fijando 900. Si el retraso se está ejecutando, no
se ejecutará hacia adelante hasta que termine
el retraso, entonces puede ejecutarse de nuevo. Pero si usamos un
retraso recuperable, triste a 14. Esto significa que cada vez que
bebemos una poción, el retraso recupera la cuenta regresiva Entonces hagámoslo. Entonces básicamente, si seguimos
encontrando pociones establecidas, seguimos reactivando esta
cuenta regresiva de 14 segundos No vamos a agregar tiempo extra, solo
estaremos reactivando
los 40 segundos Ahora, llamemos a ese
evento desde nuestro uso. O aquí. Vamos a sacar del
elenco dos jugadores de BP abajo, vamos a ponernos rápidos, y vamos a conectar
rápido aquí con el grupo. Vamos a compilar y guardar, y vamos a hacer trampa. Pasemos a nuestro modo de juego y
cambiemos un artículo de inventario. Vamos a establecer estos dos I tres, y yo tres tiene dos
usos por defecto. Juguemos. Y me estoy
moviendo normalmente. Estoy abriendo inventario, hielo, botella
azul, estoy usando una, y tengo rápido. 13 segundos, 14 segundos. En realidad, volvamos a reactivar.
Lo estoy usando de nuevo, y ahora debería ser fo segundos. ¿Qué es el elevador? Oh, Ratones. Justo por aquí, elevador aquí. Mazmorra de laberinto de ratones. Oh. Eso es todo para éste. Te voy a cantar la siguiente. Adiós.
91. Poción de ira y efectos de partículas: Hola, y bienvenidos a Game
Design Workshop er motor real cinco procesales Dungeon
action Bz creation Anteriormente, agregamos nuestro evento
rápido a nuestro personaje. Un evento que hace que nuestro
personaje se mueva más rápido. Para ello, agregamos una partícula a nuestro componente de
clase de personaje, que es el
renacido Frost porte Y cambiamos algunas
cosas en la partícula, cambiamos la vida útil, y
deshabilitamos el tamaño por vida Entonces hace más de un efecto que se esté moviendo con nosotros,
estaban dejando un rastro. Después, nos dirigimos, y creamos una cadena de eventos, activamos la partícula, porque la configuramos para que no se activara de forma
automática en los detalles. Entonces establecemos la visibilidad en
true ya que la establecemos en false, porque no queremos que lo
haga no queremos ver un fotograma que sea de la activación
anterior, como que no se active, en el último estado de la
partícula, por ejemplo. Ahora, cambiamos la velocidad de
movimiento de nuestro personaje a 900, y luego con un retraso
recuperable, lo que significa que podemos beber otra poción y
restablecer el tiempo aquí Volvimos a cambiar la velocidad
después del retraso a 600, lo que estableció la visibilidad en. Debería ser falso, mi mal, y
desactivamos la partícula Después, fuimos a
nuestro widget de juego, y llamamos al evento Speedy a través de nuestra referencia de personaje, y conectamos la
función con el resto. Del código que está administrando el anuncio y eliminar del inventario y
actualizar nuestros widgets. Ahora bien, una cosa que me di cuenta es que nuestro rápido
incluso tiene dos cargos, pero no lo hace tan número. Y basado en nuestro código,
no funcionaría. Por ejemplo, si lo
pusimos en stock, entonces podríamos recoger más pociones y podríamos
pegarlas sin cesar Y si en realidad, lo que tenemos que hacer es crear algún código personalizado para decir que
si es el ítem I tres, entonces mostrar las acciones, lo cual no vamos a hacer,
simplemente lo dejaremos así. O si quieres, también
podemos ir a nuestra poción de velocidad en nuestros artículos Dt y establecer
la cantidad en uno, y eso sería todo Está arreglado. No
necesitamos ver un número. Y ahora vamos
a hacer el I cuatro, que es la poción, que va a destruir todo Bueno, en realidad dañará, pero el daño va a ser tan grande que va a estar destruyendo todo lo que nos rodea. Y por todo,
no me refiero al mapa. No tenemos un mapa detracti. Quiero decir matar a todos los
enemigos y a las torres, lo que llamamos Puerta del Infierno. Para ello, necesitamos
otra partícula. Escojamos el mapa esta bonita explosión,
tráela por aquí. Tenemos esta linda explosión. Es básicamente para
otra escala, pero vamos a aumentar su tamaño y va a estar bien
para nuestros fines. Entonces vamos a ir
a nuestro personaje. Y mientras estamos siendo seleccionados, vamos a agregar cascada. Operaciones. ¿Qué está pasando? Sí, no deberías
escribir anuncio en anuncio. Simplemente no funciona, y vamos a
activarnos de forma automática. En realidad, dejemos
la activación automática. Nos figuramos tamaño, y un grande. L et's cambian su
escala a tres. Nosotros sí queremos que
afecte a un área grande. De hecho, usemos
una prueba clave esto. Entonces lo que haremos, vamos a
crear otro evento personalizado. Toda esta gama. Y consigue nuestro artículo o éste,
uno , y di activar Y establecer que se establece en true. Ahora lo que vamos
a hacer es ir a un controlador y hacer clic
derecho y usar, digamos Teclado base. Barra base, aquí estamos. Consigamos nuestra
referencia de personaje. No tenemos ninguna. No importa, vuelve a casa. Carácter de personaje dw
convertir a puro elenco o rabia. Y vamos a compilar e ir a jugar. Y queremos que nuestra partícula
sea k del tamaño de una baldosa. Pero si estoy presionando espacio. Sí, esto se ve y sobre d. Esto se ve del
tamaño que queremos. Ahora, para el alcance, para el área de daño, como cómo
vamos a hacer daño. Vamos a estar usando
una esfera de colisión. Entonces un miedo de colisión. Colisión de esfera. No. Voy a ir y poner su oculto
a juego a caídas. Y entonces voy a aumentar el radio a, digamos, 400. Sí, 400 parece w. 500 parece mejor. Pero podemos comprobar ya que
hicimos la visibilidad oculta. A 500 es un
poco demasiado. Entonces cambiémoslo a 400. Juguemos de nuevo. Sí,
pienso visualmente, estamos en estos límites No obstante, no importa
la distancia del círculo, sino de la lesión, vamos a estar haciendo el
mismo daño en todas partes. Entonces esto parece estar bien. Pero no lo vamos a
dejar así. No lo vamos a usar tal cual. Sabemos que el radio de
velocidad es de 400. Lo que vamos a hacer
es cambiarlo 0-400. En realidad podemos subir la distancia también
desde donde calentamos. No vamos a hacer ese código, pero
se puede hacer fácilmente. Cuando tenemos una esfera que
está aumentando de tamaño. Ahora, vamos a
establecer su colisión. Ignorar algunas cosas. Vamos a hacerlo a medida. Vamos a
ignorar la visibilidad, la
cámara, la estática mundial,
no la dinámica mundial. Cuerpo físico, en realidad,
dejemos el cuerpo físico también encendido y destructivo. En realidad, vamos a cerrar
también dinámica mundial. ¿Cuál es nuestra puerta del infierno? Déjame recordarme a mí mismo. Vamos a ir a Blueprints. Vamos a ir a
utilería a los enemigos. Vamos a ir a la puerta del Infierno y seleccionar su propia cápsula. Es una colisión de damas. Vamos a ir a los ajustes preestablecidos de
colisión. Es una dinámica mundial. Entonces no queremos
ignorar las dinámicas mundiales. Entonces vamos a
dejarlo superpuesto. En física cuerpo,
hagamos que las cajas se muevan con nuestra porción de furia. Lo único que
tenemos que cambiar ahora es de consulta a colisión. Empecemos sin colisiones. Y cuando estamos a
punto de expandirlo, dijimos que es colisión entonces. Digamos radio para
digamos uno no cero. Pongámoslo en uno. Y ahora, volvamos a
nuestro código y agreguemos una línea de tiempo. No es una línea de tiempo. Lo siento. Primero necesitamos
habilitar la colisión. Ahora vamos a
conseguir la esfera. Quedémoslo para
conseguir colisión de pociones. Y colisión habilitada. Y optan por variar
solo no hay física. En, sí queremos física, porque decidimos poner
los elementos de física a, y ahora necesitamos una línea de tiempo. Entonces línea de tiempo. Vamos a entrar. Vamos a
crear una pista de flujo de 0.31 y cero, cero Por supuesto, que nuestro
uso último marco clave. Lo siguiente sería
ir a Gráfico de eventos, actualización. Consigamos nuestra colisión de esfera, califique el bote y el radio de la esfera. A está conectado a la actualización. Aprendamos de 12400 con
el Alpha de nuestro nuevo camión. Ahora, cuando terminemos, volveremos a conseguir nuestra esa
colisión, esa dos ded no
colisión básicamente. Y vamos a establecer el radio de
esfera también. 21. Ahora bien, ¿qué sucede cuando nuestra
colisión de pociones de rabia Vayamos a nuestro inicio sobre la vuelta, de nuestra olla de rabia. Hagamos algo de espacio. Ten esto aquí. Ponle
un comentario sobre esto. Vamos a enfurecer la olla. Pongamos un comentario
en este colli. Y eso es todo por ahora. Oh. Seleccionemos nuestra
otra comp y ask en realidad no
es la otra
comp, el otro actor. Porque ahora vamos
a estar comprobando por IA. Entonces estamos seguros de que la IA solo tiene la colisión para su
cuerpo y nada más. Bueno, el componente de la cápsula. Entonces vamos a
comprobar si hay un remolcador. Si el actor tiene tirón,
vamos a la rama, a hacer el si, y luego
vamos a conseguir a nuestro actor y aplicar daños Y daños, vamos
a aplicar, digamos diez. No usaremos
los otros nodos, y esa sería nuestra colisión de pociones,
colisión de pociones. Ahora, llamemos a este evento en
nuestra función de uso. O yo cuatro. Vamos a llamar desde
nuestro carácter de arriba hacia abajo, la función H depende
en realidad no función, y luego conectarla por aquí. Vamos a crear un truco
poner yo cuatro de uno. Vamos a nuestro controlador
y eliminemos nuestro demag. Para ser honestos, vayamos a
nuestra puerta del infierno y vayamos a
nuestro actor tira y vuelta de los incumplidos
en el tirón de la puerta del infierno,
y agreguemos el remolcador y agreguemos el Pero no tenemos un
sistema de salud en nuestra torre. Deberíamos hacer eso siguiente. Vamos a probar nuestra porción. Una poción de búsqueda. Estalla, desaparece, y
es todo punto Eso está lleno. Eso
es todo para éste. Te voy a ver
en la siguiente. Adiós.
92. Música de combate y modo de combate Hellgate: Hola, y bienvenidos a
ganar taller de diseño, y real Engine five, Dungeon
procedimental, RPG de
acción, curso de creación Anteriormente, añadimos la funcionalidad de poción de
rabia. Agregamos la colisión de rabia
a nuestro personaje, que es una esfera que se
incrementará de tamaño
con una línea de tiempo. Agregamos la marca de reman y parte que aumentamos también
en tamaño es toto activando Sí, no debería
ser auto activando, compilar, y luego completamos
la función, el evento, rabia, que activa
nuestra partícula, dice el permiso de colisión
en la poción de rabia, usa una línea de tiempo para aumentar
el tamaño de la esfera, y luego la apagamos Entonces en la colisión
de la esfera, cuando choca con algunos, usamos una etiqueta E para enemigo Si el otro
actor de etiqueta tiene la etiqueta E, nos ramificamos y aplicamos daño. Después, fuimos
a nuestro juego, llamado a este evento cuando se
usa el
cuatro elemento cuatro y
lo conectamos a nuestra función, a nuestra cadena de eventos, pero eliminamos del
inventario la poción Ahora, después,
fuimos a nuestra puerta principal y pusimos la etiqueta E. Pero
decidimos que no podemos
usar todavía no podemos probar la puerta del infierno
porque no tiene código. Entonces comencemos a llenar algún
código en la puerta principal. Pero antes de hacer eso, volvamos a explicar lo que
tenemos aquí, lo que hemos creado. Entonces, tenemos dos líos estáticos que representan la
parte visual de la puerta principal, y también una partícula que también representa
la parte visual Y un punto ligero para hacer todo esto un
poco más resplandeciente. Podríamos cambiar algunos
ajustes en el punto de luz, Vamos a sd it a Lúmenes. Digámoslo a 150. Digámoslo a un color rojizo. Digámoslo a una
misiva rojiza. Hace 1011. Veamos cómo se
ve. Gran cambio. B. El rango de la amplia gama. Rango 600. Oh, no cambié el color. ¿Qué pasó aquí? Oh, ¿qué soy? Estoy sentado
en una masiva a la luz. Sí, eso no está pasando ahora. U puedes eliminar esta parte? Cambiar una misiva a la luz me
hace parecer como no mucho. Sí, fijemos su atenuación
reducida a excien, y vamos a una luz a algo 0.1 verde y 0.1 azul. Prueba. I. También hay un
resplandor más rojizo en las paredes. W lo veo en tierra,
Tal vez se ve mejor. Nuevamente, lo tenemos. Podría ser un
poco más intenso, pero creo que está bien. Ahora, volvamos a la puerta del Infierno. Vamos a seleccionar. Pero
antes de comenzar a codificar, recordemos
lo que hemos construido aquí. Tenemos una malla estática con
una malla estática como un niño
y un sistema de partículas. Esta es nuestra parte visual. Lo que representa es la
parte visual de la puerta del infierno. Entonces tenemos una
luz puntual que deberíamos lib cambiar sus opciones, digamos un
radio generacional a 700 Digamos esto a nosotros y 150, y cambiemos el
color claro a rojizo oscuro Con una pared de uno en bu así que por favor. 05, a la derecha. Y creo que esto
sería por la luz. Y luego tenemos una cápsula. La luz, tenemos que hacerla un poco resplandeciente alrededor del término La cápsula es
donde nuestra caja de calor, pero podemos golpear con el
jugador porque hemos
puesto ambos de estos
mensaje de no colisión. Y la cápsula tiene toda colisión
porque es una cápsula, y así probamos. Podemos optimizar el bit, pero no lo hace Entonces, tenemos una colisión de esfera, pero aún no hemos
aumentado su tamaño. Lo que
hará esta colisión es que detecte si el jugador está
al alcance de disparar o no. Vamos a optimizar su
colisión dejar Vamos a establecer no importa porque
nos estamos superponiendo. Vamos a configurarlo a medida e
ignorar todo excepto el hogar. Ahora, también, pongamos estas dos mallas estáticas
para que no proyecten sombras No queremos que
estén proyectando sombras. Y nos hemos puesto en
comenzar el juego que nuestro movimiento giratorio
actualiza sobre los ses estáticos, por lo que giran alrededor. Ahora, si compilamos y guardamos, comencemos con nuestra colisión. Lo primero que tenemos que hacer es
calcular el radio de la esfera. Vamos a establecer
juego oculto para que no sea cierto. Vamos a compilar. Vamos
a establecer el radio predeterminado en, digamos 100. Qué grande es esto. También, en nuestro jugador, deberíamos ir a nuestra colisión de bote de
rabia, que el juego oculto sea
cierto porque no lo giré. Lo apagamos al tamaño, pero no lo
encendimos para volver a ocultarlo. Oh, voy a compilar
y salvar al personaje. Vamos a jugar. 700 parece
un poco excesivo. No nos consigue cuando engendramos, pero si nos movemos, comenzará Bueno, podría comenzar porque
la visibilidad será un problema, pero empezará a atacarnos. Bueno, digamos que es un
poco más pequeño. Queremos un azulejo
y, entonces 600 tal vez. Azulejo más un poco de un azulejo. Casi casi 550,
creo que será la clave. Así que 550 juegan ect. Eso parece lindo. Pero no va a estar
atacándonos a través de esto. Es un bonito anillo.
Dejémoslo ahí. Regresa. Y hagamos algo
con esta colisión. Vamos a elegir
la superposición de inicio. Vamos a preguntar
al otro componente que es P para nuestro jugador. Voy a poner una sucursal. Haz la pregunta y luego vamos a
crear una variable. Llamemos a esto fuego. Y voy a hacer
que sea cierto. Ahora, vamos a
necesitar una superposición final, por
supuesto, de la esfera. Y vamos a preguntar lo mismo y va a ser falso. Lo siguiente que debemos
hacer es que vamos a cambiar nuestro material en
ambos mensajes estáticos. Secuenciar ese material para que sea el que realmente
tenemos en el piso y está resplandeciendo y
volviendo a la normalidad C M instancia. Creo
que es la tercera. Y realmente el infierno. Ya veremos en juego. Pero sí, creo que este es el indicado. En fin,
lo siguiente que debemos hacer es ir y superponernos y
atender esto de nuevo a la normalidad, este sería el G M. Ahora bien, lo que queremos hacer
también es cambiar la música. Cuando estamos en combate, debemos ser alertados al
respecto. Eso es combate o Así que vayamos a nuestro
personaje y creamos un componente de audio y audio. Vamos ic. Para ello, queremos el bucle
variable para ello. Este lazo de oro tigre relámpago. No queremos que se active
de forma automática, así que vamos a
desactivar la activación automática. Y vamos a
hacer un evento personalizado. Y vamos a llamar a
esta jugada acción autoyp. Música de acción. Algo de espacio. Ahora bien, la primera pregunta
es, ¿está sonando la música? Tanto sobre eso. Jugando entonces
si no está jugando, nos vamos a desvanecer. Usemos pings aquí. Tengamos una duración de pad de 2 segundos y la hora de inicio a las dos. Este es un dos
porque tiene una larga introducción, y queremos empezar un
poco más adentro Ahora, vamos a poner una gala y
vamos a conectar ese
canal a este retraso. Entonces, cada vez que estamos colisionando, y en realidad cuando
estamos siendo atacados, vamos a llamar a este evento Si está jugando sólo
va a reactivarse, nuestro enfriamiento para salir del
combate, por ejemplo Vamos a poner estos dos 15 segundos. Y voy a renombrar
este dos n necesita un n tal vez un A. mayúscula Oh, ¿qué hacemos después del retraso? Vamos a desvanecer nuestra película de
acción. Música de acción. Fue una película así de fácil. Sería genial, ¿no? Voy a poner dos
aquí, sin duración. Voy a compilar y guardar, y esto está prácticamente listo. Oh, vengamos aquí
a nuestra puerta principal. Y ahora necesitamos una referencia al personaje,
que sí tenemos. Es el otro actor de aquí. Voy al personaje pop. Convertido a puro reparto. Voy a tocar música de acción. Voy a conectar esto aquí. Ahora podemos probar cuando estamos
en el rango y cuando no lo estamos. Oh, vamos a ver
esto. No tenemos música. Encontremos la
puerta del infierno por aquí. Encima. Está bien. Es
tocar nuestra música. Ahora, vamos a probarlo un poco más rápido
porque 15 segundos, no
quiero esperar ahora mismo, y sería una pérdida de tiempo. Entonces vayamos a nuestro jugador. Vamos a establecer lo legal para
digamos 3 segundos. T. No
hay puerta del infierno. L espn otras formas. Uno por allá. ¿Verdad? El material sí cambió. Comprobemos la música. Uno, dos, tres, se detuvo.
Vamos a entrar y salir. Constantemente. Sí. Entonces, nuestro
mecánico está trabajando. Y creo que este es un buen punto de
parada para éste. Vamos a
continuar en la siguiente. Adiós.
93. Sistema de salud Hellgate y muerte: Hola, y bienvenidos a
Game Design Workshop y Real engine five
Procesal Dungeon action RPG curso de creación Anteriormente, creamos
la cadena de eventos para comprobar si nuestro personaje está
al alcance de nuestra torre. No, comprobamos si
tiene el componente P, comprobamos si es una
colisión capsual de nuestro personaje, y establecemos una variable
a la que llamamos fuego Luego cambiamos el material a un material que salta
de resplandeciente a normal, y luego lo volvimos atrás. Y creamos la mecánica de tocar música de
acción
en nuestro personaje, que comienza a jugar con un desvanecimiento o desvanecimiento
cuando ha pasado un tiempo Pongamos esto de nuevo
a 15 Podría ser largo. Vamos a ponerla de nuevo en diez. Y luego nos desvanecemos ya que han pasado
10 segundos, y no nos han golpeado, así que se desvanece. Ahora, sigamos con nuestro sistema de
salud de puertas de salud. Como usamos para el
personaje, el cualquier daño. Vamos a comentar esto. A Música. Como usamos cualquier
evento de daño para nuestro personaje, mismo
haremos con nuestra torre, ya que estamos aplicando
daño cuando estamos usando la poción y cuando
empezaremos a disparar Un evento de daño, y
vamos a necesitar dos variables, claro, o
salud actual y salud Mx, van a ser enteros No enteros. Me refería a flotadores. Ese punto decimal es importante y lo facilita
con las divisiones. Cualquier evento de daño recibido. Tenemos que quitar a los damats
de nuestra salud actual, no para nuestra M.
Vamos a hacer un menos Vamos a
conectarnos. Esto en realidad aquí y esto aquí porque estamos restando de
nuestra salud actual Voy a agrupar la carga. Voy a fijar
nuestra salud actual, y la pinza, por supuesto, sería mínima a Mx. Al comenzar a jugar. Vamos a establecer MC. Pongamos la corriente a Mx. Vamos a establecer un valor en la salud de MC. Eso digamos cinco salud.
Tenemos que compilar. De la salud. Siguiente. Lo vamos a
hacer es hacer una pregunta. Volvamos a nuestro cualquier daño. Vamos a poner una rama, y vamos a
comprobar si esto es igual o menor menor o igual que cero. Porque tenemos nuestra rabia y nuestro ataque mediático hará
más de un daño. Nuestro tiroteo hará un daño. Queremos verificar por
menos de cero, también, aunque estemos sujetando, que hace que esto sea obsoleto. Pero en fin, si no
estamos sujetando, hagamos A sirst Si no somos cero salud tm. No, vamos a hacer una vez. Lo siento, me estoy adelantando. Estos serán todos nuestros
enemigos, los que hacen. Antes lo hacemos una vez,
porque hacemos una. Hagamos algo complicado
con esto con nuestra puerta de hel. Lo que vamos a hacer
es que vamos a reducir el tamaño de nuestras mallas Entonces parece que se está haciendo más pequeño cada vez que lo
estamos atacando. Vamos a elegir
estos dos líos. En realidad, solo necesitamos el
padre, que es uno de malla. Vamos a eliminar
el otro, y vamos a s todos un tres D. Lo que vamos a estar configurándolo es porque
estamos empezando en 0.5. En realidad vamos a volver a almacenar esto como una variable y comenzar a jugar. A una escala de pared. Vamos a promover
esta variable. Vamos a llamarlo original. Aquí. Ahora, lo que vamos a hacer por el mundo sanador establecido,
vamos a larp Por qué vamos a dejar
porque vamos a
leert a través del original, que sería B en nuestro caso, y una quinta parte del mismo Vamos a
dividir. Vamos a convertir esto en un entero. Vamos a dividirlo por 555. O Alfa sería el porcentaje de nuestra
salud y salud actual. Vamos a dividir a estos dos. Entonces como estamos comenzando
con porcentaje completo, esto estaría pasando de B a A, porque cada daño
reducirá el Alfa. Y cada vez que queremos cambiar una quinta parte de
la escala original. Y los unos, nos
vamos a ir para después cuando tengamos algo de IA. Ahora bien, ¿qué hacemos cuando llegamos a eso va
a hacer un evento personalizado Vamos a llamar a esto muerte, y vamos a
llamarlo desde aquí. Ahora, vamos a sentir la muerte. Lo que vamos a hacer es
en un medidor en el lugar. Y la ubicación sería
nuestra brecha en p. ubicación. P metro sería una explosión. Entonces tenemos la explosión P, y va a ser
una escala b hacia arriba, cinco. Permanezcamos autodestruyendo
y activemos de forma automática. Ahora, lo siguiente que
tenemos que hacer es conseguir nuestro piso de baldosas y
restablecer su material, no restablecer su material. Cuando vamos a nuestro azulejo, cuando tenemos una puerta, tenemos un sge en el suelo Lo que queremos es hacer desaparecer
al sge. Para ello, sí necesitamos
una referencia de mosaico. Entonces, en nuestra puerta principal, vamos a crear una
variable de mosaico para llamarla pila. Va a ser
del azulejo tipo P. Seré un objeto de
referencia compilar y guardar, y vamos a ir
a nuestro laberinto que estamos desove W es nuestro laberinto Aquí está, generador de laberinto. Cuando estamos desove las puertas de la
cabeza en nuestros apoyos, dueño, que es Sí, este, el complejo Tenemos que hacer la instancia
variable editable y exponer en spawn Entonces ahora en nuestro laberinto, el utilete donde
engendramos, esto no es todo. Cuando engendramos la
puerta del infierno, ¿compilé esto? Yo no compilé.
Queremos refrescar esto, y ahora tenemos nuestro azulejo. Entonces, ¿qué
conectas para el azulejo? Bueno. Nosotros sí tenemos por aquí que estamos
tomando las coordenadas. Entonces voy a
conectar esto aquí. Y vamos a
compilar y guardar, y ahora tenemos nuestra
referencia a nuestro azulejo. Entonces vamos a conseguir nuestro azulejo, el azulejo, vamos
a conseguir el piso, y material o elemento cero
porque en el elemento cero, tenemos la C y
vamos a ponerla en vacío. Se necesitarían algunas
acciones más sobre la IA. Pero cuando tengamos nuestra IA,
vamos a estar completando. Básicamente, cuando atacamos a la T, lo que hará la IA es
configurarla automáticamente en estado para atacar, por lo que buscará al
jugador y atacará al jugador. Y al morir, básicamente
lo pondremos en libertad. Vamos a crear un comportamiento
que se escapen, y tal vez en algún
momento
te vuelvan a cambiar y o empiecen a
patrullar en algún lugar al azar, pero veremos el
Desde que tenemos nuestra muerte En realidad tenemos que destruir
también al actor. Porque si no
destruimos actor, entonces nuestra puerta
seguirá ahí. Ahora, compila y guarda. Tenemos una porción de daño
que puede destruir esta puerta. Vamos a probarlo. Boom.
Sí, funciona. Genial. Creo que esto va
a ser por éste. Te voy a ver a la siguiente. Adiós.
94. Sistema de animación y orientación de balas Hellgate: Hola, y bienvenidos al Taller de
Diseño de Juegos bajo el motor cinco Convocatorias de
Creación de Pz de Acción de
Calabozo Procesal Creación de Pz de Acción de
Calabozo Anteriormente, terminamos con nuestro mecánico de Hell gates Health. Agregamos el evento de cualquier daño, y creamos dos variables, salud
MX y salud portadora. Seguimos el procedimiento para abstraer la salud y verificar
si estamos muertos o no. Si estamos muertos, estamos ejecutando
nuestro evento personalizado de muerte, que genera un medidor e, pone el material del
suelo a cero a nada,
el material CG, y
luego destruye a nuestro actor Si no estamos muertos, estamos
reduciendo nuestro tamaño en una quinta parte, eso no podemos verificar
porque en realidad, no
podemos verificarlo si
cambiamos el daño de nuestra, ge porción. Entonces, si pongo el daño a ser
¿cuánta salud tenemos? Nosotros sí tenemos cinco de salud. Lo que vamos a
hacer es llegar a un daño, y vamos a poner
el retraso de 2 segundos. Vamos a hacer esto
un poco interminable. Pero podemos detener el tiempo de juego cuando
queramos 2 segundos para ello. Encontremos una puerta del infierno. No hay puerta del infierno. Es bueno que a veces
empiece sin una puerta infernal. Presiona una porción de salvia. Obtener No, no lo hace. Porque esto no es davibl. Vamos a promover esta
veble temporal. Después comprobamos por la sucursal. No dice nada más. Yo voy así por aquí. R. Vamos a revisar 12, tres. Sí, se está haciendo cada vez más pequeño
y apretado. Entonces funciona.
Volvamos a nuestro personaje. Eliminemos esta variable.
Vamos a conectar esto a. Vamos a esta demora. Sentemos la variable
también de variables, compilemos y guardemos, y
volvamos a nuestra puerta él. Ahora, sigamos
haciendo la puerta principal. Ahora, empiezo a jugar. Vamos a necesitar
hacer algunas cosas. Pero primero, vamos a
crear la bala que
va a desovar la puerta l Vamos a ir a planos, vamos a crear una nueva
carpeta. Llamemos a esto ab. B. Ener y crear
un nuevo plano. Vamos a mecanografiar actor, va
a ser BP, bala de puerta L. Ahora vamos a abrirlo.
Vamos a traerlo aquí arriba. Dave, Lo primero que debemos
agregar es sistema de artículos. Oh. Vamos al contenido, Busquemos ferrocarril. Que vamos a
utilizar este sendero primario. De hecho, vamos a duplicar esto. Entonces tenemos rastro primario uno. Vamos a entrar en este sendero
primario uno. Cambiemos la vida del color de la
escala. Ir a iones, puntos de
curva constante, y cambiemos todo a algo amarillento, rojizo Hagámoslo misivo. Esta una copia este Uno, copia pegando disponible En realidad, ¿y si
lo cambiamos a vector constante, y lo hacemos rojizo Mejor cambiar a
vector constante, de todas las tangentes, va a ser un poco más Constante, no va a
cambiar tanto, pero va a estar bien Y 11 aquí. Y cambiemos el
color inicial o algo rojizo. 55 un poco. R. Sí, esto es bueno. Vamos a ahorrar. Cierra esto, vamos a volver
a nuestra bala de la puerta del infierno, y vamos a agregar
cascada, y aquí está. Ahora, necesitamos una colisión
colisión, aquí necesitamos. Pre colisión. Vamos a bajar un
poco más la fiesta. S. La colisión no debería ser
hijo de la partícula. Por colisión debe ser
hijo de la podredumbre predeterminada. Eso está bien. Creo que ve aquí. Hagámoslo mover. No, primero necesitamos optimizar un
poco de la esfera. Vayamos a colisiones
de la esfera. Comprobemos el átomo, y vamos a
ignorar todos excepto los estanques. Compilar y guardar. Ahora vamos a hacer que se mueva. Lo que vamos a necesitar es un objetivo porque
vamos a cronograma desde nuestra posición hasta
el objetivo para tener
a ritmo de tiro
de viajar. Y lo que hacemos va a
conseguir la ubicación de nuestro actor. Pero el actor, no
queremos que sea nosotros mismos. Queremos la pata del jugador, así que vamos a poner al jugador para conectar esta ubicación de
obtener actor. Y lo que vamos a crear es una caja
alrededor del jugador. Al igual que, a algunos de los tiros le faltará el
jugador a propósito. L obtener disparos de izquierda y derecha, algunos de ellos van a
ir al jugador, pero la mayoría de ellos van
a ir de izquierda y derecha. Oh, vamos a hacer
un menos digamos 100, digamos que estamos
apuntando al piso. Y entonces
vamos a estar obteniendo un punto aleatorio en el cuadro delimitador Un área alrededor de nuestro jugador. Vamos a establecer este 200 201, y vamos a hacer una selección. Porque como decíamos, algunos de ellos estarían yendo
a nuestro jugador. Y vamos a poner esto
en la ubicación del actor. Aquí vamos a poner un
tirón aleatorio algunos de ellos están
apuntando a nuestro jugador, algunos de ellos están
apuntando a otra parte, y este será nuestro objetivo. Entonces voy a promoverlo a variable y llamarlo target. Voy a conectar
esto en comenzar a jugar. No necesitamos los otros dos, los
voy a eliminar. Consigo esto un poco más bajo. Y ahora necesitamos la ubicación original de
los actores. Entonces vamos a
conseguir la ubicación del actor. Voy a promocionarlo a ubicación original
variable. Y ahora necesitamos la
línea de tiempo, así que agrega timeline. En este momento, vamos
a hacer algo diferente. Vamos a utilizar
dos vías de flujo, una de ellas para
controlar la distancia, y la otra para controlar la altura de nuestro proyectil Entonces, entremos en la línea de tiempo. Agreguemos dos pistas de flujo. Podríamos hacerlo con
una pista vectorial, pero solo usemos
dos vías de flujo. Creo que es más claro
lo que hace cada uno, y es más fácil configurarlos. Pero el primero
sería 00.0 y valor cero, y el segundo sería ¿cuánto tiempo debería
estar viajando nuestra
bala Digamos en algún lugar por aquí, sea lo que sea 0.85 A lo mejor eso es demasiado 0.8. Punto cero 0.8.
Quiero el cercano al 75, así que 0.8 suena bien, y valoramos uno.
Encajemos esto aquí. Para la siguiente pista,
sumemos los puntos. El primero
sería cero, cero. El segundo
sería al medio tiempo, llamemos a medio tiempo
de 0.8 0.4 0.4. Ese sería uno. Y el último punto
sería 0.8 sobre valor cero. Ahora, vamos a llenar esto. Lo que quería decir es que
éste es el que está controlando nuestra distancia desde
el origen hasta el jugador, y éste estará controlando solo el eje Z desde
la altura de origen
hasta la altura original. Ahora, vamos aquí. Lo que vamos a
hacer es la ubicación a. Vamos a dejar vector. Vamos a conectar la ubicación
original con A. Y vamos a
conseguir nuestro objetivo. Y vamos a
sumar la altura que vamos a estar controlando
desde nuestra pista dos. Voy a hacerlo. Vamos a conectar
la pista dos aquí, vamos a conectar
la pista uno aquí, vamos a
conectar esta aquí. Y para los valores,
solo vamos a sumar 100 a Z. Cuando hayamos terminado
nuestra línea de tiempo, vamos a en un
metro en el lugar Y t. Esto es y. En un
metro en el lugar. Vamos a elegir
la explosión de partículas. Vamos a escalarlo para
escalarlo en realidad 2.5 0.55. Por la ubicación,
vamos a conseguir nuestro objetivo. Y luego vamos a este acto. Ahora, existe la posibilidad de que nos
destruyan antes de esto, que es cuando estamos
colisionando con el jugador No, hagámoslo. Consigamos nuestra colisión de esfera, comencemos a obtener el evento begin
over lap. Preguntémosle al componente. Si el componente tiene tachuelas P, vamos a aplicar daño al otro, que
es el jugador Voy a aplicar,
digamos p un daño, y luego voy a copiar
este medidor en el lugar. O aquí. No vamos a usar el objetivo. Lo haremos en la ubicación
del actor del otro actor. Realmente, podemos usar el resultado de
barrido y romperlo, y podemos usar la ubicación, la ubicación del punto de impacto. Para que podamos engendrarlo exactamente
donde queramos porque el otro actor le dará
el centro de nuestro actor Oh, vamos a usar
la ubicación del impacto, y luego vamos
a destruir al actor, y esto no nos importa porque el actor
ya está destruido. Creo que este es un buen punto de
parada para este. Vamos a
continuar en la siguiente. Adiós
95. Disparo de balas Hellgate y SFX ligero: Hola, y bienvenidos a
ganar taller de diseño, y real Engine five, Dungeon
procedimental, RPG de
acción, curso de creación En serio, terminamos
con nuestra bala de la puerta del infierno. Agregamos un efecto de partícula que cambiamos algunos
ajustes, básicamente, el cambio de
color de por vida a lo largo de la vida, que lo convertimos en una constante, y luego cambiamos
también el tamaño inicial. A continuación, fuimos y creamos nuestra bala de puerta de plano
que usamos una clase de actor, y agregamos esta partícula
y una colisión de esfera, que usamos act Si estamos colisionando
con el jugador, estamos obteniendo el
resultado de barrido de esta colisión, obtenemos el
punto de impacto preciso y engendramos pimter, y aplicamos un
daño al jugador,
0.1 de daño, y luego
destruimos Ahora bien, la forma en que se mueve este actor
es que en la obra de inicio, estamos almacenando una ubicación objetivo a través de la ubicación de nuestro jugador más un punto aleatorio alrededor de
los pies del
personaje básicamente. Y luego almacenamos la ubicación
original, y usamos una línea de tiempo
con un
punto muy rápido, de cero
a 0.8 para llegar al objetivo, y usamos las
diferentes series, usamos dos pistas de
flujo diferentes, una de ellas para cambiar la distancia y la
otra para controlar la altura. Usamos la
ubicación del actor del set para mover al actor. Entonces si no
alcanzamos nuestro objetivo, realidad no le
pegamos al
jugador, alcanzamos nuestro objetivo. Usamos la ubicación del medidor de desove
para generar una explosión, y luego destruimos actor Ahora, continuemos en nuestra puerta del
infierno y el
evento de inicio de juego para comenzar a crear
la mecánica de tiro. Así que vamos a utilizar
un evento de tiempo de nuevo. Y va a estar
buscando cada 0.3 segundos. El mecanismo de disparo rápido. Voy a crear
un evento personalizado. Vamos a llamarlo deber. Y usemos una rama decidir cuándo realmente está
disparando o no. Y sí tenemos la condición, sí lo
llamamos fuego. Vamos a usar esta
condición por aquí. Ahora bien, no siempre
queremos estar disparando. Aquí es cuando podemos disparar
cuando el jugador está al alcance, pero ¿el jugador está
en línea de visión? Esa también es una pregunta. ¿
Vamos a hacer un rastreo de línea? Por canal o canal Tamela. Y vamos a utilizar la ubicación del
actor para el arte. En realidad, vamos
a hacer lo contrario. Vamos a usar
la ubicación
o final del actor y no solo
la ubicación del actor,
la ubicación de malla
estática porque es un poco más alta que donde
las cucharas del plano Estamos empezando desde aquí. Estamos terminando ahí
en realidad no comenzando, nos vamos a
preocupar la ubicación Porque es un componente. Necesitamos la ubicación
de la palabra de la metáfora estática? Voy a conseguir p
y del pon, vamos a conseguir localización
porque el pon es actor. Voy a usar
eso desde el principio. Pero en realidad estamos
comprobando desde el jugador hasta la torre, ¿es visible? ¿Podemos pegarle a algo? S. ¿
Vamos a comprobarlo? Ese es el componente que estamos calentando, rompamos esto. Resultado de golpe. Ese es el componente que estamos
calentando al actor así que g E. H calentamos nuestra torre Eso es sólo si
calentamos algo. Primera pregunta, ¿
en realidad le pegamos a algo? Si calentamos algo,
¿tiene el g E? Si lo hace,
vamos a todos en clase. Vamos a dividir transformar. Vamos a conseguir volvamos a conseguir
la medida estática. Ubicación de Word. Sponse un poco más alto, y ahora tenemos que pagar sonido Ahora, para el sonido, no
tenemos un sonido para esto, pero hay un sonido en irreal que me parece
bien para este uso, no el mejor Vamos a ir al contenido. Y como puedes ver, no
hay contenido de motor. Vamos a ajustes y
seleccionamos ningún contenido del motor. Vamos a tener una nueva
carpeta que se llama motor. Ahora bien, no se recomienda
cambiar ni hacer nada en este contenido si no estás sabiendo
exactamente lo que estás haciendo. Porque puede estropear
el motor, pero no podemos usar un
sonido de ahí. Y vamos a usar
la ventana tkable. El cercano. Sí, ésta. Cerrar ventana de conversación. Y ahora tenemos nuestro fuego listo. Vamos a compilar y guardar. Yo no elegí una
clase, bala P. O aquí, elegimos un actor, que es P H gate Bullet. Vamos a compilar y guardar. Camino. Las cajas son enormes. Y no nos está disparando. ¿Por qué no nos está disparando? Vayamos a Puedo soportar esta
música. Mucho para pruebas. Vamos a ir
a nuestra puerta principal. Ahora, tenemos algunas puertas principales. Digamos que teníamos más. La forma en que lo podemos hacer es que
vamos a seleccionar esta. Rechazemos, seleccionemos esta, y podemos ir aquí, y podemos ver que está seleccionada. Veamos qué está funcionando. Está golpeando algo. No podemos E, ¿esta
clase tiene etiqueta? Debe tener en etiqueta. Sí. Porque nuestra pareja no lo hace ni. Hagamos una depuración en este rastro para endoprótesis al jugador. Vamos a mover al jugador
al lado de una puerta infernal. Estamos pegando al jugador. Esto es mientras
porque puede bien. Entonces este opuesto realmente no
funcionó. Entonces vamos a
hacer lo contrario. Vamos a partir de
la malla como gente normal. Nosotros solo vamos a demostrar
que lo contrario
suele estar bien también.
Esta vez, no lo es. Vamos a
cambiar al actor a,
y vamos a y vamos p. I. Ahora bien, esto pegándole al jugador
pero aun así no está disparando. Comprobemos y. ¿Qué? Debido a que estamos
comprobando por actor, necesitamos verificar el componente como
una T,
necesitamos algo de sonido
para una T necesitamos algo poder verificar si se está reproduciendo el sonido de
disparo. Tenemos fuego escupido. Derecha, eliminemos
toda esta depuración, para que podamos verla un poco más clara.
Vayamos a la esfera. Vamos a colocarnos ocultos en el juego. Dos. Qué más necesitamos
depurar líneas apagadas. Y solo por el bien de ello, vayamos a nuestro personaje y
agreguemos hacer un componente de audio. Hagamos este ambiente. Vamos a elegirlo para que sea
de ambiente sonoro. Creo que esto es todo. No estoy seguro. Sí, eso es. Ambiente, la Q, no el sonido, y se activará automáticamente para
activarse Vamos a revisar. Un ambiente p. no
tenemos una puerta infernal. Todo bien. Tener fuego rápido. Se queda un poco en el
suelo, y luego explota A lo mejor podríamos poner algún código
para eso, pero no vamos. Todo bien. Lo siguiente que debemos hacer. Noto que la
iluminación es un poco estática este ligero overs La ventana se ha movido. Esta luz de aquí es
un poco estática, y tenemos un código para la
luz para hacerla parpadear Está en nuestras antorchas. Vamos a nuestras antorchas. Son policías que cojan la antorcha. Voy a usar
este código por aquí. Regresa a nuestra
puerta infernal. La bala. Cierro la bala,
no la vamos a necesitar más. Puerta del infierno, y para poner esto aquí. Voy a poner una secuencia. Lo puse antes del evento del tiempo, para que podamos simplemente hacer estas
acciones seguidas. Derecha. Ahora, voy a ir
al semáforo. Voy a conseguir el color. Voy a ir a A, pegar. Voy a pegarlo y
cambiarlo un poco bien. Y tal vez más naranja aquí, y la luz
será de densidad. Lo tenemos 100 150 dicen al azar. No se puede hacer al azar en actualización, eso va a ser d e.
El rango será de 700-800 Hagámoslo más grande, y eliminemos algunos puntos. Vamos a quedarnos con esa.
Sí, está bien. Y vamos a comprobarlo. No hay puerta. Tendremos uno. Y si, ahora mismo, la luz , claro, es mucho
mejor.
Hace algo. Leer. Creo que esto
es para éste. Te voy a
ver en la siguiente. Adiós.
96. Widgets de ratón personalizados y malla renaciente: Hola, y bienvenidos a
Game Design Workshop y Real Engine five
Procesal Dungeon action RPG Creation Course Anteriormente, hemos terminado
con nuestra puerta del infierno. Completamos nuestro evento de rodaje, que utiliza un tiempo establecido por evento y desencadena
el evento de rodaje. Entonces estamos preguntando si
somos capaces de disparar. Si somos capaces de encontrar, lanzamos una línea de rastreo desde la malla
estática al jugador. Lo contrario
realmente no funcionó para nosotros. Y entonces estamos preguntando
si calentamos algo. Ahora bien, si es cierto, si calentamos algo, entonces
estamos preguntando si ese
es el jugador. Y si es así, estamos
generando una bala de puerta infernal, y estamos tocando un sonido También creamos nosotros no creamos. Copiamos pegado el
código de nuestras antorchas, lo que hace temblar la vida. Cambiamos un
poco la línea de tiempo, y cambiamos un
poco los valores. Entonces ahora, nuestra luz
de nuestra puerta infernal también como animación, básicamente. Oh, vamos a salvar esto. Creo que es hora de empezar a hacer algunas cosas más relacionadas con
jugadores. Oh, comencemos con el ratón. Vamos a
crear dos widgets. Uno para ellos para ratón
a sobre enemigos, y otro para que sean normales. Entonces vamos a
llamar widget de usuario. Vamos a seleccionar
widget blueprint, widget de
usuario, W G ratón normal Voy a copiar pegar
y nombrarlo W G mouse. Ahora, vamos a ir a la configuración de
nuestro proyecto
y buscar o cursor. Y aquí tenemos nuestros cursores de
software, que podemos anular
con algunos widgets Vamos a sumar dos de ellos. En realidad, no nos
deja añadir una segunda porque ésta tiene que ser única. Pero el primero
sería el predeterminado, y el segundo
sería el cruz suyo. Como puedes ver, estamos
eligiendo entre set list. Ahora, para nuestro default, vamos a elegir
el ratón normal W G, para el punto de mira,
vamos a elegir el ratón W G. Ataque, creo Ratón de ataque. Aquí está. Vamos a cerrar los ajustes
del proyecto. Ya no los necesitamos. Ellos guardan automáticamente el momento en que
hacemos algunos cambios, y vamos a abrir
nuestros dos widgets. Vamos a abrir el
ratón normal, traerlo aquí. Abramos también el ratón de
ataque. Para el ratón normal,
vamos a colocar un lienzo. Y vamos a usar una imagen. Y vamos a ir a nuestro
mage y establecer su tamaño en 90. Queremos que sea una caja, y para el ema pincel, vamos a seleccionar UI mouse. Debería haber un mouse de interfaz de usuario. Parece que jugamos
bastante y apareció. Así que vamos a elegir el mouse UI. Ahora, podríamos crear algún código
complejo y hacerlo rojo. Pero lo que vamos a
hacer es op the Canvas, volver a nuestro
mouse de ataque y pegarlo aquí y seleccionar el mouse
e ir a su tinte. Vamos a
hacerlo rojo brillante. Y ahora tenemos un ratón rojo
para apuntar en lugar de hacer cualquier tipo de código. No. Básicamente, Eso
es a partir de esta parte. Lo que hay que programar
es la parte que cambia de color cuando estamos
flotando a un enemigo Pero para eso, necesitamos cambiar algo de código primero en el controlador
del reproductor. Entonces no hagamos eso todavía. Lo que debemos hacer
es finalmente ir a nuestro personaje, cambiar el modelo. Entonces, dentro de nuestro personaje de arriba
hacia abajo, vamos a ir a la ventana gráfica Vamos a acercar
un personaje, y vamos a
seleccionar nuestra malla. Ahora, no vamos a ir
sobre demasiados detalles sobre animación y mallas porque sólo
vamos a hacer que funcione para nosotros. Va a estar usando
el carácter paragon, que está pensado para algo
para un uso completamente diferente Así que solo vamos a hacer
que el
personaje paragon funcione para nuestro conjunto de habilidades y nuestras habilidades y jugabilidad
deseadas Para nuestra malla, vamos a seleccionar
a nuestro renacido. Y como pueden ver, está en
una posición muy rara. Esto se debe a que estamos usando
el conjunto ym de dinero C, que necesitamos cambiar
al plano reverendo ym Y como pueden ver,
claramente cambió todo. Ahora, si compilamos
y
presionamos play, veremos un problema en
el carácter de ingresos. Vamos a abrir el carácter de
ingresos. Aquí hay algún código que hoy en día
está obsoleto. La forma en que resulta esto ya
no existe en
la configuración del proyecto. Entonces vamos a eliminar estos
eventos que plantean un problema. Y vamos a compilar
este plano y guardarlo, y vamos a presionar play Entonces ahora tenemos nuestro
personaje renacido en nuestro juego. Pero nuestra arma se extiende
constantemente, lo cual es algo
que no es muy agradable. Así que arreglemos eso. También voy a
bajar el sonido porque vamos
a estar probando mucho. Oh, vamos a abrir nuestro plano de animación de
personajes. Vamos a abrir el acto de malla esquelética
renacido porque la persona está Tienen todos los
talones por aquí, que podemos ir al plano de animación o
al montaje de escenario
a nivel, o al Podemos ir a cada categoría. Entonces ahora mismo, voy
a ir al plano, pero no quiero el aparejo de
BP renant Quiero el plano de
animación renacido. Voy a seleccionar
esto y abrirlo. Ahora mismo, estamos
dentro de la locomoción, que está dentro de la gráfica de
animación, que determina en
qué animación reproducir Antes de comenzar a
configurar la animación, vamos a Evenra La razón por la que recibimos un
error a un personaje que no
estamos usando el personaje
renacido es porque hay todos
estos moldes aquí en animación
inicializada del blueprint del
evento para lanzar al Entonces como tiene una
referencia dura, un casting, en realidad, no una referencia dura,
yo hago referencia a eso, así que cuando presionamos play, comprobó si esto
compila o no Y no lo fue. Entonces,
voy a eliminar esto porque no vamos a necesitar la animación inicializada No necesitamos cuando el auto BP sens bla, bla,
bla. No necesitamos esto. Y no hacemos esto y no lo
hacemos el
montaje llano al principio,
que es el intra montaje, y creo que
no necesitamos los
notificadores de animación de Vamos a crear el nuestro propio probablemente. Yo también voy a borrar esto. Y la forma en que vamos
a estar animando es que vamos a estar
tocando montajes De hecho vamos a crear un enorme gráfico de animación con
mucha funcionalidad. Entonces, en nuestra locomoción, en gráfica de animación,
vayamos a la locomoción Tenemos la locomoción de
tierra base, que luego se divide para
compensar anim a las ranuras de la parte superior del cuerpo, y hace algunos planes raros que no
vamos a usar mucho Entonces pasa por
todo esto y
nos da la pose de salida. Y lo que vamos
a hacer es ir al interior locomoción
terrestre y
cambiar el ralentí de inactivo, que es esta animación que
tiene el cañón extendido buck Entonces no necesitamos este ralentí
con el arma extendida, necesitamos el bucle inactivo no de
combate. Y tenemos que jugarlo. Vamos a agregarlo aquí, y vamos a compilar, y ahora nuestro ídolo está con un arma abajo. Entonces volvamos,
y entremos en nuestro inicio de trote Ahora, tenemos nuestro inicio
jog forward, pero necesitamos de nuevo
el que no sea de combate Entonces vamos a conseguir que
no combates jog forward, que es inicio FWD, y vamos a seleccionar play, que si hacemos clic
en él, este Bueno, este es nuestro inicio de trote. Ahora, volvamos y
vayamos a nuestro jog stop, que necesitamos de nuevo,
el no combate Entonces combate Jog W, y
vamos a jugar. Y esta animación tiene esta animación
muy bien encabezada. A veces retrocederá
porque no
tenemos un sistema completo,
pero está bien. Por último, vamos a correr, y aquí podemos
ver un espacio de mezcla, que en realidad es
multidireccional para forro y todo Ya que no vamos
a necesitar todo esto. Volvamos.
Vamos a eliminar esto. Nuevamente, vamos a
usar el jog forward no o Dog forward, non combat, entre play, que es esta
animación constante corriendo Ahora, vamos a guardar
volver a nuestro juego. Presionemos play. También
tenemos el nuevo ratón. Y puedes ver
ahora mismo tenemos una mejor animación para andar y correr con
águila. Yo uso una porción de Murciélago.
Yo no tengo uno. Creo que esto
sería por éste. Te voy a
ver en la siguiente. Adiós.
97. Animación de impulsos físicos y ataques cuerpo a cuerpo: Hola, y bienvenidos al taller de Diseño de
Juegos y motor
real cinco procedimientos Dungeon action iz llamadas de
creación Anteriormente, creamos nuestros
widgets para nuestro mouse. Creamos el widget de ataque del
mouse y el widget normal del mouse, y los agregamos en la configuración de
nuestro proyecto a nuestro software de cursor a
nuestros cursores de software Entonces entonces procedimos a
sumar nuestro modelo Aragón
a nuestro personaje Y cambiamos la clase de
animación para que fuera el plano de
animación del plano renacido y la malla
esquelética por el Se procedió a
hacer algunos cambios en el plano de animación, cual fuimos al gráfico de animación dentro
de
la locomoción terrestre, y cambiamos en el Jog start jog stop y run a Ahora, procedamos
haciéndome atacar. Pero antes de hacer eso, me di cuenta de que cuando estamos
dañando con la poción de rabia, no
estamos aplicando ningún
impulso a los elementos de física, que como habilitamos que
los elementos
de física se superpusieran por
la colisión de rabia, se superpusieran por
la colisión de rabia,
entonces deberíamos hacerlo Entonces, antes de esta rama aquí, vamos a poner una secuencia. Y vamos a poner una rama, y vamos
a copiar en realidad, no
queremos que el actor tenga tirón Es un componente.
Nuestros objetos de física, las cajas son componentes. Entonces vamos a ir
a componente y tiene remolcador un componente tiene remolcador Y la etiqueta
será H. Si lo hace, vamos a obtener el
componente y a pulso. Si es verdad. Vamos
a necesitar más espacio. Un poco más alto.
Para nuestro impulso, vamos a necesitar
dar algún número. Lo que vamos a
hacer es dividir este vector en x y z. Vamos a obtener una carga
aleatoria en el rango. Y vamos a duplicar esto dos veces dos veces tra. En realidad entre los dos primeros, vamos a seleccionar en
base a un bul aleatorio. Esto se
conectará en x e y esto se conectará en muerto. Ahora, para los valores,
vamos a poner menos 220. Y en realidad, esto
tiene que ser menos 260, digamos, y esto
debería ser menos 220, porque el máximo
está más cerca de cero. Entonces este valor, ya que
estamos en menos, este debería ser menor que este. Y hagamos lo positivo aquí, que sería 220
mínimo y 260 máximo. Y para el impulso de altura, pongamos 200 a 300. Y ahora, teóricamente, comprobemos también el cambio de
velocidad Que lo que hace, básicamente, es como amontonar
la masa del objeto,
si eso tiene sentido, porque los elementos de
física tienen Pero es un poco más
complicado que eso, pero consideremos más o menos
que hace eso. Así que vamos a jugar. Encuentra algunas cajas
de nuestro inventario. Sí. Se están moviendo,
están recibiendo un impulso. Ahora, vamos a usar este código también en
nuestro ataque masculino. Pero vamos a copiarlo y
pegarlo en ese momento. Ahora, para crear un ataque A M, primero
tenemos que hacer algo de
pre trabajo. Lo que vamos a hacer es ir a nuestra carpeta de
blueprints en
nuestra carpeta de enumeraciones y
crear otra enumeración, que va a ser
el estado del jugador Ahora vamos a tener la
mayoría de los estados, todos los estados
básicamente en enumeración. Pero se recomienda
tener más de uno. Vamos a llamar a
este jugador estado. Vamos a abrirlo.
Tráelo aquí, y voy a agregar dos estados. Creo que el exacto. Llamemos así al primer estado. Llamemos al segundo estado. Normal, todo el tercer estado
A o cuando estamos apuntando, llamemos al quinto,
al cuarto estado. Stan, porque cuando
nos van a golpear, queremos que suceda un Mini stan, y llamemos al último estado M. La forma en que
vamos a usar esto es principalmente para no hacer las cosas
mientras estamos en otro estado. Lo siguiente que vamos
a hacer es ir a nuestro personaje y crear una función
para cambiar el estado. Entonces vamos a
llamarlo cambio ocho. Para la entrada, va
a tener un estado de jugador e. Esta fecha. Vamos a crear una variable
de tipo player state. Llamemos a esto también
jugador ocho. Paté. E jugador estado. Y
vamos a duplicar esto. Y vamos a
llamarlo Jugador estado edad. Oh, tenemos que estar poniendo
estas cosas aquí. Lo primero que
debemos hacer es establecer nuestro estado de jugador
al estado anterior. Y lo siguiente que hacemos es establecer nuestro jugador el estado del
deseo que está entrando. Ahora bien, no creo que
vayamos a usar el estado anterior,
pero ¿por qué no tenerlo? Lo siguiente que debemos
hacer es agregar
el estado a nuestro controlador de arriba
hacia abajo. Y debido
a que vamos a estar usando la referencia del controlador a menudo, vamos a empezar a jugar. Y aquí que estamos guardando
el modo de juego abajo. Que X y Maro hagan lo mismo
con el controlador del reproductor. No, vamos a
conseguir jugador y elenco. Abajo para que sea un elenco puro. Promover esta variable. Conecta esto y ahora
tenemos una referencia
a nuestro controlador. Ahora vamos a nuestro controlador
y creamos una variable. Llamemos a este jugador ocho. Jugadores ocho. El estado del jugador B
ya es una variable. El tipo será e estado jugador. Compilar guardar. Volvamos
a nuestra función, y estado. Vamos a obtener nuestra referencia de controlador de arriba
hacia abajo, y vamos a los jugadores estatales. Ocho nuestro estado. Oh, ya terminamos con esto. Y lo siguiente que
debemos crear es nuestro montaje de animación para M
Montage Oh, vamos a establecer para st, que es la animación que
queremos usar, y vamos a hacer click
derecho sobre ella y ocho montaje de animación Ahora bien, ¿qué es un montaje de
animación? Vamos a pintar por un segundo. Oh, consideremos que tenemos nuestro personaje y a nuestro
personaje corriendo. Esta es una animación. De todas formas. Entonces nuestro personaje
corre constantemente. Y de pronto
queremos jugar un ataque. Y digamos que no queremos
cambiar de carácter
desde el desperdicio hacia abajo. Queremos que esta parte
sea la misma. Entonces podemos usar otro sistema
llamado slots. Ir demasiado grande. Pero podemos usar otro
sistema llamado slots, y podemos decir que
podemos decir simplemente reproducir una animación sobre esta parte o mezclarla con la parte de abajo. Y aquí donde están los montajes. Como estamos diciendo,
toca esta animación. Llamemos a ataque uno, y él extiende, por ejemplo, su brazo así y para darle un puñetazo. Ahora, vamos a utilizar
hasta esta parte para nosotros, pero los montajes tienen habilidades hacer un ataque,
también, por ejemplo,
después, y lanzar este puñetazo si el jugador sigue
presionando o si no Y básicamente, es
una herramienta que nos ayuda a crear más potentes y
no solo más potentes, sino que nos permite
controlar animaciones complejas. Por ejemplo, combos de ataque, movimientos
especiales, que pueden
ser activados por el juego De todas formas, vamos a entrar en esto. Entonces, estamos creando nuestro Montage. Abramos nuestro montaje. Oh, queremos en algún lugar de
aquí, por ejemplo, jugar
para crear una partícula o para reproducir
otra animación. Lo que haríamos es
crear algo llamado
Vamos a hacer click derecho. En realidad, tenemos que hacer
clic aquí en notifica. Esta es la barra del notificador. ¿Y qué es un notificador? Básicamente, es un marcador que podemos colocar en puntos
específicos dentro la animación para
desencadenar algunos eventos. Entonces, coloquemos un modificador de
animación. En algún lugar de aquí.
Todo esto aquí, una notificación, y vamos
a un nuevo notifique llamarlo. Bueno, no es
partícula. En realidad es un yo atacar nuestro plano me
que vamos a crear, pero llamémoslo partícula Ahora bien, si tuviera otra
animación aquí dentro, como puedo traerla. Puedo traer otra animación. Ese fue un mal ejemplo. Lo que vamos a hacer aquí dentro. Y lo que vamos a hacer
aquí dentro es que vamos
a crear un notificador, que en realidad es una marca, un punto en el que podemos desencadenar algunos eventos que
queremos que algo suceda Podrían ser sonidos.
Podría ser otra animación. Por ejemplo, si
traigo una animación. Ahora esta es la misma animación. Pero si traigo Incluso
la misma animación, y quiero decir, hazlo de nuevo. Yo necesitaría alguna cosa al notificador para explicar cuando
vamos en qué animación Lo que vamos a hacer es
por aquí, vamos a crear
un notificador nuevo Vamos a llamarlo temprano. Ta. Y ahora tenemos aquí
este notificador, cuando esta animación se coloca
aquí, desencadena esto Hay una manera de encontrarlo
realmente aquí. Sí, aquí no. Esta es
la gráfica de animación. Lo sentimos, el gráfico de eventos en para estar en el gráfico de eventos
en la parte de programación, no en la parte de animación.
Sea esto es un evento. Es una cosa de programación, así que
mi evento me notifica ataque. Y esto desencadenaría
en ese momento. Pero como sólo
tenemos un notificador, hay otra manera de llamarlo. Y sólo para
demostrarlo por ahora, vamos a
conectarlo en la siguiente lección. Vamos a Pen gra en
nuestro personaje de jugador. Vamos a crear teclado espacial. Vamos a usar el espacio del teclado. Nosotros hacemos el ataque M. Entonces, si las jugadas
tenemos esto notificado, comience
y luego notifique al final, y obtenemos nuestro nombre notificado para que podamos cambiar por aquí. Hay muchas maneras de
ir para las animaciones. Escogeremos unos específicos solo para que nuestro personaje funcione. Ahora, creo que este es un buen punto de
parada para este. Vamos a seguir
construyendo nuestro espacio y tocar montaje y
toda la lógica de nuestro ataque Mi y crear también un plano que será nuestro ataque Mi en
la siguiente lección Adiós. Nos vemos entonces,
98. Colisiones y efectos de planos de ataque cuerpo a cuerpo: Hola, y bienvenidos a
Game Design Workshop y Real Engine five
Procesal Dungeon action RPG curso de creación Anteriormente,
creamos una fecha personalizada para nuestro jugador usando la numeración
y teniendo nuestros estados Y procedimos a crear un estado de cambio a nuestra función de
carácter Eso se llama estado de cambio, y estamos almacenando el estado
anterior en una variable. Estamos configurando el nuevo estado, el nuevo
estado del jugador al estado, y también estamos pasando
esta información a nuestro controlador de arriba hacia abajo de que
creamos el
estado del jugador, otra variable. También creamos el estado
anterior y
el estado del jugador en la variable de personaje
del jugador. Ahora, luego procedimos a
crear nuestro montaje de animación, y creamos un modificador de
animación Eso va a notificar a nuestro me ataque
cuando a una nuestra partícula, que dijimos, no
va a ser una partícula. Va a ser un plano
que va a tener cierta lógica. Ahora, vamos a cerrar este montaje. Vamos a crear nuestro yo actor. Vamos a ir a la
carpeta Habilidades, hacer clic
derecho y crear
una nueva clase de blueprint Vamos a ser actores,
y llamémoslo BP. No vamos a
programarlo ahora mismo. Vamos a ir directo
a nuestro coleccionista. Vamos a ir
a nuestro evento espacial, evento Bace ball, y
vamos a cambiar
según nuestro estado Vamos a conectar
esto en prensa. Aquí es cuando vamos a
poder hacer un ataque de mell. Y el único lugar al que queremos
poder es cuando estamos normales. No, entonces lo siguiente que
vamos a hacer de lo normal es cambiar de estado. Vamos a traer nuestra función de estado de
cambio. Voy a ponérmelo a mí. Entonces
esto me cambia nuestro estado. Ahora bien, si sigo presionando la
barra espaciadora, no se reactivará. Ahora bien, lo siguiente que
debemos hacer es pagar un sonido. Vamos a tocar sonido dos d, y vamos a
elegir por un sonido el fuerte esfuerzo swing. Esfuerzo. Vamos a usar
el esfuerzo cantar. La razón por la que
vamos a usar esto es porque tiene un montón de ala
diferente ¿Qué es este
diálogo de diálogo también? Ah. Sí, sonará diferente
cada vez que atacemos. Ahora, vayamos a nuestro reproductor, y después de nuestro sonido, deberíamos tocar nuestro montaje Y para jugar a Armona, necesitamos un componente de
desorden esqueleto. Esto es necesario. Porque ¿quién toca este
montaje? Esto es importante. Pero aquí nos vamos a conectar. Y para el armontaje, vamos
a elegir nuestro ast montaje. Ahora, antes de decir que
podemos usar el
inicio notificado o cualquiera, se activará siempre que se utilice
algún notificador Y como tenemos
uno, podemos simplemente usar esto sin ningún nombre de
notificador y decir, acto class, Y esta
sería nuestra BP Melly O la transformación, vamos
a dividirnos y necesitamos una ubicación. Vamos a conseguir nuestra malla. Obtener ubicación. Ubicación de futbol,
¿qué significa eso? Creo que estamos usando
esta malla esquelética porque aquí es de donde podemos
obtener una ubicación de fútbol Si vamos a nuestro esqueleto, volvamos a la persona y
vayamos a nuestro esquelético Podemos ver que hay un montón de cosas
extra como ¿Qué
es un slot básicamente? Quiero decir socket, no una ranura.
Entonces, ¿qué es un socket? Podemos ir a aquí estamos, y ojo hocico dos Se puede ver que aquí también hay un
socket, que es algo a lo que
podemos adjuntar algo, como una ranura en la que
podemos colocar cosas. Y no necesita
estar exactamente en la báscula. Como pueden ver este enchufe de
aquí está muy lejos, lo que podría hacer por nosotros. Pero creo que este es el
brazo equivocado con el y r para encontrar el zócalo y R en nuestro montaje Sí, es la otra r, el brazo derecho, no el izquierdo. Entonces necesitamos y r, arma r. a aquí
estamos en r derecha, nd R uzle uno Usemos este bozal. Nombre del socket por aquí. Puntaje muscular uno. Volviendo
a nuestro personaje y usar el nombre del socket. Lo cual no hice correctamente. A veces el control C
simplemente no
quiere operar. Hocico uno Esto le dará cualquier
posición de palabra que nuestro socket
esté en ese estado. Lo siguiente que haremos es adjuntar nuestro meacor a nuestro hd Y así nuestro ataque me
sigue un poquito h. Vamos a
hacer toque de aduch Al actor. Porque estamos engendrando
un actor y
queremos adjuntarlo a nuestro actor Y vamos a mantener la palabra. Esto quiere decir que cuando giramos
nuestro ataque también gira, y parte actor sería. A lo mejor podemos abusar un
poco de nuestro ataque, nuestro ataque de mayo, y
simplemente dar la vuelta cuando estamos
atacando y golpeando a muchos enemigos. Oh. Ahora,
lo único que queda por hacer es crear un enfriamiento
de la frecuencia con la que me podemos. Oh, vamos a cambiar de estado
aquí después de 1 segundo. Entonces quiero poner un retraso. 1 segundo. Y
cambiemos de estado a lo normal. Esto sería un
problema si permitimos que algo más suceda
mientras estamos enviando un ataque por correo, porque digamos, por ejemplo, soy estado AM y
presiono mail attack, y luego vuelvo al estado
AM instantáneamente. Después de 1 segundo,
cambiará mi estado AM a normal. Pero ya veremos cómo se planifica
esto y
haremos los cambios correspondientes. Vamos a abrir nuestro plano principalmente de
ataque, y nuestras habilidades. Agreguemos una esfera de colisión. Por colisión. Hagámoslo 100 y radio. Además, tenemos que moverlo
un poco hacia adelante. Uh, tal vez aquí estaría bien. Ahora bien, por qué
lo movemos hacia adelante porque el centro del plano
es donde engendraría Entonces necesitamos que esto aquí no esté aquí porque eso se
superpondría con nuestro carácter. No nos importa superponernos
con un personaje. Así que en algún lugar de aquí
sería encantador. Ahora, lo siguiente que necesitamos
es una partícula en cascada. Para el sistema de partículas, vamos a usar
el primario renacido Un montón de primarias rendidas. Queremos que el carácter
primario de ella renacido. ¿Verdad? Hagámoslo un poco
más grande no en todos. Voy a hablar esta
x en una, y en la dos. Oh, este será el artículo. Punto. Más grande. Vamos a verlo
como se ve en el mapa. Ahora, lo siguiente que
agregaremos es una luz puntual. Haz que produzca
algo extra ligero. Dejemos arriba la zona cuando
estamos simplemente atacando. Bueno, básicamente
iluminó un poco el piso. Vamos a conseguir luz puntual, vamos a
ponerle radio dos. Y vamos a
colocarla cerveza poco más baja. Aquí. Ilumina nuestra zona y
un poco adelante, también. No demasiado porque no
quieres ver a nuestro personaje, algo comenzando aquí, y
luego también comenzando aquí. Quieres ver como
empieza desde cuenca. Tenemos que cambiar el color también a algo rojizo, fino. Y vamos a programar
esto puede atacar. Ahora, solemos usar destruir actor cuando
queremos algo. Pero esa también es otra forma. Vamos a clase por defecto. Eso es para toda la vida. Podemos ver que tenemos esta
variable por aquí, cuánto tiempo vive este actor. Ero es para siempre.
Pero si ponemos 0.3, por ejemplo, entonces esto
morirá en 0.3 segundos. Este actor, no
necesitamos destruir. No necesitamos
llamar a destruir nunca. Lo que tenemos que hacer
es ir a nuestra esfera. Que colisión, elegir personalizado. Voy a ignorar todo excepto el pon y
el objeto de física. En realidad, necesitamos
no ignorar por dinámica, es nuestra puerta infernal también. En la cápsula. Esta
es nuestra colisión. W dinámico. Oh. Ahora, nuestra esfera necesita
hacer algo cuando
comienza a superponerse. Cuando engendramos actores, aunque el otro actor ponga
dentro de la esfera, activará el evento
begin overlap. Oh. Tenemos que preguntar a otro actor etiqueta, y si el otro
componente hace una secuencia. Haz esto por separado.
Uno es para enemigo. El otro es
para P H. físico Dos ramas. no podemos sentir la parte
del Todavía no podemos sentir la parte
del enemigo porque nuestro macho no
haría daño al golpe
más grande de nuevo a nuestro final. Pero podemos hacer la física. Lo vamos a hacer para la física va a ir a nuestro personaje. Yendo a recubierto. Aquí. Solo necesitamos agregar
impulso, flotadores aleatorios Vamos a volver
por mi ritmo esto aquí. Es verdad. Un
objeto válido. También revisa esto. Por si acaso está
destruido o algo así. Aquí nos vamos a conectar. Y eso sería. En realidad, necesitamos
conectar el target también, ¿a quién le estamos comprando impulso? Y ese sería
nuestro otro componente. Vamos a probar porque
creo que vamos a tener un problema con la rotación
de nuestro mell. Yo soy. No pasa nada porque
hemos habilitado la entrada
en nuestro personaje. Wing the end of beg play, consigamos nuestra referencia del
controlador del jugador, y digamos Tal vez conecto la referencia del
controlador al controlador del jugador, objetivo sería uno mismo. Comparemos. C,
no pasa nada. Comprobaremos por qué?
Creo que sé por qué. Debido a que el estado
por defecto está muerto, pongámoslo a la normalidad
porque es nuestro primer estado. Crea la variable pero
no fue un estado de jugador. Volvamos a probar. Yo sí tengo sonido. No
tengo montaje. O salgamos. Pienso de nuevo,
conozco la razón. Vayamos a nuestro
montaje de reparto y vamos aquí, como dije antes,
necesitamos usar un slot Ahora mismo está en toda
la ranura y se dice que hacer a todo
el cuerpo. Ve y revisa nuestro gráfico de
animación. Veremos que esto no lo
va a cortar porque el cuerpo completo no
tiene básicamente una trama. Pero tenemos que hacer la ranura
de la parte superior del cuerpo. Vamos a ir a fontage, y a trazar Tam. Parte superior del cuerpo. Podría congelarse, pero
compilamos y guardamos. Se congelará. No lo hice. Hacer. Si dejo de jugar. Oh. En fin, vayamos
a nuestra jugada. Creo que esta vez
va a funcionar. Sí. Puedo ver explicar la
animación correctamente. Aunque la vista previa se congelara, eso no significa nada. Hay algunos problemas
con cambiar las cosas. Pero no estamos desovar
la partícula. ¿Es porque esto no está
desencadenando? Hay una posibilidad. Vamos a tog punto de ruptura aquí, ¿
o tal vez la palabra
ubicación de Mcle uno? O h, activando. Obtener un poco
de búsqueda del alma, y tipo de averiguar
cuál es el problema. Cuando creé una notificación
y agregué una nueva notificación, este es un notificador
esqueleto esqueleto, que es
diferente al montaje del plano Nuestro nodo aquí. Eso
en la descripción emergente, solo
funciona con
lay Montage Notify y no con esqueléticos Vamos a cambiar vamos
a eliminar este ataque M, y vamos a usar esto. Montaje Nodify.
Vamos a nombrar ataque M. Ahora funcionaría. Sí, podemos ver como
tenemos nuestro artículo. Pero como dije, sí tenemos un
problema con la rotación. No, para
arreglarlo, iremos a nuestro PPM. Vamos a ir
a nuestra obra de inicio, y vamos a la rotación de
st actor. Para la nueva rotación. Vamos a por qué una rotación. Y el inicio
sería jugador po. Vamos a hacer una
voy a conseguir el vector
forward también. Que es un vector que nos
dice dónde estamos
viendo, básicamente. Entonces start sería
la ubicación pont, y n sería la ubicación en la que nos encontramos más el
vector forward para darle una dirección. Otra rotación
debe ser fija. Sí, habla. No me gusta el
lugar donde está desove. Pero a mí me gusta en algunos. En primer lugar,
vayamos a nuestra tasa de juego. Bien, ya lo he cambiado. Deberíamos estar cambiando dos tal vez dos un enfriamiento. Ocho. Dejemos a la
velocidad enemiga en un punto. Cinco y de uno. Vamos a elegir la ubicación del
hocico dos. Creo que fue un
poco más adelante. Aunque esté en la mano equivocada en el momento en que estamos
reproduciendo la animación. Oh, no, no. Hocico uno fue Pero hagámoslo tri un
poco más tarde para nuestra mano. Vamos a tal vez. Dave. Esto mejor. La vida es un
poco demasiado intensa. Lo haría un
poco más bajo. Vamos a establecer. ¿Verdad? Vamos. Sí. Se ve bien. Si mueve las cajas, debería poder mover cajas. Cajas en esta habitación otra vez. Habitaciones. Es la caja. La hay, ¿verdad? Perfecto. Estamos moviendo cajas. Genial. Creo que esto
es para éste. Te voy a ver en
la siguiente. Adiós.
99. Mecánica de apunte estático y disparo: Hola, y bienvenidos a
Gain Design Workshop, n real Engine five, Procesal Dungeon action
RPG Creation Course Anteriormente, terminamos
con nuestro ataque a mí. Creamos un
montaje de animación que usamos un montaje notificador notificar para
notificar cuando queremos
pospone nuestro ataque me, y usamos también en el plano
del
personaje y el evento de la barra espaciadora para distinguir entre los estados
del jugador, así podemos atacar solo cuando estamos normales Cambiamos de estado
inmediatamente después. Tocamos un sonido,
tocamos el montaje y comenzar notificamos del montaje Nosotros engendramos nuestro VP puede atacar, y lo adjuntamos al actor Entonces esperamos 0.8 segundos y
volvimos a cambiar el estado. En nuestro plano Mi ataque, Comenzamos fijando la rotación del actor hacia
donde está mirando la pata Y luego creamos el componente comenzar
evento de superposición con una esfera
basada en nuestra colisión de esfera
que comprueba si el actor tiene es un
objeto de física o es un enemigo. Como decíamos, el enemigo se
llenará más tarde, y eso fue todo. Y nuestro
actor puede atacar está compuesto por una luz, una partícula
y una esfera de colisión. Ahora, sigamos
haciendo nuestro mecanismo de disparo. Pero para eso, primero, necesitamos hacer de un yo
un mecanismo de puntería. Pero para eso, necesitamos
hacer un mecanismo de puntería. Entonces cuando nuestro personaje
está estudiando todavía, está pasando turno, por ejemplo, podemos decir que el
personaje está apuntando, así el coleccionista puede disparar. Ahora pongamos aquí un comentario. Llamemos a esto M y vamos a crear nuestro pánico. Como dije, vamos
a usar el botón shift, así que vamos a usar el turno a la
izquierda en los teclados Y vamos a
crear un bulion que sabremos cuando el
turno esté abajo o no Vamos a estar
fijando y amigos. Ahora, lo siguiente que
haremos es encender el estado del jugador. Oh, ¿cuál? En ambos. ¿Cuándo vamos
a poder apuntar? Bueno, básicamente,
cuando estamos normales, o estamos apuntando ya porque la
animación no ha terminado, deberíamos poder apuntar de nuevo. Sin embargo, lo que haremos, conseguir nuestro movimiento de personaje
y cambiar una cosa. En nuestro movimiento de carácter, hay una orientación Aquí está orientar la
rotación al movimiento, lo que significa que
el personaje se está orientando hacia nuestro movimiento Cuando estamos apuntando, no
queremos
que esto esté sucediendo. Queremos que apunte a donde apunta
nuestro ratón. Entonces tenemos que apagar esto. Vamos a rotar a movimientos y luego
cambiar nuestro estado. Ahora, no voy a sentirme
forse uno porque sí
necesitamos el montaje para tocar
primero y luego hacer esto, ponerle esto encendido, mientras que aquí,
tenemos que poner esto en marcha
y luego tocar el Vamos a poner estado a a. para nuestra puntería, vamos a usar la pose que
teníamos al principio, que tiene el arma extendida. Vamos a crear
un montaje a partir de esto. E montaje de paciente BE Montaje. No necesitamos
en realidad, sí necesitamos hacerlo. Necesitamos establecer la ranura,
la ranura predeterminada para que sea parte superior
del cuerpo, nombre, parte superior del cuerpo. Ahora bien, si queremos restablecer esto, podemos simplemente re que hayas trabajado. A veces retrocede. Y ahora, ahora si voy a
otro lado y vuelvo a él, funciona, y nuestro
montaje de reparto también funciona Como pueden ver, lo que necesitamos de aquí es en realidad esta parte que de abajo a A. Oh. Volvamos. Vamos a página. Ahora, también hay un
jugador en Montage, que es un nodo clasificador
con menos opciones Pero usamos esto porque tiene muchas más
opciones al final. Ahora vamos a usar
la malla esquelética. Para el montaje, vamos
a seleccionar el inactivo. Ahora, para el
descenso de la puntería, vas a
hacer trampa un poco. Usa este montaje. Normal, y nuestra tasa
sería menos uno. Por lo que esto lo obligará
a jugar en reversa. Y después de esto,
vamos a cambiar nuestro estado
después de bajar nuestra arma, donde a medida que vamos
bajando el arma, ponemos a la normalidad. Lo siguiente,
debemos orientar hacia atrás nuestro movimiento porque
estamos en estado normal Ahora, aquí después, cuando
pusimos el ratón para que se ponga rojo, cuando estamos apuntando a un enemigo. También
lo pondremos para que se ponga rojo en
ambos en realidad se vuelven rojos cuando apuntamos y
se vuelven normales
cuando no estamos apuntando. Entonces cuando apuntemos, nuestro
ratón estará constantemente rojo, lo que indica que
podemos estamos listos para disparar. Vamos a probar esto.
Presionemos play. Presiono turno,
podemos ver nuestra pistola. Pero ahora mismo no estamos apuntando. Entonces empezó a moverse y
apenas apuntó hacia el arma. Pero como puedes ver, si cerramos
el sonido, es demasiado fuerte. Como puede ver, nuestro objetivo a rotación funcionó como si
no estuviéramos rotando hacia el
movimiento en este momento. Pero si lo apago, estamos rotando de nuevo hacia
nuestro movimiento. Ahora estamos amabunados, lo cual no está mal, pero no es
lo que queremos De todos modos, para que esto se solucione, necesitamos subirnos al controlador del jugador
y arreglar nuestro movimiento. Pero no vamos
a hacer eso ahora. Vamos a continuar con
nuestro mecanismo de disparo. Oh, vamos a hacer eso.
Goo a nuestro personaje Pongamos aquí. Oye. Vamos a ver el botón de la
casa izquierda para crear
nuestro evento de ataque. Lo primero que
haremos es cambiar y estado. Set. Cuando queremos
atacar, estamos apuntando. Oh, vamos a hacer una
pregunta. Es una rama. ¿Ya estamos atacando? Voy a promover
esta variable, y llamarla un ataque. Porque si
ya estamos atacando, no
deberíamos volver a atacar, esto debería ser un tiempo de reutilización, de
lo contrario nuestra pistola
estará encapsulando como una
ametralladora lo más rápido que podamos hacer clic Oh, si no estamos atacando, entonces vamos a
poner el ataque a la verdad. Lo siguiente que vamos a
mí es tocar nuestro montaje. Esta vez, ya
tenemos un montaje, se llama primarificador
hecho montaje y algunos notificadores que
no vamos a estar usando, Y llevemos nuestra malla. Aquí. Ahora, lo siguiente que vamos
a hacer es atravesar nuestra bala. Y antes de hacer eso,
vamos a crear una
función llamada spa. Bala. Nosotros usamos esto. Pero ya no vamos
a usar esto. Lo que vamos a hacer es
completar nuestro mecánico ing. Oh. Cuando toquemos
montaje, vamos a spa Bala. Oh, lo siguiente que necesitamos para hacer el reset ho es atacar a ba. Necesitamos un
enfriamiento. Entonces pongamos un retraso de digamos punto. Y tenemos que reiniciar. Voy a crear
un evento habitual. Y este reinicio. Tira de aquí. Esto necesita cambiar
en función del estado del jugador,
porque por ejemplo, queremos hacer otra
cosa cuando
estamos apuntando y otra
cuando somos ataque normal. Por ejemplo, cuando
flotamos sobre un enemigo
y presionamos clic, es un final diferente que si presionamos shift y
comenzamos a disparar Ahora,
cambiemos Por supuesto, en ambos estados, no
necesitamos atacar. Pero cuando estamos atacando
normales, pongamos esto también a stat porque si nos
quedamos atónitos durante un ataque, deberíamos poder
reiniciar nuestro ataque Ahora bien, cuando estamos atacando normalmente o
cuando estamos iniciados, queremos bajar nuestro arma en caso de que
no estemos atacando de nuevo, como si coloco sobre
un enemigo y disparo, y luego un flotar, puedes mantener la mano arriba en la posición de disparo,
debería bajar Y para ello,
vamos a hacer trampa de nuevo
un poco e ir por un evento personalizado pistola inferior. Y vamos a
conectarlo a esta cadena de eventos porque eso es
lo que queremos que suceda. Si esto es cierto, realmente no
importa. Ya va a
Vamos a dejar que el set vuelva a hacer. Oh. Vamos a
llamar a arma inferior inferior. En ambas situaciones normales. Y eso sería una parte de nuestro ataque de
tiro con botón de puré izquierdo. Pero sigamos con la bala, que
es la siguiente parte. En nuestra siguiente lección. Adiós.
100. Plano de bala para jugador y visuales: O Hola, y bienvenidos a Game Design
Workshop y Real Engine cinco procedimientos Dungeon
action RPG curso de creación Anteriormente, comenzamos con
nuestra mecánica de tiro. Entonces, creamos el
evento AM con turno a la izquierda. Nosotros bajamos la puntería o AM no está abajo cuando estamos
presionando y soltando. Estamos cambiando con
base en el estado E. Estamos poniendo orientación
para el movimiento fuera, y estamos cambiando de estado a
AM y tocando un montaje, lo que lleva nuestro arma a
nuestro lado, por ejemplo Ahora, cuando soltamos, jugamos primero el montaje
para bajar el arma, y luego cambiamos
los estados de nuevo Entonces, antes de que
el set nos diga la espalda, sabemos que por lo menos hemos
empezado a bajar nuestro arma. Ahora bien, para ser honestos, este
conjunto orientar la rotación al movimiento es algo
decorativo por aquí, solo para demostrar
lo que significa que cuando estamos orientados en
base al movimiento, realidad
podemos dar la vuelta al
personaje, donde cuando no lo estamos, el personaje se mantiene estable
y es más como bombardeo. Déjame bajar un poco el
sonido. Esa es la diferencia
con esta variable. El uno es básicamente estrafeo. El otro es seguir la
orientación al movimiento, seguir la rotación al movimiento. Bueno, para nosotros, lo que
vamos a hacer es que
vamos a estar
rotando constantemente donde está nuestro ratón. Entonces esto en realidad
no se necesita eso. Pero si se queda aquí, no afectará a nuestro código. Ahora, a continuación, queremos usar
nuestro botón izquierdo del ratón. Para volver a crear una cadena de eventos basada en el estado de
nuestros jugadores. Entonces seguimos seguimos con hacer una pregunta
si estamos atacando, y si ya estamos atacando, como si estamos disparando, no vamos a hacer nada. Pero si no estamos disparando,
vamos a disparar. Entonces dijimos atacando a verdad, jugamos el montaje de
tiro que creamos En realidad, no
creamos esto estaba existente, que es filmar. Y luego procedemos con nuestra función spawn bullet
que dejamos no llena Y luego después de un retraso de 0.65, reiniciamos el ataque para que
podamos volver a disparar. Pero cuando estamos apuntando, no
estamos bajando el
arma, que es un evento. Creamos y
pirateamos nuestra forma de crear un nuevo código y lo usamos
en el turno liberado, que es nuestro cañón inferior Ahora, sigamos
llenando esta función,
y para ello, necesitamos crear
un nuevo blueprint, vamos a ir a blueprints Vamos a ir a habilidades. Vamos a hacer clic derecho y crear una nueva clase de blueprint Ahora bien, esto no es
exactamente una habilidad, pero Hel Gate Bullet tampoco
era una habilidad. Entonces vamos a llamar a
esta bala de capa PP. Voy a abrir esto. Lo primero que vamos
a necesitar es una partícula. Entonces vamos a agregar un componente de partículas en
cascada, y va a ser de plantilla y Mark, hay muchas marcas. Marcar il. Hay dos. El es glaseado,
queremos el normal. Nosotros, tenemos una buena
bala por aquí. Un efecto para nuestra bala. Ahora, lo siguiente que
necesitamos es un tubo de colisión. Una esfera de colisión
en realidad no cubo. Dejemos su radio a 32, dar mucho para poder calentar área no importa
si calentamos directamente. Seamos amables con nuestros jugadores. Lo siguiente que necesitamos, de hecho lo
tenemos
instalado en nuestro BP ML es este punto de la vida por aquí que queremos iluminar el piso ya que la bala está viajando. Volvamos a nuestra bala
y peguemos esta luz. A lo mejor es un poco grande que sea
radio de expiación a 200 Vamos a acercarlo
a la bala, y creo que está bien. Por último, lo que necesitamos es un componente de movimiento de
proyectiles. Ahora bien, este componente es como el componente de movimiento como lo
es el componente de rotación, es un componente
con muchas opciones. Y lo único que necesitamos
cambiar son en realidad dos cosas. Es la rotación que
sigue la velocidad, pero queremos que el actor esté siempre mirando
hacia su velocidad. Y también, queremos cambiar la
escala de gravedad del proyectil a cero Tal vez 0.1, nuestras balas tienen una pendiente
descendente, tal vez 0.1. Pero si es demasiado
y podemos ver que nuestras balas van muy
rápido al suelo, deberíamos
cambiarlo de nuevo a cero. Ahora bien, este componente de
movimiento de proyectiles tiene un vector que
se llama velocidad, lo que significa hacia
qué dirección y a qué velocidad voy? Esto es algo que
vamos a calcular más adelante. Pero lo que vamos a hacer es ir a nuestro gráfico de eventos
a nuestra jugada de inicio, obtener nuestro
movimiento de proyectil y una velocidad Voy a este pin
y hago una nueva variable, llámalo velocidad velocidad. Lo que debería ser. Entonces
vamos a convertirlo en un vector. Vamos a dividir esto así que solo vamos a usar x y. Vamos a hacer
esta variable, editar
incienso, y exponer en sp. R La razón detrás de esto es porque estamos en isometría
y con una cámara inclinada. Y eso significa obtener la rotación correcta y
mirar para encontrar nuestra velocidad, donde debería nuestra
bala co no es tan simple como un juego pop down. Así que por ahora nuestra velocidad aquí
vamos a estar usando la x y , pero creo que esta información será útil para más adelante. En fin, lo siguiente que debemos hacer es verificar nuestra colisión. Entonces, ¿golpeamos a un enemigo? Vamos a
seleccionar la esfera. Vamos a ir a
comenzar eventos de solapamiento. Y vamos a comprobar
si el otro actor
antes que nada es válido. Porque si estamos disparando
a un enemigo que está muriendo, por ejemplo,
va a ser destruido, no
deberíamos hacer nada. Ahora bien, lo siguiente que
debemos preguntar es, ¿otro componente tiene remolcador La etiqueta sería mi enemigo, y creamos una rama. Y si se trata de un enemigo, en realidad
deberíamos aplicar daño. Apliquemos un daño de uno. No olvides conectar al actor
de daños. Entonces lo que vamos
a hacer es ación. Este error. A T, probablemente. Y lo que vamos a utilizar
es el final de marca otra vez, como hicimos en la explosión. Pero esta vez, vamos a
hacerlo, mucho más pequeño, 444. Y la ubicación
sería nuestra ubicación de actor. Ahora bien, si no golpeamos a un enemigo, sólo
vamos a engendrar a Dmter No vamos a aplicar daños, a menos que tuviéramos terreno
destructible y luego vamos a de actor Entonces, golpeamos a un enemigo, aplicamos daño,
generamos una partícula No golpeamos a un enemigo, solo
engendramos una partícula
y destruimos actor Entonces, habría un problema con esta configuración de que cuando
estamos generando una bala, si no golpea nada, simplemente continuará
para siempre y para siempre Bueno, en realidad no, pero sí. Lo que vamos a hacer es ir
a los valores predeterminados de nuestra clase e ir a nuestra vida útil, y pongámoslo en
No sé, 5 segundos. Creo que es suficiente. Ahora,
sólo para probar nuestras balas. Cuando terminemos, creo que
esto sería por éste. Te voy a
ver en la siguiente. Adiós.
101. Disparo de jugadores y VFX: Hola, y bienvenidos de nuevo a Game Design Workshop rail engine five Procesal Dungeon
action at Ps curso de creación Anteriormente, creamos
nuestro plano de bala. Oh, usamos una partícula para mostrar el efecto rastro
y el efecto bala. Y usamos la esfera para
detectar colisiones si
estamos colisionando con el
entorno o con un enemigo Y usamos la luz
puntual para mostrar un poco de luz roja no blanca en el suelo mientras la
bala está viajando. Utilizamos el movimiento del proyectil
para establecer nuestra escala de gravedad, y será
responsable de controlar nuestro movimiento, nuestra velocidad de bala, nuestro movimiento de
las balas Desde sus ajustes,
apagamos la escala de gravedad, y establecemos la rotación
que sigue a la velocidad. Nuestro actor siempre
mira hacia la velocidad. Ahora, en comenzar a jugar,
no nos almacenamos. Estamos estableciendo la velocidad de movimiento del
proyectil a una variable que
creamos debería velocidad, y estamos usando
x e y de ella Lo hemos hecho
editable el incienso y exponer sobre desove. Cuando estemos desove la bala, le
daremos velocidad Después, completamos
el evento de superposición que estamos preguntando si nuestro actor con el que
chocamos es válido, lo que estamos
comprobando, básicamente, si el actor que chocamos, ¿está pendiente de ser destruido? Entonces, si está pendiente de ser destruida, no le
hagas nada. Y luego verificamos con
una rama si tiene etiqueta E, lo
que significa que es un enemigo. Entonces aplicamos daño,
si no es un enemigo, solo
estamos generando una partícula que hacemos también cuando
aplicamos daño, y luego destruimos al actor Por último, cambiamos la
vida para estar en, creo, 5 segundos, A 5 segundos, que nuestras balas no se vayan para siempre cuando les
estemos disparando. Ahora, vamos a completar
nuestro evento de bala de spa. En realidad spa función bala. Lo primero que tenemos que hacer es crear un bozal falso Y la razón es que si
vamos a nuestra malla esquelética, la búsqueda de hocico Podemos ver que están colocados
en posiciones muy raras. Eso es porque van
con habilidad específica, tiempo
específico, una forma muy
específica de ser utilizada. Entonces no vamos a usar esto. Vamos a hacer trampa un
poco y crear un músculo en
una determinada posición a la que alcanzará
nuestra pistola. ¿Y cómo vamos a hacer esto? Vamos a
agregar un componente sinusoidal a nuestro plano y
usar su ubicación, llamemos a este músculo en realidad Cada ubicación para generar nuestros
efectos para nuestro rodaje. Así que vayamos a nuestra
viewport y la ubicación. En realidad, tengo una
ubicación en mente que probé y se ve bien. Va a ser 128 en x, va a ser -28 en
y, y va a ser o en
realidad e ocho en Z.
Así que aquí es en realidad
donde
llega nuestra pistola y está
en la punta del arma, que esto es sobre donde debería estar
nuestro músculo Así que volvamos a nuestra bala de spam y usando
esta variable muscular, vamos a obtener la ubicación,
obtener la ubicación de la palabra. Y vamos a sone
meter en esta ubicación. Vamos a conectar esta ubicación dos. Para el medidor e,
vamos a usar el
último tiro al ras del hocico.
Hay mucho de eso. Pero creo que sólo hay
uno con ese nombre. El resto son locales, lo que significa coordenadas locales
y el glaseado. Entonces sí. Último tiro al ras del hocico. Ahora, si vamos y
solo jugamos con esto, veremos instantáneamente un
problema con el ze flush. Nuevamente, es la rotación que debería conseguir rotación de
nuestros personajes porque
ahora mismo es lo contrario. Y es un poco grande también. Yo también quería probar el tamaño. Así que volvamos. Vamos a establecer su escala en 0.3. Y la rotación.
Vamos a conseguir nuestra rotación de cápsulas
porque ahí es donde estamos viendo. Pero ahora esto debería
estar funcionando bien. Nos estamos moviendo después de
que estamos disparando. Pero eso es porque no hemos
hecho las restricciones movimiento y
básicamente el jugador controla en el controlador. Porque todos nuestros controles
son básicamente el ratón. Así que el ratón necesita un poco de código para decidir qué hace. Ahora, detengamos la
jugabilidad, volvamos. Y lo siguiente que
vamos a hacer es volver a generar un metro Pero esta vez apegado. Y esta vez, vamos
a usar el músculo para. Un lugar que sigue
porque estos puntos, estos son puntos de contacto, que son los nombres
de socket del esqueleto que vimos seguir el movimiento del
esqueleto donde están. Pero vamos a repetirlo en la ubicación del hocico Y vamos a
mantener la posición de la palabra. Sí, solo mantén la posición de la palabra. La rotación
realmente no importa. Y para el artículo, vamos a seleccionar
el último punto exuberante. Y voy a
modificarlo un
poco porque no
queremos lo real,
vamos a encontrarlo primero, local, Lastlh Creo que esto es todo. Lo quiero cerrado. ¿Hay uno
desbloqueado? Sí, la hay. Un tiro muscular más bloqueado. Esto es lo que necesitamos.
Vamos a esta partícula. Lo que vamos a cambiar
es un detalle muy pequeño. Vamos a ir a la droga, y vamos a cambiar el valor de dos a, digamos 0.5. Es un poco más así, no tanto la resistencia al aire. Vamos a cerrar
esta partícula. Volvamos. Podría
ser un poco grande. Vamos a comprobarlo. Tal vez queramos bajar un poco de heno. Ni siquiera comas. L et's depuran esto. Bueno,
volvamos a nuestro plano Mira lo que está pasando. Bien, no lo
he
adjuntado al componente. Estamos fijando
qué hueso bloquear, qué hueso unir, pero no estamos
fijando qué malla. Entonces vamos a usar esta malla. Comp guardar. Entonces
volvamos y probemos. Creo que el tamaño sería grande. Turno. Ick. Sí tenemos humo. Todo bien. Derecha. Está trabajando en todas las direcciones correctamente. Esta es otra forma de
hacer que algo siga
tu rotación. Se lo anexas a tu personaje. Ahora, sigamos con
desovar nuestra bala. Vamos a llamar desde clase. Vamos a dividir
la transformación. Vamos a
seleccionar nuestra bala. La palabra ubicación debería
ser nuestro músculo otra vez. Y ahora necesitamos una velocidad de disparo. Ahora, por ahora, sólo
vamos a usar solo
para ver nuestras balas. Vamos a usar el vector realmente directo de la cápsula. Déjame traer la cápsula aquí. Vamos a adelantar vector. Multipliquemos esto por una velocidad que yo no y 101,000 Conectémonos a la
velocidad. Vamos a disparar. Estamos disparando irrelativamente
a donde está nuestro ratón, estamos disparando y
nuestra bala explota Entonces, por último, por supuesto, sí
necesitamos un sonido. Así que vamos aquí, y después de que engendremos nuestra bala, vamos a reproducir el sonido D, y vamos a usar el
sonido de la pistola Ahora deberíamos tener
sonido al disparar. Por favor, ¿puedo verificar
si daña esto, lo cual creo que no lo hace? Deberían ser cinco
pul, no debería. Así que vamos a revisar esto. Y creo que ya
sé lo que es. Deberíamos ir primero
a la puerta del infierno. El remolcador de los defols. ¿Ves? Tenemos actor tira
Es en la bala, le
pido etiqueta de componente Entonces no se debe pedir componente.
Debería preguntar por actor. Como etiqueta E del componente. Pero ahora, deberíamos
poder filmar algo.
Si logramos a un. ahí hay dos puertas
infernales. Vamos. Sí. No podemos destruir
las puertas del infierno. Estamos llegando ahí. Oh, creo que ese sería un buen
punto de parada para este. Quiero verte en la siguiente. Adiós.
102. Animación y mecánica de la muerte del jugador: Hola, y bienvenidos de nuevo al taller de Diseño de
Juegos y motor
real cinco procesales Dungeon action RPG curso de
creación En la última, terminamos con nuestro desove de nuestra bala Terminamos. En citas porque sí necesitamos
la velocidad correcta Entonces, lo que hicimos fue generar un medidor electrónico
en un hocico falso Creamos una
ubicación falsa que
llamaremos hocico frente
a nuestro personaje, y ahí generamos un medidor e Y usamos la rotación de tapas
para rotar eso un metro, que es el emter que
hace que nuestro hocico
destella, por ejemplo Oh. Después se procedió a desovar un emisor adjunto y el
adjunto también fue la malla en el músculo
del zócalo Entonces tenemos nuestro humo siguiendo
un poco de nuestra pistola. Nuestro movimiento en nuestra pistola. Luego procedimos a
engendrar a nuestro actor pullet con la ubicación del engendro para ser la palabra ubicación
del hocico, y luego creamos una velocidad falsa hacia el
frente Y luego tocamos un sonido. Ahora, antes de continuar y arreglar el movimiento de
nuestro personaje y hacia
dónde está apuntando realmente, deberíamos completar el último. Pongamos un comentario aquí. Mascota. En realidad dispara. Yo estaría más en lo correcto. Ahora, lo último que
necesitamos es nuestro sistema de salud. Lo hemos creado
hasta cierto punto. Pero no hemos
diseñado lo que sucede. No tenemos nuestro
stan. No tenemos muchas partes que sucedan
después de recibir daños. Entonces, continuemos
con esta lógica. Lo primero que dijimos protagonizaremos a nuestro personaje cuando
recibamos algún daño. Y eso quiere decir que
este debería ser también un periodo de gracia que no nos vamos a
quedar atónitos, de lo contrario, vamos a quedar
bloqueados cuando estemos recibiendo
nonmag continuo por ejemplo, para la torre que
dispara continuamente, o si muchos enemigos nos
golpean al mismo tiempo Vamos a poner
una sucursal aquí, y vamos a preguntar,
¿nos pueden quedar mirando? Vamos a promocionar esta variable, y llamémosla C B. Ahora bien, en realidad este
es muy mal nombre. Vamos a llamarlo a enfriarse. Si Sn está en enfriarse, lo hacemos, si S no está en enfriarse, hacemos otra cosa. Lo primero que hacemos es
poner a Stan en enfriar. Pero si esto vuelve a disparar,
es a partir de la t. Lo
segundo que debemos
hacer es cambiar nuestro estado. T. Lo siguiente que debemos hacer es tocar un
sonido de calor. Un sonido dos D. La razón por la que lo estamos
reproduciendo solo en Stun es que no queremos que cada
calor produzca un sonido, sino que cada calor que
nos acarree debería dar Pero vamos a
vamos a usar el calor. Yo Herm. Vamos a usar un Hert Mel. Y entonces vamos a hacer
una pregunta si estamos muertos. Porque si no estamos muertos, entonces vamos a
hacer otra cosa. Si estamos muertos,
vamos a jugar a la muerte, y a jugar a la muerte, si
promovemos esta arial. Todo esto muerto.
Llamemos a esto muerto. Vamos a crear un evento personalizado. Toda esta muerte y
llamarla falso. Ahora bien, si no estamos muertos, queremos jugar un efecto de calor. Por lo que demuestra visualmente también
que nuestro personaje consiguió calor. Nosotros hacemos esto. Vamos a
crear otro montaje. Bueno, se fija para el calor. En realidad, tenemos que ser paragon. Entonces tenemos este
calor reaccionar frente. Vamos a crear
un montaje a partir de. Vamos a
entrar en el montaje, ranuras
de grupo para ser ranura
superior. Parte superior del cuerpo. L et's vuelven a nuestro personaje
y interpretan su montaje. Seleccionemos nuestra malla esquelética. Y nuestro montaje. Reacciona al frente. Y ahora, lo que vamos
a hacer es que no vamos a pasar por esta cadena
de eventos, es decir, cuando dejamos de tocar las
montas, hacemos las siguientes cosas, vamos a elegir la
completa e interrumpida Entonces si algo interrumpe
esto o esto se completa, entonces vamos a
hacer otra cosa. Lo que vamos a hacer
es obtener nuestro estado de jugador, qué estado de jugador, porque este resultado variará en
función del estado del jugador, un poco, no mucho. Y si estuviéramos en A
normal o yo, queremos volver a
una posición normal. Vamos a
cambiar de estado otra vez. A la normalidad. Si fuéramos normales, si estuviéramos apuntando porque
interrumpe nuestra puntería Si estamos tratando de disparar y algo nos dispara, y
nos golpea, interrumpe nuestra puntería,
así que deberíamos apuntar de nuevo, y también lo meramente lo mismo Y lo que vamos a
hacer después se va a retrasar un poco. Digamos 2.5 segundos. Y entonces vamos a establecer
el non cool down no me gusta este ruido y s. no me
enfrío, podría haber sido una C. De todas formas, compilar y guardar. Pero básicamente, esta es nuestra cuenta regresiva para cuando
podamos volver a quedarnos atónitos Ahora, en el caso estamos atónitos. Si no dejamos nuestro turno. Estoy apuntando y estoy disparando
y me estoy quedando atónito. Ba este es el caso cuando
estamos en enfriarnos. No podemos estar en este
caso si nos hemos quedado atónitos, lo que pasó aquí Conecté conecté
las cosas equivocadas. Lu mientras pasaba.
Eso está aquí. Entonces, ahora somos estrella, nos estamos subiendo al stand, y estamos cambiando de estado. Entonces, cuando estamos cambiando de estado, no
podemos estar apuntados, así que
estaremos en el stand. Pero si ya estamos de
pie y estamos apuntando, entonces debería interrumpir
nuestro objetivo, pase lo que pase. Pero si nos quedamos atónitos y
seguimos presionando turno, deberíamos volver a nuestro objetivo Pero aquí vamos a
poner una sucursal. Y si es falso, vamos a conectar
aquí, y si es cierto, vamos a conectarnos aquí, y la condición es si
estamos apuntando todavía, así que apunta hacia abajo, si
seguimos presionando turno. Básicamente, cuando estamos atónitos, no
nos están
interrumpiendo por disparar Pero si estamos apuntando y
ya hemos quedado atónitos, entonces nos interrumpen La segunda vez que algo nos
va a atacar, en realidad
rompemos nuestra puntería, que sería una
mecánica oculta dentro del juego. En fin, sigamos
con nuestra parte triste, nuestra muerte cuando perdemos, pase
lo que pase
tiene que pasar una vez. Entonces dos una vez. Lo siguiente que deberíamos pasar, deberíamos tocar el sonido de la muerte, así que toca sonido a D. En realidad, no debería ser lo primero, pero saquemos ese
sonido horrible al principio. Creo que se llama
dolor. Dolor dos. Bueno, podemos elegir
esfuerzo dolor o probable, este es más
agresivo, más muerte. Ahora bien, deberíamos estar
parando el movimiento aquí, pero no hemos hecho
la parte del controlador, así que lo vamos a hacer
más tarde, y claro, cambiar nuestro estado a muerte,
que es el predeterminado. Y ahora necesitamos
reproducir una animación. Entonces, vamos a encontrar
nuestra animación de muerte, así que va a ser la muerte. Como una muerte al revés
y una muerte hacia adelante, creo que el delantero es mejor para la mayoría de los casos porque el revés se vería
raro en algunos casos, pero vamos a crear un montaje de
animación a partir de él Vamos a cambiar
su ranura a parte superior del cuerpo. Otra vez, R ¿verdad? Volvamos a nuestro
personaje y toquemos un montaje. Seleccionemos nuestra malla esquelética. Seleccionemos el montaje. Y eliminemos nuestro
widget de juego de nuestra pantalla. Entonces no hay más
partes de salud ni nada. Modo de juego de arriba hacia abajo. Aquí estamos. Jugabilidad. Pasar de padre. Esto sucederá instantáneamente. No vamos a esperar
a que termine el montaje ni notifique nada. Lo que tenemos que hacer es
crear un juego sobre pantalla. Pero hagámoslo
en la siguiente. Adiós por ahora. Nos vemos entonces.
103. Sistema de detección de ratón: Hola, y bienvenidos de nuevo a Game Design Workshop motor cinco Procesal Dungeon Action
ApS creación Curse Anteriormente, nos quedamos con nuestro evento de muerte función de
muerte, en realidad. Y dijimos que necesitamos un juego sobre el que básicamente
mostrar cuando morimos. Pero tomémoslo
desde el principio. Creamos la continuación de nuestro cualquier evento de daño que
tuviéramos que agregar eliminar la salud. Preguntamos si
ya estamos en Stun, si estamos en Stun enfríese Si no estamos en Stun enfriarse, entonces estamos girando que
estamos en Sun cool down, y estamos girando
nuestro modo para aturdir Y luego tocamos un sonido, que le indicará al
jugador que nos quedamos atónitos Si estamos en aturdimiento enfriarnos, entonces simplemente vamos directo a hacer la pregunta si estamos muertos? Si estamos muertos, continuamos
somos evento de muerte. Si no estamos muertos,
estamos tocando un montaje de animación para
demostrar que somos golpeados, pero puede ser
interrumpido caminando,
moviéndose, o lo que sea y cambiar Y completos o ininterrumpidos, estamos cambiando en base a
nuestro estado, ¿qué hacemos? Entonces básicamente, creamos
una mecánica oculta que para nuestra primera,
cuando estamos apuntando y disparando, volvemos a nuestra puntería para
que podamos volver a disparar. Pero si estamos en el segundo hit, lo que significa que ya estamos
apuntando porque no cambió de estado porque
estábamos firmes,
entonces estamos
volviendo a la normalidad e
interrumpiendo nuestro ataque A continuación, esperamos 2.5 segundos para encender el
aturdimiento, enfriarse, así que este es nuestro periodo de gracia
para no quedarnos atónitos En nuestro evento muerte, lo
hicimos una vez, tocamos el sonido de la muerte, un sonido horrible, y
cambiamos el estado a muerte, y tocamos nuestro moa de muerte Ahora, vamos a crear nuestro widget También
eliminamos de padre
el widget de jugabilidad, así que ya no vemos la
parte de salud ni nada. Oh, Ahora vamos a crear
nuestro widget para nuestro juego sobre pantalla básicamente. Vamos a la interfaz de usuario. Vamos a hacer clic. Vamos a widgets de usuario, plano de widget de
usuario
y vamos a terminar el juego G IR. Vamos a abrir esto. Y vamos a traer un Cvass. Y un texto. Escribir juego terminado. Vamos a anclarlo a la mitad. Desplazemos la posición
x dos menos 175. Cambiemos de posición y dos fy. Digamos tamaño x
tres y tamaño 89. Ahora, pongamos nuestra talla en seis. Se ve un poco más grande. Voy a dejarlo en negrita. Vamos a escribir para texto, juego terminado. Esto en realidad,
creo que es una palabra. Está a la altura del juego o juego
sobre una palabra o dos palabras. A mí me gustan dos
palabras, se ve mejor. Es un poco de conjunto basado
en la r, pero está bien. No creo que se
notará. Ahora bien, lo siguiente que
necesitamos
sería describir nuestro puntaje. Vamos a traer un texto, y envolvamos esto
con una caja horizontal. Duplicemos este texto. En el primer texto, vamos a
escribir cuatro bases dos puntos. Y el siguiente texto debería
ser digamos uno, dos, tres, cuatro, cinco, 50. Ahora, hagamos que la caja
vertical pueda encerrar esto Así que vamos a anclarlo
también en el medio. Vamos a establecer el desplazamiento menos 125. A mil cien, yo debería ser dos. Es grande, pero está bien. Lo que podemos hacer es simplemente dejar que este ement
los dos en fiel. Esta alineación a la derecha, es demasiado centro. Falsa alineación a la derecha. Sí, eso ya se ve mejor. Esto será para nuestra puntuación. Hagamos una variable
de nuestro texto 00, y pongámosle un nombre a la puntuación de
subrayado Es una variable. Podemos configurarlo a algo, y ahora lo que necesitamos es
otra caja horizontal. Tráelo en los cavas. Vamos a establecer su corbata visualmente. Queremos que sea aquí abajo. En esta parte de la
pantalla hasta aquí, tal vez. Vamos a establecer las compensaciones.
Todos los ajustes aquí. Ahora, lo que vamos a poner aquí
dentro va
a ser una caja vertical. Y dos espacios. Entonces podemos controlar el cuadro
vertical donde se linea, y el espacio debe
ser uno al inicio, uno debajo de la caja vertical. Para que podamos comprobar en todo. Y vamos a cambiar los
dos espacios a 0.1. Entonces le dimos este
espacio vacío a los lados. Dentro de la caja vertical, pongamos también dos espacios y una caja horizontal nuevamente
entre los dos espacios, y vamos a
configurar Esta caja en realidad será la caja que está
sosteniendo los botones. Que también necesitan algunos espacios. Vamos a traer los botones
y los espaciadores. Necesitamos dos botones, uno, dos. Vamos a traer algunos espaciadores otra vez. 12, tres, y seleccionemos
todo para sentir. ¿Correcto? Ahora, vamos a cambiar los
laterales para que sean 0.1 p. creo que por defecto, esto nos da un bonito
lavabo para nuestros botones. Ahora optemos por enviar un mensaje de texto
O aquí y uno aquí. Llamemos a este menú principal. Y al otro,
llamemos a este juego de quid. En realidad acaba de renunciar. Lo que vamos a hacer es ir a realmente, necesitamos estos dos botones
a e ir y seleccionar
en cada uno de ellos. El evento clicado. L et's nombra estos patrones porque no tengo
idea de qué es cuál. Entonces este es el menú B, y este es el B qui. Ahora los eventos se nombran, así que este es el qui que jugamos. Y este es el
menú principal que abrimos nivel. Recuerda el bucle del que
hablamos al principio. Este sería nuestro nombre de nivel. Vamos a copiar pegados,
es nivel de juego. Pulsar vuelve a cargar todo y nos
lleva a nuestro
menú principal y abandona nuestro juego Ahora, lo que queremos
hacer construir, obtener nuestro puntaje T y un xt. Vamos a conectarlo aquí. Nuestra puntuación, lo que
usaremos para una puntuación. Usemos nuestras monedas para una partitura. Entonces vamos a conseguir un modo. Yendo a lanzar de arriba hacia abajo. Vamos a convertir a
puro elenco y conseguir nuestras monedas. Total de monedas. Vamos a
conectar esto aquí. Entonces nuestro puntaje son nuestras monedas. L et's compilar, y
vamos a probar nuestro sistema de muerte. En realidad antes de que
revisemos nuestro sistema de muerte. Vayamos a nuestro personaje muy rápido y cambiemos nuestra
salud Mx a una. Entonces morimos instantáneamente de una trampa, y no esperemos diez hits. En realidad vamos a morir junto a esto. No nos estamos muriendo. Vamos a dar forma a lo que está pasando. Esto se debe a que
aquí
estamos comprobando la muerte, variable muerta, que deberíamos estar comprobando
es nuestra vida igual a muerta, es nuestra vida actual igual o menor que cero. Si es así, pongamos también este muerto cierto Ahora, deberíamos poder
morir. Aquí la trampa. Oh, murió, pero
aún podemos movernos, como pueden ver. Pero no podemos
recibir más daños. Pero sí morimos. Ahora somos capaces de
movernos porque necesitamos hacer una función de stop
movement. Pero para hacer una función
de stop motion, necesitamos controlar cómo nos movemos. Además, el widget no está haciendo estallar porque
no lo llamamos. Entonces vayamos a nuestra muerte. Vayamos primero a nuestro juego, nuestra sección de creación de widgets. Vamos a crear un respiradero personalizado. Llamemos a este evento GO. Vamos a copiar esta parte de
aquí y el controlador de juego. VAYA aquí. Vamos a
promover esta variable. En realidad, no
necesitamos promoverlo. Porque simplemente restableceremos
el juego después. Simplemente abrimos de nuevo el menú
principal. Entonces sumamos para ver puerto, y luego vamos a ir a
nuestro modo de juego y llamar a GO. Ahora, así tenemos pantalla de muerte. Sí. Todo
está a bit offset. S. Pero está bien. Podemos dejarlos un
poco compensados. Este no es un producto final. Entonces creo que esto
es para éste. En la siguiente,
arreglemos nuestro movimiento, que tenemos toda esta
bolsa toda esta larga. Básicamente, lo que esto
es que cuando estoy apuntando fuera del mapa, ahora que llegamos a
este lugar, pintarlo. Si traigo el
registro de mensajes por aquí, registro registro de mensajes dos
ventana Un registro de mensajes. Vamos a aclararlo. ¿Cómo va a ir esto? Se puede ver que no hay error,
no hay error, no hay error. Si muevo el ratón a algún lugar en algún lugar
que no le pega nada. Debería estar produciendo
el error, pero no lo es. ¿Dónde está este error ing? De veras pensé
que era eso Ahora, ¿qué está pasando? Por qué no tenemos, aquí está. Bien, así fue si hago clic,
vamos a leer el error. Mejor leer primero los errores. Un movimiento de entrada BP o un acceso no
tratando de leer propiedad, llamar diversión obtener p. Así que básicamente, aún no
hemos poseído
nuestro pone Por eso esto está sucediendo porque cuando comenzamos a jugar
y engendramos el pone, aún no
lo
hemos poseído. Todo bien. Ahora bien, otra cosa
que quiero mencionar es que si tienes este pool de
streaming de texturas de más de nueve K, esto podría hacer que tus gráficos se
vuelvan un poco malos en algunos lugares. Ahora bien, si tienes una computadora
fuerte, la razón es que
este personaje tiene cuatro texturas de resolución K, y la predeterminada
Sí tenemos muchas otras cosas
que son de alta textura. Como pueden ver, este
ícono de aquí, esta vez
se
estropeó un poco Esto se debe a la piscina de streaming de
texturas. Entonces, ¿cómo arreglar esto? Vamos a presionar la tecla
tile, inx a uno, y vamos
a presionar R punto M. Textura de
punto. No. Voy a dejarlo simplemente
encontrar el comando, texturas, streaming es texto humeante piscina Nuestro tamaño de pool de streaming. Si establecemos esto a 3,000, por ejemplo, entonces
nuestro error se ha ido. Nuestras texturas también se vuelven claras. Pero esto quiere decir que dedica
tres K Ram a nuestras texturas. Solo recuerda que se
trata de V Ram, así que esta es la memoria de la tarjeta de
video. No es la memoria de la computadora. Si tu tarjeta de video es
no tiene tanto Ram, no
aconsejaría
aumentar el tamaño. Lejos. Eso
sería para éste. Te voy a ver en el
siguiente arreglando estos errores y separando el movimiento y
disparando desde el ratón W a verte entonces, adiós.
104. Interacción avanzada con el ratón para elementos: Hola, y bienvenidos de nuevo
al Taller de Diseño de Juegos, Curso cinco procedimientos de
Real Engine creación de RPG de acción
Dungeon Anteriormente, terminamos
con nuestro juego sobre pantalla. Agregamos nuestro juego sobre texto, un texto para la partitura Mundial y un texto para nuestra partitura. Esto es un poco
compensado entre ellos, pero no importa
si quieres pasar algún tiempo arreglando las
posiciones, sé mi invitado. Ahora, usamos dos botones para nuestro Qi y para el menú principal, que reinicia nuestro juego Para reiniciar nuestro juego, usamos el nivel abierto por nombre, que reinicia
todo como hablamos, y vuelve a mostrar el menú principal y elimina
todo lo que hemos hecho El anterior Yo.
Ahora, para nuestro quid, acabamos de usar un
juego de quid, y eso fue todo Para nuestra puntuación en start
Construct, obtuvimos nuestras monedas totales
y establecemos el texto. Ahora, comencemos con
algo más interesante. Vayamos a nuestro controlador de jugador de arriba
hacia abajo. En este controlador,
vamos a encontrar una función llamada get location
debajo del cursor. Me lo acabé al principio.
Es este de aquí. La podemos encontrar también por aquí. Esto es en realidad bajo el dedo. Queremos debajo del cursor, éste. No vamos a usar debajo del dedo, así podremos eliminarlo, y lo que sea que se utilice. Dónde se utilizó. Entonces
no necesitamos el evento touch también hasta que también esté bien. Entonces, ¿qué hace hasta ahora nuestra ubicación get
debajo del cursor? Entonces lo que hace es usar el resultado get heat
bajo cursor por canal, y el canal es visibilidad
y trazas para complejo, y nos da el resultado de calor. Cómo funciona detrás de escena, en
realidad crea una línea de
traza desde nuestra cámara hasta la posición de nuestro cursor en nuestra pantalla y toma en cuenta la profundidad y si golpea algo o no. Entonces, lo que queremos
hacer para un primer paso es duplicar esto pero
con una esfera de traza, para que podamos aumentar un poco el tamaño de nuestro
cursor de nuestro click. Ahora, una razón más por que vamos a
usar esto es que
queremos poder crear una lista que
ignoraremos en caracteres. Por ejemplo, nuestro jugador. Y hablando de eso, vayamos a nuestro personaje de arriba
hacia abajo. En realidad vamos a crear primero una
variable a en los controladores. Llamemos a esta referencia. Como pueden ver, ya
es para mí en el personaje de arriba hacia abajo VP. Si necesita cambiarlo
a P carácter de arriba hacia abajo. Una referencia de objeto. Esto se debe a que estaba
probando algunas cosas, y la última variable se
ha dejado aquí. Entonces, ahora que tenemos
nuestra referencia de juego, vamos a poblarla en nuestro personaje de arriba hacia abajo
en comenzar a jugar Vamos a conseguir jugador un get. Vamos a establecer la referencia de juego y conectemos
a la referencia de juego. Y ahora está poblada. Nuestra referencia está poblada. Y volvamos
al mando, y de nuestra referencia de juego, vamos a conseguir. Cámara, vamos
a conseguir la ubicación de wold. Hay otra manera en que
podríamos haber conseguido que nuestra cámara fuera irrelevante para nuestro plano de
jugador Podríamos haber usado
el administrador de cámara. Y a partir de eso, podríamos
haber obtenido la ubicación de AC, lo que nos da la
ubicación de nuestra cámara. Pero de esta manera también está bien, es solo hacer que sea confiable
para nuestro jugador Y este es nuestro comienzo. Ahora, vamos a traer un rastro de esfera. Canal bi. Vamos a establecer
su radio en 20. Nuestro final debe ser nuestra ubicación, nuestra ubicación de calor del ratón. Pero, ¿y si el ratón
no le pegó a algo? ¿Y si el ratón no
estamos apuntando a nada? Entonces, vamos a tener una sucursal
para preguntar esto primero. ¿Estamos odiando? Si estamos calentando, entonces
crea la esfera. Si no estamos calentando,
haremos otra cosa. Voy a desconectar estas
cosas aquí porque
vamos a estar cambiando los
resultados de calor en función de nuestras necesidades. Ahora bien, ¿qué hacemos cuando no
estamos odiando nada? Bueno, lo que hacemos
es la posición del ratón, y vamos a ir también
en el nacimiento b al mundo. La reubicación al espacio de palabras. La razón por la que
voy a hacer esto es porque cuando
no estamos pegando nada, como podemos ver ahora mismo, necesitamos reconectar
algunas cosas ¿Correcto? Como podemos ver ahora mismo, cuando estoy pinchando sobre nada, Nuestro personaje no se mueve, y podemos ver que la
ubicación está por aquí. Podemos ver dónde está
pensando en realidad, estamos calentando. Se tiene que bajar la música. Ya que cuando está volviendo falso, esto en realidad devuelve cero. Tenemos que cambiar eso. Tenemos que ser capaces de
avanzar hacia nuestro ratón. Entonces lo que vamos a hacer es que
vamos a agregar esta ubicación, la palabra ubicación es algunos
multiplicar, no un sumar. Este es el anuncio. Tiene este
símbolo bajo, lo convierte en un anuncio. Ahora bien, nos vamos
a multiplicar. Vamos a multiplicar
la dirección. Y vamos a cambiar
esto a un entero, y vamos a darle un
rango a esta dirección. 3,300. Y 3,000. Consideremos que el alcance de nuestra
cámara es de aproximadamente dos k, así que queremos que sea al menos
menor que el personaje, al
menos a la misma
altura del piso. Entonces 3 mil aproximadamente estarían bien. Y lo que vamos
a hacer es promover esta variable, una variable local. Y llamemos a esto itation. Por ejemplo, si voy a conectarme, desconectémonos un poco
con la línea de traza. Si voy a conectar
esto a las cataratas, y luego también conectarlo aquí, y obtener nuestra
ubicación de calor o la salida. Ahora, y conectar esto aquí, ahora deberíamos poder
caminar hacia los acantilados. Por el momento hago clic aquí, no, ¿por qué sucede esto? No tiene sentido. Ese
no es el controlador. ¿Cuál es el código original? No sucede
porque el código que es por defecto bal le dice que solo se mueva cuando
tenemos un calor a través. Entonces si conecto esto también, entonces deberíamos caminar
hacia el acantilado. Sí, estamos caminando hacia
nuestra perdición. Está funcionando. Puedo ver el piso aquí cding. Vamos a arreglar esto más tarde, ¿
o lo vamos a dejar como estos? Realmente no importa. Es solo posicionar
las paredes de la baldosa. Entonces, este no es el controlador. Ahora, en realidad solo arreglamos ese problema que si no
estamos pegando, todavía
podemos avanzar
hacia la nada. Pero ese es sólo
uno de los temas. Desconectemos esto, y
volvamos a conectar esto y desconectemos Entonces, si no estamos
golpeando algo, estamos ajustando la ubicación de calor a lo que sea nuestro
mouse y debajo es. Y ahora continuemos
con esta lógica. Que otra vez, vamos a preguntar, ¿golpeamos algo? Cambiemos esto a
cámara, el canal de rastreo. Si no le pegamos a algo, entonces significa que el
ratón calienta algo, pero no debemos prestarle atención porque
estamos en un canal diferente. Oh, esto significa que nuestra ubicación debería convertirse en
una ubicación de calor de ratón. Así que vamos a cambiar
nuestra ubicación de calor
a nuestra ubicación de calor del mouse. Ahora, como puedes imaginar, los espaguetis aquí serán maravillosos o un curso
familiar completo. Tratemos de mantenerlo
lo más limpio posible. Vamos a continuar. Como podemos ver, tenemos una salida de calor. Cambiemos el nombre de esto a calor enemigo. No, porque la forma en que nuestro
sistema va a funcionar, no
le importará si es un
enemigo golpeado o no para moverse, nos moveremos independientemente,
no independientemente, independientemente. No. Lo que vamos a hacer es
promover esta variable, variable local, llamar a esto. Se. Enemigo temp. Porque sabemos que
tenemos un problema con el mismo nombre nombre. Vamos a establecer aquí
que el enemigo no fue golpeado. Esto sería si no
tuviéramos am y si no
tuviéramos disparos. Ahora, hagamos disparos después. Vamos desde el punto de vista de que
no golpeamos nada, y no es un enemigo. Sólo estamos pinchando
en el suelo. Preguntemos, ¿es a lo que
le estamos pegando un artículo? Para ello, vamos
a usar una secuencia. Porque pase lo que pase,
01 es para igualar la salida, y nuestro cero es
en realidad incluso salida, y el nuestro
sería otra cosa. Ahora bien, esto no debería estar
realmente conectado aquí. Este estaría
conectado aquí, porque no queremos
cambiar nuestra ubicación de calor, pero queremos apagar la temperatura de calor de nuestro
enemigo,
que está desactivada por defecto. Entonces aunque lo conectáramos aquí, realmente no importaría
porque por defecto. Pero seamos justos. Esto así que apártate. Ahora, cuando estamos
comprobando por un artículo, debemos verificar si nuestro actor de
calor es válido. Voy a romper
nuestro resultado de calor. Voy a traerlo aquí, y preguntar si el otro
actor es válido. Ese sería el inicio de
nuestro viaje para detectar artículos. Una cosa que debemos hacer es
antes de continuar con el código, ir a nuestros artículos interactuables a nuestro pecho grande, p el cofre por aquí también ¿Con qué más estamos
interactuando? Los apoyos de la habitación.
Creo que eso es todo, y los artículos, por supuesto, vamos a ir a los
artículos y al artículo BP. Vayamos a Cofre grande más
valores por defecto y busquemos remolcador. Pongamos la etiqueta I.
Voy a guardar esto, y pongámosla también en el pecho. Yo por artículo para
interactable, no lo sé. Interferencia, Este
es el remolcador que elegí. Puedes elegir tus
propios remolcadores, claro, solo recuerda
colocarlos correctamente. Artículos y cofres de la etiqueta I porque podemos
hacer click sobre ellos como un ítem Ahora, creo que este es un buen punto de
parada para este. Vamos a
continuar con el siguiente con nuestro código de cuatro artículos. Adiós.
105. Sistema de interacción con ratón y entradas: Él Hola, y bienvenidos de nuevo al Taller de
Diseño de Juegos Motor real cinco Procesal Dangon
Acción Un Curso de Creación BZ Anteriormente, continuamos con ubicación de
nuestro mouse bajo Cursor. Función, básicamente
nuestro resultado de calor mouse
que el
resultado de calor del mouse personalizado que estamos haciendo, y comenzamos con obtener
nuestro calor bajo el cursor. Comvimos si estamos
vinculando algo, si calentamos algo, y si no lo hicimos, estamos obteniendo la posición de nuestro
mouse, depjecting su anillo
a ubicación mundial, y obteniendo un punto
hacia esa dirección, 3,000 en realidad en rango hacia esa dirección y configurando
eso como nuestra ubicación de calor Ahora bien, si golpeamos algo, estamos creando una
carrera de esfera con radio de 20 que comienza en nuestra cámara y
termina en nuestro resultado de calor del ratón. Estamos preguntando si le volvemos a golpear algo porque esta vez estamos comprobando el rastro de la cámara. Ahora bien, si golpeamos algo, estamos ajustando el calor si no
golpeamos algo, estamos comprobando la
ubicación estamos configurando la ubicación al resultado del cursor del
mouse, este resultado, y estamos configurando
que no golpeamos a un enemigo. Entonces tendremos que
hacer algunas otras cosas, y obtenemos la nota de devolución. Pero lo siguiente que deberíamos hacer, y empezamos a hacer
fue nuestro sistema para comprobar si estamos
rondando algo o no Y la primera acción sobre esto es conseguir nuestro resultado de actor de calor. También, procedimos
a agregar a nuestro cofre, nuestra caja, nuestro cofre, nuestro cofre grande, y
nuestros artículos, el remolcador Oh, esto es
lo siguiente que estamos comprobando después de que estamos comprobando
que el actor es válido. ¿Tiene el actor el remolcador I. Así que un remolcador y la rama, y la letra I, y
completamos esta pregunta Ahora, vamos con
una rama forse, que sería si lo que estamos
pegando no es un ítem Lo que necesitamos es una función. Entonces, vamos a
hacer una función. Llamemos a esta
función ear em elect. Porque si no estamos
pegando algo con i, entonces no tenemos objetivo. Para llenar esta función, necesitamos dos variables. No locales, normales. vamos a
hacer y
va a ser el tipo de acto. Ese sería
nuestro objetivo anterior. Digamos que flotamos porque
estamos flotando sobre los artículos. Vamos a nombrar al
otro padre. Entonces, ¿qué hacemos
con estos artículos? Recuerda, cuando
hicimos el elemento PP, creamos estos dos mensajes
start hover y end
hover , mensajes de interfaz blueprint Entonces, cuando no estamos
aspirando nuestro artículo,
deberíamos terminar de pasar el cursor sobre cualquier
artículo que estuviéramos sosteniendo Entonces vamos a
conseguir nuestras vistas previas, y vamos a
obtener nuestra corriente. Y si nuestras previsualizaciones
son válidas, aquí, entonces sobre end hover message Entonces vamos a verificar si
el hover actual es válido. Y vamos a
conectar el no es válido del nosotros hover,
y por supuesto, también
el final hover Vamos a hacer lo
mismo por éste. Vamos a copiar
base este año. Trae esto un poco más cerca y estamos terminando hover a lo que sea que
estemos actualmente rondando Y entonces vamos a
poner la corriente sobre y la anterior sobre a null, ya no
son válidas. Vamos a conectar el
no válido también aquí. si acaso esto es válido y esto no es válido o
cubrimos todas nuestras bases. Ahora, volvamos
a nuestra función, y llamemos a
esta nueva función. Seleccionar artículo de auto en falso. Entonces, cuando estamos cubriendo
algo y no es un artículo, aclaramos la selección de artículos. Ahora bien, si estamos flotando
algo, necesitamos una pregunta. ¿Nuestro actual hover es
lo mismo que el headactor? ¿Esto es igual al actual hover? Este es él dactor. Y si es verdad, no hacemos nada. Si no es cierto, entonces obtendremos
nuestro actual hover, y lo haremos por encima porque significa que
hemos hecho algo nuevo Pero solo si esto es válido, si nuestro último no fue, entonces sí necesitamos
verificar si es válido. Porque si es válido, necesitamos establecer el vis
hover al actual hover Si no es válido,
entonces este error de calor, yo diría que estás tratando
de establecer null a null. No me gustaría. Ahora, lo que tenemos que hacer es establecer nuestro actual hover para calentar un poco el as No sé si lo
cortaron. Intenté conectarme este año y
no me dejaste. Y la razón es que se
trata de un actor, pero se trata de un personaje de arriba
hacia abajo. Cambio. Referencia del actor,
cambiar tipo de variable. Genial, sin choques. Arent Hover y Previous
sean ambos actores. Car Hover no debería ser
el personaje de arriba hacia abajo. Tiene sentido, creo.
Voy a traer esto por aquí. Por supuesto, si nuestro actual
hover no era válido, esto significa que vamos a
dejárselo directamente a nuestro actor actual Y tenemos que hacer el
inicio hover a este actor. Pero el actor sabe
que está siendo rondado. Empiezas a interactuar. Sí necesitamos otra función. Pero vamos a llegar
aquí y llamarlo al. Y lo llenaremos más tarde. Por ahora, vayamos
a Gráfico de eventos, y vayamos a nuestra entrada
mejorada, un clic de
destino de conjunto de IA de acción. Ahora, no vamos
a usar el consilt, así que voy a desconectar esto Lo que vamos a utilizar para
nuestra interacción es la completa. Esto significa que
he pulsado clicked y básicamente tiene algunas reglas sobre hacer clic en el mismo fotograma y soltar Pero básicamente cómo funciona es
cuando haces clic, sucede. No vamos
a usar click hold y más detalles que eso. En realidad,
lo estamos porque se ha usado por aquí, y vamos a mantener una parte de esto, pero después, ahora no. Ahora, lo que vamos a hacer es que vamos a comprobar si nuestro a, nuestro jugador es válido. Así que no obtenemos ese
error molestos que tuvimos todo este tiempo. Quiero el completo. Cuando desconectas
algo, desaparece. El motivo es porque
tenemos esta r por aquí que muestra el resto de las opciones
porque se están escondiendo. Por lo que sí necesitamos terminado. Conectémonos aquí.
En realidad vamos copiar y pegar al principio así. Trig no desencadena
este error molestos. Y no vamos
a usar actor también. Vamos a usar
el stop moving, pero vamos a
hacer uno de los nuestros. Nuestro actor es válido, y sigamos conectando esto. Lo que vamos a hacer
es cada uno en el estado del jugador, porque tenemos el estado
del jugador por aquí, y queremos interactuar
sólo cuando estamos normales. No queremos
interactuar cuando
estamos pirateando o algo así, no
elegimos artículos al azar. Y en realidad, usemos este umbral que tenemos.
Pongamos una sucursal aquí. Entonces, si nuestro tiempo transcurrido es menor que el umbral Nos conectamos a la normalidad. Esto significa que si estoy
haciendo clic en un elemento por una cantidad
de tiempo específica y no liberando, esto no sucederá. Interactuar no va a suceder. Entonces solo necesito hacer clic y soltar para que
interactúe. Si solo estoy rondando
con el descanso clickeado, no
deberíamos
poder elegir artículos Bueno, en realidad, de esta manera, no
deberíamos
poder escoger artículos. Si no usamos este nodo, podremos hacer clic en
elementos como pasar el cursor sobre la m y decidir cuándo
lanzamos y simplemente pintarlo Pero hagámoslo que
no puedes escoger artículos si tienes que sostenerlo. Entonces, vamos a usar
una rama dos aquí, y vamos a traer
esta función de interacción. Ahora bien, si lo dejamos así, cada vez que estamos haciendo clic, estamos tratando de interactuar. Pero, ¿y si queremos movernos? ¿Cómo diferenciamos entre
estos dos cuando quiero hacer clic y mover y cuándo quiero hacer clic
y recoger algo? Bueno, eso sería sencillo. Tenemos nuestro actual
hover por aquí. Si esto es válido, entonces
estamos interactuando. Si esto no es válido, entonces nos estamos moviendo o atacando. A ¿vamos a
traer esto aquí? Ansi fy las cosas un
poco. ¿Esto también? Conectémonos aquí.
Agrega una cosa más, deberíamos agregar esta pregunta
que estamos pasando el cursor sobre
un ítem a la rama francesa sobre
la rama trigger Basar la misma pregunta
que queremos hacer en el gatillo. ¿Estamos flotando un artículo? No estamos flotando un artículo. Veremos qué pasa después. Si estamos rondando un artículo, no
vamos a hacer nada
porque queremos comprobar cuánto tiempo
estamos sosteniendo el mouse Básicamente, es un evento de
lanzamiento con un ter. Bueno, no en el lanzamiento, en el evento de
prensa con a. algo entre estos dos. Y eso podría concluir casi concluir nuestro sistema de
interacción. Sí necesitamos interactuar. Pero tenemos que hacer algunas
otras cosas primero. Entonces, continuemos con
la siguiente. Creo que este es un
buen punto de tope para este. Yo
quiero verte entonces. Adiós.
106. Sistema de interacción de rango mínimo: Hola, y bienvenidos a
Game Design Workshop y Real Engine five
Procesal Dungeon action RPG curso de creación Anteriormente, casi terminamos
con nuestra secuencia de interacción. Terminamos en realidad
con nuestra búsqueda artículos si estamos teniendo elementos
parte de la función. Pero comprobamos si es válido. Comprobamos si el actor ha
cavado no conecte al actor. Sí, sí necesitamos
conectar al actor. Si tiene pato el i, y lo comprobamos con una sucursal. Si no es un actor con yo, estamos limpiando
todas nuestras selecciones a una función que termina hover en elementos actuales o anteriores de
hover en ambos Y luego procedimos a
verificar desde la rama verdadera, si nuestro objetivo actual es el
objetivo que estamos pegando Si es así, no hacemos nada. Si no lo es, entonces estamos configurando nuestro actual
hover para terminar hover Estamos configurando nuestro
hover actual a anterior, y luego estamos configurando
el elemento que estamos rondando a nuestro hover actual
y configuramos nuestro personal hover Ahora bien, en caso de que nuestro actual
hover no fuera válido, entonces no teníamos nada en blanco Solo estamos poniendo
nuestro actual hover al actor objetivo Luego procedimos a ir
a nuestra acción de realzar IA A Un clic de destino establecido Eso es horrible. Bien. la rama terminada
de la acción, que tiene algunas reglas por sí sola. Y básicamente,
mantuvimos la regla de que si se presiona en
cierto umbral, no
estamos interactuando. Y no terminamos de interactuar porque sí necesitamos
algunas cosas extra. Y una de las cosas extras es que borramos la parada de movimiento, así que vamos a
hacer una de las nuestras. Oh, vamos a crear un evento personalizado. Llamemos a esto parada. movimiento. Y vamos a crear un bleion.
Llamemos a esto bleion movimiento. Y pongámoslo compañeros porque cuando dejemos de
movernos, esto bajaría Cuando dejamos de mover esto, queremos que esto sea cierto. Y luego vamos a comprobarlo. O comprobar si el control p es válido porque no queremos
marcapasos antes de que comience el juego Y vamos a agregar entrada que sería cero si el
punto del controlador es válido. Pero esto nos hace dejar de movernos. ¿Y por qué necesitamos esta variable? Bueno, tenemos este movimiento de
dos funciones por aquí. No lo vamos a usar. Haremos nuestra propia
función en el evento tick. Pero yo estoy haciendo una digresión. Aún no
estamos ahí. Entonces, hay algunos otros
puntos que necesitamos para dejar de movernos además de interactuar. Y eso sería
cuando estamos apuntando, cuando nos estamos muriendo. Pienso cuando estamos
tomando algún daño. Entonces, volvamos
a nuestro personaje. Vamos a nuestro objetivo. Necesitamos la
referencia del controlador aquí, vamos a traer el controlador BP. Vamos un poco más allá. Vamos a movernos. Lo que nos
lleva hasta aquí. Ahora, personaje, pasamos, queremos que esto suceda
en cualquier daño, y eso sería después de
quitarle algo de salud. Y el último lugar, claro, que lo necesitamos es a nuestra muerte, ponlo después de tocar sonido. Bien. Sí, después de que
coloquemos ahora, está bien. No importa porque
esto apagará nuestro bulling y no
podremos volver a encenderlo Oh. Agregamos nuestra parada de movernos a
todas partes que se necesitaba. Que el lugar del que
empezamos a hablar, que lo vamos a agregar, y esa sería la función de
interactuar. Oh, ¿qué hace nuestra función de
interacción? Comprueba si nuestra
corriente es válida. Y luego enviamos mensaje. Correcto. Y aquí deja de moverte. Entonces básicamente, ahora, podemos interactuar con nuestras
cosas en el mundo. Pero también porque hemos
estropeado esta función, probablemente no
podremos movernos Comprobemos esto muy rápido. Sí, no podemos
movernos en este momento. Pero somos capaces de disparar y
movernos mientras somos Impresionantes. Y entonces no podemos movernos. Increíble. Solo funciona
afuera, dentro del laberinto, realmente no
funciona, pero afuera, estamos consiguiendo un punto que
deberíamos estar obteniendo. En fin, ¿importa
porque ya tenemos las
herramientas para arreglarlo? Solo necesitamos un
poco de código extra. Nosotros sí tenemos el recurso.
Quiero decir que necesitamos. No. Lo que vamos
a hacer es te En realidad, sí
necesitamos una sucursal,
pero solo necesitamos una Vamos a eliminar el seguimiento. No necesitamos el
seguimiento. Sí necesitamos el destino del elenco
y solo falso. Porque cuando
no golpeamos a un enemigo, es entonces cuando estamos caminando. Y no queremos estar
caminando en ninguna situación. Queremos caminar cuando
estamos en estado normal. Lleguemos a su estado. Conectemos normal. Ahora si somos normales y
estamos golpeando a un enemigo, vamos a disparar.
Eso se hace fácilmente. Lo que vamos a hacer para eso es acudir a nuestro mecánico de
tiro. El rodaje por aquí. Y claro, vamos
a hacer trampa un poco de nuevo. Vamos a usar
esta parte por aquí porque esta
pregunta se a través de nuestro controlador de pod de juego, y vamos a
hacer un evento personalizado. Llámalo. Dos y sólo
vamos a conectarnos por aquí. Ahora, desde el controlador del jugador, podemos llamar desde la referencia
del jugador, tiro. Ahora cuando estamos azotando
sobre algo, somos capaces de dispararle. Pero otra vez, para disparar a algo deberíamos
poder movernos. Entonces, cuando tenemos un
destino de caché guardado, cuando tenemos nuestro
destino de caché guardado, que en realidad es nuestro calor, o ubicación del cursor,
podemos establecer el movimiento. Y como vamos
a movernos ya que
eliminamos la mudanza a, básicamente, lo que no agrega
una simple ubicación de movimiento. Creo que el anterior agrega
solo la entrada de movimiento publicitario. En realidad en la función seguir. Sí, tenía la entrada de
movimiento add. No. Vamos a esta función, pero actualizado un poco. Porque vamos
a llamarlo en ti, y esto estaría agregando constantemente un movimiento a
nuestra ubicación actual. Hagamos un chequeo o x e
y de la ubicación de nuestro estanque. Entonces rompamos este vor aquí. Rompamos la ubicación de la
que vienen. Este vector por
aquí, por supuesto, siendo la
ubicación aún actor, nuestro estanque. A vamos a comprobar si
esto es casi igual y es para x y con la x e y de
nuestra ubicación entrante. Vamos a una tolerancia de 15, siendo
este valor correcto porque lo que
vamos a hacer más
adelante significa que nuestro personaje puede tener el brazo realmente extendido
por el arma. Si traemos nuestro
ratón a esta zona, Y va a ser un problema porque si estamos tratando de apuntar aquí y nuestra
arma muscular está aquí. Y esto crea un problema. Se va
a tratar de disparar hacia adentro, y digamos, no,
esto no es posible Por lo que vamos a crear un
área alrededor del jugador, que el ratón en realidad
cuando entra en esta área, se mueve hacia este lado
o este lado basado en algunas reglas o este lado
o en base a algunas reglas. Tendremos una zona muerta
básicamente alrededor de nuestro personaje. Ahora, vamos a comprobar
si esto es igual, casi igual a ambos, porque si uno de
ellos no lo es, muévete. Pero si son iguales, deberíamos poner en movimiento dos pliegues. Llegamos a nuestro destino. Volver al gráfico de eventos.
Llamemos evento ártico. Esto se va a
llamar perfram, y lo vamos a hacer es válido Nuestro personaje, los
personajes aquí. Y luego vamos a hacer
una secuencia porque
vamos a agregar algunas cosas
a este evento tick. Ahora, pongamos una rama aquí, resto de la secuencia y
preguntemos si nos estamos moviendo. Si nos estamos moviendo,
entonces estamos siguiendo. Para la ubicación, el destino de
caché. Compilar y guardar.
Teóticamente, ahora podemos caminar No. Incluso el anterior. Y caminar. Conozco la razón porque nuestro estado claro
perno muerto normal, que no se actualiza ya que no
hemos actualizado el
estado predeterminado del personaje, y el estado predeterminado
del personaje es normal
porque lo cambiamos. Pero no lo hace, entonces
no actualiza el controlador. Ahora así podremos mover No, y el punto de retorno, siempre el centro
del personaje, que está afuera, no lo es. Por supuesto, porque no hemos completado esa parte
de la función. Esa parte de nuestro lote más de a. no
hemos completado la
parte de la función, si nosotros si golpeamos un objetivo, y no es un
enemigo, ¿qué hacemos? Entonces hagamos esto
en la siguiente. Y te dejaré por ahora. Adiós.
107. Terminación de disparo estático y puntería: Hola, y bienvenidos a Taller de Diseño de
Juegos y motor
real cinco llamadas de
creación de PZ de acción de
Dungeon procesal creación de PZ de acción de
Dungeon Anteriormente, comenzamos con
nuestra función de interacción, pero terminamos terminando
en el movimiento. También terminamos la función de
interacción, espero. Revisaremos cuándo podemos movernos y elegiremos algún cofre o un artículo. Ahora, lo que hicimos a continuación fue que creamos la mecánica de
stop move, que en realidad convierte nuestro
lingote de movimiento en caídas y agrega una entrada de movimiento de cero si nuestro
controlador de jugador es válido Si nuestro peón jugador es válido. Lo siento. Entonces procedimos
que en nuestro disparador, esto significa que cuando
empezamos a hacer clic, sigue funcionando ya
que
estamos manteniendo pulsada el click U vamos a repasarlo una vez más. Primero, verificamos si
nuestro jugador es válido, luego si nuestro ho es válido porque si
estamos flotando un ítem, no
deberíamos movernos
hacia ese ítem Si queremos movernos
hacia ese ítem, si por ejemplo, no
estamos en rango, podríamos hacer algún código aquí, si no estamos en
rango del ítem, si nos movemos hacia el ítem, si no, lo que queremos hacer esto. Oh, entonces comprobamos si nuestro
jugador está en estado normal. Entonces, cuando nuestro personaje
está en normal, comprobamos si estamos golpeando a
un enemigo con nuestro cursor, o si no lo
estamos, estamos fijando la ubicación de nuestro calor a nuestro destino de
lanzamiento, y estamos poniendo el
movimiento a true. Si estamos solo estamos filmando que creamos un evento personalizado aquí en rodaje desde la sucursal porque no
necesitamos esto, y está siguiendo
la misma lógica. Ahora, de vuelta a nuestro controlador, La razón por la que estamos
estableciendo el movimiento verdadero, y estamos configurando el
destino del elenco es porque nuestro movimiento está controlado
por nuestro evento tick, el
cual preguntamos
si el jugador es válido, si nuestra referencia
del jugador es válida, y luego estamos haciendo una comprobación
si nos estamos moviendo o no. Si lo estamos, usamos la función follow
que areal nos proporciona, que obtiene el controlador de par
el estanque controlado, obtiene su ubicación, obtiene
vector de dirección único de dos, y proporciona eso
para agregar entrada de movimiento Actualizamos esta función
comprobando si llegamos a
nuestro destino
comprobando los valores x e y del destino y
nuestra ubicación actual. Y si es cierto, entonces ya no nos estamos moviendo porque llegamos a
nuestro destino. Y nos dimos cuenta de que todavía
no podemos movernos
porque si vamos a nuestra um get location
under cursor function, podemos ver que nuestra
ubicación get no se está
estableciendo cuando estamos golpeando
algo con nuestra línea de traza. Bueno, esa lógica simplemente no lo es. Lo que vamos a hacer es conseguir nuestro
resultado de calor aquí en realidad, porque vamos a
necesitar valores de él. Pero vamos
a necesitar preguntar si es el actor que
calentamos un enemigo. Entonces como etiqueta e. pero si
no tiene la etiqueta E, entonces no estamos golpeando a un enemigo. Vamos a hacer la lógica
de golpear a un enemigo después. Pero ahora por ahora,
vamos a conectar falso a aquí. A lo mejor necesitamos sacar
esto un poco más adelante. Eso está bien. Esto comienza a convertirse en un espagueti familiar del tamaño de una
porción. Pero creo que está bien. Ahora, si vamos en juego, en realidad
podemos
movernos, podemos disparar a Ida. Pero el problema
viene con apuntar. No podemos apuntar. Puedo presionar shift y
puedo empezar a disparar, pero no puedo apuntar donde disparo. Arreglemos esto. Vamos a necesitar por qué esto
persiste en el movimiento en solo voy a
poner un es válido aquí Ojalá esto lo arregle. Sí, no más errores. Por último. Ahora, tendremos que apuntar a
donde estamos filmando. Y para ello,
en realidad necesitamos crear el sistema del que hablamos que entre un cierto rango, va a compensar Nuestro vector hacia adelante y
nuestra puntería, nuestra rotación. Solo vamos y
agreguemos realmente rápido a nuestra ubicación de get
debajo del cursor, puro. Tenemos que cambiar
este nombre de todos modos. Vamos a agregar dos variables
en la nota de retorno. Uno de ellos sería un vector. Llamemos a este objetivo hacia adelante. F, ¿no? Tal vez. Y entonces necesitamos otro vector pero
rotador esta vez Llamemos a esto de Fation, que en realidad
incluirá las normales, pero de todas formas, promovamos a estas
dos en variables locales L et's los nombra
de eso sobre dame así FA y de strtation, de set Vamos a ponerlos en algo. Vamos a poner a demostrar
el problema, en realidad, lo que está pasando
aquí, aquí, para nuestro offset para A, vamos a conseguir
nuestro personaje. Una referencia,
vamos a sacar adelante vector actor adelante vector. Y para rotación. Consigamos la ubicación del actor, y consigamos nuestro resultado de calor, que es copiarlo, aquí está, obtener nuestro resultado de calor, y vamos a encontrar
del actor en realidad. Rotación. Ningún pariente, lo siento. Rotación, y va a
comenzar desde nuestro personaje, y va
a terminar con nuestro resultado de calor. Ahora bien, para que esto funcione, necesitamos algún código. Tenemos que estar estableciendo
en algún lugar la rotación, e iremos a nuestro evento e, y vamos a ir a partir de
entonces uno de nuestra secuencia. Entonces, vamos a
encender el estado del jugador. Porque hay algunas
veces que no
queremos cambiar nuestra rotación de
personajes. Básicamente,
sólo hay dos veces que sí
queremos cambiar
la rotación de caracteres. Es de lo normal o de la ruta A. Re aquí.
Puedo conectar ambos, y vamos a conseguir
nuestra referencia de juego y esa rotación. Rotación de Ca. Vamos a
necesitar algo de espacio aquí. Un poquito más.
Creo que está bien. Oh, lo que vamos a hacer
es que vamos a nuestro inter. Vamos a hacerlo constante. Esto significa rotar en un valor constante
basado en un tempo
basado en nuestro Delta T. Para Delta T.
Vamos a usar el evento tick. Esto hace que sea un marco amable
relevante, pero está bien. Y para la velocidad,
vamos a usar 100. Ahora bien, ¿cuál es nuestro actual? Bueno, vamos a conseguir
nuestra referencia de jugador. Vamos a conseguir rotación. En realidad vamos a
usar esto o actual, pero el objetivo, no
cambiamos la x e y vamos a mantener lo mismo,
así que vamos a esto. Vamos a romper esto. Roll y pitch
permanecerán igual. Yo, que está dando la vuelta, será el único
que está cambiando. Así que vamos a obtener la ubicación de nuestro mouse
en la función occurs. Rompe esto. Vamos a conectar esto. Y una cosa más
antes de que terminemos. Volvamos a nuestro personaje
P de arriba hacia abajo. Vayamos a nuestra bala de engendro y cambiemos este vector hacia adelante que teníamos de la cápsula, que son los delanteros
nosotros nuestra bala Consigamos nuestra referencia de
controlador de jugador. Vamos a ponernos
sin el git. No. Ese no es el nombre. Debe tener un get get pacientes Obtener en el resultado bajo Kersor Esa es nuestra función. Pero éste. Vayamos a nuestra ubicación
gt bajo la función
Kursor.
Vamos a ver eso. Esta función por defecto está protegida por especificador de
acceso, lo
que significa que no puede ser llamada por nada más.
Hagámoslo público. Podemos acceder a él. Voy a conseguir la
ubicación debajo del Cursor, aquí estamos, y
vamos a conseguir nuestro objetivo de desplazamiento hacia adelante
y conectados aquí. Vamos a jugar. Esto nos dará algún
tipo de rotación. Y como pueden ver,
rote hacia mi ratón. Pero, ¿ve que hay un pequeño desplazamiento a la bala
en comparación con donde hago clic? Esto se debe a que
estamos en el mundo tres D, y estamos tratando de
apuntar en un mundo de dos d. Entonces en algunos lugares, está bien, es directo, como si
vamos a este ángulo, podemos ver que es directo en
la bala en el ratón, o Hay un ángulo
que es casi directo, y cualquier otro ángulo, empieza a realmente compensarse. Ahora, vamos a hacer los
cálculos requeridos para cambiar este offset, hacer que apunte correctamente. Así que volvamos a nuestra
ubicación de obtención bajo ers pure, y vamos a necesitar mucho
espacio para arrastrar de esta
manera por aquí. A lo mejor es suficiente espacio, y vamos a estar
desconectando a estos dos L et's comienzan calculando
la dirección de nuestro hocico. Vamos a conseguir
la referencia del jugador, y vamos a conseguir bozal De nuestro hocico, vamos
a conseguir el catión mundial. En realidad solo necesitamos la z aquí, voy a romper esto. La dirección hacia dos
sería nuestra ubicación de calor. Consigamos nuestra ubicación de calor. También rompamos esto. ¿Por qué hacemos esto? ¿Por qué
necesitamos encontrar la dirección? Porque necesitamos saber la
dirección del arma al objetivo donde apunta el
ratón para ajustar la puntería
correctamente en consecuencia. Hagamos la resta para encontrar la dirección que menos Ahora tendremos que calcular la dirección desde la cámara
hasta el mouse git porque la perspectiva de
la cámara
afecta a cómo vemos y apuntamos a los objetivos debido a
nuestra vista isométrica Lo que realmente hacemos es y
vamos a convertir la
ubicación en espacio mundial. Conectemos la y también. Es algo importante. Y la siguiente ubicación, que necesitamos es la cámara,
así conseguimos a nuestro jugador. Tenemos a nuestro jugador aquí. Busquemos cámara. Consigamos la ubicación de la palabra.
Restar estos dos Obtenga la dirección de la
cámara hacia el calor del mouse, la ubicación de la palabra del mouse. El siguiente paso sería
normalizar esta escala. Ahora,
normalicemos los componentes z de estas dos diferencias
a Para ajustar el vector de dirección, considerando las diferencias de altura
entre la cámara y el arma y el
objetivo porque todos estos tres son diferentes ejes Z. Ahora bien, para los que son nuevos en matemáticas, ¿qué es la normalización? Bueno, es el
proceso de ajustar los valores medidos en diferentes
escalas a una escala común, si eso tiene sentido. La forma en que vamos a hacer
esto, vamos a romper este resultado. Vamos a dividir. Es el resultado por la z, la dirección del resultado de la dirección
de nuestro músculo a nuestro calor en comparación con
nuestro calor y la dirección resultado de nuestra cámara y nuestro
ratón en la pantalla. Y lo que tenemos que hacer,
tenemos que convertirlo en un vector. Es una división sabia de elementos. Así que vamos a cambiar
este pin de salida a un vector. Como puede ver, esta división se convirtió en una división sabia de elementos, que es una X dividida por x, A por lo que todos estos
valores son iguales. Y esto compensará nuestra algata. Sí necesitamos
escalar este factor a nuestra diferencia de cámara a ratón, Multipliquemos esto con el resultado de la resta con esta dirección básicamente, y vamos a ajustarlo
a nuestra ubicación de calor Así que vamos a agregar
nuestra ubicación de calor aquí. Ya que estamos usando nuestro músculo. Utilicemos de nuevo nuestro hocico, para encontrar la mirada a la rotación
con el nuevo offset Vamos a conseguir la rotación
mundial. Vamos a conectarnos con el arte. Entonces vamos a conectar esto para encontrar y
conectemos esto aquí, y vamos a conseguir mundo. A y conectarlo por aquí. Pero no hemos terminado, pero
veamos qué creamos. Ya ves donde hago clic, en realidad
apunto. Aquí es donde
irá la bala, donde hago clic. Pero si voy a acercarme
a mi personaje, se
puede ver de repente una
bala vino por detrás. Este en realidad choca
con un personaje. Nos estamos disparando a nosotros mismos. Creo que puedo conseguir que vuelva a
disparar por detrás. ¿Vías que esto era increíble? Además, nuestra animación es getering. Se puede ver que la
animación geters mucho porque estamos demasiado
cerca del hocico Entonces en este caso, la prioridad del
modelo tiene prioridad la rotación del modelo toma más prioridad que el hocico
porque estamos demasiado cerca Si me voy un poco más
lejos, todo está bien. Si voy demasiado cerca,
Comenzamos el jittering y nuestro tiroteo
se vuelve muy malo Ahora, creo que esto es
suficiente para éste. Vamos a arreglar
esto en la siguiente. Adiós.
108. Bajo la mecánica del cursor enemigo: O Hola, y bienvenidos a Game
Design Workshop, real Engine five procesal Dungeon action RPG curso de
creación Anteriormente, terminamos con las matemáticas para
nuestro desplazamiento de puntería. Obtuvimos nuestra dirección de nuestro músculo a
nuestra dirección de calor, y obtuvimos nuestra dirección
desde nuestra ubicación de palabras
hasta desde nuestra ubicación de sala de cámaras hasta nuestro mouse una ubicación de
sala de pantalla. Obtuvimos la dirección,
normalizamos el eje Z a partir de estos dos, y le dimos la escala de la dirección base en la normalización aquí, y ajustamos
la ubicación de calor para
dar cuenta del desplazamiento de
armas. Entonces agregamos la ubicación de calor a este resultado, esta dirección de
escala. Ahora, Pero tenemos que
hacer arreglar el problema que estamos teniendo eso
cuando estamos demasiado cerca, entonces esto es el targeting
es muy, muy compensado. Necesitamos verificar solo
por una distancia si nuestro resultado de comer básicamente es mayor que una distancia o menor que una
distancia en comparación con nuestro personaje crear
pequeño círculo que hablamos
alrededor de nuestro personaje. Y tengo un valor en mente. Entonces pongamos una sucursal aquí. C el Conectar esto a
la sucursal, cae aquí. Vamos a co-representante aquí. Y qué vamos a
hacer pedirte distancia menos. ¿Para qué es menos?
Voy a conseguir un vector. Para hacer 107 aquí. Este es el valor que descubrí, me encabeza jiggling y aparece un tener valores equivocados básicamente F vector uno,
necesitamos nuestro músculo. Vector dos, necesitamos
el desplazamiento de una ubicación. Y cuando esto es dos, cuando la distancia es más alta, así que estamos más
cerca de nuestro personaje, este círculo bajo personaje, porque esto es
radio básicamente. Conectémonos aquí antes que nada. Vamos a necesitar los nodos
que tenemos aquí. No necesitamos la ubicación. Solo necesitamos la mirada de hallazgo. Y esto comenzará aquí. Este será vector hacia adelante. Vamos a traer fondo
opuesto va a estar aquí. ¿Verdad? Vamos
a conectar esto, y nuestro objetivo
vuelve a ser el calor compensado. Vamos a conectarnos
a este calor de aquí. Y esto lo arregla. Vamos a la arcilla. Y como podemos ver,
podemos disparar cerca de
nuestro carter y
va a disparar recto. S. Tenemos tiroteo, ahora podemos apuntar a donde queramos. Tenemos que aumentar el tamaño
objetivo de esto. Es pequeño, es longitud de
carácter, y esto es algo enorme. Pero ahora podemos
movernos y disparar. Pero no podemos disparar cuando
estamos flotando sobre un objetivo. Deberíamos poder
mudarnos aquí tal vez. No hemos hecho la extensión de
plataforma tal vez. realidad no hemos probado. Nosotros lo hicimos. Nosotros lo hicimos, no vamos. Vamos a deb después. lo que debemos continuar es con lo que sucede cuando estamos
flotando sobre un enemigo Esto es algo importante. Simplemente no queremos
estar disparando solo con un
turno presionando y disparando. Queremos poder filmar con picking también, 100 gaming. Entonces, tenemos una
nueva ubicación de calor. Tenemos una ubicación
de calor de un objetivo ahora. No tener en el suelo, que es el ratón. Si quisiéramos un calor más
específico, este sería el punto de impacto. Esta ubicación sería, por ejemplo, donde
golpeamos el blanco. Tenía cuerpo. Pero para nosotros,
realmente no importa, pero promovamos esto
a nuestra ubicación de calor. Entonces voy a conseguir
la ubicación de calor. Y voy a ponerla en
el punto de impacto. Antes de que empecemos a
disparar o cualquier cosa, sí necesitamos verificarte si
estamos perdidos básicamente, si estamos en línea de visión, porque no puedes estar
disparando a través de paredes. Me gusta, Bien, esta ubicación sombrero viene de nuestra
cámara a nuestro ratón. Pero no sabe
si nuestro jugador tiene un muro entre él y
el ratón y el objeto. Entonces lo que vamos a hacer paréntesis, escogemos artículos a través de
paredes de todos modos No hagamos eso
por nuestro tiroteo. Entonces vamos a lanzar
una línea trazada por canal. Y la ubicación estadística
sería hocico. Encontremos la ubicación de la
sala de hocico. Donde final estaría esta broca, corte fino, rotación. El objetivo es la ubicación. Los arranques son hocico, vector. Agreguemos este vector hacia adelante
a nuestra fase de ubicación de barrio. Sí necesitamos darle un rango. Entonces multipliquemos esto. Integer, que este
es un rango 2000. Después lo agregamos a la ubicación de
nuestra junta. Fard en este rango y en el de porque básicamente
esto es un punto Entonces un punto de distancia, donde en el mundo debe
estar ir esta distancia. Tiene una dirección
también, claro, porque es hacia adelante,
y así es como mucho. Ne trace podría ser
un poco fácil. Tal vez podamos, no importa. Dejémosle
trazo de línea. Yo diría para que sea una esfera
con un radio, así que no podemos disparar
a través de brechas muy pequeñas, pero bien, tal vez la
bala colisionará Si no choca, pero
debemos ignorar a un actor. Entonces ve a, y el actor que estamos
ignorando es nuestro jugador Obtengo nuestra referencia de jugador
y la conecto aquí. Ahora bien, si hacemos calor o si no lo
hacemos, si hacemos calor, significa
Básicamente, no
golpeamos significa que no
golpeamos a un enemigo, así que deberíamos apagar
al enemigo él. En realidad, no necesitamos
apagarlo. Vuelve aquí. Entonces nuestro calor es nuestra ubicación
underma. Ahora bien, si volvemos nuestro
calor a nuestro nuevo resultado, que sería el
nuevo punto de impacto, desde nuestro arma desde nuestro
músculo hasta el enemigo. Si el actor tiene un
objetivo tiene un actor de etiqueta, aquí está, como g E. Vamos a
fijarlo en consecuencia porque podríamos estar pegando a
otras cosas, no a los enemigos. Podríamos estar golpeando paredes. Y en realidad, nuestro
canal de rastreo debería ser cámara, no visibilidad
porque así es como
hemos configurado las, las colisiones del
laberinto Ahora, lo que queremos hacer
es seleccionar elementos claros. Porque en este punto, en las anulaciones de tiro,
no queremos hacer clic para estar
interactuando con los elementos Queremos que esté disparando. Y lo que queda es
establecer realmente nuestros vectores
y compensaciones sobre, y necesitamos el nodo de retorno también porque este es otro
punto al final de la función Repac esta copia pega esto
necesitamos una glucaroación fina. Necesitamos un Podemos para recrearlos. Aquí aquí. Y para nuestra rotación, consigamos nuestra ubicación de actor,
nuestra ubicación de juego de la ubicación de actores de am
controllers. Y para nuestro objetivo, de cose
necesitamos nuestra ubicación de calor. Ahora, para nuestro off set de am, necesitamos nuestro mcle
vamos a buscar nuestro hocico Lo que necesitamos es estar apuntando
hacia lo que calentamos. Oh. Esto no es un calor
de traza de línea. Esta es una esfera de calor traza, lo que la calentamos primero. Oh, vamos a conseguir esto, A. Pero necesitamos crear
un rumbo ahí. Para hacer eso, vamos
a queso de nuevo, vamos a c rotación, que objetivo sería
este, luego vector hacia adelante. Obtener vector adelante
a partir de estas rotaciones, y vamos a
conectar esto a nuestro offset. Y
eso sería todo. Vamos a disparar las cosas. Y todavía no podemos filmar
las cosas. La razón por la que no
ha terminado nuestro evento click. No. En realidad, esa no es la razón. El motivo es porque no
hemos terminado el cambio del mouse type de, cual seremos
responsables si estamos golpeando a
un enemigo o no también, pero terminemos con el evento
click porque
hemos dejado muy pocos nodos. Bueno, un nodo que
debemos hacer es que movimiento cae cuando nuestro
umbral es menor. Eso es pasar a que
podamos patear y movernos. Verdadero sobre verdadero, falso y falso. Entonces esto realmente detendrá
el pequeño bicho que vimos. Pero hice clic y empezó a
moverse sin fin. Ahora, si suelto mi
mouse, deja de moverse. Y cuando hago clic, antes cuando hice clic en mi
mouse y lo solté, el personaje siguió moviéndose Pero terminemos
con nuestro ataque. Esto fue un pequeño paréntesis. Consideremos esto como
parentinos para hacer el ataque. Tenemos que hacer el ursor para cambiar de
normal a cross ers, y al mismo tiempo, cambiar nuestro estado de carácter
para apuntar básicamente A partir de nuestro evento tick, esto tiene que estar
sucediendo constantemente. Al mover el ratón, necesitamos saber instantáneamente si
algo debajo de nosotros. Yo enemigos debajo de nosotros.
Vamos a hacer una sucursal. Vamos a
traer nuestra función obtener ubicación bajo Cursor. Y vamos a conectarlo. Habitación. Entonces
vamos a hacer una vez. Ambas o caídas porque pase
lo que pase
tiene que pasar una vez, y cada uno se restablecerá entre sí. Vamos a hacer una secuencia,
una copia pégala ambas
y lo primero que
hacen es que restablecen otra. Ahora bien, ¿qué es lo
siguiente que hacen? Cambian el mo si estamos golpeando a
un enemigo a través, vamos a cruzar el suyo, que es el ratón que diseñamos Hemos anulado
con nuestro ratón rojo. Es esto. Aquí tenemos un problema. Si estamos apuntando, no deberíamos
estar cambiando el cursor, así que queremos seleccionar. Vamos a comprobar si
nuestro estado jugador es igual, es igual en igual. Dos a. si es verdad, entonces vamos a
mantener el punto de mira Si no lo es, vamos
a volver al default. Si lo dejo así, hay un problema con
la D real no competir. Qué está funcionando. Trabajando. ¿Todo bien? Creo que
vamos a resolver este próximo. Y te voy a
ver entonces, adiós.
109. Correcciones de plantilla posterior al proceso y detección de enemigos: Hola, y bienvenidos de nuevo al taller de Diseño de
Juegos y cinco procedimientos de Motor
Real creación de RP de acción
Dungeon Anteriormente, terminamos con nuestro
personaje de arriba hacia abajo apuntando parte de nuestro Este
no es un controlador de juego.
Este es un personaje. Este es un controlador. Así que hemos
terminado con nuestra parte de G ubicación bajo la función sor
en nuestro controlador de juego. Pero si estamos
apuntando a un enemigo, entonces estamos comprobando. En realidad estamos
lanzando una línea
de rastreo desde nuestra ubicación de impacto, que es el punto de impacto. Hacia bien hacia ese punto de impacto térmico
desde nuestro músculo. Ahora bien, si esa línea
traza calor algo, significa que podríamos tener un enemigo, podríamos haber golpeado una
pared. No lo sabemos. Si no golpea nada, lo cual probablemente
nunca sea el caso, entonces volvemos nuestro calor a
nuestro calor normal y luego suceden las
siguientes cosas. Pero si golpeamos algo, estamos comprobando si
es enemigo o no. Así que eso establece la variable temporal
enemiga de calor. Luego nos fuimos
y despejamos la
selección de elemento porque si tuviéramos
un artículo en nuestro selecto, no
deberíamos tenerlo
porque nuestro clic interactuaría en lugar de disparar. Y luego continuamos con el
establecimiento de las compensaciones de rotación y una de nuestro músculo
a nuestro actor de calor Obtuvimos el vector hacia adelante de rotación azul
fina para
establecer el vector hacia adelante, y pasamos de nuestro jugador a nuestra ubicación de calor para encontrar la rotación a la
que necesitamos estar enfrentando. Ahora, tuvimos algunos problemas. También terminamos nuestro evento click como
un pequeño paréntesis para detener el movimiento cuando
soltamos el click
porque se movía constantemente Y luego procedimos a
cambiar para cambiar
el cursor del ratón en
función de si estamos
golpeando a un enemigo o no, con tener que hacer los eventos de
uno en base a esta rama de aquí,
y ellos se están reiniciando
entre sí,
y estamos configurando
el cursor y ellos se están reiniciando
entre sí,
y estamos del ratón Ahora bien, lo que
quería mostrar que no necesariamente sucede
cada vez es que el mouse pueda restablecer su posición cuando estamos
cambiando el widget. Puede tener algunos problemas. Pero no
logramos demostrarlo
porque había un
problema con la focalización. Supongo que es
un problema de colisión. Vamos a comprobarlo. Pero lo que deberíamos
hacer como una solución alternativa, podría estar arreglado ahora mismo. Pero vamos a
establecer ul position. Y la posición que
vamos a poner
al ratón es la posición del ratón. Entonces vamos a
conseguir la posición s. Y portón. Redondea esta carroza. Lo hace automáticamente
si
intentas conectarlo a integer, y esto mantendrá nuestra
posición básicamente en su lugar. Oh. Vamos a averiguar
qué está pasando. ¿Por qué no lo pudimos? Vamos a recrear esta situación. Teníamos una puerta principal
que no podíamos disparar. Hay una puerta del infierno. Vamos a traer el carácter
de la baldosa, el personaje. Al lado del infierno bop. Aquí nos dispara. Voy a cerrar de nuevo
el sonido. Y voy a
recuperar Bien. Cuando selecciono una puerta,
no pasa nada. Entonces veamos qué
está pasando en nuestra focalización. Voy a conseguir
el controlador btn, ir a desconectarlo y
traerlo por aquí Este lo atracan. No estoy segura. Desacoplarlo, tal vez. Voy a ir a la función
t ubicación bajo Cursor. Esta es la función que
queremos estar comprobando. Y lo que nos importa
es esta rama de
aquí si puede encontrar
un enemigo o no. Ahora, para mostrar lo que está pasando. Tenemos que dar click sobre esto aquí. Podría decir que no el error, pero podría ser también auto aquí. Ahora podemos ver la línea de errores. Así que vamos a
traerlo por aquí. Si no apunto a nada,
va correctamente. Pero si voy al blanco,
sí, no pasa nada. No creo que sea porque
tenemos una pequeña colisión. Creo que es porque dejé la colisión para ser
explicada más adelante. Pero hemos hecho
algunas explicaciones. Vamos a la cápsula. Lo que
realmente tenemos que hacer es cambiar los ajustes preestablecidos de colisión a personalizados, y queremos bloquear la cámara Podemos superponernos con
cualquier otra cosa, pero queremos estar
bloqueando la cámara. El canal de colisión de cámara, que es irrelevante para
lo que dice cámara Acabamos de decidir que
esta respuesta de carrera va a estar bloqueando para nosotros y
basaremos nuestros hits en. Realmente no importa
esta es la razón por la que elegimos cámaras porque no importa
lo que diga aquí. Importa cómo elegimos
usar el sistema. Estos son solo los sets
que Unreal ha establecido, pero es sabiamente
usarlos tal y como se describen
debido a la gran cantidad de
mecánicas que golpean debido a la gran cantidad de al motor
que funcionan con esta lógica Pero de nuevo, cuando estás
creando tus propias cosas, puedes hacer la
programación que quieras. Al menos funciona, y
otras personas pueden leerlo. Vamos a presionar play. Creo que esto solucionará el problema. Un ratón debería ponerse
rojo cuando encontremos que la puerta
L no tiene en este mapa, así que
voy a intentarlo de nuevo. Vamos a tener bastante aquí. Ciento de verdad, el ratón se pone rojo. Es como la puerta,
y puedo disparar a leer. Ahí puedo abrir. Mi salud está en uno, y paso en una trampa. ¿Dónde está mi
salud de MC? Comienza a jugar. Aquí estamos. La salud de Max, digamos que vuelve a las diez. Entonces no morimos instantáneamente. Si quieres ser realmente
cruel, puedes morir instantáneamente. M jugadores pueden morir
instantáneamente cuando
pisan una trampa y
tienen una salud. Ahora bien, lo último
que deberíamos hacer por nuestro personaje sería
ir a la configuración del proyecto. Eso es para tencel Aston
profundidad stan sil pase, y en vez de habilitar
tenerlo habilitado con sencil Lo siguiente que haremos es
ir a nuestro nivel y traer un post procesamiento incorrecto. C. Volumen de proceso
posterior,
y queremos
seleccionar para ser mundo de palabras. ¿Cuál era el nombre? Lo que estamos buscando es ser infinitos. Sí, desató esta extensión
infinita. Lo siguiente que
tenemos que hacer es ir a nuestros materiales de proceso. Encuéntralos. Vamos a agregar un material
a esta matriz. Sería Sería o proceso al. M post proceso. Creo que hay una instancia. M pose proceso inst,
eso sería todo. Y luego deberíamos ir
a nuestro personaje o a nuestra
costumbre de malla estática . Tenemos que habilitarlo. Entonces busquemos profundidad personalizada de
renderizado. Sí, queremos esto, y
vamos a establecer este 21. Ahora, teóricamente, podemos
ver a nuestro jugador detrás de las paredes. Sí, aquí está. Y como funciona es
que nuestro material, vamos solo por el
material por un segundo. Lo sé. Esto me ha sido explicado. Esta es la instancia, esta. Entonces básicamente,
acecha entre el color
Básico, y el
que queremos detrás
del objetivo que aparezca, B es ese objetivo Y esto lo decide una
máscara como esta de aquí, que esta es la parte cambiar el
material en sí, y esto es sobre qué
material muestra básicamente. Entonces porque tenemos
el valor uno, donde sí tenemos
muchos valores uno,
pero de todos modos, creo que es este, si este fuera un
valor diferente, creo, afectaría a qué profundidad
snsiil dijimos, si he entendido
esto correctamente Entonces básicamente, si eso fuera un dos en nuestro personaje,
este debería ser dos. Y porque todo lo
demás en el mundo es cero, veríamos a los
dos, por ejemplo. O creo que simplemente funciona con el uno y cualquier
otra cosa en el mundo. Sí, creo que ya está. Creo que todo en el mundo es cero. Entonces porque esto se convirtió en uno, podemos verlo detrás de las paredes. Y básicamente, eso
es todo para nuestro personaje. Hemos terminado nuestro carácter. Entonces ahora Turn tiene un I y todas las
cosas de depuración que necesitamos hacer. Probemos una cosa más. Bien, el elevador
no funciona, pero ¿funciona el cofre? ¿No he probado eso?
¿Podemos recoger algún artículo? Tengo un este es el inventario. Déjame usar esto. ¿
Hay un cofre aquí? No. ¿Dónde está el cofre? Aquí está, hago clic en él. Ahora, no puedo.
Veamos por qué por un segundo. A lo mejor si es algo sencillo, ya
podemos depurarlo fácilmente. Controlador, estamos
en nuestra función. ¿Por qué vuelve a ser una colisión? Juguemos. T. Vamos a mover el acter
directamente al pecho. Y no me está imaginando, supongo que no estás
colisionando Creo que es un problema de colisión otra vez. Vamos a nuestro pecho. Impresiones, ps pecho grande. No tenemos colisión. Simplemente tenemos este cofre
por aquí y
lo hemos puesto en la
parte inferior del superior. Nuestra masa va
a golpear a la de arriba, no va a golpear a
la inferior. Entonces tal vez esto lo he
puesto al fondo. Voy a copiar esto. Como puedes ver, incluso
puedes copiar grupos
enteros basados en ellos. Y trabajo de trabajo, copia porque consiguió
este grupo pz solamente Necesito copiar
toda la colisión tal vez. Propiedades, como propiedades. Funciona no,
no importa. Vamos a hacer que estas
colisiones sean ciertas. Así que solo queremos bloquear
todo para bloquear la combinación de visibilidad y colisión
pom, como
alguna colisión. Si es no, No va a
dejarlo a ninguna colisión, y no va a estar
generando eventos de superposición. Creo que esto lo arregla. Si no es así, sólo
vamos a hacerlo en las colisiones. Personaje al lado de la caja, lo cual es muy agradable
con música más cercana. Aquí. O no lo hace. Ni siquiera en el fondo aquí, estoy dando click en el fondo, pero realmente no hace nada. Entonces, copiemos esta configuración de
colisión y hagamos que estemos
bloqueando la cámara. Estás bloqueando O, no
funciona. Hecho En ambos casos, es capaz. Donde debería estar funcionando. Vuelvo a verificar desde aquí. Para volver aquí. Et lleva
al personaje al pecho. Nuevamente, no está funcionando. Pero ahora tenemos que probar
la línea de traza también. Tenemos que depurar eso. Entonces vamos a seleccionar. Digamos para un fotograma. A ver si estamos pegando
algo con la caja. Expulso en mi caja acor. Es una h. La idea me
moví al personaje, me moví de azulejo. Entonces sí, en realidad estamos
golpeando la caja aquí. Compruebo. Aquí estamos golpeando la caja. Entonces viene la pregunta, qué pedimos para tener
Actor Gran pecho tiene tirón I ¿ Está corriendo hasta aquí, veamos I. Empecemos a la caja, ¿dónde está la caja? Bien. No, no maneja
esta sucursal en absoluto. Yo hice un poco de pruebas, y por alguna razón, si lo conecto opuesto, conecto primero luego cero
abajo y luego uno funciona, lo cual no tiene sentido. Lo estoy adivinando
del objeto que
somos cada uno que está aquí
estamos probando No estoy muy seguro de por
qué no funciona. Manera normal, pero sí, esto lo hizo funcionar. Entonces entonces cero debería bajar y luego uno f esta parte izquierda. Supongo que porque
éste sale en realidad. Piénsalo. Este sale, y éste no. Entonces básicamente para desconectarlo, podríamos crear
una cadena de eventos, pero creo que esto está bien Ya que está funcionando.
Creo que esta es la razón por la que pienso porque ésta
sale y ésta alguna manera
no se
asegura de que esto corra antes de esta salida. Creo que esa debe ser la lógica. En fin, vamos a jugar. En realidad, sí jugué y probé. Tenemos algunos otros problemas que
arreglaremos en la lección, y luego
comenzaremos a hacer la IA. El personaje arroja paredes, bonito, donde esta la caja. I. No puedo ver el tooltip, y vamos a comprobar por qué Pero si hago clic, sí se abre y sí fila los
elementos todos en un solo lugar. Vamos a calcular
esto en la siguiente. Adiós.
110. Arreglos de extensión de artículos y widget de pecho: Hola, y bienvenidos al Taller de Diseño de
Juegos
bajo el motor cinco, Curso de creación de
RPG de acción
Procesal Dungeon Anteriormente, terminamos
con nuestro personaje y encontramos algunos
errores durante el juego. Ahora, comencemos a
arreglar estos errores. Entonces, antes que nada, vayamos al ítem BP. Y en nuestro IOP, cuando estamos buscando
palabras drop, estamos probando para la
visibilidad. Cámara B. Ahora, probemos nuestras colisiones. Ahora, nuestro artículo colisión
sería Atom, bloqueando la visibilidad, bloqueando la cámara y la dinámica de guerra, y estar cansado solo sin física Ahora, vayamos a nuestra esfera, y nuevamente, a nuestra configuración
o configuración de colisión. Entonces esto debería ser simplemente
ignorando todo, sin física y superponiéndose con el personaje porque
esta es nuestra gama Vamos a nuestro widget, que sho no tienen colisión R Eso es tener UI, pero cambiemos
esto sin colisiones. Realmente no importa ya que lo
traemos a la pantalla. No genera eventos de superposición. Todo bien. Compilar. Y vamos a
nuestro pecho grande. Arreglemos esto primero. Seleccionemos
nuestras dos mallas y
sean digamos generar eventos de física, si algo realmente sabe Vamos a dejarlo puesto. Vayamos
a colisiones habilitadas Queremos que ambos
sean solo sin física, ambos estáticos, y digamos que ambos estén bloqueando a todos. Ahora, volvamos a nuestro artículo y también aumentemos el centenar. Entonces le damos un
poco de rango. Vamos a anidar. Por la caja. Ábrela. Más cerca. La posición en la
pantalla podría ser, pero ni siquiera podemos
ver los artículos. ¿Están todos aquí? Todavía
están todos aquí. Esto no lo solucionó, podría ser que cuando estamos moviendo
los elementos en nuestra
línea de tiempo por aquí, y el ev graficando los artículos Nosotros nos movemos con teletransporte. No. Eso
no es inventario completo. No quieres este
en el artículo animado. O por aquí. Sí, el teletransporte no
se hace clic aquí. Podría ser eso porque
si hace una, toma en
consideración colisión. Y la caja grande aquí, Como si vi mover los artículos. Parece que se mueven, pero al final, vuelven a o
Así que vayamos a nuestra línea de tiempo,
pero volvemos a animar el ítem. Así que vayamos a nuestra línea de tiempo, pero volvemos a animar el ítem Y al final, vamos a
establecer la ubicación del actor. No actualizar, terminar
al destino final, que obtuve ubicación. A ver si esto funciona. Podría haber algo
que lo restablece. Esto está a nuestro lado. Sí, funcionó. Entonces se quedan ahí. Bonito. Bien. El texto
es un poco grande. Vamos a hacer clic en. Uno de ellos. No puedo recoger oro. No, puedo. Pero
no se está destruyendo. Puedo recoger oro sin fin. Entonces, la primera vez que lo recojo, reproduce la animación
del inventario completo. Interesante. Ahora,
escojamos una poción. Yo sí tengo poción, vamos a usarla. ¿Por qué seguir moviéndose? Poción de rabia. Lo recogí, se queda ahí. Entonces parece que no se están
destruyendo a sí mismos. Arreglemos el widget
por un segundo. Eliminemos todas estas líneas de
traza
porque son agradables de ver. Entonces nuestras líneas de traza
están en nuestro bucle wi. Y en lente, Dave. Veamos por qué
no están siendo destruidos. Cuando los escojo,
ese es el modo de juego. Inventario de tazas cuando cae y es pin va aquí. Y no regresar
recogido al final. Porque no estamos
devolviendo ningún pico en las otras opciones cuando es
seleccionable y estamos llenos atascados
o el inventario está lleno Estamos regresando que no
podemos recogerlo, pero no somos que podemos
recogerlo cuando lo recogemos. Entonces esto debería arreglar eso vamos a arreglar el widget por un segundo. Vayamos a I y
vayamos al artículo viejo. Cambiemos el tamaño a 21. Negrita. Todo esto audaz. Ahí cualquier otro Vamos a usar dro it ss mejor y
distribuir por defecto. Ahora, deberían verse mejor. Esa línea que ves aquí, es porque no tengo
la pantalla de carga. En serio, no creo que sea eso. Pero agreguemos la pantalla
de carga, así que abramos la pantalla de carga. También. Lo que podría ser.
Oh, es visible. Tienes la
pantalla de carga. Sí, lo hacemos. Entonces vamos a comprobar cuáles son
las líneas aquí. Vamos a buscar los artículos. O es el cofre afuera de aquí. Picando en el
pecho, los artículos caen. Se puede ver que vuelven. Pero por ahora, está bien. Puedo recogerlos,
me destruyen. ¿Había oro? Tenemos un área secreta. Eso lo revisaste. Por qué no. Una manera. Copiemos este est a
un pequeño cofre también. Vayamos al cofre pequeño. Ambos. Voy
a ir uno por uno. Yo sólo voy a copiar
colisión, esto y pegar. Yo trabajo. O va a funcionar. Prisa sólo más allá de esto. Esta debería ser la
categoría de este grupo, pero no lo hace. En fin, uno por uno. Debemos ignorar
todo, bloquear la cámara, y la visibilidad, bloquear
p, y corregir. Siempre Jack consulta solamente, ambos consultan encendido, ¿verdad?
Eso sería. Vamos a probar los puntos. Están siendo
destruidos. Creo que van a estar
siendo destruidos. ¿Cuál es esa línea?
Es muy molesto. Una rabia rabia furia una moneda. Necesito que se me caiga la moneda. Sostener. Aquí estamos.
¿Correcto? Yo claro en oro. Yo lo conseguí. Genial. Consiga las cosas, úselas. Consigue el resto.
Ya tengo una llave. Por eso puedo conseguir la llave. Esto aparece un
poco rápido, ¿no? Yo sí lo quiero un
poco más lento. Puedo ver el widget apareciendo, pero es muy rápido Eso está bien. Segunda vez , corre un poco rápido. Algo I. Un poco rápido. Entonces, antes que nada,
el cofre no tienen el widget que muestra
cuando los estoy flotando. Así que escojamos eso también. Lo que falta es
el código para eso. Así que vas a copiar y
pegar el código
del elemento BP es start hover
y event and hover Vamos a copiar esto.
Tiene esta función. Vamos a copiar y pegar
la función primero. Así que la visibilidad del widget,
vamos al cofre, vamos a las funciones, pégalo. Todas las variables existen,
todo es bueno. Operaciones. Tenemos que cerrarlo. Ve al cofre grande, pégalo también aquí, todas las variables son
buenas, buenas para ir. Vayamos a nuestro artículo. Copia esto. En gráfico de ventilación, pegarlo aquí. O verse bien. También en pecho, incluso gráfico, vamos a arreglarlo aquí, ahora deberíamos tener gs
por encima del cofre. Algo cuando la
cámara cambia, creo que cuando sus cañadas
crean esto con el pecho. Entonces o crea algunos escenarios
bastante impresionantes. Así que aquí está el widget. Y estoy dando click en el
widget y no pasa nada. Si hago clic en el pecho, pasa
algo. Oshión. Wold Oh. Emisión. El click así. Lo entiendo. A veces significa
un segundo clic. Yo supongo que tiene que
ver con el enfoque. Deberías arreglarlo
también. Vamos a parar. El montón de errores. Vamos a llenarlos. Qué visibilidad visibilidad es la notabilidad, qué visibilidad. Se. Porque cuando
recojo el ítem y el
widget desaparece, entonces necesitamos un válido aquí. Cuando tenemos que
recogerlo, se está destruyendo, así que el widget no existe. Trata de esconderse. No hay problema. Vamos
aquí el siguiente. Propiedad Widgets, no válida. Yo supongo que este es
el, es lo mismo. Estoy adivinando que para
la misma visibilidad, visibilidad del widget,
colisión, el widget Entonces esto estaba
golpeando porque cuando estábamos
recogiendo un artículo, se estaba destruyendo, y estábamos solicitando
hacer todo esto Entonces, creo que este es un
buen punto de parada. Vamos a seguir
golpeando al siguiente. Adiós.
111. Correcciones de widgets de elementos y código de ascensor: Hola, y bienvenidos de nuevo al Taller de Diseño de
Juegos Motor real cinco Curso de creación
Arbsic de acción de Mazmorra Procesal Anteriormente, depurábamos
algunas cosas en el juego, y ahora vamos a
seguir con eso Ahora, seleccionemos nuestra cámara. Y lo que debemos cambiar es la restricción
la relación de aspecto porque esta pequeña línea verde que aparece aquí es
porque está tratando de
constreñir la relación de aspecto y el post proceso con el stand sil
realmente no va con él Y entonces sí,
solo vamos a desactivar esto y cambiar el
campo de visión a 55, que es nuestra cámara
para el jugador, 55 campo de visión. Entonces ahora Si
jugamos, ya no vemos
esas líneas por aquí para
constreñir la aspección, hacerla como una cinematográfica Pop, y vamos a esconder esta línea de
rastro de la casa. Vamos a obtener la ubicación
debajo del cursor dentro del controlador optan
y configurarlo en el error Y me di cuenta de que
hay un problema. Cuando estoy pinchando en
los artículos y no me detengo, y la caja es la caja. Digamos que me mudo y el oficial quiero
un artículo. No, me detuve. P. El problema que tenemos es
que la primera vez que hacemos clic en el widget, no
sucede, y la segunda vez
que se ejecuta
el scroll, corre más rápido. Entonces, vamos a arreglarlo. En primer lugar, el tema con el cofre, no en realidad sobre, el enfoque sobre que
el cofre no
tiene un código encuadernado para abrir
cuando estamos dando clic en él El ítem sí, como
si vamos al ítem, podemos ver que tenemos
binded interactúan en widgets Botón. Vamos a copiar esto. Vamos a nuestro pecho e
interactuemos base este COVID. Haz de esto un elenco puro. I un
botón personalizado w. Bind Zoo . Conectado aquí. Copiar más allá de esto. En realidad, tenemos que ir a empezar a jugar primero. Llamemos al botón. Ahora tenemos esto
copiado por aquí. Y vamos al pecho. Base este año,
convertiremos a puro reparto. Conectemos este año y en comenzar a jugar, llamemos al bind. Bindon. Ahora, arreglemos el problema de
enfoque. Nosotros hacemos esto, vamos a comenzar a
jugar del mando. ¿Dónde está eso? Justo en el mapa en
contexto, comience a jugar. Entonces, lo que queremos hacer es
obtener autorreferencia a uno mismo,
por lo que el controlador, y la entrada de Ode y la interfaz de usuario. Ambos se enfocan en cualquier momento. Lo único que tenemos que hacer es
deshacer clic en SO durante la captura, así que cuando estamos haciendo clic en una interfaz de usuario, el así no desaparece Oh, la pila de Theven. Vamos a probar esto. No hay salas de pruebas. Sabueso Por último tiene un final para que se
caliente, vaya a ser música. Oye, vamos a traer esto aquí.
Simplemente no lo vi. Funcionó al instante. Ahora, lo que queremos es que esto
funcione al instante, así que haga clic. No, no funcionó al instante. Funciona ahora al instante, pero no
funcionó la primera vez. ¿Por qué no pueden tener este
resfriado porque estoy pinchando en la porción de furia?
Tengo el frío. Ahora, el problema es con
los artículos en sí, no
se les está haciendo
clic al instante Vamos a averiguar por qué.
Hagámoslo una prueba más. A lo mejor hice algo
mal. Yo no lo creo. Al hacer clic en el pecho, se abre. No tengo una poción de tiempo,
quedemos la poción del tiempo. Estoy pinchando, y desaparece
y no pasa nada. Aquí. Dispara. La segunda vez que funciona, aunque tenga Alt o simplemente
tratando de darle clic normal, en el ítem y luego ir
al widget, sigue funcionando. No consigue la primera vez. Quiero probar la primera
vez pasando del ítem al widget para que las
cosas sean más claras para mí. Pero sí pienso que algo
tiene que ver con nuestro código y
ese es el cofre. Oye, vamos a abrir desde
el ítem hasta el widget. Más rápido. La primera vez que le hago clic
así, funciona. Yo le doy click
así, desaparece. Entonces cuando presiono, hago clic. La primera vez que desaparece. Debe haber algún tipo de operaciones de orden
erróneas.
Vamos a checar.
112. Ajustes de widgets del artículo y funcionalidad del ascensor: Hola, y bienvenidos de nuevo
al Taller de Diseño de Juegos, motor
real cinco
Procesal Dungeon action ps curso de creación Haz algunas pruebas vigorosas. Como que me doy cuenta de
lo que está pasando. Es bastante obvio. Pero cuando seleccionamos, cuando estamos configurando la visibilidad, y tenemos enfoque, no
estamos configurando
qué elemento enfocar. Así que vamos a obtener el controlador Vamos
a obtener de nuestro lote de widgets, qué componente nuestros widgets, vamos a obtener widget. Recuerda, este es un componente. Este es el objeto
entidad real, y vamos a introducir Y, y vamos a
poner el foco en esto. Ahora bien, otra cosa que noté es porque la línea de tiempo no se
está reproduciendo correctamente cuando
ya tenemos un artículo
en nuestro inventario. Porque hemos
conectado esta obra. Necesita estar conectado en juego desde el principio porque cuando
estamos recogiendo un artículo, no puede caber en nuestro inventario,
publicar a caídas, o
por alguna razón, no
podemos recogerlo de todos modos Comienza desde el juego, y cuando ha terminado
la primera vez, nunca
vuelve a jugar
porque está terminado. Pero sí necesitamos esta
jugada desde el principio aquí. Ahora, una cosa más que necesitamos
es ir a nuestro modo de juego, y ahora, creo que lo configuramos. Creo que configuramos esto antes, establecemos el modo de entrada juego y UI, y comenzamos a jugar y
no a ocultar el cursor. Tampoco y cursor en el
ítem. ¿Hicieron clic en eso? Pe no lo hice. Entonces tampoco cursor. Cuando estamos fijando la visibilidad de la
peluca. El Eso sería, creo, vamos a jugar. ¿Ahí está el cofre? Ileal no se cayó, bien. Tiging tipos, siendo atacado. Oh, ¿qué está pasando aquí? ¿Esto es visible
desde el principio? Esto es por, porque
estoy apuntando al pecho. Bien. Sí, porque se está poniendo cuando estoy
conteniendo esto. Bien. Sí. Entonces abramos el pecho. G la clave. Entonces, funciona
desde el principio ahora. Esto, estoy recibiendo este tiroteo y estoy recibiendo los artículos otra vez, disparando, y funciona. Bonito. Jugando. Ahora, lo siguiente que debemos verificar es en
el widget de jugabilidad. Cuando estamos jugando la
animación de recoger un artículo. Así que vamos con tu jugabilidad, L et's encuentra la animación, pestaña de
animación,
selección de elementos, encuentra referencias. Bien, recoge el pincel de
ajuste del tamaño del artículo, adelante. Vamos a restaurar el estado porque cada vez debería
jugar desde el principio. Esto es necesario restaurar el estado. Vamos a presionar, esto
escogerá stat. Et's rápidamente. Es el personaje, lo es. El personaje de aquí,
tocando algunas trampas. Ahora tenemos que escoger
artículos en una fila. Escojamos esto, y
escojamos esto. Y juega el mío. Aquí hay un personaje que sigue movimiento. ¿Cuándo sucede esto? Cuando no puedo llegar a un destino
porque sigue intentándolo. ¿Verdad? Creo que vamos a dejar
esto como está, realmente no importa. Lo que vamos a tener que
hacer es arreglar el elevador. Porque ahora mismo el elevador simplemente no hace estallar esa plataforma, lo
hace. Nosotros sí tenemos una llave. Vayamos a nuestro elevador. Rápidamente ve a aquí. Lugar. Comí. ¿Qué pasa después? No. Bien. Creo que esto
es bastante sencillo. Vamos al elevador
y no he bajado
al Pence. Yo llamo a Pence el fin de t evento, que el elevador alcanza n. cerca del elevador Y sh. Aplastar. Oh, espero que no te haya aplastado, pero hay una razón
para este choque. Cuando agregué la cerca hacia abajo, necesita un do una vez
después de esta rama, lo
contrario, sigue reproduciendo la
animación una y otra vez. Sigue corriendo esto una
y otra vez muy rápido por cuadro, y estalla esto. Y otra cosa que noté es que cuando estamos
creando un laberinto, estamos engendrando al personaje Y estamos manteniendo la
referencia así. Pero cuando estamos
creando un nuevo laberinto, no
tenemos esta referencia. Entonces, lo que vamos a hacer es ir
a la plaent de inicio, ¿verdad? Y cuando sea continuar, vamos a obtener
de nuestros modos de juego, tenemos una referencia sobre un
modo de juego aquí. Ahora, no lo hacemos. Pero sí tenemos en el
controlador, creo, un controlador ya no está
aquí, aquí está. En la pantalla. Entonces sí
tenemos una referencia de jugador. Sabemos que para que el controlador del juego tenga
esta referencia de jugador, ya se ha llenado
cuando vamos al nivel dos, el
generador bactor maze, ¿dónde está Aquí está, y vamos
a conseguir el controlador del reproductor. Como de arriba hacia abajo. Convertir mascota. Vamos a conseguir pagador. Y vamos a establecer
nuestra referencia de juego aquí a ésta. Ve a jugar. Todo debe estar en orden. El elevador está cerrado. Ya tenemos una llave.
Después aplaste de nuevo. Bien, después de un
poco de búsqueda, me di cuenta de que
hay dos cosas mal. primer lugar, en el laberinto, cuando estamos creando el laberinto, estamos engendrando al jugador y estamos sosteniendo la referencia Pero cuando estamos replantando un laberinto, no
tenemos forma de pasar esa referencia de un No volvemos a
poner esta referencia Entonces el nuevo laberinto no
sabe cuál es el jugador. Entonces para arreglar esto, vamos a venir aquí en
un principio. Comienza a jugar. Cuando decimos continuar, pero cuando
continúas el laberinto, vamos a establecer
la referencia del jugador, vamos a conseguir nuestro controlador de
jugador. Vamos a derribar. Vamos a convertirlo en un
elenco puro. Voy a conectarme. En realidad, vamos
a conseguir referencia de juego. Y vamos a
conectar esta
referencia de jugador con nuestro jugador. Entonces ahora, el nuevo laberinto
sabe de un jugador. Ahora, lo siguiente
que tiene un problema es, por aquí por aquí. Interesante. Al
comenzar evento de superposición, cuando estamos desove
el nuevo laberinto Aquí cometí un error. Cuando estoy pidiendo
el doble del tamaño del laberinto, cuántos azulejos
puede caber básicamente. Estoy preguntando con el más uno. Entonces yo si agrego más uno, puede esto encajar, y luego sigo adelante y no
agrego
más uno porque se alimenta. Entonces debería estar preguntando
si el laberinto actual, y lo que me insinuó a esto es que las dos veces
que tuve un choque, fue
porque el laberinto
tuvimos este error
aquí arriba, lo hemos creado Es el único código de error
que creamos en realidad. Increíble que esto
por accidente se calentara. Así que tenemos este laberinto no
se puede construir más. Y cuando los dos
cronometramos que se estrelló, tiene este tema Entonces sí, esa era la cosa. Estaba construyendo
más de lo que podía manejar. No puedo manejar más, y algunas de nuestras reglas
aquí podrían haber dicho que no
podemos construir algo, algún látigo podría haberse
congelado posiblemente Ahora, vamos a probar una última vez. Y el elevador. Todavía podemos entrar aquí, pero creo que está bien, si no escapamos por error al principio cuando estamos
entrando. Eso estaría bien. Entonces, luz muy brillante. Cambia la configuración de la cámara. Voy al segundo
laberinto, me voy a dar la llave. Agreguemos un poco más de tiempo. Veamos que esta
cosa interminable sucede. Ese es el siguiente laberinto. O. Cuando eyecto, el laberinto de
abajo quedó destruido Algo se quedó. El cofre grande
no se destruye. Probablemente cuando se agrega,
esto debería estar aquí. Debería haber un cofre.
Aquí hay un cofre. Los cofres grandes necesitan ser
agregados a la lista de actores
destructores, y tenemos el tercer
laberinto y el conseguir y gesing cada vez más grande.
Vamos a mover O lado. Aquí. La clave. Un tiempo también en su momento. ¿Qué es el elevador? Aquí. Posiblemente la siguiente fase debería
ser mayor que esta. Esto en realidad más pequeño. ¿Estamos reduciendo de tamaño? ¿Estamos reduciendo de tamaño? ¿O es más grande? Yo solo
esta tiene tres habitaciones. Tenemos dos. Vamos a conseguir la patada aquí. Más grande no lo sé. Y se ve igual. Uno. Es el look. La clave
del actor aquí. Tres habitaciones. ¿Cuánto agregamos cada vez? Creo que sí agregamos tres
bloques cada vez. Dos. No, va a
ser aleatorio, ¿no? Uno, dos, tres, cuatro, cinco o seis incluso ocho incluso 12 13, 14, en 21. Dos, 22 y cuadras.
Comprobaremos el siguiente. Hecho eso desde el
principio, cuente los bloques. Con la llave. En cualquier momento. Consigamos algo de tiempo. Todo bien. Yo el jugador se ve más grande ahora, uno, dos, tres, cuatro, cinco, 1012, 14 15. 2021, 23, 24, 26, 27, 29, y ocho e, f. Oh, estamos agregando cajas. Los estamos agregando lentamente. Podemos aumentarlo si queremos, como nivel generador
más tres en cada nivel, y se hace cada vez más grande. Ahora, nuestra parte principal está lista. Lo único que
necesitamos agregar es nuestra IA y escoge un poco
nuestros colores y luces. Oh, esto va a ser e para éste. Te voy a ver
en la siguiente. Adiós.
113. Importación de personajes morigesh y sistema de salud de IA: Hola, y bienvenidos de nuevo al Taller de Diseño de
Juegos y Rail Engine five
Procesal Dungeon curso de creación de Peg
accional Anteriormente, terminamos
con nuestros bichos. En realidad, no
terminamos con nuestros bichos. Estoy bastante seguro de que
encontraremos más. Pero a medida que los
encontremos, los arreglaremos. Ahora, es el momento de iniciar nuestra IA, lo que significa que tenemos que
explicar también algunas cosas. Pero comencemos por crear una carpeta dentro de
sus planos. Toda esta IA. Vamos a
entrar en esta carpeta. Y también, vamos a descargarnos. Uh No desde aquí. Nuestro personaje de Paragon
Morgue Mies, Marie, no
estoy segura de cómo se deletrea, cómo se pronuncia, que
será en No lo tienes, puedes
encontrarlo en el marketplace de forma gratuita,
como de la misma manera que mostramos o nuestro otro
personaje de Paragon Revenant Oh. Vamos a agregarlo al proyecto. Está aquí. Esto llevará un tiempo. Oh. Ahora que tenemos nuestro personaje
Paragon. Volvamos a nuestro
comprobemos que lo tenemos. Caracteres hipotecarios,
Audio. Un héroe. Derecha. Sí. Todo
parece estar bien. Acabo de revisar las animaciones el resto de las carpetas, pero, vamos a nuestra carpeta
A, que no existe. Voy a crearlo de nuevo. De veras pensé que sí. De todas formas. En esta carpeta, vayamos
a nuestro personaje Morgs. Personajes, va Mig. Duplicemos a este jugador
Hipotecario. Vamos a arrastrarlo y
soltarlo en la carpeta AI. Oh, antes que nada,
tenemos nuestro carácter. La IA necesita un personaje. Lo segundo que
necesita una IA es un controlador, que es lo mismo que el jugador. Pero vamos a hacer
clic en Controlador de IA. Ahí podemos ir
Lue print y AI. Y vamos a
seleccionar AI Controller. Vamos a nombrar
ya veo porque podríamos tener diferentes controladores para
diferentes enemigos. Y cambiemos el nombre del personaje a I uno. En definitiva, ¿qué es
el controlador de IA? Está diseñado para gobernar
el comportamiento de la IA ya que es para nuestro personaje decidimos las entradas
o nuestro personaje, decidimos lo que el
jugador lo presionamos, en realidad, y el control
traduce eso
al personaje o
al yo o a lo que sea. Pero lo mismo hace el
controlador para la IA. Coverna el comportamiento. Ahora, lo siguiente que necesitamos es un comportamiento de IA t. Llamemos a esto I AIP uno Y, ¿qué es un
árbol de comportamiento de IA de árbol de decisiones? Bueno, es una estructura de toma de
decisiones. Podemos llamarlo
algo así. Es un árbol, organizado en t con varios nodos que determinan
lo que debe hacer la IA, base en las reglas. Y los árboles pueden
incluir otros árboles. Pueden decidir ir
y ejecutar otros árboles, y ser una manera honesta hacer tareas complejas y con
una manera fácil de depurarlas. Ahora, el árbol del comportamiento viene con algo más
que se llama pizarra, que se
encarga de sostener los valores Es una plantilla de valores
para el árbol de comportamiento. Almacena los datos, y es eficiente
para comunicarse con el árbol y los datos
que tenemos almacenados. Pero para ser honestos, también, es un poco
cuesta arriba para nuestra escala de IA, pero la vamos a usar solo para mostrar cómo la estamos usando Está más diseñado para acciones de IA
muy complejas. Bueno, llamemos a esto. M uno. Y lo siguiente que
vamos a necesitar es un servicio y algunas
tareas. ¿Qué es un servicio? Es un tipo especial de nodo
decorador en el comportamiento tres realizan tareas a intervalos
regulares como hacer
esta cantidad de tiempo Por ejemplo, usaremos hos para obtener algunos atributos de nuestro personaje y
pasarlos a la sala negra. Y tarea son las cosas que son fundamentales
para el comportamiento de los árboles. Representan cada acción o conjunto de acciones que
la IA puede realizar. Por ejemplo,
vamos a estar usando un prescriptado por ejemplo t, que se mueve a la ubicación, pero podemos hacer una tarea Podríamos hacer una tarea que
sería mucho más complicada
mudarnos a la ubicación, como podría tener
muchas otras reglas. Pero vamos
a profundizar en tareas y servicios cuando los
estemos creando. Porque por ahora, deberíamos
entrar en nuestro carácter de IA. Y hazlo compilar. Para ello, eso va a ser
algo muy sencillo como seleccionar todo
y eliminarlo. También eliminaremos
el recuento de cuentas, el está atacando, el
ataque guardado, el aspecto base, el giro base, y por supuesto, vamos a eliminar
la cámara polo y el boom de la cámara. Pero vamos a añadir
algunas cosas más adelante. Ahora bien, podríamos haber usado la
plantilla de tercera persona para hacer eso, pero sería duplicar
y eliminar muchas cosas llevaría más
tiempo Oh, Archivar y guardar. Haz esto todo. Vamos a cerrar
todo ahora mismo. Tener las cosas de IA. Y también, abramos el controlador de IA enemigo
para incluso graficar. Lo único que vamos
a necesitar aquí es el comportamiento t. El comportamiento t
sería nuestro t. Saborea. Ahora bien, este es el único código
que nuestro controlador necesita alrededor del árbol.
Voy a cerrar esto. Vamos a Abrimos
el árbol de IA. Pizarra. Ahora, podemos acceder a
la pizarra el árbol de IA estas
dos copas por aquí En realidad no
necesitamos la pizarra abierta no abre el árbol de IA Volvamos a nuestro enemigo de IA y vamos a crear
algo sencillo. Digamos que cada vez que
tomamos daños o cualquier daño. Vamos a reducir nuestra salud. Oh, vamos a crear dos variables. Uno sería b serían flotadores, y el uno
sería la salud inherente Y el siguiente
sería M Health. Oh, vamos a
conseguir nuestra C y salud. Vamos a
restar. El daño. Vamos a aglutinar el
flotador a cero y Mx salud. Y en realidad, vamos a compilar
y establecer algunos valores predeterminados. Digamos que MC health
sería ¿Cuántos calores debería obtener la IA Digamos tres. Oh, pongamos tres. Salud. Vamos a establecer el valor
de caída de la corriente t en tres. O podemos ir y comenzar a jugar y establecer la salud máxima
a la salud actual. Oh, vamos a
comprobar si esto es menor o igual a cero,
y vamos a ramificar. No va a tocar un sonido. D, que sería algo Este. Los plátanos
atacan a la copa Guo Entonces es un ataque femenino, no lo sé.
Suena como un acierto. Y luego vamos a
crear dos eventos para clientes. Replicar esto, a uno
se le llamará muerte. Y al otro se le llamará personaje
aturdido después de que nos
golpeen y aún tenga salud, nos quedaremos atónitos o aturdidos Y si no,
va a morir de muerte. Ahora tenemos un sistema o una IA para dañarse
y/o quedar aturdidos Creo que esto es
suficiente para éste. Vamos a
continuar con el siguiente. Adiós.
114. Retargeting de animaciones de Revenant a Morigesh: Hola, y bienvenidos de nuevo
al Taller de Diseño de Juegos, Y Real Engine five
Procesal Dungeon action RPG curso de creación Anteriormente, creamos
nuestro plano enemigo NI. Creamos nuestro controlador
enemigo de IA, nuestro árbol de comportamiento
y nuestra pizarra Entonces seguimos adelante y
creamos algún código. De hecho borramos
primero el código que ya
estaba aquí y
algunos componentes. Y luego seguimos
adelante y creamos un sistema de daños para reducir nuestra salud
cada vez que nos dañamos. Y si es cero, nuestra salud, vamos a morir o no
vamos a morir,
y vamos a tocar
un sonido y quedarnos atónitos Ahora, seguimos
con nuestra mecánica. Necesitamos de nuevo
una máquina de estado. Entonces vamos a ir
a nuestra carpeta de IA, vamos a escribir click,
vamos a ir a blueprints y crear una
enumeración de enumeradores Y lo vamos a llamar
E AI uno estados. Entrémoslo y
agreguemos algunos rebeldes. Digamos que nuestros estados son patrulleros. Si esa es la ortografía correcta, pero no importa, Ataque. Digamos. Tengamos también una posición. Demandar la ortografía para atacar. Muchas palabras en esta. Entonces ahora que tenemos los estados. Volvamos a
nuestra IA y los subamos. Vamos a
fechar la variable, vamos a llamarla IA. Va a ser del
tipo E ocho, me dice uno. Ahora, terminemos con nuestro evento stan
porque va a ser fácil. Vamos a preguntar si
nuestro estado actual es igual a stat y si lo es, no
vamos a hacer nada. Si no lo es,
vamos a poner en marcha nuestro estado y
vamos a jugar
a Amontage Ahora, vamos a crear Amontage. Ve a buscar nuestra animación, mote. Hipoteca y voy
a buscar t. estoy en realidad necesitamos
crear montaje a partir de ella,
ocho montaje de animación, y voy
a entrar en el
montaje y dejar que el estado a la parte superior del cuerpo,
la ranura a la parte superior
del cuerpo ranura a la parte superior
del Porque en realidad no
necesitamos hacer mucho en este
plano de animación porque está configurado para este personaje.
Esto es lo incorrecto. Ahora, cuando abra
el equivocado, podemos cambiarlo de aquí, los tres puntos de aquí, ir al que queramos. Ahora bien, esto ya está
usando lo que queremos en gramo, todo. Y en el gráfico de eventos, está todo configurado
para el jugador Morigs No vamos a estar usando los
ataques ni nada, pero tampoco vamos a tener errores. No, volvamos, voy a borrar
esto, cerrar esto. Voy a cerrar
el montaje también. Para el montaje, vamos
a elegir el frente térmico. Los dos. Voy a arrastrar y soltar esto aquí. No estoy seguro de por qué hay dos. El otro debe
ser el modelo uno. De todas formas. Entonces, este es
el montaje de juego El montage mooch one. Y necesitamos conectar
la malla esquelética, y voy a
traer de nuevo Montage Y ahora, ¿por qué necesitamos
el más avanzado? Porque al completo,
queremos que esto se complete, que sean estado volver a atacar. Porque
pase lo que pase, aunque la IA no se dé cuenta de que
hay un jugador cerca de ella, si un jugador
lo dispara, cambiará para ir
y atacar al jugador Dispara hacia el
jugador básicamente. Ahora, vamos a
completar nuestra muerte. En primer lugar, pase lo que
pase tiene que pasar una vez. Hacer una vez. Por
si acaso vuelve
a dañarse y esto se dispara, necesitamos una variable para
saber que estamos muertos. Tenemos a b.
Llamemos a esto muerte. Vamos a ponerla en verdad. Lo siguiente que vamos
a hacer es tocar un sonido. Sí. Para el sonido,
necesitamos gritar. Mujer grita, aquí está. Es un buen sonido de muerte. Voy a una colisión de actor en realidad actocs para desactivar Actor habilita colisión
para desactivar polilla. En fin, pongamos actor. Pi deshabilitado. Consigamos nuestro movimiento de personaje porque es lo
mismo que el aire. Pongamos la caminata a cero. En realidad, pongamos la
velocidad a cero también. La razón por la que estamos haciendo esto, dejando que velocidad y
max caminen a cero es por si acaso nuestro gráfico de
animación, que se ve afectado
por estas variables, obtenga algún comando equivocado en el último segundo,
tal vez algo. Entonces cuando morimos,
ponemos esto a cero, y nada más
cambiamos la animación. Ahora lo siguiente que debemos
hacer es tocar un montaje. Bueno, encontremos la muerte. Esta animación un poco. Si tuviéramos una partícula
o algo así y ella
desaparecería, estaría bien. Pero hagamos algo
más a la vez. Creo que un bar, ¿cuál es su nombre? ¿Renacido? Como una mejor muerte. En realidad lo usamos aquí. Entonces lo que hacemos es ir a
nuestro navegador de contenido. Muerte esta es la secuencia de
animación de muerte hacia adelante de Revenant. Vamos a duplicar esto. Lubricar. Aquí está. Vamos a moverlo a la carpeta AI, para que podamos trabajar con mayor claridad. Ya lo perdí. Objetivo de aquí a A. Aquí. No, voy
a hacer clic en target, que lo duplicará también, pero el objetivo
sería vamos a hacer el Arti Manan Y O fuente necesita renacido. Yo sería mota. Aquí vamos
un objetivo de prensa re. Veamos qué
creamos con la IA. Aquí no se crea. Creo que sí, está en el
contenido. Todo bien. Esto parece estar bien. El esqueleto está un poco
estirado, pero está bien. Creo que es un poco. Se ve bien. Oh, Dave. Ahora, la animación de retargeting
generalmente no es tan fácil, pero los personajes de Paragon
están de acuerdo con ello. La mayoría de ellos, como Hipoteca
y cómo se llama Revenant. No debería ponerlo en carpeta AI, o ahora porque las
carpetas de no lo hicieron. Ya existe. Oh, vamos a cambiarle el nombre a esto. Objetivo de muerte. O es la muerte redirigida,
y podemos moverla. Y vamos a los ocho
un montaje fuera de él. Llamemos en realidad reclamar multa. Entremos en el montaje, cambiemos la
ranura del grupo, a la parte superior del cuerpo S, compilar. Volvamos a nuestro
enemigo y juguemos al montaje. Ton será nuestra malla, y las montas serán
las que acabamos de crear Ahora, necesitamos dejar algunos elementos
que código ya existe, de nuestros códigos podrían ser componentes pero copiar
pegando por ahora lo hacemos No en nuestros artículos, gotas en nuestro pecho. Voy a ir a nuestro pecho. Y voy a inventariar. Este es nuestro código para dejar caer artículos. Bien. Sí,
deberíamos haber comentado. Ahora bien, la parte que necesitamos es
básicamente el flop aquí. D necesitamos el generador, pero no tenemos una referencia.
Vamos a copiar esto. Es este x número de elementos. Hagámoslo una
variable estática de dos. Vamos a poner esto aquí. Y rango 1-2. Poner los dos aquí
realmente no importaba, pero de todos modos. Y para un generador de laberinto, solo
vamos a
crear una variable, posarla y editar instancias. Al responder a la IA, podemos pasar esta referencia. La razón por la que necesitamos el generador por
supuesto es agregar para destruir. Tenemos el pecho abierto. Sí dijimos que esto
no se agrega para ser destruido. Pero arreglemos esto en
otro pase de depuración. Lejos. Lo último que debemos
hacer es después de que
podamos poseer de nuestro
controlador. Haz esto, vamos. Sí. Taller Vamos a conseguir controlador de IA. Ya no somos jugadores. Nosotros
somos I. Vamos a Bs. Esto nos deja un montón de controladores de IA
que no hacen nada. Pero podríamos hacer un sistema que la IA que se ponga en marcha después, utilice un controlador no poseído Oh. Vamos a
dejar el cuerpo como muere porque va a quedar
destruido cuando la ma se elimine. Cuando vayamos al siguiente nivel, no importará que los cuerpos quedaron
en el nivel anterior. Ellos van a ser
destruidos con él. Creo que este es un
buen punto de parada. Vamos a
continuar en la siguiente. Por A
115. Comprobación de rangos de IA y guardias Hellgate: Hola, y bienvenidos de nuevo
a Game Design Workshop, R engine five Procesal Dungeon action ApS curso de creación Anteriormente, terminamos
con nuestros eventos y la muerte. Creamos un estado para IA
y enumeración de fecha, y dijimos que sea si el personaje no es
acérrimo entonces así que se staned, y tocamos un montaje y
en completo de ese montaje Nosotros cambiamos de estado para atacar. Ahora, a nuestra muerte, lo
hacemos una vez, ponemos una variable
a muerta. Tocamos un sonido. Ponemos la colisión, la garrapata y el movimiento
a cero básicamente, y jugamos un montaje
que rediseñamos del otro
personaje de paragon Por alguna razón, sigo
pensando que el nombre es Cabal. A lo mejor me recuerda
mucha sangre a un personaje, Caleb porque sé que no
es Caleb A lo mejor viene Cabal en mi mente. No lo sé. Manera. Luego,
después de jugar nuestro montaje, en cambio
tenemos un número máximo
de artículos al azar 1-2, y fluimos a nuestro
mecánico para soltar artículos Y sí tenemos nuestro
un bolígrafo aquí que elige un ítem aleatorio 1-5. Y luego poseemos el
controlador que dijimos, dejará un montón de
controladores no borrados, pero da la oportunidad
de crear un sistema para cada nueva IA posea
un controlador no utilizado. Ahora, continuemos con nuestro mecanismo de
detección de jugador. Para ello, vamos a
necesitar una colisión de esfera. Vayamos a nuestra ventanilla. En realidad
lo vemos, qué tan grande es. Vamos a poner el número
dos, algo así como 900. Creo que este debería ser
un buen rango a nuestro alrededor. Esta colisión será nuestro
alcance y detección de jugador. Es una zona agradable. Oh, esta colisión está buscando
una sola cosa otra vez. Así que vayamos a nuestra configuración de
colisión. Cambiémoslo a costumbre, ignoremos todo, excepto los estanques. Pero sí conoce a
las otras IA también, sí
se superponen. Ellos sí crean. Se podría adelantar el
código que con algo. A lo mejor se
comunican entre sí. No lo sé. Una es baja salud, otra viene y la
cura. Ya veremos. Depende de tu imaginación. No. Vamos a hacer algo
con esta esfera. Vamos a necesitar
un evento de superposición inicial y un evento de superposición final. Empecemos por el principio. En primer lugar, preguntamos si el otro componente es
la colisión del jugador. Especialmente, la cápsula. Así como tira del otro componente. Esto lo hicimos tantas veces. Ahora, lo siguiente que
debemos hacer es crear una variable en rango, y pongámosla en
cuando esto sea cierto. Después, vamos a
lanzar una línea tase por canal. ¿Tenemos visibilidad
hacia el jugador, o es que el jugador estaba detrás de una pared y chocó con la esfera Entonces, vamos a
empezar por la ubicación. Voy a terminar en nuestro jugador. Entonces una ubicación. Voy a conectar
esto hasta el final. Voy a establecer la
visibilidad a la cámara, y vamos a
romper nuestro resultado de calor. Si el otro actor que
calentó g. en realidad, no
tenemos un
actor para la etiqueta. Tenemos aunque en realidad
podemos hacer un actor igual y seguir adelante de nuevo. Apenas check es el otro
actor del peón. Si es el peón o bueno,
si no es el peón, hagas nada, y si es un peón, vamos a poner
al estado Y ahora que tenemos el pone, en realidad
podemos pedir al
jugador de arriba hacia abajo en música de personaje
y acción. Entonces comienza nuestra acción. Ahora, estamos acabando superpuestos, va a ser bastante sencillo. Vamos a comprobar
si el solapamiento final es el personaje o tiene abrazo P. O oponente tiene abrazo P.
Vamos a poner una rama, y si esto es cierto, vamos a establecer
el in range a pals Un sistema que hemos
creado aquí para la detección. Todo podría
crearse también dentro del árbol de comportamiento con sistema
complejo como EQ S, que es el sistema de
consulta de entorno y otras formas que
podríamos igualar para
trazas de líneas aquí o no. Como dije, usar la pizarra y el proceso de agregar claves,
quitar claves, actualizar claves, es una especie de exageración
para una IA tan simple Entonces vamos a hacer una mezcla de ambos y hablar
del medio ambiente, lo siguiente que necesitamos. Cuando estamos en modo ataque, De repente el jugador se
sale de la línea de visión. Necesitamos un mecanismo
para poder decir, ahora el jugador está en
línea de visión, ataque. Porque los jugadores lo pueden
queso, ya sabes, solo
pueden esconderse
detrás de las esquinas, pueden esconderse, pueden
hacer muchas cosas. Entonces nuestra IA debe
saber cuándo está a la vista
directa o necesita moverse
para hacer esto. Vamos a ir
a nuestra jugada de inicio. Y vamos a
hacer un Primer pi. Por ejemplo, esto
podría ser un servicio, nosotros cosa que corre cada cantidad específica de tiempo
y hace una cierta cosa. Pero vamos también porque vamos a utilizar un servicio
para actualizar nuestra información, nuestra salud, nuestro estado. Veamos cómo porque
jugábamos con tiempos anteriores, usamos Niveles antes. El ver cómo podemos iniciarlos
y detenerlos cuando queramos. Vamos a
promocionar este centenar. Hablamos del
mango a poco es lo que
maneja el tiempo y lo
llaman manejar como el tiempo. Y al instante, la
voy a pausar. Por el momento se
crea, se está planteando. Pongamos un tiempo para ser un 0.3. Vamos a configurarlo para que se vea. Vamos a crear un respiradero personalizado. Nombra este look para jugador. Lo que va a
estar haciendo, va
a estar lanzando una línea de rastreo. Pero vamos a copiar desde aquí. Esto es exactamente lo que
queríamos hacer. Nosotros sí necesitamos esto también y eso equivale a uno.
Vamos a copiar todo esto. Esto es lo que hará este evento. Vamos a estar
lanzando una línea
de rastreo desde el actor hasta el personaje, va a estar comprobando
si calentó a nuestro jugador. Ahora bien, qué pasa si
es un jugador o no, vamos a necesitar una variable, todo está adentro, va a
ser una variable bulion Voy a ponerla en true, y si no lo es,
voy a ponerla en false. Si es cierto, vamos
a comprobar si estamos atónitos. Si no lo estamos, vamos a poner
a nuestro estado para atacar. Entonces ese sería nuestro mecanismo
para proteger al jugador. Ahora bien, lo siguiente que hay que hacer
es en realidad ver nuestra IA. Para eso, vamos a
necesitar algunas variables también. Vamos a necesitar una
ubicación de acogida porque los vamos a estar desove
alrededor de las puertas Entonces, este es nuestro anfitrión. I. Y los AI deben
saber si el anfitrión está muerto. Entonces, si el jugador
mata a la puerta del infierno, deberían hacer algo. Vamos a crear otra variable. Va a ser lingotes,
todo este anfitrión muerto. Así que ahora podemos terminar el
código de nuestras puertas mantenidas. Vayamos a buscar nuestras puertas principales. Vamos a Ben graf comenzar a jugar. En la secuencia,
vamos a agregar otro nodo. Subamos esta vez.
Y lo que vamos a hacer es hacer un bucle ford. No para bucle f. Sea que necesitamos una cantidad aleatoria de
IA para generar al azar. Aleatorio en rango. Ahora, vamos a comenzar
con un nivel de generador. Consigamos nuestra
referencia de generador, que no tenemos. Vamos a crear uno para esto. Vamos del tipo P. P maze gen. Vamos a exponerlo en cuchara. Vamos a su pone, que está en nuestro generador,
impresiones, generador Maze. La puerta del infierno está por aquí. Las puertas del Hall son
grandes cosas por aquí. Yo compilé pavimentar, pero el laberinto. Esta es la línea trice. Este es el sponer de la puerta Hall. Así que no encontré esto mal. Vamos a verificar. Así que
restablecemos esto a la puerta del Infierno. Y ahora pongamos auto
al generador. Compilar Bator he gate,
et generador . Vamos a ponernos de nivel. Desde mínimo generador
máximo Uno. Ponle esto al azar. Elegir al azar. B más uno o el nivel
del generador. Ahora, necesitamos a todos los
personajes y llamar más. Personajes de IA. En la transformación no expuse la
ubicación del host en el generador. Yo no hice el generador.
Vamos a conectar esto aquí. Necesito exponer. Esto es para exponer
la ubicación del anfitrión. Ocho. Y para la ubicación del anfitrión, voy a obtener la ubicación. ¿Nosotros los engendramos? Bueno, recuerda ese
punto aleatorio en cuadro delimitador. Eso es lo que vamos a usar. Dom punto en caja delimitadora
con de medio tamaño de 300, uno, y el centro debería ser nuestro actor ubicaciones dar
b de altura más 40, digamos, sería nuestro centro Ahora vamos a conseguir
la referencia del generador, Troy voy a En la IA. También necesitamos una lista más de esto y promover
esta variedad. Realmente cambiarlo
de actor a uno, esto no va a ser un aca sean
los zombies, nuestra IA. Voy a conectar esto aquí. Solo tenemos que agregarle. Agrega ops este actor. Ahora bien, ¿qué actores destruir? Llamémosle a esto mis zombis. No, no es IA, no es
el nombre de nuestra IA. A lo que
ya llamo a los zombis y me gusta. ¿Qué hacemos con este ombies? Cuando morimos cuando muere la puerta. Crees que la muerte aquí está. Queremos el a zombis
que morimos. Entonces antes de destruir actor, vamos a voy a
usar la matriz M Zombies. Esta destrucción debe ser
terminada, conectada desde aquí. Y a mis Zombies,
vamos a ese
papá anfitrión todos los zombis, todos los enemigos, sabemos
que la puerta del infierno murió. Y esto sería un. creo que es
suficiente para éste. Vamos a continuar
en la siguiente. Adiós.
116. Mecánica de tiro con IA y golpes: Hola, y bienvenidos de nuevo al taller de diseño de
juegos sobre el curso real Engine five procedural creación de RPs de acción de
Dungeon Anteriormente, creamos un
sistema para detectar a nuestro jugador. En nuestra IA, agregamos este tubo de
colisión que es responsable de la
superposición de inicio y final para verificar si el
jugador está dentro del alcance. Después al comenzar la superposición, fuimos hacia y a través de
una línea tase para ver si nuestro objetivo es el jugador. ¿Podemos tener una visibilidad directa para el jugador o hay
algo intermedio? Y si es así, entonces
nos pusimos a atacar, y comenzamos nuestra
película de acción, nuestra música de acción. Si no se superponía, solo
establecemos el rango de. Después se procedió a crear un temporizador al inicio de
juego que planteamos que se encargue de
hacer un sistema que verifique constantemente si el jugador está en un rango o no Si es así, si no somos
stan, estamos atacando. Y este sistema es un mecanismo
que funciona a lo largo del tiempo, como un servicio, cuando lo
queremos y cuando nosotros,
podemos posarlo a través de nuestro
asa asa de temporizador lateral, que se encarga de
administrar los temporizadores, básicamente. Luego procedimos a terminar nuestro mecanismo de desove en
nuestras puertas principales para nuestra IA, usamos un bucle for
con nuestro aleatorio el rango gerne de nuestro nivel generador, agregando
aleatoriamente uno,
en el nivel más uno, y
luego usamos un aleatorio señalando
un punto aleatorio en la caja
delimitadora para generar nuestra IA alrededor de nuestra agregamos a una matriz
a actores para que destruyeran en Mí, y los
agregamos a otra matriz para que fueran mysombies,
como lo llamamos Entonces cuando el Cuando muere
la puerta de curación, esto no es la muerte.
O aquí está la muerte. Y la puerta de curación muere. Atraviesa cada uno
de los zombis, cada uno de nuestros IA. El hey, me morí. Establece que la variable
host está muerta, y luego se encuentra en sí misma. Oh, sigamos
haciendo el tiroteo real. Y el
tiroteo real va a ser llamado a través del árbol. Y para hacer eso, vamos a necesitar una interfaz de blueprint, puede llamarlo a cualquier IA
que esté usando el árbol Vamos a ir
a nuestra carpeta AI. Vamos a crear
una interfaz de blueprint. Llamemos a esto B I
AI. Vamos a abrirlo. Es una función. Eso
se llama tachueta En realidad, llamémoslo disparar. Compile los
ajustes de Dave BatorA I en esta interfaz. A Ai y ahora tenemos nuestra interfaz ot. Vamos a hacer doble clic
y
al evento, lo primero que
debemos preguntar es si estamos muertos porque si estamos
muertos, no disparemos. Y si no estamos muertos, vamos a tocar un Montage Vamos a crear ese montaje, vaya a en el navegador Vamos a la Morgue,
Morgue, y busquemos por Marie B. Hay un montaje de ataque
primario un lento. Vamos a comprobarlo. Aquí se ve bien.
Vamos a usar esto. Cuando no estemos
muertos, vamos
a montar el nodo de avance Vamos a usar
la malla aceletal. Otra vez deja caer el aquí. Lo siguiente que tenemos que
hacer es lanzar nuestra bala. Vamos a crear nuestra bala. Vamos a nuestros planos de
carpetas. Vamos a Habilidades. Vamos a hacer clic derecho. puerta clase
Blueprint
y bala P AI Oh, antes que nada, agreguemos un sistema de partículas AD. Mi gasolina. Proyectil. Aquí estamos. Es el resplandor de la daga. Lo siguiente que
vamos a necesitar. La malla estática sería daga. Este perng viejo A M LP. Tenemos que rotarlo un
poco. Gire la partícula. Necesidad de girar la cuchilla. Es más pequeño y de partículas, así que vamos a incidir a
1.5. Eso parece correcto. Y sí necesita un material. Se trata de un tigre mágico. Aquí tenemos un tigre mágico. Ahora mismo se ve mejor. Podemos moverlo un poco. Esta línea, pero está bien. No vamos a poder ver.
Apenas vemos un resplandor y una daga Ahora, lo que necesitamos es apagar la colisión de
esta daga porque
vamos a usar una
cápsula de colisión para hacer la colisión No va a generar solapamiento. No va a tener colisión, y eso es una cápsula. En realidad no está parentado. La Sra. debería estar encendida. Vamos a rotarlo. Es más pequeño. Bit. Creo que está bien. Redacción En esta cápsula solo busca pon, una colisión. En realidad, sí
busca muros también st, todo excepto prótico,
block wall dynamic Superposición en. No estoy muy seguro de la
palabra dinámica si la queremos,
porque a lo mejor queríamos
atravesar las puertas del infierno. Dejémoslo tan fácil. Es más fácil. Y lo último que tenemos que añadir es un movimiento de
proyectil Tendremos que
apagar la gravedad. Pongamos la velocidad a cero. Y lo último que tenemos que
hacer es ir a comenzar a jugar, obtener nuestro
movimiento de proyectil a velocidad, y promoverlo a una variable que vamos
a exportar en cisne Y hazlo incienso
editar, compilar y guardar. Volvamos a nuestra IA y adelante plus después de nuestro montaje Por supuesto, el actor sería nuestra bala de IA.
No es una bala. Es un tagger pero está bien. No, lo hacemos lo engendramos y
¿cuál es la velocidad? Afortunadamente, si vamos
al comportamiento, lo siento. A nuestro esquelético. Hay
un socket llamado pon pon r. podemos usar esto.
Una buena ubicación. Volvamos a nuestra IA y
obtengamos nuestra ubicación de malla ckt. Aquí están, toda la velocidad. Sólo vamos a seguir. Va a volver a la rotación. Vamos a encontrar
mirada a la rotación. Vamos a sacar adelante
factor. Justo ahí. Vamos a multiplicar que será básicamente nuestra
cabeza de bala. Entonces, hagamos un entero, digamos 200, un poco
más rápido que los jugadores. Eso sería. Este
sería nuestro tiroteo. Ahora, sesión de eventos, como decíamos, va a ser
conducida por el árbol. Por eso es una interfaz. Para que el árbol pueda mandar a
irrelevante del actor. El actor solo necesitará
tener el inter No. En realidad podemos ir a
revisar algunos telefoneos. Entonces, si vamos a jugar, obtenemos un montón de errores en Hipoteca y plano
e Hipoteca Oh, es porque
pegó algunos errores. Debido a que dupliqué
el personaje, luego el casting en el plano de
Morgmention, realidad
va
a golpear algunos errores porque
dupliqué Sí. Así que vamos a arreglar eso. Consigue el plano de la Morgue,
tu original. Esta mala manera de buscarlo. Personaje, héroes, Morges, jugador de la morgue,
borra todo esto Ir al plano. Veamos esto. L et es esto. Esto y esto. Ahora, está bien. No, podemos jugar.
Busquemos una puerta infernal. Y tenemos tres
IA. O tenemos tres. Deberíamos tener uno o 21
porque está basado en una o. Sí, porque nuestro bucle for está basado en
cero. Vamos a arreglar eso. Volvamos a nuestra puerta infernal. Error muy básico
haber ocurrido de todos modos. Enemigos de la puerta. Cero a uno significa dos. Vamos a hacer
esto un menos uno. Vamos a estar de cero a
cero, lo que significa uno. Y ahora no tenemos puerta del infierno. De nuevo, tenemos una puerta infernal. Esta vez no nos quiere. Oye, tenemos una puerta infernal, y ahí sí tenemos un enemigo. ¿Verdad? Vamos a dispararlo.
Intentemos matarlo. En realidad, lo estoy pegando, pero en realidad no tiene und. Tiene sonido. Yo sólo
quiero cerrar el sonido. No tiene el remolcador
yo voy a ir a Atifs,
vamos a ir a remolcadores,
vamos a agregar remolcador
E, creo, no
yo. Estaba por artículos, interfaz,
interferir A distancia E es para enemigo. Tenemos el remolcador, deberíamos
poder matar a uno. Se están muriendo. Se están volviendo a levantar, pero se están muriendo. Los artículos se están
generando en cero, cero, cero. Vamos a p es ahora. Volvamos a nuestra IA
y embolsemos así de rápido. Muerte, aquí hay una muerte, floop. Por supuesto, esto vio 000 porque no hemos
establecido una ubicación. La ubicación sería simplemente. Pero sí tiran artículos. Entonces esto es genial. Sí, hay una IA Tweet y matarlo y
ver que deja caer artículos directamente en la puerta, no
importa. Ahora bien, si estoy haciendo clic en él
y estoy moviendo el mouse, volviéndome a subir,
pero sí arroja artículos. Ahora, el próximo evento
que va a ser impulsado por nuestra interfaz
es el evento knock back, que es algo que también
podemos probar ya. Esto
lo podemos hacer deporte, podemos ir en med AI y se pone knoba Oh, voy a ir a
nuestra interfaz azul, yo IA, y una función llamada Porque esto también es
un mensaje universal. Lo vamos a enviar
desde nuestro ataque Mi, y tiene que ser para cada IA, no solo esta cierta. Oh, va a ser
una interfaz de agrupación para enviársela a cualquier actor. Pero creo que este es un buen punto de
parada para aquí. Vamos a
continuar en la siguiente. Adiós.
117. Mecánica de golpes y aturdimiento: Hola, y bienvenidos de nuevo
al taller de Diseño de Juegos, Curso Real Engine five Procesal Dungeon Action ARPZ Creation Anteriormente, creamos el
plano bala AI que
se requiere de una partícula de malla
astática o nuestra malla de ira,
una partícula para hacerla brillar, una cápsula que detecte
el calor o no calor, y un Para controlar su velocidad. Ahora bien, una cosa que
no hicimos es atender a la cápsula, pero cuando golpeas a un
jugador haz algo, cuando comencemos un evento de vuelta, lo que vamos a hacer es
darle el otro componente. E, en realidad, sí necesitamos también, pero sí necesitamos en
este momento para jugador. Y necesitamos sucursales. Primero, tenemos que preguntar
si el otro actor es válido. ¿Es válido el otro actor? Porque podría ser de, podría estar siendo destruida
o algo así. Entonces, ¿es válido el otro actor? Entonces, ¿es el otro actor jugador? Si no otro jugador, es
el otro actor enemigo. Y si es nuestro jugador, vas a aplicar
daño al otro actor. Daños de uno.
Llamemos artículo, emter, ubicación.cion
sería Para el emeter, vamos a usar dot mortgage do Impact, que es una nube pequeña Ahora, pequeña nube verde. Si es si el otro
actor es enemigo, no
deberíamos hacer nada. Yo sólo debería pasar por ello. Pero si no lo es,
simplemente formaremos esta nube. Por supuesto, por último,
vamos a destruir a un actor. Por ejemplo, si no
es un enemigo, es un muro, vas destruido. Después de nuestra bala BP AI. Seguimos adelante y
creamos nuestra IA BI, que es nuestra
interfaz de blueprint para IA, y creamos dos eventos, el rodaje que completamos y el retroceso que
vamos a hacer ahora Ahora, para el rodaje,
este no es el rodaje. Esto es un rodaje. comprobando si el
personaje está muerto. Si no, estamos
jugando un montaje, y estamos desove esta
bala que creamos,
bueno, daga de ping Y estamos eligiendo
por la ubicación, el bolsillo de malla. Lo siento, me mudo. El nombre de toma de masa
arma R y por la velocidad entre esa y la ubicación del actor con
la velocidad que elegimos. Ahora, continuemos
con nuestro evento de espalda. No, llevemos a Pack. En realidad, solo hacemos doble
clic aquí en la cara. Obtenemos el evento, y
vamos a establecer el estado del
personaje en uno. Entonces vamos
a conseguir ubicación, retenerla temporal porque
vamos a movernos a esa ubicación hacia
otro lugar. Vamos a tonificar esta ubicación
temporal. Atrás. Y luego quiero
hacer otra variable. Vamos a crearlo en realidad. Voy a ser de tipo
entero de este rango. Ahora, nuestro knock back puede ser un poco buggy a veces, y pasar por paredes,
puede pasar por lugares. La forma en que podríamos esto
sería con trazas y algunas
reglas más caras y más detalladas, pero esto va a estar bien. Voy a hacer nuestro
ing aleatorio en rango, pero en rango. Y digamos 100-150. Lo que tenemos que hacer
es tocar un montaje. Toca un montaje, y
vamos a cre A Montage. Vas a ir a
nuestra carpeta hipotecaria. Ese es Mack. Éste. Y vamos a
crear un montaje de animación, vamos a abrir elegir
la ranura superior del cuerpo de la ranura Dave s y vuelve a nuestra y. Puedo dejar caer el montaje
y esta malla esquelética, y ahora tenemos una animación Ahora, como sucede esta animación, vamos a reproducir una línea de tiempo. Y en actualización,
vamos a establecer la ubicación. Voy a alertar. A
sería nuestra knockba temporal Para B, sí necesitamos una dirección
que vamos a estar multiplicando con nuestro rango trasero Convertir este entero, básicamente, la dirección tiene
que venir internamente. Lo que vamos a hacer
es que vamos a agregar un factor de entrada a nuestra interfaz de
impresión nba. Esta dirección. Compilador Dave Si volvemos ahora a nuestra IA, sí la tenemos por aquí, y podemos traerla aquí. Ahora, para nuestra unidad Alpha,
entremos en la línea de tiempo. Seleccionemos el uso del marco aski. Agreguemos un camión flotante. Vamos a sumar dos puntos. Digamos que el tiempo
sería 000 primer punto, segundo punto sería
0.5, digamos uno. Y este sería nuestro Alfa. Ahora, cuando estamos empacando, lo
siguiente que debería
pasar es que estamos cambiando estado después de la manada para atacar. Y sí nos aplicamos
daños a nosotros mismos. Si queremos realmente
querer lo hacemos. Si queremos que los hombres no
hagan daño, simplemente no
aplicamos daño
a uno mismo Esto sería todo. Tenemos un knock
back. Oh, pruébalo. Ir a ganar nivel. Sí necesitamos
agregarlo a nuestro mell. Vayamos a nuestra capacidad de mí. Habilidades, donde esta el yo. Bueno, cuando comencemos a superponerse, y el otro actor es E, el otro actor,
y volvemos a llamar. Para la dirección, vamos a sacar
al actor adelante vector. Ya que esto es rotativo
basado en el personaje. Ahora, continuemos con la
prueba hay una IA. Ahí está O Realmente
se fue muy lejos. Él sí murió. Pasé
por el piso. Encontré esto demasiado ruidoso. Bien, entonces tenemos que arreglar esto. Hagamos una pausa en Optily. El no tratar de leer y poseer pluma ahí, está bien. Hagámoslo en su nota
válida aquí. Si no es válido,
trata de hacerlo. A lo mejor porque no
hemos poseído. Sí. ¿Qué tiene de malo el toco que ver con s. actor actor paciente. Cuando lo adjuntamos al jugador, abramos el
plano del jugador por un segundo Vamos a los planos,
a nuestro personaje principal. Respondeme, estamos adjuntarlo. Actor auto, así que no. Sostén parece estar prendido. Sin embargo, actor. Estamos jugando, así que deberíamos ser ping desde el
principio, antes que nada. Bien. Sí, no voy a agregar la ubicación temporal
a la dirección. Hace una dirección a partir de esto es por lo que vuelve al
inicio del mapa? Es por ello que cuando golpeo a Mack, volvió a la primera baldosa tiró a la primera baldosa en sí aquí porque yo estaba
aquí y se tiró aquí. Entonces tiene una dirección, pero en qué parte del mundo. No especificé
en qué parte del mundo. Tenemos de nuevo el
tema de la texturación. Así que nuestro streaming de tamaño completo 200. Se puede ver que el
mapa de aquí está mal texturado a esto, bueno. Y vamos a buscar una IA. Aquí no hay ninguno. Bien.
Aquí hay una IA. Junto a ella. Y ahora
knock back funciona. Estamos golpeando respaldando a la IA. Es muy molesto
que si de pie, pero vamos a arreglar esto. Deberían. Parece que está molestado. Voy a
averiguarlo más tarde. Sigamos haciendo la IA. Ninguna espalda está funcionando, nuestros problemas de tiro, pero nuestro nback está funcionando también
está haciendo daño Ahora, por último, lo que tenemos que hacer antes de entrar en nuestra decisión
T, activar todas estas. Necesitamos crear dos eventos
más en nuestro BI,
I AI, lo que realidad me permitirá estar en
pintura por un segundo. Hace mucho que no lo
hemos hecho. Oh, digamos nuestra IA por aquí, y aquí hay un muro. Y nuestro jugador está
detrás de este muro. Ahora, cuando la IA intenta encontrar
al jugador, se mueve como en algún lugar de aquí, digamos que consigue este punto. Es dirección sería
en realidad no hacia aquí arriba, sino el último lugar estaría yendo al
lugar al que se mueve. Pero queríamos girarnos
hacia el jugador. Entonces vamos a hacer trampa un poco, y usaremos la rotación
esta es una R, rara R, pero es una R. La rotación
basada en el movimiento, como usar la rotación
gira hacia el movimiento. Y luego cuando apagamos
esto y usamos la rotación del controlador que se
establecerá hacia el jugador. Para la IA, se moverá a un punto y girará
hacia el jugador. Y vamos a fijar la
tasa de giro y todo en la decisión y la
toma de decisiones la. El comportamiento t. De todas formas, volvamos a nuestro proyecto. Y agreguemos estos dos eventos. Vamos a B I AI. Función. Llamemos a
este controlador. Hagamos
otro, el movimiento gire. Vayamos a AI y
llamemos a estos dos eventos. Para compilar. Dave.
Rotación del controlador, rotación de movimiento, vamos a conseguir nuestro movimiento de
personaje, et rotación deseada. ¿Qué? O Que orienten
la rotación al movimiento. Estos son los dos. Esto va a estar apagado y esto
estaría en base ellos arriba. Conecta el movimiento del personaje, y esto estará encendido,
y esto estará apagado. Y eso sería
todo. Nuestro código aquí, está prácticamente
hecho dentro de la IA. Vamos a traer esto aquí arriba. También aquí está solo, y eso sería todo. Vamos a compilar y guardar.
Y en la siguiente, comencemos con
nuestro comportamiento tres. Adiós.
118. Variables de Blackboard y configuración del árbol de comportamiento: Hola, y bienvenidos a Taller de Diseño de
Juegos y Real Engine five Procesal Dungeon Action Curso de
Creación de GLP Anteriormente, terminamos
con nuestros eventos sobre IA, nuestros eventos de BI, nuestro evento de
mensajes. Terminamos con knock Back. Ponemos a nuestro personaje para aturdir, establecemos una ubicación temporal, un rango de retroceso temporal Realizamos animación, y mientras se reproduce
la animación,
jugamos una línea de tiempo de 0.5. Esto es aproximadamente el
momento de la animación y esa
ubicación del actor en consecuencia, que usamos la dirección
a través de nuestro ataque de correo, y agregamos a la ubicación
principal. Al final de eso,
lo olvidé, la prensa corre, y para dar la dirección
donde en el mundo, y pasamos por la ubicación
original para estar. Ahora, cuando terminó, configuramos nuestro
modo de ataque AI dos y recibe un daño, que en realidad debería ser opuesto La razón está
bien, realmente no importa. Porque si conseguimos un daño, nos quedaremos atónitos Entonces sí,
por eso sí importa
porque si primero aplicamos daños y vamos a ¿cuál
es el evento de daño? Aquí está, obtenemos un daño
y nos quedaremos atónitos. Y si ya estamos atónitos, no nos vuelve a atropellar. Entonces después de eso, estamos
cambiando para atacar. Entonces es por eso que este
orden importa. Ahora bien, es una especie de error
un poco porque esto no quiere decir que esto
va a esperar hasta el evento, porque está llamando a ese evento. Se llama daño aplicado. No creo que vaya a esperar. No podemos poner un pequeño retraso aquí. De 0.1. Entonces para
atacar, estar más seguros. De todas formas. Luego creamos otros
dos eventos que
estamos usando la rotación del
deseo del controlador, en lugar de un
movimiento orientado que
usaremos para apuntar hacia nuestro
objetivo, nuestro jugador. Y todo esto sucederá
en el comportamiento de IA tres. Ahora realmente deberíamos llenar primero
la pizarra. Pero antes de hacer eso, déjame explicarte algunas cosas. A través de la raíz. Este es el primer nodo que se ejecuta cuando ejecutamos
el árbol de comportamiento, tenemos algunas opciones. Tenemos el selector,
la secuencia y el paralelo simple. Lo que vamos a estar
usando es selector y secuencia, no más óptimo. Algunos casos podríamos haber
utilizado un simple paralelo, pero estos son los
dos más comunes. Pero vamos a traer un selector, y vamos a traer también una secuencia. Ambos puedes ver
estas flechas aquí. Si traigo conectar
a la raíz dos, desafortunadamente, conectar solo uno. Pero trae otro selector
solo por el bien. Se puede ver que tenemos una
orden de operaciones 012. Esta es la forma en que corre. Entonces, si traigo esto por
aquí, entonces esto se convierte en dos. Por lo que tanto los selectores como
las secuencias corren de izquierda a derecha para
completar sus acciones Las diferencias entre
selector y secuencias que como dice en la descripción emergente, dejará de ejecutarse cuando
uno de sus hijos tenga éxito, cuando esto sea
lo contrario, continuará de izquierda a derecha hasta que falle uno de
los hijos Lo que vamos a
usar para el primer nodo va a ser elector Yo voy a aquí. Podríamos haber usado una secuencia. Realmente no importa
porque en este nodo, secuencia
selectora o paralelo, podemos poner estas decoraciones, que significa cuáles son las
condiciones de este selector. Estoy divagando. Empecemos por establecer nuestras variables
en nuestra pizarra Las variables aquí se llaman claves, y básicamente son
las mismas variables de cosa. Pero para actualizarlos, tenemos que hacerlo
de cierta manera. Pero vamos a agregarlos primero. Vamos a crear b, necesitamos
en realidad tres bs. Uno, dos, tres.
Necesitamos dos vectores. También necesitamos una
enumeración de ocho. Digamos este ocho. De hecho, P
uno estaría muerto. P dos sería mejor Hospedar muerto. Tirar tres estaría en ocho. No necesitamos el rango
porque va a tener otro específico sí
necesitamos el rango. ¿Por qué no? Tengamos
también en rango. Podemos usarlo. En cierto sentido. Oh. Los vectores deben ser hospedadores. La ubicación y la otra
deben trasladarse a la ubicación. Ahora, por último, necesitamos un actor. Necesitamos al enemigo como
ellos están en el enemigo. Entonces, ¿qué vamos a hacer
puede crear un objeto? La diferencia es que los objetos están por encima en jerarquía
de los actores. No podemos tener
actores específicos como variable aquí. No podemos tener un tipo de clave como cambiar el objeto
a, por ejemplo, este caso actor, pero
podríamos haberlo cambiado a cualquier cosa que
quisiéramos ser específicos. Pero es mejor mantenerlo lo más generalizado
posible. Solo tenemos que estar haciendo un seguimiento de que no deberíamos estar poniendo al actor o al objeto
a algo que no es correcto porque
podría retroceder las cosas. Puede provocar choques. Así que vamos a guardar esto, y volvamos a nuestro
comportamiento, en realidad Podríamos haber ido a
esta tina y estrellarnos.
119. Configuración de variables de Blackboard y árboles de comportamiento de IA: Hola, y bienvenidos a Taller de Diseño de
Juegos n motor
real cinco Convocatorias de
Creación de PZ de Acción de
Calabozo Procesal Creación de PZ de Acción de
Calabozo A veces no le gusta si estás editando una
pizarra afuera y tienes abierta en t
y causa algunos bloqueos De vuelta a nuestro árbol. Lo primero
debería ser el lector, pero realmente no
importa
porque sólo va a
ejecutar un servicio. Vamos a crear sobre el nuevo servicio. Nombre este servicio
ES, PT servicio. Servicio am a PD, consíganos. Ábrela, ábrela pavimentar. Lo que necesitamos es n tengas que recibir Tick AI En primer lugar, hagamos una secuencia porque una cosa no queremos que
se ejecute cada vez. Y eso sería conseguir el conseguir el
actor jugador como referencia. Tenemos nuestra variable
en nuestra pizarra, que tenemos objeto Llamemos a este jugador o enemigo. El par es el enemigo del enemigo
I, lo que tú quieras. Oh, vamos a
crear una variable aquí. Va a ser una
pizarra, selector. Ahora pongamos a este selector Enemigo. Vamos a traerlo aquí. Preguntemos si es válido. Vamos a retroceder el valor p. Como actor este
valor de pizarra es un actor. Lo sabemos por Blackboard, que es objeto, pero actor de clase
base realmente no
importa Y esto es
parte importante cuando estamos agregando claves de
Blackboard Blackboard para saber qué tipo de valor
son qué tipo de valor ¿
qué tipo de actor? Qué tipo de variable, qué tipo de variable
son. No. Vamos a comprobar
si esto es válido. Voy a conectarlo aquí. Porque si yo estaba
pidiendo este valor y lo estaba pidiendo como vector
y era actor, entonces esto no funcionaría. Pero también hay
algo que nos
dirá cómo se basa en qué se basa. Agreguemos el servicio aquí
para mostrar esta buena oportunidad. Entonces voy a hacer click derecho, voy a agregar servicio, y el servicio que voy
a agregar es empezar. Ahora bien, si selecciono este servicio, no expuse la variable. Esto también es algo
muy importante. Tenemos que hacer que las
teclas de la pizarra sean editables instantáneamente. Deben estar expuestos o
el árbol puede verlas. Entonces ahora tenemos aquí al enemigo
BB, y necesitamos darle
una referencia a nuestras
claves de Blackboard, como pueden ver Entonces, ¿cuál es esta clave? Entonces esta clave sería enemiga, que sabemos que es un
objeto de tipo actor, y también correspondemos este
valor a la pizarra Ahora bien, si alguno de este cambio de eventos no es correcto,
esto no va a funcionar. Por eso digo que es un poco
exagerado estar usando pizarras para tareas sencillas, pero es una buena manera también de
mostrar unas Vamos a continuar. Cuando no
es válido, queremos que una pizarra vuelva a clavar esta
llave. Como objeto. Porque estamos
tratando de ponerla como actor. Se puede ver que no existe. Entonces esto es sólo una
forma de evitar, básicamente, lo
guardamos como objeto y
amable sabemos qué
tipo de objeto es. Conectemos esto aquí.
Y por el valor, vamos a llegar ahí. Ahora bien, esto es
lo único que corre. Lo segundo que
tenemos que
hacer es actualizar todos nuestros valores. Para ello, vamos
a necesitar agregar una interfaz de blueprint, vamos a agregar una función, vamos a todos los get Ts y va a
tener un montón de salidas Pero necesitamos o Bulina. De hecho necesitamos copiar
nuestras llaves de pizarra. Entonces uno está muerto, el otro, dirigido. El otro está dentro
y está dentro del rango. Entonces necesitamos un valor más de E M, no. Un estado EA I. E A uno afirma. Llamemos a esta fecha. Por último, necesitamos uno más, que sería tipo o va a ser la ubicación del
anfitrión. Ahora, volvamos a nuestro personaje solo para
llenar esta última función. Hay un personaje
de arriba hacia abajo, el personaje de IA, Una bala. Está cerrado o volvamos a abrirlo. Probablemente a través del choque. No está cerrado por aquí. Lo es. Esa es esta cosa
que la hace muy pequeña. Vamos a bn por aquí. Ahora, vayamos a nuestra interfaz, vayamos a conseguir Starts, y conectemos las llegadas
correctas. En rango para dentro de rango, dentro para la visión,
muerto por muerto, host para ubicación de host, ocho para el estado, y el host
está muerto o el host está muerto. Volvamos por el servicio. Vamos a crear un montón de valores de clave de puerto
Negro. El ocho. Obtener Suts estado. Así que consigue stuts. Y podemos ver ¿qué es
qué? Necesitamos un muerto. Necesitamos un puesto muerto. Todos deberían tener BB
delante de ellos Blackport key. B dentro del rango B. Como r extra duplicar dos
veces más B ocho y B. Ahora, necesitamos en
todos estos valores. Entonces comencemos de eso, ese Blackward Kias necesitamos
copiar y pegar más veces Y conseguimos los bulions, papá, los bion los keys van Conecte esto y
conectemos muerto a muerto a host a insight,
y rango de rango. Por último, pongamos esta clave
blackw como in ation. Va a conseguir el estado aquí. Y por último esa clave de puerto trasero como Vector y conecta esto
aquí y esto por aquí. Entonces, todo está listo. En nuestro servicio BTT BT. Tarea BTT BT. Lejos. Cerremos el servicio.
Ya no lo necesitamos. Volvamos a tres,
y tenemos que establecer. Yo no los hice posar, volver al servicio. Vamos a exponer todo esto. Podemos hacer click en este yo por aquí. No necesitamos
realmente hacer clic en esto, pero podemos hacer clic en
el I aquí. Ahora volvemos a tres.
Seleccionemos el servicio. D compilan y ahora
podemos ponerlos todos. BT muerto está muerto. OS muerto es anfitrión muerto. El interior está dentro, el
rango I está en el rango, estado
AD y la
ubicación del host es la ubicación del host. Esto actualizará nuestras estadísticas Nuestras, nuestra pizarra, como podemos ver cada 0.5 con
desviación de uno Creo que esto es un
poco bajo. Pero tal vez deberíamos hacerlo
un poco más rápido. Para ello, lo vamos
a poner en 0.4, y desviación de uno, y
correrá cada tres,
dos, 5 segundos, en lugar
de cuatro a seis. Oh. Lo siguiente es, ¿qué
hacemos con toda esta información? Bueno, creo que este es un buen punto de
sopping para este. Pasamos nuestras referencias, pasamos nuestras variables
a nuestra pizarra Y en la siguiente, comencemos a programar lo que sucede
con esta información.
120. Comportamiento de patrulla con IA y modo de pánico: Hola, y bienvenidos al taller de Diseño de
Juegos, curso real Engine five procedural creación de RPG de acción
Dungeon Anteriormente,
creamos nuestro servicio para actualizar nuestra información. Y para ello,
utilizamos la función en nuestra interfaz de
blueprint, que se llama Get Stats En esta función,
agregamos algunas salidas y en nuestro carácter de IA, es, llenamos esta función
para pasar nuestros inicios. Luego en nuestro servicio, usamos el
código apropiado para establecer las
llaves de la pizarra obteniendo nuestros inicios
desde nuestro pon controlado Ahora, también establecemos el pon
pagador para que solo se haga una vez si la clave de la
pizarra no es válida Ahora, continuemos. Vamos a crear un
lector selector que puedas ver, cuando salimos de ruta, obtenemos muchas más opciones. Esto puede suceder, por ejemplo, ejecutar equs después del primer nodo Y no entraremos
en muchos detalles. Pero el primer selector
solo debería tener un decorador, y ese sería un decorador de
Blackboard, lo que significa una Entonces cuando hacemos clic
en el decorador, que es una regla básicamente
para que esto proceda, vamos a usar la regla.
Vamos a hacer clic en la regla. Y vamos a
poner nuestra equery, que la llave de la pizarra que no está puesta,
la
llave de la pizarra sería anuncio Si estamos muertos, no vamos a
pasar por esto, y va a abortar tel Esto significa que todo lo
que está pasando en ello, y seguimos por aquí, lo que significa
no hacer nada en nuestro caso. Ahora, para nuestro primer
elector, usemos ens. Esto podría ser lo
mejor primero que nuestro selector intente porque se detiene cuando los primeros
hijos tienen éxito. Entonces nuestro primer intento de éxito algo si estamos
en modo patrulla. Y esto me recuerda,
volvamos a nuestra IA y establecemos nuestro estado para que
sea patrulla predeterminada. Eso es por defecto. Eso es muy importante porque
si esto no es patrullar, entonces nuestra secuencia
no correrá, no voy a jugar. Vamos a agregar
la clave del corredor. Vamos a establecer
la clave de puerto negro para que sea el estado de enumeración, y esto cambia la consulta de clave y es igual a
y el valor clave Oh, sí. Tenemos que
ir a la pizarra negra. F la A, tenemos que
elegir un tipo, que serían estados de IA. Todos los detalles. Ahora, pongamos el valor
E igual a patrullar. Esta es la condición
para ejecutar la secuencia. Si esto falla, entonces
pasará al siguiente. El primero que tendrá
éxito, entrará. Este es el selector. Ahora, vamos a
hacer la secuencia, que significa dos cosas
hasta que una de ellas falle. No. Lo primero que
tenemos que hacer es ejecutar una tarea que
obtendrá un punto aleatorio. Vamos a crear una nueva tarea. Llamémoslo tarea BT. Vamos a anotar dos localizaciones aleatorias. Y entramos en él. Ahora. Vamos a ta ejecutar IA, esto significa cuando, no
expliqué tanto. Aquí, tenemos una recepción de Tick AI, que el tick determinó
a partir de realmente nuestra línea de tiempo. Aquí, hemos establecido un tick aquí donde este recibe una ejecución. Nuestro exudado estará
llamando aquí a esta tarea. Entonces llamémoslo en realidad. Podemos ver aquí en tareas, DT tsk ubicación aleatoria aleatoria Pero vamos a llenar el código. Entonces este es el ex recibe IA. Recibir ejecutar evento AI. Para ello, vamos a necesitar tres variables de
las pizarras Vamos a crear tres variables, valor
de pizarra o Pero estoy teniendo o selector El resto de ellos.
Selector de teclas. Keelector El primero
sería nuestro paso a clave. El segundo sería anfitrión. El tercero sería
nuestro host raíz, raíz. Todos estos necesitan estar
frente a ellos, solo para ser correctos. La palabra clave no es necesaria. Vamos a conseguir
nuestro punto de control. Vamos a conseguir la ubicación del
actor, y vamos a seleccionar. El valor sería
si nuestro anfitrión muriera. Valorar como prohibición porque
nuestro anfitrión muerto es una prohibición. F B, vamos a obtener la ubicación del
host, en realidad, ubicación del
host, y
vamos a obtener un puerto como vector.
Conéctalo aquí. Ahora, lo siguiente que
vamos a hacer es apuntar en un radio alcanzable, y vamos a establecer
el radio en 800 ¿Qué hace esto?
Nos dice si nuestro anfitrión está muerto, consigue un punto aleatorio
alrededor del jugador. Si no está muerto, consigue un punto
aleatorio alrededor del anfitrión. Y luego vamos a eso la película película, películas
notables. De todas formas, Suerte Kías vector, y esto es un resultado Ahora, cuando estamos ejecutando una tarea, necesitamos terminar las ejecuciones. Bueno, no todo el tiempo, pero éste requiere saber
que es un éxito de caballo. Veo forse porque aquí
no estamos poniendo ninguna condición Si esto falla o tiene éxito
, no nos importa Diremos que
fue un éxito. Nuestra secuencia puede
ejecutar la siguiente tarea, lo cual no vamos a
complicarla. Sólo usaremos dos. Para para la clave Blackboard, vamos a usar el movimiento dos,
A, vamos a C. Ahora es la ubicación, no
es la ubicación. No. Lo que tenemos que hacer
es ir a nuestra tarea, verificar que tenemos
no lo he hecho público. Siempre necesitan ser públicos, y podemos establecer la mudanza
a nuestra mudanza a la ubicación, nuestra ubicación de anfitrión a
nuestra ubicación de anfitrión, y el anfitrión está muerto
para el anfitrión está muerto. Hagamos otra
secuencia a partir de aquí. Poner un decorador, valor de
pizarra, y la condición sería
root está muerto, host está Y si no está establecido,
vamos a entrar. Y lo que vamos a hacer,
por favor vaya a esperar 5 segundos. Entonces cuando está patrullando
y el anfitrión no
está muerto, esperando 5 segundos. Si está patrullando
y el anfitrión está muerto, simplemente
correrá aleatoriamente
por nuestro calabozo Al igual que, creamos un modo de pánico. El anfitrión murió, corremos
al azar sin fin. Este será un modo de pánico. No me lo haremos modo pánico. Solo volveremos a patrullar, y va a entrar en pánico por sí solo. Entonces sólo para
repasarlo una vez más, estamos empezando, y estamos comprobando
si no estamos muertos. Si no estamos muertos, estamos tratando de ver si
estamos patrullando Si no estamos patrullando,
vamos a estar haciendo otra
cosa. Si estamos patrullando,
estamos eligiendo una ubicación aleatoria a nuestro alrededor. Nos trasladamos a esa ubicación. Si nuestro anfitrión no está
muerto, esperamos. Si nuestro anfitrión está muerto, elegimos otra
ubicación y corremos por ahí. Ahora, una última cosa que
deberíamos hacer, nuevo, el auto abortar Entonces cuando los cambios,
esto aborta, s. y también hacerlo en
cuando el anfitrión esté muerto, cuando el anfitrión esté muerto, abortamos esto,
abortamos Una cosa fácil de hacer es secuencia de paso del
CVI por
aquí, conectivo Aquí, va a ser el
último porque entre ellos, vamos a poner tiro. Y lo que voy a hacer es en lugar de
verificar la patrulla, es que voy a comprobar si hay aturdimiento Y si nos quedamos atónitos, no
estamos haciendo nada,
eso sería. Estamos atónitos. Lo sé, a lo mejor tú también estás aturdido, pero así es como funciona Este es sencillo. Y nos vamos a dejar
a sí mismos si cambiamos de
condición de. Ahora, creo que este podría
ser un buen punto de ruptura. En la siguiente, vamos a hacer la lógica de tiro porque si no estamos patrullando y debemos verificar
si estamos disparando Y por último, comprobamos si hay aturdimiento. Entonces, te voy
a ver entonces. Adiós.
121. Modo de ataque con IA y comprobaciones de la línea de visión: Hola, y bienvenidos a Game
Design Workshop Under engine five Procesal Dungeon action RPG Creation curso Anteriormente, creamos la
tarea BT para elegir la ubicación. Creamos tres variables,
las claves de puerto Black, y una de ellas es
la ubicación del host. El otro es el
traslado a ubicación, y el otro es
el anfitrión está muerto. Entonces, si el anfitrión está muerto, estamos eligiendo una ubicación
alrededor de nuestro jugador. Si no está muerto, estamos eligiendo una ubicación
alrededor del anfitrión. Y estamos estableciendo esa
ubicación para nuestra mudanza a. Después se procede a terminar de
ejecutar con un cuarto éxito. En nuestro árbol, lo agregamos después de la pregunta si
el jugador está muerto. En nuestro selector,
lo primero que estamos comprobando es si nuestra IA está en estado de patrulla. Si está en estado de patrulla, estamos eligiendo esta ubicación de tarea
aleatoria. Estamos usando esta tarea, que es elegir una ubicación
aleatoria. Nos trasladamos a esa ubicación. Si el anfitrión está muerto, estamos esperando 5 segundos. Si no está muerto, seguimos
corriendo en modo pánico. Y luego agregamos
otra condición, otra secuencia, si esto falla. Tratará de comprobar
si estamos atónitos, y si estamos atónitos, no
va a hacer No. Vamos a crear nuestro
ataque ahora mismo. Pero esta vez otra vez,
necesitamos un selector. Porque vamos
a verificar entre dos cosas para verificar si estamos
ingresando una u otra,
porque el selector se detiene cuando uno de sus
hijos tiene éxito, por lo que no pasará
a la siguiente Ahora, usemos una
secuencia en realidad. Pongamos valor al decorador
Blackboard. Seleccionemos el decorador, que sería la llave de pizarra, nuestro estado es igual a atacar Por supuesto, abortará por sí mismo. Oh. Consigamos nuestra secuencia. Lo primero que debemos verificar es, es nuestro actor en rango. Vamos a enumerar la variable in
range aquí. Ponle un decorador, pizarra. Rango. Eso en realidad no establecido. No estamos en rango si
estamos en un estado de ataque, y no estamos en rango, vamos a ponernos en rango. Para ello, vamos
a necesitar otra tarea. Vamos a poner esto a la tabla de
surf también. Sabes qué, en realidad, no
nos pongamos adelante. Si no estamos en el rango, vamos a intentar ponernos en
rango pase lo que pase. Incluso si el jugador entra
repentinamente en nuestro rango, aún
deberíamos ir a la
posición a la que decidimos ir. Hará que parezca que la IA va a hacer algo,
vamos a crear ansiedad. Vayamos ahora a crear nuestra tarea, llamémosla paso
hacia el objetivo. Nueva tarea, en ritmo, y llamemos a esto
pupilos y entremos. Vamos a utilizar el evento
ejecutar de nuevo. Exuda IA Y lo primero que
debemos hacer es acaso ya hemos atacado y estamos rotando hemos configurado la rotación para que
rote al controlador. Tenemos que rotar al
movimiento de rotación. Estamos enviando a
nuestro plano de IA. Esta es la bala que
ahora mismo, vamos a mover, y necesitamos usar la rotación de
orientar al movimiento. Porque cuando estamos atacando, usaremos la
rotación de orientar al controlador. No, servicio bacor,
esta tarea bactor. Lo siguiente que debemos
hacer es hacer una pregunta. Entonces vamos a poner una rama Bueno, la pregunta sería, puedo llegar a un punto al
lado de nuestro jugador? Encontramos un punto Básicamente, vamos a volver a crear una fórmula
matemática para crear un círculo
alrededor de nuestro personaje. Y si podemos llegar a un
punto en ese círculo, va a ser cierto. Si no lo es,
va a ser falso, y vamos a terminar de
ejecutar sin éxito. Entonces esto volverá
a correr. Va a fallar. Entonces cuando el primero falla, aborta, y luego los tres vuelven a correr e
intenta encontrar otro punto Oh, ¿cómo hacemos esto? Bueno, empecemos por
nuestra fórmula circular. Entonces vamos a conseguir a Pi. Vamos a
multiplicarlo por dos o un valor máximo, y vamos a
obtener un rango flotante. Y el mínimo sería Pi, y el máximo
sería i cuadrado básicamente, pi cuadrado, lo siento, dos Pi,
do Pi cuadrado, necesitaríamos
multiplicar con italf Y a partir de esto,
vamos a conseguir. O seno, asegúrate de que sea
un resplandor y grados, y entonces vamos a conseguir un resplandor
sinusoidal tiene
que ser persistente Vamos a
multiplicar esto por 500. Entonces ese sería el
rango básicamente. Y luego tenemos que agregarlo a ubicación de
nuestro jugador
para que el jugador se ponga, obtenga una ubicación a. Y vamos a frenar. Split es cuando lo estamos
eligiendo aquí. Freno eligiéndolo con el pasador. Y desde la Z, vamos al punto de trapo
aleatorio en radio No queremos eso para radio. Eso queremos. En realidad, esto
es un radio, no el 500. También es para x, vamos a usar
esto, para,
vamos a usar esto y para y, vamos a usar el letrero. Ahora, conectemos
esto a la condición, el valor de retorno si
lo encontramos o no esa ubicación, si es
lote alcanzable, y lo es, necesitamos decirle al controlador
de conexión, brunch Mirar los nodos
y mirar el código puede ser
difícil a veces. Tenemos que conseguir este
controlador y establecer el punto
focal. Eso es
correcto este año. Y por supuesto, necesitamos
un valor de clave de pizarra, así que Selector de teclas Black board Todos estos son MB hasta aquí y carecen de valor como vector aquí. De hecho necesitamos
promover esto a una variable porque
si la usamos dos veces, y vamos a obtener
dos veces en punto aleatorio. Y luego vamos
a terminar. Acceso. Esto sería pedir guardar. Hagamos la llave bd. Valorar público, virar
el I o ir a editar. Volvamos a nuestra mesa, y de nuestra secuencia
llamamos a los PTs al blanco. Vamos a
seleccionar esto. presentado s ahora vamos a seleccionar esta sea nuestra
mudanza a la ubicación. Entonces sólo tenemos que pasar a. Nos trasladamos a la ubicación, que tenemos la patrulla, así que copia aquí, que tiene la
variable ya establecida. Aquí. Y eso
sería desde un lado. Entonces, si estamos atacando
y no estamos en el rango, estamos encontrando un lugar aleatorio. Estamos tratando de encontrar
un lugar aleatorio cerca del jugador y movernos a allí. Hasta que lo encontremos, estamos
atrapados en este bucle de aquí. Ahora, sigamos
al siguiente. Va a ser
una secuencia otra vez. Este correrá en
base a dos decoraciones. El uno, el rango
estaría en rango. Agreguemos otro o k. Y este
sería también es por sorpresa, necesitamos otra tarea aquí. Pero creo que este es un buen punto de
parada para este. Vamos a
continuar en la siguiente. Adiós.
122. Optimización de volumen y búsqueda de caminos de navegación con IA: Hola, y bienvenidos de nuevo al taller de diseño de
juegos
y motor real cinco, creación
psic de acción de Dungeon
procesal Anteriormente, comenzamos
con nuestro poner parte de nuestra parte de nuestro estado es igual a atacar a nuestro árbol de comportamiento. Entonces, si es igual a atacar, estamos comprobando si nuestro
personaje está en rango o no. Si no está dentro del alcance, entonces estamos tratando de encontrar un
paso hacia el personaje, movernos a la ubicación
hacia el personaje, y nos movemos a esa ubicación. ¿Cómo logramos esto? Bueno, estamos poniendo nuestro
movimiento a rotación. Entonces el personaje se mueve
en base a su rotación. Y entonces
estamos consiguiendo un punto
alrededor del personaje. Estamos haciendo algunas matemáticas aquí para crear un círculo
alrededor del personaje, y estamos comprobando un
radio 200 radio de 200 alrededor del punto de radio 500 que estamos creando el círculo, estamos haciendo el círculo
y a partir de ese punto, obtener otro
radio 200, básicamente. No, la razón por la que hacemos eso. No le expliqué
tanto esto es porque
realmente no queremos tomar un punto alrededor del jugador
y solo ir aquí. Toma este punto y
otro radio 200 tal vez nos alejemos un
poco más
del personaje. Hay más posibilidades
de que eso suceda. Podría haber formas más
intrincadas hacerlo más
fórmulas matemáticas, más condiciones Pero creo que este es un buen
trabajo alrededor para un resultado rápido. Entonces, después de eso,
si no es cierto, estamos regresando ejecutar falso. Entonces nuestro tetrac en un bucle aquí hasta que
encuentre un punto correcto Y si no lo hace, si encuentra el punto correcto,
establece el punto focal
local del mouse, y establecemos el valor de la clave de
pizarra y terminamos de ejecutar como true Para que podamos movernos a esa ubicación. Entonces empezamos con
nuestro lo que pasa si el carter esta en rango
y tambien esta en apretado. Ahora bien, cómo va a
salir esto , cómo
vamos a jugar, vamos a crear una tarea,
una tarea para esperar, una tarea para disparar, y una tarea para reiniciar el rodaje. Entonces, comencemos con la am, nueva tarea, base de impresión. Llamemos a esto Am, por supuesto, vamos a necesitar el recei t. Asegúrate elegir la IA ejecutar,
no solo ejecutar Vamos a enviar que necesitamos la rotación del controlador
para que el mensaje del controlador. Y vamos a establecer
punto a partir del punto. Y vamos a conseguir p y
vamos a estar atentos. Entonces estamos usando la rotación
del controlador. Estamos fijando el punto focal, y éste girará
hacia ahí. Entonces vamos a
terminar de ejecutar. Ahora, hablando de
la rotación
del controlador
que es el punto. Hay una manera de controlar
la velocidad de rotación. Entonces, si vamos a
nuestro personaje de IA, vamos al movimiento del personaje
y tecleamos rotación, aquí
hay ciertos ajustes, y hay uno de ellos llamado configuración de
rotación del movimiento del
personaje, que está ahora mismo en 40 en adelante, vamos a reducirlo a 360. Pero esta es la tasa
que está rotando básicamente. Como puede ver, el cambio en la
rotación por segundo utilizado
cuando se establece el control de la rotación deseada u orientación al movimiento. Pero esto controla la
rotación en ambos casos, o el control de rotación deseado o la
rotación de orientación al movimiento. Ahora, volvamos a nuestro BT
y cuando terminemos de ejecutar, debemos forzar el éxito. Volvamos a nuestros
tres y llamemos a esto tarea. PTT A. Lo siguiente que
debemos hacer es esperar. Ahora, vamos a cambiar un poco los
ajustes de peso. Tener un tiempo de espera por aquí, así que vamos a
esperar 0.2 segundos. Te vamos a dar una desviación
aleatoria de 0.1. Entonces podemos esperar 2.3
segundos o 0.1 segundos. Y eso creará
una sensación aleatoria de cuando la IA está atacando. Y aquí viene la siguiente parte, que es que vamos
a estar filmando. Una nueva tarea otra vez. Ser base de impresión. Llamemos a esta toma de tarea BT. Consigamos la ejecución. IA. Esto es muy sencillo. Lo que tenemos que hacer es conseguir nuestro control pm y mensaje porque ya
hemos hecho el
código para disparar. Ahora, podemos poner una tarea de
peso en nuestro te, o en realidad podemos
poner un retraso aquí. Porque después de que
disparemos, deberíamos demorarnos por. Vamos a retrasar para un rango aleatorio. Rango flotante aleatorio, lo siento, de 1.4 a 1.1 0.6. Terminemos de ejecutar. Estoy haciendo esto así y no consistente porque
quiero demostrar que hay muchas
maneras de hacer las cosas. No hay una manera, y realmente no tiene ninguna diferencia si
pongo el peso aquí. Entonces básicamente la
diferencia es que a lo mejor esto abortará
si aborto yo mismo Pero la tarea abortará
también cuando aborte yo mismo. Entonces, hay muchas
maneras de hacer las cosas. Sólo tiene que funcionar. Oh, llamemos a disparar. T es la sesión de tareas. Y ahora reiniciemos sesión, así que necesitamos una nueva tarea para
traer la sesión de reinicio de tarea base. Y lo que vamos a
hacer,
lo miraremos porque vamos
a establecer las variables, vayamos al
árbol y mostremos esto. Vamos a establecer estas
variables en false. Entonces para que se fijen en verdad. La garrapata necesita volver a correr. Va
a necesitar verificar cada 0.3 o 0.5 en estos números, et ellos de nuevo a true. Entonces esta es otra forma
de crear un pequeño retraso. Ahora, vayamos a resetear el rodaje. Vamos a recibir exudados. IA. Solo necesitamos en realidad
crear dos variables, claves de
pizarra o negras Pizarra llaves elector,
y una de ellas será Bp. El otro sería rango PB. Esto da la oportunidad también cuando el jugador
se mueve fuera de rango. Ese retraso, ese
retraso, por ejemplo, cuando salimos de
rango entre los segundos nos da oportunidad de
acciones más complejas si quisiéramos. Entonces, volvamos a esto
y al valor de desplumar. Valores y acabado ejecutar. En cuanto a que estamos poniendo
estas dos caídas, y debemos hacerlas públicas. Podemos establecerles nuestra IA. Tres aquí compilan. Yo creo que estoy eligiendo
el evento equivocado. Sí, eso debe ser
, así que B t este conjunto. Y aquí, claro,
están aquí. Apretado en el rango. Básicamente, esto es para.
123. Volumen de navegación y optimización: Hola, y bienvenidos de nuevo
al taller de Diseño de Juegos, y motor real cinco procesales Dungeon action AR
Phys curso de creación Ahora, para que se mueva y haga
todas nuestras cosas maravillosas. Como podías ver en cada
tarea que necesitábamos un punto aleatorio o un movimiento
hacia, necesitamos un dato nervioso, que en realidad no lo necesitamos porque puede obtenerlo
automáticamente. Pero lo que vamos a hacer es que vamos a
crear un volumen enorme. Esto. Entonces necesitamos otro volumen
de rebote de malla. Establezca su ubicación en 00. Pongamos su a
cuatro K en todas partes. Podemos aumentar mucho su altura porque estamos empezando en 00, así que tal vez. Sí, eso son 30 k. Si esto es cero. Esto
es lo que hace que nuestro no
pueda ser infinito porque no podemos mover la navegación me libra planos de
volumen Como puedes ver, intenta
construir el volumen de navegación, aunque no haya nada en él. Pero sí necesitamos
hacer algunos cambios. Voy a construir. Vamos a continuar después. Y permítanme demostrar por qué
necesitamos estos ajustes. Se trata de un enorme volumen
de navegación. En primer lugar,
demostramos que necesitamos
ir a la configuración del proyecto, algún tiempo, que
es un entorno de nación, y queremos que sea dinámico. Yo presiono Lo último, tenemos que cambiar
el perno de refundido a Es generación de
tiempo de ejecución , entonces estoy bien. Lo obtuve de la configuración
del proyecto. Ahora bien, si presiono play, para ver un poco fornido Y si elijo nación, Así que si elijo
navegación, puedes ver. Es un área grande. Se bs navegación incluso
en los tejados. Entonces sí, es un área grande, y cuanto más brazo grande va a conseguir más áreas que tengamos, y se va a ensuciar Va a conseguir realmente frame y toda esta IA
moviéndose a su alrededor. Para cambiar esto,
vamos a usar algo. No se supone que
seas honesto al hacerlo así como este edificio en tierra tiempo
en una enorme zona de navegación. Pero cualquier otro sistema
requeriría mucho tiempo y trabajo para
completarse y splus plus Pero para ser justos, se puede lograr un poco de optimización a través de planos
y Para nosotros, lo que vamos a hacer, voy a dejar la
navegación en realidad es que vamos a volver a ir a la configuración
del proyecto. Vamos a
buscar invocadores. Bien. Así que vamos a utilizar esta configuración generar navegación solo alrededor del invocador de navegación ¿Y qué es la
navegación en Oker? Entonces básicamente, son
son una herramienta,
una herramienta que se utiliza
para
generar y gestionar dinámicamente medidas de
navegación, los meas básicamente en entornos de un mundo grande
o abierto Demostremos esto. Vamos a
agregarlo a nuestro personaje. Vamos a nuestro personaje de arriba
hacia abajo. Agregar Voker, navegación en Vocer Vamos a optimizarlo un poco
porque 3,000 radio es grande, así que voy a hacer un radio de eliminación
200 400 Quieres que el radio de remoción
sea un poco
más grande que la generación, por lo que crea como un
rastro para que lo elimine. Así que vamos a presionar play ahora. Expulsión de L et. Y
ya se puede ver, el lío de navegación, lo que se está calculando
sólo en torno a nuestro personaje. Entonces, vamos a hacer lo
mismo con nuestras IA. ¿Cuál es este error por
en rastro por jugador, Porque la IA existe
antes que el jugador. Esto es un problema. Realmente no importa.
Es un error nulo. No pudiste encontrar al
jugador ni por un segundo. Vamos a repetir. En realidad, volvamos a nuestra IA.
Agreguemos el invocador L et's establece su
radio de teja 2200400. Veamos en realidad la IA. ¿Cómo puedo? No, nosotros no. Pero sí tenemos una llave. Pasemos a lo anterior. Oscuridad otra vez. Mis algunas sombras. Tenemos que cambiar el
vino al elevador. Mejor. ¿
No hay IA aquí también? Hay IA. Bien. Ahora, podemos
IA si está haciendo algo. Por el momento,
parece que se está quedando. Oh, a deba fácilmente,
vayamos al árbol. S. y no puedo encontrar, lo sé. No le hemos dicho a nuestros pons, que están siendo controlados
por esto básicamente Porque si no ponemos
a nuestro pon que ellos IA, no lo sabrán.
Piensa que tiene sentido. Entonces en el detailb, en el valor por defecto b básicamente, va a
buscar controlador de IA En lugar del controlador de IA
genérico A, vamos a usar nuestro uno, AIC N one, y ahora
están siendo controlados. Empecemos de nuevo, y aquí sí
tenemos una IA. Pero otra vez, no hace nada. Esta vez por una razón
diferente. No puedo encontrar mucho de nuevo. B. ¿Pero yo sí? Oh, este es el personaje. Mi error.
Volvamos a la IA. Aquí es donde tiene que estar. Entonces la IA necesita
que la IA la
controle, no el personaje. Así que vamos a jugar. Ja.
Juguemos de nuevo. Tienes IA. Genial.
Y no hace nada. Y aún así encontrar mucho. Bueno, sí tiene sentido. Lo siento. Sigo
olvidando lo básico. Al igual que la autoposesión A por encima
del controlador enemigo IA, eso es un lugar en el mundo donde
no estamos colocando la Estaríamos colocando si
estuviéramos depurando en
un mapa diferente, pero ahora mismo nos han colocado o generado porque
estamos generando esta IA Nosotros, compilamos y guardamos, Tercera vez, cuarta vez, tiempo de
enfermedad es el encanto. Y veamos que no se
mueve se está moviendo. Genial. Moviéndose, pero la
animación no se está actualizando. Impresionante. Bueno, arreglemos
esto en la siguiente. Voy a llamar a verte entonces. Adiós.
124. Comportamiento de acabado de disparo y depuración: Hola, y bienvenidos de nuevo
al Taller de Diseño de Juegos, Rail Engine five
Procesal Dungeon action en el curso de creación de Pred Anteriormente,
terminamos con nuestra IA, y agregamos también nuestro volumen de respuesta de
navegación, y agregamos también nuestros revocadores de
navegación También terminamos
con nuestras tareas de BTT. Creo que se les
explicó suficientemente bien. Ahora, teníamos algunos errores que corregir. En primer lugar, vayamos
a nuestra IA de aquí, donde todo este plano de
animación de IA Donde está
recibiendo toda esta información del dueño de pw, intente obtener Peón Pero esta vez, nuestro por
dueño no es un jugador. Entonces esto podría estar fallando. Pero lo que vamos a hacer
es en el plano comenzar a jugar. Vamos a tratar
de conseguir dueño de Pw. Y vamos a
pedirle a AI AI e one, que haga puro reparto y promocione a
estos dos personajes. En realidad, voy
a como lo llaman AI personaje
personaje fue tomado. Y vamos a cambiar eso. Ahora bien, a. la razón por la que estamos haciendo esto es porque queremos cambiar aquí, que rompemos la
forma en que lo tenemos para conectar aquí, esto va aquí. En lugar de ponerse Acceler actual ¿qué es esta búsqueda por aquí Para eliminar esto por aquí, y conectar el personaje
con nuestro movimiento de personaje. Y lo que vamos a
conseguir es la velocidad. Que va a ser al final, y vamos a
conectar esto aquí. La razón es porque la
aceleración no
funcionaba realmente con la forma en que se mueve
nuestra carta. Entonces, vamos a compilar, s, vamos a jugar, y ahora se
supone que nuestra IA se mueve. No hacer nada.
No, no, se mueve. Genial, y está construyendo
más navegación, como puedes ver a su alrededor,
se puede mover a cualquier otro lugar. Ahora, intentemos atacarlo. Nos ve, nos mira. Y no hizo nada,
lo que nos dio la vuelta. Haz este error y
mira qué está pasando. Abre el juego. Esta ficha. Voy a expulsar de aquí, voy a
seleccionarlo, seleccionar la IA Porque la forma de encontrarlo aquí, aquí, hay que
tenerlo seleccionado. Debería decir seleccionado,
bueno no. Bien. Tratemos de
igualar qué IA es cuál porque aquí hay
dos, o se mueve. Pesos. Ambos están esperando. Creo que éste es éste. Este completamente retrocedido, porque éste sigue moviéndose. Entonces hay que decir cero. Sí, que en realidad no está haciendo nada.
¿Por qué no hace nada? la vuelta.
Lo dispararía por error, y es una comprobación constante O AI de los seleccionados el estado o tenemos? A es un Déjame intentar depurarlo. Bien. Después de un
poco de depuración, me doy cuenta de que he
creado este mango por aquí, pero nunca lo usé No, básicamente, lo que
tenemos que hacer es cuando empezamos a superponernos aquí. Y cuando pegamos con el jugador, estamos en rango, deberíamos comenzar nuestro tiempo. Despausamos el
tiempo de unpause por mango, cuando el rango en el rango, comenzamos a buscar a nuestro jugador Y claro, al morir al morir
, aquí está, justo después de la muerte,
volvamos a conseguir el asa y despejarla
e invalidarla Ya no se ejecuta, ni
siquiera en pausa. Oh, el siguiente lugar
sería ir a nuestro PT tarea pisada
hacia objetivo. Otra vez, aquí cometí un error. No agregué la ubicación de los
jugadores de punts. Eso es lo básico como esta
gama en comparación con dónde. Sólo voy a añadir. Agregar y esto x esto. Sé cuando tienes un punto, necesitas decirle
en qué parte del mundo. Hemos estado sobre esto. Por supuesto, el siguiente
lugar sería nuestro también hicimos algo. Bala BP AI. Estoy preguntando si el
componente tiene remolcador E, que es si el actor ha
cavado porque
lo tenemos en el actor y no en el tubo de colisión,
la cápsula de colisión Creo que me doy cuenta del problema donde no podíamos disparar, además, vamos a nuestro personaje BP de arriba
hacia abajo, y cuando nos estamos dañando
y nos estamos quedando atónitos, y luego seguimos vivos Ellos son. Encendemos
el estado. Y si ya estamos atónitos, entonces vamos si estamos presionando tamizar Si no estamos
presionando turno, volvemos al estado para
cambiar de estado a la normalidad Si estamos pasando turno, sin embargo, vamos a retrasar y
pararnos no enfriarnos, lo que no volvemos a AM. Para lograrlo,
iremos a nuestro am mecánico, crearemos un evento personalizado, am Así que cuando
presionemos
el tamizar izquierdo, no necesitamos hacer esto
porque ya está abajo, y vamos a
conectar esto aquí porque no queremos
pasar por esta prueba Entonces para la animación
de muerte de nuestro enemigo
que estaba de pie, necesitamos ir a buscar nuestras páginas de montaje animación de
animación de
montaje, y necesitamos Hay En realidad lo basamos aquí. Esta animación necesita
donde tenga esta opción, habilite auto blend out. No queremos esto. Si
queremos que se quede ahí. Lo mismo hacemos para algunos otros como lo es la animación
knockb Así que vayamos a nuestra animación
knock back y seleccionemos el auto
blend out para que sea falso. Y a la muerte
de nuestro personaje. Entonces vamos a renacido. Encuentra la muerte. Como la muerte aquí, la muerte no se mezcla, y a nuestro fuego primario. No queremos que se difumine. Y ahora podemos ir a jugar a prueba. Bien. ¿Me lo dijo? P la torre. L la torre. Sintonízame. Entonces T poco necesita seguir la
rotación. Una cosa más. Nuevamente, en el proyectil
de la bala, vamos al movimiento del proyectil,
vamos a seguir la rotación
sigue Yo como poner un poquito de sonido. Mira lo que está pasando ahí. Hacer ejercicio. Por favor. Es en las porciones. Pecho grande. Ya
tengo la llave. I. Siguiente nivel. Veo en la Mara 50 gramos. Tenemos un montón de
anuncios abiertos y cerrando. 60 PS, ¿verdad? Creo que esto es causado por la IA y el volumen
de navegación. En tiempo de ejecución,
sería un poco mejor,
tal vez mucho mejor. Enemigos pisando trampas, otra IA. Y molesto que
lo que está pasando aquí? Estoy tratando de mudarme aquí. Golpear de pie correctamente. Pero estoy calentando
y está tratando de moverme donde estoy calentando. Si hago clic,
sigo caminando. Pero me estoy muriendo, estoy
consiguiendo una puntuación, ¿verdad? Tenemos un problema en
movimiento y calefacción. Pero creo que vamos
a necesitar otro terreno. Entonces vamos a dejar
eso para entonces. Adiós. Nos vemos entonces.
125. Corrección de errores finales y pulido de juego: Hola, y bienvenidos de nuevo
al Taller de Diseño de Juegos, y motor real cinco
Procesal Dungeon acción RPG curso de creación Entonces, finalmente, en nuestra última
lección de depuración. En primer lugar, arreglemos el laberinto interminable en realidad no interminable, sino corriendo del motor Entonces lo que pasa es que cuando estamos posponing
el primer azulejo, estoy haciendo la pregunta equivocada, la dirección fuera
del sitio, y el no ser igual
a la Pero porque estamos compensando el laberinto
en función de la dirección de desplazamiento Nuestra dirección de desplazamiento se convierte
básicamente en lo contrario. Nuestra última salida no debería ser la opuesta a nuestra dirección de
desplazamiento porque digamos que ejemplo, nos movemos hacia el norte, entonces
O dirección de desplazamiento es norte, pero sur se convierte en la t
que no debería ser igual. El sur se convierte en la baldosa de la
que venimos, el elevador. Entonces como Sur se convierte en
la baldosa del elevador, entonces la última salida no
debería ser el elevador. Sea cuando esto sucede, entonces crea un
laberinto de tamaño uno y descompone completamente el sistema y hace que
el motor se estrelle. Entonces lo que haremos es
hacer switch select. Y vamos a la última salida
aquí para que podamos conseguir esto. Y luego voy
a desconectarlo. Desde el Norte, necesitamos el Sur, F este, necesitamos el
Oeste del Sur, necesitamos el Norte y del Oeste, necesitamos Oriente para el sentido opuesto al
ofosit La última salida no debería
ser igual a lo contrario. Pero cuando estamos
exting el estilo, no
debería ser el elevador Entonces esto era lo que estaba provocando que
el motor se estrellara. Tenía una de cada cuatro oportunidades, es un bicho bastante malo. Pero de todos modos, simplemente lógica, fue solo porque estamos compensando hacia
esa dirección. Lejos. Ahora bien, el siguiente error que
está ocurriendo es que a veces genera un
laberinto que el siguiente laberinto, el continuar, no se puede
dejar la primera cuadra Y eso es porque estamos
fijando la última salida, pero no estamos fijando
las direcciones. No estoy fijando las indicaciones. Entonces básicamente, en la primera salida, estamos fijando la
dirección para que sea verdad. Pero no estamos haciendo esto
tuve la depuración aquí.
Comentario de depuración. No estamos haciendo esto aquí. Voy a poner esto aquí. Voy a mover esto
un poco más allá. Pero ahora tenemos que
informar al estilo que tu dirección está abierta
hacia la última salida, y vamos a conseguir
la última salida, aquí. Entonces eso estaba causando este error. Ahora, nos quedamos con algunos temas de movimiento tiroteos
y problemas de movimiento. Entonces vayamos primero al controlador
del reproductor. Por error que he cometido. Bueno, hay mucho
que no he detectado, pero en un tamaño de proyecto, por
supuesto, obtener
ubicación bajo Kursor Entonces en nuestra función, obtener ubicación bajo Kursor, estoy comprobando la visibilidad
para obtenerla debajo de la ubicación de Kursor Entonces cuando no está
golpeando nada y cuando no está tomando en cuenta
los colisionadores de esfera, esto devuelve valores equivocados
basados en otras colisiones
que existen en nuestro mapa Entonces voy a convertir
esto a cámara, y esto arreglará eso. Y luego vienen los temas de
tiroteo. Entonces, cuando estamos filmando, debemos cambiar, de pinchar. Entonces, cuando estamos filmando, cuando estamos en mejorar la detección de
entrada haga clic, y se activa. Y estamos rondando
sobre un objetivo, estamos en un
estado normal, y estamos flotando sobre un objetivo,
y estamos disparando Deberíamos estar parando el movimiento. Porque si no estamos
deteniendo el movimiento, entonces esto se enciende antes y como está en
ti, sigue moviéndose. Entonces deberíamos estar
parando el movimiento. Y otra cosa que fastidia es por aquí cuando estamos
haciendo el punto de mira Entonces, En la cruz, estamos comprobando cuándo ahora mismo, este es el cambio
que hay que hacer. Entonces lo que estamos haciendo es verificar si estamos bajo enemigo, nuestro Hursor está bajo un enemigo, y luego cambia Pero si estamos aguantando
si estamos en am estado, no
estamos cambiando el objetivo. Sólo lo estamos poniendo en
cruz, blanco rojo. Ese no debería ser el
caso para ser honestos porque en la posibilidad de
que nos miren, una de las cosas que pueden pasar es que cuando conseguimos stan, AM cambia temporalmente a stan Entonces esto sería bg entonces
lo que voy a hacer es eliminar esto e
ir a la primera pregunta y simplemente obtener la referencia del
jugador, estoy abajo y hacer una. Entonces si estamos pegando
enemigo o am está abajo, entonces estamos teniendo maldición cruzada. Si no lo estamos, entonces
estamos teniendo el cursor normal. Entonces, este debería ser el cambio, y este debería ser un punto de control
central, es mejor que
tenerlo como opción aquí, como la primera pregunta es
la que cambia las cosas. Así que avancemos a
nuestro personaje de arriba hacia abajo. Y cuando estamos apuntando, también
debemos
detener el movimiento. En el turno a la izquierda, apunte ,
etcétera, etcétera, etcétera. Por aquí, antes de
tocar nuestro montaje, detengamos el movimiento en realidad, incluso antes de Estas dos cosas Vamos a conseguir nuestra referencia de controlador de
jugador, voy a dejar de moverme. Ahora, hay un
movimiento de parada para la navegación, que no es el nuestro, si
acaso te pierdes click y
usa esto en lugar de esto. Es dejar de moverse,
no detener el movimiento. Deja de moverte. Si
llamo al otro. Detener el movimiento. Verás, es una función
diferente. objetivo es
controlador cuando este es el
objetivo es BP controlador de arriba
hacia abajo. La lógica detrás de esto es para la IA, y para ser honestos, generalmente, creamos nuestro
personaje para que sea una IA, eso solo cambia de estado, pero eso es un
poco más avanzado. Ahora bien, lo siguiente que debemos hacer y bichos fuera del
juego está por aquí, cuando estamos reiniciando ataque, cuando estamos reiniciando ataque,
estamos bajando el arma Entonces cuando estamos bajando el arma, pase lo que pase, significa que cambiará de
estado a la normalidad, aunque estemos bajando
el arma porque nos
interrumpieron o porque
disparamos y necesita
reiniciar el ataque. Entonces aquí necesita una pregunta
¿Baje mi arma o no? Y este es nuestro objetivo hacia abajo. Si estamos apuntando hacia abajo y
es verdad, no baje el arma. Si no es cierto,
entonces baje el arma. Se trata de hablar de
esta rama de aquí, sí la usamos en otro lugar, que es nuestro daño. Entonces, cuando estamos recibiendo daños, estamos volteando para aturdir, y existe la posibilidad de que no
volvamos para aturdir Siguiendo esto, si no
estamos muertos. Si estamos muertos, solo
hacemos las cosas de la muerte. Pero si no estamos muertos, estamos tocando el montaje de calor y con base en el
estado del jugador estamos cambiando Si nos estamos quedando atónitos
y vamos y el objetivo está abajo, solo
estamos configurando el retraso y la estadística en enfriarse y
no cambiar nada Esto significa que nos estamos
quedando en el aturdimiento estatal. No queremos esto.
Lo que queremos hacer es estar en la puntería estatal. Si no estamos invirtiendo estado, entonces nos quedamos stan, y es por eso que no podemos movernos en algunos puntos
luchando contra la IA. Solo nos quedamos Stan mientras presionamos turno, y
no pasa nada. Simplemente nos quedamos Stan para siempre
hasta que realmente cambiemos, y esto corre hacia
la otra rama. Entonces, básicamente, esto estaba bloqueando nuestros estados siempre y cuando
estuviéramos presionando turno, y esto ojalá lo arregle.
126. Parches de errores importantes en el juego: Hola, y bienvenidos de nuevo
al Taller de Diseño de Juegos, L motor cinco procedimientos Dungeon acción ApS
creación cours Ahora, lo siguiente es que nuestro elevador tiene un
problema con nuestra cámara. Tienen otros problemas, pero
el más claro es
una cámara porque copiamos el proceso de post
pegado, pero sí lo
configuró en uno y uno, pero no lo habilitó Por lo que deberíamos permitir que la exposición en 11 en Min Max sea 11, y eso arregle la iluminación
que se vuelve demasiado intensa. Ahora, lo último que debemos
hacer es agregar nuestra niebla. Vamos a ir a sumar
cosas, niebla ocho exponencial. Esto es lo que queremos.
Vamos a leer. Si empezamos aquí, queremos que la niebla sea un
poco más baja. Juguemos por un segundo. Ahora, no he puesto las cosas. Vamos a establecer los
detalles de la gente. Vamos a establecerlo en -700. Voy a aumentar esto, ser más visible porque
esto es muy molesto. Déjame cerrarlo para esto.
Bien. Aquí no hay más cosas. Entonces, ubicación, -700,
pongamos fk densidad dos. Sé que el valor va
en 2.5, pero veamos. Le pegué a Alo, digamos 22. Y y eso sería todo. Vamos a establecer también. Me
acostaré con algo rojizo Entonces tenemos un
color rojizo a la niebla. Y creo que eso sería todo. Sí. Yo, por favor, juego ahora. Es un poco der y es un poquito y esto va sd. Ah, y déjame alternar las flechas otra vez porque
podemos ver las flechas. Lo dejé de
depurar en realidad. Ve a las flechas de alternar
donde estas Toggle flechas. Yo depuro, aquí estamos. ¿Bien? Está conectado esto
porque quería
ver qué está pasando
mientras estaba depurando Es un poco
más oscuro de lo que esperaba, pero esto hará que las luces también sean un poco más amigables. Pero para ver
un poco mejor al personaje, vayamos al personaje
en la viewport, porque el personaje no
debería ser tan oscuro Pongamos una luz puntual aquí. Llamemos a esta
luz de personaje el radio radio del
carácter. Y cambiemos esto
a lumen en realidad. 100 es mucho,
digamos 50 el radio 50. Podríamos tener
artículos, por ejemplo, que incrementen este blo hace Como radio 70, tal vez 100 no hace sombras
de nuestro personaje, 100 tal vez fuera de fuente 50 o longitud 70 un poco demasiado lejos de
los personajes de 100. Si tienes tu
punto de vista equivocado, podrías perderte un poco los
valores. E. El zapato
creará algunas sombras.
Está bien. Está bien. No. Es un
poco raro, aún así. Quiero decir, realmente enfocado
en el centro. Cambiemos el color att
bit a algo más carnoso. Aquí. Ocho. A lo mejor
ponemos un poco encendido hacia arriba. Usa este 70. ¿Sabes qué?, No iluminemos al personaje con esto sino iluminemos el piso
alrededor del personaje. Lo que vamos a hacer es ir
al canal de la luz. Que encienda el Canal
dos, no nuestro personaje. Y rápido,
vayamos a nuestros azulejos. P azulejo e ir a nuestro piso. El canal también estará
iluminado por el canal uno, básicamente no por dos,
porque está basado en cero, el canal uno. Veamos cómo se ve esto. Sí, tenemos un radio de luz, y podemos aumentar un
poco el relámpago de nuestro mapa. Vamos a los detalles 1-4. Yo nos fos ale poco mucho, pero todo es
mucho más visible. Y cuando vayamos a las próximas sombras, podremos ver nuestra luz. Todo bien. Ahora, No, se honesto es demasiado ligero. Pongamos este 23.
Luz en tres. Yo a ser un poco demasiado ih. T dos que parece hacer el truco.
Mucho mucho mejor. Ahora bien, si voy y me mudo a
otro piso el elevador. Aquí al otro lado, sí
tenemos la llave Pops. El personaje se cayó,
pero en realidad no importa. Sólo voy a
elevar o ubicación. P abajo carácter, aquí
estamos y pega. También activamos el
elevador. Voy abajo, se vuelve un
poco más brillante porque la niebla realmente no sigue. Pero lo que hacemos. Volvamos al elevador y
comencemos el juego del elevador, donde esta esto Siempre bien con. Ahí estamos. Ps. Aquí estamos. Vamos a conseguir todas las puertas
traseras de clase. Vamos a conseguir la niebla niebla, vamos a conseguir
la primera copia
que encontremos porque solo
tenemos una, vamos a promoverla a una
variable llamada esta variable fog. En nuestro tickvn, cuando estamos
fijando la ubicación del actor. Vamos a establecer la ubicación de las nieblas
ubicación del actor. Vamos a
necesitar más espacio. Vamos a inter
con constante, vamos a mantener
la misma velocidad. Vamos a conseguir la ubicación del
actor. Ese padre Delta T, vamos a usar Delta. Desde el objetivo, estamos
en realidad vamos a
usar esto exactamente esto”. va a necesitar un nuevo
original y un nuevo objetivo. Entonces voy a promover
esta supervivencia a original. El último en conseguir. Vamos a poner esto cuando las
vallas estén subiendo. Para estar seguro ahora. Creo que esta animación de inicio, estas son las vallas subiendo. Entonces vamos a conseguir nuestra niebla, voy a conseguir una ubicación. Voy a establecer la ubicación original de la
niebla a esto. Y agreguemos a esto
lo que es la altura del laberinto. Agregamos 2900. No. 2500. Ese es el
ascensor, ¿no? Sí, ese es el
lugar del ascensor, debería ir, y el laberinto está subiendo
cuando respondemos al laberinto. Esto podría ser una
variable a 2500. Esa es la ubicación de la niebla, 22500. Voy a copiar este
plus por aquí hasta aquí. Esto, voy a establecer la ubicación
objetivo a esto. Me conecto este año,
conecto este año. Y esto era jugada para ser jugada. Todo bien. Y la niebla viene con nosotros. No se ve realmente como una niebla, pero sí le da esta
coloración y sombra O ahí había unas enormes patas de
marco. Ocurrió. ¿Ves? Esto viene el problema con s. No
arreglamos esto.
Arreglemos esto por un segundo. Ailes. De veras no
me gusta verlo. ¿Dónde está aquí? Voy a conseguir este piso
solo muévelo un poco. En palabras, no aparece de
ningún otro lado. Está arreglado. Lo que hace nuestra niebla, básicamente,
no es visible aquí, pero es visible hacia aquí, así que no podemos ver el
final de estas baldosas. Y lo mismo
será si vamos
al siguiente piso, vamos al siguiente piso. Ver lo mismo va a
pasar en la próxima. En primer lugar, se
desvanece un poco esto. Ahora podemos ver el
borde del corte, pero vamos aquí. Mira que no hay corte de borde. Aquí hay un problema, podemos mover las cosas, y supongo que hay otros
problemas que se pueden arreglar ¿Este cofre? No estoy en el rango.
En fin, como puedes ver, hay de bichos.
Listo para estar en el rango. Creo que hemos dado las
herramientas para corregir todos estos errores. Ahora. Otra cosa aumenté
un poco mi FPS, como pueden ver, la
forma en que hice esto es, reduje el volumen del laberinto, el
volumen de navegación a 1,000 ahora. Esto no solo no es óptimo, sino que crea
muchos problemas, una enorme malla de navegación. No usaría un
lío de navegación por esta cantidad de IA. A lo mejor habría escrito
algún movimiento personalizado para que ellos se muevan y los
bloqueen en eje, y no moviéndose sobre el eje Z o incluso si
se mueven sobre el eje Z, solo un simple movimiento a
sin navegación, como algunas trazas de líneas,
puedes ir ahí, luego ir allí, algo así
, un sistema como ese. Ahora bien, otra forma en que
podríamos hacer esto, no
he probado realmente, pero podríamos haber
creado un nivel,
un nivel de streaming
que estamos cargando, que tiene un volumen de navegación, y cambiamos el montón
de técnicas para hacer,
básicamente, tal vez escribir un
volumen de navegación personalizado en spl plus, tal vez una clase personalizada para ello, como usarlo en una clase diferente que puedes mover porque planos no dan la
opción de mover este volumen También podrías
volúmenes de nación de esta manera porque si vamos a spone un
volumen de navegación, vayamos aquí Acto telefónico plus, Hay una reversión Nav me, hay otras cosas, pero no podemos generar
un volumen de navegación Entonces esto está bien escribiendo en
Seps más alguna clase que
puedes engendrar con un
volumen de navegación, tal vez o de nuevo, hay diferentes formas de
hacer las cosas básicamente, pero la parte interminable, tener algo sin fin no es realmente posible con
las herramientas que tenemos Como que hicimos trampa y creamos
este volumen de navegación, y eso fue básicamente Gracias por acompañarnos en esta aventura de
Blueprint real engine five donde construimos un generador completo de
ungine para un juego de arriba hacia abajo, con enemigos,
recoger objetos y Esperamos que disfrutes del curso y aprendas mucho en el camino. Tus comentarios significan
el mundo para nosotros. Entonces, si pudieras dejar una reseña
y compartir tus pensamientos, realmente nos
ayudaría a mejorar y seguir entregando el
mejor contenido posible. Gracias de nuevo por tu apoyo, y estamos ansiosos por
ver qué creas.