﻿1
00:00:04,500 --> 00:00:05,370
‫Hola y bienvenido.

2
00:00:05,370 --> 00:00:10,950
‫En esta conferencia, vamos a configurar un capturador para que podamos agarrar nuestra estatua

3
00:00:10,950 --> 00:00:15,090
‫de gárgola y llevarla con nosotros frente a nosotros.

4
00:00:15,390 --> 00:00:17,400
‫Vamos a sumergirnos y ver cómo hacemos esto.

5
00:00:18,180 --> 00:00:24,330
‫Así que es hora de que comencemos a llamar a esta asignación de componente de captura con una rotación.

6
00:00:24,570 --> 00:00:26,760
‫Ahora, como dije antes, en realidad hay dos partes en esto.

7
00:00:26,760 --> 00:00:34,050
‫Necesitamos agarrar el componente y luego también debemos establecer su ubicación de destino y rotación para

8
00:00:34,440 --> 00:00:36,000
‫que se mueva.

9
00:00:36,210 --> 00:00:37,440
‫Así que lo primero es lo primero.

10
00:00:37,440 --> 00:00:44,310
‫En nuestra función de captura, necesitaremos obtener un puntero a nuestro identificador de física.

11
00:00:44,730 --> 00:00:50,760
‫Así que voy a copiar la línea de Begin Play y voy a pasar al capturador y lo voy a

12
00:00:50,760 --> 00:00:51,510
‫poner aquí.

13
00:00:51,750 --> 00:00:55,710
‫Y para protegernos de que este sea nulo.

14
00:00:55,980 --> 00:00:57,270
‫Bueno, ¿qué debería pasar?

15
00:00:57,570 --> 00:01:00,270
‫Bueno, en realidad, no hay nada que queramos hacer.

16
00:01:00,270 --> 00:01:02,820
‫Si no tenemos un mango de física, no podemos agarrar nada.

17
00:01:03,270 --> 00:01:09,450
‫Así que podríamos poner todo el cuerpo de esta función de captura en una declaración if, pero eso puede parecer un

18
00:01:09,450 --> 00:01:10,170
‫poco complicado.

19
00:01:10,200 --> 00:01:13,560
‫Entonces, lo que podemos hacer en su lugar es lo que se conoce como un regreso anticipado.

20
00:01:13,800 --> 00:01:18,420
‫Esencialmente, solo decimos si la física maneja.

21
00:01:19,460 --> 00:01:21,680
‫Es igual a puntero nulo.

22
00:01:21,710 --> 00:01:23,750
‫Tienes que poner un signo de doble igual aquí.

23
00:01:23,750 --> 00:01:25,190
‫De lo contrario, es una tarea.

24
00:01:25,820 --> 00:01:32,330
‫Entonces podemos bajar para hacer algunos aparatos ortopédicos y podemos simplemente poner un retorno aquí.

25
00:01:32,600 --> 00:01:38,210
‫Entonces, lo que esto va a hacer es que si tenemos puntos nulos para el identificador de física, regresa

26
00:01:38,210 --> 00:01:43,460
‫de inmediato y no ejecuta el resto de la función, por lo que es seguro usar la física

27
00:01:43,760 --> 00:01:46,580
‫en el resto de la función. manejar como queramos.

28
00:01:47,420 --> 00:01:48,960
‫Así que vamos a hacer eso.

29
00:01:48,980 --> 00:01:51,960
‫Vamos a bajar a donde tenemos un golpe.

30
00:01:52,000 --> 00:01:54,350
‫Creo que ya no necesitamos estos mensajes de registro.

31
00:01:54,350 --> 00:01:55,880
‫Así que voy a eliminar las declaraciones alt.

32
00:01:56,240 --> 00:02:02,990
‫Básicamente, voy a eliminar todo del cuerpo de la declaración F y usaremos nuestro

33
00:02:02,990 --> 00:02:03,740
‫capturador.

34
00:02:04,100 --> 00:02:12,770
‫Así que vamos a hacer que la física maneje los componentes de agarre de flecha en la ubicación con rotación.

35
00:02:13,070 --> 00:02:16,790
‫Luego tenemos que proporcionarle un componente que estamos tratando de tomar.

