‫Hola y bienvenido.
‫En esta lección, vamos a crear un arma y vamos a aprender cómo
‫diseñaremos armas para este juego para que sean intercambiables, para que podamos tener diferentes propiedades en diferentes tipos
‫de armas.
‫Y así es generalmente como funcionan las arquitecturas en los tiradores en primera o tercera persona, profundicemos y veamos cómo
‫se hace.
‫Bueno.
‫Así que no hemos revisado nuestro plan de proyecto en un tiempo.
‫No hemos llegado al movimiento del plan.
‫Ha hecho la animación por ahora, está hecho.
‫Y el rodaje, eso es lo siguiente en lo que debemos centrarnos.
‫Ahora, es un poco confuso aquí porque nuestra malla ya parece tener un arma, pero en realidad no
‫queremos usar esta arma.
‫Queremos usarlo de una manera diferente.
‫La razón es que en un tipo de juego de disparos, a menudo quieres poder cambiar entre armas o al
‫menos poder tener diferentes personajes, tener diferentes armas.
‫Y la forma más fácil de hacerlo es diseñar el arma como algo separado del personaje para que
‫puedas intercambiarlos y que pueda ser responsable de cómo dispara.
‫Si es un lanzacohetes, una escopeta o un rifle, van a hacer las cosas de diferentes maneras.
‫Ahora, podría decir, está bien, bueno, creemos un componente de pistola y podemos pegar esos componentes de pistola
‫debajo de nuestra malla.
‫Eso funcionaría, excepto que perdemos la modularidad que nos permite agregar múltiples componentes al
‫arma.
‫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
‫personaje del tirador.
‫Ahora, esto es algo con lo que no nos hemos encontrado antes, pero funciona así.
‫Puedes tener un personaje tirador y un arma como hijo, y el personaje tirador puede tener varios componentes que
‫son hijos entre sí.
‫Así que tienes la cápsula, tenemos la malla como un elemento secundario de la cápsula en este
‫momento, y los componentes del arma pueden protegerse contra eso.
‫Entonces, la malla obtiene la identificación del niño para la malla del personaje.
‫Y si tiene otros componentes, como un efecto de partículas en la boca del arma, podría ser una
‫identificación infantil en la malla.
‫Así que pueden ver que estas jerarquías son un poco independientes, que tienen los componentes de la
‫escena, los que se han transformado a la derecha, y pueden estar en cierta jerarquía.
‫Y luego la jerarquía de actores en realidad sigue la jerarquía de los componentes de la escena.
‫Los actores no tienen una jerarquía propia.
‫Esta es la parte que lleva un poco de tiempo entender.
‫Fue un momento de aha cuando hizo clic para mí.
‫Es que en realidad no hay una jerarquía de actores, solo hay una jerarquía de componentes de la escena.
‫Hay actores que tienen los mismos componentes y terminan teniendo una jerarquía porque sus
‫componentes de escena están relacionados entre sí, pero en realidad no tienen una relación entre ellos.
‫Dicho esto, para establecer el contexto, lo primero que queremos hacer es crearnos
‫un actor de armas C++.
‫Y en este caso, no va a ser un peón ni un personaje ni nada por el estilo.
‫Simplemente va a ser un actor sencillo porque no necesitamos ningún comportamiento.
‫No necesitas poseerlo, no necesitamos hacer nada.
‫Es solo un actor simple, simple.
‫Así que sigamos adelante y hagamos eso.
‫De hecho, un pequeño desafío para ti.
‫Continúe y cree ese actor de C++, algo que debería poder hacer, un pequeño mini desafío, inténtelo.
‫Está bien, estoy de vuelta.
‫Voy a hacerlo.
‫Nueva clase de C++ y no necesitamos tener, veamos, actor.
‫Eso es todo lo que queremos elegir.
‫Y vamos a seguir adelante y llamar a esta pistola, tan simple como vamos a crear esa clase.
‫¿Okey?
‫Y una vez hecho esto, aparecerá en su editor de código.
‫Y no necesitamos hacer nada con él todavía porque lo primero que quiero hacer es crear una subclase
‫de modelo.
‫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
‫sé qué valores predeterminados automáticos, voy a ponerlo en la raíz del contenido cuatro. Ahora podemos hacer un poco de
‫reorganizando una vez que tengamos más clases.
‫Como he dicho antes, crearemos la clase Blueprint.
‫Como puedes ver, está completamente vacío.
‫Tiene esta raíz de escena predeterminada.
‫Vamos a querer arreglar eso.
‫Lo que queremos hacer es agregar un componente en C++ porque este es un curso de C++.
‫Practiquemos el músculo de agregar componentes en C++.
‫También significa que vamos a tener acceso a esos componentes desde dentro de nuestro código C++ para manipular y escribir
‫nuestro código que ahora la configuración que vamos a querer es tener un componente raíz de escena, que solo va a
‫ser componentes de escena y luego una malla que es un hijo de eso.
‫¿Por qué queremos eso?
‫Porque queremos poder cambiar la posición de la malla en relación con las raíces del arma para que básicamente
‫podamos colocar el mango en diferentes lugares para diferentes mallas.
‫Entonces, si tenemos diferentes armas, podemos asegurarnos de que todas tengan las manijas en el mismo lugar.
‫Entonces, cuando lo adjuntemos a la mano del personaje, aparecerá con el mango en la mano del personaje.
‫Bien, entonces, ¿cómo vamos a hacer eso?
‫Vamos a pasar a nuestro código de Visual Studio, y voy a crear una sección privada aquí abajo donde vamos
‫a almacenar las nuevas propiedades para los diferentes componentes que vamos a
‫crear.
‫Así que voy a crear una nueva propiedad visible en cualquier lugar.
‫Queremos que nuestros componentes sean visibles en cualquier lugar debido a sus punteros
‫de puntos, no queremos poder editar los punteros, pero queremos poder ver las propiedades de esos punteros y poder hacerlo.
‫Aquellas.
‫Y eso entonces se convierte en el ámbito de la clase a la que estamos apuntando.
‫Eso luego decide qué se muestra, qué se puede editar.
‫Así que todo lo que queremos decir aquí es que no es el punto de que sea editable.
‫Así que es por eso que ir por visible de todos modos.
‫De todos modos, un poco de revisión allí.
‫Ahora queremos que esto sea una vista porque es un componente.
‫Entonces es un componente de escena lo que queremos.
‫Si puedo escribirlo correctamente, he visto componentes y es un puntero a él y este
‫será nuestro componente raíz.
‫Al igual que.
‫Y luego vamos a querer una nueva propiedad.
‫Nuevamente visible en cualquier lugar.
‫Para nuestra malla.
‫La clase para la malla va a ser algunos componentes MASH estáticos porque no es un puré esquelético, es
‫rígido, no tiene ningún esqueleto, ningún hueso.
‫Así que quiero que eso sea un indicador y esto simplemente enfriará el puré así.
‫De hecho, creo que debo tener un poco de cuidado aquí porque creo que el componente raíz ya existe en
‫la clase principal para el actor.
‫Así que voy a llamar a esta ruta en su lugar.
‫Y luego ya tenemos un constructor en C++.
‫Solo vamos a necesitar incluir el apropiado -- aquí.
‫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.
‫Usas Control P y vas a buscar.
‫En este caso, queremos la malla estática.
‫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
‫paso el mouse sobre la pestaña, pueden ver que está debajo de este camino largo.
‫Pero lo que es interesante es que está bajo las clases, que luego podemos buscar desde
‫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
‫la inclusión para un arma.
‫Vamos a hacer una inclusión hash para los componentes y luego los componentes de malla estática.
‫Ahora, en realidad, acabo de recordar que las mallas que tenemos por alguna razón no son en realidad mallas estáticas como
‫creo que podrían ser.
‫Scott The Meshes, puedes averiguarlo yendo a los paquetes de activos, armas de juegos de disparos y echando un vistazo
‫a estas mallas.
‫Y efectivamente, si pasas el cursor sobre ellos, puedes ver que son mallas esqueléticas.
‫No me preguntes por qué.
‫Por alguna razón, eso es lo que son.
‫Así que vamos a querer cambiar el tipo a malla esquelética en el archivo de cabecera.
‫Entonces, en lugar de la malla estática, se usará una malla esquelética.
‫Y lo mismo para la inclusión, será el esqueleto.
‫Componente de malla dot h que queremos recordar.
‫No hay usted en los archivos de encabezado.
‫Y creo que los mismos componentes ya están incluidos aquí por defecto.
‫Así que es hora de un desafío para agregar un componente de malla propio.
‫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
‫componente de malla y configurar el archivo adjunto entre los dos para que el componente de malla sea
‫un elemento secundario de esa raíz vista componentes, pulse vídeo y pruébelo.
‫Bien, bienvenido de nuevo.
‫Así que vamos a repasar y establecer, en primer lugar, nuestras raíces.
‫Va a ser un subobjeto predeterminado de creación de tipo.
‫Viste los componentes y luego le daremos un nombre que será con la macro de texto, lo llamaremos
‫raíces y terminaremos con el punto y coma.
‫Luego vamos a configurarlo como raíz.
‫Entonces, establecer componentes raíz lo establecerá como el componente raíz para el actor.
‫Así que establezca root como el componente raíz.
‫Buen material.
‫Entonces vamos a querer crear nuestra malla.
‫Así que la malla equivale a crear un subobjeto predeterminado y es el componente de malla esquelético que queremos como clase y
‫luego la macro de texto para llamarlo malla y agregar un punto y coma.
‫Y luego queremos configurar el archivo adjunto.
‫Por lo tanto, se configurará una flecha de malla.
‫Configure el archivo adjunto y vamos a querer adjuntarlo a la raíz como cosas geniales para que podamos seguir
‫adelante y guardarlo y, con suerte, compilar y compilar, iremos a Unreal y echaremos un vistazo a nuestra
‫clase secundaria.
‫Y, por supuesto, aquí tenemos las raíces, tenemos la malla secundaria, también tenemos esta raíz de escena predeterminada
‫que está dando vueltas. Creo que vamos a reiniciar el editor y ver si desaparece.
‫A veces, al agregar componentes, las cosas pueden quedarse así y almacenarse en caché.
‫Y efectivamente, si volvemos a abrir los planos del arma BP, pueden ver que acabamos de obtener esos
‫dos componentes.
‫Agregamos las raíces y la malla, y probablemente queramos seguir adelante y cambiar la malla por una de las mallas esqueléticas
‫de los paquetes de activos del juego de disparos.
‫Tenemos un rifle, tenemos un lanzador.
‫Voy a elegir este para ser el rifle.
‫Entonces, llamarlo un arma de BP es un poco falso.
‫Este probablemente debería ser el rifle BP.
‫Así que sigamos adelante y cambiemos el nombre de eso, vayamos al navegador de contenido y cambiemos el nombre a BP Rifle o BP
‫Gun, guión bajo rifle.
‫Ahora recoge el rifle BP directamente cuando vayan.
‫Y eso nos ha dado un arma.
‫Ahora, obviamente, esto significa que podemos tener todo tipo de propiedades contra este actor,
‫como la fuerza del arma, su alcance, etc., creando nuevas propiedades en C++.
‫Y esa es la fuerza de tener esta arquitectura, que las armas pueden ser un poco diferentes.
‫Podemos tener diferentes mecánicas de tiro para rifles, francotiradores, juegos de rol y cosas por el estilo.
‫Eso es genial.
‫Y también podemos tener diferentes estadísticas.
‫Entonces podemos tener un rifle fuerte y un rifle débil dependiendo de las diferentes subclases de planos.
‫Cosas interesantes.
‫Ahora, en la próxima lección, veremos cómo vamos a engendrar esta arma como un
‫hijo de nuestro personaje actual.
‫Veré eso.