﻿1
00:00:04,400 --> 00:00:05,330
‫Hola y bienvenido.

2
00:00:05,330 --> 00:00:09,230
‫En esta conferencia, vamos a infligir daño a este actor aquí.

3
00:00:09,260 --> 00:00:13,400
‫Vamos a hacer eso anulando un método virtual llamado recibir daño en el actor.

4
00:00:13,700 --> 00:00:18,320
‫Y pueden ver en el registro aquí, tenemos la salud disminuyendo a medida que disparo a este personaje

5
00:00:18,320 --> 00:00:21,830
‫hasta cero y luego se detiene en cero, sin entrar en números negativos.

6
00:00:21,830 --> 00:00:23,570
‫Así que vamos a sumergirnos y ver cómo se hace eso.

7
00:00:26,480 --> 00:00:32,810
‫Entonces, si bien actualmente podemos dañar a los actores que golpeamos aquí, como este tipo,

8
00:00:33,470 --> 00:00:36,530
‫en realidad no estamos recibiendo ese daño.

9
00:00:36,560 --> 00:00:42,800
‫Así que aquí es donde entran los métodos virtuales de la última lección, porque al igual que comenzar a jugar

10
00:00:42,920 --> 00:00:46,010
‫o tecnología, queremos poder recibir daño en un actor.

11
00:00:46,070 --> 00:00:50,630
‫Ahora, afortunadamente, si vas al actor Dot H y miras un poco aquí, puedes ver que

12
00:00:50,630 --> 00:00:52,940
‫existe este método virtual de recibir daño.

13
00:00:53,300 --> 00:01:00,330
‫Ahora bien, esto también se puede hacer con eventos y posiblemente lo hayas visto así antes de registrarte

14
00:01:00,350 --> 00:01:01,460
‫para eventos.

15
00:01:01,520 --> 00:01:06,920
‫Ahora lo que voy a hacer es simplemente una forma diferente de hacer daño, en la que en realidad tenemos daño

16
00:01:06,920 --> 00:01:09,410
‫almacenado contra el actor en lugar de un componente.

17
00:01:10,220 --> 00:01:15,620
‫Y una manera fácil de recibir ese daño es a través de un método virtual aquí.

18
00:01:16,070 --> 00:01:18,440
‫Y este es el método virtual que vamos a anular.

19
00:01:18,740 --> 00:01:24,860
‫Así que voy a seguir adelante y copiar esto y pasar a nuestro actor en particular, que es el tirador.

20
00:01:25,100 --> 00:01:25,730
‫Va a ser rápido.

21
00:01:25,730 --> 00:01:27,620
‫Puede buscar al tirador.

22
00:01:27,620 --> 00:01:28,550
‫Carácter Punto H.

23
00:01:29,120 --> 00:01:35,200
‫Y lo único que quiero comprobar es dónde entra esto, el actor punto H.

24
00:01:35,870 --> 00:01:41,420
‫Entonces, si nos desplazamos hacia arriba, deberíamos poder ver en qué sección estamos aquí.

25
00:01:42,170 --> 00:01:50,210
‫Así que voy a desplazarme hacia arriba hasta encontrar que, ya sea que estemos en público o lo que sea, estamos en la

26
00:01:50,210 --> 00:01:51,170
‫sección pública.

27
00:01:51,170 --> 00:01:54,500
‫Así que esto debería estar en la sección pública aquí también.

28
00:01:54,530 --> 00:02:00,140
‫Así que voy a pegarlo debajo de nuestra tecnología y configurar el componente de entrada del jugador

29
00:02:00,140 --> 00:02:02,930
‫en el tirador dot h y simplemente pegarlo.

30
00:02:03,320 --> 00:02:10,670
‫Y como dije en la última lección, puede usar override para asegurarse de que realmente está sobrescribiendo un método virtual

31
00:02:10,670 --> 00:02:16,340
‫del padre y no es necesario tener virtual al frente aquí, pero lo mantendremos de todos

32
00:02:16,340 --> 00:02:17,000
‫modos.

33
00:02:17,240 --> 00:02:21,530
‫Y aquí puede ver todos los datos que ingresan para sufrir daños.

