﻿1
00:00:04,710 --> 00:00:05,580
‫Hola y bienvenido.

2
00:00:05,580 --> 00:00:10,890
‫En esta lección, vamos a hacer que la condición de victoria funcione para que pueda matar a todos los

3
00:00:10,890 --> 00:00:14,160
‫enemigos en mi nivel y me mostrará esta pantalla de victoria.

4
00:00:14,160 --> 00:00:16,320
‫HAREL Vamos a sumergirnos y ver cómo se hace.

5
00:00:17,830 --> 00:00:22,170
‫Por eso, nos gustaría que nuestro jugador pudiera ganar este juego.

6
00:00:22,180 --> 00:00:23,500
‫De momento no pueden.

7
00:00:24,040 --> 00:00:25,060
‫Entonces, ¿cómo vamos a hacer eso?

8
00:00:25,090 --> 00:00:27,020
‫Bueno, podrías hacerlo de varias maneras.

9
00:00:27,040 --> 00:00:32,710
‫Uno de ellos sería cuando se llama Pawn Killed y el peón no es el controlador de juego.

10
00:00:32,710 --> 00:00:39,280
‫Pero luego podríamos restar de una variable que dice cuántos aires hay en el mundo, cuántos tenemos que

11
00:00:39,280 --> 00:00:39,910
‫matar.

12
00:00:40,120 --> 00:00:43,750
‫Y luego, cuando eso llega a cero, podemos terminar el juego a favor del jugador.

13
00:00:43,840 --> 00:00:49,480
‫Sin embargo, creo que es un poco frágil porque requiere que pongamos cuántos enemigos hay en el mundo en dos lugares,

14
00:00:49,480 --> 00:00:54,160
‫esencialmente debe estar en el modo de juego, pero también debe estar en el mundo cuando colocas

15
00:00:54,160 --> 00:00:58,720
‫el enemigos caídos y esos dos pueden perder la sincronización, y eso va a causar algunos

16
00:00:58,720 --> 00:00:59,320
‫problemas.

17
00:00:59,860 --> 00:01:05,710
‫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

18
00:01:05,710 --> 00:01:11,740
‫un recuento, un recuento de todos los A. YO. y ver cuáles siguen

19
00:01:11,740 --> 00:01:12,910
‫vivos.

20
00:01:13,030 --> 00:01:16,390
‫Si alguno de ellos todavía está vivo, entonces no vamos a terminar el juego todavía.

21
00:01:16,640 --> 00:01:17,590
‫Coloque el juego no ha terminado.

22
00:01:17,920 --> 00:01:22,840
‫Pero si todos están muertos y el controlador de juego no, entonces el jugador ha ganado.

23
00:01:23,620 --> 00:01:29,170
‫Entonces, para que podamos hacer esto, necesitamos tener una forma de consultar al controlador de un jugador si está muerto

24
00:01:29,170 --> 00:01:29,920
‫o no.

25
00:01:30,100 --> 00:01:31,930
‫Lo siento, quiero decir, el controlador.

26
00:01:32,410 --> 00:01:35,770
‫Así que busquemos nuestro controlador de tirador dot H.

27
00:01:36,460 --> 00:01:41,740
‫Y lo que queremos hacer aquí es crear un nuevo método público que nos permita consultar si está muerto o

28
00:01:41,740 --> 00:01:42,280
‫no.

29
00:01:42,430 --> 00:01:49,270
‫Así que vamos a hacer un grupo basado, está muerto, y va a ser un contraste porque no debería cambiar lo

30
00:01:49,270 --> 00:01:52,660
‫que realmente sucede en el controlador cuando se llama.

31
00:01:53,530 --> 00:01:55,540
‫Y podemos seguir adelante y crear una implementación.

32
00:01:56,570 --> 00:02:01,740
‫Ahora deberíamos estar controlando un... que pueda decirnos si está muerto o no.

