‫Oye.
‫Bienvenido de nuevo.
‫Ahora, ya hemos creado una clase base -- C++.
‫En este video, derivaremos de esa clase para crear una nueva clase secundaria basada en la base --.
‫Así que discutamos por qué querríamos hacer tal cosa.
‫Así que tenemos esta clase base -- y sabemos que vamos a tener dos clases diferentes que se derivan de
‫base --.
‫Vamos a tener nuestro tanque y vamos a tener la torre.
‫Ahora, la base contiene mallas, una cápsula y un punto de generación.
‫Y estas son cosas que tanto el Tanque como la torre pueden heredar.
‫Pero el tanque y la torre también van a tener algunas funciones que difieren entre sí.
‫Por un lado, nuestro tanque se moverá por el mundo y también será controlado por el
‫jugador.
‫Por lo tanto, deberá configurarse para recibir entradas del teclado y el mouse.
‫La torre, por otro lado, solo se quedará allí.
‫No necesita ninguna entrada del jugador, ya que todas sus acciones estarán controladas por código.
‫Entonces, debido a que el tanque y la torre se comportarán de manera diferente, usaremos la herencia para
‫crear clases secundarias de base, para que podamos heredar lo que tienen en común y luego agregar a cada clase las
‫características que serán diferentes.
‫Así que estamos de regreso aquí en el editor y voy a ir a nuestras clases de C++, la carpeta de
‫Tune Tank donde tenemos nuestra clase base y esta será la clase de la que nos estamos derivando.
‫Ahora podemos hacer clic con el botón derecho aquí y seleccionar crear una clase C++ derivada de la base --.
‫Así que elijamos eso y voy a permitir que coloque esta clase en la misma carpeta de tanques de slash tune
‫de origen como base --.
‫Y por el nombre de esto, voy a llamarlo tanque.
‫Así que nuestra clase de tanque será la clase de nuestro tanque real, que estamos controlando y moviendo por
‫el mundo.
‫Así que hagamos clic en crear clase.
‫Bien, hemos compilado y el código vs se ha abierto con nuestro nuevo archivo de tanque y también tenemos Tank CP.
‫Ahora estos son bastante desnudos.
‫Realmente no hay nada aquí, pero aunque no podemos verlos, hemos heredado algunas cosas de
‫la clase base.
‫Tenemos esos componentes que hemos agregado a la base --.
‫Aunque esas son variables privadas, todavía existen en esta clase.
‫Entonces, ahora que hemos creado nuestra clase de tanque, hablemos de un par de cosas.
‫El tanque necesitará que la torreta no.
‫Bueno, dado que vamos a controlar el tanque, vamos a necesitar una forma de concentrarnos en el
‫tanque mientras rueda por el nivel.
‫Ahora, en esta imagen, esto aquí es un componente de la cámara.
‫Su clase C ++ es su componente de cámara.
‫Y esta línea roja aquí se llama componente de brazo de resorte y su clase C++ es su componente de brazo de resorte.
‫Agregar estos componentes a un -- nos permite ver el -- desde el punto de vista de la cámara.
‫Y si la cámara y su brazo de resorte están unidos al... de alguna manera, seguirán al...
‫alrededor del mundo.
‫Ahora, de vuelta aquí en el editor, si volvemos a la carpeta --'s y abrimos BP -- tank, podemos hacer clic
‫en la ventana gráfica para poder ver todo.
‫Y luego podemos seleccionar la composición de la cápsula y hacer clic en agregar y seleccionar el brazo de resorte.
‫Este es un componente de brazo de resorte.
‫Parece una línea roja.
‫Ahora, con nuestro componente de brazo de resorte seleccionado, podemos agregar otro componente y elegir la cámara.
‫Ahora, una vez que hemos agregado la cámara unida al brazo de resorte, ahora tenemos una forma de ver desde el punto
‫de vista de la cámara una vez que comenzamos a controlar el --.
‫Ahora el brazo de resorte es bastante útil.
‫Tiene esta longitud de brazo objetivo y si la ajusta, verá que la cámara se ajusta junto con el brazo
‫de resorte.
‫Entonces, esta es una forma de controlar qué tan lejos está la cámara del --.
‫Estas son definitivamente cosas que queremos en nuestra clase --, pero las vamos a agregar desde el
‫lado de C++ en lugar de solo agregarlas aquí en el proyecto.
‫Así que voy a borrar esos.
‫Entonces, para su desafío, me gustaría que agregue algunas cosas a la clase de tanque.
‫Por un lado, necesitamos un componente de brazo de resorte y un componente de cámara, así que cree estas variables y
‫conviértalas en punteros.
‫Continúe y haga una sección pública y otra privada y coloque estas variables en la sección privada.
‫Ahora necesitaremos que sean propiedades U, así que dales macros de propiedad y completa esas macros con
‫los especificadores apropiados según lo que aprendiste en las lecciones anteriores.
‫Ahora, una vez que haya creado estas variables, cree un constructor y colóquelo en la
‫sección pública y defínalo en el archivo CP, y luego dentro del constructor construya nuestros componentes de cámara y brazo de
‫resorte usando crear subobjeto predeterminado.
‫Asegúrese de utilizar el archivo adjunto de configuración para conectar estos componentes a algo.
‫Nos gustaría que nuestro componente de brazo de resorte se adjuntara al componente raíz.
‫Por lo tanto, use el componente raíz y configure el accesorio de configuración y, para la cámara, conéctelo al brazo de resorte.
‫Puede volver a consultar la clase base.
‫R Recuérdese cómo se ve el código para hacer estas cosas.
‫Adelante, pausa el video y agrega estas cosas a la clase de tanque.
‫Está bien.
‫Así que estamos aquí en Tank.
‫Ahora, lo primero es lo primero.
‫Me gustaría tener una sección pública y una sección privada.
‫Así que la sección privada será donde agreguemos estos dos nuevos componentes.
‫Vamos a querer un componente de brazo de resorte en U, que será un puntero, y podemos llamarlo brazo de
‫resorte.
‫Y también necesitaremos un nuevo componente de cámara y lo llamaremos cámara.
‫Esta bien.
‫Si sus nombres son ligeramente diferentes.
‫Ahora, desde el principio, veo los errores de IntelliSense aquí, lo que significa que
‫tendré que declararlos.
‫Así que voy a usar clase con brazo de resorte y clase con cámara.
‫Y ahora estos son declarados hacia adelante.
‫Ahora necesitamos nuestras nuevas propiedades.
‫Así que agreguemos las nuevas macros de propiedades.
‫Y dentro de la macro de propiedades vamos a querer tener algunos especificadores.
‫Estos serán visibles en cualquier lugar, ya que vimos que los componentes deben estar visibles en cualquier lugar para que
‫podamos ajustar sus parámetros en el panel de detalles.
‫Ahora, no veo ninguna necesidad inmediata de exposición al gráfico de eventos, por lo que no creo que necesitemos
‫lectura, escritura o solo lectura de planos.
‫Esta bien.
‫Si los agregaste, los voy a dejar fuera ahora.
‫Voy a darles una categoría.
‫Y dado que estos son componentes, simplemente los colocaré en nuestra categoría de componentes junto con
‫nuestros otros componentes.
‫Ahora no los estoy exponiendo al gráfico de eventos, por lo que no necesito que nuestro metapermiso de acceso privado se especifique
‫aquí.
‫Así que esto es suficiente para el brazo de resorte y me gustaría darle al componente de la cámara la misma propiedad que usted.
‫Así que lo estoy copiando.
‫Así que ahora tenemos nuestros componentes.
‫Lo siguiente que debe hacer es construirlos en el constructor, lo que significa que necesitamos un constructor.
‫Ahora el constructor tendrá el mismo nombre que la clase, por lo que es un tanque y debemos definir este constructor en
‫el archivo CP.
‫Así que vayamos a Tank CP y creemos un tanque.
‫Así que ahí está el cuerpo de nuestra función y el constructor del tanque debe tener como prefijo nuestro nombre de clase y el
‫operador de resolución de alcance.
‫Esos son estos dos puntos dobles aquí.
‫De esa manera, no solo estamos creando una nueva función, sino que estamos definiendo nuestro constructor para esta clase.
‫Ahora nos gustaría construir estos componentes.
‫Entonces, comencemos con el brazo de resorte.
‫Así que vamos a decir que el brazo de resorte es igual a crear un subobjeto predeterminado y este será un componente de brazo de resorte en U.
‫Y para el texto, simplemente llamaré a este brazo de resorte.
‫Y para el archivo adjunto, vamos a configurar el brazo de resorte, configurar el archivo adjunto, pasando el componente raíz.
‫Ahora.
‫lo estaba esperando
‫Ahí está.
‫El error de IntelliSense que dice puntero a componente de brazo de resorte de uso de tipo de clase incompleto.
‫Eso es porque necesitamos incluir el archivo de encabezado ya que estamos creando y usando un componente de brazo de resorte.
‫Así que aquí está la documentación de mi motor irreal y si me desplazo hacia abajo, está mi include.
‫Así que voy a copiar eso y pegarlo aquí en la parte superior, justo debajo del borde del tanque.
‫Ahora, solo una nota al margen en general, mantendrá su archivo de encabezado de clase incluido en la
‫parte superior e incluye para sus componentes debajo de eso.
‫Así que tenemos nuestro brazo de resorte.
‫Es hora de construir la cámara.
‫Así que vamos a decir que la cámara crea un subobjeto predeterminado, su componente de cámara.
‫Y en la macro de texto, voy a llamar a esto simplemente cámara.
‫Y para la cámara voy a llamar accesorio de configuración que pasa en brazo de resorte.
‫Y, por supuesto, necesito el archivo de encabezado de la cámara.
‫Así que aquí está la documentación del motor irreal y aquí donde dice documentación de
‫búsqueda, voy a escribir el componente de la cámara y aquí veo el componente de la cámara.
‫Seleccionaré eso.
‫Y aquí está la documentación para el componente de la cámara.
‫Así que lo copiaré para incluirlo y pegarlo aquí mismo en la parte superior de nuestro archivo.
‫Y ahora deberíamos estar bien.
‫Bien, sigamos adelante y compilemos esto.
‫Bueno.
‫Así que tengo una compilación exitosa.
‫Volvamos al editor y aquí en -- Tank.
‫Por supuesto, no vemos nada porque, el tanque se deriva de la base, y los componentes que acabamos de
‫agregar, los agregamos a la clase del tanque.
‫Así que BP -- tank no los obtendrá porque no se deriva de la clase tank.
‫Ahora podríamos ir y crear un nuevo plano basado en la clase de tanque, pero luego tendríamos
‫que configurar estos componentes nuevamente.
‫Y realmente no tengo ganas de pasar por todo ese trabajo por segunda vez.
‫Hay una manera más fácil de reparar este plano en la clase de tanque.
‫Lo hacemos subiendo a la configuración de la clase y en el panel de detalles con la configuración de la clase seleccionada,
‫vemos las opciones de la clase y está esta clase principal.
‫El menú desplegable muestra que está configurado como base, pero si hacemos clic en él, podemos buscar
‫tanque y elegir tanque como clase base.
‫Y ahora este modelo se deriva de la clase de tanque.
‫Entonces vemos que todas esas propiedades que establecemos con nuestros componentes, como la malla y el tamaño de la
‫cápsula, todavía están allí.
‫Solo que ahora vemos una cámara.
‫De hecho, tenemos un brazo de resorte y una cámara.
‫Y si seleccionamos el brazo de resorte ahora, podemos ver esa línea roja.
‫Así que esto es genial.
‫Así que podría tomar este componente del brazo de resorte y cambiar la longitud del brazo objetivo.
‫Si quisiera, podría configurarlo en algo así como 600 e incluso puedo cambiar su rotación para que incline la cámara
‫hacia el tanque seleccionando el modo de rotación y girándola un poco hacia arriba.
‫Me gusta Ahora me gustaría señalar que no debe cambiar la ubicación de la cámara.
‫Puede ser tentador seleccionar la cámara y moverla por el mundo para colocarla y colocarla en
‫el ángulo correcto.
‫Pero esta no es la forma correcta de hacerlo.
‫La forma correcta es establecer la rotación y la longitud del brazo objetivo del componente del brazo de resorte.
‫Y la razón es que quieres que la cámara esté unida al extremo del brazo de resorte.
‫El brazo de resorte tiene muchas funciones integradas diferentes, como encogerse cuando la cámara choca
‫contra una pared para evitar obstáculos, bloquear la vista del estanque y otras cosas por el estilo.
‫Así que querrá que la cámara se conecte al extremo del brazo de resorte y luego ajuste el
‫brazo de resorte en lugar de ajustar la posición y la rotación de la cámara.
‫Entonces, en este video, creamos la clase de tanque y la derivamos del estanque base para heredar esas cualidades de
‫la clase de estanque base.
‫Agregamos un componente de brazo de resorte y un componente de cámara y los expusimos al editor usando solo visible y
‫los colocamos en su propia categoría.
‫Así que nos estamos acercando al producto terminado paso a paso y continuaremos desarrollando este tanque en
‫la próxima lección.
‫Te veré pronto.