﻿1
00:00:04,490 --> 00:00:10,940
‫En esta lección, vamos a armar un controlador de jugador que recibirá información de que el juego ha

2
00:00:10,940 --> 00:00:18,110
‫terminado desde el modo de juego y creará este comportamiento de reinicio que después de 5 segundos recarga el nivel

3
00:00:18,110 --> 00:00:20,870
‫después de que el jugador haya muerto.

4
00:00:21,080 --> 00:00:22,520
‫Vamos a sumergirnos y ver cómo se hace.

5
00:00:23,450 --> 00:00:30,950
‫Entonces, cuando el juego haya terminado, debemos notificar al controlador del jugador y también debemos tener un controlador del jugador

6
00:00:30,950 --> 00:00:37,340
‫en nuestro C ++ para que podamos implementar el comportamiento que nos permita reiniciar el nivel y

7
00:00:37,340 --> 00:00:37,760
‫demás.

8
00:00:38,300 --> 00:00:44,180
‫Así que lo primero que hay que hacer es cuando se elimina este punto, en primer lugar, solo estamos iniciando sesión indiscriminadamente.

9
00:00:44,420 --> 00:00:48,140
‫Queremos comprobar si el juego ha terminado o no.

10
00:00:48,170 --> 00:00:50,330
‫Ahora, hay dos escenarios.

11
00:00:50,330 --> 00:00:52,520
‫Uno es donde ganamos y el otro es donde perdemos.

12
00:00:52,850 --> 00:00:55,550
‫La pérdida es la primera que voy a abordar porque es la más fácil.

13
00:00:55,550 --> 00:00:58,190
‫Si el peón asesinado es el jugador que pierdes, eso es todo.

14
00:00:58,190 --> 00:01:04,100
‫Puedes elegir tener múltiples vidas con diferentes iteraciones de este modo de juego, pero no voy a hacer

15
00:01:04,100 --> 00:01:04,790
‫eso.

16
00:01:04,790 --> 00:01:06,170
‫Solo voy a tener una vida de soltero.

17
00:01:06,170 --> 00:01:07,460
‫Si mueres, se acabó el juego.

18
00:01:07,460 --> 00:01:08,630
‫Es posible que desee reiniciar.

19
00:01:09,380 --> 00:01:13,490
‫Entonces, ¿cómo verificamos si este peón es un controlador de jugador?

20
00:01:13,700 --> 00:01:14,930
‫Bueno, eso es bastante sencillo.

21
00:01:14,930 --> 00:01:22,490
‫Podemos simplemente hacer un lanzamiento para poder hacer un lanzamiento a un controlador de jugador y para el peón asesinado.

22
00:01:22,760 --> 00:01:25,310
‫Y luego si esto no es nulo.

23
00:01:25,310 --> 00:01:26,810
‫Así que tomemos el puntero.

24
00:01:26,810 --> 00:01:34,250
‫Un puntero de control de jugador lo llama controlador de jugador y almacena el resultado de ese puntero aquí.

25
00:01:34,550 --> 00:01:38,450
‫Y vamos a decir básicamente si esto no es no.

26
00:01:38,930 --> 00:01:46,010
‫Entonces, si el controlador del jugador no es un puntero nulo, entonces sabemos que es el jugador el que murió y que se acabó el

27
00:01:46,010 --> 00:01:47,330
‫juego para el jugador.

28
00:01:47,810 --> 00:01:52,040
‫Entonces, lo que queremos hacer es llamar a ese método de controlador de jugador.

29
00:01:52,040 --> 00:01:57,440
‫Ya hemos insinuado el hecho de que hay un método de finalización del juego.

30
00:01:57,470 --> 00:01:58,400
‫Echemos un vistazo a esto.

31
00:01:58,400 --> 00:02:06,950
‫Si hacemos un control P y miramos el controlador del jugador dot h y podemos ver si un juego ha terminado.

32
00:02:07,660 --> 00:02:13,340
‫Puede ver con seguridad que aquí hay un método virtual llamado juego finalizado y puede ver que hay un enfoque

33
00:02:13,340 --> 00:02:14,750
‫de final del juego.

34
00:02:14,750 --> 00:02:16,640
‫¿En qué actor deberíamos centrarnos al final?

