﻿1
00:00:04,350 --> 00:00:05,010
‫Hola y bienvenido.

2
00:00:05,010 --> 00:00:11,900
‫El tema de esta conferencia será la función de recibir daño del actor y cómo la llamamos.

3
00:00:11,910 --> 00:00:14,460
‫Entremos y descubramos todo al respecto.

4
00:00:15,830 --> 00:00:21,050
‫Entonces, para que podamos causar daño a algo, necesitamos tener algo que

5
00:00:21,050 --> 00:00:22,010
‫podamos golpear.

6
00:00:22,520 --> 00:00:29,210
‫Así que vayamos a la ruta de nuestro navegador de contenido y traigamos a uno de los personajes del tirador de BP.

7
00:00:29,870 --> 00:00:36,110
‫Porque en realidad lo que sucede es que si traes un personaje a la escena, automáticamente Unreal hará que

8
00:00:36,110 --> 00:00:42,140
‫este personaje sea controlado por el aire y los que aparezcan al inicio del jugador serán controlados por

9
00:00:42,140 --> 00:00:43,070
‫el jugador.

10
00:00:43,190 --> 00:00:44,600
‫Eso es genial.

11
00:00:44,600 --> 00:00:45,830
‫Ese es exactamente el comportamiento que queremos.

12
00:00:45,860 --> 00:00:51,140
‫Si sigo adelante y presiono alt p, notará que en realidad estoy en el punto de generación incorrecto, por lo que

13
00:00:51,140 --> 00:00:53,750
‫tal vez quiera eliminar este inicio del segundo jugador.

14
00:00:54,140 --> 00:00:56,900
‫Si presiono LP ahora, estará en la ubicación correcta.

15
00:00:57,200 --> 00:00:58,580
‫Ahí está mi enemigo.

16
00:00:58,580 --> 00:01:00,020
‫Puedo disparar al enemigo.

17
00:01:00,020 --> 00:01:03,100
‫Obtengo el efecto de los golpes, pero obviamente no estoy haciendo ningún daño.

18
00:01:03,110 --> 00:01:04,040
‫No todavía, de todos modos.

19
00:01:04,670 --> 00:01:07,130
‫Y hacer daño es un proceso de dos partes.

20
00:01:07,520 --> 00:01:12,440
‫La primera parte envía el daño y la segunda parte lo recibe.

21
00:01:12,680 --> 00:01:18,440
‫En esta lección, vamos a tratar con el envío de daño al jugador y las llamadas de función involucradas

22
00:01:18,440 --> 00:01:19,100
‫con eso.

23
00:01:19,910 --> 00:01:28,040
‫Entonces, el principal que vamos a ver está en el actor Dot H y estamos buscando una llamada

24
00:01:28,040 --> 00:01:30,560
‫de función llamada tomar daño.

25
00:01:31,430 --> 00:01:35,810
‫Y puedes ver aquí que esta función virtual aquí devuelve un flotador.

26
00:01:35,930 --> 00:01:41,630
‫Lo que está devolviendo es el daño real aplicado al actor, la cantidad real que realmente se aplicó.

27
00:01:42,500 --> 00:01:50,750
‫Y lo que entra es la cantidad de daño, un evento de daño, que nos da más información sobre eso, el

28
00:01:50,750 --> 00:01:51,980
‫daño que ocurrió.

29
00:01:52,880 --> 00:01:54,380
‫Tenemos un instigador.

30
00:01:54,620 --> 00:01:58,460
‫Entonces, ¿eso quiere decir quién fue el controlador responsable de causar este daño?

31
00:01:59,120 --> 00:02:03,620
‫Y luego el daño causado, ¿cuál es el responsable del actor?

32
00:02:03,890 --> 00:02:06,350
‫Entonces, en este caso, podría ser un arma.

33
00:02:06,350 --> 00:02:10,130
‫¿O está diciendo aquí el proyectil que explotó, la piedra que te cayó encima?

34
00:02:10,700 --> 00:02:15,590
‫En este caso, el arma que te disparó será el actor responsable.

35
00:02:16,100 --> 00:02:18,710
‫Así que eso es tomar daño en pocas palabras.

36
00:02:18,980 --> 00:02:24,110
‫La mayor parte de eso debería ser bastante sencillo de armar con la excepción de esta estructura de

37
00:02:24,110 --> 00:02:25,220
‫evento de daño.

38
00:02:25,220 --> 00:02:26,450
‫Y eso es un poco más complicado.

39
00:02:26,450 --> 00:02:32,080
‫Entonces, echemos un vistazo a esta estructura de eventos de daño y veamos qué podemos hacer.

40
00:02:32,090 --> 00:02:34,130
‫¿Cómo se va a componer?

41
00:02:34,130 --> 00:02:35,750
‫¿Cómo vamos a armar esto?

42
00:02:36,110 --> 00:02:42,310
‫Ahora, no es inmediatamente obvio, pero en realidad hay dos subtipos para este evento de daño.

