﻿1
00:00:04,120 --> 00:00:04,630
‫Bueno.

2
00:00:04,630 --> 00:00:08,980
‫Entonces, nuestro objetivo para este video es implementar la muerte para nuestros Pons.

3
00:00:08,980 --> 00:00:17,020
‫Entonces, si me golpean un par de veces desde nuestra torre, verán que he desaparecido porque mi tanque ha

4
00:00:17,020 --> 00:00:17,770
‫muerto.

5
00:00:17,770 --> 00:00:23,650
‫Y si soy lo suficientemente hábil, si puedo seguir adelante y destruir uno de ellos, verás que también

6
00:00:23,650 --> 00:00:24,220
‫desaparece.

7
00:00:24,220 --> 00:00:29,200
‫Así que vamos a implementar la muerte de estos peones en este video.

8
00:00:29,290 --> 00:00:31,240
‫Hola y bienvenido de nuevo.

9
00:00:31,270 --> 00:00:36,790
‫Ahora ya estamos aplicando daño a los peones cuando son golpeados por proyectiles.

10
00:00:36,790 --> 00:00:40,600
‫Ahora tenemos que averiguar cómo vamos a manejar después de la muerte.

11
00:00:40,600 --> 00:00:45,910
‫Esto significa que vamos a necesitar algún tipo de función para manejar la destrucción de un actor en particular.

12
00:00:45,910 --> 00:00:49,030
‫Así que vamos a crear una función de destrucción de identificadores.

13
00:00:49,030 --> 00:00:55,510
‫También necesitamos que un actor muera para funcionar, lo que puede permitir que el modo de juego maneje lo que sucede cuando muere

14
00:00:55,510 --> 00:01:01,480
‫un actor en nuestro mundo y vamos a llamar a este actor muerto función cuando el valor de salud llega a

15
00:01:01,480 --> 00:01:03,340
‫cero para un peón en particular.

16
00:01:03,340 --> 00:01:07,630
‫Así que hablemos un poco de una hoja de ruta sobre cómo vamos a implementar este sistema.

17
00:01:07,630 --> 00:01:14,080
‫Sabemos que tenemos un proyectil y está llamando a aplicar daño y esto da como resultado que la función

18
00:01:14,080 --> 00:01:18,610
‫de recibir daño responda a esa transmisión delegada en el componente de salud.

19
00:01:18,610 --> 00:01:21,100
‫Así que tenemos que averiguar qué hacer a partir de ahí.

20
00:01:21,100 --> 00:01:26,230
‫Bueno, nuestro modo de juego puede tener una función para manejar cuando un actor muere.

21
00:01:26,230 --> 00:01:30,370
‫Entonces, en el daño recibido, podemos verificar si la salud llega a cero.

22
00:01:30,370 --> 00:01:37,210
‫Y en ese punto podemos llamar a la función de muerte del actor en el modo de juego y desde allí nuestro peón

23
00:01:37,210 --> 00:01:38,440
‫puede manejar su destrucción.

24
00:01:38,440 --> 00:01:44,500
‫Entonces, en última instancia, dependerá del modo de juego llamar a la función de destrucción del mango en el actor que

25
00:01:44,500 --> 00:01:45,010
‫murió.

26
00:01:45,010 --> 00:01:49,660
‫Así que tenemos un pequeño plan de juego, así que describamos los pasos a seguir para implementar esto.

27
00:01:49,660 --> 00:01:54,400
‫Primero, vamos a crear la función de destrucción del identificador y la colocaremos en la clase de

28
00:01:54,400 --> 00:01:58,900
‫peón base para manejar la funcionalidad que debería ocurrir cuando alguno de nuestros peones muera.

29
00:01:58,900 --> 00:02:04,090
‫Y también implementaremos esto en las clases de tanque y torre, ya que cada una tendrá su propia

30
00:02:04,090 --> 00:02:09,520
‫funcionalidad única cuando mueran, luego crearemos una función de actor muerto y la colocaremos en la clase de modo

31
00:02:09,520 --> 00:02:13,090
‫de juego para que podamos llame a manejar la destrucción desde allí.

32
00:02:13,090 --> 00:02:18,730
‫Después de eso, llamaremos a manejar la destrucción en la función del actor muerto en el modo de juego y

33
00:02:18,730 --> 00:02:23,320
‫luego podemos llamar al actor muerto del componente de salud cuando la salud llegue a cero.

34
00:02:23,320 --> 00:02:27,640
‫Entonces, comencemos con nuestro primer paso creando la función de destrucción de identificadores.

