﻿1
00:00:04,530 --> 00:00:06,030
‫Hola y bienvenido.

2
00:00:06,060 --> 00:00:10,920
‫En esta lección, vamos a crear un arma y vamos a aprender cómo

3
00:00:10,920 --> 00:00:17,250
‫diseñaremos armas para este juego para que sean intercambiables, para que podamos tener diferentes propiedades en diferentes tipos

4
00:00:17,250 --> 00:00:18,090
‫de armas.

5
00:00:18,480 --> 00:00:24,810
‫Y así es generalmente como funcionan las arquitecturas en los tiradores en primera o tercera persona, profundicemos y veamos cómo

6
00:00:24,810 --> 00:00:25,650
‫se hace.

7
00:00:27,060 --> 00:00:27,300
‫Bueno.

8
00:00:27,300 --> 00:00:30,630
‫Así que no hemos revisado nuestro plan de proyecto en un tiempo.

9
00:00:31,020 --> 00:00:32,600
‫No hemos llegado al movimiento del plan.

10
00:00:32,610 --> 00:00:35,160
‫Ha hecho la animación por ahora, está hecho.

11
00:00:35,520 --> 00:00:39,180
‫Y el rodaje, eso es lo siguiente en lo que debemos centrarnos.

12
00:00:39,690 --> 00:00:45,570
‫Ahora, es un poco confuso aquí porque nuestra malla ya parece tener un arma, pero en realidad no

13
00:00:45,570 --> 00:00:47,220
‫queremos usar esta arma.

14
00:00:47,220 --> 00:00:49,110
‫Queremos usarlo de una manera diferente.

15
00:00:49,650 --> 00:00:55,950
‫La razón es que en un tipo de juego de disparos, a menudo quieres poder cambiar entre armas o al

16
00:00:56,280 --> 00:00:59,160
‫menos poder tener diferentes personajes, tener diferentes armas.

17
00:00:59,490 --> 00:01:05,790
‫Y la forma más fácil de hacerlo es diseñar el arma como algo separado del personaje para que

18
00:01:05,790 --> 00:01:09,720
‫puedas intercambiarlos y que pueda ser responsable de cómo dispara.

19
00:01:09,780 --> 00:01:14,760
‫Si es un lanzacohetes, una escopeta o un rifle, van a hacer las cosas de diferentes maneras.

20
00:01:15,450 --> 00:01:20,670
‫Ahora, podría decir, está bien, bueno, creemos un componente de pistola y podemos pegar esos componentes de pistola

21
00:01:21,000 --> 00:01:22,380
‫debajo de nuestra malla.

22
00:01:22,770 --> 00:01:30,390
‫Eso funcionaría, excepto que perdemos la modularidad que nos permite agregar múltiples componentes al

23
00:01:30,390 --> 00:01:31,110
‫arma.

24
00:01:31,500 --> 00:01:38,700
‫Entonces, lo que realmente queremos hacer es seguir el camino de tener un actor para el arma que sea una identificación infantil para el

25
00:01:38,700 --> 00:01:39,780
‫personaje del tirador.

26
00:01:39,810 --> 00:01:43,590
‫Ahora, esto es algo con lo que no nos hemos encontrado antes, pero funciona así.

27
00:01:44,310 --> 00:01:51,150
‫Puedes tener un personaje tirador y un arma como hijo, y el personaje tirador puede tener varios componentes que

28
00:01:51,150 --> 00:01:53,010
‫son hijos entre sí.

29
00:01:53,010 --> 00:01:58,350
‫Así que tienes la cápsula, tenemos la malla como un elemento secundario de la cápsula en este

30
00:01:58,350 --> 00:02:01,710
‫momento, y los componentes del arma pueden protegerse contra eso.

31
00:02:02,010 --> 00:02:05,700
‫Entonces, la malla obtiene la identificación del niño para la malla del personaje.

32
00:02:06,150 --> 00:02:11,460
‫Y si tiene otros componentes, como un efecto de partículas en la boca del arma, podría ser una

33
00:02:11,460 --> 00:02:13,110
‫identificación infantil en la malla.

34
00:02:13,410 --> 00:02:19,590
‫Así que pueden ver que estas jerarquías son un poco independientes, que tienen los componentes de la

35
00:02:19,590 --> 00:02:25,560
‫escena, los que se han transformado a la derecha, y pueden estar en cierta jerarquía.

