‫Hola y bienvenido.
‫En esta lección, vamos a hacer que la condición de victoria funcione para que pueda matar a todos los
‫enemigos en mi nivel y me mostrará esta pantalla de victoria.
‫HAREL Vamos a sumergirnos y ver cómo se hace.
‫Por eso, nos gustaría que nuestro jugador pudiera ganar este juego.
‫De momento no pueden.
‫Entonces, ¿cómo vamos a hacer eso?
‫Bueno, podrías hacerlo de varias maneras.
‫Uno de ellos sería cuando se llama Pawn Killed y el peón no es el controlador de juego.
‫Pero luego podríamos restar de una variable que dice cuántos aires hay en el mundo, cuántos tenemos que
‫matar.
‫Y luego, cuando eso llega a cero, podemos terminar el juego a favor del jugador.
‫Sin embargo, creo que es un poco frágil porque requiere que pongamos cuántos enemigos hay en el mundo en dos lugares,
‫esencialmente debe estar en el modo de juego, pero también debe estar en el mundo cuando colocas
‫el enemigos caídos y esos dos pueden perder la sincronización, y eso va a causar algunos
‫problemas.
‫Entonces, la forma en que preferiría hacer esto es simplemente decir, contemos todos los enemigos en el mundo cada vez que se mata un peón, hagamos
‫un recuento, un recuento de todos los A. YO. y ver cuáles siguen
‫vivos.
‫Si alguno de ellos todavía está vivo, entonces no vamos a terminar el juego todavía.
‫Coloque el juego no ha terminado.
‫Pero si todos están muertos y el controlador de juego no, entonces el jugador ha ganado.
‫Entonces, para que podamos hacer esto, necesitamos tener una forma de consultar al controlador de un jugador si está muerto
‫o no.
‫Lo siento, quiero decir, el controlador.
‫Así que busquemos nuestro controlador de tirador dot H.
‫Y lo que queremos hacer aquí es crear un nuevo método público que nos permita consultar si está muerto o
‫no.
‫Así que vamos a hacer un grupo basado, está muerto, y va a ser un contraste porque no debería cambiar lo
‫que realmente sucede en el controlador cuando se llama.
‫Y podemos seguir adelante y crear una implementación.
‫Ahora deberíamos estar controlando un... que pueda decirnos si está muerto o no.
‫Si vamos y echamos un vistazo a eso de nuevo, tenemos un vistazo al personaje del tirador, que es un --.
‫Recuerde, ya tenemos esta función de contacto muerto allí.
‫Básicamente, lo que queremos hacer es pasar la solicitud al tirador que controlo ahora.
‫Sí.
‫Una cosa es que podrías decir en el modo KML de todos los juegos, podrías agarrar
‫el controlador, agarrar el... que el que está controlando, hacer un lanzamiento y luego verificar si eso... está muerto.
‫Sin embargo, generalmente esa no es la mejor práctica porque significa que si de repente algo cambia sobre
‫cómo calculamos la muerte o el controlador de aire va a controlar diferentes tipos de..., de repente tenemos que ir y
‫cambiar el modo de juego, que no tener sentido.
‫Por lo tanto, es mejor hacer esto y hacer que la transmisión dentro de los controladores aéreos sea más sólida.
‫Nos impide jugar con el interior de la clase de otra persona, lo que generalmente significa que
‫podemos restringir cuándo cambian las cosas, podemos restringir cuántas clases tenemos que tocar, actualizar y
‫cambiar, lo que siempre es bueno.
‫Entonces, lo que vamos a querer hacer es obtener el, y lanzar el, para asegurarnos de que sea un personaje de disparos.
‫Así que hagamos un reparto.
‫Va a ser para un tirador.
‫El personaje y creo que vamos a tener que hacerlo tiene que incluir en la parte superior del control visual para asegurarnos de
‫que conocemos el personaje de los brotes de esa manera.
‫Y luego vamos a hacer el lanzamiento haciendo un get -- y vamos a querer almacenar esto en una variable
‫para que sea un tirador.
‫Puntero de carácter llamado llamémoslo controlado.
‫Personaje.
‫No puedo simplemente llamarlo carácter porque eso ya es una variable en el controlador de aire y poner un punto y coma al
‫final de la línea y vamos a verificar si esto es nulo o no.
‫Entonces, el carácter de control no es igual al puntero nulo, entonces deberíamos poder consultar su estado en cuanto a si está
‫muerto o no.
‫Entonces deberíamos poder devolver ese carácter controlado.
‫Está muerto.
‫Básicamente, reenviamos la solicitud a nuestro personaje de control.
‫Si ese personaje de control es un personaje de disparos.
‫Sin embargo, tenga en cuenta que aquí no tenemos una declaración de devolución.
‫En el otro caso, necesitamos tener una devolución.
‫Siempre tiene que haber un retorno.
‫Si el valor devuelto no es nulo.
‫Por lo tanto, debemos colocar una declaración de devolución aquí fuera de la declaración if para detectar el caso en el que aún
‫no hemos regresado dentro de la declaración if.
‫Y aquí solo vamos a decir, ¿este personaje está muerto?
‫Bueno, sí, esencialmente, si no es tan cierto, básicamente está muerto.
‫Si no tenemos un peón, si no estamos controlando un peón, entonces, esencialmente, este controlador aéreo está
‫prácticamente muerto para nosotros.
‫Y eso podría pasar porque recuerda que el peón se separa de su controlador cuando muere.
‫Así que vamos a volver al modo de juego y ¿qué vamos a querer hacer aquí?
‫Esencialmente, lo que queremos hacer es un ciclo completo sobre todo el i.
‫El tirador, i.
‫En el mundo.
‫Y con eso for loop.
‫¿Qué queremos hacer?
‫Queremos ver que está muerto.
‫Básicamente y o básicamente no está muerto.
‫Y si alguno de ellos no está muerto, inmediatamente sabemos que no tenemos que revisar todo el aire.
‫Si solo un hombre reina con vida, entonces el juego no ha terminado.
‫Así que podemos hacer lo que se conoce como un retorno anticipado, que probablemente
‫haya visto antes, que simplemente saldrá de esta función sin ejecutar más código en ella.
‫Entonces, todo después de este retorno temprano dejará de ejecutar el ciclo completo, dejará de ejecutar cualquier cosa después
‫de que deje de ejecutarse.
‫Pero luego podemos decir que si logramos superar con éxito este ciclo completo sin que regrese antes
‫de tiempo, lo que significa que no hay aliados vivos en el mundo, entonces debemos continuar y finalizar el juego.
‫Simple como eso.
‫Ahora, una parte del rompecabezas que debemos analizar aquí son las llamadas al final del juego.
‫El juego ha terminado en el controlador del reproductor.
‫Echemos un vistazo a cómo el controlador del jugador tirador se ocupa actualmente de esto.
‫Si vamos a su CP, lo que vemos actualmente es que actualmente ignora por completo que B es el ganador
‫actualmente ignora si es el ganador o no.
‫Entonces, lo que tenemos que hacer es decir si B es ganador.
‫Entonces vamos a hacer otra cosa diferente.
‫Vamos a mostrar nuestra pantalla perdida.
‫Así que corte estas líneas aquí que son responsables de mostrar la pantalla perdida.
‫Ponga eso en la declaración de salida y reiniciaremos en ambos casos de todos modos.
‫Así que actualmente el ser es el ganador.
‫¿Qué vamos a hacer?
‫Bueno, seguiremos adelante y probablemente también crearemos una pantalla contra el viento, lo cual será bastante
‫sencillo.
‫Pasamos a nuestro archivo de encabezado para que la sesión reproduzca un controlador.
‫Podemos duplicar, perder clase de pantalla y hacer una clase de pantalla ganadora.
‫Y aquí también podemos seguir adelante y luchar contra esto.
‫Un mini reto para ti.
‫Tal vez siga adelante y configúrelo para que pueda hacer una pantalla ganadora.
‫Kay, bienvenida de nuevo.
‫Así que espero que le hayas dado una oportunidad.
‫Simplemente vamos a entrar y poner un parabrisas aquí en lugar de todo el texto del anuncio perdido, esencialmente todo
‫lo demás.
‫Al igual que.
‫Vamos a seguir adelante y compilar esto, luego iremos al editor y encontraremos la clase de
‫controlador de jugador.
‫Y ahora deberíamos ver que hay una clase de parabrisas vacía.
‫Y lo que vamos a hacer es ir a la interfaz de usuario y voy a duplicar la pantalla perdida
‫para llamar al parabrisas.
‫Y podrías crear el tuyo desde cero si quisieras.
‫Pero lo voy a usar de manera muy similar, excepto que voy a cambiar el color por verde.
‫Y conviértelo en un tú ganas en lugar de un tú pierdes.
‫Porque la lógica de reinicio será efectivamente la misma.
‫Alguna razón por la que restableció mi color es que solo voy a ir y configurar la pantalla a color nuevamente.
‫Bien, eso es genial.
‫Pero todavía tenemos este trozo de pseudocódigo en el modo de juego KML que no se ha completado.
‫Y eso es porque es su desafío calcular la ganancia.
‫Complete el pseudocódigo, use el rango activo T de abajo en esa clase para ayudarlo.
‫Use la nueva función que creamos en el controlador y pruébela.
‫Mira si tu parabrisas aparece cuando matas todo el aire del mundo.
‫Así que lo dejaré con el pseudocódigo en su pantalla para que lo vea.
‫K Bienvenido de nuevo.
‫Entonces, comencemos con el ciclo for.
‫Así que voy a hacer un ¿para qué vamos a hacer un bucle?
‫No es un controlador esta vez.
‫Va a ser el controlador aéreo tirador.
‫Así que tenemos que hacer hash para incluir eso.
‫Va a ser el tirador.
‫Controlador Aéreo Don H.
‫Y eso significa que vamos a recorrer una tienda de controladores de Shooter II para simplemente enfriar
‫el controlador, los pantalones cortos, y luego vamos a hacer un rango de actor t nuevamente que un controlador de aire de tirador.
‫Necesitamos hacer que estos dos tipos coincidan y luego obtener el mundo.
‫Así que lo estamos haciendo en este nivel.
‫Y luego tenemos el cuerpo del ciclo completo aquí donde vamos a preguntar si no está muerto.
‫Entonces, si no, Controller Arrow está muerto.
‫Básicamente diciendo que nos aseguremos de que no estemos muertos.
‫Y si no está muerto, entonces seguimos adelante y volvemos a este regreso temprano porque sabemos que el
‫juego no puede terminar todavía.
‫Y de lo contrario, si superamos todo el ciclo completo sin regresar, debemos finalizar el juego porque el
‫jugador debe haber ganado, matado a toda la IA en el nivel.
‫Entonces, en este caso, podríamos hacer un juego final.
‫Verdadero.
‫Porque el jugador tiene uno.
‫Y eso debería notificar a todos los controladores de jugadores y controladores aéreos.
‫Frio.
‫Así que repasemos y compilemos eso, en primer lugar.
‫Luego voy a ir a Unreal y hacer una obra.
‫Por alguna razón, mi editor cree que estoy en esta operación de edición de color especificada, así que
‫voy a cerrarla y reiniciarla.
‫Ahora que está arrancado gratis, voy a seguir adelante y darle al play y me van a matar.
‫En primer lugar, sí, todavía pierdo.
‫Genial.
‫Ahora veamos si puedo matar a este tipo antes de que me mate a mí.
‫Vamos.
‫Bum, bum, bum, bum, bum, bum, bum.
‫Pierdo demasiado rápido.
‫Vamos a buscar el arma de nuevo y listo.
‫Tenemos ese daño del arma realmente alto.
‫Para fines de prueba, voy a bajar el daño a quizás 20 esta vez.
‫Así que sigue siendo rápido, pero no tan rápido.
‫Ve a jugar y golpea a este tipo unas cuantas veces.
‫Y lo que vimos allí fue que en realidad gané porque el nivel se reinició.
‫Así que si voy y mato a este tipo de nuevo, verás que no pasa nada.
‫Está diciendo en el registro de mensajes que se llamó con una clase nula.
‫Y la razón de eso, si vamos a un controlador de jugador de disparos BP, nuevamente, pueden ver que no
‫hemos conectado nuestro parabrisas.
‫Una cosa que olvidé hacer para poder compilar, guardar y jugar.
‫Y ahora, con suerte, si mato a este tipo a New Doom, gano y voy a reiniciar en 5 segundos.
‫Y quiero mostrarles que lo mismo es cierto.
‫Si pongo más controladores de jugador en el mundo, será necesario que los mate a ambos.
‫Así que vayamos y traigamos al personaje del tirador aquí.
‫Y este va a ser mi segundo enemigo a matar.
‫Así que mata a este tipo.
‫Auge.
‫Y no ha ganado.
‫Luego me acerco al segundo chico.
‫Auge.
‫Y ahora tengo uno.
‫Porque eliminé todo el alfa, y no tuvimos que ir y cambiar ninguna variable para hacer eso.
‫Porque I for loop cuenta todos los vivos cada vez desde cero.
‫Así que actualmente estamos viviendo en un mundo bastante silencioso.
‫Entonces, en la próxima lección, quiero comenzar a ver un poco cómo podemos hacer algo de audio.
‫Te veré allá.