35
00:02:27,640 --> 00:02:33,430
‫Así que estoy aquí en Base Pond H y me gustaría agregar esta función de destrucción de identificadores.

36
00:02:33,430 --> 00:02:38,740
‫Ahora planeo llamar a esto desde el modo de juego, lo que significa que tendrá que ser

37
00:02:38,740 --> 00:02:42,850
‫una función pública para poder colocar esta función aquí en la sección pública.

38
00:02:42,940 --> 00:02:46,840
‫Será nulo y lo llamaré manejar destrucción.

39
00:02:47,890 --> 00:02:50,710
‫Ahora, no necesita tomar ningún parámetro de entrada.

40
00:02:50,860 --> 00:02:55,360
‫Simplemente se encargará de la destrucción de este peón en particular.

41
00:02:55,360 --> 00:03:01,840
‫Entonces, implementemos esta función en el archivo CP del peón base y la colocaré justo aquí debajo

42
00:03:01,840 --> 00:03:02,770
‫del constructor.

43
00:03:02,770 --> 00:03:09,550
‫Así que he manejado la destrucción y voy a colocar el nombre de una clase de peón base justo antes del nombre de la

44
00:03:09,550 --> 00:03:10,180
‫función aquí.

45
00:03:10,180 --> 00:03:15,640
‫Ahora, esto va a ser cosas que sucederán cuando cualquiera de los peones basados en el peón base muere.

46
00:03:15,640 --> 00:03:21,040
‫Así que voy a colocar una tarea aquí que dice lo que vamos a hacer en la función de destrucción de identificadores.

47
00:03:21,040 --> 00:03:26,800
‫Me gustaría manejar aquí todos los efectos visuales y de sonido que tienen que ver con la muerte del peón.

48
00:03:26,800 --> 00:03:32,860
‫Así que solo voy a decir efectos de sonido de barra visual y lo dejaremos así y nos aseguraremos

49
00:03:32,860 --> 00:03:38,320
‫de recordar implementar esto cuando lleguemos a la parte de efectos especiales y sonidos de esta sección del

50
00:03:38,320 --> 00:03:38,920
‫curso.

51
00:03:38,920 --> 00:03:44,890
‫Ahora tenemos la destrucción de la manija aquí, pero también me gustaría poner una función de destrucción de la manija

52
00:03:44,890 --> 00:03:50,050
‫en las clases de tanque y torre para manejar lo que sucede cuando esos peones mueren.

53
00:03:50,050 --> 00:03:54,670
‫Y la implementación más simple de destrucción quizás sea para nuestra torre.

54
00:03:54,670 --> 00:04:00,760
‫Así que vayamos a la Torre H y agregaremos una función pública aquí llamada manejar la destrucción.

55
00:04:00,760 --> 00:04:09,130
‫Así que voy a decir void handle destroy y voy a implementar esto y a la torre CP justo debajo de la

56
00:04:09,130 --> 00:04:10,060
‫función tick.

57
00:04:10,060 --> 00:04:17,440
‫Así que aquí está tick here's handle destroy y voy a prefijar el nombre de la función con una torre

58
00:04:17,440 --> 00:04:18,130
‫así.

59
00:04:18,130 --> 00:04:24,280
‫Ahora, en la función de destrucción de manijas para la torre, me gustaría llamar a la versión súper para que se llame la

60
00:04:24,280 --> 00:04:29,800
‫destrucción de manijas en el peón base y obtendremos esos efectos visuales y de sonido cuando una torre muera.

61
00:04:29,800 --> 00:04:35,650
‫Así que voy a decir destrucción de súper manejador solo para asegurarme de que eso se llame.

62
00:04:35,650 --> 00:04:39,040
‫Y después de eso, simplemente voy a destruir la torre.

63
00:04:39,040 --> 00:04:40,390
‫Ahora hemos visto cómo funciona esto.

64
00:04:40,390 --> 00:04:45,820
‫Simplemente llamamos a la función de destrucción, y eso manejará la destrucción de la torre.

65
00:04:45,820 --> 00:04:52,960
‫Así que puedo guardar esto y cerrar los archivos de torre y CP y ahora puedo colocar una función de destrucción de

66
00:04:52,960 --> 00:04:54,910
‫identificadores en la clase de tanque.

67
00:04:54,910 --> 00:05:01,570
‫Así que voy a ir al tanque y declarar una función pública aquí bajo la función de marca llamada

68
00:05:01,570 --> 00:05:02,620
‫manejar destrucción.

69
00:05:03,640 --> 00:05:10,870
‫Y voy a ir a Tank CP e implementar esto justo debajo del tic aquí, sin olvidar prefijar el nombre