36
00:02:25,980 --> 00:02:31,280
‫Y luego la jerarquía de actores en realidad sigue la jerarquía de los componentes de la escena.

37
00:02:31,290 --> 00:02:33,240
‫Los actores no tienen una jerarquía propia.

38
00:02:33,240 --> 00:02:35,580
‫Esta es la parte que lleva un poco de tiempo entender.

39
00:02:35,580 --> 00:02:38,070
‫Fue un momento de aha cuando hizo clic para mí.

40
00:02:38,520 --> 00:02:44,580
‫Es que en realidad no hay una jerarquía de actores, solo hay una jerarquía de componentes de la escena.

41
00:02:44,940 --> 00:02:50,430
‫Hay actores que tienen los mismos componentes y terminan teniendo una jerarquía porque sus

42
00:02:50,430 --> 00:02:55,950
‫componentes de escena están relacionados entre sí, pero en realidad no tienen una relación entre ellos.

43
00:02:56,670 --> 00:03:02,760
‫Dicho esto, para establecer el contexto, lo primero que queremos hacer es crearnos

44
00:03:02,760 --> 00:03:05,190
‫un actor de armas C++.

45
00:03:05,670 --> 00:03:11,730
‫Y en este caso, no va a ser un peón ni un personaje ni nada por el estilo.

46
00:03:11,730 --> 00:03:14,400
‫Simplemente va a ser un actor sencillo porque no necesitamos ningún comportamiento.

47
00:03:14,400 --> 00:03:16,290
‫No necesitas poseerlo, no necesitamos hacer nada.

48
00:03:16,290 --> 00:03:17,880
‫Es solo un actor simple, simple.

49
00:03:18,390 --> 00:03:19,710
‫Así que sigamos adelante y hagamos eso.

50
00:03:19,710 --> 00:03:21,030
‫De hecho, un pequeño desafío para ti.

51
00:03:21,030 --> 00:03:26,190
‫Continúe y cree ese actor de C++, algo que debería poder hacer, un pequeño mini desafío, inténtelo.

52
00:03:26,760 --> 00:03:27,780
‫Está bien, estoy de vuelta.

53
00:03:27,780 --> 00:03:28,860
‫Voy a hacerlo.

54
00:03:28,890 --> 00:03:34,470
‫Nueva clase de C++ y no necesitamos tener, veamos, actor.

55
00:03:34,470 --> 00:03:35,490
‫Eso es todo lo que queremos elegir.

56
00:03:35,910 --> 00:03:42,060
‫Y vamos a seguir adelante y llamar a esta pistola, tan simple como vamos a crear esa clase.

57
00:03:42,330 --> 00:03:42,550
‫¿Okey?

58
00:03:42,570 --> 00:03:46,350
‫Y una vez hecho esto, aparecerá en su editor de código.

59
00:03:46,380 --> 00:03:52,170
‫Y no necesitamos hacer nada con él todavía porque lo primero que quiero hacer es crear una subclase

60
00:03:52,530 --> 00:03:53,340
‫de modelo.

61
00:03:53,340 --> 00:03:59,370
‫Así que haga clic con el botón derecho en su clase en el navegador de contenido y, en lugar de llamarlo Mike y no

62
00:03:59,370 --> 00:04:04,530
‫sé qué valores predeterminados automáticos, voy a ponerlo en la raíz del contenido cuatro. Ahora podemos hacer un poco de

63
00:04:04,530 --> 00:04:06,630
‫reorganizando una vez que tengamos más clases.

64
00:04:06,900 --> 00:04:09,750
‫Como he dicho antes, crearemos la clase Blueprint.

65
00:04:09,750 --> 00:04:10,890
‫Como puedes ver, está completamente vacío.

66
00:04:10,890 --> 00:04:12,450
‫Tiene esta raíz de escena predeterminada.

67
00:04:12,840 --> 00:04:14,340
‫Vamos a querer arreglar eso.

68
00:04:14,470 --> 00:04:20,460
‫Lo que queremos hacer es agregar un componente en C++ porque este es un curso de C++.

69
00:04:20,460 --> 00:04:23,970
‫Practiquemos el músculo de agregar componentes en C++.

70
00:04:24,150 --> 00:04:29,700
‫También significa que vamos a tener acceso a esos componentes desde dentro de nuestro código C++ para manipular y escribir

71
00:04:29,700 --> 00:04:35,520
‫nuestro código que ahora la configuración que vamos a querer es tener un componente raíz de escena, que solo va a

