﻿1
00:00:04,130 --> 00:00:06,050
‫Hola y bienvenido de nuevo.

2
00:00:06,080 --> 00:00:10,010
‫Ahora, en este video, vamos a comenzar a hablar sobre cómo podemos mover nuestro tanque.

3
00:00:10,160 --> 00:00:16,010
‫Entonces, para mover el tanque, tendremos que agregar algún tipo de compensación y un motor irreal.

4
00:00:16,010 --> 00:00:21,650
‫Cuando se trata de agregar un desplazamiento, debemos tomar la decisión de realizar el desplazamiento en el

5
00:00:21,650 --> 00:00:23,690
‫espacio local o en el espacio mundial.

6
00:00:23,690 --> 00:00:26,840
‫Así que analicemos la diferencia entre estas dos cosas.

7
00:00:27,200 --> 00:00:34,220
‫Ahora, aquí en el editor, tengo el tanque seleccionado, y tan pronto como lo tenga seleccionado,

8
00:00:34,220 --> 00:00:36,560
‫notará que hay un artilugio.

9
00:00:36,590 --> 00:00:38,720
‫Así es como se llama esta cosa, un artilugio.

10
00:00:38,720 --> 00:00:41,810
‫Tiene tres flechas y cada una es de un color diferente.

11
00:00:41,810 --> 00:00:47,360
‫Ahora, si no te has dado cuenta, en la parte inferior izquierda de la pantalla hay otro artilugio más pequeño.

12
00:00:47,360 --> 00:00:53,000
‫Y esto se parece al artilugio del actor que estamos seleccionando.

13
00:00:53,000 --> 00:00:56,750
‫Entonces, si selecciono a cualquier actor, siempre obtenemos este artilugio.

14
00:00:56,750 --> 00:01:02,660
‫Y, por supuesto, el artilugio cambia cuando pasamos del modo de traducción al de rotación y al de escala.

15
00:01:02,660 --> 00:01:09,020
‫Entonces, siempre que estemos en traducir, al que podemos acceder desde este ícono más a la izquierda en la parte

16
00:01:09,020 --> 00:01:16,550
‫superior derecha de la ventana gráfica o con la tecla W, tenemos la capacidad de mover cosas o traducirlas arrastrando una de las flechas

17
00:01:16,550 --> 00:01:18,260
‫en el artilugio.

18
00:01:18,260 --> 00:01:26,180
‫Y los colores corresponden a los ejes rojo como eje x, verde es el eje y y azul es el eje z.

19
00:01:26,210 --> 00:01:32,000
‫Ahora, si rotamos nuestra vista y miramos en una dirección diferente, veremos que ese artilugio todavía apunta

20
00:01:32,000 --> 00:01:34,070
‫en la misma dirección original.

21
00:01:34,070 --> 00:01:40,520
‫Y mientras giramos, el artilugio en la parte inferior izquierda de la ventana gráfica gira porque

22
00:01:40,520 --> 00:01:42,740
‫la dirección del mundo no cambia.

23
00:01:42,740 --> 00:01:44,060
‫Hasta aquí todo bien.

24
00:01:44,060 --> 00:01:51,530
‫Ahora lo que estamos viendo son las direcciones del espacio mundial, pero para cada actor en el mundo, hay una dirección

25
00:01:51,530 --> 00:01:52,310
‫local.

26
00:01:52,310 --> 00:01:58,670
‫Y podemos ver que al hacer clic en este ícono que parece un mundo y la ventana emergente dice ciclos, el gizmo

27
00:01:58,670 --> 00:02:03,560
‫de transformación coordina los sistemas entre el mundo y el espacio local.

28
00:02:03,560 --> 00:02:09,050
‫Cuando vemos un mundo aquí, eso significa que estamos mirando el espacio del mundo, pero si hacemos

29
00:02:09,080 --> 00:02:16,700
‫clic en él, ahora se convierte en un cubo y ahora estamos mirando el espacio local para el actor dado que hemos seleccionado.

30
00:02:16,700 --> 00:02:21,110
‫El artilugio en la parte inferior izquierda de la ventana gráfica todavía nos muestra el espacio mundial.

31
00:02:21,110 --> 00:02:27,560
‫Pero si tomo este actor y cambio al modo de rotación y lo giro, entonces cuando vuelvo al modo de traducción,

32
00:02:27,560 --> 00:02:32,390
‫verán que el artilugio ahora está apuntando en una dirección diferente.

33
00:02:32,390 --> 00:02:36,680
‫El propio actor tiene su propio eje x local.