70
00:05:10,870 --> 00:05:13,360
‫de la función con un tanque.

71
00:05:13,510 --> 00:05:17,950
‫Ahora, al igual que en la clase de la torre, nos gustaría llamar a la destrucción del súper mango.

72
00:05:19,300 --> 00:05:22,120
‫Y de esa manera obtendremos esos efectos visuales y sonoros.

73
00:05:22,150 --> 00:05:24,910
‫Ahora para el tanque, vamos a hacer algo un poco diferente.

74
00:05:24,940 --> 00:05:27,700
‫Me gustaría esconder el tanque en lugar de destruirlo.

75
00:05:27,700 --> 00:05:33,730
‫Y luego podemos deshabilitar su funcionalidad TIC para que siga existiendo en el mundo y aún la poseamos.

76
00:05:33,730 --> 00:05:35,740
‫Así que todavía tenemos esa vista de la cámara.

77
00:05:35,770 --> 00:05:38,610
‫Solo que no podremos verlo ni moverlo.

78
00:05:38,620 --> 00:05:47,710
‫Entonces, para ocultar el tanque, podemos llamar a una función llamada establecer actor oculto en el juego y esto tomará un valor booleano.

79
00:05:47,710 --> 00:05:51,400
‫Y si pasamos en verdad, ocultaremos efectivamente el tanque.

80
00:05:51,430 --> 00:05:55,420
‫Ahora también me gustaría deshabilitar el tictac y también hay una función para eso.

81
00:05:55,420 --> 00:05:58,810
‫Se llama activar el tic del actor.

82
00:05:59,770 --> 00:06:05,260
‫Y para esto voy a pasar falso, lo que deshabilitará el tic-tac del tanque.

83
00:06:05,260 --> 00:06:08,800
‫Entonces eso se ocupa de nuestra función de destrucción de identificadores.

84
00:06:08,800 --> 00:06:11,590
‫Así que tenemos nuestra función de destrucción de identificadores.

85
00:06:11,620 --> 00:06:16,020
‫Nuestro próximo paso es crear una función de actor muerto en el modo de juego.

86
00:06:16,030 --> 00:06:17,440
‫Así que implementemos eso.

87
00:06:17,440 --> 00:06:25,870
‫Así que estoy aquí en el modo de juego tune tanks y aquí puedo crear la función de actor muerto ahora planeo llamar actor muerto

88
00:06:25,870 --> 00:06:32,200
‫de la clase de componente de salud, lo que significa que esto también debe ser una función pública.

89
00:06:32,440 --> 00:06:37,590
‫Así que agregaré una sección pública y crearé la función de muerte del actor.

90
00:06:37,600 --> 00:06:40,930
‫Ahora esto será nulo y lo llamaré actor muerto.

91
00:06:41,170 --> 00:06:48,460
‫Y esto puede simplemente tomar un puntero de actor llamado Dead Actor y ahora podemos implementar el actor muerto en el modo de

92
00:06:48,460 --> 00:06:49,740
‫juego tune tanks.

93
00:06:50,110 --> 00:06:58,690
‫CP Así que voy a colocarlo aquí y anteponer el nombre con un modo de juego tune tanks y ahora tenemos una función

94
00:06:58,690 --> 00:07:00,220
‫de actor muerto.

95
00:07:00,220 --> 00:07:05,890
‫Ahora me gustaría verificar si el actor muerto es el tanque, lo que significa que voy a necesitar una variable

96
00:07:05,890 --> 00:07:07,030
‫para el tanque.

97
00:07:07,030 --> 00:07:09,460
‫Así que de vuelta en el modo de juego de tanques de sintonía.

98
00:07:09,460 --> 00:07:16,540
‫Voy a hacer una sección privada y voy a agregar una variable de tanque que voy a declarar hacia

99
00:07:16,540 --> 00:07:17,290
‫adelante.

100
00:07:17,290 --> 00:07:23,290
‫Y es un puntero de tanque tipo A y simplemente voy a llamar a este tanque y necesitaré inicializarlo con

101
00:07:23,290 --> 00:07:27,760
‫la dirección del estanque del tanque, y puedo hacer eso y comenzar a jugar.

102
00:07:27,760 --> 00:07:33,640
‫Ahora hemos visto que comenzar a jugar es una función protegida y la mantendremos protegida aquí en el modo

103
00:07:33,640 --> 00:07:36,400
‫de juego para que podamos anular, comenzar, jugar.

104
00:07:36,400 --> 00:07:44,110
‫Así que voy a decir virtual void, begin, play, override, y puedo implementarlo aquí en tune tanks, modo de

