﻿1
00:00:04,370 --> 00:00:05,300
‫Hola y bienvenido.

2
00:00:05,300 --> 00:00:10,190
‫En esta lección, vamos a hacer nuestro movimiento, hacer algunos movimientos, marcando una casilla de verificación.

3
00:00:10,190 --> 00:00:14,570
‫Habilitaremos que se mueva y se desplace a una velocidad constante.

4
00:00:14,810 --> 00:00:19,370
‫Y vamos a hacer esto usando algunas funciones de biblioteca esta vez desde adentro.

5
00:00:19,370 --> 00:00:19,970
‫Irreal.

6
00:00:20,210 --> 00:00:24,860
‫Así que pondremos a prueba todo nuestro conocimiento de cabecera de archivos e incluye.

7
00:00:24,860 --> 00:00:26,510
‫Vamos a sumergirnos y ver cómo funciona.

8
00:00:27,470 --> 00:00:34,610
‫Entonces, la forma en que quiero que funcione este movimiento es que quiero que se mueva sin problemas desde donde comenzó hasta

9
00:00:34,610 --> 00:00:38,510
‫un desplazamiento objetivo durante un período de una cierta cantidad de segundos.

10
00:00:38,510 --> 00:00:43,610
‫Entonces, la forma en que necesitaremos configurar esto es agregar algunas propiedades nuevas en el archivo de encabezado.

11
00:00:43,610 --> 00:00:48,950
‫Entonces, comencemos agregando una sección privada al encabezado del archivo

12
00:00:48,950 --> 00:00:58,850
‫y luego agregaremos una nueva propiedad que se agregará en cualquier lugar, que definirá el desplazamiento, el desplazamiento del movimiento.

13
00:00:59,090 --> 00:01:03,410
‫Entonces, ¿qué tan lejos debe moverse este motor cuando se activa?

14
00:01:03,890 --> 00:01:08,570
‫Entonces, la forma en que vamos a hacer eso, usará un vector F y lo llamaré desplazamiento

15
00:01:08,600 --> 00:01:11,780
‫de movimiento, así que no le daré un valor predeterminado.

16
00:01:12,020 --> 00:01:13,400
‫Lo haremos en el editor.

17
00:01:13,940 --> 00:01:19,310
‫Luego, voy a crear otra propiedad U que nuevamente se agregará en cualquier lugar,

18
00:01:19,310 --> 00:01:23,780
‫que será la cantidad de tiempo que lleva moverse al objetivo.

19
00:01:24,140 --> 00:01:29,030
‫Así que vamos a hacer que sea un flotador, que es tiempo de movimiento.

20
00:01:29,830 --> 00:01:33,140
‫Voy a configurar eso en un valor predeterminado de, digamos, 4 segundos.

21
00:01:33,440 --> 00:01:39,680
‫Ahora, hay una cosa más que quiero incluir aquí, que es un booleano solo

22
00:01:39,680 --> 00:01:47,000
‫por ahora, que nos permitirá activar el movimiento para que se mueva hacia abajo cuando activemos este booleano.

23
00:01:47,000 --> 00:01:52,700
‫Así que vamos a crear otra propiedad nueva de nuevo, editar en cualquier lugar para que podamos agregarla incluso mientras

24
00:01:52,700 --> 00:01:53,360
‫estamos jugando.

25
00:01:53,780 --> 00:02:00,860
‫Esto va a ser un valor booleano que dice que debe moverse y, de forma predeterminada, se establecerá en falso.

26
00:02:01,220 --> 00:02:07,640
‫Entonces, cuando marcamos esto en el editor, cuando estamos jugando, irá y se moverá a su compensación de

27
00:02:07,640 --> 00:02:08,600
‫movimiento objetivo.

28
00:02:08,780 --> 00:02:13,310
‫Ahora, anteriormente, cuando teníamos un componente móvil, hacíamos todos los pasos manualmente.

29
00:02:13,310 --> 00:02:16,460
‫Pero quiero mostrarles que en realidad hay algunas funciones integradas para hacer.

30
00:02:16,460 --> 00:02:23,330
‫Muchos de los cálculos que necesitamos están integrados directamente en Unreal y también hay una función llamada

31
00:02:23,330 --> 00:02:24,620
‫V interpret constant.

32
00:02:24,830 --> 00:02:28,460
‫Y lo interesante de esto, echemos un vistazo a los comentarios.

33
00:02:28,460 --> 00:02:36,500
‫Entonces, interpola un vector desde un vector actual a un vector objetivo usando un paso constante.