36
00:02:17,060 --> 00:02:22,210
‫Si echas un vistazo, lo que espera son tus componentes primitivos.

37
00:02:22,220 --> 00:02:26,960
‫Veamos si tenemos algo por el estilo en nuestro resultado de éxito.

38
00:02:27,310 --> 00:02:33,710
‫Simplemente vaya a la página de documentación y busque sus componentes primitivos y puede ver

39
00:02:33,710 --> 00:02:38,580
‫que obtener componente devolverá el componente primitivo que fue golpeado.

40
00:02:38,630 --> 00:02:39,230
‫Perfecto.

41
00:02:39,230 --> 00:02:40,070
‫Eso es justo lo que necesitamos.

42
00:02:40,430 --> 00:02:47,240
‫Así que tuvimos que buscar el resultado del éxito, no obtener componentes y eso nos dará lo que

43
00:02:47,240 --> 00:02:49,370
‫queremos para el primer argumento.

44
00:02:50,120 --> 00:02:53,870
‫Ahora, el siguiente es un nombre F para un arco.

45
00:02:53,930 --> 00:02:57,380
‫Ahora, en realidad no queremos agarrar nada por un hueso en particular.

46
00:02:57,390 --> 00:03:01,600
‫Este sería el caso si tuviéramos una malla esquelética, pero no la tenemos.

47
00:03:01,610 --> 00:03:06,320
‫Tenemos una malla estática, por lo que solo usamos el nombre, no subrayamos ninguno.

48
00:03:06,770 --> 00:03:10,970
‫Y en términos generales, con nombres F donde estamos hablando de huesos, esto sale bastante.

49
00:03:11,240 --> 00:03:15,170
‫Si no quiere poner nada, use el nombre, no subraye ninguno.

50
00:03:15,380 --> 00:03:18,320
‫Ahora necesitamos la ubicación en la que vamos a agarrarlo.

51
00:03:18,320 --> 00:03:20,230
‫Y ya hemos dicho que hemos investigado esto.

52
00:03:20,240 --> 00:03:29,270
‫Es el punto de impacto del punto del resultado del golpe y luego la rotación, la rotación actual de ese componente hará toda

53
00:03:29,270 --> 00:03:32,930
‫la rotación actual del actor, lo que prefiera.

54
00:03:33,290 --> 00:03:35,360
‫Así que el resultado de aciertos obtiene componentes.

55
00:03:35,360 --> 00:03:37,070
‫Vamos a tomar esos resultados.

56
00:03:37,340 --> 00:03:41,260
‫Obtenga la flecha de punto del componente porque es un puntero.

57
00:03:41,630 --> 00:03:45,770
‫Obtener rotación de componentes como.

58
00:03:45,770 --> 00:03:52,370
‫Así que ahora puede poner los paréntesis de cierre en una línea separada y pondré punto y coma para

59
00:03:52,370 --> 00:03:56,690
‫terminar la declaración y eso debería ser efectivo para captar nuestros componentes.

60
00:03:56,900 --> 00:04:04,100
‫Ahora, la siguiente parte del rompecabezas está en el componente de marca donde queremos usar nuevamente el controlador de física.

61
00:04:04,100 --> 00:04:10,130
‫Así que voy a copiar el código por ahora, sabiendo que copiar el código en tres lugares es demasiado,

62
00:04:10,130 --> 00:04:15,170
‫y es posible que queramos pensar en sacarlo a una función para que podamos reutilizarlo.

63
00:04:15,470 --> 00:04:17,330
‫Pero los componentes de admisión van a usar un controlador de física.

64
00:04:17,330 --> 00:04:22,070
‫Vamos a regresar temprano si no podemos conseguir un identificador de física.

65
00:04:22,550 --> 00:04:26,300
‫Y luego lo que vamos a hacer es intentar establecer esas ubicaciones de destino.

66
00:04:26,300 --> 00:04:35,090
‫Voy a hacer un controlador de física, un conjunto de flechas, una ubicación del objetivo y una rotación.

67
00:04:35,390 --> 00:04:37,280
‫Y pensemos un poco sobre esto.

68
00:04:37,280 --> 00:04:42,110
‫¿Qué tipo de ubicación objetivo nos podría interesar establecer?