34
00:02:36,680 --> 00:02:40,730
‫Podemos pensar en el eje x del actor como su vector de avance.

35
00:02:40,730 --> 00:02:46,520
‫Ahora observe que en la parte inferior izquierda de la pantalla, el artilugio sigue apuntando en la misma dirección.

36
00:02:46,520 --> 00:02:54,530
‫Pero este actor aquí, el tanque de peones, tiene su propia dirección X local y apunta en una dirección diferente.

37
00:02:54,530 --> 00:03:01,250
‫Ahora, si hago clic en el cubo aquí y lo vuelvo a convertir en un mundo ahora, el artilugio para el tanque

38
00:03:01,250 --> 00:03:09,050
‫se empareja y se alinea con la dirección del eje del mundo para que podamos cambiar entre el mundo y el espacio local para

39
00:03:09,050 --> 00:03:14,330
‫que cualquier actor vea su local. dirección versus su dirección mundial.

40
00:03:14,690 --> 00:03:20,540
‫Así que hemos visto que para cualquier actor que seleccionamos en nuestro mundo, tiene su propia dirección local.

41
00:03:20,540 --> 00:03:27,320
‫Y esto puede o no ser diferente a la dirección del mundo como se indica en esta imagen aquí.

42
00:03:27,440 --> 00:03:33,200
‫Esto es muy importante cuando se trata de mover objetos en Unreal Engine.

43
00:03:33,200 --> 00:03:38,990
‫Hay funciones para mover objetos y hay un conjunto diferente de funciones para moverse en el espacio

44
00:03:38,990 --> 00:03:41,150
‫mundial frente al espacio local.

45
00:03:41,150 --> 00:03:47,480
‫Digamos que nuestro tanque mira de esta manera y su eje x apunta ligeramente hacia la izquierda, como lo indica

46
00:03:47,480 --> 00:03:50,150
‫la flecha que dibujé aquí en el tanque.

47
00:03:50,150 --> 00:03:55,910
‫Ahora podemos ver, según este artilugio de la parte inferior izquierda, que la dirección del eje x del mundo apunta hacia

48
00:03:55,910 --> 00:03:56,720
‫la derecha.

49
00:03:56,720 --> 00:04:00,200
‫Entonces, el tanque no está alineado con la dirección del espacio mundial.

50
00:04:00,410 --> 00:04:05,660
‫Ahora, supongamos que movemos este tanque en el espacio mundial en la dirección X positiva.

51
00:04:05,660 --> 00:04:12,020
‫Luego, aunque el tanque apunte hacia la izquierda, seguirá moviéndose en esa dirección x del mundo y

52
00:04:12,020 --> 00:04:14,300
‫parecerá que se mueve hacia atrás.

53
00:04:14,300 --> 00:04:15,950
‫Así que eso no es lo que queremos.

54
00:04:15,980 --> 00:04:22,250
‫Ahora, por otro lado, digamos que usamos una función diseñada para mover el tanque en su propio espacio

55
00:04:22,250 --> 00:04:22,910
‫local.

56
00:04:22,940 --> 00:04:30,620
‫Eso significa que si movemos el tanque en su propia dirección X local, avanzará en la dirección

57
00:04:30,620 --> 00:04:31,760
‫esperada.

58
00:04:31,760 --> 00:04:34,310
‫Y ese es el comportamiento que queremos.

59
00:04:34,340 --> 00:04:35,690
‫Ahora en Unreal Engine.

60
00:04:35,690 --> 00:04:40,190
‫La función que puede hacer esto por nosotros se llama Add Actor Local Offset.

61
00:04:40,190 --> 00:04:43,970
‫Esta función mueve al actor en una dirección local.

62
00:04:44,090 --> 00:04:47,900
‫Ahora aplica un desplazamiento, que es un solo movimiento.

63
00:04:47,930 --> 00:04:54,140
‫Esencialmente, le decimos en qué dirección moverse y qué tan lejos, y mueve ese objeto una vez, lo que significa

64
00:04:54,140 --> 00:04:58,790
‫que vamos a llamar a esta función en cada fotograma que queramos mover el tanque.

65
00:04:58,790 --> 00:05:03,530
‫Así que vamos a moverlo en pequeños incrementos desde que llamamos a una función en cada cuadro.

66
00:05:03,680 --> 00:05:11,480
‫Significa que lo estamos llamando mucho ahora para nuestro tanque, su propio eje X local es su dirección de avance.

