‫Ei.
‫Bem vindo de volta.
‫Agora, já criamos uma base -- classe C++.
‫Neste vídeo, vamos derivar dessa classe para criar uma nova classe filha com base em --.
‫Então, vamos discutir por que gostaríamos de fazer uma coisa dessas.
‫Então temos essa base -- class e sabemos que teremos duas classes diferentes que derivam da base
‫--.
‫Nós vamos ter nosso tanque e nós vamos ter a torre.
‫Agora, a base - contém malhas, uma cápsula e um ponto de desova.
‫E essas são coisas que o Tanque e a torre podem herdar.
‫Mas o tanque e a torre também terão algumas funcionalidades que diferem entre si.
‫Por um lado, nosso tanque vai se mover pelo mundo e também vai ser controlado pelo
‫jogador.
‫Portanto, ele precisará ser configurado para receber entradas do teclado e do mouse.
‫A torre, por outro lado, vai ficar ali.
‫Ele não precisa de nenhuma entrada do jogador, pois suas ações serão todas controladas por código.
‫Então, como o tanque e a torre se comportarão de maneira diferente, usaremos a herança para criar classes
‫filhas de base -- para que possamos herdar o que eles têm em comum e adicionar a cada classe os
‫recursos que serão diferentes.
‫Então, estamos de volta aqui no editor e vou entrar em nossas classes C++, a pasta do Tune
‫Tank onde temos nossa base -- class e esta será a classe da qual derivaremos.
‫Agora podemos clicar com o botão direito do mouse aqui e selecionar criar classe C++ derivada de base --.
‫Então, vamos escolher isso e vou permitir que ele coloque essa classe na mesma pasta de tanques de ajuste de barra
‫de origem como base --.
‫E para o nome disso, vou chamá-lo de tanque.
‫Então nossa classe de tanque será a classe do nosso tanque real -- que estamos controlando e nos movendo
‫pelo mundo.
‫Então vamos clicar em criar classe.
‫Ok, então nós compilamos e o código vs foi aberto com nosso novo arquivo de tanque e também temos o Tank CP.
‫Agora estes estão bem nus.
‫Não há realmente nada aqui, mas mesmo que não possamos vê-los, herdamos algumas coisas
‫da classe base.
‫Nós temos esses componentes que adicionamos à base --.
‫Mesmo que sejam variáveis privadas, elas ainda existem nesta classe.
‫Agora que criamos nossa classe tanque, vamos falar sobre algumas coisas.
‫O tanque precisará que a torre não.
‫Bem, já que vamos controlar o tanque, vamos precisar de uma maneira de focar no tanque enquanto ele
‫está rolando ao longo do nível.
‫Agora, nesta foto, este aqui é um componente de câmera.
‫Sua classe C++ é seu componente de câmera.
‫E esta linha vermelha aqui é chamada de componente de braço de mola e sua classe C++ é seu componente de braço de mola.
‫Adicionar esses componentes a um -- nos permite ver o -- do ponto de vista da câmera.
‫E se a câmera e seu braço de mola estiverem presos ao -- de alguma forma, eles seguirão o -- ao
‫redor do mundo.
‫Agora, de volta aqui no editor, se voltarmos para nossa pasta --' e abrirmos BP -- tanque, podemos clicar
‫na janela de visualização para ver tudo.
‫E então podemos selecionar a composição da cápsula e clicar em adicionar e selecionar o braço da mola.
‫Este é um componente de braço de mola.
‫Parece uma linha vermelha.
‫Agora com nosso componente de braço de mola selecionado, podemos adicionar outro componente e escolher a câmera.
‫Agora, uma vez que adicionamos a câmera conectada ao braço da mola, agora temos uma maneira de ver do
‫ponto de vista da câmera quando começamos a controlar o --.
‫Agora o braço da mola é bastante útil.
‫Ela tem esse comprimento de braço alvo e se você ajustar, verá que a câmera se ajusta junto com o braço
‫de mola.
‫Portanto, esta é uma maneira de controlar o quão longe a câmera está do --.
‫Então, essas são definitivamente as coisas que queremos em nossa -- class, mas vamos adicioná-las
‫do lado C++ em vez de apenas adicioná-las aqui no blueprint.
‫Então eu vou deletar esses.
‫Então, para o seu desafio, gostaria que você adicionasse algumas coisas à classe de tanques.
‫Por um lado, precisamos de um componente de braço de mola e um componente de câmera, então crie essas variáveis
‫e torne-as ponteiros.
‫Vá em frente e faça uma seção pública e uma privada e coloque essas variáveis na seção privada.
‫Agora precisaremos que sejam propriedades U, então dê a elas macros de propriedade e preencha essas macros com
‫os especificadores apropriados com base no que você aprendeu nas aulas anteriores.
‫Agora, uma vez que você criou essas variáveis, crie um construtor e coloque-o na seção
‫pública e defina-o no arquivo CP e, em seguida, dentro do construtor, construa nossos componentes de câmera e braço de
‫mola usando criar subobjeto padrão.
‫Certifique-se de usar o anexo de configuração para anexar esses componentes a algo.
‫Gostaríamos que nosso componente de braço de mola fosse anexado ao componente de raiz.
‫Portanto, use o componente raiz e defina o acessório de configuração e, para a câmera, conecte-o ao braço da mola.
‫Você pode consultar a classe -- base.
‫R Lembre-se de como é o código para fazer essas coisas.
‫Vá em frente e pause o vídeo e adicione essas coisas à classe do tanque.
‫Tudo bem.
‫Então estamos aqui em Tank.
‫Agora, as primeiras coisas primeiro.
‫Eu gostaria de ter uma seção pública e uma seção privada.
‫Portanto, a seção privada será onde adicionaremos esses dois novos componentes.
‫Vamos querer um componente de braço de mola em U, que será um ponteiro, e podemos chamá-lo de braço de
‫mola.
‫E também precisaremos de um novo componente de câmera e chamaremos essa câmera.
‫Tudo bem.
‫Se seus nomes são ligeiramente diferentes.
‫Agora, logo de cara, estou vendo os erros do IntelliSense aqui, o que significa
‫que precisarei declará-los.
‫Então eu vou usar classe com braço de mola e classe com câmera.
‫E agora estes são declarados para a frente.
‫Agora precisamos de nossas novas propriedades.
‫Então vamos adicionar as novas macros de propriedade.
‫E dentro da macro de propriedade vamos querer ter alguns especificadores.
‫Eles estarão visíveis em qualquer lugar, pois vimos que os componentes precisam estar visíveis em qualquer lugar para
‫que possamos ajustar seus parâmetros no painel de detalhes.
‫Agora, não estou vendo nenhuma necessidade imediata de exposição ao gráfico de eventos, então não acho que precisamos ler,
‫escrever ou ler o blueprint somente.
‫Tudo bem.
‫Se você os adicionou, vou deixá-los de fora agora.
‫Eu vou dar a estes uma categoria.
‫E como esses são componentes, vou colocá-los em nossa categoria de componentes junto com nossos
‫outros componentes.
‫Agora, não estou expondo isso ao gráfico de eventos, portanto, não preciso de nossa meta permitir acesso privado especificado
‫aqui.
‫Então isso é suficiente para o braço de mola e eu gostaria de dar ao componente da câmera a mesma propriedade que você.
‫Então estou copiando.
‫Então agora temos nossos componentes.
‫A próxima coisa a fazer é construí-los no construtor, o que significa que precisamos de um construtor.
‫Agora o construtor terá o mesmo nome da classe, então é um tanque e precisamos definir este construtor no
‫arquivo CP.
‫Então vamos ao Tank CP e crie um tanque.
‫Portanto, há nosso corpo de função e o construtor do tanque deve ser prefixado com o nome da nossa classe e o
‫operador de resolução do escopo.
‫São esses dois-pontos duplos aqui.
‫Dessa forma, não estamos apenas criando uma nova função, mas definindo nosso construtor para essa classe.
‫Agora gostaríamos de construir esses componentes.
‫Então vamos começar com o braço de mola.
‫Então, vamos dizer que o braço da mola é igual a criar um subobjeto padrão e este será um componente do braço da mola u.
‫E para o texto, vou simplesmente chamar este braço de mola.
‫E para o acessório, vamos configurar o braço da mola, configurar o acessório, passando no componente raiz.
‫Agora.
‫Eu estava esperando por isso.
‫Aí está.
‫O erro do IntelliSense dizendo que o ponteiro para o tipo de classe incompleta usa o componente do braço da mola.
‫Isso porque precisamos incluir o arquivo de cabeçalho, pois estamos criando e usando um componente de braço de mola.
‫Então aqui está a minha documentação do mecanismo irreal e se eu rolar para baixo, lá está o meu include.
‫Então eu vou copiar isso e colar bem aqui no topo, logo abaixo da borda do tanque.
‫Agora, apenas uma nota lateral em geral, você manterá seu arquivo de cabeçalho de classe
‫incluído no topo e inclui seus componentes abaixo disso.
‫Então temos nosso braço de mola.
‫É hora de construir a câmera.
‫Então, vamos dizer que a câmera cria um subobjeto padrão, seu componente de câmera.
‫E na macro de texto, vou chamar isso simplesmente de câmera.
‫E para a câmera vou chamar o acessório de configuração passando no braço da mola.
‫E é claro que preciso do arquivo de cabeçalho da câmera.
‫Então aqui está a documentação do mecanismo irreal e aqui onde diz a documentação
‫de pesquisa, vou digitar o componente da câmera e aqui vejo o componente da câmera.
‫Eu vou selecionar isso.
‫E aqui está a documentação do componente da câmera.
‫Então, vou copiá-lo para incluir e colá-lo aqui no topo do nosso arquivo.
‫E agora devemos ser bons.
‫Ok, então vamos em frente e compilar isso.
‫OK.
‫Então eu tenho uma compilação bem sucedida.
‫Vamos voltar ao editor e aqui em -- Tank.
‫Claro, não vemos nada porque -- tank é derivado de base -- e os componentes que acabamos
‫de adicionar, adicionamos à classe tank.
‫Então BP -- tanque não vai conseguir isso porque não é derivado da classe tanque.
‫Agora poderíamos criar um novo projeto baseado na classe do tanque, mas então teríamos que
‫configurar esses componentes novamente.
‫E eu realmente não sinto vontade de passar por todo esse trabalho uma segunda vez.
‫Há uma maneira mais fácil de reparar esse projeto para a classe tanque.
‫Fazemos isso indo até as configurações da classe e no painel de detalhes com as configurações da classe selecionadas,
‫vemos as opções da classe e há essa classe pai.
‫O menu suspenso mostra que está definido como base, mas se clicarmos nele, podemos procurar por tanque
‫e escolher tanque como a classe base.
‫E agora este projeto é derivado da classe tanque.
‫Então, vemos que todas essas propriedades que definimos com nossos componentes, como a malha e o tamanho da
‫cápsula, ainda estão lá.
‫Só agora vemos uma câmera.
‫Na verdade, temos um braço de mola e uma câmera.
‫E se selecionarmos o braço da mola agora, podemos ver aquela linha vermelha.
‫Então isso é ótimo.
‫Então eu poderia pegar este componente do braço da mola e alterar o comprimento do braço alvo.
‫Se eu quiser, posso configurá-lo para algo como 600 e posso até alterar sua rotação para que ela incline
‫a câmera para o tanque selecionando o modo de rotação e girando-a um pouco.
‫Como Então agora eu gostaria de salientar que você não deve alterar a localização da câmera.
‫Pode ser tentador selecionar a câmera e movê-la pelo mundo para posicioná-la e
‫incliná-la corretamente.
‫Mas esta não é a maneira correta de fazê-lo.
‫A maneira correta é definir a rotação e o comprimento do braço alvo do componente do braço da mola.
‫E a razão é que você quer essa câmera conectada ao final do braço da mola.
‫O braço da mola tem muitos recursos integrados diferentes, como encolher quando a câmera
‫bate em uma parede para evitar obstáculos, bloqueando a visão da lagoa e outras coisas assim.
‫Então você vai querer que a câmera seja anexada ao final do braço da mola e, em seguida, ajuste
‫o braço da mola em vez de ajustar a posição e a rotação da câmera.
‫Então, neste vídeo, criamos a classe tanque e derivamos da base pond para herdar essas qualidades
‫da classe base pond.
‫Adicionamos um componente de braço de mola e um componente de câmera e os expusemos ao editor usando apenas visível e
‫os colocamos em sua própria categoria.
‫Então estamos nos aproximando do produto final passo a passo, e vamos continuar desenvolvendo esse tanque
‫na próxima palestra.
‫Vejo você em breve.