35
00:02:16,640 --> 00:02:19,760
‫Juego por defecto, esto es puntos nulos y eso es probablemente lo que voy a usar.

36
00:02:20,810 --> 00:02:22,850
‫Y luego vamos a decir, ¿es este el ganador?

37
00:02:22,880 --> 00:02:28,070
‫Básicamente, debes dejar que el jugador controle y sepa si ha ganado o no.

38
00:02:28,430 --> 00:02:31,730
‫Y eso es bastante sencillo, digamos, en este caso.

39
00:02:31,730 --> 00:02:32,810
‫No, no lo han hecho.

40
00:02:33,290 --> 00:02:41,420
‫Así que vamos a hacer que el juego de flecha del controlador de reproducción haya terminado, luego voy a poner un puntero nulo

41
00:02:41,420 --> 00:02:47,480
‫para el enfoque del juego final porque realmente no necesitamos esa característica y luego es ganador.

42
00:02:47,480 --> 00:02:49,190
‫Simplemente va a ser falso.

43
00:02:49,400 --> 00:02:53,330
‫Este no es el controlador de jugador ganador porque es el que acaba de morir.

44
00:02:54,310 --> 00:02:56,890
‫Así que es hora de que implementes un pequeño desafío.

45
00:02:56,890 --> 00:02:59,470
‫El juego ha terminado en un controlador de juego.

46
00:02:59,800 --> 00:03:06,880
‫Eso significa que necesitamos crear un controlador de jugador C++, crear su subclase de blueprint, generar esa subclase de blueprint

47
00:03:06,880 --> 00:03:12,460
‫de forma predeterminada desde nuestro modo de juego y luego desea continuar y anular.

48
00:03:12,490 --> 00:03:17,320
‫El juego terminó y puso un mensaje de registro allí para verificar que efectivamente lo estamos recibiendo.

49
00:03:17,320 --> 00:03:19,600
‫Ese juego ha terminado en el momento adecuado.

50
00:03:19,990 --> 00:03:20,980
‫Pausa, video y prueba.

51
00:03:21,260 --> 00:03:21,540
‫Bueno.

52
00:03:21,550 --> 00:03:22,060
‫Bienvenido de nuevo.

53
00:03:22,360 --> 00:03:27,550
‫Entonces, paso uno, cree ese controlador de reproductor C++, cree una nueva clase C++.

54
00:03:27,700 --> 00:03:30,700
‫Luego ve y busca a ver, controlador de jugador.

55
00:03:30,730 --> 00:03:34,690
‫A continuación, lo llamaremos el controlador del jugador tirador.

56
00:03:34,720 --> 00:03:35,860
‫Continúe y cree esa clase.

57
00:03:35,980 --> 00:03:44,510
‫Una vez hecho esto, queremos ir a nuestros planos y crear una clase de plano que se base en ellos.

58
00:03:44,530 --> 00:03:50,410
‫Así que queremos que el controlador del jugador de disparos sea la base y lo llamaremos BP, controlador

59
00:03:50,830 --> 00:03:53,050
‫del jugador de disparos de subrayado.

60
00:03:53,170 --> 00:03:57,520
‫Esto no es realmente necesario actualmente, pero más adelante, vamos a querer conectar algunos recursos de la interfaz

61
00:03:57,520 --> 00:03:59,170
‫de usuario al controlador del reproductor.

62
00:03:59,170 --> 00:04:00,700
‫Entonces ahí lo tendremos listo.

63
00:04:01,240 --> 00:04:07,840
‫Luego vamos a ir al modo de juego BP KML y acoplarlo porque queremos cambiar la clase de controlador de jugador

64
00:04:07,840 --> 00:04:12,970
‫predeterminada del controlador de jugador a nuestro BPM, el controlador de jugador de tirador escolar.

65
00:04:13,420 --> 00:04:13,810
‫Frio.

66
00:04:14,440 --> 00:04:16,330
‫Entonces queremos anular.

67
00:04:16,330 --> 00:04:17,980
‫Nuestro juego ha terminado.

68
00:04:18,610 --> 00:04:21,990
‫Entonces, veamos si pasamos al control del jugador a h.