72
00:04:35,520 --> 00:04:39,450
‫ser componentes de escena y luego una malla que es un hijo de eso.

73
00:04:39,450 --> 00:04:40,230
‫¿Por qué queremos eso?

74
00:04:40,230 --> 00:04:47,730
‫Porque queremos poder cambiar la posición de la malla en relación con las raíces del arma para que básicamente

75
00:04:47,730 --> 00:04:52,110
‫podamos colocar el mango en diferentes lugares para diferentes mallas.

76
00:04:52,110 --> 00:04:55,440
‫Entonces, si tenemos diferentes armas, podemos asegurarnos de que todas tengan las manijas en el mismo lugar.

77
00:04:55,440 --> 00:05:00,540
‫Entonces, cuando lo adjuntemos a la mano del personaje, aparecerá con el mango en la mano del personaje.

78
00:05:01,230 --> 00:05:02,580
‫Bien, entonces, ¿cómo vamos a hacer eso?

79
00:05:02,580 --> 00:05:08,550
‫Vamos a pasar a nuestro código de Visual Studio, y voy a crear una sección privada aquí abajo donde vamos

80
00:05:08,850 --> 00:05:12,630
‫a almacenar las nuevas propiedades para los diferentes componentes que vamos a

81
00:05:12,630 --> 00:05:13,050
‫crear.

82
00:05:13,590 --> 00:05:17,130
‫Así que voy a crear una nueva propiedad visible en cualquier lugar.

83
00:05:17,610 --> 00:05:21,210
‫Queremos que nuestros componentes sean visibles en cualquier lugar debido a sus punteros

84
00:05:21,210 --> 00:05:26,370
‫de puntos, no queremos poder editar los punteros, pero queremos poder ver las propiedades de esos punteros y poder hacerlo.

85
00:05:26,600 --> 00:05:26,960
‫Aquellas.

86
00:05:26,960 --> 00:05:30,830
‫Y eso entonces se convierte en el ámbito de la clase a la que estamos apuntando.

87
00:05:30,950 --> 00:05:34,550
‫Eso luego decide qué se muestra, qué se puede editar.

88
00:05:34,580 --> 00:05:38,240
‫Así que todo lo que queremos decir aquí es que no es el punto de que sea editable.

89
00:05:38,510 --> 00:05:39,980
‫Así que es por eso que ir por visible de todos modos.

90
00:05:40,580 --> 00:05:41,630
‫De todos modos, un poco de revisión allí.

91
00:05:41,930 --> 00:05:44,960
‫Ahora queremos que esto sea una vista porque es un componente.

92
00:05:44,960 --> 00:05:48,470
‫Entonces es un componente de escena lo que queremos.

93
00:05:49,250 --> 00:05:54,710
‫Si puedo escribirlo correctamente, he visto componentes y es un puntero a él y este

94
00:05:54,710 --> 00:05:56,270
‫será nuestro componente raíz.

95
00:05:57,690 --> 00:05:58,170
‫Al igual que.

96
00:05:58,830 --> 00:06:01,410
‫Y luego vamos a querer una nueva propiedad.

97
00:06:02,310 --> 00:06:03,610
‫Nuevamente visible en cualquier lugar.

98
00:06:03,840 --> 00:06:05,460
‫Para nuestra malla.

99
00:06:07,080 --> 00:06:16,200
‫La clase para la malla va a ser algunos componentes MASH estáticos porque no es un puré esquelético, es

100
00:06:16,200 --> 00:06:19,620
‫rígido, no tiene ningún esqueleto, ningún hueso.

101
00:06:20,040 --> 00:06:24,690
‫Así que quiero que eso sea un indicador y esto simplemente enfriará el puré así.

102
00:06:25,750 --> 00:06:30,170
‫De hecho, creo que debo tener un poco de cuidado aquí porque creo que el componente raíz ya existe en

103
00:06:30,170 --> 00:06:31,770
‫la clase principal para el actor.

104
00:06:31,790 --> 00:06:34,280
‫Así que voy a llamar a esta ruta en su lugar.

105
00:06:35,180 --> 00:06:38,840
‫Y luego ya tenemos un constructor en C++.

106
00:06:38,840 --> 00:06:42,380
‫Solo vamos a necesitar incluir el apropiado -- aquí.