69
00:04:42,320 --> 00:04:46,100
‫Bueno, esencialmente, va a ser lo mismo que hicimos con el punto final.

70
00:04:46,100 --> 00:04:52,250
‫Vamos a tomar nuestra ubicación actual, luego la moveremos hacia afuera en la dirección de avance una cierta

71
00:04:52,250 --> 00:04:52,820
‫distancia.

72
00:04:53,150 --> 00:04:54,530
‫Ahora, esto será configurable.

73
00:04:54,530 --> 00:05:00,020
‫Podría usar la distancia máxima de agarre, pero creo que en la práctica se siente demasiado lejos.

74
00:05:00,350 --> 00:05:05,810
‫Entonces, si vamos a nuestro Grandpa Dot H, vamos a crear una propiedad nueva llamada Edit Anywhere.

75
00:05:06,110 --> 00:05:09,920
‫Y va a ser un flotador llamado distancia de espera.

76
00:05:10,280 --> 00:05:12,500
‫Y voy a poner esto en 200.

77
00:05:12,500 --> 00:05:15,080
‫Así que va a estar mucho más cerca del jugador.

78
00:05:15,290 --> 00:05:20,810
‫Ahora, si vamos a obtener un CP, podemos acceder a nuestra función de toma e intentar crear este objetivo.

79
00:05:20,810 --> 00:05:25,970
‫La ubicación tiene que ser un vector F llamado ubicación objetivo.

80
00:05:26,780 --> 00:05:37,250
‫Vamos a hacer que sea igual a la ubicación de un componente más el vector de avance multiplicado por

81
00:05:37,250 --> 00:05:39,740
‫la distancia de espera.

82
00:05:40,400 --> 00:05:42,320
‫Entonces podemos usar eso como la ubicación de destino.

83
00:05:42,320 --> 00:05:47,660
‫Ese va a ser nuestro primer argumento y luego necesitamos la rotación de objetivos.

84
00:05:47,960 --> 00:05:54,620
‫Bueno, para eso, solo voy a usar la rotación del componente actual para que mientras miramos alrededor,

85
00:05:54,980 --> 00:06:03,290
‫vamos a rotar el objeto con nuestra vista para que podamos simplemente obtener la rotación del componente para obtener la rotación

86
00:06:03,290 --> 00:06:07,180
‫de el componente actual de la escena del capturador.

87
00:06:07,400 --> 00:06:12,830
‫Es bueno poner un punto y coma al final de esa línea y volver a compilar y ver cómo funciona.

88
00:06:13,040 --> 00:06:17,750
‫Ahora, después de compilar con éxito, seleccionemos la gárgola y asegurémonos de cambiar su

89
00:06:17,750 --> 00:06:18,910
‫movilidad desde INICIO.

90
00:06:19,040 --> 00:06:25,040
‫Piense en móvil porque lo necesitamos para poder moverse en respuesta a la física y asegurémonos de que esté

91
00:06:25,040 --> 00:06:26,260
‫simulando la física.

92
00:06:26,270 --> 00:06:31,640
‫Vayamos a la categoría de física y marquemos el botón simular física.

93
00:06:31,850 --> 00:06:34,730
‫Vamos a darle al play e intentar retomarlo.

94
00:06:34,880 --> 00:06:39,500
‫Por lo tanto, no sucede nada en este momento, pero parece estar atascado dentro del piso, por lo que no es

95
00:06:39,500 --> 00:06:39,940
‫lo ideal.

96
00:06:39,950 --> 00:06:43,490
‫Intentemos levantarlo un poco para que no quede atascado dentro del piso.

97
00:06:44,060 --> 00:06:47,570
‫Déjalo caer al suelo así y ahora trata de levantarlo.

98
00:06:47,790 --> 00:06:50,290
‫Eso parece haberse quedado atascado dentro del piso otra vez.

99
00:06:50,300 --> 00:06:52,490
‫Así que vamos a intentarlo una segunda vez.

100
00:06:52,760 --> 00:06:53,120
‫Bueno.

101
00:06:53,120 --> 00:06:59,570
‫Así que es un poco poco confiable y, a veces, si lo atrapas de inmediato, atrapa

102
00:06:59,630 --> 00:07:03,380
‫a la gárgola muy bien y puedes atraparla así.