34
00:02:21,530 --> 00:02:29,030
‫Tenemos una cantidad de daño, los eventos de daño y el controlador que está causando el daño, el instigador y la

35
00:02:29,030 --> 00:02:30,470
‫causa del daño.

36
00:02:30,470 --> 00:02:34,190
‫Todas esas cosas que habíamos pasado del arma están surgiendo aquí también.

37
00:02:34,190 --> 00:02:34,910
‫Eso es genial.

38
00:02:35,270 --> 00:02:41,000
‫Ahora, si seguimos adelante y hacemos un cambio de control, P crea la implementación o copia y pega, entonces podemos

39
00:02:41,000 --> 00:02:43,610
‫ir y hacer la implementación para recibir daño.

40
00:02:43,910 --> 00:02:49,190
‫Pero lo primero que hay que tener en cuenta es que cada vez que anulamos

41
00:02:49,190 --> 00:02:56,420
‫algo, queremos pensar en llamar a la versión de la clase principal de tomar daño porque puede haber alguna implementación

42
00:02:56,750 --> 00:02:58,340
‫allí que deba ejecutarse.

43
00:02:58,970 --> 00:03:00,080
‫Así que eso es lo que vamos a hacer.

44
00:03:00,080 --> 00:03:01,040
‫Hacemos esto siempre.

45
00:03:01,040 --> 00:03:02,150
‫Lo hemos hecho con tecnología.

46
00:03:02,150 --> 00:03:03,650
‫Lo hemos hecho con Begin Play.

47
00:03:03,650 --> 00:03:07,520
‫Puede ver que siempre tenemos este súper genial al principio, y eso es porque cuando

48
00:03:07,520 --> 00:03:10,970
‫anulamos un método, lo reescribimos por completo, eliminamos por completo ese comportamiento.

49
00:03:11,240 --> 00:03:16,910
‫Entonces, si queremos ese comportamiento, que normalmente hacemos, entonces siempre debemos comenzar con un genial a

50
00:03:16,940 --> 00:03:17,420
‫súper.

51
00:03:17,600 --> 00:03:19,760
‫Así que vamos a hacer un buen daño.

52
00:03:21,420 --> 00:03:23,460
‫Eso va a tomar la cantidad de daño.

53
00:03:23,550 --> 00:03:25,290
‫Así que aquí es donde se pone un poco tedioso.

54
00:03:25,290 --> 00:03:27,810
‫Lamentablemente, mi herramienta de autocompletar no hace esto por nosotros.

55
00:03:27,810 --> 00:03:28,970
‫Evento de daño.

56
00:03:30,560 --> 00:03:32,600
‫Entonces, ¿cuál fue el siguiente?

57
00:03:32,600 --> 00:03:34,760
‫Teníamos el control.

58
00:03:35,090 --> 00:03:37,330
‫Entonces, el instigador del evento, es solo una copia.

59
00:03:37,910 --> 00:03:42,140
‫Y luego tenemos al causante del daño, que es el actor.

60
00:03:43,280 --> 00:03:48,080
‫Entonces, todo eso se llama a la implementación de los padres de tomar daño.

61
00:03:48,650 --> 00:03:52,130
‫Y lo único es que esto tiene un tipo de retorno.

62
00:03:52,220 --> 00:03:54,400
‫Así que se aplicó el daño real.

63
00:03:54,410 --> 00:03:55,550
‫Así que vamos a flotar.

64
00:03:56,720 --> 00:03:59,090
‫Daño aplicado?

65
00:03:59,390 --> 00:04:01,430
‫¿Es el valor de retorno de tomar daño?

66
00:04:01,430 --> 00:04:04,760
‫Entonces, ¿vamos a mantener ese daño aplicado allí?

67
00:04:05,360 --> 00:04:11,390
‫Y, de manera realista, será lo mismo que la cantidad de daño en nuestro caso de uso particular, pero

68
00:04:11,390 --> 00:04:14,330
‫no necesariamente, por lo que usaremos el daño aplicado.

69
00:04:14,780 --> 00:04:20,750
‫Lo siguiente que queremos hacer es conservar la información sobre cuánta salud tenemos realmente.