33
00:02:01,760 --> 00:02:07,730
‫Si vamos y echamos un vistazo a eso de nuevo, tenemos un vistazo al personaje del tirador, que es un --.

34
00:02:07,730 --> 00:02:12,020
‫Recuerde, ya tenemos esta función de contacto muerto allí.

35
00:02:12,230 --> 00:02:17,180
‫Básicamente, lo que queremos hacer es pasar la solicitud al tirador que controlo ahora.

36
00:02:17,480 --> 00:02:17,940
‫Sí.

37
00:02:17,960 --> 00:02:23,660
‫Una cosa es que podrías decir en el modo KML de todos los juegos, podrías agarrar

38
00:02:23,660 --> 00:02:30,110
‫el controlador, agarrar el... que el que está controlando, hacer un lanzamiento y luego verificar si eso... está muerto.

39
00:02:30,530 --> 00:02:36,350
‫Sin embargo, generalmente esa no es la mejor práctica porque significa que si de repente algo cambia sobre

40
00:02:36,350 --> 00:02:43,460
‫cómo calculamos la muerte o el controlador de aire va a controlar diferentes tipos de..., de repente tenemos que ir y

41
00:02:43,460 --> 00:02:46,840
‫cambiar el modo de juego, que no tener sentido.

42
00:02:46,850 --> 00:02:52,340
‫Por lo tanto, es mejor hacer esto y hacer que la transmisión dentro de los controladores aéreos sea más sólida.

43
00:02:52,670 --> 00:02:58,730
‫Nos impide jugar con el interior de la clase de otra persona, lo que generalmente significa que

44
00:02:58,730 --> 00:03:04,280
‫podemos restringir cuándo cambian las cosas, podemos restringir cuántas clases tenemos que tocar, actualizar y

45
00:03:04,280 --> 00:03:06,680
‫cambiar, lo que siempre es bueno.

46
00:03:07,490 --> 00:03:13,130
‫Entonces, lo que vamos a querer hacer es obtener el, y lanzar el, para asegurarnos de que sea un personaje de disparos.

47
00:03:13,130 --> 00:03:14,150
‫Así que hagamos un reparto.

48
00:03:14,660 --> 00:03:17,030
‫Va a ser para un tirador.

49
00:03:18,010 --> 00:03:23,200
‫El personaje y creo que vamos a tener que hacerlo tiene que incluir en la parte superior del control visual para asegurarnos de

50
00:03:23,200 --> 00:03:25,720
‫que conocemos el personaje de los brotes de esa manera.

51
00:03:26,230 --> 00:03:34,120
‫Y luego vamos a hacer el lanzamiento haciendo un get -- y vamos a querer almacenar esto en una variable

52
00:03:34,420 --> 00:03:36,790
‫para que sea un tirador.

53
00:03:37,030 --> 00:03:42,370
‫Puntero de carácter llamado llamémoslo controlado.

54
00:03:43,770 --> 00:03:44,490
‫Personaje.

55
00:03:46,000 --> 00:03:52,360
‫No puedo simplemente llamarlo carácter porque eso ya es una variable en el controlador de aire y poner un punto y coma al

56
00:03:52,360 --> 00:03:56,440
‫final de la línea y vamos a verificar si esto es nulo o no.

57
00:03:57,070 --> 00:04:03,730
‫Entonces, el carácter de control no es igual al puntero nulo, entonces deberíamos poder consultar su estado en cuanto a si está

58
00:04:03,730 --> 00:04:04,720
‫muerto o no.

59
00:04:05,140 --> 00:04:09,910
‫Entonces deberíamos poder devolver ese carácter controlado.

60
00:04:11,070 --> 00:04:12,120
‫Está muerto.

61
00:04:12,780 --> 00:04:16,170
‫Básicamente, reenviamos la solicitud a nuestro personaje de control.

62
00:04:16,500 --> 00:04:18,630
‫Si ese personaje de control es un personaje de disparos.