69
00:04:22,000 --> 00:04:24,310
‫Podemos ver que esto está en la sección pública.

70
00:04:24,520 --> 00:04:25,300
‫Aquí está la firma.

71
00:04:25,300 --> 00:04:25,930
‫Vamos a copiarlo.

72
00:04:25,930 --> 00:04:31,090
‫Vaya a como shooter play controller dot h y cree público.

73
00:04:32,110 --> 00:04:35,590
‫A ese juego de vacío virtual se le ha acabado.

74
00:04:35,620 --> 00:04:39,970
‫Genial y ya tenemos que anularlo porque eso claramente estaba siendo anulado de alguna parte.

75
00:04:41,190 --> 00:04:45,300
‫Y luego lo que podemos hacer es seguir adelante e implementarlo.

76
00:04:45,330 --> 00:04:48,480
‫Cambio de control p queremos llamarlo un súper recuerdo.

77
00:04:49,820 --> 00:04:52,820
‫Y queremos hacer el juego ha terminado así.

78
00:04:53,870 --> 00:05:01,640
‫Y queremos pasar el enfoque del juego final y la B es ganadora y luego queremos iniciar sesión.

79
00:05:01,790 --> 00:05:02,480
‫Así que te registras.

80
00:05:02,930 --> 00:05:04,040
‫Él es mi macro allí.

81
00:05:04,700 --> 00:05:07,100
‫Hemos terminado.

82
00:05:07,190 --> 00:05:10,100
‫Va a ser el mensaje de registro que sale al final.

83
00:05:10,310 --> 00:05:12,620
‫Así que vamos a compilar y ver si funciona.

84
00:05:12,870 --> 00:05:14,240
‫Voy a ir al registro de salida.

85
00:05:14,690 --> 00:05:15,290
‫Dale al play.

86
00:05:15,500 --> 00:05:18,350
‫Ve y déjate matar, básicamente.

87
00:05:18,410 --> 00:05:19,920
‫La salud está bajando lentamente.

88
00:05:20,660 --> 00:05:23,420
‫Y entonces deberíamos ver un mensaje.

89
00:05:23,450 --> 00:05:24,440
‫¿Estamos recibiendo el mensaje?

90
00:05:24,470 --> 00:05:24,890
‫No.

91
00:05:24,920 --> 00:05:25,850
‫Así que echemos un vistazo.

92
00:05:25,850 --> 00:05:27,170
‫¿Cuál es el controlador del jugador aquí?

93
00:05:27,200 --> 00:05:32,600
‫El controlador de jugador de tirador de subrayado BP parece ser el correcto.

94
00:05:32,930 --> 00:05:35,270
‫Hemos terminado el juego de anulación.

95
00:05:35,570 --> 00:05:37,190
‫Ahora, aquí, veo un error.

96
00:05:37,220 --> 00:05:41,120
‫Ahora, eso es algo que algunos de ustedes pueden haber notado y han estado

97
00:05:41,630 --> 00:05:47,690
‫gritando en la pantalla es que aquí tenemos nuestro controlador de jugador al que estamos lanzando y lo estoy confundiendo con

98
00:05:47,690 --> 00:05:49,450
‫el peón real del jugador.

99
00:05:49,910 --> 00:05:57,220
‫Entonces, lo que queremos hacer aquí es decir obtener el controlador del peón que fue asesinado.

100
00:05:57,230 --> 00:06:01,220
‫Así que el peón asesinado no obtiene el error del controlador.

101
00:06:01,310 --> 00:06:06,040
‫Así que la flecha obtiene el controlador y luego queremos enviarlo al controlador del jugador.

102
00:06:06,080 --> 00:06:08,530
‫Y si eso es nulo, está bien, eso debería funcionar.

103
00:06:08,540 --> 00:06:10,670
‫Así que sigamos adelante y probemos eso.

104
00:06:10,760 --> 00:06:12,050
‫Adelante, dale al play.

105
00:06:12,780 --> 00:06:13,760
‫Castle ha vuelto a morir.

106
00:06:15,610 --> 00:06:18,730
‫Y esta vez tampoco recibimos ningún mensaje.