34
00:02:36,890 --> 00:02:43,880
‫Eso significa que, con el tiempo, nos moveremos de la corriente al objetivo a cierta velocidad, y lo hará

35
00:02:43,880 --> 00:02:47,300
‫constantemente, lo que suena exactamente como lo que queremos.

36
00:02:47,300 --> 00:02:52,160
‫Queremos movernos desde nuestra ubicación actual a una ubicación de compensación de destino a una velocidad constante.

37
00:02:52,760 --> 00:02:57,140
‫Ahora puede ver que echa un vistazo a la sintaxis de esta función.

38
00:02:57,140 --> 00:02:59,990
‫Puede ver que tiene un tipo de retorno de vector.

39
00:02:59,990 --> 00:03:03,380
‫Así que esa es la nueva ubicación que está interpolando.

40
00:03:03,860 --> 00:03:06,590
‫Entonces tiene dos entradas.

41
00:03:06,590 --> 00:03:14,540
‫Tenemos un vector F actual y no nos preocupemos por los otros símbolos alrededor de este efecto por ahora, solo lo

42
00:03:14,810 --> 00:03:21,650
‫importante es que es un factor actual y luego el objetivo que queremos que alcance eventualmente, luego

43
00:03:22,250 --> 00:03:31,460
‫tiene el Delta time, por lo que usa esto para hacer que la velocidad de fotogramas de movimiento sea independiente y la velocidad de

44
00:03:31,460 --> 00:03:32,120
‫interpolación.

45
00:03:32,120 --> 00:03:37,040
‫Entonces, ¿qué tan rápido deberíamos movernos desde nuestra ubicación actual hasta el objetivo?

46
00:03:37,220 --> 00:03:45,500
‫Ahora notará que aquí en la documentación tiene una sección que dice incluir y esto le indica la

47
00:03:45,500 --> 00:03:51,740
‫línea de inclusión que necesitará en su archivo C++ para poder usar esta

48
00:03:51,740 --> 00:03:52,220
‫función.

49
00:03:52,220 --> 00:04:00,770
‫Y como hemos visto en el video anterior, la línea de inclusión nos permite copiar las definiciones de este

50
00:04:00,770 --> 00:04:02,240
‫archivo en particular.

51
00:04:02,450 --> 00:04:05,930
‫Y una de las definiciones es la definición de esta función.

52
00:04:05,930 --> 00:04:13,220
‫Entonces, nos permite usar esta constante de intercepción de V para ahora que la V delante de esta función básicamente

53
00:04:13,220 --> 00:04:15,110
‫significa que interpola en vectores.

54
00:04:15,110 --> 00:04:20,660
‫Es por eso que se llama v interpret a diferencia de otras funciones de interpolación que también están disponibles en

55
00:04:20,930 --> 00:04:22,220
‫este archivo de biblioteca.

56
00:04:22,490 --> 00:04:24,080
‫Así que echemos un vistazo a cómo lo usaríamos.

57
00:04:24,080 --> 00:04:29,810
‫En primer lugar, vamos a copiar la línea de inclusión de la documentación y vamos a pasar a nuestro

58
00:04:29,810 --> 00:04:34,280
‫ACP de movimiento donde queremos implementar esto en el cuerpo del componente de marca.

59
00:04:34,700 --> 00:04:38,600
‫Pero incluyen que no incluimos dentro del cuerpo del componente tick.

60
00:04:38,600 --> 00:04:41,630
‫Tenemos que hacer el include all en la parte superior del archivo.

61
00:04:42,170 --> 00:04:44,180
‫Así que ahí es donde voy a poner el mío.

62
00:04:44,190 --> 00:04:47,620
‫Voy a poner el mío después del include de move a dot h.

63
00:04:47,630 --> 00:04:54,050
‫Así que vamos a poner e incluir para matemáticas una barra inclinada unreal math utility dot h.

64
00:04:54,830 --> 00:04:59,870
‫Ahora lo que podemos hacer es usar la función dentro de nuestro componente tick.

65
00:04:59,870 --> 00:05:03,780
‫Simplemente deshagámonos del código que ya tenemos y marquemos compilar.

66
00:05:04,020 --> 00:05:09,030
‫Porque estábamos usando eso para entender cómo llamar funciones en otros actores.

67
00:05:10,230 --> 00:05:17,130
‫Y lo que debemos hacer es si se desplaza hacia arriba, puede ver que la forma de llamar a esto es f math colon colon

68
00:05:17,130 --> 00:05:18,700
‫V in tap constant to.