63
00:04:19,110 --> 00:04:22,260
‫Sin embargo, tenga en cuenta que aquí no tenemos una declaración de devolución.

64
00:04:22,260 --> 00:04:24,720
‫En el otro caso, necesitamos tener una devolución.

65
00:04:24,960 --> 00:04:26,580
‫Siempre tiene que haber un retorno.

66
00:04:26,850 --> 00:04:28,890
‫Si el valor devuelto no es nulo.

67
00:04:29,280 --> 00:04:35,370
‫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

68
00:04:35,370 --> 00:04:37,680
‫no hemos regresado dentro de la declaración if.

69
00:04:38,160 --> 00:04:40,890
‫Y aquí solo vamos a decir, ¿este personaje está muerto?

70
00:04:40,920 --> 00:04:46,230
‫Bueno, sí, esencialmente, si no es tan cierto, básicamente está muerto.

71
00:04:46,650 --> 00:04:52,200
‫Si no tenemos un peón, si no estamos controlando un peón, entonces, esencialmente, este controlador aéreo está

72
00:04:52,200 --> 00:04:53,610
‫prácticamente muerto para nosotros.

73
00:04:54,120 --> 00:05:00,090
‫Y eso podría pasar porque recuerda que el peón se separa de su controlador cuando muere.

74
00:05:01,110 --> 00:05:06,390
‫Así que vamos a volver al modo de juego y ¿qué vamos a querer hacer aquí?

75
00:05:07,080 --> 00:05:14,340
‫Esencialmente, lo que queremos hacer es un ciclo completo sobre todo el i.

76
00:05:14,340 --> 00:05:16,410
‫El tirador, i.

77
00:05:17,730 --> 00:05:19,050
‫En el mundo.

78
00:05:20,230 --> 00:05:22,120
‫Y con eso for loop.

79
00:05:22,690 --> 00:05:23,530
‫¿Qué queremos hacer?

80
00:05:23,740 --> 00:05:25,690
‫Queremos ver que está muerto.

81
00:05:27,400 --> 00:05:32,080
‫Básicamente y o básicamente no está muerto.

82
00:05:33,100 --> 00:05:39,320
‫Y si alguno de ellos no está muerto, inmediatamente sabemos que no tenemos que revisar todo el aire.

83
00:05:39,340 --> 00:05:44,080
‫Si solo un hombre reina con vida, entonces el juego no ha terminado.

84
00:05:44,080 --> 00:05:49,120
‫Así que podemos hacer lo que se conoce como un retorno anticipado, que probablemente

85
00:05:49,120 --> 00:05:54,180
‫haya visto antes, que simplemente saldrá de esta función sin ejecutar más código en ella.

86
00:05:54,190 --> 00:05:58,540
‫Entonces, todo después de este retorno temprano dejará de ejecutar el ciclo completo, dejará de ejecutar cualquier cosa después

87
00:05:58,540 --> 00:05:59,770
‫de que deje de ejecutarse.

88
00:06:00,640 --> 00:06:07,180
‫Pero luego podemos decir que si logramos superar con éxito este ciclo completo sin que regrese antes

89
00:06:07,180 --> 00:06:14,230
‫de tiempo, lo que significa que no hay aliados vivos en el mundo, entonces debemos continuar y finalizar el juego.

90
00:06:15,070 --> 00:06:15,850
‫Simple como eso.

91
00:06:16,150 --> 00:06:22,460
‫Ahora, una parte del rompecabezas que debemos analizar aquí son las llamadas al final del juego.

92
00:06:22,780 --> 00:06:25,780
‫El juego ha terminado en el controlador del reproductor.

93
00:06:25,840 --> 00:06:29,170
‫Echemos un vistazo a cómo el controlador del jugador tirador se ocupa actualmente de esto.

94
00:06:29,200 --> 00:06:35,650
‫Si vamos a su CP, lo que vemos actualmente es que actualmente ignora por completo que B es el ganador

