Transcripciones
1. INTRODUCCIÓN: Comenzar a desbrotar el
motor es súper emocionante. Puedes dar forma a un paisaje, arrastrar varios modelos
al nivel, poner algunas cosas más ahí, aún más, incluso
más modelos de tratados hasta que termines con
algo que creaste. Pero es estático.
No hace nada. Lo único que
hace es verse bonita. Y así que muy pronto te
das cuenta de que los planos, la base de la funcionalidad
dinámica es la clave para que tus
juegos sean jugables e introduzcas mecánicas de juego para hacer renders de
películas tengan eventos
dinámicos que los den vida, o en mi caso, incluso hacer una simulación de
shooter totalmente dinámica que será utilizada
para una obra de teatro Hola. Yo soy Jordi. Soy un creativo
digital y uso UNRLEngine para
todo tipo de proyectos, que van desde videojuegos hasta renders de películas
y mucho más UNLEngine tiene cientos de aplicaciones
diferentes, pero independientemente de para qué
uses el motor, eventualmente, quieres
aprender a crear Bueno, eso es exactamente en lo voy a ayudarte
en esta clase. Mi objetivo es enseñarte la lógica detrás del
blueprint para que entiendas lo que
estás haciendo y no solo
recrear sin cerebro lo que Por eso
iremos paso a paso, crearemos pequeñas cosas divertidas y exploraremos realmente algunas de las notas clave de lo que
hacen y cómo funcionan. Y también vamos a
cometer errores y quedarnos
atascados en las cosas porque
eso es parte del viaje. Pero juntos,
resolveremos esos errores, y te mostraré algunas técnicas realmente
buenas como puedes resolver
problemas para eventualmente
hacer que tu plano funcione Al final de esta
clase, tendrás una sólida comprensión de
cómo funcionan los planos y
Unreal Engine Podrás
convertir tus ideas en un plano de trabajo y
eventualmente hacer el juego de tus sueños Ese cortometraje demente o
cualquier otro proyecto irreal, tenías en mente una Esta clase es para todos los
que comenzaron a explorar UnRel Engine y ahora está atascado en Blueprints. ¿
Eso suena como tú? Bueno, entonces estoy súper emocionada ayudarte y espero
verte en mi clase. Abordemos juntos la
programación de Unreal Engines y aprendamos a comprender los
conceptos básicos fundamentales de los planos
2. La interfaz del blueprint: Oigan, chicos, bienvenidos,
y estoy súper emocionada de que hayan
comenzado esta clase. Vamos a
sumergirnos en el mundo de planos para el motor Unreal, que para algunos va a ser
un monstruo aterrador de abordar Pero una vez que entiendes la idea fundamental de
cómo funciona un plano, en realidad
es bastante
fácil y muy divertido Puedo pasar horas
averiguando sistemas interactivos, y es muy gratificante
si eso funciona Así que vamos a crear un plano. En el navegador de contenido, haz clic
derecho y
verás que
podemos crear una
clase de blueprint a partir de ahí Esto abrirá una
ventana que nos pide
seleccionar qué tipo de
plano queremos construir Y en la parte superior aquí se sientan
las más comunes, que vamos pero
ampliando todas las clases, podemos encontrar más de 1,000 más. Ahora bien, no se
sienta abrumado por esto. Hay clases de
planos muy específicas que
van a tener
más sentido una vez que entiendas la idea general
detrás de los planos Volveremos a esto cuando esto va
a tener más sentido. Entonces, por ahora, simplemente
colapsa esa ventana, y echemos un
vistazo a la clase común. La clase de actor es la
más utilizada. Como dice la descripción, te permite construir algo y
colocarlo en el mundo. Entonces comencemos con esa y exploremos algunas de
las otras más adelante en este curso. Y lo voy a nombrar BP
Underscore interactive Cube. BP significa blueprint, y es una manera de mantenerse
organizado en su proyecto Entonces ahora podemos seguir adelante y
arrastrar eso al nivel, y mostrará el widget
del plano tipo actor Está vacío, claro. Entonces,
ya sea desde el outliner, podemos hacer clic en Editar o simplemente hacer
doble clic en la clase de
blueprint en su navegador de contenido Mano, aquí está. La ventana que pasarás la
mayor parte del tiempo. Entonces, vamos a explorar lo que
vemos y para qué se utiliza. En el lado izquierdo,
tenemos los componentes. Y aquí, podemos agregar componentes con los que queremos hacer
algo. Por lo que puedo hacer clic en y elegir entre una
larga lista de artículos. Y comencemos
con un simple cubo. Este es el mismo
cubo que
agregarías directamente a tu
nivel, por cierto. Tiene su propio puerto de visión, y puedes moverlo, escalar, rotar, tal como lo
harías en tu nivel. E interesante es que también
podemos ver ese cubo de nuevo en el nivel ahora ya que lo hemos
agregado al plano Lo que es muy importante
entender es que si movemos el
cubo en el nivel, realidad
estamos moviendo todo
el plano En el panel detallado de s, podemos ver el cubo
que hemos agregado. Esto refleja la
ventana de componentes dentro del blueprint. Y podríamos seleccionar un cubo de ahí para
mover específicamente a ese actor, pero esa no es una buena
práctica porque ya no refleja
la posición del refleja
la posición del cubo en el
plano. De hecho, cambiar de
nuevo la
posición en el plano ya no se actualiza en el nivel Entonces, restablecemos lo que
acabamos de hacer en el outliner. Ir a trabajar y construir todo dentro
del propio plano. Bien, hagamos
algo con este cubo. Vamos a crear nuestro primer plano
funcional. Y hay dos lugares en los
que podemos comenzar a escribir, ya sea en el
script de construcción o en el gráfico de eventos El guión de construcción es todo lo que
sucede en el editor. Por ejemplo, vamos a arrastrar el cubo a la ventana
de construcción. Aquí mismo ahora es una
referencia al cubo, y a partir de ahí, podemos hacer clic y arrastrar para
conectarlo a un nodo. Unreal me mostrará una lista de todos los nodos a los que puedo
conectar el cubo, mostrando
esencialmente todas
las características del cubo Como todas las
opciones de transformación están ahí. Podríamos escalar la posición o
rotar el cubo desde aquí. Ahora, obviamente, queremos establecer la posición o la
escala o lo que sea. Elegir obtener retornos
a la posición actual, lo cual es útil
para otras cosas. Por ahora vamos a elegir
establecer posición. Incluso puedes buscar eso. Verás relativo y mundo. El relativo es la posición dentro del plano,
que está en cero La posición mundial es la
posición y el nivel en sí. Así que escojamos un
pariente por ahora, y se puede ver que este nodo nos
permite ingresar a
una nueva posición. Por ejemplo, 100 unidades
más altas en el eje Z. Y lo último que
tenemos que hacer es conectar el nodo build
al nodo de ubicación. Si quieres ver
los cambios en el nivel, tenemos que hacer clic en el
botón compilar en el blueprint Así que con casi cada
cambio en tu nodo, siempre haz clic en eso
para ver el resultado. Y eso desvía la posición. Oye, tu primer plano te
dijo que era fácil. Ahora, echemos un mejor
vistazo al nodo. Cada nodo tiene entradas a la izquierda y salidas
a la derecha. Y para activar un nodo, siempre
necesita una conexión de
ejecución entrante, y eso comienza con el script de
construcción. Las otras opciones como target, nueva ubicación y
demás, son valores A veces necesitas tener
algo conectado a él. Otras veces no lo haces. Por ejemplo, puedo
desconectar el cubo
del objetivo haciendo
clic Alt en el valor. Compilación del plano
ahora
me va a arrojar un error en las
notas porque está
tratando de ejecutar el comando para
cambiar la ubicación,
pero ¿de qué No se le dice para qué objetivo necesita cambiar
la ubicación, y eso me arroja un error. En la parte inferior y los resultados del
compilador, podemos leer más sobre el
motivo del error en sí Entonces eso es genial para averiguar dónde y exactamente
cuál es el error. Muy fácil de usar
en mi opinión. Volvamos a conectar el cubo y compilar para resolver el error. Algunos valores en la entrada se pueden rellenar directamente
como la ubicación, por lo que no necesita una entrada, pero podemos si
queremos. Hagámoslo. Voy a agregar un nuevo
componente esta vez una esfera. Y desde la ventana gráfica, voy a arrastrar a
alguna posición diferente Vuelva ahora al guión de
construcción. Lo que quiero hacer es llevar el cubo a la misma
posición de la esfera. Entonces lo primero que
tengo que hacer es obtener el valor de la ubicación de la esfera y luego
ingresarlo en la nueva
ubicación del cubo. Así que arrastra la esfera
al editor de nodos y conéctela a un nodo get
relative location. Interesante ahora es que
el color del nodo se asemeja al color
del pin de ubicación de entrada. Eso también es un indicio de
que nos conectamos a él. Haga clic en Compilar y
boom. Está funcionando. Y eso me lleva a
la diferencia entre el guión de construcción
y el gráfico de eventos. Verás, todo lo que creamos en el
script de construcción es estático. Cualquier funcionalidad que
necesitemos antes de ejecutar el juego o entrar en simulación se
puede crear aquí. Un gran ejemplo son las plantillas. Y tengo un ejemplo, un montón de activos que he creado. Estos también son actores de planos. Puedo arrastrar uno a mi nivel. Y cuando entro en
el plano en sí, se puede ver que también tiene algunos actores en la ventana de
componentes Tenemos la propia
luminaria. Luces y algunas otras mallas
que conforman la luz. Y cuando entre en el script de
construcción, verás un
montón de nodos aquí. Ahora, déjame volver a
mi nivel y seleccionar un plano para ver
el detalle spanel Y todas estas opciones
que ves aquí son personalizadas creadas desde dentro
del script de construcción. Puedo cambiar el
color de la luz, la intensidad y más. Todo eso se hace
dentro de estas notas. Y te animo a que los
pases paso a paso. Puedes leer fácilmente lo que está pasando, y lo
entenderás. Al igual que el primero, cambiamos
la intensidad de la luz, que es la intensidad establecida. Nosotros decimos qué objetivo, y luego elegimos
la intensidad. Y esto aquí viene de las opciones que tenemos
en el panel de detalles. Como dije antes, aquí
solo podemos crear
cosas estáticas, como cambiar una opción. En el momento en que queremos
algo dinámico, tenemos que crear esas
notas en el gráfico de eventos. Y se puede ver que también
tengo un montón de notas ahí porque una de las
opciones que tengo del panel de detalles es
habilitar
el parpadeo, y se puede ver
que no hace
nada porque el parpadeo
es nada porque el parpadeo Sólo funciona cuando
jugamos el nivel. Así que haz clic en reproducir y verás ahora que la
luz está parpadeando Ahora antes de terminar esta lección, quiero mostrarles cómo se ve el gráfico de
eventos. Volvamos a abrir el
plano del Cubo y esta vez, haga clic en el gráfico de eventos en la parte superior Y en lugar de una nota de guión de
construcción que tenemos al inicio, obtenemos un montón de ters como event begin play y event tick. Y me gustaría
mostrarles cuáles son estos. El juego del evento se está ejecutando una vez que
ejecutamos el juego, y voy a
conectarlo a una nota impresa de texto. Esta es una nota muy simple
que utilizará mucho para resolver las cosas y
encontrar posibles problemas. También dice aquí, solo
desarrollo. Entonces no está realmente pensado
para dentro de un proyecto final. Voy a cambiar el
texto al inicio del juego. Y la única manera de verlo en acción ahora es correr el nivel. Y por cierto, esta vez no
compilé porque Unreal automáticamente hace
eso cuando corres el nivel Pero se puede ver ahora
que impulsó el texto. Haga clic en detener y
vuelva al plano. Quiero conectar el
texto al evento tick y desconectado
del evento comenzar a jugar. ¿Mira lo que pasa ahora? Con cada nuevo tick o marco, ese texto se está emitiendo Por lo que te permite actualizar
algo cada fotograma. Pero hay más eventos como el solapamiento del actor
que tenemos aquí. Podemos realizar algún
tipo de acción siempre que nos superpongamos o nos
topemos con este plano Por ejemplo, corremos con nuestro
personaje hacia el cubo, y luego el cubo tiene
que convertirse en una esfera. Suena como algo
divertido de hacer. Bueno, veamos cómo podemos
hacerlo en la siguiente lección. Por ahora, recuerda
que podemos agregar componentes que queremos
usar en un blueprint Desde la ventana gráfica, entonces
podemos ver esas cosas y también
cambiar sus propiedades Y luego tenemos dos lugares para crear
realmente una funcionalidad de
blueprint, que es el script de
construcción para cosas
estáticas como un menú de
opciones para una luz, y finalmente, el
gráfico de eventos para entidades dinámicas Y ese es también el lugar
en el
que estaremos trabajando la mayor parte del tiempo.
Gracias por mirar.
3. Eventos en Unreal Engine: Cuando estás diseñando
un blueprint, entendemos que
hay dos formas de hacerlo, ya sea estática,
que agrega funcionalidad a un blueprint que solo
se puede usar dentro del
propio editor o funcionalidad dinámica que se desencadena por un evento Entonces eso significa algo
que tiene que
suceder para poder poner en acción nuestra
secuencia de nodos. Y eso obviamente solo puede
funcionar cuando corremos el nivel. Así que
volvamos a abrir nuestro plano de cubo interactivo nuestro plano de cubo interactivo y naveguemos
hasta el gráfico de eventos Por defecto, vemos tres eventos
diferentes aquí. Pero no hay problema si,
por ejemplo, eliminaría la garrapata del evento. Siempre puedes
volver a encontrarlo haciendo clic derecho, luego vas a agregar un evento en que encontrarás todos
los eventos disponibles, incluyendo el tick del evento. Ahora, un evento específico
sólo puede ocurrir a partir de una nota. Si tuviera que agregar otra nota de
tick aquí, verá que
solo resalta la actual.
¿Eso es un problema? Bueno, vamos a crear algo
en el tick del evento. Me gustaría rotar mi cubo para que
siga dando vueltas. Y así es como
quieres acercarte a esto. Piensa en qué propiedad
necesitaríamos para la rotación. Bueno, eso va
a ser la rotación fijada. Entonces busquemos la ubicación relativa
establecida, y automáticamente
va a sugerir el cubo, que ya tenemos
en el plano Y así se
dirige automáticamente al cubo. Si no lo hizo o
eliminó ese destino, siempre
puede arrastrar
su malla
de cubo desde la
ventana de componentes al destino. Bien, entonces voy a conectar el evento tick a
los nodos de rotación. Entonces ahora, con cada fotograma, la rotación del
cubo se actualiza. Genial. Pero ¿a qué? Sólo puedo
ingresar manualmente una nueva rotación, pero eso no la
va a rotar. Así que llegamos a encontrar una manera tomar el valor de
rotación actual en uno a él e insertarlo de
nuevo en la nueva rotación. De esa manera, seguimos agregando
uno con cada tick, y el disparo gira. Así que vamos a crear una nueva nota esta vez eligiendo la rotación
relativa get. Pero espera, nos enteramos de
que no está ahí. Bueno, eso apesta. ¿Existe un enfoque diferente para obtener la
rotación actual, quizás? Bueno, si selecciono mi cubo, puedo ver que la propiedad
rotation es parte del grupo transform. Entonces tal vez podamos
encontrarla ahí dentro. Bien, haz clic con el botón derecho
y busca Obtener una transformación relativa.
Y sí, está ahí. El problema ahora es,
sin embargo, que esta nota devuelve todo en un solo valor. Esto se ajusta a
la rotación, la posición y la escala. En casos como este, simplemente
podemos hacer clic derecho en el valor y elegir el pin de estructura
dividida, que revela los valores t Esto es muy común cuando se
trabaja con planos. A veces quieres múltiples
valores en un pin, otras veces quieres
algo específico, y luego solo puedes
dividir los valores. De hecho, voy
a hacer clic derecho sobre el valor de rotación también y volver a
dividirlo porque
no necesito los tres ejes de
rotación. Solo necesito el eje Z. Y así es como conseguirlo. Ahora puedo hacer lo mismo en la
entrada para la rotación del conjunto. Entonces ahora puedo enchufar el eje
Z a la Z. Obviamente, esto no
va a hacer nada Tenemos que
agregarle uno con cada tick. Así que desconectemos el
pin Alt click y arrastremos el valor Z
a un lugar para agregar un nuevo nodo, y buscaremos add y encontraremos uno
debajo de operadores. Entonces tomamos el
valor actual y lo agregamos por uno. El resultado de eso
entra en la rotación del conjunto. Bien, sigamos adelante y
ejecutemos esto. Y mira eso. Tenemos un cubo giratorio.
¿No es increíble? Entonces, como puedes ver,
no es tan complicado. No tengo idea
de más
del 90% de todas estas notas diferentes. Si quiero lograr algo, trato de pensar lógicamente ¿Cuáles son los pasos necesarios para lograr lo
que quiero crear? Y solo uso la barra de búsqueda para buscar notas
que tengan sentido, probarlas y
ver si funcionan. Si no tratan de
buscar otro. Mi objetivo es enseñarte a pensar lógicamente
y planos para que puedas crear lo que
quieras sin tener que
seguir ciegamente Es muy importante que entiendas
lo que estás haciendo. Esto es pura programación, pero los blueprints lo hacen visualmente, lo
que es más fácil para los principiantes
meterse en la programación Bien, entonces, ¿qué otros
eventos tenemos? Si piensas en algo,
trata de buscarlo. Al igual que, quiero presionar la tecla, que necesita para activar
algo genial. Bueno, búscalo en la barra
de búsqueda. Bueno, ahí está. Incluso te da dos
posibles eventos cuando
presionas la tecla o
cuando la sueltas.
Bien, eso es genial Quiero presionar esa tecla y luego poner en marcha el cubo giratorio. Así que desconecta la garrapata del evento
y luego ponla en la clave. Ejecutemos eso y golpeemos la tecla. Pero, ¿qué es eso? No
está pasando nada. ¿Cómo es eso? Bueno, eso es por
algo que se llama posesión. Y en pocas palabras, no estoy
controlando el cubo. Se sienta en algún lugar del
nivel y vive por sí mismo. Algunos eventos como la
pulsación de teclas sólo pueden ocurrir cuando controlo el cubo o
en otras palabras, lo poseo Bueno, aprendamos sobre
eso en la siguiente lección.
4. Planos controlables: clases de peón y personaje: Cuando
existe un plano en tu nivel, vive por sí mismo No podemos controlarlo. Solo podemos ejecutar
eventos como el tick o al inicio cuando se
carga el nivel o cuando nos topamos con él. Pero eso significa que primero necesitamos
poseer un plano que podamos controlar para
chocar con la malla cuadrada Entonces, cada vez que nos encontramos con el problema que
necesitamos controlar o
poseer un plano, comencemos con el más fácil, y es posible que ya hayas
jugado con él En mi navegador de contenido, voy a hacer clic
en AD y luego elegir Agregar función
o Paquete de contenido. Y de inmediato,
podemos elegir entre un conjunto de diferentes plantillas de
planos Puedes escoger cualquiera, pero para
una mejor demostración, voy a elegir la plantilla de
tercera persona y luego decir Agregar al proyecto. Luego puede cerrar
esa ventana y encontrar una nueva carpeta en
su navegador de contenido. Y estamos específicamente
interesados en un artículo de la plantilla. Abre la
carpeta Planos, y ahí dentro,
encontrarás el personaje de BP en tercera
persona Y podemos arrastrar eso
a la escena. Voy a abrir el
plano y explorarlo un poco. Y si portas, puedes
ver diferentes componentes que se necesitan para
darnos un personaje jugable, como el propio personaje, pero también una cámara que sigue al personaje y crea la
vista que ve el jugador Hay un boom de cámara, asegurándose de que
la cámara siga al personaje mientras recorre. Pero entonces, ¿cómo corremos? Mientras, al mirar el guión de
construcción, está completamente vacío, ¿y
entendemos por qué ahora? Porque es completamente dinámico. Entonces, cuando abrimos
el gráfico de eventos, podrás encontrar todas las
notas que conforman el movimiento del personaje.
Bueno, eso es genial. Cerremos el plano
y golpeemos a correr. Pero espera. Todavía no estoy controlando
al personaje. Aún no lo he poseído
. ¿Qué está pasando? Bueno, sólo se puede poseer
un plano a la vez. Y por solo
tenerlos en tu nivel, el proyecto no sabe cuál
quieres controlar en realidad. Y la forma en que
definimos esto es a través de un plano de modo juego Es otro tipo de plano. Ahora, como las
plantillas de tercera persona venían
con una de esas, probablemente ya la
hayas visto. Voy a hacer doble clic sobre él. Ahora bien, en realidad no tenemos todas estas pestañas diferentes aquí, como el gráfico de eventos y demás, porque un
plano de modo de juego es muy sencillo Es un archivo que va a establecer los planos predeterminados
para su nivel Entonces, bajo las clases predeterminadas, encontrarás algo llamado
la clase de peón predeterminada Y ese es el plano
que se va
a cargar para poder
tomar el control Entonces voy a cerrar eso y buscar mi configuración mundial. Estos son los ajustes generales
para todo tu nivel, y aquí encontrarás una configuración de
modo de juego. Puedes elegirlo de un menú
desplegable o simplemente arrastrar el plano del modo de juego
a esa configuración Entonces el mundo dice: Mira este plano del modo de juego
cuando ejecutas el juego Y el modo de juego Oye, mira el plano del
personaje en tercera persona para que el jugador
tome el control Ahora bien, esto significa que para un plano sobre el que
tomamos el control, no
necesitamos a
los del nivel Entonces solo lo eliminaré y ejecutaré
el juego, y ahí vamos. El plano del personaje se carga y se genera
en el nivel Y si quieres que se
genere en un lugar específico, puedes agregar un
inicio de jugadores a tu nivel ¿No es eso algo genial? Entonces lo que ahora podemos hacer es
abrir el cubo de nuevo, y vamos a crear algo divertido donde nos topemos con el cubo. Voy a
hacer click derecho y
buscar algo así como evento Colt, tal vez, y realmente no puedo
encontrar algo así Así que vamos a desplazarnos hacia arriba hasta
los eventos y ver que si tenemos algo así
como un hit de evento. Hm, y la hay. Y
dice que este evento se desencadenará cuando este actor se
tope con otro actor. Eso es exactamente lo que necesitamos. Y bastante genial es que aquí tenemos un montón de opciones. Así que incluso dependiendo dónde lo golpeemos desde
la ubicación del hit, podríamos crear diferentes
tipos de funcionalidad. Pero mantengámoslo
simple por ahora. Voy a arrastrar mi cubo
al gráfico de eventos porque quiero
hacer algo con eso. ¿Y si cambiamos la
malla de un cubo a otra
cosa cuando nos encontramos ella? Eso sería increíble. Entonces busquemos malla
y veamos qué tenemos. Y veo que tenemos un
nodo llamado set static mesh. Bueno, eso probablemente
va a funcionar. Y puedo elegir una
malla diferente de este desplegable, algo que está en mi proyecto Puedo encontrar muchos que vienen de diferentes paquetes dentro
del propio motor, pero busquemos esfera y simplemente llevemos cualquier cosa.
Realmente no importa aquí. Y, por supuesto,
queremos ejecutar ese comando cuando
se golpea el blueprint. Entonces conecta eso. Bien, vamos a darle una oportunidad. Golpea play, y vamos a
correr hacia el cubo. Y boom, tenemos una esfera. Genial. Funciona. Pero volvamos al problema
inicial que tuvimos. Voy a eliminar el
hit del evento y crear un evento de teclado para la tecla y conectarlo
al nodo de malla estática. Entonces, para que esto funcione, necesito tomar el
control de este plano Bien, suena fácil, ¿verdad? Navegamos de regreso al plano del modo de
juego. Ábrelo y desde la clase de peón
predeterminada, voy a elegir
mi cubo interactivo, pero no lo encuentro Hmm. Bueno, recuerda cuando
creamos nuestro plano Voy a hacer eso de nuevo muy rápido. Elegimos una clase de actor. Pero como puedes ver, también hay una clase de peón o una clase de
personaje, que tiene propiedades similares Bueno, ¿eso significa que tenemos que
volver a hacer todo el
plano Bueno, no te preocupes. Volviendo a mi
cubo interactivo Blueprint, puedes encontrar un botón en la parte superior para ir a
la configuración de clase Y aquí, puedes encontrar
la clase de padres, que actualmente está puesta a actor, pero podemos cambiarla a
peón al buscarla Así que en todo momento, puedes cambiar el tipo de blueprint
que has creado Ahora, cuando volvamos
al modo de juego Blueprint y desde
el peón predeterminado, elige nuestro cubo interactivo vamos a ejecutar el juego
y veamos eso Somos un cubo. Obviamente, no podemos
correr con él porque no tenemos
controles de jugador para el cubo. Para eso, tenemos que crear primero
todos los gráficos de eventos, pero somos engendrados a la
escena a partir de ese plano, y eso significa que lo poseo Si presiono mi tecla, la malla cambia a una esfera. Realmente no lo puedo ver porque ahora
estoy dentro de la esfera. Entonces hagamos algo
muy rápido aquí. Abre el plano del cubo, ve a la ventana gráfica,
y voy a
agregar una cámara a los componentes Arrastremos esa
cámara un poco más hacia atrás y ahora volvamos a
ejecutar el juego. Ahora estamos viendo el
cubo a través de la cámara, pero seguimos en
ese mismo plano Entonces, si presiono L, podemos ver el cambio a una esfera. Entonces, para concluir
solo hay un plano sobre el que
podemos tomar el control Sin embargo, con ese peón
o plano de personaje, podemos interactuar con otros
planos normales o actores en el nivel, y controlar directamente
algo o interactuar con ellos son
diferentes tipos No están
categorizados así, pero tenemos que mantener eso
en el fondo de nuestras mentes. Algunos de ustedes ya
pensarán, pero, Jordan, quieren poder controlar
múltiples planos
al mismo tiempo, como tener un montón de luces en mi escena y presionar
diferentes teclas, encenderlas o
apagarlas Bueno, esa es una gran pregunta, y hay una solución a eso, pero eso es para la siguiente lección.
5. Explorar el plano de nivel: Creé un nuevo
nivel llamado Luces, y lo que tengo aquí es
un avión con algunos pilares, y tengo tres luces aquí dentro de las cuales me gusta
tomar el control. Aquí tenemos un foco azul, una especie de luz rectangular
verde fluorescente,
y finalmente una luz puntual de
color cálido. Estos no son planos. Acabo de poner estas luces
directamente en mi nivel. Ahora bien, poner estos en un plano no es útil
ya que queremos tomar control sobre estos presionando
una tecla para encenderlos o apagarlos Ahora bien, hacer un
plano de clase de estanque tampoco es una opción, ya que eso generará el
plano en escena Por lo que tenemos muy mal control sobre dónde
se posicionarán. Además, solo podemos tomar el
control de un plano. Así que tenemos que
averiguar una manera diferente. Bueno, aquí hay algo
interesante. El nivel en sí también tiene
un plano. Encima aquí, encontrarás un
botón que va a enumerar todos los planos que están específicamente vinculados
al nivel,
uno de los cuales es el modo de juego,
que ya hemos visto antes Como que
lo hemos conectado a todo el nivel. Pero como puedes ver, también
hay una opción para abrir el plano de nivel Y lo interesante de
este plano
es que corre al más alto
nivel de la jerarquía, lo que significa que poseemos
automáticamente Sin embargo, esta no es una clase
normal de planos. Siempre está ahí por
defecto, pero como puedes ver, no
hay ventana de
componentes ni
ventana gráfica ni ventana de
construcción Eso es porque los
componentes son básicamente todas las cosas que se encuentran en tu nivel, como las luces. No podemos agregar
propiedades a un nivel, así que no hay pestaña de construcción, solo cualquier gráfico de eventos para
cuando se ejecuta el juego. Y así ahora se vuelve muy fácil. Simplemente podemos seleccionar las
luces del nivel y arrastrarlas
al plano de nivel Y voy a crear
los eventos para el número 12 y tres teclas
en mi teclado. El primero tiene que
encender la luz puntual, y hay algunas
formas diferentes en las que podemos hacerlo, y la mejor manera de
averiguarlo es seleccionar las luces puntuales en tu nivel y ver la spanel de detalle Juega con sus
propiedades para
descubrir el mejor escenario para
usar en el plano Al igual que, sí, podemos
usar la intensidad. Ya sabes, básicamente ponerla a cero y luego volver
a otra cosa. Pero entonces estamos
codificando algo duro en, lo cual es una mala práctica, y quieres evitar esa
codificación dura tanto como sea posible. La codificación Hart es donde
vas a poner valores en el plano Imagínese que estableceríamos el
lumen cuando la luz
está encendida a 1,000 en el plano Pero luego vuelvo a
mi nivel y empiezo a retocar y decido volver a poner el brillo de esa
luz a 100 Eso significa que también
llegué a volver a mi plano de nivel y establecer la intensidad allí
en 100 también Codificación dura de un valor, ese número es fijo. Entonces, en lugar de hacer eso, busquemos una propiedad
que simplemente pueda encender o apagar
la luz en lugar de cambiar
el valor de intensidad. Y bajo renderizado, podemos encontrar tal opción
llamada visible. Como puedes ver un simple toggle, que mostrará o
alturará el componente. En este caso, haciendo que
la luz brille o no. Impresionante. Volvamos
al plano de nivel Y desde el punto de
luz, arrastremos el pin para conectarlo
a la visibilidad del nodo. Y hay algo
muy interesante aquí llamado la visibilidad de
toggle. Y hoy tienes suerte
porque no siempre tenemos una opción de toggle para
cada propiedad. Por lo general, solo una opción de conjunto, y luego necesitamos
crear manualmente algunas notas alrededor de eso
para que se mueva. Pero por ahora, podemos
usar el toggle, así que conecta tu clave uno ejecuta
a la visibilidad de toggle. Y voy a hacer lo mismo
por la luz rectangular. También aquí, alternar visibilidad. Y finalmente, el
foco también alterna la
visibilidad y conecta
el árbol clave a esa nota. Volvamos y ejecutemos el juego. Y notarás que
podemos
encender y apagar estas luces ahora con
la llave correspondiente. Incluso hacer que alguna discoteca
sea efectiva. Eso lo haces rápido. Ahora, tengo una
pequeña tarea para ti antes de pasar
a la siguiente lección. Cuando arranque mi nivel, quiero que todas las luces estén apagadas, pero no quiero que las
apaguen en mi nivel. Entonces el plano tiene que hacer eso. Necesitan comenzar
cuando ejecuto el juego, y luego puedo comenzar
encendiéndolos o apagándolos nuevamente
presionando mi tecla. Es muy sencillo. los eventos correctos
que se necesitan para establecer el estado de la luz
cuando ejecuto el juego y te mostraré la
solución en la siguiente lección.
6. Mecánica de juego simple: sistema para plantar bombas: Hola, bienvenido de nuevo. Entonces mis luces están actualmente encendidas en
el nivel Designer. Voy a correr mi juego, y como pueden ver, ahora
están apagados. Puedo volver a encenderlos o
apagarlos presionando mis teclas
dedicadas. Y también espero
que eso funcione para ti. Ahora, interesante, hay diez formas
diferentes de hacer esto. Probablemente lo hice
diferente a lo que hiciste tú. Entonces echemos un vistazo
al plano de nivel. ¿Qué está pasando
aquí? Para empezar, la pulsación de teclas y alternancia de
visibilidad siguen
siendo las mismas. Yo uso los eventos comienzan a
jugar para establecer la visibilidad
inicial. Supongo que también usa eso. Ahora, permítanme desacoplar el nodo de
secuencia por un momento. E interesante es que
podemos conectar los eventos comienzan a jugar con la
visibilidad de toggle también. Entonces eso significa que hay
dos eventos diferentes que pueden encargarse de la
ejecución de esas notas, la pulsación de teclas y los
eventos comienzan a sonar. Ahora el problema es que
un evento solo podría ejecutarse a otro
nodo como puedes ver. Entonces tenemos que ser un poco creativos. Una cosa que podríamos haber
hecho fue seleccionar todas las
notas de visibilidad de alternar, copiarlas, y luego pegarlas por aquí, y podemos enganchar la
placa de inicio a la primera nota, luego la salida de esa
a la segunda, y finalmente
esa a la tercera Estamos haciendo una cadena. Y cuando ejecuto
eso, también funciona. Mis luces están apagadas.
Pero como puedes ver, hay muchas notas para
algo sencillo como esto. Lo estamos haciendo complejo. Estamos usando una copia de algo
que ya está ahí, así que es una buena práctica
tratar
siempre trabajar con
las notas mínimas posibles. Entonces voy a borrar
todo eso y conectar mi start play
al nodo de secuencia. Esto ejecutará cada comando
uno por uno en una secuencia. Funciona exactamente igual, pero un poco más limpio. Bien, vamos a cerrarlo todo. Voy a abrir de nuevo
mi nivel de cubo, y voy a abrir también el plano del modo de
juego y cambiar el pan predeterminado nuevo al personaje en tercera
persona Porque esto nos permite
correr alrededor de los bits y así ayudarnos con lo siguiente
que nos encantaría crear. Me gustaría colocar una
bomba en cualquier parte del mundo. Entonces aléjate, y
cuando presiono cierta tecla, esa bomba debería explotar Vamos a tomar un enfoque
muy sencillo, así que no te preocupes demasiado. Voy a hacer clic derecho
en mi navegador de contenido y elegir agregar un nuevo sistema
Niagara. Se trata de un sistema de simulación de partículas y
fluidos muy potente y muy
abrumador, pero no te preocupes. Podemos elegir entre una plantilla, y
aquí hay algo
muy divertido llamado ráfaga de confeti, perfecto para la explosión Así que vamos a golpear Crear y
nombrarlo ráfaga de confeti. En cuanto a la bomba en sí, podemos usar un cubo o algo que
ya esté en el motor. Si lo desea, puede importar su propio modelo de tratado, realmente no
importa. Entonces como toda esta acción ocurre desde dentro
del personaje, vamos a abrirnos y trabajar dentro del plano del personaje Tan solo deja todas las notas que se encargan del movimiento en paz. Simplemente puedes ignorar eso. Trabajaremos en el sitio. Entonces vamos a pensar paso a paso
lógico. Vamos a toparnos
con problemas y luego resolverlos. Entonces lo primero es que presionamos
una tecla para plantar la bomba. Entonces voy a crear un evento de
teclado para la letra B. Cuando eso se dispara, una
malla que represente la bomba debería aparecer frente al personaje
en el suelo. Vamos a la ventana gráfica
y en un componente de cubo. Podemos escalarlo y reposicionarlo un poco para que se asiente
frente al personaje Ahora, ejecutando esto, podemos ver que el cubo está frente al personaje moviéndose
a lo largo porque se está controlando todo
el plano Pero eso es algo bueno
porque significa que el cubo siempre estará en el lugar correcto cuando lo plantemos. El único problema es
que en el momento en que el cubo empeña
o se hace visible, ya no debe
seguir al personaje De lo contrario, nos sale
confeti en la cara. Bueno, hay una buena opción para sobrescribir que un objeto
debe seguir al personaje, y eso es simplemente
habilitando la física Simplemente podemos verificar
esa propiedad en el detalle spanel cuando
tengas tu cubo seleccionado Entonces ahora obtenemos un cubo que
cae y se queda quieto. Incluso podemos toparnos con ello, lo cual es divertido.
Habilitamos la física. Entonces al inicio, obviamente, también
queremos desactivar la
visibilidad del cubo. No todo
necesita ser programado. A veces solo puedes
alternar algunas opciones. Pero el siguiente polvo, cuando presionamos la tecla B, el cubo debería hacerse visible. Ya lo hemos hecho antes,
así que debería ser fácil. Arrastre el cubo
al gráfico de eventos y conéctelo a la nota de visibilidad
establecida. No tenemos que alternar
en este momento y, por
supuesto, asegurarnos de verificar la nueva visibilidad
para que sea verdad. Bien, ahora tenemos que
asegurarnos de que el cubo se genere
frente al personaje Y a pesar de que es
invisible desde el principio, sigue engendrando justo delante del
personaje al principio Pero luego caminamos y
presionamos al Biki para
ponerlo a visible Obviamente, simplemente aparece
de donde ya estaba. Entonces, bien, tenemos que establecer una ubicación del cubo,
y podemos hacer eso. Ya lo hemos hecho antes.
Simplemente toma el cubo y conéctalo a una ubicación mundial
establecida. El camino, si tienes problemas
para entender la diferencia entre un mundo o una ubicación
relativa, este es un gran
momento para probarlo. Verás que ese pariente no
va a funcionar, que es la posición
dentro del plano A medida que corremos,
la posición
del personaje cambia
en el mundo, pero no en el plano La posición relativa
permanece igual. Pero entonces, ¿cuál es la nueva ubicación
mundial del cubo? Bueno, obviamente, donde se encuentra
el personaje. Así que tomemos al personaje, que es la malla esquelética, y obtengamos su ubicación
mundial Conéctalo a
la nueva ubicación. Genial. Ejecuta el juego, y
voy a caminar un poco y luego plantar la
bomba. Oh, ¿qué es eso? En realidad aparece exactamente en el mismo lugar
que mi personaje. Sabes, debería
estar frente a mí. Y aquí es donde se pone complicado. Vamos a tener que
resolver un problema. Como hemos visto antes,
podemos dividir los pines
de la ubicación. Entonces, en teoría, podríamos conectar
la X a la X y luego conectar la Y a un
nodo add y agregar un valor de, digamos, 200 y poner ese valor en la
siguiente ubicación Y. Y por último, la Z.
no se queda igual. Entonces, bien, en teoría, ahora
tenemos una compensación. Y corramos el
juego, caminemos y presionemos la tecla B
un par de veces. Y nos damos cuenta de que ese desplazamiento depende de hacia dónde se enfrente el
personaje. Entonces esta no es realmente
una buena opción. No podemos tomar la
posición de la malla. Voy a eliminar todo
esto y hacer clic derecho en mis pines para volver a
combinarlos juntos. Vamos a necesitar la posición
de algo que esté frente al personaje. Hmm. Y si solo agregamos
algo ahí, como agregar una esfera
a los componentes, y voy a arrastrar esa esfera frente a mi personaje. Ahora, mientras
no habilite la física, esa esfera simplemente me seguirá
y se quedará exactamente
frente al personaje. Lo único que tengo que hacer
es desactivar su visibilidad. Sin embargo, hay un problema. Aunque sea invisible, todavía
puedo
toparme con otros objetos. Entonces también tenemos que desactivar
la colisión. Se puede buscar colisión. Realmente no hay una opción aquí para habilitar o deshabilitar eso, pero sí veo que hay un
preset que dice bloque A, e interesante es que aquí hay una opción que
dice que no hay colisión. Hm, me pregunto qué va a hacer eso. Bueno, arregló mi problema. Entonces ahora todo se junta. Vamos a tomar esta esfera, obtener su ubicación mundial y conectarla con la
nueva ubicación del cubo. Y Bm, tenemos funcionando el mecanismo de
siembra de bombas. Un problema, sin embargo,
tenemos un error en el juego. Ya sabes, los jugadores pueden responder
sin cesar a la bomba, y eso tiene sentido Cada vez que
presionamos la tecla B
, establece una nueva ubicación mundial. Sólo hay una bomba, así que eso sólo debería suceder una vez. Para hacer frente a ese problema, lo
vamos a dar
paso a paso otra vez. Entonces, si el jugador presiona B, la bomba se genera en, y tenemos que recordar que
el jugador hizo esa acción, así que no podemos
realizarla en otro momento Ya sabes, es
como el trabajo de los humanos. Si tu hijo roba una
galleta pero no la ves, puede tomar tantas
galletas como quiera Pero si los viste
tomando una vez una galleta, lo guardas en tu memoria, y puedes decirle a tus hijos que
no lleven otro cocinero. Y los niños hacen eso.
Escuchan muy bien. Así que también tenemos que almacenar esto en la memoria del juego, y ahí es donde entran
las variables. Lo podemos encontrar aquí en la parte inferior izquierda en
el editor de planos Ya nos dieron algunos.
Estos son los componentes que editamos como la
esfera y el cubo. Pero también podemos
crear uno nuevo. Da clic en el Plus y nombra
la variable plantada. Y por defecto, dice que
la variable es una booleana. Este es el tipo de variable. Podemos almacenar todo tipo
de cosas en un recuerdo. Un booleano es simplemente una declaración
verdadera o falsa. Pero también podríamos
cambiarlo a un entero. Este es un número. Podemos
tener una variable de texto. También hay una variable vectorial. Estos son tres valores,
es decir, XYZ, así que para almacenar una ubicación, y para empeorar las cosas, hay alrededor de 7 mil tipos de variables
más Pero no te preocupes, al igual que
con las clases de blueprint, solo
usarás las
más comunes a menos que ya estés
familiarizado con irreal y estés trabajando en un proyecto más grande que
tenga necesidades muy específicas Ahora un lingote está
bien, verdadero o falso. Arrastra esa variable a la gráfica, y tenemos que elegir
entre get o set. ¿Almacenamos un nuevo
recuerdo o miramos lo que
almacenamos antes? Vamos a empezar por
establecer la variable. Entonces, cuando presiono la tecla B, primero
tenemos que asegurarnos de
pasar por todas las acciones
para plantar la bomba, así que arrastra el nodo set al final, luego conectarlo y
configurarlo en true. Ahora, vuelve al principio. Cuando presione el Biki antes de tomar toda la
acción de plantar la bomba, primero
revisaré mi mente para ver si ya lo
hemos hecho Entonces esta vez, tomamos
el get plantado. Y la forma en que podemos verificar esto es con una rama simple, una nota que
usarás mucho, también. Si te gusta la programación, es básicamente una declaración IL. Si una condición es
cierta, entonces hazlo. Esa es una declaración de IL. En realidad, es un poco diferente. Se llama sucursal. Se ve en la condición, y si es cierto, entonces
sigue este pin de ejecución. Si es falso, entonces
sigue al otro. Una excelente manera de dividir el flujo de tus notas
dependiendo de una condición. Ya está plantada,
si es verdad, entonces no hacemos nada. O podríamos agregar como un texto impreso diciendo que la
bomba ya está plantada. Si es falso, entonces eso significa que aún no hemos
plantado una bomba. Entonces podríamos hacer toda
la siembra la secuencia de bombas de notas. Y ejecutando el juego, podemos ver ahora que funciona a la perfección. Bien, la bomba está plantada. Tomemos algo de distancia
ahora y hagamos que explote. Podemos asignar la explosión a diferentes claves o
usar la misma. sabes, ya
tenemos una sucursal aquí, así que eso significa que
podríamos armar la explosión misma
cuando se plantó es verdad. Así que arrastra la
ráfaga de confeti en el plano, y de inmediato
en los puertos de visión,
podemos ver que el podemos ver que Además, cuando jugamos el
juego, se apaga. Entonces echemos un vistazo
al panel de detalles. ¿Hay algo aquí
que
active automáticamente esta simulación? Bueno, sí, la hay. La activación automática está activada. Entonces apagemos eso. En el gráfico de eventos,
eso quiere decir que vamos a
tener que echar un vistazo
al confeti y vincularlo
a un nodo set activate Entonces todo lo que estoy haciendo es leer
las propiedades de un componente que siempre
vuelve como nota. Es así de simple. Si no sabes
cómo hacer algo, solo mira las propiedades. Estas son todas las opciones que obtienes y lo que puedes cambiar. Ahora, también tenemos que establecer
la posición correcta. Entonces voy a ir un
poco más rápido sobre esto ya que deberíamos entender
ahora cómo funciona eso. Confeti establece la
ubicación del mundo, conectado. Entonces toma el cubo o la bomba, consigue su ubicación mundial y pon ese valor en la
nueva ubicación del confeti Y finalmente, si
tu bomba explota, también se ha ido Entonces tal vez tome el cubo y vuelva a
conectarlo a un nodo de
visibilidad establecido, pero deje la visibilidad
desmarcada. Bien, vamos a intentarlo Voy a colocar mi bomba, huir un poco, y
luego hacer que explote Sí, confeti. Eso funciona. Pero igual que con la bomba, no
queremos que el jugador la
haga engendrar o en este caso, vuelva a haga engendrar o en este caso, explotar porque eso va a pasar
mirando mis notas actuales Nada aquí
me dice que el jugador no
debe reactivar
el confeti Pero estoy seguro de que ya sabes
cómo hacerlo. Entonces esa es una
tarea pequeña para ti otra vez. Y como antes, te mostraré la solución en la siguiente
lección. Gracias por mirar.
7. Detección de éxito con el calco de líneas: Estamos aprendiendo que
con sentido común, sabes qué tipo de notas elegir y
conectar entre sí. A veces llegas a probar algunas notas diferentes para encontrar la que funcione
para tu propósito. Y un gran consejo es simplemente
usar algo como HatChipt para preguntarle qué quieres hacer y qué nota
tienes que elegir para Es una herramienta increíble para
ayudarte con cosas como esta. Pero hay algunas
notas en irreal, que tal vez no sean
tan obvias a primera vista, pero son muy
importantes de conocer Y uno de los cuales es
un poco más complejo. Entonces quiero explorar
eso junto con. Pero primero, veamos la solución de
la lección anterior. Entonces cuando plantamos una bomba, siempre
va a
activar el confeti Y éste fue muy sencillo. Solo tuvimos que crear
otra variable. Yo lo llamo explotó, y voy a comprobar si
explotado es cierto. Si no, entonces
activaremos el confeti. Y si es verdad,
no hacemos nada. Entonces al final de
esta serie de notas, nosotros, por
supuesto, set explotó a verdad. Es exactamente lo mismo que
hicimos con plantar la bomba. Y debido a que tenemos estos
valores y una variable, podríamos seguir construyendo sobre esto. Ya sabes, el jugador
podría, por ejemplo, recoger una nueva bomba y
reiniciamos ambas variables
a pliegues, que el jugador pueda volver a
plantar una bomba. Ese es el poder de
trabajar con variables. Voy a quedarme dentro
de mi personaje Blueprint, click
derecho en un espacio
vacío y buscar Traza por canal Y aquí tenemos un par de opciones
diferentes, caja, cápsula, línea, etcétera Todos son iguales excepto
por la forma del rastro. Por ahora, tomemos fila. Tendrá más
sentido en un poco. Lo primero que
voy a hacer es crear un evento de pulsación de tecla T y
conectarlo a la nota de traza de línea De esa manera, podemos
dispararlo cuando presiono entonces, ¿qué hace esto y
por qué es tan importante? Bueno, podemos filmar una línea. Ahora, necesitamos definir la
posición inicial y final de esa línea. Entonces, si quieres filmar esa
línea desde el personaje, tenemos que hacer que comience con obtener la ubicación mundial
del personaje. Y eso lo hemos hecho
muchas veces antes de ahora. En cuanto a la posición final, podríamos tomar
lo mismo que el inicio, pero conectado a una nota add. Esto nos permite sumar 100
a la posición actual. Ya sabes, entonces
conéctalo hasta el final. Ahora bien, si fuéramos a ejecutar esto, no
vamos a ver nada. Eso es porque la línea no
debería ser visible. Pero a medida que estamos trabajando en ello, podemos establecer el sorteo
Dbuk a visible Y escojamos por duración para que la línea permanezca
visible el tiempo suficiente. Bien, voy a probarlo. Cuando presiono una tecla T, puedes ver aparecer una línea
del personaje. Cada vez que presiono la tecla. Y
lo interesante es que
podemos usar esa línea
ahora para hacerla golpear con algo y
luego
realizar dinámicamente una
acción específica sobre ese hit. Y una de las cosas en las
que inmediatamente
pensamos es un juego de disparos. Ya sabes, disparas una bala, que va a estar respaldada
por esa línea invisible, y si golpea a otro
jugador, muere. Pero va mucho
más amplio que eso. Quiero mostrarte muy rápido un proyecto en el que estoy trabajando. Esto es para una obra de teatro. motor irreal se utilizará como proyección en
el fondo Y tengo este juguete, que modifiqué para que
cuando dispares el arma, haga clic en un botón. Y a partir de ahí, le dejo
trazar una línea desde arriba, y donde luego
golpea el suelo, hago que se apague una chispa de fuego. Tú haciendo esto, puedo hacerlo dinámico porque la
superficie del suelo no es recta. Entonces no sé dónde
colocar la chispa. Ahí es donde entra el rastro de
línea. Entonces, llegaste a ver esta nota como una herramienta increíble para crear
cualquier tipo de eventos dinámicos, ya sea para juegos, aplicaciones
interactivas, renders de
películas que tienes simulaciones que resultan
diferentes con cada exportación Pero, bien, basta de ladrar. Vamos a crear algo,
algo sencillo para empezar. Quiero subir a una
pared y pintar con aerosol unos graffitis exactamente
frente a mí en esa pared. Entonces lo
primero es lo primero, voy a crear una
pared simple a partir de un cubo. Voy a
estirarlo un poco para que
podamos conseguir una pared alta y larga. Mucho espacio
para el graffiti. Y entonces necesitamos graffiti. Y supongo que
ya está familiarizado con FAP, que es el mercado de activos irreales
de motores Si buscas graffiti y estableces el precio gratis,
encontrarás algunos, y quieres
buscar calcomanías idealmente, y Quickle tiene algunas de esas Sólo voy a añadir el primero
de mi proyecto. Muy sencillo. Si arrastra dicho
material a su nivel, se proyectará
en la dirección de esta flecha sobre cualquier superficie. Bien, así que volvamos a nuestro plano. Lo primero que
queremos hacer es
asegurarnos de que la línea se
dispare correctamente. Empezó en la parte inferior
del personaje. Entonces vamos a moverlo un poco
hacia arriba a la altura del pecho. Entonces voy a hacer un add
en la posición de inicio, y vamos a poner 150
en el eje Z. En realidad son 150 centímetros, lo que tiene sentido
para un personaje. La posición de los extremos también lo conseguirá ya
que tiene que
disparar directo. Ahora bien, el problema va a ser el valor X e Y porque eso depende de donde se enfrente
el personaje. Probándolo muy rápido, se
puede ver que en el eje X, siempre dispara en
la misma dirección. Así que llegamos a
encontrar una manera de hacer que se filmara frente al
personaje en todo momento. Ahora, podemos hacer un cálculo
matemático completo, pero afortunadamente, hay una nota
simple para eso llamada el vector Get forward. Dará salida a un
pequeño valor X Y Z basado en la dirección hacia
la que se enfrenta el carácter, así podremos conectar ese
nodo a un nodo de multiplicar. El valor siempre
va a ser uno o menos. Si haces X más
Y, obtendrás uno. Entonces así es como somos capaces de
averiguar la dirección
hacia adelante. Pero tenemos que multiplicar
en vez de sumar esta vez. Y como el
vector forward es un número pequeño, por lo tanto una ubicación relativa, tenemos que agregarlo a la ubicación
mundial de la malla. Y por último, queremos sumar 150 a ambos ejes Z
para sacarlo un poco Conecte la posición
mundial normal al inicio y la posición mundial con el desplazamiento agregado desde el vector hacia adelante hasta el
final. Vamos a probarlo. Y como que funciona,
pero tampoco lo hace. De alguna manera
se dispara desde el sitio, y me tomó algún tiempo averiguarlo, en realidad. Pero volviendo al plano
y seleccionando la malla, descubrirás que
se ha rotado Ahora bien, no podemos simplemente
girarlo de nuevo a cero porque así es se ha configurado
el plano Recuerda, también tenemos
controles de jugador,
así que realmente no podemos jugar demasiado con estos activos. Entonces, en cambio, tomemos
el componente de la cápsula. Encapsula todo,
como el personaje, la cámara, etcétera. Y en realidad es el componente que está siendo controlado
por el jugador. Y sí, eso funciona. La línea es un poco
demasiado alta, sin embargo, y eso es porque en lugar de el punto de anclaje
esté en la parte inferior, como con la malla, en la
cápsula, está en el medio. Entonces solo disminuirlo a
como 70 o algo así. Entonces te estoy mostrando estas cosas con las
que también me encuentro. De esa manera, se puede
ver el proceso por el
que paso para resolver un problema. De todos modos, tenemos el rastreo de
línea funcionando. En la salida del nodo de rastreo de
línea, tenemos una propiedad out hit, y voy a hacer clic derecho sobre él y elegir dividir el pin. Verás cuánto
hay realmente dentro. Hay muchas maneras
diferentes en las que podemos comprobar cómo golpea algo
dentro del nivel. Para un juego de lucha, realidad
puedes localizar los huesos en la malla esquelética del
oponente Pero lo que nos
interesa es la ubicación de éxito. Esta también va a ser
la propiedad más utilizada porque queremos
generar la
calcomanía de graffiti en una ubicación específica,
la ubicación de
donde la traza de la línea entra en contacto con la pared Entonces sí,
agreguemos la calcomanía de graffiti. Y podrías
pensar, como antes, agregamos calcomanía a los componentes, la
arrastramos al plano
y establecemos su posición, tal como hicimos con el
cubo en la lección anterior Sin embargo, eso significa que solo
tenemos una calcomanía con la que trabajar. En realidad, si
fueras por esa ruta, te habrías dado cuenta de
estar atascado en ella. Así que tenemos que encontrar una manera
de hacer
un nuevo tramo de calcomanía en el nivel cada
vez que presiono mi tecla. De esa manera puedo pintar con aerosol múltiples graffitis en la pared A ver si hay
un nodo para eso. Haga clic derecho y busque spawn. Y puedo ver que
hay múltiples cosas que en realidad
podemos engendrar en el
nivel, lo cual es realmente genial Esto podría darte algunas
ideas de lo que es posible. Y para mi sorpresa, en realidad
hay uno
ahí dentro que nos permite generar una calcomanía en una ubicación específica, y eso es exactamente
lo que necesitamos Bien, así que tenemos que
configurar el material de calcomanía, que va a ser el
que descargué De hecho, podemos simplemente arrastrar ese material a
la propiedad de la nota. A veces es más fácil.
Vamos a tener que establecer una talla. De lo contrario, no podemos
ver la calcomanía, y esto es algo
a lo que quieres ir y venir para averiguar para corregir
los valores. Te ahorraré el dolor. Simplemente fui por 100 y
cada atributo de escala y establecí la rotación X en 90
y el resto en cero. En cuanto a la ubicación,
esa va a ser la ubicación
de golpe del trazado de la línea. Y finalmente, solo
tenemos que asegurarnos de que el nodo se está ejecutando
después de la nota de traza de línea. Bien, veamos
qué hace esto. Funciona increíble. No obstante, me doy cuenta de un
par de temas. La calcomanía también es visible
en el propio personaje. Ya sabes, solo debería
ser visible en la pared. Y cuando el trazo de la línea
no golpea un objeto, también rocía pinta
el graffiti. Está en alguna ubicación extraña
ya que no hay ubicación de golpe, eso es normal porque la nota siempre
se ejecutará
pase lo que pase. Así que tenemos que arreglar esos dos
problemas. Empecemos con la
calcomanía del personaje. Voy a seleccionar
mi malla esquelética y buscar calcomanía en
el panel de detalles Y como pensaba,
tenemos una opción aquí que se asegura de que
no va a recibir calcomanías Genial. Esa fue una solución fácil. Ahora el segundo problema. Así que sólo cuando el trazado de la
línea golpea, queremos decalar a span. Y desde el nodo de rastreo de línea, tenemos un
valor de retorno en la parte inferior. Esto simplemente devolverá true si la línea es golpeada o cae
si no hay hit. Así que simplemente podemos agregar
un nodo de rama en el medio y hacer
uso de esa verificación. Entonces solo si el golpe es cierto, engendramos el decalado De lo contrario, no hacemos nada. Entonces, cuando no me quede lo suficientemente
cerca de la pared, no
pintará con aerosol el graffiti, solo cuando esté lo suficientemente cerca, y la línea golpea. Obviamente, cuando todo
funciona según lo previsto, quieres desactivar
el sorteo Dbug para que los jugadores en realidad no
vean ese rastro de línea Entonces este es solo un ejemplo de 1,000 de cómo puedes
usar la nota de rastreo. Te recomiendo encarecidamente
que juegues con esta nota y veas
qué otras
cosas dinámicas puedes crear. Explora la esfera y
el rastro del cubo, también. Son exactamente iguales, pero en cambio disparan
una forma diferente que podría darte más opciones para las cosas que vas a hacer. Han sido un par
de lecciones largas hasta el momento, así que ve a tomar un descanso
de esta clase, practica un poco con todas
las cosas que
ya aprendiste, y luego
continuaremos más tarde con una simulación muy divertida que
crearemos juntos.
Gracias por mirar.
8. Eventos de simulación dinámica: Hemos estado trabajando mucho en el plano del
personaje en tercera persona Entonces pensé en hacer algo
diferente para esta lección. Entonces creé un nivel simple con algunas paredes y le agregué
algunos pines. Ahora, tenemos
tres bolas encima. Estas son solo esferas que
habilité la gravedad para, ya
sabes, la física.
Ya lo hemos visto antes. E interesante es que con cada vez
que ejecute el juego, vamos a conseguir
un resultado diferente. Ya sabes, estas bolas
nunca rebotarán igual. Siempre
terminarán en otro lugar. Eso es lo que se llama
una simulación, y podrías tener muchas
simulaciones dentro de un juego, pero también al hacer renders de
películas o cualquier otra cosa que
use un motor irreal Eso quiere decir que para cualquier
acción que queramos crear, tiene
que ser dinámica. Tiene que reaccionar ante
la simulación, y ahí es de nuevo, donde
entran los planos Entonces tengo esta idea de
cambiar el color de estos pines si una de las
bolas choca con ellos, y si obtienen múltiples golpes, su color seguirá cambiando. Por ejemplo, una protuberancia las
hará verdes, una segunda amarilla
y una tercera roja. Entonces lo primero que queremos
hacer es quitar todas
las latas porque vamos a reemplazarlas por un plano Así que vamos a crear una clase de actor de
planos, y lo llamaré BP pin Y dentro de los componentes, voy a agregar el cilindro, y quiero reescalarlo un poco para
que el pin sea más largo Y en realidad ya puedes
arrastrar el plano a
tu escena para entender
mejor cuánto
tienes que escalarlo Siempre es mejor escalar la malla real en
lugar del plano en sí Voy a rotar
y moverlo en su lugar. Y una vez que termine, dupliquemos ese plano un montón de veces manteniendo pulsada tecla Alt y luego
arrastrándolo a una posición diferente Bien, ahora podemos entrar en el plano Pin y comenzar a
conectar algunas notas Por lo que queremos encontrar la manera de
desencadenar un evento cada vez que se golpea
el cilindro. Entonces lo primero que podemos hacer
es buscar tal evento. Y bajo colisión, en realidad
hay uno que
se llama golpe de evento. Eso ya lo hemos
visto antes. Y una gran manera de probar
y ver si funciona es
conectarlo a un
texto impreso o una nota de cadena. Vamos a correr el juego. Y
desgraciadamente, no funciona. Ahora, voy a
ahorrarte la molestia. Pero normalmente, cuando no
se activa
un evento deseado , podría ser una configuración
dentro de las propiedades de malla. Entonces, selecciona el cilindro y
ve al detalle spanel. Aquí hay una configuración bajo colisión llamada Simulation
Generate Hit events, y por defecto, está desactivada. Así que solo habilite. La razón por la que algunas de estas opciones están deshabilitadas por defecto
es para el rendimiento. Si no estás usando
el hit del evento, tampoco deberías
registrarte porque
aunque no estés usando
algunas de estas notas del evento, bajo el capó, estos eventos
sí reciben un ping cada vez. Y al construir
un gran mundo, esto podría generar problemas de
rendimiento. Así que siempre verifique los detalles del componente si hay algo ahí dentro que
necesite habilitarse. Antes de seguir adelante, hay
una cosa importante que hay que saber. Ya sabes, anteriormente,
teníamos que establecer la malla como objetivo en una nota. Esta vez, no
tenemos que hacer eso. Esto significa que el golpe del evento se activa cada vez que se golpea
el plano Si tuviera que tener múltiples
mallas aquí y
quiero activar específicamente
el hit para una malla específica, puedes seleccionar esa malla, y luego si haces clic
derecho aquí, puedes ver que podemos agregar un evento específico para esa malla Y bajo una colisión, podemos encontrar el componente
golpeado por cilindro. Entonces este es exactamente el mismo evento. Uno es para la malla específica. El otro es para todo lo que
hay dentro del plano. Bien, ya lo tenemos funcionando. El texto de la pantalla dirá
hola cada vez que se golpea un pin. Entonces queremos cambiar
el color del pin. Y para
ello, necesitamos
hacer cambios dinámicos en
el material. Por lo tanto, crearé un
nuevo material y lo llamaré pin. La creación de materiales también
se basa en nodos. Funciona muy similar
como con los planos, y podemos hacer todo
tipo de cosas y enchufarlo en diversas propiedades
materiales aquí También podemos poner
texturas aquí porque si quieres que el pin se vea como
un poste de madera o lo que sea, voy a mantenerlo simple
por ahora y solo cambia el color base a blanco en
la propiedad del material en sí. Y luego volveré
al plano,
seleccionaré el cilindro y
cambiaré su material a pin, el que acabamos de crear Bien, voy
a tomar el cilindro y arrastrarlo al plano A partir de ahí, veamos si
podemos encontrar un nodo para cambiar el
parámetro de color base de su material. Buscar material y
navegar por la lista, necesito una nota fija, y aquí hay algo
que podría funcionar establecer el valor del parámetro de color en el
material. Tomemos eso. Bien, entonces me pide
definir el nombre del parámetro. El parámetro se llama color
base, ¿verdad? Así que vamos a escribir eso aquí. A continuación, podemos elegir un nuevo valor de
parámetro o color. Ya sabes, hagámoslo verde. Y por último, conecta
el evento a esa nota para que pueda
ser disparado al golpearlo. Bien, vamos a darle una oportunidad. Hmm. Eso no funcionó. A lo mejor el
nombre del parámetro no es correcto. A lo mejor tenemos que hacer
otra cosa con esta propiedad. Volvamos al material y veamos la propiedad de
color base. Hagamos clic derecho sobre él y
veamos qué opciones obtenemos. Oh, interesante. Podemos
promoverlo a un parámetro. Hmm. Eso tiene sentido. Estas propiedades del material
son justamente eso. Propiedades, y solo podemos hacer cambios en
lo que está sucediendo
frente a aquellas propiedades en las que establecemos un color o textura. Nosotros llamamos a esos parámetros, y ellos van a la propiedad. Esto significa que también podemos
cambiar el nombre
del parámetro a pin
coolor, por ejemplo Esto hace que sea mucho
mejor trabajar con él. Y esto también nos hace
entender mejor que con materiales
muy complejos, podemos hacer cambios en
un parámetro específico, lo que podría alterar la suciedad y el agua o la reflexión en el vidrio. Bien, voy a cambiar eso
a blanco, el color por defecto Y en mi plano, ese nombre de parámetro
ahora se convierte en color pin Tienes 100 notas aquí, también
tiene mucho
más sentido ver color
del pin en
lugar del color base. Bien, ejecuta la simulación, e increíble. Eso funciona. Ahora, la idea ahora es
cambiar el color tres veces. Y hay varias
formas de hacerlo. Una forma es crear
un valor numérico y agregarle uno cada vez que se activa el
evento. Entonces verificamos cuál es
ese número, y en base a eso, cambiamos
el color en consecuencia. Pero eso es mucho código
para algo que podemos simplificar con una nota D. De hecho, puedes encontrar
un montón de nodos de control de flujo
cuando lo busques. Ya tocamos algunos. El nodo dN donde N representa
un número que establezca, realiza una acción para la
cantidad de veces que elija. Entonces podemos definir eso
en el valor de entrada. El contador en la salida nos
dará el número en el
que se encuentra el nodo. Entonces, si es la segunda
vez que se dispara, el número de salida es dos. Y en lugar de hacer
un montón de ramas y verificar
si es el número uno, dos o tres, podemos hacer
uso de un nodo switch. Y más específico,
el switch on It donde representa entero
o un valor numérico, y luego podemos agregar tantos pines de
salida como queramos. Entonces voy a sumar
uno por cada número. Ahora, el nodo due end
comienza con uno, así que simplemente mantendremos
el primer cero vacío. Podríamos duplicar
el nodo material tres veces y hacer
que cambie el color. Pero de nuevo, esa no es una buena
programación. Demasiadas notas. Quieres que
sea sencillo, que
funcione y sea fácil de
adaptar en el futuro. Voy a hacer clic derecho en
el color del parámetro y elegir
promoverlo a variable. Esto lo agregará a
la lista de variables. Esta vez, no es un lingote
como trabajamos antes, sino que es una variable de tipo de
color lineal Funciona exactamente igual. Las variables se pueden
obtener como lo hacemos aquí. Obtenemos el valor del color, pero también podemos establecer el color. Así que simplemente arrastra
la variable al blueprint y elige set, y lo haremos tres veces También puedes simplemente copiar y
pegar el nodo set por cierto. Ahora, conecta las
salidas de uno, dos y tres, y finalmente cambia
el color de cada una. Luego podemos traer las
salidas X de cada nodo
al nodo de parámetro
de color para que realmente se active
y cambie el color. Vamos a darle una oportunidad.
En Yippie. Funciona. Entonces estamos empezando a entender que aunque
con algunas notas, podemos hacer mucho, pero también
se convierte en un desastre muy rápido. Aquí está, por cierto,
exactamente lo mismo sin usar la nota
do and switch, solo un montón de ramas, cheques y contadores manuales. Hace exactamente lo mismo. Pero en un proyecto más complejo, si planeas todas
tus características así, se
convierte en un desastre enorme. Así que explora un poco más
las notas de control de flujo para
familiarizarte con ellas. Definitivamente es
abrumador al principio, pero una vez que empiezas a
entender cómo
funcionan, son mucho mejores. Aquí está la cosa. Me
gusta mucho lo que acabo de crear, y quiero usar este
cambio de color mucho
más en mi proyecto. Y cuando
piensas en escalar, incluso esta
estructura de notas cortas es demasiado. Y ahí es donde
entran las funciones. Pero eso es para la siguiente lección.
9. Funciones de blueprint: código reutilizable: Cree que acabamos de crear
una característica increíble con estos giros cambiando de color medida que otro objeto
choca con él. Quiero usarlo más, pero tener que copiar y pegar
estas notas se vuelve un desastre. Y también quiero que estas notas
se ajusten más fácilmente, sobre todo cuando se trata de propiedades como el color. Bueno, ahí es donde
entran las funciones, y se puede ver
como una nota personalizada. En el lado izquierdo, encontrarás una función
sap desde la que podemos hacer clic en el Plus
para crear una nueva función, y le llamaremos cambio de color
o algo así. Se ha abierto automáticamente. Tiene su propia área de trabajo, y puedes ver aquí que
podemos volver al gráfico de eventos. Y si cierras tu función, siempre
puedes volver a
abrirla solo hacer doble clic sobre tu función en el panel de
planos Así que voy a volver a mi gráfico de eventos y de hecho poner todo en esa función
excepto el nodo de eventos, lo cual no es posible. necesario conectarlo a una ejecución entrante que
un evento no tiene, porque ahí es
donde empiezan las cosas. Voy a controlar X, que se corta, y
luego en la función, voy a pegar el nodo. Conectaremos el inicio de
la función al nodo D N. Después vuelve al gráfico de eventos, y al igual que una variable, puedo arrastrar esa función
a mi blueprint Y como puedes ver, es
solo un nodo simple. Se puede ver como un contenedor para todos los demás nodos. Conectar los hits de componentes a esa función hará que
todo funcione exactamente igual. Y lo genial es que puedo reutilizar esa función
tantas veces como quiera. Por ejemplo, voy a ir
a mi puerto de visión y duplicar ese cilindro para
que tengamos dos de esos. Y para que sea más fácil, cambiemos el nombre de estos cilindros
a pin uno y pin dos. Entonces volvamos al gráfico de
eventos y creamos un hit de componente para el
segundo pin también. Con él seleccionado, haga clic con el botón derecho en la colisión del
evento al golpear
el componente. Y podemos conectar
la misma función ahora a ese evento también. Y como que funciona,
pero no realmente. Ya sabes, mi segunda
papelera no consigue un cambio de color. ¿Por qué es eso? Volvamos a echar un vistazo a los
nodos en la función. Y aquí hay algo
que me doy cuenta. Cuando hacemos el cambio de color, apuntamos al pin uno. Entonces, para el otro pin, tenemos que apuntar
a ese también. Entonces necesitamos un parámetro en la función
que podamos cambiar, y eso se hace fácilmente. Seleccione la función y
vaya al panel de detalles. Aquí puedes ver en
la parte inferior que podemos agregar un parámetro de entrada y
salida. Vamos a crear una entrada, y estas son las
mismas que las variables. Eso significa que podemos
darle un nombre como target y luego elegir
el tipo de variable. Y si no conoces
ese tipo de variable, siempre
puedes aspirar el
parámetro en este caso, los nodos de color
porque eso te
mostrará qué tipo
de parámetro es, y eso es lo que
queremos hacer dinámico Es una referencia de
objeto de componente de malla. Así que eso es exactamente lo que vamos a
establecer como el tipo de variable. Ahora, antes de hacer otra cosa, volvamos
al gráfico de eventos. Ver que la función tiene un pin de
entrada ahora llamado target, que es el que
acabamos de crear. Así podemos vincular el
pin one mesh
al primer objetivo de función y pin dos a la segunda función. Entonces, aunque estamos
usando la misma función, hicimos dinámica
al permitirnos usar la función
en diferentes objetivos. Y eso es
lo mejor de las funciones. Elegimos cuántas opciones o propiedades
queremos exponer como entrada o salida y esto es exactamente lo
mismo que cualquier otra nota. En realidad se puede ver como
una nota reutilizable personalizada. Pero aún no hemos terminado. Volvamos a la función. Entonces al inicio, el objetivo se
ha definido en
la gráfica de eventos. Ahora solo tenemos que
asegurarnos de que va al objetivo real
del nodo de color. Así que elimina el pin uno y conecta nuestra entrada de
destino al objetivo de los nodos de color. Bien, vamos a darle una oportunidad. Esto definitivamente
resolvió ese problema. Ambos pines ahora
cambian individualmente su color, pero solo cambian
su color una vez. Debería ir al amarillo y luego al rojo. ¿Qué está
pasando aquí? Bueno, hagamos algunas depuraciones. Esta es una técnica para
averiguar dónde está el problema. Quiero ver si mi nodo final
debido en realidad cuenta hacia arriba porque eso es finalmente lo que define
el color. Entonces necesito la salida del valor
del contador
fuera de la función. Para ello, crearemos
una variable de salida. Y le vamos a nombrar contador, y el tipo de variable
va a ser un entero. Lo puedo ver instantáneamente
mirando el color
del pin del contador. Después a veces
sabrás estas cosas también. Ahora, eso
nos da una nota de retorno. Llegamos a conectar el último pin
exacto al retorno y
sacar el contador a la variable contador de la
función para pasarlo a través. Cuando ahora volvamos
al gráfico de eventos, notarás que la
función tiene un pin de salida, y podemos usarlo en combinación con una nota de impresión de
texto. Pero en lugar de que el
texto dijera hola, quería mostrar el
valor del contador. Automáticamente, agregará una conversión
de variable de numérico a texto. Ejecutemos la simulación. Y como pensaba,
sí, sólo da salida a uno No cuenta más. Así que hemos localizado el problema
haciendo algunas depuraciones. Utilizo el texto impreso todo
el tiempo para averiguar qué está pasando en
mi plano y localizar problemas con los que me encuentro. Entonces, ¿cuál es el problema? Si compartieras tus
hallazgos con She GPT, te dirá
que una
función siempre se
restablecerá cada vez
que se active Así que los controles de flujo donde necesita recordar
algo así como la cantidad de cuotas que hizo se
restablecerán a uno, y eso tiene sentido Entonces aunque esta nota final de do fue genial para mantener mis
notas más organizadas, con cualquier función, no podemos
usarla. Y eso está bien. Ya estamos haciendo
uso de una función que es una sola nota reutilizable. Dentro de esa función, no
es problema tener más nodos y
hacerla un poco más desordenada Así que borra que hacen nodos y vamos a crear manualmente
esa misma funcionalidad. Crea una nueva variable llamada counter y asegúrate de que es
de un tipo entero. Después arrástralo al
plano y elige conjunto. Conecte los pines exactos, y en lugar de conectar una variable get
del contador a la
selección del switch, simplemente
podemos usar la
salida del nodo set. Es exactamente lo mismo. Dado que estos nodos están
tan juntos, podemos hacer eso sin
hacer un lío. Ahora, solo necesitamos agregar uno
cada vez que se active. Así que haz un get del valor
del contador y
tráelo a través de un nodo add. Añadiremos uno y luego lo
conectaremos al nodo set. Entonces estamos tomando el número de contador
actual, agregándole uno, lo que hace dos, y lo
guardaremos en la variable
con el nodo set. Siguiente ejecución, obtenemos de
nuevo
el valor del contador , que ahora es dos. Le agregaremos uno, lo que
hace tres y así sucesivamente. Así que recreamos la nota
do básicamente. Vamos a darle una carrera e
increíble. Funciona perfectamente. Ahora, me gustaría agregar una extensión más
a la función, pero eso va a
ser una tarea para ustedes. Te voy a dar la solución
en la siguiente lección otra vez. Entonces quiero que ambos pines cambien
sus colores de manera diferente. pin uno va de verde
a amarillo a rojo, pero el pin dos debe ir al azul, morado y al naranja
o algo más. Te dejaré esa elección creativa de
color a ti. Pero asegúrate de que se ejecuta
a través de la misma función. Buena suerte con eso, y nos
vemos en la siguiente lección.
10. Mejores prácticas de organización del blueprint: Echemos un
vistazo a la solución. Lo que tuvimos que hacer era crear
tres parámetros de entrada más, variables del
tipo color lineal. Yo nombré a estos colores
uno, dos y tres. Y en lugar de establecer estos colores en su
respectiva variable, conectaremos esas entradas. Después volviendo
al gráfico de eventos, ahora
podemos establecer los colores para cada instancia
de la función. Entonces el primero
será el verde estándar, amarillo y rojo, y
para el segundo pin, será azul,
morado y naranja. Y cuando ejecutamos la
simulación, funciona. Entonces así es como
funcionan las funciones y cómo aún
puedes tener
parámetros específicos dinámicos. Y esta lección
no va a crear mucho, pero quizás una buena idea
para darle a tu cerebro un poco de descanso después de
toda esta nueva información. Entonces, en cambio, vamos a
limpiar un poco nuestro plano. Ahora bien, si entramos en nuestra función, empezamos a ver un desastre enorme. No es nada agradable
trabajar en esto. Entonces aquí hay algunas cosas
que podemos para empezar, puedes hacer doble clic
en una línea dos en un punto y luego arrastrar
ese punto alrededor, dándonos una mejor visión general de donde van las conexiones. Y lo bueno de una
función es que
también podemos elegir dónde deben estar las variables de
entrada. Entonces, desde el panel de detalles, voy a arrastrar el
objetivo hasta el fondo, lo que me permite
posicionar mejor
el nodo de color y la línea conectada a él agregando un punto
en él también. Obviamente podemos
seleccionar múltiples nodos y puntos para
moverlos juntos. También puedes seleccionar
un punto o un nodo y usar tus teclas de flecha
para moverlas Y así es como quieres
intentar asegurarte de que ninguna línea se superponga entre sí o vaya
detrás de otras notas. Si alguna vez necesitas
regresar para hacer ajustes, obtienes una
visión mucho mejor de lo que hace la lógica en tu plano en
lugar de tener que averiguar
a dónde está conectado
todo También me gusta ver tantas líneas
rectas como sea posible, y hay una
manera sencilla de hacerlo. Simplemente seleccione las
notas que desee alinear y presione
la tecla corta. P. Intenta hacer un hábito de esto mientras estás diseñando
tu estructura de nodos. Otra cosa que
también es un poco desordenada es cuando múltiples
líneas de conexión entran en el mismo nodo que con el color variable
establecido aquí Si tuvieras que hacer un
punto sobre uno de estos, puedes conectar el
otro a ese punto. Entonces, en vez de tener tres
líneas van a esta nota, ahora sólo tenemos una. Entonces estas son algunas de las
técnicas que podemos aplicar para limpiar la estructura del
plano, y es para todos diferentes qué tan lejos
quieren llegar con esto Al trabajar en un proyecto
real, mi TOC siempre entra en y quiero que todo
esté perfectamente alineado Bien, una última cosa que
podemos hacer es agregar comentarios, y para planos más grandes, esto será súper importante Imagina tener cientos si no miles de notas en
un solo plano, y quieres hacer un
cambio en un sistema específico ¿Dónde volví a hacer eso? Bueno, seleccionas un montón
de notas y presionas la tecla Ci para agregar un cuadro de
comentarios a su alrededor. Y aquí, por ejemplo,
sería el contador de aciertos. Puedes cambiar el tamaño de ese cuadro de comentarios, y si lo mueves, todo
dentro también se moverá Cuando se selecciona, también obtenemos algunas opciones en un panel de detalles. A partir de aquí,
en realidad puedes elegir si
quieres que las notas del interior
se muevan con ella o no. Se puede cambiar el tamaño
del texto común, e incluso podemos
cambiar el color. Y uso mucho ese
etiquetado de color. Si estás haciendo un videojuego, podrías tener toda
la lógica de habilidad, tener comentarios verdes, hacer toda la lógica de combate, comentarios
rojos, movimiento, preps
azules, etcétera Puede ver instantáneamente qué tipo de lógica tiene ese grupo
de nodos. Te recomiendo encarecidamente
que hagas uso de eso. Y por último, podemos agregar comentarios a notas individuales o líneas de
conexión. Si seleccionas una nota, verás que este pequeño
toggle aparece en la parte superior. Al hacer clic en él, se le permite
agregar un comentario a esa nota. Por ejemplo, cambie el color base del
material. Para notas no convencionales, tener ese comentario personalizado
realmente podría ayudarte a Y siempre puedes ocultarlo
alternando el cuadro de comentarios
o mostrándolo de nuevo. Siempre recuerda
lo que tecleaste aquí. Entonces, si no quieres el
lío de todos estos comentarios, pero sí quieres
alguna información ahí para la futura
referencia, eso es posible. También me gusta usarlo mucho en puntos de
anclaje y las líneas de
conexión, sobre todo cuando recorren una distancia lejana o termino
con tantas líneas diferentes. Me ayuda a
hacer un seguimiento de lo que están conectados y
para qué propósito. Entonces estos son algunos de
los conceptos básicos para mantener tu plano limpio
y organizado Alinea nodos usando el atajo, crea puntos de anclaje para guiar mejor tus
líneas de conexión y finalmente agrega cuadros
comunes alrededor de
grupos de notas
o un solo nodo. Y con eso, hemos llegado
al final de esta clase. Ahora, me queda una lección de
conclusión final con un gran ejercicio para practicar todas las cosas
que has aprendido.
11. Proyectos finales y conclusión: En primer lugar, felicitaciones
por terminar esta clase. Ya estás oficialmente
listo para comenzar a hacer planos dentro del motor
Unreal Y aunque solo he
arañado la superficie, tienes un fuerte conocimiento
fundamental ahora
tienes un fuerte conocimiento
fundamental de cómo funcionan los planos A partir de aquí, podrás
seguir experimentando, explorar y aprender
nuevas técnicas. Seguir los tutoriales de YouTube te
irá mucho más fácil ahora ya que entiendes mejor
por qué
se usan notas específicas y cómo
están conectadas. La forma en que
aprendí a entender programación y los planos
era simplemente pensar algo que quería
crear y luego
probar varias notas y depurar
hasta que lo conseguí funcionar Y usar Hechipt
me ayuda a empujar en la derecha a veces. No, si
es para aprender, trata de evitar esos
tutoriales que solo conectan notas sin
explicar lo que hacen. Realmente no
aprendes mucho de eso. Entonces aquí tienes una tarea final, un ejercicio para entrenar todo lo
que has aprendido. Y tengo dos tareas. Puedes elegir el que se ajuste a lo que usas UnrelEngine, o puedes hacer El primero es para el desarrollo de
juegos, y el otro es
para un render de película. Entonces, para el plano de
desarrollo del juego, me gustaría verte crear un juego de plataformas
como en Squid Game, donde tu personaje
tiene que llegar
al otro lado
saltando sobre estas fichas Ahora, una de cada fila de
fichas caerá. Entonces, es un juego
basado en pura suerte saltar tres veces
seguidas sobre la ficha correcta, y hacerlo más difícil
para el jugador, cada vez que ejecutamos el juego, las fichas que
caerán son aleatorias Entonces cada nueva instancia
del juego va
a ser diferente. Ten en cuenta que una
de cada baldosa en una fila necesita quedarse quieta y la
otra necesita caerse. Cuando el jugador cae,
la pantalla pasa a este color rojo desaturado Pero cuando lleguemos al
final, estallará el confeti. Aquí tienes, nuevamente, una visión general
de la tarea y trata de crear esto con las notas lo más
mínimas posible. El archivo del proyecto se puede
descargar si te quedas atascado. Pero recuerda, hay
múltiples formas de hacer esto, y en realidad no hay
una manera correcta o incorrecta. Entonces, si lo
lograste y lo comparas con el mío, tómalo con un grano de sal. Buena suerte. La segunda asignación
es para un render de película. Tuve que mantenerlo muy
simple porque
no puedo compartir un proyecto
con un montón de activos, así que creé un bosque
a partir de formas simples. También creé una secuencia de niveles
con un movimiento de cámara. Cuando entramos en la simulación
a intervalos aleatorios, estos troncos de árboles
se iluminan y caen lentamente Esto es completamente dinámico
creado con un plano. Así que cada vez que ejecuto la simulación,
va a ser diferente. Esto tardaría días
en animarse realmente en el secuenciador, pero con la ayuda
de un plano, pude crear
esto en solo No te excites demasiado todavía. Crear esto es mucho más difícil que
el juego de plataformas. Vas a
tener que hacer uso de algunas notas que
no hemos visto en esta clase. Así que trata de pensar lógico. Revisa la lista de notas para ver si puedes encontrar lo
que buscas. Aquí una vez más, una visión general
de lo que se necesita un árbol simple
que consiste en un cilindro y un cono. Y, por supuesto, también
puedes usar un modelo de un árbol real
si te gusta eso, y en un momento aleatorio en el tiempo, el árbol o una parte del
árbol necesita iluminarse. Eso se hace en el material, y luego lentamente el
árbol debe caerse. Es un verdadero desafío, así
que está bien si usas HiPT para esto o echas un vistazo
al archivo del proyecto Esta es definitivamente
una tarea de siguiente nivel. En ambos archivos de proyecto, he agregado comentarios para explicar las notas que uso
y lo que hacen. Entonces todas las respuestas están ahí dentro. Pero trata de
crearlo primero sin echar vistazo al proyecto Me gustaría darle las gracias
tanto por ver, y realmente espero que
hayan disfrutado de esta clase. Te deseo todo lo mejor en
tu viaje de motor Unreal y buena suerte con las
tareas. Mantente creativo.