69
00:05:18,750 --> 00:05:27,180
‫Así que estamos haciendo este operador de dos puntos que mira dentro de la clase matemática F, que

70
00:05:27,180 --> 00:05:29,880
‫organiza todas estas utilidades matemáticas.

71
00:05:30,360 --> 00:05:33,110
‫Así que vamos a hacer matemáticas F.

72
00:05:33,330 --> 00:05:34,220
‫Colon.

73
00:05:35,430 --> 00:05:41,370
‫Y aquí puede ver un montón de autocompletar para diferentes funciones matemáticas incluidas en ese archivo de

74
00:05:41,370 --> 00:05:44,580
‫encabezado que acabamos de incluir en este archivo.

75
00:05:44,790 --> 00:05:47,960
‫Así que puedes echar un vistazo, ver cualquiera de las cosas interesantes que hay aquí.

76
00:05:47,960 --> 00:05:55,580
‫Puedo ver un montón de interpolaciones e interpolaciones circulares, etc. pero queríamos que la v interpretara constante.

77
00:05:55,990 --> 00:06:03,390
‫Podemos presionar tab para completar eso y luego abrir algunos paréntesis y podemos ver los argumentos que necesitamos

78
00:06:03,390 --> 00:06:08,910
‫pasar en la corriente, el tiempo delta objetivo y la velocidad de intercepción.

79
00:06:09,330 --> 00:06:13,620
‫Entonces, comencemos a crear algunas variables para contener algunos de estos.

80
00:06:14,310 --> 00:06:21,960
‫Entonces, antes que nada, necesitamos un vector F, que será nuestra ubicación actual, y no vamos a

81
00:06:21,960 --> 00:06:23,350
‫configurarlo todavía.

82
00:06:23,370 --> 00:06:31,200
‫Entonces vamos a tener un vector F para la ubicación del objetivo, y luego vamos a obtener un flotador para

83
00:06:31,200 --> 00:06:32,040
‫la velocidad.

84
00:06:33,150 --> 00:06:38,070
‫Y vamos a tener que calcular cada uno de estos individualmente para averiguar cómo podemos hacer que suceda este

85
00:06:38,070 --> 00:06:38,460
‫movimiento.

86
00:06:38,640 --> 00:06:42,390
‫Entonces, la ubicación actual será relativamente sencilla.

87
00:06:42,420 --> 00:06:46,410
‫Necesitamos obtener la ubicación actual del actor propietario.

88
00:06:46,440 --> 00:06:47,130
‫¿Entonces cómo hacemos eso?

89
00:06:47,130 --> 00:06:50,070
‫Reemplacemos este punto y coma con un signo igual.

90
00:06:50,460 --> 00:06:56,230
‫Luego hacemos un par de paréntesis para obtener el propietario que vamos a hacer Arrow.

91
00:06:56,370 --> 00:07:05,280
‫Así que vamos a llamar a una función en el actor propietario, y vamos a obtener la ubicación del actor y luego un par de paréntesis

92
00:07:05,760 --> 00:07:08,310
‫y un punto y coma para terminar.

93
00:07:08,640 --> 00:07:12,330
‫Eso nos da la ubicación actual del actor propietario.

94
00:07:12,870 --> 00:07:14,790
‫Ahora, ¿qué pasa con nuestra ubicación de destino?

95
00:07:15,030 --> 00:07:18,390
‫Bueno, sabemos que tenemos una propiedad llamada Move Offset.

96
00:07:18,780 --> 00:07:20,760
‫Así que eso va a estar involucrado aquí.

97
00:07:21,120 --> 00:07:26,400
‫Pero necesitamos agregar la ubicación original a este desplazamiento de movimiento.

98
00:07:26,910 --> 00:07:32,580
‫Entonces, para eso, necesitamos capturar la ubicación original al comenzar el juego.

99
00:07:32,940 --> 00:07:34,830
‫Así que necesitamos un almacén de variables.

100
00:07:34,830 --> 00:07:35,940
‫Así que vayamos a nuestro ejército.

101
00:07:35,970 --> 00:07:38,970
‫H Y no va a ser una edición en ningún lado.

102
00:07:38,970 --> 00:07:46,320
‫Así que lo pondré bajo propiedades de valor, será un vector F llamado ubicación original.

103
00:07:47,280 --> 00:07:50,360
‫No vamos a establecer nada aquí que vayamos a repasar en nuestras películas.

104
00:07:50,360 --> 00:07:57,630
‫CP Into Begin Play, elimine esta línea de comentarios y coloque nuestro propio código,