105
00:07:44,110 --> 00:07:44,580
‫juego.

106
00:07:44,860 --> 00:07:45,610
‫Sí.

107
00:07:45,640 --> 00:07:52,840
‫Así que va a ser nulo, comience a jugar y voy a usar los tanques de sintonización, el nombre de la clase del modo de juego.

108
00:07:52,990 --> 00:07:56,110
‫Y lo primero que voy a hacer es llamar a Super Begin Play.

109
00:07:57,550 --> 00:08:03,040
‫De esa manera, obtenemos la funcionalidad principal y puedo obtener el peón del jugador usando estadísticas de juego.

110
00:08:03,040 --> 00:08:10,660
‫Así que primero voy a incluir estadísticas de juego y eso está en las estadísticas de juego de kismet slash como ya

111
00:08:10,660 --> 00:08:11,680
‫hemos visto.

112
00:08:11,800 --> 00:08:17,290
‫Y aquí puedo tomar Tank y asignarle el valor de la estática del juego juvenil.

113
00:08:18,230 --> 00:08:19,550
‫Palma del guitarrista.

114
00:08:20,360 --> 00:08:26,390
‫Ahora, esto toma un objeto de contexto mundial para el cual podemos usar esto, y voy a usar cero como el

115
00:08:26,390 --> 00:08:30,200
‫índice del jugador ya que nuestro tanque siempre será el jugador cero.

116
00:08:30,200 --> 00:08:37,430
‫Ahora sabemos que jet player -- devuelve un puntero A -- y tank es del tipo A tank, una clase secundaria.

117
00:08:37,430 --> 00:08:43,910
‫Y hemos visto que necesitamos convertir a esa clase de tanque si queremos almacenar este resultado en un puntero de tanque

118
00:08:43,910 --> 00:08:44,510
‫A.

119
00:08:44,510 --> 00:08:47,450
‫Así que primero voy a incluir el encabezado del tanque.

120
00:08:47,450 --> 00:08:53,330
‫Así que voy a decir incluir el tanque H y luego voy a lanzar a un tanque.

121
00:08:53,390 --> 00:09:00,440
‫Así que voy a decir lanzar a un tanque y estoy lanzando el valor devuelto por get player --.

122
00:09:00,440 --> 00:09:02,900
‫Así que voy a poner eso entre paréntesis aquí.

123
00:09:03,260 --> 00:09:08,720
‫Y ahora tendremos un puntero al jugador, en forma de un puntero de tanque A.

124
00:09:08,720 --> 00:09:14,090
‫Entonces, ahora que tenemos el tanque, podemos verificar si nuestro actor muerto es el tanque.

125
00:09:14,090 --> 00:09:21,800
‫Entonces podemos decir que si el actor muerto es doblemente igual al tanque, ahora el tanque puede ser nulo.

126
00:09:21,800 --> 00:09:28,940
‫Y está bien porque si Tank es nulo y el actor muerto se refiere al tanque en sí, fallará la

127
00:09:28,940 --> 00:09:34,130
‫verificación if y no intentaremos acceder a un puntero nulo porque no llegaremos al interior

128
00:09:34,130 --> 00:09:35,060
‫de esto.

129
00:09:35,060 --> 00:09:41,900
‫Ahora, si el actor muerto es de hecho el tanque, entonces me gustaría llamar a la función de destrucción del identificador del tanque.

130
00:09:41,900 --> 00:09:44,870
‫Así que vamos a llamar destrucción del mango del tanque.

131
00:09:45,680 --> 00:09:52,100
‫Ahora, después de llamar a la función de destrucción del controlador, también me gustaría deshabilitar la entrada para la

132
00:09:52,100 --> 00:09:58,550
‫cápsula del tanque para poder obtener el tanque y llamar a la función integrada que hereda el tanque llamada deshabilitar entrada.

133
00:09:59,540 --> 00:10:03,200
‫Ahora deshabilitar la entrada requiere un controlador de jugador A.

134
00:10:03,200 --> 00:10:10,430
‫Ahora sabemos que la clase de tanque, si entramos aquí en el tanque H, tiene esta variable ref del controlador del jugador, que

135
00:10:10,430 --> 00:10:17,270
‫es un puntero a un controlador del jugador, por lo que estoy empezando a pensar que ref es un nombre muy

136
00:10:17,270 --> 00:10:19,160
‫desagradable para esta variable. .

137
00:10:19,160 --> 00:10:21,320
‫Como no es una referencia, es un puntero.