70
00:04:21,140 --> 00:04:24,770
‫Ahora, la forma en que voy a hacer esto es con dos variables aquí.

71
00:04:25,100 --> 00:04:30,200
‫La primera es que voy a hacer ambas propiedades nuevas porque quiero que la salud sea visible en el

72
00:04:30,200 --> 00:04:31,880
‫inspector, al menos por ahora.

73
00:04:32,510 --> 00:04:37,160
‫Y vamos a tener la propiedad del primer año con la máxima salud.

74
00:04:37,160 --> 00:04:39,410
‫Eso es a lo que inicializamos la salud inicialmente.

75
00:04:39,710 --> 00:04:47,960
‫Por lo tanto, su propiedad, será una edición predeterminada solo porque se usará al comenzar la reproducción.

76
00:04:48,260 --> 00:04:53,090
‫Entonces, cambiar ese valor de salud máxima después del hecho, no tendrá ningún impacto.

77
00:04:53,090 --> 00:05:01,310
‫Así que Max Health, voy a configurar Max Health en 100 aquí y luego vamos a tener otra propiedad aquí, que, como dije,

78
00:05:01,310 --> 00:05:05,960
‫será una propiedad de un año solo para que podamos inspeccionar eso.

79
00:05:06,350 --> 00:05:09,530
‫Y voy a tener eso como visible en cualquier lugar.

80
00:05:10,660 --> 00:05:15,010
‫Pero no editable porque no queremos poder cambiar esa salud, al menos no por el momento.

81
00:05:15,580 --> 00:05:18,700
‫Es posible que desee eso para fines de depuración, pero yo no.

82
00:05:19,090 --> 00:05:26,920
‫Así que vamos a tener salud aquí y al comenzar a jugar vamos a configurarlo para que esa salud.

83
00:05:28,020 --> 00:05:30,720
‫Es igual a la salud máxima.

84
00:05:31,140 --> 00:05:32,430
‫Así que empezamos con el spawn.

85
00:05:32,430 --> 00:05:35,640
‫Tenemos nuestra máxima salud y luego podemos empezar a disminuir.

86
00:05:35,640 --> 00:05:41,550
‫Establece tiempo para un desafío para que disminuyas la salud del personaje.

87
00:05:41,910 --> 00:05:48,420
‫Así que vas a usar el daño aplicado aquí en lugar de la otra opción aquí.

88
00:05:48,420 --> 00:05:54,900
‫Así que tenemos nuestros brotes, personaje, punto, CP que reciben daño, tenemos una cantidad de daño, pero en realidad queremos

89
00:05:54,900 --> 00:05:59,100
‫que se aplique el daño que proviene de recibir daño porque eso podría

90
00:05:59,100 --> 00:06:01,800
‫haberse reducido mediante algún proceso en el padre.

91
00:06:02,670 --> 00:06:03,360
‫Así que hacemos eso.

92
00:06:03,360 --> 00:06:10,380
‫Luego, reducimos el valor de la salud y registramos los resultados solo por simplicidad para que puedas verificar

93
00:06:10,380 --> 00:06:16,020
‫que cuando disparas a ese aliado, su salud está disminuyendo y luego lo pruebas.

94
00:06:16,050 --> 00:06:17,550
‫Así que pausa el video y pruébalo.

95
00:06:17,970 --> 00:06:19,140
‫Bien, bienvenido de nuevo.

96
00:06:19,140 --> 00:06:20,250
‫Así que démosle una oportunidad.

97
00:06:20,670 --> 00:06:27,630
‫Entonces, la salud, básicamente queremos disminuir eso por el daño aplicado.

98
00:06:29,290 --> 00:06:30,580
‫¿Pero es eso suficiente?

99
00:06:30,910 --> 00:06:36,850
‫Bueno, ¿y si el daño aplicado es mayor que la cantidad de salud que nos queda?

100
00:06:37,420 --> 00:06:43,600
‫Bueno, en ese caso, probablemente queramos que el daño aplicado sea esa cantidad de salud.

101
00:06:44,020 --> 00:06:47,560
‫Entonces, la forma en que podemos hacer esto es que podemos decir que el daño se aplicó.