107
00:06:19,000 --> 00:06:21,100
‫Y esta vez, es por una razón sutil.

108
00:06:21,550 --> 00:06:24,250
‫Eso es porque nos estamos separando del controlador.

109
00:06:24,760 --> 00:06:26,860
‫Antes de que llamemos a esto... asesinado.

110
00:06:26,860 --> 00:06:32,560
‫Entonces, cuando trata de obtener el peón de control, en realidad es no, ya no hay peón de control.

111
00:06:32,830 --> 00:06:38,200
‫Entonces, debemos hacer esta notificación justo antes de desconectarnos del controlador.

112
00:06:38,590 --> 00:06:42,190
‫Incluye subir la línea que se apodera de nuestro modo de juego.

113
00:06:42,190 --> 00:06:46,960
‫No creo que eso importe, pero ahora que lo pienso, sí, por supuesto que importa.

114
00:06:47,290 --> 00:06:49,930
‫Así que vayamos a nuestro nivel y juguemos.

115
00:06:50,500 --> 00:06:51,640
‫Vamos a que nos disparen.

116
00:06:52,060 --> 00:06:56,860
‫Y una vez hecho esto, se puede ver que lo que hemos terminado se imprime como queremos.

117
00:06:56,890 --> 00:06:58,960
‫Así que tuvimos algunos contratiempos en el camino.

118
00:06:58,960 --> 00:07:01,390
‫No es tu culpa si no obtuviste eso en el desafío.

119
00:07:01,750 --> 00:07:03,690
‫Has hecho todo lo demás hasta ese momento.

120
00:07:03,700 --> 00:07:04,690
‫eso es genial

121
00:07:05,110 --> 00:07:10,780
‫Así que espero que hayas intentado depurar eso, pero no te preocupes si te quedas atascado en esas cosas.

122
00:07:11,350 --> 00:07:17,650
‫Lo último que quería hacer aquí es reiniciar el juego con un temporizador.

123
00:07:18,100 --> 00:07:25,210
‫Ahora, la forma en que podemos hacer esto es bastante sencilla porque el controlador del reproductor en realidad tiene un método de

124
00:07:25,450 --> 00:07:25,900
‫reinicio.

125
00:07:25,900 --> 00:07:30,160
‫Entonces, si vamos y echamos un vistazo a esto, debería ser un nivel de reinicio.

126
00:07:30,160 --> 00:07:35,560
‫Ese es el que queremos llamar y queremos hacer esto en un temporizador.

127
00:07:35,560 --> 00:07:42,460
‫Así que hemos usado temporizadores antes para repetir cosas, pero también podemos usarlo solo para retrasar una acción por

128
00:07:42,460 --> 00:07:43,720
‫una cierta cantidad.

129
00:07:44,200 --> 00:07:49,930
‫Así que voy a ir al jugador de disparos, controlador, punto H y crear una propiedad privada aquí.

130
00:07:50,890 --> 00:07:56,500
‫Privado puede ser su propiedad, que se edita en cualquier lugar.

131
00:07:58,590 --> 00:07:59,100
‫Flotar.

132
00:07:59,100 --> 00:08:02,540
‫Ese va a ser el retraso de reinicio.

133
00:08:03,080 --> 00:08:05,460
‫Puede ver por qué ya necesitamos una base de planos para esto.

134
00:08:05,850 --> 00:08:08,160
‫Voy a darle un retraso de 5/2.

135
00:08:08,670 --> 00:08:16,680
‫Luego voy a ir a C++ y vamos a querer hacer un buen temporizador, administrador de temporizador.

136
00:08:17,610 --> 00:08:19,620
‫Y luego podemos hacer eso.

137
00:08:19,890 --> 00:08:21,840
‫Entonces tenemos que incluir.

138
00:08:21,870 --> 00:08:27,690
‫Entonces hash include y será el administrador del temporizador punto H.

139
00:08:28,410 --> 00:08:33,180
‫Entonces deberíamos poder usar el operador de punto porque el tipo de retorno aquí es una referencia

140
00:08:33,180 --> 00:08:35,250
‫y vamos a hacer un temporizador establecido.

141
00:08:35,340 --> 00:08:38,130
‫Y aquí tenemos que pasar un controlador de tiempo.