107
00:06:42,410 --> 00:06:46,200
‫Ahora, un pequeño truco cuando está en el código de Visual Studio es averiguar dónde podría estar un archivo más adelante.

108
00:06:46,200 --> 00:06:50,600
‫Usas Control P y vas a buscar.

109
00:06:50,810 --> 00:06:53,090
‫En este caso, queremos la malla estática.

110
00:06:53,090 --> 00:07:01,910
‫Entonces, los componentes de la malla estática y podemos ver que los componentes de la malla estática se cierran. Si sigo adelante, lo abro y

111
00:07:01,910 --> 00:07:07,400
‫paso el mouse sobre la pestaña, pueden ver que está debajo de este camino largo.

112
00:07:07,400 --> 00:07:12,590
‫Pero lo que es interesante es que está bajo las clases, que luego podemos buscar desde

113
00:07:12,590 --> 00:07:19,580
‫que serán componentes, componentes de malla estática, por lo que puedo cerrar esa pestaña y justo arriba incluir de hecho debajo de

114
00:07:19,580 --> 00:07:21,440
‫la inclusión para un arma.

115
00:07:21,740 --> 00:07:28,940
‫Vamos a hacer una inclusión hash para los componentes y luego los componentes de malla estática.

116
00:07:29,570 --> 00:07:35,630
‫Ahora, en realidad, acabo de recordar que las mallas que tenemos por alguna razón no son en realidad mallas estáticas como

117
00:07:35,630 --> 00:07:37,040
‫creo que podrían ser.

118
00:07:37,040 --> 00:07:43,790
‫Scott The Meshes, puedes averiguarlo yendo a los paquetes de activos, armas de juegos de disparos y echando un vistazo

119
00:07:43,790 --> 00:07:44,960
‫a estas mallas.

120
00:07:44,960 --> 00:07:48,380
‫Y efectivamente, si pasas el cursor sobre ellos, puedes ver que son mallas esqueléticas.

121
00:07:48,710 --> 00:07:49,760
‫No me preguntes por qué.

122
00:07:49,820 --> 00:07:51,710
‫Por alguna razón, eso es lo que son.

123
00:07:52,280 --> 00:07:56,780
‫Así que vamos a querer cambiar el tipo a malla esquelética en el archivo de cabecera.

124
00:07:56,780 --> 00:08:01,310
‫Entonces, en lugar de la malla estática, se usará una malla esquelética.

125
00:08:01,610 --> 00:08:05,990
‫Y lo mismo para la inclusión, será el esqueleto.

126
00:08:07,280 --> 00:08:09,500
‫Componente de malla dot h que queremos recordar.

127
00:08:09,500 --> 00:08:11,180
‫No hay usted en los archivos de encabezado.

128
00:08:12,420 --> 00:08:15,420
‫Y creo que los mismos componentes ya están incluidos aquí por defecto.

129
00:08:15,870 --> 00:08:20,260
‫Así que es hora de un desafío para agregar un componente de malla propio.

130
00:08:20,280 --> 00:08:27,390
‫Vamos a crear un componente de escena raíz, establecerlo en la raíz y establecerlo en la raíz para la clase y crear un

131
00:08:27,840 --> 00:08:33,240
‫componente de malla y configurar el archivo adjunto entre los dos para que el componente de malla sea

132
00:08:33,240 --> 00:08:37,320
‫un elemento secundario de esa raíz vista componentes, pulse vídeo y pruébelo.

133
00:08:37,710 --> 00:08:38,790
‫Bien, bienvenido de nuevo.

134
00:08:38,790 --> 00:08:42,660
‫Así que vamos a repasar y establecer, en primer lugar, nuestras raíces.

135
00:08:42,930 --> 00:08:48,180
‫Va a ser un subobjeto predeterminado de creación de tipo.

136
00:08:48,600 --> 00:08:56,100
‫Viste los componentes y luego le daremos un nombre que será con la macro de texto, lo llamaremos

137
00:08:56,100 --> 00:08:59,490
‫raíces y terminaremos con el punto y coma.

138
00:08:59,490 --> 00:09:01,530
‫Luego vamos a configurarlo como raíz.

139
00:09:01,530 --> 00:09:06,180
‫Entonces, establecer componentes raíz lo establecerá como el componente raíz para el actor.

140
00:09:06,180 --> 00:09:07,890
‫Así que establezca root como el componente raíz.

141
00:09:08,370 --> 00:09:09,180
‫Buen material.