138
00:10:21,320 --> 00:10:24,260
‫Casi preferiría llamarlo controlador de jugador de tanque.

139
00:10:24,350 --> 00:10:27,200
‫Entonces, de hecho, ¿por qué no seguimos adelante y renombramos esto?

140
00:10:27,200 --> 00:10:33,530
‫Esto es algo que los desarrolladores suelen hacer cuando se dan cuenta de que le han dado una mala reputación a una variable.

141
00:10:33,530 --> 00:10:36,290
‫Entonces este código tiene una manera de hacer esto fácilmente.

142
00:10:36,290 --> 00:10:42,350
‫Puedo resaltar esta variable y presionar la tecla F dos y me pide que le cambie el nombre.

143
00:10:42,590 --> 00:10:45,710
‫Voy a llamar a este controlador de jugador de tanque.

144
00:10:46,100 --> 00:10:47,480
‫Ahora mira esto.

145
00:10:47,480 --> 00:10:49,790
‫Aquí se llama Tank Player Controller.

146
00:10:49,790 --> 00:10:54,350
‫Si voy a Tank CP, veré que también se le cambia el nombre aquí.

147
00:10:54,350 --> 00:11:00,530
‫Así que no tuve que entrar y buscarlo y encontrar cada instancia de jugador, controlador, ref.

148
00:11:00,530 --> 00:11:06,050
‫Puedo buscar el controlador de jugador de tanque y ver que ha cambiado en todos los lugares donde se usa aquí.

149
00:11:06,050 --> 00:11:08,960
‫Así que esa es una buena habilidad de refactorización para tener.

150
00:11:08,960 --> 00:11:15,650
‫De todos modos, aquí en el modo de juego Tune Tanks, necesito deshabilitar la entrada para el tanque y esto requiere

151
00:11:15,650 --> 00:11:17,180
‫un controlador de jugador.

152
00:11:17,360 --> 00:11:23,360
‫Entonces, primero voy a verificar para asegurarme de que el controlador del jugador del tanque sea válido diciendo si el tanque y

153
00:11:23,360 --> 00:11:25,550
‫yo necesitamos acceder a ese controlador del jugador.

154
00:11:25,550 --> 00:11:30,440
‫Pero recuerde que en el tanque, nuestra variable de controlador de jugador es privada.

155
00:11:30,440 --> 00:11:36,860
‫Ahora podríamos exponer esto y hacerlo público, o podríamos hacer una función captadora pública para esta variable.

156
00:11:36,860 --> 00:11:40,340
‫Prefiero hacer un captador público ya que es una mejor práctica de programación.

157
00:11:40,340 --> 00:11:46,610
‫Así que aquí en la sección pública, voy a crear un captador público para el controlador del jugador tanque.

158
00:11:46,610 --> 00:11:53,300
‫Ahora devolverá un puntero de controlador de jugador A y esta función se llamará

159
00:11:53,630 --> 00:11:55,340
‫get tank player.

160
00:11:55,340 --> 00:12:02,900
‫Los captadores de controlador suelen ser el nombre de la variable con get al frente, y también suelen tener un

161
00:12:02,900 --> 00:12:09,830
‫costo ya que esta función no está diseñada para cambiar nada en esta clase, solo devolverá el controlador

162
00:12:09,830 --> 00:12:10,970
‫del jugador.

163
00:12:10,970 --> 00:12:16,760
‫Así que vamos a decir devolver el controlador del jugador del tanque y eso es todo lo que va a hacer.

164
00:12:16,760 --> 00:12:22,760
‫Entonces, ahora que tenemos una función de obtención pública para el controlador del jugador del tanque, podemos acceder al

165
00:12:22,760 --> 00:12:25,640
‫controlador del jugador aquí desde el modo de juego.

166
00:12:25,880 --> 00:12:33,080
‫Así que vamos a decir si tank obtiene un controlador de jugador tank y llama a esa función aquí.

167
00:12:33,080 --> 00:12:38,450
‫Y si llegamos al interior de esta declaración if, entonces el controlador del jugador es válido, por lo que

168
00:12:38,450 --> 00:12:45,590
‫podemos mover esta llamada a la entrada de desactivación del tanque justo aquí y vamos a pasar a la entrada deshabilitada el controlador del jugador

169
00:12:45,590 --> 00:12:46,400
‫del tanque.

170
00:12:48,400 --> 00:12:51,950
‫Así que aquí también llamaremos tank get player controller.

171
00:12:51,970 --> 00:12:57,910
‫Ahora, mientras accedemos al controlador del reproductor, también me gustaría que los controladores del reproductor