105
00:07:58,290 --> 00:08:08,610
‫que será que la ubicación original es igual a obtener la flecha entre paréntesis del propietario obtener la ubicación del actor así.

106
00:08:08,850 --> 00:08:13,050
‫Entonces, ahora que capturamos nuestra ubicación original y comenzamos a jugar, podemos usarla en tecnología.

107
00:08:13,380 --> 00:08:21,840
‫Así que vaya a marcar y establecemos nuestra ubicación de destino igual a la ubicación original más el desplazamiento de movimiento.

108
00:08:21,840 --> 00:08:23,340
‫Así que esa es nuestra ubicación objetivo.

109
00:08:23,880 --> 00:08:29,550
‫Y finalmente, a la velocidad, bueno, esta es esencialmente la distancia que necesitamos mover dividida

110
00:08:29,550 --> 00:08:32,550
‫por el tiempo que necesitamos para movernos.

111
00:08:32,580 --> 00:08:38,760
‫Entonces, si tenemos una ubicación de destino y tenemos una ubicación original, necesitamos encontrar la distancia

112
00:08:38,760 --> 00:08:44,970
‫entre estas dos, lo que podemos hacer con una columna de vector f, distancia de dos puntos.

113
00:08:45,300 --> 00:08:54,450
‫Luego pasamos a los paréntesis, la ubicación original y la ubicación de destino.

114
00:08:55,050 --> 00:08:58,230
‫Eso nos da la distancia entre estos dos vectores.

115
00:08:58,230 --> 00:09:05,130
‫Y luego vamos a dividir eso por lo que nos sobra y nos mudamos llamado tiempo de movimiento.

116
00:09:05,850 --> 00:09:08,700
‫Eso nos da la velocidad a la que deberíamos movernos.

117
00:09:09,360 --> 00:09:13,650
‫Y ahora podemos usarlos como argumentos para nuestra constante de intercepción V.

118
00:09:14,070 --> 00:09:20,430
‫Entonces, primero que nada, debemos darle la ubicación actual y luego la ubicación de destino.

119
00:09:21,210 --> 00:09:27,180
‫Luego le diremos que es el tiempo Delta, que ya es un parámetro en el componente de tic.

120
00:09:27,180 --> 00:09:28,530
‫Así que solo tenemos que pasar eso.

121
00:09:29,580 --> 00:09:31,800
‫Y luego tenemos la velocidad de intercepción.

122
00:09:31,890 --> 00:09:36,570
‫Así que vamos a pasar la velocidad como un punto y coma al final de esa línea.

123
00:09:37,230 --> 00:09:40,350
‫Y esta es esencialmente la nueva ubicación.

124
00:09:40,350 --> 00:09:49,110
‫Entonces almacenemos eso en un nuevo vector variable llamado nueva ubicación igual a esto.

125
00:09:49,530 --> 00:09:49,890
‫Frio.

126
00:09:50,520 --> 00:09:54,270
‫Ahora, necesitamos hacer algo con esa nueva ubicación porque no es bueno simplemente haberla

127
00:09:54,280 --> 00:09:57,720
‫calculado, en realidad necesitamos mover al actor a la nueva ubicación.

128
00:09:58,380 --> 00:09:59,320
‫Así que eso es lo que vamos a hacer.

129
00:09:59,340 --> 00:10:03,690
‫Vamos a llamarlo a obtener propietario para que podamos hacer una obtención propia.

130
00:10:04,730 --> 00:10:06,380
‫Flecha de paréntesis.

131
00:10:06,770 --> 00:10:15,590
‫Y luego vamos a hacer una ubicación fija para el actor y vamos a pasar la nueva ubicación así y tendremos un punto y coma

132
00:10:15,590 --> 00:10:17,510
‫al final de la línea.

133
00:10:18,110 --> 00:10:20,720
‫Así que sigamos adelante y compilemos esto y veamos si funciona.

134
00:10:21,080 --> 00:10:24,470
‫Así que si nos adentramos en la mazmorra, seleccionamos la pared que queremos mover.

135
00:10:24,500 --> 00:10:30,530
‫Ahora puede ver que el componente de movimiento tiene un desplazamiento de movimiento, que voy a querer

136
00:10:30,530 --> 00:10:35,150
‫hacer en la dirección Z, y creo que voy a hacer -600.

137
00:10:36,050 --> 00:10:38,780
‫Y luego el tiempo de movimiento, 4 segundos debería estar bien.