103
00:07:03,380 --> 00:07:10,670
‫Me doy cuenta de que la rotación no es correcta, y esto se debe a que usé algo incorrecto al agarrar el componente

104
00:07:10,670 --> 00:07:11,450
‫de física.

105
00:07:11,450 --> 00:07:17,540
‫Obtuve la rotación de la gárgola y ahora estamos tratando de mantener esa rotación que realmente

106
00:07:17,870 --> 00:07:23,240
‫necesitaba usar era la rotación que estamos usando para tomar la rotación del capturador.

107
00:07:23,510 --> 00:07:29,210
‫Así que sigamos adelante y cambiemos eso y recompilemos y presionemos reproducir de nuevo e intentemos capturarlo.

108
00:07:29,210 --> 00:07:29,780
‫Ahí tienes

109
00:07:30,050 --> 00:07:35,120
‫Esta vez lo agarré y obtuve la rotación correcta, la rotación exacta que tenía.

110
00:07:35,480 --> 00:07:39,290
‫Y pueden ver que parece como si estuviera siendo agarrado de un resorte.

111
00:07:39,290 --> 00:07:44,630
‫Si trato de empujarlo a través de una pared, trata de no atravesar la pared tanto como puede.

112
00:07:44,630 --> 00:07:52,000
‫Eventualmente atraviesa la pared, pero está tratando de observar la física mientras lo muevo.

113
00:07:52,130 --> 00:07:56,840
‫Así que vamos a desafiarte ahora a sacar una nueva función llamada obtener un identificador de física.

114
00:07:56,840 --> 00:07:57,830
‫Va a ser privado.

115
00:07:58,160 --> 00:07:59,270
‫Debería devolver una U.

116
00:07:59,270 --> 00:08:04,130
‫Componente de control de física, y debería eliminar este código duplicado de necesidad de obtener el propietario y

117
00:08:04,130 --> 00:08:05,810
‫encontrar el componente por clase.

118
00:08:06,170 --> 00:08:11,360
‫También puede hacer que se ponga en contacto potencialmente, ver si puede y hacer que se registre.

119
00:08:11,360 --> 00:08:16,850
‫Si no tenemos un componente de control de física, proporcione un registro de advertencia para que aparezca y sepamos que hemos

120
00:08:16,850 --> 00:08:17,810
‫hecho algo mal.

121
00:08:18,200 --> 00:08:19,940
‫Pausa el video y pruébalo.

122
00:08:23,860 --> 00:08:24,190
‫Bueno.

123
00:08:24,190 --> 00:08:24,700
‫Bienvenido de nuevo.

124
00:08:24,730 --> 00:08:29,260
‫En primer lugar, vamos a la cabecera del archivo donde vamos a poner esto en la sección privada.

125
00:08:29,260 --> 00:08:37,150
‫Pero debajo de las propiedades, voy a hacer que devuelva algunas físicas, maneje los componentes y coloque un

126
00:08:37,150 --> 00:08:38,050
‫asterisco aquí.

127
00:08:38,440 --> 00:08:46,240
‫Ahora, debido a que estamos usando este tipo aquí en el encabezado, necesitamos tomar nuestro include y

128
00:08:46,240 --> 00:08:47,680
‫cortarlo del capturador.

129
00:08:47,680 --> 00:08:52,930
‫Entonces, lo incluido con respecto al identificador de física, debemos colocarlo en el punto de captura h

130
00:08:52,930 --> 00:08:55,630
‫donde lo colocaremos encima de la h generada.

131
00:08:55,630 --> 00:08:58,360
‫Eso es lo último que siempre está en nuestra cabeza de archivos.

132
00:08:58,780 --> 00:09:01,600
‫¿Y por qué no necesitamos tenerlo también en el CP?

133
00:09:01,900 --> 00:09:07,270
‫Bueno, porque estamos incluyendo Grab o H, así que cualquier cosa que pongamos, grab it o

134
00:09:07,270 --> 00:09:11,680
‫H estará automáticamente en el CP para que podamos poner eso incluido allí.

135
00:09:12,340 --> 00:09:20,140
‫Ahora podemos bajar a donde estamos definiendo esta función y llamarla el poder de manejar la física de los