172
00:12:57,910 --> 00:13:03,640
‫muestren la variable miembro booleana del cursor del mouse y establezcan esto en falso.

173
00:13:03,640 --> 00:13:08,830
‫Así que estamos deshabilitando la entrada y también nos estamos asegurando de que no se muestre el cursor del mouse.

174
00:13:08,830 --> 00:13:13,400
‫Entonces eso se encarga de manejar la funcionalidad para cuando el tanque muere.

175
00:13:13,420 --> 00:13:19,660
‫Ahora, en el caso de que el actor muerto no sea el tanque, me gusta verificar si es una instancia

176
00:13:19,660 --> 00:13:21,010
‫de la clase torre.

177
00:13:21,010 --> 00:13:23,200
‫Así que voy a agregar un else si aquí.

178
00:13:23,320 --> 00:13:26,410
‫Entonces, ¿cuál va a ser el condicional para este elseif aquí?

179
00:13:26,440 --> 00:13:33,640
‫Bueno, me gustaría ver si el actor muerto puede ser enviado a una torre A, lo que significa que tendré que incluir

180
00:13:34,360 --> 00:13:35,800
‫la clase de torre.

181
00:13:35,890 --> 00:13:37,300
‫Así que incluye la torre.

182
00:13:38,170 --> 00:13:40,270
‫Y luego voy a intentar lanzar.

183
00:13:40,270 --> 00:13:44,770
‫Así que voy a decir cast, que toma corchetes angulares y paréntesis.

184
00:13:44,770 --> 00:13:50,410
‫Y lo que estamos lanzando también es una torre y lo que estamos lanzando está muerto.

185
00:13:50,410 --> 00:13:53,410
‫El actor intentará elegir al actor muerto.

186
00:13:53,410 --> 00:13:59,410
‫Ahora podemos tomar el resultado de este lanzamiento y asignarlo y crear una variable local.

187
00:13:59,410 --> 00:14:09,310
‫Aquí en el condicional podemos decir un puntero de torre y podemos llamar a esta torre destruida y asignarle el valor

188
00:14:09,310 --> 00:14:11,470
‫devuelto por este lanzamiento.

189
00:14:11,470 --> 00:14:18,250
‫Y si hacemos eso, entonces tendremos acceso a este actor destruido, que es nuestro actor muerto arrojado a una

190
00:14:18,250 --> 00:14:18,660
‫torre.

191
00:14:18,670 --> 00:14:22,630
‫Ahora, si esto tiene éxito, llegaremos al interior del elseif.

192
00:14:22,630 --> 00:14:24,670
‫Y entonces podemos tomar nuestro destruido.

193
00:14:25,490 --> 00:14:31,430
‫Tower y podemos simplemente llamar a manejar la destrucción.

194
00:14:32,870 --> 00:14:39,800
‫Así que ahora tenemos una función de actor muerto aquí en el modo de juego que llama a manejar la destrucción y

195
00:14:39,800 --> 00:14:43,910
‫también maneja algunas funciones más relacionadas con la muerte para el tanque.

196
00:14:44,180 --> 00:14:45,980
‫Así que eso se ocupa del paso dos.

197
00:14:45,980 --> 00:14:52,220
‫Crear una función de muerte del actor y, mientras estábamos en eso, también llamamos a manejar la destrucción en la función

198
00:14:52,220 --> 00:14:53,540
‫de muerte del actor.

199
00:14:53,540 --> 00:14:58,150
‫Así que nuestro último paso es llamar al actor muerto cuando la salud llegue a cero.

200
00:14:58,160 --> 00:15:04,310
‫Ahora, para llamar a esta función que existe en el modo de juego, nuestro componente de salud necesitará una variable

201
00:15:04,340 --> 00:15:07,250
‫que almacene la dirección del modo de juego.

202
00:15:07,250 --> 00:15:10,340
‫Así que vayamos a nuestra clase de componentes de salud.

203
00:15:10,340 --> 00:15:16,100
‫Aquí están los componentes de salud, y voy a agregar una variable privada aquí justo al final.

204
00:15:16,100 --> 00:15:25,730
‫Y este será del tipo A puntero de modo de juego de tanques de sintonización y lo llamaremos modo de juego de tanques de sintonización.

205
00:15:25,730 --> 00:15:31,010
‫Ahora voy a declarar esto hacia adelante para no tener que incluir su archivo de encabezado aquí y luego necesitamos

206
00:15:31,010 --> 00:15:32,480
‫acceder al modo de juego.

207
00:15:32,480 --> 00:15:38,990
‫Así que vayamos al componente de salud CP y si me desplazo hacia arriba, veo la función de comenzar a jugar aquí y ese es