142
00:08:38,130 --> 00:08:40,740
‫Entonces, en la sección privada, vamos a crear uno.

143
00:08:40,740 --> 00:08:42,810
‫Podría ser un mango de temporizador f.

144
00:08:42,930 --> 00:08:46,410
‫Lo llamaré el temporizador de reinicio como.

145
00:08:46,410 --> 00:08:51,060
‫Entonces ese será el controlador que pasaremos a nuestro temporizador establecido.

146
00:08:51,270 --> 00:08:57,780
‫Lo siguiente que necesitamos en la quinta firma aquí es tener el objeto al que queremos llamar, que será

147
00:08:57,780 --> 00:08:58,830
‫simplemente esto.

148
00:08:59,550 --> 00:09:04,950
‫Y luego va a haber, creo que debería ser solo el método en sí.

149
00:09:05,610 --> 00:09:08,250
‫Entonces podemos hacer eso haciendo ampersand.

150
00:09:08,250 --> 00:09:13,890
‫Y luego es en realidad el método, el método de nivel de reinicio, al que queremos invocar que se

151
00:09:13,890 --> 00:09:16,140
‫definió en el controlador del reproductor A.

152
00:09:16,140 --> 00:09:17,640
‫Así que un controlador de jugador.

153
00:09:19,270 --> 00:09:21,190
‫Dos puntos, nivel de reinicio de dos puntos.

154
00:09:21,700 --> 00:09:27,970
‫Y luego solo necesitamos pasar el retraso que ya hemos definido como el retraso de reinicio.

155
00:09:28,690 --> 00:09:35,740
‫Así que haz eso, pero un punto y coma al final y, con suerte, deberíamos reiniciar después de 5

156
00:09:35,740 --> 00:09:36,520
‫segundos.

157
00:09:36,920 --> 00:09:41,590
‫Ahora vamos a hacer las pruebas un poco más fáciles abriendo nuestro rifle y haciéndolo un

158
00:09:41,590 --> 00:09:42,490
‫poco más letal.

159
00:09:42,490 --> 00:09:46,180
‫Así que voy a ir a los valores predeterminados, hacer el daño en 50.

160
00:09:46,180 --> 00:09:47,890
‫Así que muérete de dos tiros.

161
00:09:48,310 --> 00:09:49,630
‫Vamos y dale al play.

162
00:09:50,660 --> 00:09:52,010
‫Que nos maten rápido.

163
00:09:53,290 --> 00:10:00,400
‫Y luego, después de 5 segundos, con suerte deberíamos reiniciar el nivel, reiniciamos y volvemos al nivel.

164
00:10:00,410 --> 00:10:02,830
‫Así que nuestro temporizador está funcionando como esperábamos.

165
00:10:03,730 --> 00:10:11,350
‫Ahora, en versiones posteriores, encontrará que en lugar de reiniciar, lo que verá es un mensaje de error que se parece a

166
00:10:11,350 --> 00:10:16,980
‫esto y habla sobre fallas en los viajes y dice algo sobre que lee tibio sandbox,

167
00:10:17,140 --> 00:10:18,370
‫bla, bla, bla.

168
00:10:18,700 --> 00:10:23,620
‫Bueno, la forma en que tenemos que sortear esto cuando intentamos reiniciar y queremos verificar si

169
00:10:23,620 --> 00:10:29,800
‫nuestro reinicio está funcionando, es ir a nuestro menú de punto, punto, punto en lugar del menú de reproducción y tenemos

170
00:10:29,800 --> 00:10:31,840
‫que jugar como un juego independiente.

171
00:10:31,870 --> 00:10:38,290
‫Si juegas un juego independiente, tarda un poco más en iniciarse, pero el

172
00:10:38,290 --> 00:10:43,390
‫reinicio funcionará como se esperaba y veremos el nivel recargado.

173
00:10:43,630 --> 00:10:46,510
‫Ahora, obviamente, no hay muchos indicios de que esto vaya a suceder.

174
00:10:46,510 --> 00:10:50,100
‫Así que vamos a ver la interfaz de usuario en las próximas conferencias.

175
00:10:50,110 --> 00:10:50,770
‫Te veré allá.