43
00:02:42,320 --> 00:02:47,300
‫En la práctica, en realidad no creará un evento de daño EF,

44
00:02:47,300 --> 00:02:54,230
‫sino que creará un evento de daño de punto EF, o creará un evento de daño radial EF.

45
00:02:54,470 --> 00:02:58,160
‫Esos son los dos tipos principales de daño que existen en Unreal.

46
00:02:58,370 --> 00:03:02,300
‫Puedes crear más tipos diferentes de daño para tus propias cosas personalizadas.

47
00:03:02,300 --> 00:03:08,480
‫Es posible que tenga un daño de fuego con diferentes parámetros, pero en nuestro caso estamos interesados

48
00:03:08,480 --> 00:03:11,930
‫en el daño radial EF radial y puntual.

49
00:03:11,930 --> 00:03:18,350
‫Entonces, radial de nuevo sería algo así como una granada que explota, en cuyo caso quieres decir, está bien, ¿dónde

50
00:03:18,350 --> 00:03:20,950
‫está el radio, cuál es la caída?

51
00:03:20,960 --> 00:03:27,440
‫Todo ese tipo de cosas en las que el punto de daño suena mucho más apropiado para cosas como las

52
00:03:27,440 --> 00:03:28,070
‫armas.

53
00:03:28,550 --> 00:03:35,900
‫Así que vamos a crear un evento de daño de punto EF y vamos a buscar el constructor, aquí

54
00:03:35,900 --> 00:03:40,040
‫está el constructor, y podemos ver lo que está absorbiendo.

55
00:03:40,250 --> 00:03:41,690
‫Está tomando la cantidad de daño de nuevo.

56
00:03:41,690 --> 00:03:43,220
‫Así que eso es un poco de repetición allí.

57
00:03:43,700 --> 00:03:48,350
‫Estamos teniendo el resultado de golpe que causó que se produjera este daño puntual.

58
00:03:48,950 --> 00:03:51,350
‫Entonces estamos teniendo la dirección de tiro.

59
00:03:51,350 --> 00:03:51,650
‫Estupendo.

60
00:03:51,650 --> 00:03:52,850
‫Ya lo hemos calculado.

61
00:03:52,850 --> 00:03:58,160
‫Estaba pensando un poco más adelante cuando hicimos eso en la lección anterior y luego esta subclase

62
00:03:58,160 --> 00:03:59,500
‫de tipo de daño.

63
00:03:59,510 --> 00:04:02,690
‫Ahora esto se puede utilizar para pasar más información.

64
00:04:02,690 --> 00:04:08,420
‫De hecho, en lugar de crear un tipo de evento de daño diferente, probablemente crearías un tipo

65
00:04:08,420 --> 00:04:09,470
‫de daño diferente.

66
00:04:09,470 --> 00:04:12,770
‫Así que podrías tener un tipo de fuego o algo así.

67
00:04:13,040 --> 00:04:18,950
‫En nuestro caso, debido a que no necesitamos ningún tipo de daño, no estamos haciendo daño por fuego ni nada

68
00:04:18,950 --> 00:04:20,870
‫extra como ese daño por veneno.

69
00:04:21,170 --> 00:04:25,070
‫Entonces, lo que vamos a hacer es simplemente pasar un punto nulo aquí.

70
00:04:25,400 --> 00:04:32,030
‫Así que intentemos construir uno de estos juntos y luego dejaré que enfríes ese evento de recibir daño.

71
00:04:33,050 --> 00:04:39,650
‫Entonces, lo primero que debe hacer es pegar el tipo, lo llamaremos el evento de daño y

72
00:04:39,650 --> 00:04:41,270
‫luego lo construiremos.

73
00:04:41,660 --> 00:04:45,830
‫En primer lugar, las cantidades de daño, bueno, todavía no tenemos uno de estos para el arma.

74
00:04:45,830 --> 00:04:47,870
‫No sabemos cuánto daño hace.

75
00:04:48,260 --> 00:04:50,900
‫Entonces podemos seguir adelante y crear algo de información.

76
00:04:50,900 --> 00:04:52,520
‫Ya tienen un alcance máximo.

77
00:04:52,820 --> 00:04:54,620
‫Queremos más propiedades aquí.

78
00:04:54,680 --> 00:05:00,410
‫Va a ser una edición en cualquier lugar, lo que nos permitirá decir daños por flotación.

79
00:05:00,410 --> 00:05:01,370
‫¿Cuánto daño hacemos?

80
00:05:01,370 --> 00:05:05,720
‫Voy a hacerle un daño de diez y luego podemos usar esto en C++.

81
00:05:05,720 --> 00:05:09,050
‫Entonces, el daño es lo que vamos a pasar como el primer argumento.

82
00:05:09,590 --> 00:05:11,480
‫¿El segundo es ese resultado de golpe?

83
00:05:11,480 --> 00:05:13,400
‫Bueno, afortunadamente, tenemos los resultados llamados hit.

84
00:05:14,500 --> 00:05:22,390
‫Luego, lo siguiente será la dirección de disparo que ya calculamos para nuestro emisor en la