95
00:06:35,650 --> 00:06:38,350
‫actualmente ignora si es el ganador o no.

96
00:06:39,340 --> 00:06:43,900
‫Entonces, lo que tenemos que hacer es decir si B es ganador.

97
00:06:45,030 --> 00:06:48,270
‫Entonces vamos a hacer otra cosa diferente.

98
00:06:49,080 --> 00:06:51,840
‫Vamos a mostrar nuestra pantalla perdida.

99
00:06:52,110 --> 00:06:55,890
‫Así que corte estas líneas aquí que son responsables de mostrar la pantalla perdida.

100
00:06:55,890 --> 00:06:59,940
‫Ponga eso en la declaración de salida y reiniciaremos en ambos casos de todos modos.

101
00:07:00,810 --> 00:07:02,580
‫Así que actualmente el ser es el ganador.

102
00:07:02,580 --> 00:07:03,460
‫¿Qué vamos a hacer?

103
00:07:03,480 --> 00:07:11,550
‫Bueno, seguiremos adelante y probablemente también crearemos una pantalla contra el viento, lo cual será bastante

104
00:07:11,550 --> 00:07:12,410
‫sencillo.

105
00:07:12,420 --> 00:07:16,200
‫Pasamos a nuestro archivo de encabezado para que la sesión reproduzca un controlador.

106
00:07:16,530 --> 00:07:21,750
‫Podemos duplicar, perder clase de pantalla y hacer una clase de pantalla ganadora.

107
00:07:21,750 --> 00:07:25,200
‫Y aquí también podemos seguir adelante y luchar contra esto.

108
00:07:25,200 --> 00:07:26,130
‫Un mini reto para ti.

109
00:07:26,130 --> 00:07:29,490
‫Tal vez siga adelante y configúrelo para que pueda hacer una pantalla ganadora.

110
00:07:30,000 --> 00:07:30,630
‫Kay, bienvenida de nuevo.

111
00:07:30,630 --> 00:07:33,120
‫Así que espero que le hayas dado una oportunidad.

112
00:07:33,120 --> 00:07:40,290
‫Simplemente vamos a entrar y poner un parabrisas aquí en lugar de todo el texto del anuncio perdido, esencialmente todo

113
00:07:40,290 --> 00:07:41,280
‫lo demás.

114
00:07:42,870 --> 00:07:43,500
‫Al igual que.

115
00:07:44,830 --> 00:07:51,760
‫Vamos a seguir adelante y compilar esto, luego iremos al editor y encontraremos la clase de

116
00:07:51,820 --> 00:07:53,610
‫controlador de jugador.

117
00:07:53,620 --> 00:07:56,680
‫Y ahora deberíamos ver que hay una clase de parabrisas vacía.

118
00:07:57,010 --> 00:08:02,290
‫Y lo que vamos a hacer es ir a la interfaz de usuario y voy a duplicar la pantalla perdida

119
00:08:02,350 --> 00:08:03,430
‫para llamar al parabrisas.

120
00:08:03,670 --> 00:08:05,800
‫Y podrías crear el tuyo desde cero si quisieras.

121
00:08:05,800 --> 00:08:11,740
‫Pero lo voy a usar de manera muy similar, excepto que voy a cambiar el color por verde.

122
00:08:12,680 --> 00:08:16,880
‫Y conviértelo en un tú ganas en lugar de un tú pierdes.

123
00:08:18,090 --> 00:08:21,770
‫Porque la lógica de reinicio será efectivamente la misma.

124
00:08:21,840 --> 00:08:25,590
‫Alguna razón por la que restableció mi color es que solo voy a ir y configurar la pantalla a color nuevamente.

125
00:08:25,620 --> 00:08:26,430
‫Bien, eso es genial.

126
00:08:26,430 --> 00:08:31,680
‫Pero todavía tenemos este trozo de pseudocódigo en el modo de juego KML que no se ha completado.

127
00:08:31,710 --> 00:08:34,590
‫Y eso es porque es su desafío calcular la ganancia.