67
00:05:11,480 --> 00:05:16,010
‫Así que este es el eje que usaremos cuando agreguemos un desplazamiento local.

68
00:05:16,400 --> 00:05:20,990
‫Ahora aquí está la documentación del motor irreal para el desplazamiento local del actor AGREGAR.

69
00:05:20,990 --> 00:05:24,590
‫Verás que es una función que pertenece a la clase actor.

70
00:05:24,590 --> 00:05:29,990
‫Es por eso que ahora se llama agregar desplazamiento local del actor porque existe en la clase del actor.

71
00:05:29,990 --> 00:05:33,140
‫Los peones heredarán esta función para que podamos usarla.

72
00:05:33,170 --> 00:05:34,820
‫Ahora aquí está la sintaxis.

73
00:05:34,820 --> 00:05:37,220
‫Tiene cuatro parámetros de entrada.

74
00:05:37,220 --> 00:05:41,090
‫El primero es un vector F llamado ubicación delta.

75
00:05:41,090 --> 00:05:47,630
‫Así que vamos a necesitar crear un vector F que podamos pasar a esta función de desplazamiento local de agregar actor.

76
00:05:47,630 --> 00:05:50,840
‫Entonces sabemos sobre este desplazamiento local del actor agregado.

77
00:05:50,840 --> 00:05:56,930
‫Y me gustaría experimentar con esto solo para ver cómo funciona para que podamos hacer esto en la función de tic.

78
00:05:56,930 --> 00:06:03,590
‫Ahora no estamos sobreescribiendo la función tic aquí en la clase tank, pero la tenemos en la clase base

79
00:06:03,590 --> 00:06:04,250
‫pong.

80
00:06:04,250 --> 00:06:10,490
‫Si vamos al CP del estanque base aquí tenemos la función de tic y no estamos haciendo nada aquí y esto es perfecto

81
00:06:10,490 --> 00:06:12,710
‫para hacer algo de experimentación.

82
00:06:12,710 --> 00:06:18,530
‫Entonces, lo que voy a hacer es escribir, agregar, actor, desplazamiento local así como así.

83
00:06:18,530 --> 00:06:22,760
‫Y voy a hacer clic derecho y seleccionar ir a definición.

84
00:06:22,760 --> 00:06:28,520
‫Ahora, aquí en el archivo CP del actor, tenemos la definición para AGREGAR Compensación local del actor.

85
00:06:28,520 --> 00:06:30,170
‫Ahora nota algo interesante.

86
00:06:30,170 --> 00:06:37,280
‫Está verificando si el componente raíz no es nulo y si no es nulo, entonces llama a esta función agregar compensación

87
00:06:37,280 --> 00:06:37,910
‫local.

88
00:06:37,910 --> 00:06:41,720
‫Así que realmente lo que estamos haciendo es agregar un desplazamiento al componente raíz.

89
00:06:41,720 --> 00:06:46,970
‫Y dado que todos los demás componentes están adjuntos al componente raíz, se moverán junto con él.

90
00:06:46,970 --> 00:06:51,740
‫Por lo tanto, es importante tener en cuenta que cuando agregamos un desplazamiento local, movemos el componente raíz

91
00:06:51,740 --> 00:06:53,480
‫y todo lo demás simplemente se mueve con él.

92
00:06:53,480 --> 00:06:59,810
‫Ahora, si nos desplazamos sobre Agregar desplazamiento local, veremos que los cuatro parámetros de entrada se enumeran

93
00:06:59,810 --> 00:07:00,290
‫aquí.

94
00:07:00,290 --> 00:07:06,140
‫Y aparte del primero, que es un vector F, los demás tienen valores por defecto.

95
00:07:06,140 --> 00:07:09,800
‫Observe que el barrido bool B dice que es igual a falso.

96
00:07:09,800 --> 00:07:14,840
‫Los parámetros de entrada tercero y cuarto también tienen estos valores predeterminados.

97
00:07:14,840 --> 00:07:21,740
‫Esto significa que si llamamos a esta función y no pasamos entradas para los últimos tres parámetros de entrada, se establecerán

98
00:07:21,740 --> 00:07:24,290
‫en estos valores de forma predeterminada.

99
00:07:24,320 --> 00:07:31,220
‫Ahora voy a cerrar el CP del actor y aquí, en la función de marca del estanque base, me gustaría llamar a agregar el desplazamiento local

100
00:07:31,220 --> 00:07:34,280
‫del actor en cada cuadro solo para ver cómo funciona.