85
00:05:22,390 --> 00:05:23,050
‫ubicación.

86
00:05:24,000 --> 00:05:29,490
‫Luego vamos a ver la subclase, que solo será un puntero nulo.

87
00:05:30,180 --> 00:05:31,740
‫Bien, entonces eso está hecho.

88
00:05:31,740 --> 00:05:36,000
‫Lo siguiente sería localizar al actor que estamos tratando de dañar.

89
00:05:36,010 --> 00:05:38,310
‫Eso es bastante sencillo por el golpe que haces.

90
00:05:38,790 --> 00:05:41,340
‫Hit dot get actor aquí.

91
00:05:42,150 --> 00:05:48,570
‫Pero deberá verificar que esto no sea nulo porque no queremos terminar con un actor nulo al

92
00:05:48,570 --> 00:05:52,360
‫que estamos tratando de dañar o vamos a terminar fallando.

93
00:05:53,220 --> 00:05:58,750
‫Entonces, su desafío será llamar a la verificación de la función de daño para que el actor sea nulo.

94
00:05:58,770 --> 00:06:04,650
‫En primer lugar, no queremos un actor nulo y llame a tomar daño y ver si puede compilarlo.

95
00:06:04,650 --> 00:06:06,120
‫Saca el video y pruébalo.

96
00:06:08,450 --> 00:06:08,640
‫Bueno.

97
00:06:08,660 --> 00:06:09,230
‫Bienvenido de nuevo.

98
00:06:09,740 --> 00:06:12,200
‫Así que tenemos nuestro personaje aquí.

99
00:06:12,350 --> 00:06:13,520
‫Solo voy a llamar a esto.

100
00:06:14,000 --> 00:06:15,650
‫Voy a darle a esto una pequeña variable.

101
00:06:15,650 --> 00:06:23,900
‫Entonces, un puntero de actor será el actor de éxito y luego vamos a seguir adelante y hacer una declaración if aquí,

102
00:06:23,900 --> 00:06:31,700
‫básicamente diciendo que si el actor de éxito no es igual a un puntero nulo, entonces vamos a seguir adelante

103
00:06:31,700 --> 00:06:37,700
‫con este actor de éxito para llamar a la función de tomar daño en él.

104
00:06:38,450 --> 00:06:42,800
‫Y vamos a hacer la cantidad de daño aquí son los primeros argumentos.

105
00:06:43,160 --> 00:06:44,600
‫¿Cuál fue el segundo?

106
00:06:44,600 --> 00:06:49,190
‫Solo voy a navegar de regreso a tomar daño y echar un vistazo.

107
00:06:49,190 --> 00:06:54,470
‫Entonces, el siguiente es la estructura que hemos creado para este evento de daño.

108
00:06:54,620 --> 00:06:56,300
‫Pongamos eso en un segundo.

109
00:06:56,750 --> 00:07:00,740
‫Luego vamos a echar un vistazo al controlador que creó esto.

110
00:07:00,740 --> 00:07:02,420
‫Bueno, ese es nuestro controlador.

111
00:07:02,420 --> 00:07:05,180
‫El controlador de armas es el que hace el daño.

112
00:07:05,180 --> 00:07:11,150
‫Y luego este es el instigador fue el último parámetro en el daño de ataque.

113
00:07:11,150 --> 00:07:18,950
‫Y probablemente solo queramos construir esta estructura dentro de este si el actor no es igual a puntos nulos porque no

114
00:07:18,950 --> 00:07:23,540
‫es necesario si no tenemos un actor al que aplicar este daño.

115
00:07:24,560 --> 00:07:28,490
‫Así que repasemos y compilemos y veamos si esto va a funcionar.

116
00:07:28,850 --> 00:07:30,230
‫Así que tengo un error en mi registro.

117
00:07:30,260 --> 00:07:31,790
‫Veamos qué está pasando.

118
00:07:31,790 --> 00:07:33,440
‫Oh, solo me falta un punto y coma.

119
00:07:33,650 --> 00:07:34,760
‫Bueno, eso es bastante fácil.

120
00:07:34,760 --> 00:07:37,010
‫Uno para arreglar después de obtener el segundo acto allí.

121
00:07:37,010 --> 00:07:38,060
‫Vamos y volvamos a intentarlo.

122
00:07:38,840 --> 00:07:39,230
‫Frio.

123
00:07:39,230 --> 00:07:45,920
‫Todo se ha compilado con éxito y podemos seguir adelante y jugar y simplemente verificar ese conjunto.

124
00:07:46,070 --> 00:07:51,950
‫Disparar no nos dará ningún error nulo ni intentará bloquear el motor.

125
00:07:52,360 --> 00:07:53,660
‫Parece que está bien.

126
00:07:54,140 --> 00:08:00,740
‫Así que vamos a pasar a la próxima lección donde vamos a tratar de recibir el daño de este actor aquí

127
00:08:00,740 --> 00:08:03,350
‫que hemos colocado en el nivel C que.