136
00:09:20,140 --> 00:09:21,430
‫paréntesis así.

137
00:09:21,910 --> 00:09:29,110
‫Y creo que esto debería ser constante, no debería cambiar nada en nuestro capturador para llamar a esta función.

138
00:09:29,650 --> 00:09:37,540
‫Solo ve al CP, ve al final donde voy a pegar en definición, voy a

139
00:09:37,570 --> 00:09:45,970
‫pegar dos puntos en el frente y luego quitaré el punto y coma, agregando un par de llaves.

140
00:09:46,420 --> 00:09:54,190
‫Y lo que queremos hacer es tomar el lugar donde tenemos este get en línea y simplemente vamos a eliminarlo y

141
00:09:54,190 --> 00:09:56,800
‫reemplazarlo con una física de get.

142
00:09:58,050 --> 00:10:00,140
‫Manejar como jabón.

143
00:10:00,360 --> 00:10:07,350
‫Y luego, en el identificador de física de obtención, podemos simplemente devolver el componente de búsqueda de propietario de obtención por clase, etc.

144
00:10:07,560 --> 00:10:13,050
‫Y ahora podemos reemplazar esto también donde lo estamos haciendo en el componente tic, estamos agarrando el controlador de

145
00:10:13,050 --> 00:10:13,500
‫física.

146
00:10:13,950 --> 00:10:18,660
‫Reemplacemos ese pequeño fragmento de código con obtener un identificador de física.

147
00:10:19,080 --> 00:10:22,860
‫Ahora, es una pieza de código tan pequeña que casi no vale la pena, pero definitivamente vale la

148
00:10:22,860 --> 00:10:27,810
‫pena por la práctica en este punto y por el hecho de que podríamos agregar algunos mensajes de registro ahora y comenzar a jugar.

149
00:10:27,810 --> 00:10:32,760
‫En realidad, no necesitamos que la física se maneje en absoluto, así que solo voy a eliminar ese código allí.

150
00:10:33,180 --> 00:10:37,080
‫Pero lo que voy a hacer es agregar un mensaje de registro.

151
00:10:37,440 --> 00:10:44,040
‫Así que vamos a crear una variable para almacenar nuestro resultado aquí, porque si regresamos y luego tratamos de imprimir un mensaje

152
00:10:44,040 --> 00:10:45,780
‫de registro, eso no funcionará.

153
00:10:46,140 --> 00:10:50,100
‫Así que vamos a tener un nuevo componente de manejo de física llamado resultado.

154
00:10:51,180 --> 00:11:00,270
‫Vamos a regresar de aquí y diremos que si el resultado es igual a un puntero nulo, entonces necesitamos un

155
00:11:00,270 --> 00:11:06,120
‫nuevo registro con una advertencia o, de hecho, un error, de verdad.

156
00:11:06,540 --> 00:11:12,270
‫Y vamos a decir que grabber requiere un nuevo componente de manejo de física.

157
00:11:12,840 --> 00:11:14,700
‫Y luego después de la declaración if.

158
00:11:14,700 --> 00:11:15,780
‫Así que esto sucederá.

159
00:11:15,780 --> 00:11:21,030
‫Sea nulo o no, vamos a devolver el resultado.

160
00:11:21,330 --> 00:11:23,610
‫Así que sigamos adelante y compilemos eso y verifiquemos que todo funcione.

161
00:11:23,970 --> 00:11:30,960
‫Parece haber tenido éxito y puedo ver que debe estar funcionando porque cuando hice clic con el botón izquierdo en la escena,

162
00:11:30,960 --> 00:11:37,230
‫obtengo que se dibujan los orbes azules o de depuración y no se dibujarían si no los tuviéramos.

163
00:11:37,230 --> 00:11:38,640
‫La física maneja los componentes.

164
00:11:38,760 --> 00:11:39,330
‫Buena cosa.

165
00:11:39,330 --> 00:11:45,990
‫Así que en esta lección hemos podido agarrar nuestra estatua de gárgola usando nuestro capturador, aunque a veces puede

166
00:11:45,990 --> 00:11:48,090
‫ser un poco poco confiable.

167
00:11:48,090 --> 00:11:52,110
‫Y vamos a resolver esto en las próximas conferencias, así que los veré allí.