208
00:15:38,990 --> 00:15:41,690
‫el lugar perfecto para obtener el modo de juego.

209
00:15:41,690 --> 00:15:44,840
‫Nuevamente, ponerlo en el constructor es demasiado temprano.

210
00:15:44,840 --> 00:15:50,530
‫Necesitamos asegurarnos de que el modo de juego se haya construido y exista antes de intentar acceder a él.

211
00:15:50,540 --> 00:15:57,200
‫Ahora, aquí hay una función útil en las estadísticas del juego llamada Obtener modo de juego y dice que devuelve la base del

212
00:15:57,200 --> 00:16:01,610
‫modo de juego actual o nulo si no se puede recuperar, como en el cliente.

213
00:16:01,850 --> 00:16:07,730
‫Ahora, el cliente tiene que ver con la programación multijugador y no tenemos que preocuparnos por eso.

214
00:16:07,730 --> 00:16:14,930
‫Estamos ejecutando en la única máquina para nuestro juego, así que desplacémonos hacia abajo y veremos que una base de

215
00:16:14,930 --> 00:16:18,230
‫modo de juego toma un objeto de contexto mundial.

216
00:16:18,230 --> 00:16:24,080
‫Este es solo un objeto en el mundo y hemos visto cómo manejar objetos de contexto mundial.

217
00:16:24,080 --> 00:16:29,030
‫Entonces esto existe en el juego static h, así que incluyámoslo.

218
00:16:29,030 --> 00:16:35,330
‫Y aquí en los componentes de salud, CP pegará nuestra inclusión para las estadísticas del juego y luego llamaremos al modo

219
00:16:35,330 --> 00:16:37,490
‫de juego aquí y comenzaremos a jugar.

220
00:16:37,790 --> 00:16:40,670
‫Así que vamos a decir sintonizar tanques, modo de juego.

221
00:16:42,030 --> 00:16:44,380
‫Y establece eso a tu valor.

222
00:16:44,400 --> 00:16:50,940
‫Las estadísticas de juego obtienen el modo de juego y el objeto de contexto mundial.

223
00:16:50,940 --> 00:16:54,750
‫Voy a pasar en esto y ahora tenemos el modo de juego.

224
00:16:54,750 --> 00:17:01,080
‫Pero, por supuesto, obtenga el modo de juego, devuelve una base de modo de juego y estamos intentando almacenarlo en la

225
00:17:01,080 --> 00:17:06,810
‫clase secundaria, un modo de juego de tanques de sintonización, lo que significa que vamos a necesitar lanzar.

226
00:17:06,810 --> 00:17:07,380
‫Así es.

227
00:17:07,380 --> 00:17:17,580
‫Así que tenemos que decir cast to a tune tanks game mode y estamos lanzando el resultado del modo get game.

228
00:17:17,580 --> 00:17:20,430
‫Así que voy a poner eso entre paréntesis allí.

229
00:17:20,430 --> 00:17:22,410
‫Y estamos usando el modo de juego tune tanks.

230
00:17:22,410 --> 00:17:24,840
‫Así que voy a incluir ese archivo de encabezado en la parte superior.

231
00:17:24,840 --> 00:17:26,970
‫Así que voy a decir incluir.

232
00:17:28,960 --> 00:17:32,120
‫Modo de juego Tune Tanks.

233
00:17:33,100 --> 00:17:36,960
‫Entonces tenemos el modo de juego aquí en el componente de salud.

234
00:17:36,970 --> 00:17:44,080
‫Estamos listos para bajar aquí para ver el daño recibido y verificar si nuestra salud llega a cero.

235
00:17:44,140 --> 00:17:52,060
‫Y en ese caso, podemos usar nuestro puntero de modo de juego tune tanks para llamar a la función actor murió pasando

236
00:17:52,060 --> 00:17:59,740
‫el actor que murió y este será su desafío, por lo que en la clase de componente de salud en el daño

237
00:17:59,740 --> 00:18:06,910
‫recibido, verificará para ver si el valor de la salud ha llegado a cero o ha bajado a cero.

238
00:18:06,940 --> 00:18:11,260
‫Si ese es el caso, entonces el actor llamado murió usando el modo de juego.

239
00:18:11,260 --> 00:18:17,140
‫Dado que tenemos un puntero al modo de juego, no olvide verificar primero si este puntero no es

240
00:18:17,140 --> 00:18:17,800
‫nulo.

241
00:18:17,800 --> 00:18:21,940
‫Y una vez que llames al actor muerto, tendrás que pasar a un actor.