101
00:07:34,400 --> 00:07:37,790
‫Ahora sabemos que el primer parámetro de entrada es un vector F.

102
00:07:37,790 --> 00:07:39,470
‫Se llama ubicación delta.

103
00:07:39,470 --> 00:07:44,030
‫Esta es la cantidad de movimiento que nos gustaría agregar cada vez que llamamos a esta función.

104
00:07:44,030 --> 00:07:48,380
‫Así que voy a crear un vector F llamado ubicación delta.

105
00:07:48,380 --> 00:07:51,800
‫Por lo tanto, ubicación del delta del vector F.

106
00:07:51,980 --> 00:07:54,350
‫Ahora me gustaría poner a cero este vector.

107
00:07:54,350 --> 00:07:58,340
‫En otras palabras, asegúrese de que esté inicializado con todos ceros.

108
00:07:58,430 --> 00:08:05,870
‫Ahora quiero un vector cero que pueda pasar en cero f, una x, y y z obtendrán cero f.

109
00:08:05,870 --> 00:08:08,450
‫Así que esto servirá para mis propósitos muy bien.

110
00:08:08,480 --> 00:08:14,960
‫Ahora voy a tomar Delta Location X y voy a cambiar eso a dos puntos F.

111
00:08:14,960 --> 00:08:20,540
‫De esa forma tenemos un vector con Y y Z iguales a cero, una x igual a dos.

112
00:08:20,570 --> 00:08:27,770
‫Así que seguiré adelante y pasaré la ubicación Delta para agregar el desplazamiento local del actor como una especie de experimento.

113
00:08:27,800 --> 00:08:34,310
‫Ahora puedo salirme con la mía llamando al desplazamiento local del actor y simplemente pasando el primer parámetro de entrada,

114
00:08:34,310 --> 00:08:36,470
‫ya que los otros tres son opcionales.

115
00:08:36,500 --> 00:08:39,080
‫Así que voy a compilar esto y ver qué pasa.

116
00:08:40,520 --> 00:08:43,880
‫Ahora, si seguimos adelante y presionamos reproducir, observen un par de cosas.

117
00:08:43,880 --> 00:08:46,100
‫En primer lugar, mira, la torre también se está moviendo.

118
00:08:46,130 --> 00:08:52,250
‫Esto se debe a que ponemos esto en la función de marca para el peón base y ambos enlaces se heredan del peón

119
00:08:52,250 --> 00:08:52,730
‫base.

120
00:08:52,730 --> 00:08:56,060
‫Entonces, de hecho, todos estos estanques se estaban moviendo.

121
00:08:56,060 --> 00:09:01,280
‫Y lo interesante es que todos se mueven en sus propias direcciones del eje x.

122
00:09:01,280 --> 00:09:04,640
‫Podemos ver todo moverse a la vez desde este punto de vista.

123
00:09:04,670 --> 00:09:10,940
‫Si hacemos clic en el menú desplegable junto a jugar y seleccionamos simular, esto nos permite jugar sin

124
00:09:10,940 --> 00:09:12,260
‫poseer estanques.

125
00:09:12,260 --> 00:09:14,810
‫Entonces, si hago clic en Simular, verifique esto.

126
00:09:14,810 --> 00:09:18,580
‫Cada estanque se mueve en su propia dirección del eje x.

127
00:09:18,590 --> 00:09:22,070
‫Eso es realmente bastante extraño y bastante genial.

128
00:09:22,070 --> 00:09:25,760
‫Así que esto nos muestra cómo funciona la compensación local del actor publicitario.

129
00:09:25,760 --> 00:09:28,220
‫Mueve las cosas en sus direcciones locales.

130
00:09:28,280 --> 00:09:34,220
‫Ahora podemos salir del modo de simulación haciendo clic en el menú desplegable y seleccionando la ventana gráfica

131
00:09:34,220 --> 00:09:38,000
‫seleccionada y esto nos permitirá jugar en el modo de juego normal.

132
00:09:38,030 --> 00:09:45,220
‫Muy bien, voy a detener esto y podemos volver a la base, y podemos eliminar este código experimental.

133
00:09:45,230 --> 00:09:51,320
‫Continuaré y simplemente lo eliminaré de la función de marca para que ahora sepamos cómo funciona la compensación

134
00:09:51,320 --> 00:09:52,700
‫local de agregar actor.

135
00:09:52,880 --> 00:09:56,780
‫Así que volvamos a Tank CP y aquí tenemos la función MOVER.

136
00:09:56,780 --> 00:10:02,960
‫Sabemos que esta función se llama en cada cuadro y sabemos que el valor es igual a uno.