128
00:08:34,980 --> 00:08:40,470
‫Complete el pseudocódigo, use el rango activo T de abajo en esa clase para ayudarlo.

129
00:08:40,830 --> 00:08:45,360
‫Use la nueva función que creamos en el controlador y pruébela.

130
00:08:45,360 --> 00:08:49,410
‫Mira si tu parabrisas aparece cuando matas todo el aire del mundo.

131
00:08:49,500 --> 00:08:53,370
‫Así que lo dejaré con el pseudocódigo en su pantalla para que lo vea.

132
00:08:54,030 --> 00:08:54,970
‫K Bienvenido de nuevo.

133
00:08:54,990 --> 00:08:56,220
‫Entonces, comencemos con el ciclo for.

134
00:08:56,760 --> 00:08:59,020
‫Así que voy a hacer un ¿para qué vamos a hacer un bucle?

135
00:08:59,040 --> 00:09:00,600
‫No es un controlador esta vez.

136
00:09:00,600 --> 00:09:03,630
‫Va a ser el controlador aéreo tirador.

137
00:09:03,630 --> 00:09:05,160
‫Así que tenemos que hacer hash para incluir eso.

138
00:09:06,120 --> 00:09:09,300
‫Va a ser el tirador.

139
00:09:10,250 --> 00:09:12,040
‫Controlador Aéreo Don H.

140
00:09:13,110 --> 00:09:20,520
‫Y eso significa que vamos a recorrer una tienda de controladores de Shooter II para simplemente enfriar

141
00:09:20,520 --> 00:09:30,060
‫el controlador, los pantalones cortos, y luego vamos a hacer un rango de actor t nuevamente que un controlador de aire de tirador.

142
00:09:30,060 --> 00:09:33,810
‫Necesitamos hacer que estos dos tipos coincidan y luego obtener el mundo.

143
00:09:34,290 --> 00:09:36,290
‫Así que lo estamos haciendo en este nivel.

144
00:09:37,800 --> 00:09:42,450
‫Y luego tenemos el cuerpo del ciclo completo aquí donde vamos a preguntar si no está muerto.

145
00:09:42,480 --> 00:09:47,820
‫Entonces, si no, Controller Arrow está muerto.

146
00:09:49,660 --> 00:09:52,240
‫Básicamente diciendo que nos aseguremos de que no estemos muertos.

147
00:09:52,720 --> 00:09:58,300
‫Y si no está muerto, entonces seguimos adelante y volvemos a este regreso temprano porque sabemos que el

148
00:09:58,300 --> 00:09:59,860
‫juego no puede terminar todavía.

149
00:10:00,310 --> 00:10:05,860
‫Y de lo contrario, si superamos todo el ciclo completo sin regresar, debemos finalizar el juego porque el

150
00:10:05,980 --> 00:10:10,090
‫jugador debe haber ganado, matado a toda la IA en el nivel.

151
00:10:10,600 --> 00:10:13,000
‫Entonces, en este caso, podríamos hacer un juego final.

152
00:10:13,250 --> 00:10:13,830
‫Verdadero.

153
00:10:13,870 --> 00:10:15,060
‫Porque el jugador tiene uno.

154
00:10:15,430 --> 00:10:20,170
‫Y eso debería notificar a todos los controladores de jugadores y controladores aéreos.

155
00:10:20,860 --> 00:10:21,370
‫Frio.

156
00:10:21,430 --> 00:10:24,760
‫Así que repasemos y compilemos eso, en primer lugar.

157
00:10:24,940 --> 00:10:27,760
‫Luego voy a ir a Unreal y hacer una obra.

158
00:10:27,790 --> 00:10:32,350
‫Por alguna razón, mi editor cree que estoy en esta operación de edición de color especificada, así que

159
00:10:32,350 --> 00:10:33,820
‫voy a cerrarla y reiniciarla.