242
00:18:21,940 --> 00:18:25,000
‫Vas a pasar al actor que murió.

243
00:18:25,000 --> 00:18:30,370
‫Así que pausa el video e implementa esto en la función de daño recibido ahora.

244
00:18:33,280 --> 00:18:33,670
‫Bueno.

245
00:18:33,670 --> 00:18:36,720
‫Así que ya hemos sustraído el daño de la salud.

246
00:18:36,730 --> 00:18:41,220
‫Ahora estamos listos para verificar si ese valor de salud ha llegado a cero.

247
00:18:41,230 --> 00:18:48,610
‫Así que voy a decir si la salud es menor o igual a cero F y si ese es el caso, entonces es

248
00:18:48,610 --> 00:18:49,450
‫apropiado llamar.

249
00:18:49,480 --> 00:18:55,090
‫El actor murió ahora porque necesitamos verificar si el modo de juego es válido.

250
00:18:55,090 --> 00:19:02,170
‫Puedo colocar un anuncio aquí en esto si verifico y verifico si el modo de juego tune tanks es válido.

251
00:19:02,170 --> 00:19:07,060
‫Si es nulo, devolverá falso aquí y no llegaremos al interior de la instrucción if.

252
00:19:07,540 --> 00:19:13,600
‫Entonces, si llegamos al interior de la declaración if, el modo de juego tune tanks es válido y la salud ha llegado a

253
00:19:13,600 --> 00:19:14,050
‫cero.

254
00:19:14,050 --> 00:19:16,780
‫Entonces podemos decir sintonizar tanques, modo de juego.

255
00:19:17,980 --> 00:19:19,900
‫Y podemos llamar actor muerto.

256
00:19:20,830 --> 00:19:27,160
‫Y esto requiere un actor y sabemos que el actor que murió será el actor dañado.

257
00:19:27,160 --> 00:19:29,950
‫Así que vamos a pasar actor dañado.

258
00:19:30,130 --> 00:19:33,640
‫Y ahora podemos compilar esto y mirar aquello.

259
00:19:33,640 --> 00:19:35,380
‫Tenemos una compilación exitosa.

260
00:19:35,380 --> 00:19:37,180
‫Así que volvamos al editor.

261
00:19:37,180 --> 00:19:40,690
‫Y aquí en el editor, ¿por qué no seguimos adelante y probamos la muerte?

262
00:19:40,690 --> 00:19:45,790
‫Veamos si puedo destruir algunos de estos tanques antes de que me destruyan a mí mismo.

263
00:19:45,790 --> 00:19:47,680
‫Eso va a ser una especie de desafío.

264
00:19:47,710 --> 00:19:48,670
‫Oh, hay uno.

265
00:19:48,670 --> 00:19:52,030
‫Maté a uno de ellos y atrapé al segundo.

266
00:19:52,030 --> 00:19:53,230
‫Ah, y morí.

267
00:19:53,650 --> 00:20:01,840
‫Entonces puedes ver que este juego es mucho más divertido ahora que hemos agregado muerte y destrucción a nuestros estanques.

268
00:20:01,840 --> 00:20:03,550
‫Así que esto es genial.

269
00:20:03,850 --> 00:20:11,050
‫Bien, lo que quiero que hagas es darte una gran palmadita en la espalda, porque en este

270
00:20:11,050 --> 00:20:18,010
‫video manejamos a Actor Death, lo que implica bastante interacción entre estas clases en nuestro juego.

271
00:20:18,100 --> 00:20:24,370
‫Ahora, la forma en que se implementa la muerte es que el estanque simplemente desaparece, lo que significa que todavía necesitamos algunas

272
00:20:24,370 --> 00:20:24,940
‫cosas.

273
00:20:25,030 --> 00:20:26,890
‫Necesitamos condiciones de ganar-perder.

274
00:20:26,890 --> 00:20:30,490
‫Necesitamos una manera de mostrarle al jugador que ganó o perdió el juego.

275
00:20:30,490 --> 00:20:33,220
‫Y también necesitamos esos efectos especiales.

276
00:20:33,340 --> 00:20:36,430
‫Necesitamos algunos sonidos, necesitamos algunas explosiones.

277
00:20:36,430 --> 00:20:39,520
‫Esas cosas van a llegar muy, muy pronto.

278
00:20:39,520 --> 00:20:41,170
‫Así que felicidades

279
00:20:41,170 --> 00:20:46,570
‫Ya has recorrido un largo camino y solo quedan unos pocos pasos por recorrer.

280
00:20:46,600 --> 00:20:48,310
‫Te veré en el próximo video.