137
00:10:03,080 --> 00:10:09,260
‫Si estamos presionando la tecla W y es uno negativo, si estamos presionando la tecla y es cero si estamos presionando

138
00:10:09,260 --> 00:10:10,970
‫ambas o ninguna.

139
00:10:11,420 --> 00:10:16,340
‫Entonces, para su desafío, va a mover el tanque usando el desplazamiento local de agregar actor.

140
00:10:16,340 --> 00:10:21,350
‫Así que en la función MOV vas a crear un vector F llamado ubicación delta.

141
00:10:21,350 --> 00:10:24,440
‫Ahora asegúrese de poner a cero X, Y y z.

142
00:10:24,560 --> 00:10:30,680
‫Puede hacer esto de varias maneras, como usar uno de los diversos constructores de vectores f.

143
00:10:30,680 --> 00:10:37,760
‫Ahora, una vez que haya puesto a cero todos los componentes, establezca su x en el valor del parámetro de entrada

144
00:10:37,760 --> 00:10:39,620
‫flotante en la función MOV.

145
00:10:39,620 --> 00:10:45,410
‫Una vez que haya hecho esto, continúe y llame al paso de compensación local del actor en la ubicación delta.

146
00:10:45,860 --> 00:10:48,140
‫Pausa el video y haz esto ahora.

147
00:10:51,220 --> 00:10:51,670
‫Bueno.

148
00:10:51,670 --> 00:10:54,610
‫Así que estoy de vuelta aquí en el archivo CP del tanque.

149
00:10:54,610 --> 00:11:00,370
‫Ahora, ya no necesito este registro EWI, así que lo sacaré y crearé un vector F

150
00:11:00,370 --> 00:11:02,440
‫llamado ubicación Delta.

151
00:11:02,440 --> 00:11:05,650
‫Ahora puedo usar uno de los constructores de vectores F.

152
00:11:05,650 --> 00:11:09,430
‫Ya te mostré cómo crear un nuevo vector con todos ceros.

153
00:11:09,430 --> 00:11:15,700
‫Voy a mostrarles otra manera, que es inicializar esto con vector f, vector cero.

154
00:11:16,270 --> 00:11:21,520
‫Y esto es exactamente lo que parece, un vector con cero para cada componente.

155
00:11:21,550 --> 00:11:23,980
‫Esto es solo para mostrarle una forma alternativa.

156
00:11:23,980 --> 00:11:25,510
‫Así que tenemos un vector cero.

157
00:11:25,510 --> 00:11:31,270
‫Ahora tomaré la ubicación delta X y estableceré un valor igual.

158
00:11:31,570 --> 00:11:39,670
‫Y, por último, puedo llamar a agregar el desplazamiento local del actor que pasa en la ubicación delta.

159
00:11:40,630 --> 00:11:47,260
‫Así que vamos a compilar esto y de vuelta aquí en el editor, voy a tomar mi tanque y voy a orientarlo para

160
00:11:47,260 --> 00:11:54,550
‫que esté mirando en la dirección X del mundo y luego puedo presionar reproducir y ahora hacer clic en la ventana

161
00:11:54,550 --> 00:11:55,270
‫gráfica.

162
00:11:55,270 --> 00:12:00,880
‫Si presiono la tecla W, me muevo hacia adelante y si presiono la tecla, me muevo hacia atrás.

163
00:12:00,880 --> 00:12:05,230
‫Si presiono ambos, se cancelan entre sí y no me muevo en absoluto.

164
00:12:05,230 --> 00:12:08,140
‫Y claro, si no presiono nada, tampoco me muevo.

165
00:12:08,140 --> 00:12:13,480
‫Así que ahora tenemos movimiento para nuestro tanque, pero es un poco lento, así que vamos a tener que hacer algunos ajustes.

166
00:12:13,480 --> 00:12:18,400
‫Y también vamos a hablar sobre cómo ajustar esta mecánica de movimiento con nuestro tanque.

167
00:12:18,640 --> 00:12:24,370
‫Entonces, en resumen, aprendimos sobre ADD Actor, el desplazamiento local y la diferencia entre el espacio mundial y

168
00:12:24,370 --> 00:12:25,300
‫el espacio local.

169
00:12:25,300 --> 00:12:29,800
‫En el siguiente video, continuaremos perfeccionando esta mecánica de movimiento con nuestro tanque.

170
00:12:30,010 --> 00:12:31,000
‫Te veré pronto.