138
00:10:38,930 --> 00:10:42,860
‫Así que guardemos eso y luego presionemos reproducir y veamos si se mueve.

139
00:10:43,130 --> 00:10:43,960
‫Así que no se mueve.

140
00:10:44,000 --> 00:10:49,790
‫Y hay un error en el registro de salida que dice que la movilidad del actor se ha establecido en estática, por lo que

141
00:10:50,090 --> 00:10:51,110
‫no se puede mover.

142
00:10:51,470 --> 00:10:59,720
‫Entonces, si volvemos a seleccionar al actor y observamos su configuración de movilidad, puede ver que la configuración de movilidad del componente de malla estática, así

143
00:10:59,720 --> 00:11:03,890
‫que seleccione el componente de malla estática y luego observe la movilidad.

144
00:11:03,890 --> 00:11:05,600
‫Puede verlo configurado para especímenes estáticos.

145
00:11:05,630 --> 00:11:06,470
‫No está permitido moverse.

146
00:11:06,850 --> 00:11:09,980
‫Cambiemos eso a móvil porque queremos que se mueva.

147
00:11:10,370 --> 00:11:11,750
‫Y luego sigamos adelante y presionemos reproducir.

148
00:11:11,990 --> 00:11:18,120
‫Ahora, puedes ver en la oscuridad que la guerra estaba ocurriendo, lo cual es perfecto.

149
00:11:18,170 --> 00:11:23,470
‫Creo que tenemos un movimiento en otro lugar, como se ve en este pilar aquí, que también está tratando de moverse.

150
00:11:23,480 --> 00:11:24,470
‫Así que no hagamos eso.

151
00:11:24,740 --> 00:11:28,810
‫Eliminemos el movimiento, un componente que agregamos allí solo para probar.

152
00:11:29,690 --> 00:11:32,480
‫Y no debería darnos errores en el registro de salida.

153
00:11:32,480 --> 00:11:38,270
‫Si seguimos adelante con el golpe de juego ahora, deberíamos tener ese muro bajando a su ubicación de destino.

154
00:11:38,480 --> 00:11:42,850
‫Así que vamos a desafiarlo a hacer que se mueva con el valor booleano que creamos que es de su propiedad.

155
00:11:42,860 --> 00:11:48,710
‫Entonces, envolverá el código en una declaración if apropiada y el código apropiado para que solo

156
00:11:48,710 --> 00:11:52,460
‫mueva la plataforma cuando ese valor booleano sea verdadero.

157
00:11:53,090 --> 00:11:58,490
‫Y luego vas a volver a compilar el código y reproducir un eject usando F ocho y luego cambiar el valor

158
00:11:58,490 --> 00:12:02,390
‫booleano y observar la plataforma y ver si se mueve cuando compruebas ese valor booleano.

159
00:12:02,390 --> 00:12:04,160
‫Así que pausa el video y pruébalo.

160
00:12:07,290 --> 00:12:07,710
‫Bueno.

161
00:12:07,710 --> 00:12:08,430
‫Bienvenido de nuevo.

162
00:12:08,460 --> 00:12:14,790
‫Así que vamos a envolver este componente tecnológico en una declaración if, no super, pero todo lo demás que vamos a

163
00:12:14,790 --> 00:12:15,300
‫hacer.

164
00:12:15,300 --> 00:12:24,390
‫If debería mover y abrir algunos paréntesis y mover todo este código recordando sangrar un nivel porque estamos dentro de paréntesis y

165
00:12:24,390 --> 00:12:29,550
‫queremos mostrar que esto solo se ejecutaría dentro de la instrucción if.

166
00:12:29,550 --> 00:12:36,450
‫Haz que sea fácil para nosotros leer el control de todas las compilaciones de Taft elevens y luego deberíamos

167
00:12:36,450 --> 00:12:42,060
‫poder ir y presionar reproducir y presionar F8 para expulsar si tenemos nuestro mouse capturado.

168
00:12:42,720 --> 00:12:49,110
‫Y luego vamos a entrar para echar un vistazo a nuestro contorno y vamos a tratar de encontrar la pared.

169
00:12:49,410 --> 00:12:56,310
‫O simplemente podemos hacer clic en la escena y luego vamos a seleccionar mover un componente y verificar si debe moverse

170
00:12:56,310 --> 00:13:00,300
‫y se van, la pared comienza a moverse cuando eso sucede.

171
00:13:00,570 --> 00:13:01,290
‫Buena cosa.

172
00:13:01,290 --> 00:13:03,330
‫Te veré en la próxima conferencia.

