‫Oye, bienvenido de nuevo.
‫En este video, vamos a crear un temporizador de cuenta regresiva para que el jugador sepa cuánto
‫tiempo tiene que esperar antes de que pueda comenzar a mover su tanque y explotar cosas.
‫Así que vamos a mostrar el tiempo que queda en el temporizador de cuenta regresiva hasta que comience el juego.
‫Así que saltemos al editor y comencemos a hacer esto.
‫Ahora estoy aquí en nuestro Widget Blueprint, BP Start Game Widget, y este es el editor de widgets que hemos
‫visto.
‫Pero es posible que haya notado que en la parte superior derecha hay dos pestañas aquí, una que dice diseñador.
‫Eso es en lo que estamos ahora y uno que dice gráfico.
‫Y si hace clic en el gráfico, se parece más a un gráfico de eventos de modelo con nodos de eventos y una pestaña
‫de mi modelo aquí con varias secciones.
‫Y aquí es donde podemos hacer una lógica de planos.
‫Ahora tenemos tres nodos aquí.
‫Tenemos preconstrucción de eventos.
‫Esto es similar a un constructor en C++ y luego tenemos una construcción de eventos que es similar a comenzar a jugar.
‫Así que aquí es donde es más apropiado hacer las cosas al comienzo del juego porque todas
‫las clases relevantes se construyen en este punto y luego tenemos el evento marcado.
‫Y al igual que la función tick en C++, aquí tenemos acceso a la hora Delta.
‫Ahora no vamos a usar los dos primeros nodos, así que los resaltaré y los eliminaré
‫y usaremos la tecnología de eventos.
‫Ahora, nuestro objetivo para este video es mostrar cuánto tiempo queda y ahora tenemos un temporizador de cuenta
‫regresiva de tres segundos en C++.
‫Creamos un controlador de temporizador y usamos el administrador de temporizador mundial para iniciar un temporizador.
‫Todo lo que hacemos aquí en planos es independiente de eso.
‫Estamos creando un sistema de lógica completamente diferente aquí, y simplemente coincidirá con el temporizador que
‫configuramos en C++.
‫Así que todo esto es diferente e independiente del lado de C++.
‫Ahora, aquí en el widget de juego de inicio de WB, podemos agregar variables al igual que podemos agregar variables en C++ aquí
‫mismo.
‫Debajo de mi plano, puedo hacer clic en agregar y seleccionar la variable y ahora tengo una variable llamada new var
‫underscore zero.
‫Y aquí abajo, en el panel de detalles, que es confuso en el lado izquierdo, ahora tenemos el nombre de la variable
‫y el tipo de variable.
‫Ahora está resaltado de forma predeterminada porque se espera que cambie el nombre de sus variables tan pronto
‫como las cree.
‫Así que no necesitamos este nombre predeterminado.
‫Vamos a llamar a esto nuestro propio nombre.
‫Voy a llamarlo Cuenta regresiva.
‫Y Countdown será una variable flotante Y porque hará un seguimiento de cuánto tiempo
‫nos queda.
‫Voy a comenzar con 3 segundos y en cada cuadro voy a restar la cantidad de tiempo que
‫pasó desde el cuadro anterior.
‫Entonces tenemos una cuenta regresiva que va de tres hacia abajo.
‫Ahora voy a hacer clic en Compilar.
‫Ahora, tan pronto como haga clic en compilar, puedo darle un valor predeterminado desplazándome hacia abajo en los detalles.
‫Panel, está configurado en cero de forma predeterminada.
‫Voy a configurarlo en tres de forma predeterminada ya que tenemos una cuenta regresiva de tres segundos.
‫El tiempo ahora tal como está, esto es solo un flotador llamado Countdown con un valor de tres.
‫En realidad no lo hemos cambiado, pero en cada cuadro del juego, me gustaría restar el tiempo Delta, que
‫es la cantidad de tiempo que ha pasado desde el cuadro anterior.
‫Y de esa manera, Countdown actualizará constantemente el decremento por tiempo Delta para que tengamos un conteo de tiempo
‫de ejecución.
‫Ahora, así es como podemos hacer eso.
‫Tomaré una cuenta regresiva de nuestra pestaña Mi Blueprint, haré clic y la arrastraré aquí al gráfico de eventos y
‫la soltaré.
‫Ahora, en cuanto lo libere, tengo dos opciones.
‫Obtenga la cuenta regresiva y configure la cuenta regresiva.
‫Si hago clic en Obtener cuenta regresiva, ahora tengo la nota de cuenta regresiva y si hago clic y arrastro fuera de
‫su salida, esto me da acceso al valor de Cuenta regresiva.
‫Ahora también puedo hacer clic en Cuenta regresiva, arrastrar y hacer clic en Establecer cuenta regresiva y tenemos un nodo establecido.
‫Hemos visto estos dos antes.
‫En videos anteriores, el pin de entrada para el colocador nos permite conectar un valor flotante y luego la cuenta regresiva
‫se establecerá en ese valor.
‫Entonces, ¿cómo restamos el tiempo Delta de Countdown y luego lo establecemos en el valor de cuenta regresiva?
‫Bueno, podemos tomar nuestro nodo de cuenta regresiva aquí y puedo hacer clic y arrastrarlo y escribir el símbolo
‫menos en mi teclado y elegir el nodo Restar.
‫Si selecciono eso, ahora tengo un nodo flotante menos flotante o un nodo de resta.
‫Verá que dice Target is Kismet Math Library.
‫Eso le dice que Kismet Math Library sustenta este nodo.
‫Todos los nodos tienen código C++ en su núcleo.
‫Entonces, lo que hace este nodo es tomar dos entradas.
‫Se necesita una entrada flotante.
‫Y se necesita una segunda entrada flotante.
‫Ahora, no va a cambiar ninguna de las variables que estamos pasando.
‫Simplemente realizará un cálculo y devolverá ese valor que es el resultado de la resta.
‫Ahora me gustaría tomar la cuenta regresiva y restarle el tiempo Delta para poder tomar el pin de salida llamado en
‫el tiempo Delta del nodo de marca de evento y conectarlo directamente a la segunda entrada en mi nodo de
‫resta.
‫Así que lo que estoy haciendo es tomar la cuenta regresiva menos el tiempo delta y luego obtengo el resultado.
‫Ahora, inicialmente, la cuenta regresiva es de 3 segundos y el tiempo delta es un valor muy pequeño.
‫Es la cantidad de tiempo en segundos que ha pasado desde el último cuadro.
‫Así que esto sería una pequeña cantidad.
‫Entonces, lo que resultará la primera vez que se ejecute esto es tres menos una pequeña cantidad.
‫Y lo que me gustaría hacer es establecer el valor de la cuenta regresiva igual a ese resultado, cada fotograma.
‫Así que cada cuadro de cuenta regresiva se va restando poco a poco.
‫Y de esa manera mantendrá la cuenta regresiva de 3 segundos hacia abajo.
‫Así que tomaré el resultado de retorno de este nodo de resta y lo conectaré a la entrada para el
‫nodo de cuenta regresiva establecido.
‫Ahora, esto no va a hacer nada si no conecto el cable de ejecución del evento, marque el pin de ejecución
‫con el pin de entrada para configurar la cuenta regresiva.
‫Así que ahora lo que esto está haciendo es que cada fotograma reste el tiempo Delta de la cuenta regresiva,
‫tomando ese resultado y configurando la cuenta regresiva a ese nuevo valor.
‫Ahora podemos ver cómo se comporta esto con un nodo de cadena de impresión.
‫Así que voy a arrastrar fuera de la cadena de impresión de tipo setter y obtener un nodo de cadena de impresión.
‫Y luego me gustaría imprimir el valor de la cuenta regresiva para poder tomar el valor de retorno del setter, que nos
‫dará el nuevo valor de la cuenta regresiva de cada cuadro y lo conectará al nodo de cadena de entrada.
‫Y fíjate que veo convertir un flotante en una cadena y si lo suelto ahora obtengo un nodo de conversión que
‫tomará mi flotante, lo convertirá en una cadena, y ahora podemos imprimirlo en la pantalla.
‫Ahora veamos qué pasa si le doy al play.
‫Mira eso.
‫Vemos que el conteo está documentado en cada cuadro y estamos llenando la pantalla con el valor de la cuenta regresiva y
‫se vuelve cada vez más negativo.
‫Así que este es el primer paso para que nuestro temporizador de cuenta regresiva funcione.
‫Voy a cerrar esto ahora.
‫Vimos que estamos imprimiendo un valor flotante que tiene un montón de puntos decimales.
‫Y una vez que imprimimos el valor en la pantalla, realmente no queremos puntos decimales, nos gustaría un número entero.
‫Así que me gustaría ver la cantidad de segundos que quedan sin esos dígitos finales a la derecha del punto
‫decimal.
‫Así que lo que necesito es un número entero.
‫Bueno, lo que puedo hacer es eliminar este nodo de conversión y tomar
‫el resultado del configurador de cuenta regresiva y escribir C E I'll seal, que es la abreviatura de seal.
‫La operación de sellado tomará un valor flotante y lo redondeará al entero más cercano.
‫Entonces, si estamos en tres, bueno, no hay necesidad de redondear.
‫Va a devolver un número entero con un valor de tres.
‫Pero si estamos en 2. 9, por ejemplo, entonces el nodo del sello lo redondeará a tres.
‫Y a medida que ese valor disminuya, continuará devolviendo tres hasta que bajemos a dos.
‫Así que siempre vamos a obtener un número entero.
‫Ahora puedo conectar esto en la cadena de impresión y verá que dice Convertir entero en cadena.
‫Así que ahora el nodo del sello está tomando un valor flotante, redondeándolo al entero más cercano y devolviendo ese valor
‫entero.
‫Así que ahora si le doy al play, veremos que nos sale 3 a 1 y cero.
‫Y, por supuesto, continúa bajando porque nunca le decimos que se detenga.
‫Pero este es un gran comienzo porque ahora tenemos acceso a la cantidad de segundos restantes y
‫podemos imprimir algo en la pantalla como respuesta.
‫Entonces, ¿cómo vamos a imprimir el mensaje correcto en la pantalla?
‫Lo que me gustaría hacer es cuando nos queden 3 segundos, me gustaría que el widget diga: Prepárate.
‫Cuando nos queden 2 segundos, me gustaría que mostraras el número dos.
‫Cuando nos quede un segundo, me gustaría mostrar el número uno.
‫Y cuando nos queden 0 segundos, me gustaría que el texto diga Ir.
‫Bueno, podemos hacer esto con un nodo de conmutación. Los nodos de conmutación pueden activar varios tipos diferentes, incluido
‫INT.
‫Ahora, la forma en que funciona un nodo switch on int es que tiene una cantidad de casos para una cantidad de valores.
‫Y según el valor que pasemos a este nodo de conmutación, hará una de varias cosas.
‫Por ejemplo, si pasamos el valor entero tres, obtenemos el caso tres, lo que dará como resultado que se
‫lleve a cabo la cosa tres.
‫Por lo tanto, el nodo final del interruptor tiene varias líneas de ejecución y solo ejecutará una de ellas en función de.
‫la entrada
‫Ahora podemos usar un interruptor en el nodo int y pasar un número entero, por ejemplo, el resultado de nuestro nodo de sello.
‫Así que voy a eliminar la cadena de impresión y voy a arrastrar fuera del nodo de cuenta regresiva
‫y escribir switch on INT y seleccionar switch on int.
‫Ahora observe que toma una entrada de tipo entero.
‫Voy a pasar el valor de retorno del nodo del sello y también notaré que tenemos una opción de agregar pin.
‫Si hacemos clic en eso, verá que obtenemos un pin predeterminado además de la salida que dice cero.
‫Lo que esto dice es que si conectamos alguna lógica de modelo del pin de ejecución cero, entonces esa lógica
‫se ejecutará.
‫Si el valor de entrada pasado es cero, y si no está bien, se establecerá de forma predeterminada en este pin de
‫ejecución.
‫Ahora podemos hacer clic en agregar pin nuevamente y ahora tenemos cero y uno.
‫Entonces podemos tener dos líneas de ejecución, una para cero y otra para uno.
‫Y luego, si la entrada no es cero o uno, entonces se ejecutará lo que esté conectado por defecto.
‫Voy a hacer clic en el signo más dos veces más.
‫Así que tenemos los casos del cero al tres y un caso por defecto.
‫Así que ahora depende de nosotros arrastrar esto y agregar algo de lógica de modelo que nos gustaría ejecutar en
‫función del valor pasado que estamos obteniendo de este nodo SEAL.
‫Y eso es lo que me gustaría que hicieras para tu desafío.
‫Me gustaría que imprimiera diferentes mensajes para cada caso usando un nodo de cadena de impresión para el valor tres que
‫puede imprimir prepárese usando un nodo de cadena de impresión.
‫Para el caso dos, simplemente puede imprimir el valor dos para el caso uno, puede imprimir uno y
‫para el caso cero puede imprimir ahora para el caso predeterminado, simplemente imprima el juego de inicio con nuestro nodo de cadena de
‫impresión.
‫Pause el video y agregue un montón de nodos de cadena de impresión en el gráfico de eventos ahora.
‫Bueno.
‫Así que me gustaría seguir adelante y usar un nodo de cadena de impresión y voy a comenzar aquí en la parte
‫inferior para el caso predeterminado y voy a escribir cadena de impresión.
‫Y la cadena que me gustaría imprimir es iniciar el juego.
‫Ahora, aquí hay un atajo.
‫Si no lo sabía con el nodo de cadena de impresión seleccionado, puedo pasar el mouse por otro
‫lugar en el gráfico de eventos y presionar el control dx y eso copiará el nodo que había seleccionado.
‫Voy a conectar el caso de tres a este nodo de cadena de impresión y voy a escribir prepárate.
‫Entonces, cuando la entrada al interruptor sea tres, veremos.
‫Prepárate, impreso en la pantalla.
‫Ahora voy a controlar DX nuevamente y conectar esto a los dos casos y para dos simplemente voy a imprimir dos ahora
‫voy a copiar el nodo de cadena de impresión y para uno, voy a imprimir el valor uno.
‫Y, por último, un último nodo de cadena de impresión aquí se conectará al caso cero y
‫este dirá "vamos".
‫Bueno.
‫Así que sigamos y compilemos esto y voy a presionar reproducir y ahora veo prepárate, dos, uno
‫y listo.
‫Y luego, por supuesto, vemos el inicio del juego una vez que se nos acaba el tiempo.
‫Entonces, sabemos que el valor está disminuyendo y se vuelve cada vez más negativo, pero ese es el caso predeterminado para
‫nuestro interruptor y ahí es cuando sabemos que realmente podemos comenzar el juego.
‫Así que este es el primer paso para mostrar nuestro temporizador de cuenta regresiva en nuestro widget.
‫Todavía no vamos a cambiar el texto que dice Prepárate, pero lo haremos pronto.
‫Entonces, en este video, creamos Countdown Logic y lo agregamos a nuestro modelo de widget.
‫Usamos una cadena de impresión para mostrar nuestros valores de cuenta regresiva e imprimir un mensaje diferente.
‫Basado en nuestros valores de cuenta regresiva.
‫Todavía tenemos que configurar el texto en el widget, y lo haremos en el próximo video.
‫Te veré pronto.