‫Olá e bem-vindo de volta.
‫Agora, já criamos a capacidade de lidar com a morte para o tanque e a torre, e vimos que isso
‫envolvia algumas etapas extras com nosso tanque, pois acessamos o controlador do jogador para desabilitar a entrada e desabilitar a
‫exibição do cursor do mouse.
‫Agora gostaríamos de ter nossa própria classe de controlador de player personalizada para que possamos adicionar funcionalidades a ela que
‫lidarão com isso para nós.
‫E então gostaríamos de criar um blueprint baseado nesta classe para que possamos acessar algumas das
‫variáveis expostas no controlador do player, como qual cursor do mouse mostrar quando começarmos a mostrar o cursor
‫do mouse.
‫Então, vamos criar uma classe de controlador de jogador e adicionar a funcionalidade de entrada de ativação e desativação.
‫E então vamos criar um blueprint e definir o tipo de cursor do mouse em blueprints.
‫Agora, criar essa classe é algo que você sabe fazer.
‫Então você vai criar uma classe player controller para seu desafio, criar uma nova classe C++ e
‫escolher player controller como a classe pai.
‫Chame isso de tanques de sintonia, controlador de jogador ou algo apropriado assim.
‫E quando terminar, crie um blueprint com base nessa classe.
‫Agora, uma vez que você tenha o blueprint, você pode atribuí-lo como o controlador de jogador padrão no blueprint do
‫modo de jogo.
‫Faça isso no modo de jogo, blueprint em si.
‫Pause o vídeo e crie a classe do controlador do player para o tanque agora.
‫OK.
‫Então estou de volta ao editor.
‫Vou clicar com o botão direito do mouse em nova classe C++ e rolar para baixo e verei que o controlador do player é
‫uma opção aqui.
‫Então, eu vou selecionar o controle do jogador e nomear meus novos tanques de sintonia do controle do jogador.
‫Jogador, controlador e clique em criar classe.
‫E aqui eu tenho minha nova classe de controle de jogador.
‫Agora, o próximo passo é criar um blueprint com base nisso.
‫Então, estou de volta ao editor e não disse para você fazer isso, mas vou criar uma nova pasta
‫aqui na minha pasta de blueprints chamada Player Controller.
‫E se você quiser a mesma estrutura de pastas, você pode criar essa pasta agora, se ainda não tiver
‫feito isso, e depois mover o blueprint do controlador do player para ela.
‫Se você não sabe como mover um blueprint de uma pasta para outra, é bem simples.
‫Você vai para a pasta que contém o blueprint, clica e arrasta para a pasta correta e clica em
‫mover aqui.
‫Agora, não quero mover meu projétil para esta pasta, então vou clicar aqui no navegador de
‫conteúdo para cancelar essa ação.
‫Então agora eu tenho uma pasta do controlador do jogador.
‫Vou clicar com o botão direito do mouse e clicar em Blueprint Class e nessa busca vou procurar por Toon
‫Tanks, Player Controller e selecionar essa classe e clicar em Select.
‫Agora eu posso chamar esse sinal sonoro de controlador de jogador de tanques de toon.
‫Então agora eu tenho um controlador de jogador.
‫Agora eu preciso definir isso como o controlador de jogador padrão.
‫Então eu vou para a pasta do modo de jogo, abrir beep, sintonizar tanques, modo de jogo e abrir o blueprint completo.
‫Editor E aqui eu vejo a classe do controlador do jogador.
‫Vou clicar no menu suspenso e selecionar tanques de ajuste de BP, controlador de jogador e compilar, salvar
‫e fechar isso.
‫Então agora temos a classe de controle de jogador personalizado.
‫Estamos prontos para adicionar algumas funcionalidades a isso.
‫Então, o que eu gostaria é de uma função aqui que possa definir o estado ativado do player, se
‫o player está ativado ou não para adicionar entrada que moverá o tanque.
‫Agora eu pretendo chamar isso do modo de jogo quando o ator morrer.
‫Então, vou fazer uma seção pública aqui e a função será anulada.
‫E eu vou simplesmente chamar esse estado de habilitado para o player definido, que pode receber um booleano chamado B player
‫habilitado.
‫Dessa forma, se chamarmos essa função, podemos passar true se quisermos que o player seja ativado
‫ou false se quisermos que ele seja desativado.
‫Então vamos implementar esta função em tanques de sintonia, jogador, controlador.
‫CP Então aqui está minha função e claro que preciso do nome da classe aqui.
‫Então vai ser um tanque de sintonia, jogador, controlador, e há o operador de resolução do osciloscópio.
‫Agora, esta função vai ser bastante simples.
‫Ele vai verificar o valor do jogador B habilitado, e podemos fazer isso com um simples teste de if.
‫Então vou dizer se o jogador B ativou e gostaria de acessar o peão e habilitar ou desabilitar a entrada
‫e a forma de acessar o peão que esse jogador controlador está possuindo é usar a função, obter
‫peão.
‫Isso retorna e um peão e a classe de peões tem a função.
‫Ativar entrada e ativar entrada, como vimos, requer um controlador de jogador para que possamos passar isso.
‫Agora estou recebendo os rabiscos vermelhos porque precisamos incluir esse tipo de classe de peão e podemos ver
‫facilmente a inclusão do peão indo para a documentação do mecanismo irreal de um peão ou podemos simplesmente
‫ir para nossa classe de peão base que herda de um peão.
‫E como ele herda de um peão, vimos que ele precisa incluir o cabeçalho do peão para que eu
‫possa copiar e incluir a estrutura do jogo, um peão barra.
‫Então, de volta ao controlador de jogador de tanques de sintonia.
‫Eu posso colar essa inclusão aqui no topo para me livrar desses rabiscos vermelhos.
‫Portanto, isso cuida do caso em que o jogador B habilitado é verdadeiro, mas também precisamos de um caso LS aqui.
‫No caso LS vamos chamar get peão e há uma função como habilitar entrada que é projetada para
‫desabilitar a entrada e é chamada, como você pode imaginar, desabilitar a entrada.
‫E isso também requer um controlador de jogador para o qual passaremos neste.
‫Agora o controlador do jogador tem que mostrar o cursor do mouse e vamos definir isso também.
‫E gostaríamos de configurá-lo com base em se o player deve ou não ser ativado.
‫Então, qualquer que seja o valor booleano de B player ativado, vamos definir B show mouse cursor para esse valor.
‫Então, vamos dizer que o cursor do mouse B sho é igual ao B player habilitado.
‫Agora ainda não mostramos o cursor do mouse.
‫Nós vamos chegar a essa parte.
‫Na verdade, gostaríamos de ver o cursor do mouse enquanto estamos jogando para sabermos para onde nosso tanque
‫está mirando.
‫Então, vamos chegar a isso em breve.
‫Mas, por enquanto, temos essa boa função no controlador do jogador e gostaríamos de chamar essa função do modo
‫de jogo agora para mostrar o que quero dizer.
‫Estou voltando ao modo de jogo e aqui está a função ator morreu e você verá que estamos desabilitando a entrada
‫e estamos configurando b show mouse cursor aqui.
‫Então, a razão pela qual eu gostaria de ter um.
‫Função no controlador do player para que possamos simplesmente chamar essa função passando um valor booleano.
‫Nesse caso, passaríamos false para que tivéssemos que a função de entrada desabilitada fosse chamada e B para que o cursor
‫do mouse fosse definido como false.
‫Então, podemos simplesmente chamar essa função aqui agora, em vez de chamar tank get player controller, que retorna
‫um player controller.
‫Eu gostaria de ter uma variável de ponteiro que nos permitisse acessar esse controlador de jogador.
‫Então aqui nos modos de jogo de tanques de sintonia, vou adicionar uma variável privada.
‫Vou declará-lo e será do tipo A, tanques de sintonia, player, controlador, isso é um
‫ponteiro.
‫E vou chamar essa música de Tank's Player Controller e posso definir isso aqui no modo de jogo de tanques
‫de sintonia e começar a jogar usando a estática do jogo.
‫Agora, se você está se perguntando se a estática do jogo tinha uma função de controle de jogador, você estava certo.
‫Esta é uma daquelas funções estáticas úteis que requer um objeto de contexto mundial e um índice
‫de jogador para que possamos copiar o include para a estática do jogo e chamá-la aqui em Begin Play.
‫Então eu vejo no topo aqui, eu já tenho estática de jogabilidade, é porque já estamos usando aqui e
‫começamos a jogar para chamar get player --.
‫Faremos a mesma coisa aqui para definir o ponteiro do controlador do player.
‫Agora, isso é algo que você deve saber como fazer.
‫Então, por que você não pausa o vídeo e faz um pequeno minidesafio aqui e apenas define o valor dos tanques
‫de sintonia, controlador do player.
‫OK.
‫Então, vamos dizer tune tanks, player, controller, e vamos defini-lo igual ao resultado de suas estáticas de
‫jogo, pegue o player controller e sabemos que o objeto de contexto do mundo pode ser isso e o índice do jogador
‫não é nove, mas zero .
‫E é claro que sabemos que isso retorna um controlador de jogador e não um controlador de jogador de tanques de sintonia.
‫Assim como fizemos com Tank aqui, vamos lançar.
‫Então, eu vou dizer cast para um controlador de jogador de tanques de sintonia e estamos lançando o resultado de obter o controlador de
‫jogador.
‫Então agora após Begin Play, teremos os tanques de sintonia, controle do jogador.
‫E agora podemos chegar aqui e, em vez de obter o controlador do jogador usando o controlador do
‫jogador diretamente do tanque, podemos verificar se nosso controlador de jogador de tanques de ajuste variável é válido e, em seguida,
‫podemos chamar essa função que criamos.
‫Vamos voltar e olhar para ele.
‫É chamado de estado de ativação do jogador definido e aqui no modo de jogo gostaríamos de desativar a entrada e parar de mostrar o
‫cursor, o que significa que vamos passar falso para isso.
‫Então, vamos dizer tune tanks, player, controller, set player enabled state e estamos passando false para isso e estamos usando tune
‫tanks, player controller, o que significa que precisamos incluir tune tanks, player
‫controller.
‫Então aqui no topo vamos incluir tanques de sintonia, controle de jogador.
‫E agora temos esse tipo definido de OC.
‫Vamos em frente e compilar isso.
‫E a última coisa que faremos antes de encerrarmos isso é entrar no projeto do controlador do player
‫e gostaria que você role para baixo até a seção de interface do mouse e verá que ele diz Default Mouse Cursor.
‫Agora podemos clicar no menu suspenso e há vários cursores diferentes para escolher.
‫E eu vou escolher Crosshairs.
‫Agora, ainda não estamos mostrando o cursor do mouse, mas assim que iniciarmos o jogo, vamos mostrar o cursor.
‫E quando o fazemos, gosto que seja uma mira em vez da seta branca padrão que sempre vemos quando olhamos para o
‫cursor do mouse.
‫Portanto, defina o cursor padrão do mouse para mira e poderemos ver essas miras assim que ativarmos
‫o cursor do mouse.
‫Então, em resumo, criamos uma classe de controlador de player personalizada e estamos usando isso para habilitar ou desabilitar a entrada
‫com uma função que colocamos nessa classe.
‫E também estamos usando essa função para mostrar o cursor do mouse ou ocultar o cursor do mouse com base no
‫booleano passado.
‫E no projeto que criamos, definimos o tipo de cursor do mouse e veremos muito em breve como é
‫o cursor do mouse em cruz quando começamos a mostrar o cursor do mouse quando o jogo começa.
‫Tão grande trabalho.
‫Agora temos este controlador de jogador e estamos prontos para continuar implementando a funcionalidade do jogo.
‫Então te vejo no próximo vídeo.