160
00:10:33,970 --> 00:10:38,610
‫Ahora que está arrancado gratis, voy a seguir adelante y darle al play y me van a matar.

161
00:10:38,620 --> 00:10:40,400
‫En primer lugar, sí, todavía pierdo.

162
00:10:40,420 --> 00:10:41,080
‫Genial.

163
00:10:41,090 --> 00:10:43,780
‫Ahora veamos si puedo matar a este tipo antes de que me mate a mí.

164
00:10:44,670 --> 00:10:45,210
‫Vamos.

165
00:10:45,210 --> 00:10:46,860
‫Bum, bum, bum, bum, bum, bum, bum.

166
00:10:47,220 --> 00:10:48,110
‫Pierdo demasiado rápido.

167
00:10:48,120 --> 00:10:52,120
‫Vamos a buscar el arma de nuevo y listo.

168
00:10:52,140 --> 00:10:55,260
‫Tenemos ese daño del arma realmente alto.

169
00:10:55,290 --> 00:11:00,450
‫Para fines de prueba, voy a bajar el daño a quizás 20 esta vez.

170
00:11:00,840 --> 00:11:02,940
‫Así que sigue siendo rápido, pero no tan rápido.

171
00:11:03,360 --> 00:11:06,240
‫Ve a jugar y golpea a este tipo unas cuantas veces.

172
00:11:06,450 --> 00:11:12,160
‫Y lo que vimos allí fue que en realidad gané porque el nivel se reinició.

173
00:11:12,180 --> 00:11:15,630
‫Así que si voy y mato a este tipo de nuevo, verás que no pasa nada.

174
00:11:15,630 --> 00:11:19,830
‫Está diciendo en el registro de mensajes que se llamó con una clase nula.

175
00:11:19,830 --> 00:11:25,830
‫Y la razón de eso, si vamos a un controlador de jugador de disparos BP, nuevamente, pueden ver que no

176
00:11:25,830 --> 00:11:27,300
‫hemos conectado nuestro parabrisas.

177
00:11:27,360 --> 00:11:31,290
‫Una cosa que olvidé hacer para poder compilar, guardar y jugar.

178
00:11:31,290 --> 00:11:37,740
‫Y ahora, con suerte, si mato a este tipo a New Doom, gano y voy a reiniciar en 5 segundos.

179
00:11:38,100 --> 00:11:40,860
‫Y quiero mostrarles que lo mismo es cierto.

180
00:11:41,070 --> 00:11:46,080
‫Si pongo más controladores de jugador en el mundo, será necesario que los mate a ambos.

181
00:11:46,410 --> 00:11:49,890
‫Así que vayamos y traigamos al personaje del tirador aquí.

182
00:11:50,670 --> 00:11:52,890
‫Y este va a ser mi segundo enemigo a matar.

183
00:11:52,890 --> 00:11:53,760
‫Así que mata a este tipo.

184
00:11:53,790 --> 00:11:54,210
‫Auge.

185
00:11:55,410 --> 00:11:56,640
‫Y no ha ganado.

186
00:11:56,880 --> 00:11:58,440
‫Luego me acerco al segundo chico.

187
00:11:58,710 --> 00:11:59,050
‫Auge.

188
00:11:59,400 --> 00:12:00,570
‫Y ahora tengo uno.

189
00:12:00,570 --> 00:12:05,010
‫Porque eliminé todo el alfa, y no tuvimos que ir y cambiar ninguna variable para hacer eso.

190
00:12:05,010 --> 00:12:09,360
‫Porque I for loop cuenta todos los vivos cada vez desde cero.

191
00:12:09,420 --> 00:12:12,230
‫Así que actualmente estamos viviendo en un mundo bastante silencioso.

192
00:12:12,240 --> 00:12:18,210
‫Entonces, en la próxima lección, quiero comenzar a ver un poco cómo podemos hacer algo de audio.

193
00:12:18,300 --> 00:12:19,020
‫Te veré allá.