142
00:09:09,600 --> 00:09:12,270
‫Entonces vamos a querer crear nuestra malla.

143
00:09:12,450 --> 00:09:21,420
‫Así que la malla equivale a crear un subobjeto predeterminado y es el componente de malla esquelético que queremos como clase y

144
00:09:21,420 --> 00:09:27,720
‫luego la macro de texto para llamarlo malla y agregar un punto y coma.

145
00:09:27,790 --> 00:09:29,880
‫Y luego queremos configurar el archivo adjunto.

146
00:09:30,210 --> 00:09:34,110
‫Por lo tanto, se configurará una flecha de malla.

147
00:09:35,210 --> 00:09:42,890
‫Configure el archivo adjunto y vamos a querer adjuntarlo a la raíz como cosas geniales para que podamos seguir

148
00:09:42,890 --> 00:09:50,420
‫adelante y guardarlo y, con suerte, compilar y compilar, iremos a Unreal y echaremos un vistazo a nuestra

149
00:09:50,420 --> 00:09:51,470
‫clase secundaria.

150
00:09:51,890 --> 00:09:57,260
‫Y, por supuesto, aquí tenemos las raíces, tenemos la malla secundaria, también tenemos esta raíz de escena predeterminada

151
00:09:57,260 --> 00:10:02,270
‫que está dando vueltas. Creo que vamos a reiniciar el editor y ver si desaparece.

152
00:10:02,780 --> 00:10:06,980
‫A veces, al agregar componentes, las cosas pueden quedarse así y almacenarse en caché.

153
00:10:07,370 --> 00:10:11,840
‫Y efectivamente, si volvemos a abrir los planos del arma BP, pueden ver que acabamos de obtener esos

154
00:10:11,840 --> 00:10:12,440
‫dos componentes.

155
00:10:12,440 --> 00:10:18,530
‫Agregamos las raíces y la malla, y probablemente queramos seguir adelante y cambiar la malla por una de las mallas esqueléticas

156
00:10:18,530 --> 00:10:21,470
‫de los paquetes de activos del juego de disparos.

157
00:10:21,950 --> 00:10:23,210
‫Tenemos un rifle, tenemos un lanzador.

158
00:10:23,210 --> 00:10:25,670
‫Voy a elegir este para ser el rifle.

159
00:10:26,060 --> 00:10:30,230
‫Entonces, llamarlo un arma de BP es un poco falso.

160
00:10:30,230 --> 00:10:32,780
‫Este probablemente debería ser el rifle BP.

161
00:10:32,780 --> 00:10:40,130
‫Así que sigamos adelante y cambiemos el nombre de eso, vayamos al navegador de contenido y cambiemos el nombre a BP Rifle o BP

162
00:10:40,130 --> 00:10:41,570
‫Gun, guión bajo rifle.

163
00:10:41,570 --> 00:10:44,660
‫Ahora recoge el rifle BP directamente cuando vayan.

164
00:10:45,080 --> 00:10:47,600
‫Y eso nos ha dado un arma.

165
00:10:47,600 --> 00:10:54,350
‫Ahora, obviamente, esto significa que podemos tener todo tipo de propiedades contra este actor,

166
00:10:54,350 --> 00:11:00,950
‫como la fuerza del arma, su alcance, etc., creando nuevas propiedades en C++.

167
00:11:00,950 --> 00:11:08,030
‫Y esa es la fuerza de tener esta arquitectura, que las armas pueden ser un poco diferentes.

168
00:11:08,030 --> 00:11:15,590
‫Podemos tener diferentes mecánicas de tiro para rifles, francotiradores, juegos de rol y cosas por el estilo.

169
00:11:16,040 --> 00:11:17,420
‫Eso es genial.

170
00:11:17,420 --> 00:11:18,800
‫Y también podemos tener diferentes estadísticas.

171
00:11:18,800 --> 00:11:23,480
‫Entonces podemos tener un rifle fuerte y un rifle débil dependiendo de las diferentes subclases de planos.

172
00:11:23,780 --> 00:11:24,320
‫Cosas interesantes.

173
00:11:24,320 --> 00:11:29,720
‫Ahora, en la próxima lección, veremos cómo vamos a engendrar esta arma como un

174
00:11:30,050 --> 00:11:32,420
‫hijo de nuestro personaje actual.

175
00:11:32,660 --> 00:11:33,320
‫Veré eso.