102
00:06:48,830 --> 00:06:51,940
‫Debe ser igual a los puntos matemáticos f.

103
00:06:51,950 --> 00:06:54,320
‫Hombres de la salud.

104
00:06:55,640 --> 00:06:57,560
‫Y el daño aplicado.

105
00:06:57,980 --> 00:07:00,770
‫Así que este es el daño que básicamente queremos aplicar.

106
00:07:01,250 --> 00:07:05,990
‫Así que vamos a seguir adelante y cambiarle el nombre en lugar de llamarlo daño aplicado.

107
00:07:06,410 --> 00:07:09,770
‫Voy a llamarlo el daño a aplicar.

108
00:07:10,780 --> 00:07:19,480
‫Daño para aplicar como Saigón, cambie el nombre de aquí y luego el daño para aplicar contra la salud menos el

109
00:07:19,480 --> 00:07:22,120
‫daño para aplicar que tenga sentido.

110
00:07:22,120 --> 00:07:25,210
‫Y básicamente, en el peor de los casos, será la salud.

111
00:07:25,210 --> 00:07:28,030
‫Así que eso va a poner nuestra salud a cero.

112
00:07:28,930 --> 00:07:32,890
‫Y recuerda, se supone que debemos devolver el daño que realmente aplicamos.

113
00:07:33,070 --> 00:07:41,710
‫Entonces, para devolver el daño para aplicar, que ahora se ha aplicado y finalmente queremos un registro de UII al final aquí, que

114
00:07:41,710 --> 00:07:45,160
‫solo será una advertencia para que podamos verlo.

115
00:07:46,180 --> 00:07:54,940
‫Y quiero que esta sea la salud que queda aquí y será un porcentaje F, 2% F minúscula para mostrar un

116
00:07:54,940 --> 00:07:55,720
‫flotador.

117
00:07:56,350 --> 00:08:02,770
‫Y luego podemos aparecer en la salud allí mismo y seguir adelante y presionar compilar.

118
00:08:04,920 --> 00:08:05,160
‫Ahora.

119
00:08:05,190 --> 00:08:08,400
‫El mío se compiló después de corregir un punto y coma faltante.

120
00:08:08,400 --> 00:08:15,810
‫Aquí, vamos y asegurémonos de que tenemos herramientas de desarrollador de ventanas y queremos el registro de salida aquí para que podamos

121
00:08:15,840 --> 00:08:17,760
‫ver ese mensaje de registro.

122
00:08:18,180 --> 00:08:25,650
‫Y voy a seguir adelante y presionar reproducir e intentar dispararle a este personaje si le disparo.

123
00:08:25,670 --> 00:08:26,120
‫Ahí tienes

124
00:08:26,130 --> 00:08:30,150
‫La salud dejó 90, 76, t, bla, bla, bla, todo el camino hasta cero.

125
00:08:30,150 --> 00:08:35,280
‫Y si sigo disparando, no vamos por debajo de cero debido a ese f math punto min.

126
00:08:35,640 --> 00:08:38,340
‫Eso me dice que tenemos nuestra salud configurada correctamente.

127
00:08:38,340 --> 00:08:42,150
‫Solo otra forma de hacerlo en lugar de hacerlo dentro de un componente.

128
00:08:42,150 --> 00:08:46,380
‫Puede hacerlo dentro del actor, así como algunos pros y contras de ese enfoque.

129
00:08:46,740 --> 00:08:51,750
‫Eventualmente, es posible que desee eliminar esto en componentes separados para poder reutilizarlo en diferentes

130
00:08:51,750 --> 00:08:52,200
‫elementos.

131
00:08:52,500 --> 00:08:58,200
‫Pero S es solo otra forma, como digo ahora, porque este personaje no se ve particularmente muerto después de que

132
00:08:58,200 --> 00:08:59,970
‫lo derribamos hasta cero salud.

133
00:09:00,180 --> 00:09:02,910
‫Necesitamos arreglar las animaciones para soportar eso.

134
00:09:02,910 --> 00:09:05,940
‫Así que veremos eso en la próxima conferencia y los veré allí.

