Transcrições
1. Introdução: Neste curso, aprenderemos
como desenvolver um jogo de tiro em primeira
pessoa multijogador usando plantas no Unreal
Engine Five, recriando um jogo semelhante ao
icônico jogo Counter Strike Este curso contém tudo o que você precisa saber para
começar a desenvolver jogos de
tiro em primeira pessoa
multijogador no Unreal Engine Incluindo como adicionar movimento FPS
multijogador. Como criar uma tela de
seleção de equipes. Como pegar e soltar armas. Como fazer um inventário de FPS. Como equipar uma
pistola e um rifle. Como atirar usando
diferentes tipos de armas. Como calcular e exibir a
quantidade correta de balas Como recarregar uma arma. Como adicionar saúde e armadura. Como causar dano
a outros jogadores. Como recompensar pontos de rodada
para a equipe vencedora. Como responder aos jogadores. Como atualizar os valores da interface do jogo
corretamente no modo multijogador. E, finalmente, como adicionar efeitos
visuais e
efeitos sonoros no modo multijogador. Também fornecerei o projeto
finalizado para que você possa inspecioná-lo como
desejar enquanto segue o curso No final deste
curso, você
poderá criar com confiança seu próprio jogo de
tiro em
primeira pessoa multijogador do zero no
hon real Espero que você se junte a mim
neste curso hoje. E lembre-se de que estou
sempre aqui para
apoiá-lo durante todo o curso
e espero vê-lo em breve.
2. 1.02 Baixando o Unreal Engine 5: Para baixar o Unreal Engine Five, primeiro
você precisa acessar Epic Games.com. E dentro daqui, há um botão azul
aqui no canto superior direito Você precisa clicar nele e ele fará o download do lançador da
Epic Games Você pode ver aqui,
ele está sendo instalado agora. No entanto, eu
já o instalei, então vá em frente e
instale-o quando terminar. E aqui eu abri
o lançador da Epic Games e
ele solicitará que você faça login Eu já tenho uma conta da
Epic Games, então vou entrar
com minha conta da Epic Games. Se você não tiver um, pode
se inscrever aqui. É gratuito ou você pode fazer login com todos
os outros métodos. No entanto, vou entrar
com minha conta da Epic Games. Depois de fazer
login no inicializador, você estará dentro desta página Vá em frente e clique em Honoral
Engine aqui à esquerda. Vá em frente e clique
na guia da biblioteca aqui e você verá as versões
do motor. Este é o Honoral Engine, e se você não vê nada, você pode ter uma caixa cinza aqui se esta for a primeira
vez que você estiver dentro daqui Mas se você não receber uma caixa cinza, você pode clicar
neste botão
de adição aqui e você receberá uma. Em seguida, você pode selecionar
o número e selecionar qual versão do Unreal
Engine deseja instalar Agora você pode ver que eu
já instalei Unreal Engine 5.2. No entanto, se você tiver uma versão posterior, se estiver assistindo isso
no futuro e tiver 5.3 ou 5.21 e assim por diante, basta instalá-la Você pode acompanhar e
nada mudou. Mas para este curso,
vou
instalar o mais novo motor
Unreal five E então estamos prontos
para a próxima lição.
3. 1.03 Criando um novo projeto: Vamos lançar o
Unreal Engine Five. Quando o Unreal Engine
five for lançado, essa janela aparecerá para que você possa ver seus projetos
recentes E se você não tiver
nenhum projeto recente, este estará vazio. Mas aqui você pode ver o meu. E o que queremos fazer é clicar
na guia Jogos porque
estamos criando jogos. Mas você também pode ver que o
Real Engine Five pode ser usado para fazer arquitetura de filmes e
vídeos, automotiva e
de simulação. Muito legal. Mas para nós,
vamos criar jogos. Então, vou entrar
na guia Jogos. Na guia Jogos,
você pode ver que pode selecionar entre
diferentes modelos. Por exemplo, se você quiser criar um jogo de tiro em primeira pessoa
como estamos fazendo, você pode selecionar o modelo em
primeira pessoa Se você quiser fazer
um jogo em terceira pessoa, você pode selecionar
este e assim por diante. Assim, você pode ver que pode selecionar entre diferentes modelos
interessantes. No entanto, todos esses
modelos podem ser feitos por você. Na verdade, você pode criar
um projeto em branco e criar
tudo do zero e criar todos
esses modelos. Se você sabe o que está
fazendo nos meus cursos, gostaria de começar com um projeto
em branco sem nada nele. Porque eu quero te ensinar como criar um
jogo do nada. Não gosto de começar com
esses modelos aqui. E, novamente, você pode
criar tudo isso a partir de um projeto em branco se
souber o que está fazendo. Então, vamos começar com
um projeto em branco porque eu quero
te ensinar todas as coisas. A partir de um projeto em branco, selecionaremos o Blueprint como nossa linguagem de programação E a plataforma alvo
é a qualidade do desktop. A predefinição está configurada para o máximo. Quanto ao conteúdo dos dados,
se você tiver isso, vou removê-lo para que não
tenhamos nada. Novamente, quero
começar do nada e depois selecionar onde você deseja salvar o projeto. Então, vou clicar
aqui e selecionar uma pasta. E então vá em frente e
dê ao seu projeto o nome deste jogo. Vou chamá-lo Counterstrike porque é
o tipo de jogo que estamos fazendo Não estamos copiando 100%. Também estou fazendo
algumas coisas personalizadas. Mas será muito mais parecido contra-ataque para este
jogo de tiro multijogador Vá em frente, dê um nome e vamos
clicar em Criar projeto. Depois que o projeto
foi criado, aqui estamos dentro
do Unreal Engine Vamos continuar na
próxima lição e dar uma olhada na visão geral
do Unreal Engine
4. Visão geral do Unreal Engine 5: Antes de
começarmos nosso projeto, vamos dar uma rápida visão geral de como o Unreal Engine é construído Aqui no meio,
temos a janela de visualização, e é aqui que você
vê seu jogo visualmente Na janela de exibição, você pode segurar
o botão direito do mouse. Ao segurar o botão direito
do mouse na janela de exibição, você pode ver que pode olhar
ao redor dentro da janela de exibição Agora, quando você segura o botão direito do mouse e clica em W, você avança no mundo. Quando você clica em,
você volta Quando você clica em D,
você se move para a direita. E quando você clica em A,
você se move para a esquerda. Lembre-se de segurar o botão direito
da boca ao fazer isso. Então, segure o botão direito mouse
e o
botão esquerdo do mouse ao mesmo tempo. Então você pode ver que você
pode realmente se mover com o
mouse sozinho, assim. Você também pode segurar o botão
esquerdo do mouse sozinho e movê-lo
para frente e para trás E você pode ver que também pode
ficar assim. Existem diferentes
técnicas de movimentação aqui dentro. O próximo é segurar
o botão direito do mouse
e, em seguida, você pode
clicar em para mover para baixo ou clicar em para subir. Obviamente, a última
coisa que temos aqui
é que , se você rolar com o botão do
mouse, também poderá
aumentar e diminuir o zoom. Essas são todas as
técnicas de movimento, e pronto. O principal que eu uso é segurar o botão direito do mouse
e clicar em S DNA. Eu simplesmente me movo
pelo mundo assim. Normalmente não uso
os outros métodos, esse é o mais
usado para mim. Então, você pode tentar segurar o
botão direito do mouse,
clicar em , tentar navegar, ter uma ideia
de
como é se mover
dentro deste mundo. aqui, temos botões
diferentes dentro do quadro de exibição Clicando aqui, o
mais importante
é esse chamado de visualização
do jogo E esse esconde
ícones no jogo. E isso é útil se você tiver tantos
ícones no jogo. Lembre-se de quando você cria um jogo. Então, se você clicar em um dos
itens que você tem dentro do mundo e
clicar no teclado, na verdade o levará até esse item. Você pode ver aqui se eu clicar em, no meu teclado, esse é o
atalho para a visualização do jogo Se eu clicar em, eu escondo os ícones. E isso é muito legal porque
eu quero ver meu jogo, o que ele realmente parece
sem nenhum ícone. E você pode clicar novamente
para mostrá-los aqui. O próximo que temos
é o modo imersivo, e isso tornará sua
janela de visualização em tela cheia Clicar em 11, esse é
o atalho para isso. Isso torna o jogo
em tela cheia. E então eu posso clicar
em para ocultar os ícones. E posso tentar ver
qual é a aparência do meu nível sem me incomodar com
todos esses ícones Clique novamente para
mostrá-los clicando em 11 para
minimizar o painel de exibição Novamente, vamos
passar para essas ferramentas
muito importantes. A primeira é
chamada de ferramenta Selecionar. Ao clicar aqui, você pode selecionar itens
diferentes no mundo. Eu não uso muito isso, eu realmente uso esses três. Eu nunca seleciono isso, na verdade. Se agora que estou
pensando nisso, eu nunca seleciono isso. No entanto, você pode
encontrar um uso para isso. Mas clicando no
Q no teclado, você pode ver que eles têm atalhos se você segurar o mouse sobre eles. Ao clicar em Q, você
seleciona a ferramenta e clicar em W
no teclado
selecionará a ferramenta de movimentação. Ao selecionar a
ferramenta de movimentação, você pode ver se eu seleciono um dos ícones, por exemplo, recebo essas setas Então você pode ver
que temos uma seta verde, temos uma seta azul e
uma seta vermelha também. Com a ferramenta de movimentação,
podemos mover itens. E você pode clicar em
uma das setas. E você pode movê-lo
aqui neste eixo. Nesse eixo também. E nesse eixo também. Aqui à direita, você pode ver no painel de
detalhes que ele realmente mostra detalhes
sobre o item selecionado. Se você selecionar um deles, poderá ver que os
detalhes sobre esse item são alterados. Por exemplo, aqui, se
eu selecionar esse você também poderá ver como
ele é chamado no Outliner O Outliner basicamente mostra todos os itens que você
tem dentro deste mundo, dentro desse nível
aqui que temos Isso é o que está dentro dela. Todas essas coisas da
paisagem que você pode ver aqui são apenas
este mundo, você pode ver. Consiste em blocos. Ao selecioná-lo, você pode ver que ele também está
selecionado aqui no Outliner Quando eu seleciono
este na parte de visualização, ele também é selecionado
aqui no Outliner Todas essas coisas que
você pode ver aqui são na verdade, algo que
está dentro do seu mundo. Quando eu seleciono isso, você pode
ver que é chamado de clarabóia. É a luz do céu. E você pode ver detalhes
sobre a clarabóia, por exemplo, o quão intensa ela é Por exemplo, você
pode aumentá-lo. Digamos que eu queira escrever três. E você pode ver que meu nível é
mais intenso na iluminação. E eu posso clicar aqui e clicar novamente ou na
direita novamente, e então tudo volta ao normal. Você pode mudar as coisas aqui. O que eu queria
mostrar aqui com a ferramenta de movimentação é que
quando você a move, você pode ver que ela também está mudando a localização
no painel de detalhes. Se eu movê-lo, você pode ver que está mudando os valores no valor z aqui quando eu o movo dessa maneira e também quando o
movo dessa maneira. Mas para os pontos de articulação, você pode ver que o vermelho
é na verdade o eixo X. Você pode ver isso segurando
o mouse sobre ele. Diz X. O verde
é o eixo Y e o azul é o eixo Z. Temos o eixo X, o eixo Y. E o eixo z. Você pode alterar a localização
deles fazendo isso aqui. Ou você pode alterar a
localização escrevendo um número. Por exemplo, no Z, eu
posso escrever 200 clicando Inter e ele se moverá até
o valor de 200 no Z. Mas você pode fazer isso, em vez
de escrever um número, você também pode clicar, clicar no número, segurar
o mouse e Então você pode ver que também pode alterar o local
dessa forma. Se você quiser movê-lo em
todas as direções ao mesmo tempo, clique nessa bola
branca no meio. E você pode movê-lo em todas as
direções ao mesmo tempo. Se você quiser movê-lo em duas direções
diferentes ao mesmo tempo, clique na
caixa no meio. E você pode movê-lo nas duas
direções diferentes que você selecionou. Em seguida, se você clicar em E no
teclado ou clicar aqui, simplesmente obterá a ferramenta de
rotação, exatamente como está escrito. Você pode clicar aqui
e girar o item. No momento, é um ícone, então não
podemos realmente ver
o que está acontecendo. Mas se eu clicar aqui, isso adicionará elementos. Clicando aqui,
vou para Formas, e vou
adicionar um cubo simples Adicionando um cubo simples, agora
posso clicar no cubo, clicar em E no teclado
ou selecionar a ferramenta de rotação e posso simplesmente girar esse
item em torno Novamente, você pode ver os
valores mudando aqui para a rotação, e
você pode ver isso aqui. Você também pode
girá-lo clicando aqui, clicando botão
esquerdo e arrastando Isso também o girará. Então temos a ferramenta de
escala aqui
e, como diz, ela
dimensiona o item. Você pode escalá-lo em todas
essas três direções. Ou se você quiser escalar uniformemente em todas as
direções ao mesmo tempo, você pode clicar nessa caixa
branca no meio E ele será dimensionado em
todas as direções, tudo ao mesmo tempo
quando você o escala. Você também pode ver
os valores aqui, o quanto os escalamos Se você quiser redefini-la, você pode realmente escrever 111
que redefinirá a escala. No entanto, você também pode
clicar nessa pequena seta aqui. Isso redefinirá os valores para padrão. Ao
clicar nessa pequena seta, ele voltará ao padrão. Aqui à direita, você tem diferentes ferramentas de encaixe Você pode ver que quando eu clico em W no meu teclado para selecionar
a ferramenta de movimentação, eu posso mover este item. Mas você pode ver que
não está se movendo suavemente. Está se encaixando em uma grade. Posso desativar isso
clicando no ícone aqui em cima. E agora eu posso
movê-lo, e você pode ver que agora está se movendo suavemente. Se eu clicar nele novamente,
eu o habilitarei. Você também pode aumentar e diminuir a quantidade com
que está tirando fotos Se eu clicar no
número aqui em cima, e eu puder selecionar, por exemplo, 100, então ele se encaixará muito mais Se eu arrastá-lo agora, você
verá que ele se encaixa muito mais. Isso é útil quando
você está, por exemplo, fazendo design de níveis
e deseja que os itens colocados como em um padrão
lado a lado. O que você pode fazer,
por exemplo, aqui, é segurar a tecla Alt
no teclado. Você pode clicar e arrastar
enquanto segura a tecla Alt. Isso copiará o item
se eu fizer isso novamente. Eu clico e clico
e arrasto novamente. Eu clico, clico e arrasto. Você pode ver que eu posso
copiar os itens. E agora eles estão colocados à mesma distância
entre si. É assim que a
ferramenta de encaixe é útil. Vou apenas
redefini-lo para dez, normalmente. Você pode fazer isso com a rotação e também com
o dimensionamento Você pode ver se eu
clicar para selecionar
a ferramenta de rotação e eu
clicar em uma delas,
eu giro, Você pode ver que ela gira a cada dez graus.
Novamente, está aqui em cima. Posso aumentar ou diminuir a quantidade de fotos com
que ele está tirando fotos, ou posso simplesmente clicar
no ícone e
girá-lo agora,
livremente, sem nenhum Eu vou ligá-lo novamente. E você pode fazer a mesma
coisa com o dimensionamento. Agora, aqui, você pode aumentar e diminuir a velocidade da câmera. Você pode ver
agora que estou me movendo dentro do meu mundo assim. Eu também posso me mover muito mais devagar. Imagine que se você tiver que
focar pequenos detalhes aqui, é muito difícil mover a
câmera para que ela pareça aqui. O que você pode fazer é
clicar aqui, aumentar a velocidade da câmera. Agora você pode se mover muito
mais devagar e se concentrar em
pequenos detalhes dentro
do seu nível No entanto, se você quiser se mudar para
o outro
lado do mundo, isso levará uma eternidade. Você pode clicar aqui,
aumentar a velocidade da câmera e agora você pode ir para o outro lado
do mundo rapidamente. Novamente, se você quiser
ir para um elemento específico, sempre
poderá clicar nele aqui. Por exemplo, se eu quiser me mover,
digamos, para minha
luz direcional, eu posso clicar nela E eu posso clicar no meu teclado. E será aqui também. Agora posso diminuir a velocidade da
minha câmera novamente para uma por padrão. E eu posso me mover normalmente
aqui, assim como antes. Tudo bem, então isso era tudo dentro
do Viewpoard Novamente, o esboço
mostra basicamente o que está dentro
do seu nível, o que você pode ver visualmente
aqui dentro do Mas, por enquanto, vou
deletar esses cubos. Então, vou clicar aqui,
clicar em excluir no meu teclado. E também selecione todos eles. E clique em Excluir no meu teclado. Agora, aqui na barra de ferramentas, podemos salvar o
nível atual em que estamos. Também podemos clicar aqui e usar as diferentes
ferramentas que temos. Por exemplo, se quisermos
criar uma paisagem, podemos usar a ferramenta paisagem
ou folhagem, por exemplo. Se você quiser pintar grama
e árvores em seu nível, você também pode usar isso. No entanto, não
vamos usar isso dentro do nosso jogo
porque vamos
criar um nível básico e também
vamos nos concentrar muito nas
plantas e em como
podemos programar nosso jogo de tiro em primeira
pessoa multijogador Então, se você quiser se
concentrar na criação de paisagens
e folhagens, confira
Pixel Helmet.com meu site. Aqui você
pode encontrar muitos cursos que também
explicarão isso seguir, um botão muito, muito importante é que você pode adicionar
coisas diferentes ao seu nível. Por exemplo, criamos
o Shape, o cubo aqui. Você também pode criar iluminação. A iluminação que
você pode ver aqui, também
criaremos
do zero. E você pode criar as diferentes
luzes aqui dentro. Você também pode criar efeitos
visuais e assim por diante. Assim, você pode
colocar elementos
diferentes em seu nível
usando esse botão. Em seguida, temos o plano
de nível. E falaremos muito
sobre projetos mais tarde, então não vamos nos concentrar
nisso por enquanto E então temos a cinemática, e vamos pular a
cinemática por enquanto Então temos o botão play, e se você clicar
nele, você joga o jogo. E então você pode ver que agora estou jogando meu jogo
dentro do nível. Não está acontecendo muita coisa porque na verdade
não temos muita coisa dentro daqui. Então, vou clicar em
Escape no meu teclado para sair do modo de jogo
clicando nesses três botões. Você também pode selecionar como
deseja jogar seu jogo. No momento, estamos jogando
dentro do Viewpoard. Clique também aqui e
abra uma nova janela. E ele se abriu na
minha segunda tela, você pode ver agora que estou jogando
na minha segunda janela. Eu posso clicar em Escape para sair. Novamente, você pode selecionar como
deseja jogar seu jogo. Vou apenas selecionar o painel
de exibição selecionado. Aqui embaixo, temos configurações
multijogador. Trabalharemos
com isso mais tarde. Por fim, se você quiser
empacotar seu jogo e lançá-lo no Steam ou
lançá-lo para seus amigos, clique aqui, no
Windows, por exemplo, e empacote o jogo para lançá-lo Agora, aqui em cima, temos
os diferentes botões. Temos o botão Arquivo, onde você pode criar um novo nível, criar um novo
projeto e assim por diante. Muito básico no software antigo
que vimos. E então, na edição,
o mais
importante são as configurações do projeto, e vamos usá-las muito. Você pode ver que ele tem
muitos botões e
pode parecer um pouco confuso se você for novo no motor geral No entanto, vamos nos concentrar
nas coisas mais importantes
que precisamos aprender. E você pode aprender tudo
isso mais tarde, mas por enquanto
vamos nos concentrar
nas coisas mais importantes.
Vamos pular isso por enquanto E vamos abordar muito
isso no curso. Então, no Windows,
muito, muito legal, você pode abrir janelas diferentes dentro do nosso motor central. Por exemplo, essa janela de visualização que você pode ver
aqui no meio, você pode ir para Viewports, e então você pode
clicar em Viewports two, e isso abrirá
uma Agora, isso é muito legal se
você tiver duas telas. Normalmente faço isso quando tenho uma câmera e olho para
o meu jogo assim, coloco na minha segunda tela
e posso trabalhar aqui
também enquanto tenho essa visão
do meu jogo. Então, muito legal. Você pode abrir
várias janelas aqui. E também vale para
o painel de detalhes se você quiser abrir um
segundo painel de detalhes. E você pode ver aqui que se eu
selecionar algo no meu mundo, você pode ver que são
os mesmos detalhes que
são exibidos aqui. É muito, muito legal que você possa abrir várias janelas aqui. Em ferramentas, não temos
muita coisa, então vamos pular isso por enquanto Em Build, o único botão
importante aqui é que você pode construir o nível
e criar a iluminação. E ele criará as sombras
corretas e assim por diante, mas trabalharemos com isso mais tarde, quando fizermos a iluminação, e no final
teremos a ajuda e você também
poderá ver a documentação
aqui OK. A última coisa que
quero examinar antes de terminarmos aqui
é a gaveta de conteúdo E clique na
gaveta de conteúdo aqui embaixo. É aqui que todos os arquivos
estarão para motores reais, para o jogo que você está criando. Por exemplo, se você tiver
texturas, se tiver música, se tiver três modelos D, todos esses arquivos
do seu jogo, eles estarão aqui
na gaveta de conteúdo O que eu gosto de fazer,
você pode ver que se eu clicar no painel de exibição,
ele desaparecerá Se eu clicar aqui e clicar novamente, digamos que estou trabalhando
no Viewpoard, ele desaparecerá Eu acho isso um pouco chato. O que eu geralmente faço é clicar aqui e clicar em Duck in Layout E vai ficar aqui. E agora é chamado de
navegador de conteúdo. Está ficando aqui na
minha tela o tempo todo. Quando eu trabalho no meu jogo aqui no mirante,
ele nunca desaparece E também é muito melhor para
você ver neste curso. Dentro do navegador de conteúdo, posso criar pastas. Se você clicar com o botão direito aqui, poderá criar uma nova pasta. Por exemplo, você
pode dar um nome, por exemplo, olá ou
algo parecido. Você também pode clicar com
o botão direito na pasta e definir
a cor. Você pode definir a
cor da pasta. E isso é muito bom
se você quiser se manter organizado aqui
no navegador de conteúdo. Porque você pode imaginar que,
se você tem um jogo grande, tem muitos
arquivos aqui
no navegador de conteúdo Se quiser
criar algo novo, clique com o botão direito do mouse aqui. Você pode ver com o botão direito do mouse que você pode adicionar
elementos diferentes ao seu jogo. O mais importante é que vamos trabalhar
com plantas Então esse é muito grande. E também podemos criar um
novo nível, um novo material. Se tivermos algo
a ver com animações, também
trabalharemos
com isso Você pode criar
isso, por exemplo. Você pode clicar em um deles e ver que
tem opções diferentes. No momento, não
temos realmente um esqueleto, um jogador. Então, vou fechá-lo
e criar algo novo. Por exemplo, um material. E você pode ver aqui. Se você quiser tornar os
ícones menores ou maiores, clique nas
configurações, vá para o miniatura e
selecione um tamanho menor Agora, o que você também pode fazer
é manter
o controle do teclado e
usar a roda do mouse. Portanto, se você ampliar com a roda do mouse enquanto
segura
o controle, também poderá aumentar e
diminuir os ícones. Agora vou clicar
neste e clicar em Excluir no meu teclado. E vá em frente e
exclua-o por enquanto. Se você clicar com o botão direito novamente, poderá ver todos
esses elementos que você pode criar e adicionar ao seu jogo. Novamente, parece muito, muito confuso se você
nunca o usou antes, usado em um motor real e
se isso é novo para você Mas, novamente, não tente se
concentrar em todas essas coisas. Vamos nos concentrar nas coisas
mais importantes e criá-las
durante este curso. E eu prometo que você
aprenderá tudo isso lentamente. Portanto, não se concentre em
tudo por enquanto. Agora, você também pode usar esse botão Adicionar,
mas eu nunca uso isso. Na verdade, eu simplesmente entro
na pasta em que quero adicionar algo e escrevo, clique aqui. Mas a mesma coisa, você também pode clicar aqui se quiser. Ok, então foi isso para
a visão geral do Unreal Engine. Se você quiser uma
visão geral mais aprofundada do Unreal Engine, visite meus outros cursos Também tenho um guia completo
para iniciantes. Então, com isso dito, vamos seguir em frente e
ir para a próxima lição.
5. Introdução ao jogo 2.01: Olá Ron. Esse
sou eu do futuro. E este é o
projeto finalizado deste curso. E eu vou mostrar
a vocês o que vamos fazer
dentro deste curso. Às vezes, é muito mais fácil ver o produto final
antes de continuar. O que vamos fazer aqui é criar um jogo FPS do zero E, literalmente, do zero, começamos com um projeto em branco. E fazemos
de tudo, desde criar o mapa, a iluminação,
importar as armas e fazer o
equipamento de armas e assim por diante E se eu clicar em Jogar aqui, você poderá ver o jogo. Portanto, temos um pouco de
som ambiente em segundo plano. Alguns pássaros, você pode
saquear armas aqui. Você também pode saquear isso. Você o tem nas
costas, como você pode ver aqui na minha sombra. Mas você também pode ver isso aqui se eu simplesmente aparecer como outro jogador Você pode ver isso aqui
na parte de trás deste player. E eu também posso trocar de arma. Eu posso atirar com a arma. Também existem efeitos
sonoros diferentes para cada arma. Você também pode ver que temos
alguns efeitos no solo. Temos balas calculando. Podemos recarregar a arma. Também podemos bater em outros
jogadores. Sim, temos saúde e armadura e
também temos pontos redondos Temos muita coisa acontecendo. Podemos soltar as armas. As armas têm peso. E também temos Ragdoll
morrendo e respondendo. E você também recebe uma
notificação quando ganha a rodada e perde
a rodada e assim por diante. Muitas coisas estão acontecendo
dentro deste jogo aqui, mas vamos
passar por isso juntos. E confie em mim, será fácil se você seguir
o curso aqui. Vou te ensinar
tudo o que você precisa saber para criar um jogo FPS A vantagem dos
planos é que esse curso Se você o seguir completamente
e entender, esse curso ensinará você
não apenas a criar jogos de FPS,
mas também outros jogos mas também outros Porque quando você
cria outros jogos, na verdade está usando
as mesmas ferramentas. Plantas são apenas plantas. E você simplesmente tem
essas ferramentas em uma caixa de ferramentas e cria coisas
diferentes com elas. Nesse caso, vamos
criar um jogo FPS. Espero que você se divirta comigo. Vamos continuar, e não perca tempo, e
nos vemos na próxima.
6. 2.02 Criando um novo mapa: Para criar um novo
mapa. Vamos
primeiro criar uma
nova pasta aqui. Vou clicar com o botão direito
na pasta de conteúdo. Vou clicar
em Nova Pasta, e vamos chamá-la de Mapas. Então, dentro daqui,
vamos clicar com o botão direito do mouse aqui. E vamos clicar
em Nível para este nível. Normalmente, para mapas, eu os chamo de
mapa como prefixo,
porque mais tarde
podemos pesquisar elementos aqui e será
mais fácil para nós mais tarde Então, eu geralmente dou prefixos aos
meus arquivos. Eu chamo isso de um mapa e
vamos chamá-lo de principal. Este é o nosso mapa principal. Agora podemos
clicar duas vezes neste mapa. E agora ele nos pergunta se
também queremos salvar
esse nível aqui. E eu vou simplesmente
remover isso. Eu só quero salvar meu novo mapa e clicar
em Selecionado com segurança. E agora estou dentro
do meu novo mapa. E você pode ver que está muito
escuro aqui dentro, e no contorno
não há nada E está escuro porque não
há iluminação. Ainda não há ativos
em nosso nível e precisamos adicioná-los
em nossas próximas aulas.
7. 2.03 Importando ambiente Assets: Para os ativos ambientais, usaremos um pacote
do Marketplace. Se você abrir o
Epic Games Launcher
e, dentro dele, clicar
na guia Marketplace Quando estiver dentro
do Marketplace O Marketplace tem muitos itens
interessantes que você
pode usar no seu jogo. Você também pode ver que
eles são gratuitos durante o mês. Vale a pena dar uma olhada,
mas, por enquanto, nos produtos, vamos pesquisar a grade. Se você simplesmente escrever Grid
aqui e pressionar Enter, e depois aqui no
preço máximo, você clica em Grátis. E então você vê esse chamado Super Grid Start up Pack. Isso é o que
vamos usar. Então, se você clicar
nele, ele
dirá “baixe aqui”, se você
ainda não o baixou. E ao
baixar esse ativo, você pode criar um projeto. Você pode clicar nesse botão
chamado Criar projeto. E então você precisa selecionar
onde deseja
salvá-lo e clicar em Criar. Você também pode selecionar versão para a
qual
deseja criá-lo. No momento, está
definido para 5.1. Isso é. Ok, você não precisa de uma versão
5.1 para usar isso, mas ela apenas criará a versão mais recente
do motor Honual Você não
precisa baixá-lo para usá-lo, então está tudo bem. Eu já o criei. Então, se eu voltar para minha biblioteca, é
aqui que, como se você a criasse, ela
aparecerá aqui. Este é o pacote
Stata super grandioso ou o Unreal Engine 5.1. Vou clicar duas vezes
nele para abri-lo. Novamente, você não precisa do Unreal
Engine 5.1 para Na verdade, você pode abri-lo com 5.2 ou qualquer
versão que estiver usando E aqui está, ela se
abre. Você tem que esperar. Se for a primeira
vez que você o abre,
ele deve preparar os shaders Pode levar muito tempo quando você o abre
pela primeira vez, às vezes meia hora,
às vezes uma hora. Mas quando estiver pronto, agora
você pode usar o SS aqui. Para usar ativos
de um projeto para outro, você precisa migrar arquivos A maneira de fazer isso
é escrever, clicar nessa pasta Super Grid
e, em seguida, clicar em Migrar e clicar em OK E então você tem
que selecionar onde você deseja salvar esse arquivo? E eu quero salvá-lo
dentro do meu outro projeto. Aqui eu fiz isso nesta pasta de
atiradores multiplicadores e no E então você precisa selecionar
a pasta de conteúdo do seu projeto
Unreal Engine Lembre-se de que você precisa
selecionar a pasta de conteúdo Você não pode
salvá-la em outras pastas, selecionar a pasta de conteúdo e também não pode selecionar outra pasta dentro
da pasta de conteúdo. Ao migrar coisas de
um projeto para outro, você precisa selecionar a pasta de conteúdo e clicar em Selecionar pasta E então ele migrará todos
os arquivos que estão aqui e agora está concluído Para que eu possa fechar essa
superrede. E se eu abrir meu projeto, você pode ver que agora eu tenho essa pasta
Supergrid e
posso usar os ativos dentro
daqui agora no meu jogo Agora, antes de terminarmos, vou abrir o lançador da
Epic Games novamente, porque precisamos de outra coisa. Antes de continuarmos,
vou abrir o mercado. E para a iluminação,
precisamos de um céu aqui. Se eu pesquisar por Sky
novamente, clico em grátis. Dentro daqui, vou
usar esse chamado Good Sky. Se você clicar nele novamente, você pode clicar em Baixar se ainda não o baixou, e então você pode clicar
em Adicionar ao projeto, e então você tem que
encontrar seu projeto. Você pode ver aqui, se eu voltar, ele está disponível apenas
para 5.1. Atualmente, estou usando o 5.2. O que você precisa fazer é
clicar em Adicionar ao projeto
e, em seguida, clicar em
Mostrar todos os projetos E então eu posso clicar no meu projeto
Counter Strike. E então eu tenho que selecionar
a versão ou o Pac. Vou clicar
aqui e
selecionar a versão mais recente com a
qual ela é compatível. Está tudo bem,
não vai incomodar. Vai funcionar muito bem. Vou clicar
em Adicionar ao projeto e ele o adicionará
ao meu projeto aqui. Então, agora, se eu voltar
ao meu projeto, você pode ver que o bom
céu foi adicionado ao meu projeto e eu também
posso usá-lo. Então, agora que importamos
os ativos do ambiente, vamos prosseguir
na próxima lição e projetar o ambiente.
8. 2.04 Projetando o ambiente: Para projetar
o ambiente. Agora você pode
ver que o nível está escuro e é impossível
fazer qualquer coisa se eu
for até a supergrade e
começar um pacote e depois vou para Source e você pode ver que
temos a pasta de malhas, por exemplo, se eu arrastar
essa caixa para dentro daqui, você pode ver que está escuro e não
podemos ver nada Se eu clicar no modo
apagado aqui, alterando o modo iluminado para apagado, agora posso vê-lo porque realmente não
temos iluminação e não
podemos ver as coisas quando
estamos no modo iluminado Então, na verdade, eu não
gosto muito de projetar no
modo apagado. Você pode fazer isso. Obviamente, você pode tentar projetar
todo o nível em iluminação, porque depois disso,
adicionaremos iluminação. No entanto, se você deseja
projetá-lo no modo iluminado, basta clicar aqui. E vá para Luzes e adicione uma luz direcional
apenas por enquanto E você sempre pode
alterá-lo mais tarde. Lembre-se, se você aumentar o tamanho dessa
caixa, por exemplo, e achar que a
luz do sol está muito forte, você pode clicar nela e clicar em E para pegar
a ferramenta de rotação. E você sempre pode
girá-lo, tente ver se
consegue um bom ângulo E você também pode diminuir a intensidade aqui
e trabalhar a partir daí. Mas agora, isso
é apenas temporário. Vamos apenas
projetar o nível e depois
fazer a iluminação. Mas eu só quero
adicionar este para que eu também possa projetar meu nível
no modo iluminado. Tudo bem, então agora eu
vou deletar essa caixa novamente. E o que vamos
fazer é projetar algo
assim
para o Counterstrike Então isso é chamado de mapa. Um mapa é basicamente, você tem dois lados desse mapa. Então, o
contra-terrorista aparece de
um lado e o terrorista
surgirá do outro E há armas
que eles podem
pegar e atirar
uns nos outros desse jeito. Apenas um
mapa muito, muito simples e
vamos criar algo
assim naturalmente, um copiar-colar completo, mas algo que
achamos que parece bom por enquanto. Vamos começar arrastando esse avião supercrítico para o nível O que eu gosto de fazer
é
colocá-lo no local de 000, ou
seja, o centro do mundo. E eu geralmente gosto
de começar daqui. Muito legal. Para esses ativos, você pode clicar em Arte para
usar a ferramenta de escala
e, em seguida, escalá-los nessas direções diferentes. E você pode ver que isso cria avião assim e
cria um nível para
você. Muito legal. Você pode escalá-lo nos dois eixos
e, em seguida, criar o terreno para o jogo para
facilitar, que você não precise escalar muito O que você pode fazer é
clicar aqui
para redimensioná-lo desta
forma primeiro, para que a caixa seja exibida
na íntegra Em seguida, você pode clicar aqui
para ver a ferramenta de escalonamento aqui. E talvez selecionar a escala se
encaixe em uma, configurando-a como uma Agora, se eu escalar
nessa direção, você pode ver que ele escala uma caixa inteira,
uma que eu
escalo uma vez.
Isso é muito legal. Em vez de fazer isso
muitas vezes agora, o que você pode fazer
é escalar uma vez e criar
essa caixa para você. Você também pode ver como é
útil usar o encaixe para o
nível quando eu o escalo Você pode ver que também é dimensionado
aqui no meu painel Detalhes. Você pode ver os números subirem. Você pode escalá-lo dessa maneira ou dessa maneira. Deixe-me, na verdade,
escalá-lo dessa maneira. Aqui você pode imaginar que,
se você descer até
aqui, é aqui que o
jogador está parado. Se você quiser ver o
tamanho desse mapa, você também pode clicar aqui
no botão Noções básicas e adicionar um jogador para
iniciar este jogador .
Eu vou
derrubá-lo primeiro Algo parecido.
Vai dizer tamanho ruim. Se estiver dentro do solo, vou movê-lo para cima.
Algo parecido. O personagem tem quase o tamanho deste. Os jogadores começam quase. Isso é só uma
referência. Agora você pode ver que esse nível
é muito pequeno. Não é isso que
vamos fazer. Precisamos que seja muito maior. Então, eu vou
clicar neste avião. Vou escrever 80 para
o x e 80 para o Y. Agora vou tentar
construir esse mapa aqui Obviamente, para este curso, você sempre pode diminuí-lo. Não importa
o que você projeta. Vá em frente e crie
seu próprio nível novamente, não
importa o que
você projete neste estágio. Posteriormente,
faremos a programação com qualquer mapa que você criar. Vá em frente e
seja criativo crie suas próprias coisas
e se divirta com elas. Quando criarmos o solo, o que você pode fazer é
pegar essa caixa, por exemplo. Você pode colocá-lo
aqui no chão. E então eu vou
movê-lo para que ele se encaixe aqui até as bordas
do chão novamente. Para tirar uma foto,
colocando-a em uma, agora
posso escalá-la, e
esta é apenas minha parede Vamos escalá-lo até
o outro lado,
desse jeito , até
que termine aqui. Então, o que você pode fazer é
escalá-la para
cima para fazer uma parede mais ou
menos assim Na escala de 20
para a altura. Sempre podemos alterá-lo mais tarde. Se acharmos que isso é muito
pequeno ou muito grande. O que eu posso fazer é realmente
movê-lo um passo aqui, aqui nesta caixa, porque eu quero ter a
outra parede aqui também. O que podemos fazer agora
com essa parede é que eu realmente quero diminuir
o tamanho aqui, agora está do lado de fora, diminuindo o tamanho em um. Exatamente desse jeito. Agora, o que posso fazer é
segurar a tecla Alt no teclado e
girar enquanto mantenho a tecla Alt pressionada E isso copiará o modelo segurando Alt enquanto você gira. Isso o copiará. E agora eu posso arrastar esse modelo
até esse tamanho. Vou apenas
aumentar
um pouco a velocidade da minha câmera para poder ver
o que está acontecendo. E eu vou para o
modo apagado porque agora você pode ver, é realmente difícil ver E eu vou
movê-lo desse jeito. Só estou juntando tudo. Apenas certifique-se de que eles
estejam encaixados. Confira aqui para
ver se
está tudo bem. Tudo está bem. Novamente, vou clicar em E old e arrastar para copiá-lo. Não desse jeito. Vou
clicar em Control Z, segure Alt. Clique e arraste para copiá-lo
e, em seguida, arraste-o até aqui
e, em seguida, fotografe-o Talvez também seja muito mais fácil
aumentar esse encaixe. É melhor controlar. Você pode ver aqui, você não precisa movê-lo muito
antes que ele se quebre. Isso tornará tudo
muito mais fácil para você. Vou fazer a
mesma coisa aqui, arrastando-a para este lado, certificando-me de que está se
encaixando nessa parede Além disso, certifique-se de
que fique bem aqui. Agora você pode ver que eu tenho uma parede. Se eu agora for para o modo Iluminado, posso clicar nessa luz
direcional Eu posso girá-lo um pouco. Eu posso ver meu nível. E eu também posso diminuir
a intensidade, então não é tão intensa. Agora temos esse nível
com as paredes. Tudo bem? Então, eu quero que você projete
esse nível como quiser. Você sempre pode colocar cubos aqui. Você pode tentar redimensioná-las, fazer algumas parecidas com paredes
para o jogador, que o jogador fique
aqui e atire
nos outros jogadores Você pode tentar fazer cubos,
algo assim. Você pode segurar a tecla Alt
e arrastar enquanto segura a tecla Alt para copiá-la e
talvez colocá-la desta forma. Você pode até mesmo copiá-lo novamente. E você pode colocá-lo ao lado deste, algo assim. E você também pode
aumentar o tamanho, tornar algo
assim interessante. Você também pode tentar criar modelos
interessantes. Você pode ver aqui, você pode
usar todos esses ativos. Você também pode usar rampas. Você pode tentar arrastar essa
rampa e aumentar o tamanho da rampa e também o
tamanho da inclinação Assim. E desta forma veja que você também pode fazer
rampas neste nível Tente ser muito criativo
e crie um nível aleatório que possamos
usar para programar o jogo. Agora, com isso dito, se
você não está realmente interessado em projetar o nível e quer
apenas começar
com os planos, eu também incluí
o projeto para você que o nível foi
projetado sem nenhum código Você também pode usar isso
, se desejar. É uma prática muito boa também
criar seus próprios níveis. Imagine que, mais tarde
, quando você estiver criando seu próprio jogo, você também saiba como criar
seu nível. Então,
eu recomendo seguir em frente e se divertir com isso.
Basta projetar o nível. Use talvez uma hora ou 30 minutos
e depois volte aqui. Tudo bem, aqui estou eu de novo. Estou de volta e
desenhei o nível. Passei algumas horas
apenas criando algo interessante e fazendo com que parecesse legal quando estamos
programando o projeto. Novamente, eu incluí
isso para você, que você
possa usá-lo
sem nenhum código. Então, se você não quiser projetar, aqui está, você pode usá-lo. No entanto, novamente, sugiro
que você vá em
frente, divirta-se e crie algo aleatório
que possamos usar. Você pode ver aqui que eu criei uma nova
pasta chamada marketplace. E dentro daqui eu arrastei o céu bom e a
super grade também Eles estão aqui e é
um pouco mais organizado. Quanto ao nível, na verdade
vou alterá-lo para o modo
apagado para mostrá-lo a você,
porque a iluminação está um
pouco irritante no momento Dentro daqui, você pode
ver o que eu fiz. Por exemplo, acabei de
montar as caixas. Eu só estava tentando adicionar algumas formas interessantes a
esse nível, o tamanho adequado. Novamente, o chão ainda tem 80 por 80, como fizemos antes, e as paredes ainda têm 20
por 79, exatamente como antes. Você pode ver aqui
todas essas caixas, elas consistem em caixas diferentes. Você pode ver esta caixa aqui adicionada com esta caixa. Novamente,
assim como antes. Acabei de usar a
ferramenta de dimensionamento para aumentá-las e diminuí-las e apenas tentei criar formas
interessantes para esta Este é o anel Super Grid. Se você clicar nele, por exemplo, se clicar aqui, poderá clicar nesse pequeno ícone. Na verdade, ele o
levará ao modelo
no navegador de conteúdo. Então, essa é a maneira
mais fácil de fazer isso, e essa é a que eu usei dentro da pasta
meshes Eu também fiz essa rampa. Então você pode ver aqui que eu
projetei como uma rampa. Você pode subir aqui fazendo essa rampa e fazendo essa parede ao lado dela para
fechar essa rampa Você pode ver como eu fiz isso para ter apenas um
pouco de terra aqui. E esse chão também
abaixo dessa rampa. São apenas duas rampas
juntas e pouco de terra aqui entre elas. Apenas algumas
paredes juntas. Você pode ver que passei
algum tempo apenas para construir um nível interessante. São apenas caixas
que você pode montar. Você também pode usar essas formas. Se você clicar nesse ícone, ele o levará até você
e são esses cilindros que você pode colocar e
depois escalar Então, o que você pode
fazer é usar esses para colocar em cima. Você pode reduzi-los
para que tenham uma boa aparência. Talvez apenas tire a
foto aqui ou simplesmente a reduza para
algo como 0,125
ou algo parecido E apenas diminua e
tente copiar e colar
tudo para criar aquela forma
interessante aqui em cima. Ok, mas isso é o que eu
fiz para projetar esse nível. Novamente, você pode
baixá-lo se desejar. Eu o incluí para você. Com isso terminado, lembre-se
de subir aqui também. O que você pode fazer no delineador é selecionar tudo o
que você projetou E o que você pode fazer é selecionar todos eles. Então clique no primeiro, segure Shift e clique
no último. E então você pode clicar no ícone
dessa pasta para
criar uma nova pasta. E clique em dois no teclado para dar um nome a
essa pasta. E permanecerá
organizado assim. Lembre-se de que é
sempre bom se manter organizado aqui
no navegador de conteúdo. Mantenha-se organizado também
aqui no Outliner. Agora, com esse nível projetado, vamos voltar ao modo iluminado. E agora estamos prontos
para fazer a iluminação. No entanto, você pode ver
que é muito brilhante. E quando vou para a luz
direcional e a altero
para algo como 0,2, você pode ver a iluminação continua mudando
e ficando brilhante Portanto, precisamos adicionar um volume de
pós-processamento antes de continuarmos. Então, vamos para
a próxima lição.
9. Volume de processo de pós-processamento 2.05: O
volume de pós-processamento dentro do Unreal Engine é
algo que podemos usar para mudar a
imagem do jogo Assim como você pode
pensar no Photoshop, onde você adiciona uma imagem ao Photoshop e altera
as cores dessa É a mesma coisa
aqui no Unreal Engine, usamos um volume de pós-processamento Esse volume pode alterar
o calor do nível,
podemos mudar a cor, a saturação, os reflexos da
lente Bloom e assim por diante Então, o que podemos fazer
é clicar aqui e você pode encontrá-lo em qualquer um dos efeitos visuais e ver que é chamado de volume
pós-processamento. Ou você pode acessar
os volumes e depois criar um volume de
pós-processamento. Duas maneiras de criá-lo. Então vá em frente e clique nele. E se eu clicar em, no meu
teclado para mostrar os ícones, você pode ver essa caixa
aqui que criamos. Esse é o volume de pós-processamento. Agora, aqui dentro, se
você clicar em um deles, por exemplo, o Bloom, e clicar na intensidade. E vamos aumentá-lo para algo insano, como cinco Você pode ver que nada
realmente aconteceu, se eu dissesse isso para um, se eu dissesse para cinco,
nada acontece. Isso ocorre porque você precisa
entrar nesse volume de
pós-processamento. Você pode ver que se eu mover
minha câmera para dentro dela, a floração entra em vigor. Se eu sair desta caixa, você pode ver que a flor
não tem efeito, então eu tenho que estar dentro dessa
caixa para que ela tenha efeito. Para aplicar isso
a todo o nível sem entrar e
sair dessa caixa. Você pode ir até aqui e marcar a chamada extensão
infinita. Você pode marcá-la e agora você pode ver que ela se aplica
a todo o nível. O que a extensão infinita faz? Ele apenas o aplica
a todo o nível para que você não precise entrar
e sair da caixa. Agora, qual é a utilidade
disso aqui, para esta caixa? É, por exemplo, se
você tem uma masmorra, ou digamos que eu queira
entrar neste prédio
aqui e mudar de cor. Isso é o que você pode fazer. Você pode movê-lo, por exemplo, dentro deste prédio. Você pode movê-lo para cá. E
você pode até mesmo ampliá-lo. Você pode ver que se eu
movê-la até aqui, eu posso pegar a ferramenta de escala, clicar em R para
pegar a ferramenta de escala, e então eu posso
escalá-la em X, Y e Z. Só tentando preencher
a área, eu realmente
quero que ela tenha efeito Digamos, por exemplo, que eu
queira que isso tenha efeito aqui. Quando eu entro, quando me
mudo para esta masmorra, você pode ver a floração, a floração aumenta,
agora ela entra em vigor Esse é o uso dele para
não usar extensão infinita. Por exemplo, se você
tem um jogo de RPG, você tem Dungeons e
quer mudar cor sempre que estiver
dentro dessa No entanto, nós realmente não
temos algo assim. Eu quero que ele se aplique
a todo o nível, então vou clicar
em Extensão infinita. Vou até
o topo e
também vou pegar a balança. Vou pressionar esse
botão para voltar ao padrão. Na verdade, isso não importa, mas eu só queria que fosse padronizado assim,
como você pode ver aqui. Por exemplo, para
a temperatura, você pode aumentar ou diminuir a temperatura e mudar a cor desse mundo. Até mesmo a tonalidade, você pode aumentar
e diminuir a tonalidade. Você pode ver que o volume do
pós-processamento é igual ao do Photoshop Você pode mudar a
aparência deste jogo. Vou
clicar nessas setas e
colocá-las de volta ao
padrão por enquanto Na verdade, não vamos
jogar muito com ele por enquanto. O que eu quero fazer é que
você pode ver aqui, se eu remover essa intensidade
do Bloom, eu clico aqui. Você pode ver a
luz do sol, se eu colocá-la em,
digamos, cinco muito intensas, você pode ver que ela muda a
luz. Essa é a exposição. Se eu colocar em 0,2,
você pode ver que começa escurecendo e depois
aumenta a iluminação. Não quero fazer isso
porque estamos criando jogos
e, em jogos, não fazemos
coisas desse tipo. É sempre bom ficar em uma única iluminação quando
você está iluminando. Vamos até o volume de
pós-processamento e clique em Exposição aqui. Vamos clicar no EV
mínimo e máximo e configurá-lo como um. E defina este como um também. Agora você pode ver se eu
clico na luz direcional e
ajusto a intensidade para
algo como três E agora você pode ver que se eu
chegar perto, se eu for embora, se eu olhar para coisas diferentes, você pode ver que
não está realmente mudando a luz e
está sendo estática. E é isso que
queremos para jogos. Vamos ver o volume de
pós-processamento do Bloom. Por enquanto, vou clicar na Intensidade e
defini-la como zero. Para começar,
é sempre bom chegar a zero. Quando você está iluminando, não
afetamos a
iluminação por outros fatores, então o Bloom a definiu como zero. Também aqui embaixo,
o efeito de imagem, temos algo
chamado vinheta E uma vinheta é que você pode ver se eu clicar nela e
você a aumentar,
ela cria uma mancha escura ao redor da
tela Se eu apenas aumentar a
intensidade da direção, acenda para que você possa
ver o que quero dizer. Se eu definir para dez e agora clicar no volume de
pós-processamento, você poderá aumentar e diminuir a vinheta. Assim mesmo. Este é apenas um
robô cinematográfico em torno de sua imagem. E eu não quero fazer
isso para começar. Não quero que isso
afete minha iluminação. Vamos colocar isso em zero. Você pode ver se eu não marcar,
é 0,4 por padrão, você pode ver que está
realmente aplicado. Se eu desmarcá-lo, lembre-se de
cadastrar e defini-lo como zero,
isso o removerá Se eu for até aqui só para ter
certeza de que há
mais alguma coisa para o desfoque de movimento As pessoas geralmente não gostam desfoque de
movimento em jogos de tiro em primeira
pessoa. Vou clicar no valor e definir esse 120 também. E com isso feito, agora estamos realmente prontos para fazer a iluminação. Você pode ver que nada
está afetando nossa iluminação. Quando fazemos a
iluminação e vemos os resultados, nada está mudando a iluminação. E você pode ver que quando eu me
movo para frente e para trás, a luz permanece a mesma. E é isso que queremos. Então, vamos continuar
e clicar em Arquivo. E vamos clicar em Salvar tudo. E também aqui no volume de
pós-processamento, o que você pode fazer é clicar nele e criar uma nova pasta. E vamos clicar aqui,
clicar em dois e chamar
isso de Post Process. Aqui está o volume do pós-processamento e agora estamos prontos
para fazer a iluminação.
10. 2.06 Iluminando o ambiente: Agora estamos prontos para
fazer a iluminação. Então, o que podemos fazer é excluir essa luz
direcional Porque agora estamos prontos para
começar do zero, ok? A maneira como eu faço a iluminação
é subir aqui, ir até as luzes e primeiro
adicionar uma luz direcional Então esta é a nossa luz solar. E eu geralmente adiciono todas
as luzes antes de
começar a ajustá-las. Então aqui está a luz do sol. E clicando aqui,
vá para as luzes novamente. E vamos adicionar essa
chamada clarabóia. A clarabóia é a luz que
vem do céu,
que, como você pode ver aqui
, está muito escura agora O que podemos fazer é aqui
na pasta Marketplace, clicar na Good
Sky que adicionamos anteriormente e clicar na pasta
Blueprint E neste Good Sky, você pode clicar e
arrastá-lo para o nível. E quando você o coloca, você pode ver que está dentro daqui. Novamente, quero
fazer isso durante o dia, mas por enquanto não
vou realmente ajustar nada Então, o que
podemos fazer é clicar aqui. Também temos outra luz, mas ela não está dentro das luzes. Está dentro dos efeitos visuais e é a atmosfera do céu. Você pode clicar nesse e depois clicar
neste aqui em cima. Vá para Visual
Effects novamente e clique neste chamado
Sphere Reflection Capture. Ele vai capturar os
reflexos dentro
do seu nível Para este,
na verdade, vou
reduzi-lo para talvez 2000. E deixe-me arrastá-lo para
o meio do nível. Naturalmente preciso,
isso não importa. Vou aumentar
esse raio de influência para encapsular meu nível Você pode ver agora que está
encapsulando meu nível. E isso vai adicionar
reflexos ao redor do meu nível. Agora, aqui em cima, você pode clicar novamente e acessar os efeitos visuais,
na verdade, não
os efeitos visuais nos volumes. E temos esse chamado volume
de importância de massa leve. Clique nesse. O volume de importância do mapa é apenas dizer ao motor o que é importante
para acender a luz. Precisamos encapsular nosso
nível e dizer ao motor que essa área é muito
importante para a iluminação Vamos fazer isso. Vamos colocá-lo em algum lugar aqui no meio. Novamente, isso realmente não importa. Vou clicar ou defini-lo
aqui para as configurações do pincel. Você pode ver no X. Você pode clicar e arrastar para aumentá-lo Você está aumentando essa caixa
para encapsular seu nível. Novamente, você
realmente não precisa ser
preciso , apenas no nível da cápsula E eu vou fazer
isso para o Y também. Eu vou fazer isso
para os Z Xs também. Vou me mudar para cá
só para ver se está encapsulado. E nós realmente não
precisamos
que seja muito aqui embaixo. Vou
aumentá-lo um pouco. Na verdade, diminua
um pouco só para
ter certeza de que o solo
está aqui com ele. E também estou me certificando de que as paredes aqui em cima também estejam
aqui com ela. Novamente, não precisa ser preciso, apenas certifique-se de que ele
encapsula o nível. Agora temos a
direção, a luz, o bom céu, o
céu, a atmosfera, a clarabóia, a reflexão da
esfera e a massa de luz
dentro do nosso nível O que eu
vou fazer é selecionar todos eles. Clique aqui para ver esta pasta, vamos chamá-la de iluminação. E agora estamos prontos para ajustar
a iluminação do nosso jogo. Eu geralmente começo
com um clique na luz direcional,
que é a luz do sol E o que você pode fazer é
clicar em E
no teclado para selecionar
a ferramenta de rotação. E então você pode
tentar girar o sol. Assim, você pode criar algumas sombras
interessantes. Isso é o que você está
tentando fazer para começar, basta dar algumas sombras
interessantes Você pode simplesmente girá-lo, ver onde as sombras
são interessantes Você também pode remover o
snapshot clicando aqui. E então você pode
girá-lo livremente e tentar colocar algumas
sombras interessantes para o seu jogo Para mim, vou
tentar girá-lo para
algo assim Talvez eu também esteja
girando dessa maneira. Então, na verdade, projeta
sombras dessa maneira. E eu sempre posso tentar
ajustá-lo mais tarde. Então, agora você pode ver que as
sombras estão muito escuras. E eu quero mudar um pouco para que
seja mais fácil
tentar encontrar algumas sombras
interessantes apenas tornando-as um pouco mais brilhantes Clicando nesse bom céu, eu vou
até aqui
e, na hora do dia, vou mudar
esse, para que não sejam estrelas. Vou escrever 12
na hora do dia. E agora você pode
ver que é a luz do dia. E você pode clicar
na clarabóia, descer, clicar em Recapturar
para capturar o Você pode ver que algumas cores realmente mudaram aqui e
estão ficando mais brilhantes Você também pode alterar a intensidade da clarabóia aqui para torná-la cinco ou
algo parecido Muito louco agora. Mas só para encontrar
algumas
sombras interessantes com as quais você possa trabalhar agora, eu girei sob meu sol e estou feliz com minhas Novamente, vou até a clarabóia e, na verdade clicar nessa seta e
colocá-la de volta em uma por enquanto Agora que temos o céu,
vou começar
com o céu bom. Agora clique no Good Sky. Para essas predefinições, o que
vou fazer é que você possa ver, clicar
nelas e alterá-las aqui para o estilo
das nuvens Novamente, isso é opcional, mas vou clicar
nela e selecionar essa Nuvem B. Esse é o estilo das nuvens Para a cobertura da nuvem, vou selecionar Meio. E essas são as configurações
para um bom céu. Não há muita coisa a mudar aqui. Só para ter certeza, vou clicar na clarabóia novamente,
descer, clicar em Recapturar, só para ter certeza de que
ela tem a
iluminação correta do céu.
E eu vou clicar em Construir e
construir todos os níveis. E isso garantirá
que a iluminação esteja realmente correta.
Então vá em frente e faça isso. Isso levará algum tempo se for a primeira
vez que você estiver fazendo isso. E você pode ver o progresso aqui quando está
construindo a iluminação. Mas, como você pode ver,
provavelmente levará alguns
segundos para mim. Agora, quando você terminar de
construir a iluminação, ela mostrará o progresso. Está parecendo exatamente como
antes. Tudo bem Você pode ver aqui se eu clicar
na clarabóia agora e aumentar a intensidade
da clarabóia para
algo como três, você pode ver as sombras E é para isso que a
clarabóia é usada. Isso torna as sombras mais brilhantes. Se você tem sombras
muito escuras em seu jogo, você sempre pode aumentá-las para que suas sombras
fiquem mais brilhantes E parece muito
melhor do que antes. No entanto, na verdade, isso
geralmente não é tão escuro. Se eu o tiver
na escala de dois
, não deveria
estar tão escuro. Além disso, se você olhar aqui
dentro, há
algo mais acontecendo. Este é o lúmen, o
novo sistema de iluminação. Se você clicar neste processo de
postagem por enquanto, vou minimizar
essa exposição. Se você simplesmente descer aqui
e encontrar Lumen aqui, poderá ver a iluminação global Lumen, você pode clicar nele
aqui e aqui no Lumin, iluminação
global, você
pode clicar nessa
distância máxima para esta distância máxima para Se você escrever zero,
verá que está muito
mais claro do que antes Se você clicar nessa seta
para voltar ao normal, verá que tudo
está muito escuro. E se eu escrever zero novamente, fica muito mais claro Há algo
acontecendo com isso também. Na verdade, vou
reduzi-lo um pouco para este. Você pode ver se você escreve
100, fica assim. Se você escrever 200, 300, 400500600700900, ele começará a
ficar Na verdade, vou escrever 700. Você pode tentar
equilibrá-lo agora, parece muito plano, então eu não vou
continuar com isso. 1 lúmen é muito bom e dá bons efeitos
. Você verá
isso mais tarde, quando a iluminação estiver boa, então eu não quero que pareça tão plana É muito bom
ter lúmen em sua cena porque a iluminação
ficará muito melhor Em vez de remover tudo, e vamos colocá-lo em 200, 300, tente
aumentá-lo um pouco, mas ainda está
plano no chão. Vou continuar aumentando em 100
até ver alguns detalhes. Agora eu posso realmente ver
alguns detalhes aqui aqui. E se eu escrever 700
em vez de 600? E isso é o que parece. Se eu escrever 800, isso vai ficar
muito escuro aqui. Eu vou escolher
700 com este, sempre
podemos alterá-lo mais tarde. Está bem? Então você pode
ver a diferença. Se eu clicar aqui,
fica assim. Se eu escrever 700, parece muito
mais leve do que antes. Agora você pode clicar na
clarabóia e aumentá-la um pouco
para que não fique tão escuro Para a clarabóia
agora, são dois. Você pode escrever 34, talvez algo
como quatro por enquanto, ok, talvez algo como quatro. E você já pode ver que está muito
melhor do que antes. Antes era um por
padrão e agora é quatro. E você pode ver a
diferença aqui. Vou continuar ajustando a
iluminação até ficar satisfeito. Nos jogos de tiro em primeira pessoa, é muito bom ter cantos escuros porque as pessoas
querem se ver,
querem atirar umas nas outras querem atirar umas E não é bom ter um canto escuro onde você não
possa ver o inimigo. Algo assim,
vai ser muito chato. Vamos escrever quatro na escala de
intensidade aqui. O que vou fazer também é clicar na luz
direcional e
aumentar a intensidade da
iluminação indireta E o que
isso faz é que apenas acenda
algumas luzes nas paredes e
ficará muito melhor acenda
algumas luzes nas paredes e
ficará muito Se você aumentar, verá a diferença. Na verdade, veja a
diferença aqui. Se eu escrever zero ou um como antes e se eu escrever
seis, você pode ver essas paredes aqui estão refletindo
luz umas sobre as outras E o ambiente parece
muito melhor do que antes. Se estiver certo um, certo seis, você também pode ver a diferença
nesta parede. Tudo bem, então o que eu
quero fazer agora é equilibrar as sombras
versus a iluminação Então, parece correto.
Antes de eu fazer isso. Agora, se você clicar na
clarabóia e depois clicar em Avançado aqui
na iluminação aqui
na clarabóia,
você clica
em Avançado, você pode ver algo chamado
de cor do hemisfério inferior O que é isso, ele
reflete a luz
do solo para essas
paredes e Aqui você pode ver
que se eu clicar nele e colocar a luz ou a
cor em algo extremo, você pode ver que na verdade está
refletindo luz
do chão para cima
nessas paredes Agora, atualmente está preto e isso
realmente não faz sentido porque não
estamos realmente refletindo luz
negra nas paredes Para torná-lo mais realista, precisamos mudar a cor
para algo mais correto. No momento, meu chão está cinza. O que você pode fazer aqui é clicar no modo Iluminado aqui em cima, acessar a
Visualização do Buffer e depois
acessar a Cor Base Agora você pode ver a verdadeira cor
base do seu solo. O que você pode fazer é clicar nele, pegar o seletor de cores e selecionar
a cor do solo Vou selecionar
esse cinza aqui. E eu vou
voltar para o meu céu. Se eu minimizar isso,
vá até a clarabóia. Agora você pode ver que mudamos cor
do hemisfério inferior Agora, se eu voltar para
o modo iluminado, desço e me lembro de clicar em
recapturar Porque você tem que
recapturar a iluminação. Agora está emitindo
a iluminação correta aqui nessas paredes Tudo bem,
deixe-me dar um zoom aqui. E eu quero agora equilibrar o equilíbrio entre a
sombra e a luz. Agora, se você clicar
na luz direcional e alterar a
intensidade aqui, isso aumentará e
diminuirá a quantidade de luz Se você for até a clarabóia
e aumentar e diminuir a quantidade ou
a intensidade aqui, isso aumentará e diminuirá o
quão escuras são essas sombras Vou começar clicando
na luz direcional e vou
aumentar a intensidade e talvez algo como sete Agora, se eu for até
a clarabóia novamente, você pode começar com um
e depois escrever 23 Você pode tentar
aumentá-lo um pouco só para
ver como fica até ficar
satisfeito, certo? Eu brinquei com a intensidade da clarabóia
e da luz direcional Para a luz direcional, eu coloquei em seis, na verdade, vou colocá-la em sete
para que não pareça noite Colocando isso em sete
para a clarabóia, acabei de colocar em cinco novamente. Eu apenas aumentei
um pouco aqui até ficar satisfeito
quando aumentei para seis. Acho que estava um pouco claro demais, então reduzi cinco. E sempre podemos
alterá-lo mais tarde. Não é um problema,
mas agora, acho que está bom. Podemos ver a
aparência das sombras em comparação com
a iluminação E apenas comparando
com o céu também. Veja se tudo
parece realista. Dê uma olhada dentro
desse túnel para ver se
está tudo bem. Não quero que pareça muito
escuro, como você pode ver aqui. Se você clicar no
volume pós-processamento e descer novamente
até o lúmen e, para obter
a distância máxima do traçado, se voltar para 2000, poderá ver o quanto isso
afeta a iluminação Isso realmente deixa tudo escuro e você precisa
diminuir isso novamente. Você pode escrever 100 para
ver como é, mas agora está realmente
plano no chão. Se eu escrever 200, 300, 400, você pode ver que ainda parece muito
plano no chão. E se continuarmos
aumentando esse número, em algum momento ele vai
parecer um pouco escuro demais. Então, eu vou, novamente, ajustá-lo de volta para 700. E eu gosto muito desse número, então vou ficar aqui. Mas é assim que eu
costumo fazer a iluminação. Eu primeiro tento ir até
a luz direcional. Tente encontrar sombras bonitas
girando a luz do sol. E então eu vou ficar aqui
na clarabóia novamente,
assim como antes Clique no
botão avançado da luz. Desça até o hemisfério inferior e mude a cor
para o chão, então custa uma iluminação correta
e também para um bom céu Alteramos algumas
configurações aqui. Agora você pode ver que se eu olhar para
esta parte e me afastar, você pode ver que,
de repente, ela desaparece, o reflexo vermelho aqui Se eu me aproximar, você pode ver que,
se eu me afastar, você pode ver que há uma pequena mudança na
iluminação aqui. O que você pode fazer aqui
é realmente brincar com a distância do lúmen Você pode voltar ao volume de
pós-processamento e descer aqui. E temos algo
chamado Lumen Scene Detail. Se você clicar no
Lumen Scene Detail, se clicar no modo Iluminado e depois acessar a cena Lumen
e Lumen Então, na cena do Lumen,
você pode realmente ver onde o Lumen está afetando o Lumen Novamente, o novo sistema de
iluminação do motor
Ural faz com que tudo
pareça muito bom. Vamos tomar isso como exemplo. Se isso ficar preto, você pode
ver se eu me afasto dele. Isso significa que o lúmen
não está funcionando nessa
malha no momento Se eu chegar mais perto, vai funcionar. Isso deveria
acontecer porque
não queremos que o
lúmen funcione
o tempo todo , porque
em algum momento você realmente
não precisa dele porque
está muito longe. E realmente não precisamos dar um desempenho pesado
ao jogo. O que podemos fazer aqui
para que funcione um pouco mais. Você pode ver se eu estou aqui, eu realmente queria trabalhar em alguns desses modelos também. Eu não quero que seja tão extremo
para os detalhes de Slumencene Você pode aumentá-lo um pouco. Se você aumentar muito, funcionará em tudo mesmo que você esteja longe. Se você
aumentá-lo, alguns detalhes serão
eliminados. Este, por padrão, é, você pode ver aqui, que
se você aumentar, o custo da GPU aumentará Não quero
aumentar muito isso, mas você pode
aumentá-lo um pouco. Vou clicar
e arrastar apenas para aumentá-lo um pouco até que apareça algo como 1.2
Essa é uma boa mudança. Você pode ver que fica
assim quando eu coloco em um, quando eu coloco em 1,2. Além disso, detalha o tear
muito mais rápido do que antes. Você pode ver quando
chegamos a um, neste
momento ele estava desligado. Se eu colocar em 1,2, está ligado. Se eu voltar para o modo
iluminado, está muito melhor agora. Tudo bem, então antes de
terminarmos, vamos primeiro clicar em Construir
e Construir todos os níveis. E certifique-se de
que tudo esteja correto com a
iluminação e as sombras Vai
levar algum tempo para ser construída novamente e eu voltarei depois que ela
tiver construído a iluminação. Tudo bem Então, agora
ele terminou construir a iluminação e
tudo está bem. Agora, às vezes, para algumas pessoas , a iluminação parece diferente. E isso porque
pode ser porque você precisa acessar as configurações
e a escalabilidade do mecanismo E agora você pode ver que estou vendo tudo
nos gráficos da Epic. E isso é porque eu
tenho um computador rápido. Mas se você tiver um computador lento, talvez queira usar igualdade média, por exemplo, ou baixa. Mas abaixo, você não consegue
ver as sombras, mas também pode usá-las Se você tem um computador mais lento, no entanto, eu tenho um rápido Eu vou escolher
o Epic One. Você sempre pode alterá-lo mais tarde quando estiver
exportando o jogo Mas o Epic geralmente é
muito pesado, então talvez você
queira usar o High para seu computador se
ele for um pouco mais lento Mas, como você pode ver, a escalabilidade
desse mecanismo também afeta a iluminação, então você também pode verificar isso Ok, agora para a última etapa, vou clicar
neste volume de pós-processamento. Agora, o que podemos fazer
é mudar um pouco as
cores. Então, podemos clicar
nessa temperatura e você pode marcá-la aqui. Essa temperatura é mais leve
e também essa tonalidade. Então, vou reduzir um pouco
a temperatura, para que fique um pouco mais azulada Algo como talvez 6.200
, uma diferença muito pequena. Você pode ver se eu marcar e desmarcar, é assim
que parece Só uma pequena diferença. Faz com que tudo
pareça um pouco mais frio, mais azul do que na
tonalidade; se você aumentar, verá
que fica um pouco mais
alaranjado, com um pouco alaranjado, Agora, eu não
quero que seja tão extremo. Portanto, se você subir 0,1, poderá
ver a aparência e poderá marcá-la e
desmarcá-la. A mudança. No entanto, acho que isso pode
ser um pouco demais até agora. I 0,05 em vez de
bilhete e bilhete NFI. Isso é o que parece. Está bem? Então, apenas uma pequena
mudança nas cores. Tudo bem, então a última
coisa que eu quero fazer aqui, você pode ver nas configurações
globais, você também pode mudar as coisas. Por exemplo, a saturação. Se seu jogo estiver muito dessaturado, você pode aumentar
a saturação e tudo ficará muito mais
saturado Agora você não precisa aumentar muito
a configuração. Por exemplo, você pode
colocá-lo em 1.1 e há uma leve
saturação no seu jogo Você pode ver que
dá um pouco mais de cor. No entanto, vou
ficar com um por enquanto. Você também pode aumentar o ganho
se o jogo estiver muito escuro, para poder aumentar o ganho. Todo o jogo será
muito mais brilhante do que antes. Agora, para mim, vou
ficar em um para
este também. Eu não preciso
mudar nada aqui. O que eu quero mudar é
que acho que as superfícies são um pouco brilhantes demais e esse é,
na verdade, o destaque. Se você acessar os Destaques
aqui e clicar, por exemplo, no ganho. E você pode ver aqui, se você aumentar e diminuir o ganho, você aumenta e diminui
as cores aqui em cima. Se você simplesmente colocar em zero, poderá realmente ver
o que isso afeta. Esse é o
destaque. Isso afeta o destaque na
parte superior desses modelos 5.21 Acho que é um pouco brilhante e
irritante de se ver O que você pode fazer é
diminuí-lo um pouco, para que não fique tão claro. E é chato ver
talvez algo como 0,60 0,56 E você pode ver que se você escreve uma, é
assim que ela E se eu escrever 0,6, isso
é o que parece. Agora eu acho que isso parece um
pouco melhor do que antes, porque antes estava um
pouco claro demais no gelo, e escrever 0.6 ajuda a
resolver esse problema. Isso é o que temos
atualmente dentro de um nível. Agora, para este,
podemos adicionar um pouco de flor. E, na verdade, vou adicionar um pouco de flor
aqui para o meu nível. Agora isso é preferência. Você também não pode adicionar
flores ao seu nível. Algumas pessoas não gostam de florescer
em praias de primeira pessoa Mas, para mim, vou
aumentá-lo um pouco que você
possa aumentá-lo
e ver como fica. Se você escrever um,
é assim que parece. Isso lhe dá aquele efeito sonhador. Se você escrever 01, acho que um é muito extremo. Se eu colocar em 0,6
, você pode tentar escrever 0,6 para
ver a diferença Acho que algo como
0,6 é o caminho a percorrer. Não mais do que isso, senão
será um pouco mais chato. Agora podemos ver
como é aqui. A iluminação parece muito boa. Você pode ver quanto custa
além das ondas aqui, e também pode ver
fora daqui Tente olhar para dentro daqui,
certifique-se de que não há nada escuro. Você pode ver o inimigo
se eu entrar aqui. Agora, se você acha que esse
túnel está um pouco escuro demais, você sempre pode entrar
aqui e clicar aqui. Vá até as luzes, clique
na luz pontual e crie uma luz pontual aqui. E você sempre pode colocá-lo em algum lugar aqui dentro
desse túnel. Para essa luz pontual,
você pode aumentar e diminuir a intensidade e
ver como ela se parece. Agora está um pouco claro demais
aqui nesta área específica. E eu quero suavizar isso
porque, como você pode ver aqui, nós realmente não
temos uma lâmpada. Então, vai parecer um pouco estranho que essa iluminação
seja tão brilhante aqui Então, o que você pode fazer é, na verdade,
diminuir a intensidade. Vou clicar em Avançado e aqui usar Inverse
Squared Fall off Na verdade, vou
desativá-lo aqui. Agora você pode ver que, ao aumentar e diminuir
a iluminação, agora
você pode aumentar
a intensidade para ser muito maior do que antes. Você também pode diminuir
essa intensidade de queda. E você pode ver que ela
ilumina um pouco mais o ambiente em vez de
se concentrar apenas nessa área específica. Agora, se eu continuar e
clicar novamente na luz pontual. E vou deixar que esteja aqui
às duas para o expoente de
queda de luz Então vou diminuir
a intensidade para algo
como você pode ver, está muito,
muito claro agora porque
desativamos, diminuímos o expoente de
queda de luz e também
desativamos
este para a intensidade Se você apenas escrever
um, por exemplo, poderá ver a diferença
se ligá-lo e desligá-lo Apenas um pequeno efeito
para garantir que
não tenhamos manchas escuras
dentro do nosso nível. Agora você pode brincar com
o raio de acentuação. Se você clicar em, poderá
ver onde isso afeta. Então, se você aumentar e diminuir o raio de acentuação,
isso é o que parece Vou colocar isso
em algo como 2000, talvez, algo assim. Se você clicar em, poderá
movê-lo desse jeito. Tente colocá-lo em algum lugar
muito bom, onde você realmente não veja que
há uma lâmpada dentro daqui. E tente também jogar
com a intensidade. Acho que está muito claro, então se eu colocar em 0,5, não
fica muito perceptível. E você pode clicar nesse
olho para ocultá-lo e mostrá-lo. E você pode ver
o que parece, apenas um pequeno efeito. Mas você pode ver
aqui, se o inimigo está parado aqui
e olhando para você, você pode ver que há
um pouco mais de luz. E é sempre mais
fácil ver o inimigo. E isso é mais bonito de se ver. Agora, tente contornar a luz agora que você
terminou de colocá-la. E tente colocá-lo em uma área onde
faça sentido para você. Eu acho que a
luz do verão aqui é boa. Eu vou fazer a
mesma coisa aqui. Vou segurar a tecla Alt,
clicar e arrastar para copiá-la. Eu vou colocá-lo aqui
dentro desse túnel também. Tente colocá-lo
em algum lugar no meio aqui. E então eu vou
movê-lo nessa direção. Vou
dar uma olhada e ver como isso está afetando
algum lugar como aqui. É a
mesma coisa que você fez aqui com essa
iluminação também. Essa iluminação também está
no meio. Apenas certifique-se de
que está no meio e está colocado aqui. Para a outra,
vou pressioná-la
levemente para que também se
pareça com a outra luz. Agora que colocamos
a luz personalizada apenas para que pareça um pouco
mais brilhante aqui dentro, acho que terminamos
com a iluminação e essa é a aparência do
nível agora
11. 2.07 dicas de otimização de ambiente: Antes de
concluirmos esse
ambiente, também precisamos dar uma olhada
na otimização e
garantir que ele funcione
bem como garantir que ele funcione um jogo
quando o lançarmos Para dar uma
olhada na otimização, vamos clicar no modo de
tampa aqui em cima. Vamos aos modos de visualização
de otimização e vamos começar com este
chamado Light Complexity. Para a complexidade da luz,
estamos basicamente, como o nome diz, dando uma olhada na complexidade
da iluminação. Como você pode ver aqui,
temos um gradiente aqui, começando do escuro e do azul, e depois vai até vermelho, roxo e branco.
Agora, se você
está aqui no azul, esse é um desempenho muito bom. Se você está aqui em
roxo e branco, isso é um desempenho pesado e
isso é ruim para o seu jogo. Mas, como você pode ver, nosso
nível é totalmente azul. E você pode ver
que está por aqui. E é muito bem
otimizado em termos de iluminação. Isso ocorre porque, na verdade,
não estamos usando tantas luzes. Só temos a luz
direcional e depois temos a luz do céu Eles estão iluminando isso principalmente como você pode ver, se eu voltar, se eu desligar a luz
direcional e se eu desligar a clarabóia, você pode ver que
tudo fica escuro Basicamente, são esses dois que iluminam
o ambiente. Agora, se eu voltar para
a
área de complexidade da luz , fica verde. Isso ocorre porque
adicionamos as lâmpadas. Lembre-se de que clicamos
aqui nas luzes e adicionamos uma luz pontual.
É por isso que é verde. Este é mais pesado
no desempenho em
comparação com esta área. No entanto, esse ainda é um desempenho
baixo. Isso é muito bom. Isso
é bom para o seu jogo. Você ainda está na boa área. Se eu pegar uma das
lâmpadas e esta aqui, se eu pegar esse ícone, essa luz pontual, se eu segurar a tecla Alt e
arrastar para copiá-la, você pode ver se eu copio
e a coloco fora
dessas outras luzes pontuais,
está pronto. No entanto, se eu começar a sobrepor as luzes, como
você pode ver aqui, ela fica vermelha agora E na área laranja. Agora, digamos que esse era
o seu nível, tudo bem. Isso não
afetará seu jogo. Isso ainda é muito bom. No entanto, se
todo o seu jogo for vermelho, como esse, você poderá
experimentar em seu jogo. No entanto, se for
apenas uma área mínima em seu nível que esteja
vermelha, tudo bem. Isso é bom. Agora, se eu
copiar e colar novamente, você pode ver que fica
aqui, roxo e branco. E se você tem
isso em seu jogo, isso é muito ruim. Ao otimizar seu jogo, tente reduzir a quantidade
de iluminação que você está usando. Assim, você pode usá-los
longe um do outro. Assim, você pode sobrepor alguns
deles. Está tudo bem. No entanto, não tente
sobrepor muitas luzes ao mesmo tempo. Isso fará com que seu jogo fique lento. Vou excluir todas
as outras luzes pontuais
que criei aqui. Essa e essa também. No momento, nosso nível está
muito bem otimizado. Então, vamos ver a densidade
do mapa de luz. No momento, ele está embutido em motor
real. Talvez
eles consertem isso. Essas caixas pretas cintilantes
não deveriam estar aqui. Talvez eles
consertem isso no futuro. Mas, por enquanto, ignore essas linhas pretas cintilantes
na densidade do mapa de luz O que mostra
aqui agora é azul novamente. Azul é resolução. E é bom
para o desempenho do seu jogo. Se algo estiver
muito vermelho assim, é ruim para seu desempenho. Vamos do azul para o vermelho. Há um gradiente.
Então, vai do azul para o ligeiramente verde para o verde, depois vai para o laranja e depois para o vermelho. No momento, qual é a densidade do mapa de
luz? Qual é a densidade do mapa de luz? Você pode aumentar a
resolução do mapa de luz para cada modelo. E isso aumentará a
aparência detalhada de sua sombra no chão. Se sua sombra tiver uma
resolução muito baixa no solo, isso ocorre porque a resolução do mapa de
luz do solo é baixa. Isso pode ser um motivo para isso. O que queremos fazer
é acessar a densidade
do mapa de luz e
aumentá-la. O azul é uma
resolução muito baixa para um mapa de luz. Temos que aumentar a
resolução para as sombras tenham uma boa aparência
quando atingirem as malhas, por exemplo. Isso
é muito bom. Queremos buscar
essa cor verde. O que eu quero
fazer é clicar nesse chão. Você pode encontrar esse terreno
aqui no navegador de conteúdo. No entanto, se você não conseguir encontrá-lo, o que você
pode fazer é clicar no chão. E você pode clicar
neste ícone aqui, e ele o levará
até a malha terrestre. Agora vamos
clicar duas vezes e
abri-lo aqui no painel de detalhes. Vamos procurar um mapa de luz. Agora você pode ver a resolução do mapa de
luz
e a resolução mínima do
mapa de luz. Agora eu tenho que clicar
em outra coisa. Não vejo essa cor rosa, apenas clicando em outra coisa. Eu posso ver a cor azul
aqui no chão. Agora, se você apenas aumentar
a resolução do mapa de luz para algo como normalmente
multiplicamos por dois, você pode dizer 128 Agora você pode ver que é menos azul. Agora, se eu fizer isso de novo, multipliquei por dois Agora, em vez de apenas escrever
o número, o que você pode fazer, mecanismo
muito bom e irreal, você pode dizer multiplicar por
dois e pressionar Enter E vai fazer
isso automaticamente. Agora você pode ver que a
resolução é maior do que antes. Antes de ter 64 anos. Baixa resolução. Agora, quando
multiplicamos por dois, multiplicamos por dois, eu ainda
quero multiplicar por dois, porque essa ainda é uma
resolução baixa multiplicada Agora isso está muito melhor. Às vezes eu parava aqui porque isso
também é bom. Mas o que eu quero fazer
é multiplicar por dois só para ver como
fica também Essa é a cor que eu
costumo escolher nos meus jogos. Isso ainda está na área de
baixa resolução, mas isso fará com que
suas sombras tenham uma
boa aparência enquanto você mantém
o jogo otimizado Não gosto de deixar meus
modelos muito verdes assim. Eu gosto de ficar na área verde
azulada. Ainda fica bem
com as sombras. Resolução 1024, resolução de mapa
de luz para o solo. E lembre-se de copiar esse
número e colá-lo. A
resolução mínima do mapa de luz também. E então você pode ir
em frente e fechá-lo. E ele pergunta se
você deseja aplicá-lo. Está bem? Em seguida, clique em sim. Você tem que fazer isso para
todos os outros modelos. Por exemplo, vamos
dar outro exemplo. Vamos clicar nesse aqui. Esse anel aqui. É
esse anel aqui. Clique duas vezes nele, abra. Resolução do Light Map,
aqui está. Agora vamos clicar em
outra coisa para que possamos realmente
ver a cor. Vamos escrever vezes duas vezes. Ainda está em baixa resolução. Vamos multiplicar por dois novamente. Vamos multiplicar por dois novamente. Isso é realmente muito bom. Acho que será muito alto
se eu multiplicar por dois. Você pode ver agora que é
verde e laranja. Essa. Ainda é
bom em termos de desempenho. No entanto, ainda acho que esse
é um desempenho muito alto. Lembre-se de que quanto mais você aumentar
a resolução
do mapa de luz, mais ele
atingirá os quadros por segundo. E o desempenho, eu
vou dizer, divida por dois e fique
aqui no máximo. Vou copiar esse
número aqui também. E eu vou fechar isso e aplicá-lo agora. Vá em frente e faça
isso com todos os modelos que você está usando no jogo. Vou pular em frente e tentar fazer isso com todos os
modelos que tenho aqui Eu terminei de ajustar
todos eles
e, como você pode ver,
é assim que parece Agora você pode ver que alguns deles ainda
têm resolução muito baixa. Por exemplo, essa parede aqui. No entanto, essa parede também é essa caixa que parece muito verde. Você pode ver que se eu abrir a caixa supercrid e
procurar a resolução do mapa de luz, posso aumentá-la Por exemplo, multiplique por dois novamente e multiplique
por dois novamente, e essa parede
será de alta resolução No entanto, você pode ver
que essas caixas todas vermelhas e vermelhas agora. E isso realmente não é bom. Isso ocorre porque quanto mais
você aumentar a escala de um item, menor será a resolução. Por exemplo, vamos realmente
voltar para 128 antes. Se eu colocá-lo aqui no nível, você pode ver que agora
está verde. No entanto, se eu pegar a
ferramenta de escala e
aumentá-la, ela terá uma resolução
mais baixa. Se eu aumentar a escala, você pode ver que agora está uma resolução mais baixa do que antes. Quanto mais você ampliar o item, menor será a resolução. No entanto, tudo
está bem até agora. E se eu voltar para o modo iluminado e o que
você pode fazer é salvar o nível e depois clicar em Construir e Construir todos os níveis. E isso é apenas
para garantir que toda a iluminação esteja construída, todas as sombras estejam cozidas e que tudo esteja
correto Vai levar
algum tempo aqui. Vai levar um pouco
mais de tempo do que antes porque você aumentou
a densidade do mapa de luz. No entanto, você pode
ver que o nível ainda
está muito otimizado. Então, na verdade, isso não demorou e já está concluído. A iluminação agora está em alta resolução aqui no solo
do que antes. Parece mais de alta
qualidade do que antes. Isso ocorre porque aumentamos a densidade
do mapa de luz. Agora vamos voltar aqui nos modos
de visualização de otimização. Então temos a sobreposição de luz
estacionária. Como você pode ver,
não usamos muito. Aqui estamos na área verde. Você pode ver que está muito otimizado. Se examinarmos a complexidade do
sombreador, novamente, parece muito bom Não há nada com que me
preocupar se eu for até sorteio quádruplo. Em vez de
juntá-los, vou para o sorteio quádruplo. E esses são os três
modelos D que você está usando. Vamos dar uma olhada em quantos triângulos você
está usando por modelo, e não temos muitos Você pode ver que está muito,
muito otimizado. Todo o seu nível está
atualmente otimizado. E se você passar
para o modo Lit agora, agora terminamos
o nível, tudo
está otimizado. E se eu for até os
quadros por segundo, se eu clicar aqui, mostre
os quadros por segundo. E você deve saber que 120 FPS é o máximo
aqui no Unreal Na janela de exibição aqui, você precisa exportar seu jogo
como um arquivo EXC Por exemplo, se você
quiser liberá-lo a vapor e ele terá um FPS mais alto,
mas dentro do próprio motor,
ele estará mas dentro do próprio motor, bloqueado em
no máximo 120, certo? Então, tudo está muito
bem otimizado. Todo o nível está
sendo executado no máximo de FPS. E também otimizamos
o nível. Então, agora estamos prontos para continuar.
12. 3.01 Importando os personagens: Tudo bem, agora é hora
de importar os personagens. Agora, durante o curso,
vamos importar mais coisas. Por exemplo, as armas
e as animações. Mas vamos dar
um passo de cada vez. Vamos começar com os personagens. Vamos abrir o
Epic Games Launcher. Dentro daqui, quero que você clique na guia Marketplace. Agora, dentro do Marketplace, você pode encontrar ativos que
podem ser usados no jogo. Você pode ver que eles estão criando coisas
muito boas
que você pode usar. Claro, muito
disso é por dinheiro. No entanto, o que vamos
fazer é clicar em Procurar e
ir para Personagens. Em seguida, clicaremos
no botão grátis aqui para ver o preço máximo de uso gratuito. Agora, dentro daqui,
vou usar esse chamado Military Doc
and Military Silva. No entanto, você também pode
usar outros personagens. Você pode usar
este se quiser, você pode usar
este se quiser. Isso realmente não importa.
Você pode usar esse. Depende de você. No entanto,
vou usar esses dois, então vou
clicar no primeiro. Em seguida, vá em frente e
clique em Baixar. Se você ainda não o
baixou, ele dirá baixe aqui. Vá em frente e clique em Baixar. Em seguida, você pode
clicar em Adicionar ao projeto. Agora você pode ver
aqui, isso está vazio, e isso porque só é compatível com o Unreal Engine 4.8 a 4.27. Essa é
uma versão muito antiga Nem é o
Unreal Engine Five. No entanto, ainda podemos
usá-lo em nosso jogo. Vá em frente e clique
em Adicionar ao projeto e clique em Mostrar todos os projetos. E então você pode
selecionar nosso projeto. E agora está dizendo que não
é compatível com Unreal Engine 5.2. Então você
precisa selecionar outra Clique aqui e selecione a versão mais recente
do Unreal Engine Agora vá em frente e selecione-o. E vá em frente e clique
em Adicionar ao projeto. Agora vai entrar
no projeto,
se você ver aqui, se eu
voltar para o meu jogo aqui, se eu clicar nele, agora você
pode ver que agora está dentro
do projeto e eu posso
usar esse cara no meu jogo. Tudo bem, se
não for compatível, ainda
podemos
usá-lo no jogo. Vamos voltar e
vamos para o outro,
esse prateado. Novamente, vá em frente e
clique em Baixar. E depois de baixá-lo, clique em Adicionar ao projeto,
Mostrar todos os projetos. Selecione nosso projeto e selecione a versão mais recente com
a qual ele é compatível. Vá em frente e clique
em Adicionar ao projeto, e ele também adicionará este
ao projeto. Agora temos os dois personagens. Temos esse médico militar. Temos essa prata militar que podemos usar no jogo. Tudo bem, então é
assim que você importa coisas
do mercado. Basta baixá-los e
adicioná-los ao seu projeto. E se eles não forem compatíveis, lembre-se de mostrar
todos os projetos, selecionar o projeto
e também selecionar a versão com a qual ele
é compatível. Então, agora que
importamos os personagens, vamos para
a próxima lição.
13. 3.02 Blueprint para pais e filhos: Agora estamos prontos para
trabalhar com plantas. Vamos criar uma pasta
aqui, clique com o botão direito do mouse. Vá para a nova pasta e chame essa de blueprints dentro dessa pasta
de blueprints Vamos clicar com o botão direito do mouse e
selecionar a classe Blueprint. Agora vamos
criar um personagem. Então, vou
selecionar essa classe Aca. No entanto, se você não estiver familiarizado com as classes de blueprint, a primeira é um ator E o ator é
simplesmente um ator que pode
ser colocado no mundo. Por exemplo, uma mesa, uma cadeira, uma garrafa, apenas um
ator estático que está lá. O peão é algo que
você pode controlar. Por exemplo, se você tem uma bola rolando, esse
é o seu jogador. Assim, você pode controlar essa bola em seu nível porque um
peão pode ser possuído Possuído significa
que o jogador pode controlar essa classe de planta
com o teclado e o mouse Agora vamos
criar um personagem porque ele tem a
habilidade de andar por aí. Você pode se imaginar como um ser
humano com dois braços duas pernas andando por aí. Então você tem que
selecionar o personagem. Se seu personagem é simplesmente
uma bola rolando, basta
usar uma pata No entanto, temos personagens, então vá em frente e
clique no personagem. E eu vou chamar
isso de BP Player Base. Agora, por que eu não o
chamei de BP player? Por que eu chamei isso de base de jogadores
da BP? É disso que trata esta
lição. É sobre aulas de plantas para pais e
filhos. Agora eu vou
criá-lo aqui primeiro. Antes de explicar,
vamos clicar com o botão direito do mouse nessa base de jogadores da BP e
criar uma classe infantil de blueprint Vamos chamar isso
de terrorista da BP. Vamos clicar com o botão direito do mouse novamente
e chamá-lo de BP sob terrorismo Ok. Isso é o que são aulas de
planos para
pais e filhos Agora mesmo. Nós
criamos uma classe de blueprint A partir disso, escrevemos, clicamos e fizemos uma aula de planta infantil O que isso faz é que, se
eu alterar as configurações dentro dessa classe de
plano principal, essas mudanças
serão transferidas para
a classe de
plano antiterrorista
e para a classe de
plano terrorista Digamos que eu tenha entrado na base de
jogadores daqui. Fui até o componente de
movimento do personagem e depois mudei a velocidade
máxima de caminhada. Digamos que eu queria que meu
personagem andasse mais devagar. Então eu fui até aqui
e escrevi 250. Eu reduzi a velocidade. Eu cliquei em
Compilar para salvar minhas configurações aqui, e depois fui para, você pode ver agora que eles
têm essa estrela E a estrela significa que
eles precisam ser salvos. Se você clicar em
Contraterrorista, poderá ver se eu clico
no componente de
movimento do personagem, agora
ele também está em 250 Fez isso automaticamente. E se eu
também for até o terrorista , componente de
movimento do personagem, a peça máxima de Wx também
é 250 Você pode ver que, se você mudar coisa na classe principal do
blueprint, todos os seus filhos também
mudarão essa configuração Isso economizará
muito tempo. Digamos, por
exemplo, Quinzena. Se você estiver jogando
Fortnight,
digamos que você seja um desenvolvedor
de Você tem essa base de jogadores e depois tem todas as skins Em quinzena, você
tem todas as skins. Todas as skins de jogadores
que você está controlando. Quando você altera uma configuração
na base de jogadores, ela muda a configuração
de todas as skins Digamos novamente, por exemplo, a velocidade com que eles estão andando. Em vez de alterar
a velocidade
de caminhada de cada
personagem em quinze dias, é muito fácil simplesmente entrar na classe principal,
alterar
a velocidade
e ela entrará em
vigor em todos os filhos do
plano alterar
a velocidade
e ela entrará em
vigor em todos os filhos do Ok, é por isso que criamos classes de plantas para
pais e classes de plantas
para
crianças , por exemplo, o movimento, vamos fazer
o movimento com o teclado dentro da base de
jogadores, porque
não precisamos codificar
o mesmo movimento no contraterrorista e
o mesmo movimento
no terrorista o mesmo movimento
no Quando eles têm
exatamente o mesmo movimento, eles se movem da mesma maneira. Ou se você é um contraterrorista
ou se o
terrorismo não importa, o movimento é o mesmo E é por isso que é melhor
fazer isso na base de jogadores, então você só precisa fazer isso uma vez. Ok, vou
mudar o máximo,
voltar para 600 e a base de jogadores compilada, como você pode ver no
contra-terrorista e terrorista, eles voltam para 600. É assim que vamos trabalhar. Vamos
fazer coisas principalmente dentro da cláusula
do plano parental e, quando eles têm coisas específicas
que não são semelhantes
, vamos fazê-las
dentro das crianças Mas, por enquanto, essa é
a explicação básica. Vamos salvar tudo e
quando tudo estiver salvo, vamos passar para a próxima lição e configurar o personagem.
14. 3.03 Configurando o personagem: Para definir o personagem. Vamos começar primeiro com o terrist
aqui no terris Vamos clicar em Abrir editor de blueprint
completo. Esse visualizador é mostrado
a você sempre que o blueprint está vazio e você
o abre pela segunda vez Em seguida, clique aqui no
editor Abrir plano
completo e você
voltará aqui na visualização normal
aqui na janela Se você clicar aqui nos Componentes,
clique na malha. E, à direita,
você pode ver que é possível adicionar um ativo de malha esquelética Agora você pode
clicar aqui
e selecionar
o personagem. O que você pode fazer
é selecionar a pasta que
você importou. E você também pode clicar e arrastar o personagem para esse
componente de malha aqui. Você pode
selecioná-lo aqui ou simplesmente clicar e
arrastá-lo até aqui. Por exemplo, vou
usar este, o terrorista masculino,
e vou
clicar e arrastá-lo até aqui e atribuí-lo. Como você pode ver, eu vou fazer
a mesma coisa com
o terrorista. Clique duas vezes nele. Abra o editor
de plantas
completo aqui.
Clique na malha. Vá para a janela de exibição, só para que eu possa ver o que
estou fazendo aqui Clique aqui e vende. Selecione a fêmea.
Isso depende de você, realmente não
importa
o que você escolher, mas eu vou
selecionar este, o personagem masculino
antiterrorista. Agora você pode ver que
os personagens deveriam
estar voltados para esse lado, onde a seta azul está aparecendo. Eles estão voltados para o lado errado. Agora, novamente, falei sobre as aulas de
plantas para pais e filhos Em vez de girá-los aqui
e aqui, você pode fazer tudo de uma vez
dentro da base de jogadores Se eu abrir a base de jogadores
e ir para a parte de visualização, clico na malha. Clique em E no teclado
para ver a ferramenta de rotação, e então eu realmente
tenho esse encaixe Eu coloquei esse encaixe e
girei 90 graus -90 graus Isso fará com que eles
avancem dessa maneira. Se eu clicar em Compilar e
clicar em cada um deles, você verá que os dois
estão girados É por isso que é bom ter
a perda de um dos pais. Assim, você pode alterar uma configuração e ela se aplicará
a todas elas. Agora,
o que temos que fazer também fazer com que o pé
desses personagens fique no
fundo da cápsula. Nós realmente não podemos fazer
isso dentro daqui. Temos que fazer isso por cada um
deles. Você pode fazer isso. Vamos realmente tentar.
Vamos apenas fazer isso. Vamos clicar na malha. E clique na malha
esquelética aqui. Basta atribuir qualquer
caractere aleatório aqui. Na verdade, não
vamos nos preocupar com o personagem porque também
vamos removê-lo. Então clique nesse personagem. A melhor maneira de fazer isso é acessar
a visão em perspectiva aqui. E clique em, Vamos começar com a
vista frontal, por exemplo. Você pode ampliar e arrastar
esse personagem para baixo. Assim, você pode ver que a cápsula não está realmente
preenchendo todo esse personagem. Então, o que eu vou fazer é
clicar na cápsula. E a metade da altura da cápsula, vou
aumentá-la um pouco, algo como 93 ou
algo parecido. Clique no personagem.
Na verdade, vou mudar para
a visão correta. Acho que é muito mais fácil
ver e simplesmente arrastar
esse personagem. Então, o pé aqui
está na parte inferior. Você pode imaginar que este é o
chão. O chão está aqui. Quando chegar a esse ponto, vou arrastá-lo para baixo. Então, o pé está no
chão desse jeito. Não precisa
ser 100% preciso. Você sempre pode ajustá-lo mais tarde. Mas isso é só
um bom começo agora. Realmente não precisa
preencher tudo isso. Cápsula de colisão. Este componente da cápsula
geralmente é usado para uma colisão. Por exemplo, em dois
jogos D, três jogos D, se você quiser bater no jogador, ele será atingido
por esse componente da cápsula. No entanto, em nosso jogo de tiro em
primeira pessoa multijogador, vamos criar um sistema de colisão mais avançado para braços e pernas e assim por diante Porque você pode
ver neste jogo, se temos essa cápsula como colisão, quando
você atinge o jogador Você pode realmente acertar o jogador se a bala for disparada aqui E isso
realmente não faz sentido. Então, vamos criar um sistema de
detecção de acertos mais avançado. Para que o jogador
só seja atingido se for realmente atingido no
braço e não aqui fora. Este realmente não
importa muito por enquanto. Não precisa
ser totalmente preciso, mas eu gostaria, aqui,
na visão
certa, de fazer com que caia
no chão da melhor maneira
possível . Se você for para a vista frontal, tente reduzir um pouco
a cápsula. É sobre o corpo dele, sem
mais nem menos. Ok, vamos clicar
em Compilar agora. Vamos ao
Contraterrorista. Veja o que parece. Se
eu for para a vista certa. Vista frontal, dê uma
olhada. Parece bom. Se eu for para a compilação
terrorista, basta dar uma olhada
na perspectiva Tenha a visão correta. Basta dar uma olhada no contraterrorista. Este também parece bom. Você pode ver que
criamos tudo aqui
dentro da base de jogadores, e agora eles são aplicados a
todos os futuros personagens
que criarmos. Agora, digamos que você queira criar outro personagem
no futuro. O que você precisa fazer
é clicar com o botão direito aqui e criar uma nova turma de plantas
infantis Digamos, por
exemplo, que o chamamos EP e há um
terrorista chamado Phoenix. Você
pode inserir um novo personagem aqui
e clicar nesse cara nessa malha e depois mudá-lo para
aquele personagem Phoenix. Por exemplo, essa
personagem feminina poderia ser Phoenix. E você pode ver como
é fácil criar novos personagens. Todas as configurações são aplicadas. Digamos que, para esse personagem, haja algumas configurações
que precisam ser alteradas. Então você pode simplesmente entrar nesse personagem e
ajustá-lo. Você pode ajustar perfeitamente essas classes de
plantas para crianças perfeitamente essas classes de
plantas Você não precisa confiar apenas nas configurações da
base de jogadores. Você pode ajustar cada um
deles se quiser. No entanto, você pode ver que é muito bom que já
tenhamos as configurações básicas As configurações
padrão já foram
fornecidas e isso facilita nosso trabalho. Agora vamos fechar tudo. Vou deletar esse. Isso foi só para mostrar que vou voltar
para a base de jogadores que precisamos adicionar uma câmera também, porque agora o
personagem está lá. No entanto, não temos uma câmera para o jogador olhar. Vamos clicar
na malha aqui, ir para D. Em seguida, vamos
adicionar algo
chamado primavera. O braço é apenas um suporte
para a câmera. Clicando na mola, vá para D e depois procure a câmera. Em seguida, você pode selecionar essa câmera. Agora você pode ver
que temos um braço de mola, e dentro do braço de
mola está uma câmera. Agora, clicando na mola, vou clicar no meu
teclado para acessar a ferramenta de rotação
e, em seguida, vou girar a câmera para que fique
atrás do personagem Por enquanto. Eu só
vou arrastá-lo para cima. Algo como, isso realmente não
importa por enquanto. Vamos ajustar
a câmera mais tarde. Mas, por enquanto, eu só quero ver meu personagem quando
estou dentro do jogo. O que você pode fazer
é vê-lo aqui, por exemplo. Agora você pode ver que na verdade se
aplica a ambos, terris e ao
antiterrorista , porque
são crianças Você pode ver que ambos
têm um braço de mola agora, tanto o terrorista quanto o
contra-terista Mas o que você pode fazer é clicar e arrastar o terraço do
balcão, por exemplo, até o nível. Se você clicar no personagem, você pode ver que você
tem uma visão aqui. E isso é porque você
acabou de adicionar uma câmera. Você pode ver a aparência desse personagem por trás. O que eu costumo fazer, na verdade,
aqui na base de jogadores, vou clicar
no braço de mola. E vou
definir o comprimento do braço para algo como 600, então fica um pouco
longe do personagem. E então eu vou clicar
no personagem, e você pode ver
que é assim que ele se parece. Eu gostaria de desenvolver meu jogo de tiro em
primeira pessoa dessa forma primeiro e depois
. É muito fácil. A diferença entre
um jogo de tiro em terceira pessoa e em primeira pessoa é
que você pode clicar no braço
da mola e definir o
comprimento do braço alvo como zero E então você está realmente vendo este jogo como um modo em
primeira pessoa. Mas, por enquanto, já que estamos
fazendo o movimento do jogador, eu gostaria de começar com um comprimento de braço alvo de
600, porque assim poderemos ver todo o movimento
que
estamos fazendo e ver se estamos
fazendo as coisas corretamente. Era isso para
sentar do jogador. Lembre-se de compilar e
salvar todo o seu trabalho. E vamos
para a próxima lição.
15. Modo de jogo e controlador de jogador 3.04: Cada jogo que você cria. Não importa qual seja o jogo, você sempre tem um modo de jogo
e um controlador de jogador. Vamos clicar na pasta
Blueprint. Antes de fazer qualquer coisa, vamos criar uma nova
pasta dentro daqui, e vamos chamá-la de Player. Vou pegar tudo isso
aqui e adicioná-lo para dentro, movê-lo para dentro
da pasta Player. Então, estamos um pouco mais organizados aqui na pasta
do blueprint Vamos clicar com o botão direito do mouse e criar
uma nova classe de blueprint. Vamos selecionar um controlador
Player. Um controlador de jogador,
o que geralmente
fazemos aqui é criar a interface do usuário e, em seguida, também gerar
coisas aqui Por exemplo, se o jogador
solta uma arma no mundo
, geramos essa
arma no mundo,
gerando coisas dentro do Player Controller
e também a interface
do usuário dentro
do Vamos clicar e
criar um controlador de jogador. E eu geralmente dou a eles um prefixo EC para controle
do jogador, então eu o chamo de
nome do jogo O jogo é Counterstrike, vou
chamá-lo de Under Strike clicar com o botão direito
novamente. Vá para a classe Blueprint e crie um modo de jogo. E geralmente para que serve o modo de
jogo, ele cria as regras e
a pontuação dos jogos Por exemplo, quantos segundos por rodada e qual é
o modo de jogo, por exemplo, capture
a bandeira e assim por diante. Então vá em frente e
crie o modo de jogo, e vamos chamá-lo de
GM para o modo de jogo E, novamente, vou chamá-lo do nome do jogo
Hound, A Strike Então, o que eu quero que você faça é clicar
duas vezes neste modo de jogo. E precisamos de algumas
configurações iniciais aqui. No modo de jogo,
você pode ver que temos nos padrões de classe padrão, temos a classe Player
Controller Este é apenas o controlador de player padrão do Unreal
Engine. Queremos clicar nela,
alterá-la para nossa própria lei de controle de
jogadores personalizada que acabamos de criar. A mesma coisa para
a classe padrão. Mais tarde, não
teremos ninguém, selecionaremos nenhum. No entanto, não temos realmente uma
tela de seleção de personagens no momento. O que eu quero fazer
é aparecer como,
por exemplo, terrorista
ou contraterrorista Vou apenas selecionar o
antiterrorista. Posteriormente, vamos
removê-lo porque teremos uma tela de seleção de personagens e você poderá selecionar como deseja gerar Mas, por enquanto, vamos aparecer como
contraterroristas porque não
temos uma tela de
seleção de personagens Agora vamos fechá-lo. Vamos para Editar e Configurações
do projeto. Dentro daqui, temos
os mapas e modos. Nos mapas e modos, você precisa
mudar o modo de jogo. No momento, ele está configurado para
a base do modo de jogo, que é apenas o
modo de jogo básico do Unreal Engine No entanto, quero mudá-lo
para nosso próprio modo de jogo personalizado. E clicando nesta pequena seta para o modo de jogo selecionado, apenas certifique-se de que a cláusula de pontos
padrão seja o antiterrorista que
selecionamos e o controle do jogador também
seja nosso Agora, se você quiser,
percebeu que se fechar e
abrir o motor, ele o colocará nesse mapa padrão de mundo
aberto. Você também pode alterar isso dentro
dos mapas e modos. Os editores iniciam o mapa, posso alterá-lo para este mapa, esse mapa que criamos também para o mapa padrão do jogo, também
podemos alterá-lo para
este Ok, vamos fechar isso. Como última coisa, vá em frente e clique nas Configurações
do mundo. Agora, se você não conseguir ver a guia, clique em Janela
e
clique em Configurações mundiais e poderá vê-la. Então vá em frente e clique
em Configurações do mundo
e, na substituição do modo de
jogo, clique nesta e selecione
nosso modo de jogo como este É muito importante
que você faça tudo
isso , caso contrário, você não poderá gerar o jogador
dentro do mundo Agora, se eu excluir esse player, é apenas alguém que acabei colocar na lição anterior. Precisamos que um jogador comece antes que possamos realmente
aparecer aqui Vou clicar aqui, acessar
o Básico e selecionar
um início de jogador Vou clicar em
G para ver os ícones. Vou movê-lo para
baixo desse jeito, para o mundo. Algo
parecido com isso aqui. Você pode ver aqui, se você
colocá-lo embaixo do solo, ele vai dizer tamanho ruim Apenas certifique-se de que esteja acima do solo. Algo parecido com isso. Agora você pode clicar em jogar, e isso deve gerar
seu personagem Se ele não aparecer,
assista a este vídeo novamente. Verifique se o modo de jogo
está dentro do mundo, configuração está dentro das configurações do
projeto e assim por diante. Mas agora você pode ver que estamos surgindo como personagem
e clicamos em Jogar E está realmente parecendo
legal. Aqui é Lumen. Você pode ver as luzes do lúmen,
na verdade, um lobo as tirando
da superfície Ok, agora
adicionamos o modo de jogo e
o controle do jogador. E vamos seguir em frente e fazer o contexto de mapeamento de entrada e adicionar movimento para o jogador.
16. Contexto de mapeamento de entrada 3.05: Vamos começar com o contexto de mapeamento de entrada onde podemos adicionar o movimento do
jogador. Vamos entrar na pasta
do player. Dentro daqui,
vou clicar com o botão direito do mouse e criar uma nova
pasta chamada Input. Acabei de digitar incorretamente essa entrada exatamente como está aqui dentro Vamos abri-lo, clicar com o botão direito do mouse, ir para Entrada e criar esse chamado contexto
de mapeamento de entrada. Normalmente eu chamo IMC
como prefixo e
vou chamá-lo de padrão Agora, antes que possamos usar isso, você pode ver que se eu abro
, está vazio. Se eu clicar neste botão mais aqui
para adicionar uma tecla ao meu movimento, por exemplo, você pode
ver que não diz nenhum e eu não consigo selecionar nada. Isso ocorre porque ele
quer uma ação de entrada. Então, aqui embaixo, clique com o botão direito do mouse, vá até a entrada e
selecione a ação de entrada. Esse é o que vamos
chamar de movimento. Agora, para este, eu
vou abri-lo. Essa ação de entrada,
a única coisa que realmente
precisamos mudar aqui é
o tipo de valor. O tipo de valor, você
pode clicar nele e ver que tem
essas opções diferentes. O que vamos fazer
é avançar e retroceder para nosso personagem
dentro do jogo Se eu colocar o personagem
dentro daqui, personagem vai se
mover para frente e para trás. Esse é um eixo. O personagem vai
se mover para a esquerda e para a direita. Esse é o segundo eixo. É por isso que vou
escolher um eixo dois D, porque estamos avançando para trás e também para a
esquerda e para a direita, que é o segundo eixo Então eu vou economizar aqui. Vamos voltar ao contexto do mapeamento
de entrada. Agora podemos clicar aqui e adicionar nossa ação de entrada
que acabamos de fazer. Ok, vamos
minimizar isso por enquanto. Em vez de aqui, você
precisa atribuir uma chave. Quero seguir em frente
com minha tecla W. O que você pode fazer é
pressionar aqui e pesquisar. E então você pode ver que
este é o teclado. Você pode selecionar o
W. Outro
método mais fácil de fazer isso se você
clicar no sinal de adição aqui. Agora eu quero
retroceder com minha tecla S. Em vez de clicar
aqui,
escrever e encontrar sua tecla S. Às vezes, pode levar algum tempo. O que você pode fazer é clicar nesse ícone
e, em seguida, clicar
no teclado que
atribuirá essa tecla. Agora, para mover para a esquerda e para a direita, vou para dois deles
aqui para a direita, vou clicar aqui e
clicar em D para a esquerda. Vou clicar aqui e
clicar em A no meu teclado. Agora eu tenho essas chaves. Também quero acrescentar se quero
adicionar o movimento do mouse. Vou criar
uma nova ação de entrada. Vou descer até
aqui, clicar com o botão direito, ir para a entrada e criar
uma nova ação de entrada. Vou chamar isso de Olha, procurando com o mouse
por este novamente, vou abrir
a ação de entrada. E vou mudar o tipo de
valor para o eixo dois D, porque vou olhar para cima
e para baixo. Esse é um eixo. E o segundo eixo
está olhando para a esquerda e para
o eixo direito dois D.
Vou clicar em Salvar. E voltando ao meu contexto
de mapeamento de entrada, agora posso clicar no
sinal de mais aqui e adicionar minha nova
ação de entrada para esta. Agora clique aqui
e procure por um mouse. E você tem esse
chamado mouse Xy2d. Agora, basta adicionar o mouse X, adicionar outro e adicionar o mouse Y. Você também pode fazer isso É a mesma coisa, mas
para deixá-lo mais limpo, vou
clicar aqui e
pesquisar o mouse e
adicionar esse mouse Xy, porque podemos fazer
isso também e ele ficará muito
mais limpo no código. Agora, o que queremos
fazer com o movimento aqui com o WK, estamos
avançando com o K, estamos retrocedendo No entanto, neste momento,
os dois estão avançando. O que precisamos fazer
para que o SK
retroceda é que, nos modificadores você precisa clicar no Então aqui embaixo você tem que
selecionar este chamado negate. Isso inverte sua entrada. Quando você clica nele, ele
se move para trás. Quando essa
negação é adicionada, Negate significa apenas que ela
faz o oposto
do que a chave Temos que fazer a
mesma coisa aqui embaixo. D está se movendo para a direita, na verdade, para a
esquerda e para a direita. O que
também temos que fazer nos modificadores clicar aqui e
selecionar o espaço mundial Temos que fazer a mesma
coisa com a esquerda. Aqui, temos que clicar
nos modificadores e selecionar o espaço mundial Agora, para a esquerda e para
a direita, o D vai para a direita e o A vai para a esquerda. Agora, para a esquerda, também
temos que adicionar esse modificador chamado Nick
Gate, assim como antes Vai ser na
direção oposta ao que o D está indo. Então, vamos continuar
e clicar em Salvar. Tudo está indo bem. E agora estamos prontos para adicionar esse
contexto de mapeamento de entrada ao nosso personagem. Porque agora
adicionamos tudo. Tudo está indo bem. Agora, se pegarmos alguma caixa
com o movimento, sempre
podemos voltar
aqui e trocá-la. Mas, por enquanto,
é isso que temos. E vamos deletar esse personagem. E vamos
para a próxima lição.
17. 3.06 Adicionando o contexto de mapeamento de entrada: Antes de podermos usar o contexto
de mapeamento de entrada e adicionar movimento
ao personagem, precisamos adicionar isso à nossa Clauss do blueprint. Vamos
seguir em frente e fazer isso. Vamos até o jogador e vamos entrar na base
de jogadores. Dentro daqui,
vamos adicionar o movimento. Quando adicionarmos o movimento aqui, ele também será aplicado
às crianças. No projeto principal,
Claus, a base de jogadores. Vamos ao gráfico de eventos. Dentro do gráfico de eventos, você pode clicar e segurar o botão direito do mouse e
fazer uma panorâmica por dentro daqui. Agora vamos
selecionar todos eles. E aperte a liderança
no teclado. E comece do começo como a primeira coisa que
vou escrever. Clique. E ao escrever um clique, você pode selecionar entre
diferentes funções e eventos. O primeiro evento que
vamos criar é chamado de Begin, Play, Play. Vá em frente e selecione o
evento, Comece, Jogue. E o que isso faz é o que deve acontecer se eu
começar a jogar? Você pode escrever código aqui Se eu arrastar deste
pino de execução e soltar. E eu escrevo print e
uso essa string de impressão. Portanto, essa é a função
simples e simples que
temos no Unreal Engine Nas plantas, isso
apenas imprimirá algum
texto na tela Agora, se eu compilar,
clico em reproduzir. Você pode ver que diz
olá aqui em cima. Se eu clicar em jogar novamente, você pode ver que diz olá. Então, isso apenas diz o que deve acontecer se eu começar a
jogar? O que queremos fazer é
adicionar o contexto de mapeamento. A maneira de fazer isso
é primeiro
obter a referência do
controlador do player. Para fazer isso, vamos escrever, clicar e pesquisar o controlador. Você pode selecionar este
chamado controlador Yet. Estamos recebendo o
controle, no entanto, este é apenas o controlador de jogador
padrão básico no Unreal Engine Temos que especificar ao
Unreal Engine que,
na verdade, estamos falando sobre esse
controle de jogador personalizado que criamos A forma como fazemos isso é
contratando a partir daqui. E podemos dizer que lançar dois, custar dois significa que
estamos tentando obter
a referência desse controle de
jogador que
posso arrastar daqui
e dizer que custa dois e então você tem que dar a ele o nome do controle do
jogador. Controlador de jogador, PC. Counterstrike é
o que chamamos de Counterstrike. Então vá em frente e selecione-o. Agora podemos acessar
tudo dentro daqui. Digamos que no controlador do
Player. Se eu, por exemplo,
adicionar uma variável, basta chamá-la de hello ou
algo parecido. Qualquer coisa aleatória, clique em compilar dentro
da base de jogadores Agora você pode ver se eu arrasto
daqui e escrevo olá, posso ver a
variável que acabei de criar. A transmissão é que você pode
acessar tudo dentro desse controlador de player agora porque você tem
uma referência a ele, isso é chamado de comunicação de
plano Porque agora você está na base de
jogadores e está se comunicando com
o controlador do jogador e pode acessar
tudo dentro daqui A única coisa
que queremos fazer aqui dentro é arrastar. E depois aprimoramos, nunca
me lembro desse
nome, é tão longo. Subsistema de
player local de entrada aprimorado. Basta escrever Enhanced
e selecioná-lo aqui. A partir desta,
vamos arrastar e dizer adicionar contexto de mapeamento. Vá em frente e adicione o contexto de
mapeamento. E lembre-se de conectar
seu código, caso contrário ele não
funcionará porque sairá do evento obterá essa referência do
Play Controller. E então ele adicionará
esse contexto de mapeamento
a esse projeto E lembre-se de que, no
contexto de mapeamento, você precisa clicar aqui e selecionar o contexto de
mapeamento que você criou. Vá em frente e clique em Compilar.
E é isso mesmo. Agora você adicionou o contexto de
mapeamento ao player e agora pode usar eventos
e criar o movimento. No entanto, na próxima lição, falaremos sobre interfaces de
blueprint Eu realmente não gosto de fazer
casting porque o casting cria referências
interessantes no motor real
quando você inicia o jogo. Por exemplo, digamos que
você tenha criado um jogo completo. Você lançou, por exemplo, 100 plantas em seu jogo Agora ele foi lançado no Steam. No entanto, para as referências mais importantes, quando um jogador abre seu jogo antes de carregar o
menu principal e tudo mais, ele carrega primeiro as referências
interessantes. Se você tiver, digamos, 100, 200 em seu jogo de elenco, isso tornará
seu jogo mais lento porque precisará carregar todas
as referências importantes. Ele precisa carregar
tudo isso primeiro. Ele pode rodar seu jogo. Não estou dizendo que você nunca
deve usar isso, porque há casos em que é ridículo não usá-lo No entanto, neste caso, o que eu geralmente gosto de fazer é criar uma interface de
blueprint E a partir disso, podemos
nos comunicar com outros projetos sem
criar referências interessantes Então, vamos fazer isso, vamos tornar
nosso jogo mais otimizado. E também estou
tentando mostrar como eu faria isso normalmente
da maneira avançada, e eu realmente não gosto de
ensinar maneiras ruins de fazer isso. Vamos tentar evitar a
fundição por enquanto e vamos
para a próxima lição onde podemos substituir essa peça.
18. Interface do Blueprint 3.07: As interfaces Blueprint são
usadas em vez de custear. Para uma comunicação de plano, geralmente
usamos interfaces de
modelo para evitar custos E como você pode ver aqui
no player que fizemos
na base de jogadores, fizemos esse cálculo de custos e, para
evitar ocultar referências que precisam ser carregadas no jogo antes do menu principal e
retardam
o jogo, criamos uma interface de esquema
para evitar Vamos continuar e criar um. E vamos ver do
que se trata. Na pasta do blueprint, vou escrever, clicar
e criar uma nova pasta E eu vou chamar isso
de interfaces ou interface. E vamos entrar nessa
pasta aqui dentro. Vamos escrever, clique, vá para Blueprint e selecione a interface
Blueprint Normalmente, para interfaces, eu costumo chamá-las de t como um prefixo No momento, você deve chamá-lo que está
tentando se referir. Estou tentando fazer referência
ao meu controlador de player. Vou chamar isso de controlador de jogo
único. Vou
entrar aqui e esta é a interface do modelo Lembre-se de que as interfaces de
blueprint geralmente
são difíceis
para iniciantes, mas tente
entendê-las e,
na verdade, é muito fácil de
entender Vamos tentar
criar um e ver o que acontece dentro de uma interface de
blueprint Você tem essa visão, você realmente não
pode fazer nada aqui
dentro. Você não pode arrastar nem fazer nada. A única coisa que você pode fazer é
aqui nas funções, criar uma função. A função que eu quero fazer agora se você clicar
em dois no teclado, poderá alterar o nome dela. Eu só quero chamá-lo de get
player controller ref. Estou tentando, com essa função, tentar obter a referência dos
controladores do player Então eu posso evitar esse elenco
aqui . Vou clicar nessa função que acabei de criar. Vou criar
uma saída aqui. Nas saídas, vou
selecionar a classe de blueprint à qual
estou tentando fazer referência Agora estou tentando fazer referência ao contra-ataque do
meu
PC do Player Controller É assim que a chamamos. E selecione a referência do objeto. Selecione aqui nas variáveis
que você precisa para selecionar
a classe de blueprint à qual você está
tentando se referir Vou chamar isso de
um Player Controller. E agora essa função está
concluída. Muito simples. Lembre-se de pressionar
e compilar aqui. Muito importante e
vá em frente e economize. Agora temos essa função
simples. Agora, o que podemos fazer com isso
é abrir o controlador. Se eu acessar as
plantas e abrir o controlador do player aqui
dentro, vamos abrir o editor de plantas
completo
e, em seguida,
selecionar Configurações de classe Nas Configurações de classe aqui embaixo, agora
você pode adicionar a interface do
blueprint Vamos clicar aqui e
pesquisar por T. Aqui está, a interface que acabamos de criar.
Vá em frente e selecione-o. Ao selecionar a interface do
blueprint, você pode notar que, aqui à esquerda, você vê essa guia Agora, essa é uma nova guia que acabou de aparecer chamada interfaces. Dentro daqui, você pode
ver a função que acabamos criar dentro dessa interface de
blueprint Agora ele apareceu quando você
adiciona a interface do blueprint. Se você clicar duas vezes nessa função e
entrar nela, agora poderá definir
essa variável aqui. Criamos essa variável
de controle do jogador, mas no momento ela está vazia. O que precisamos fazer,
precisamos nos afastar disso. E então escrevemos nós mesmos. O que isso significa?
Deixe-me realmente fazer isso de novo. Talvez tenha sido muito rápido.
Dragão daqui. E escrevendo self e
, em seguida, selecione este, obtenha uma referência para si mesmo. O que isso significa é que,
na verdade, deixe-me voltar aqui. Criamos a
interface do blueprint aqui e criamos essa função dentro dela aqui para as variáveis que
selecionamos, a variável à qual queríamos
fazer referência Agora, dentro do controle do
jogador, quando adicionamos a interface
, as configurações de classe apareceram aqui. A
função aqui dentro para essa variável
que estamos escrevendo self. O que isso significa é que
estamos apenas dizendo ao motor
o que é essa variável do
controlador do jogador. Porque se eu segurar o controle e clicar aqui e
desconectá-lo, o motor nunca saberá
o que é essa variável Se ficar
assim, está vazio, a variável está vazia e você
terá era em seu jogo. Mas se fizermos uma autorreferência, isso significa
que essa variável é eu. Lembre-se de que estamos dentro
do Player Controller. Basicamente, estamos definindo essa variável
do controlador Player. Estamos dizendo ao motor que é neste Player Controller que eu estou agora. É eu mesmo. Autorreferência significa em que Eva, classe de
projeto, estou
dentro agora, que é o controlador Player Então, acabamos de definir isso aqui. Vá em frente, compile e
salve o que podemos fazer agora. Agora terminamos com isso. Agora podemos ir até o player e vamos excluir isso. O que podemos fazer agora
é arrastar
do controlador e depois escrever a função
que a chamamos. Aqui está o nome disso. Obtenha a referência
do controlador do player, posso arrastar daqui e dizer obter camada. E então você pode
ver que aparece aqui na interface de diagrama
que criamos, que diz get player
controller reference Esta é a função que
acabamos de criar quando diz
mensagem no final Isso significa que vem de
uma interface de blueprint Então vá em frente e selecione-o. Esse ícone aqui
significa apenas que vem de uma interface de projeto.
E agora nós o temos. Agora evitamos o casting, evitamos as referências concretas e nosso jogo também está mais otimizado em termos de
desempenho. Agora você pode simplesmente ir
em frente e conectá-lo. Agora ele sabe que esse controlador de
jogador ao qual
estamos nos referindo é nosso controlador de
jogador de Counterstrike
para PC Como toda essa variável no PC Counterstrike
nós mesmos escrevemos, agora
ela sabe do que
estamos falando aqui Isso pode ser um pouco confuso
para começar se você nunca usou
interfaces de blueprint antes, mas é muito útil para evitar a conversão. Acabamos de criar a interface do
blueprint. Em seguida, selecionamos a classe de blueprint à
qual queremos fazer referência Então, dentro da classe de
blueprint qual
estamos tentando fazer referência, adicionamos essa
interface de blueprint e essa apareceu Então, dentro daqui,
fizemos uma autorreferência. E a partir daí, agora
podemos usá-lo aqui, onde podemos dizer
obter o controle e , em seguida, obter a referência do
controlador do player,
assim mesmo, e
evitar custos Tudo bem, então foi isso
para a interface do blueprint. Teremos mais
exemplos no futuro. Se isso foi um pouco difícil, dê uma olhada no meu servidor
Discord ou dê uma olhada no Pixel
Helmet.com. Estou muito,
muito feliz em ajudá-lo em 2047 Então, vamos
clicar em Arquivo Salvar tudo. E vamos continuar
com a próxima lição.
19. Movimento do jogador 3.08: Agora que adicionamos o contexto
de mapeamento de entrada
ao player, agora
podemos fazer o movimento. Temos que escrever o nome
das ações de entrada
que criamos. O primeiro que eu
criei foi chamado de movimento
IA. Vamos
começar com esse. O que você pode fazer agora aqui
no player é escrever, clicar e escrever o movimento IA, o nome da ação de entrada. E então você pode clicar
nesse evento para criá-lo. Lembre-se de que esse símbolo significa que isso é um evento. Então vá
em frente e crie-o. Agora temos esse evento e
parece um pouco complexo,
mas não realmente. Ele apenas diz para você quando o evento é acionado,
iniciado, em andamento,
cancelado e concluído Não há nada muito complexo aqui. Agora, quando esse evento é acionado? O
evento é acionado. Se você acessar o contexto de
mapeamento de entrada, lembre-se de que adicionamos botões
para nosso movimento. Se eu clicar em W, esse
movimento será acionado. Agora vamos ver se
isso realmente funciona. Porque se você
não adicionou esse código, isso não disparará a string de impressão
correta e eu apenas imprimo uma
mensagem simples na tela. Se eu clicar em, por exemplo,
posso clicar em jogar. E se eu clicar em, você pode ver que está realmente
imprimindo na tela. Agora, se eu tivesse
desconectado isso e não adicionado meu contexto de
mapeamento de entrada, clicasse em Play
e clicasse em, você verá que nada está sendo impresso na tela e
não está funcionando Lembre-se de adicionar
isso ao seu código. Tudo bem, agora que isso está funcionando, vamos fazer alguns movimentos. Para o movimento do jogador, usamos uma função chamada Entrada de
movimento do anúncio, clicamos com o botão direito e escrevemos uma entrada de movimento É
assim que você adiciona
movimento a um personagem Vamos conectá-lo agora. Agora,
o que ele está perguntando para você é em
que direção você
quer mover o personagem? Agora vamos fazer o primeiro. Avance e retroceda. O que você pode fazer é simplesmente clicar com
o botão direito do mouse e com o botão direito. No entanto, no vetor direto, esse é o vetor direto e podemos conectá-lo aqui
à direção mundial. Agora, como podemos retroceder? Na verdade, não
precisamos de mais nada. É a única coisa que precisamos. Como é isso, como ele
sabe quando andamos
para frente e para trás Isso ocorre por causa
desse valor de escala. O valor da escala é um, ele
vai avançar. Você pode ver aqui,
se eu clicar em jogar e clicar nele, ele avança. Se eu clicar agora, ele também avança porque esse
valor de escala está definido como um. Se eu definir para menos
um e clicar em Jogar aqui e
clicar em, ou você pode ver agora que
ele se move para trás Quando isso é um,
ele se move para frente
e, quando é menos
um, ele se move para trás Esse é o valor da ação aqui. Podemos clicar com o botão direito do mouse
e dividir o pino da estrutura. Ou você pode pegar isso e quebrar o vetor dois D. Isso é
na verdade a mesma coisa. Vou clicar com o botão direito do mouse
e dizer estrutura dividida. Agora, para esse x, você pode
adicioná-lo aqui ao valor da escala. Em vez disso, ao
clicar em, você avança. Quando você clica em, você se move para trás porque
será menos Lembre-se de que, no contexto do
mapeamento de entrada, você escreveu o modificador
aqui para que, ao pressionar para trás, você escreveu ou selecionou Negate, que apenas inverte O que significa que
será menos um quando você clicar no botão OK. Esse é o movimento para frente
e para trás. Isso agora está concluído para a esquerda e para a direita,
muito, muito simples. Você pode copiá-lo,
colá-lo e conectá-lo aqui. Então, para a direção da palavra, você pode escrever um vetor correto E você pode conectá-lo agora. E agora você pode conectá-lo para o y no valor da escala. Agora lembre-se de
organizar seu código. Você pode clicar duas vezes aqui
para criar um nó de redirecionamento. Apenas tente se manter organizado. Clique duas vezes neste também. Tente se manter organizado. Assim mesmo. É sempre
bom se manter organizado porque você pode
imaginar que seu código será muito grande mais tarde. Você também pode selecionar
tudo e clicar em C no teclado
para criar um comentário. Por exemplo, você pode escrever o movimento
WASD e assim por diante. Por enquanto, eu não vou fazer isso, vou fazer isso um pouco mais tarde. Sim, esse foi o movimento. Agora você pode compilar
e clicar em reproduzir. Mas em vez de jogar
dentro da janela de visualização, acho que é mais fácil para
você ver isso se eu jogar no editor
em uma nova janela do editor, clicando aqui, na
nova janela do editor, e ela
aparecerá assim Agora eu posso jogar agora,
deixe-me torná-lo um pouco maior. Clique em reproduzir, tornando-o maior. Você pode ver agora, quando eu
clico em, eu avanço. Conforme eu me movo para trás, se eu clicar em D, vou
para a direita E se eu clicar em,
vou para a esquerda. Agora eu posso mover meu personagem
com meu teclado. Muito, muito bom. No entanto, no momento, ainda
não podemos mover o mouse. Precisamos adicionar o
código para isso também. Você pode clicar com o botão direito aqui novamente. Chamamos isso de AI
look Input action. Precisamos usar esse evento. Agora você pode clicar com o botão direito do mouse
e escrever uma olhada. E então podemos
selecionar esse evento. Agora, para olhar, temos que usar algo chamado adicionar sua entrada, isso é olhar para a esquerda e para a direita. E então temos o segundo
, chamado de entradas de tom,
este aqui, está se movendo
ou olhando para cima e para baixo. Muito simples novamente,
clique com o botão direito aqui, divida
o pino atingido. Vá em frente e conecte o
x aqui e o Y aqui. E foi isso, de uma forma muito simples, para olhar para cima e para baixo
e para a esquerda e para a direita
com o mouse. Vamos compilar e
clicar em reproduzir. E eu vou mover meu mouse. Você pode ver que eu posso
movê-lo para a direita e para a esquerda. Não consigo movê-lo para cima e para baixo. Na verdade, isso está
no braço da mola. Se eu clicar no braço da mola, tenho que usar este chamado
uso na rotação do controle. Agora eu posso clicar em Jogar. E agora você pode ver que eu posso me mover para cima e para baixo, para a
esquerda e para a direita. No entanto, quando eu me
movo para cima e para baixo, na
verdade está invertido
em comparação com o que estou acostumado Não estou acostumado a subir e
descer até o mouse desse jeito. Estou acostumado a
ter o oposto. Vamos para o contexto
de
mapeamento de entrada aqui no mouse Xy aqui. Para o modificador,
vou adicionar um novo modificador e negar com o botão direito Quero inverter meu movimento
Y com o mouse clicando
na pequena seta o mouse clicando
na Para a negação, eu
vou remover o X e Z. Eu não quero
inverter o X e Z, eu só quero inverter o Y. Então, novamente, eu vou clicar em play E agora, quando eu me movo para cima e
para baixo, está realmente correto. Então, agora, quando eu me movo para cima e para
baixo, está correto para mim. E quando eu olho para a esquerda e para a direita também está
correto. Tudo bem. Então esse foi o movimento. E, novamente, se algo estiver na direção oposta à que
você está tentando se mover, você sempre pode sair
daqui usando a negativa e tentar
inverter o E quando tudo está correto, esse foi o movimento muito, muito simples para nosso personagem. Agora podemos nos mover e
olhar com o mouse. No entanto, estamos
perdendo a animação. E vamos trabalhar com
isso na próxima lição. Então vá em frente e salve
tudo, e vamos seguir em frente.
20. 3.09 Importando as animações do player: Agora que terminamos
a movimentação do jogador, agora
estamos prontos para adicionar algumas
animações neste site Eu incluí para você
alguns materiais do curso. Vá em frente e baixe os materiais do
tribunal e você
provavelmente obterá esta pasta de
materiais do curso como uma pasta Sip Apenas certifique-se de extrair o conteúdo da pasta Sip. Agora, o que podemos fazer aqui é entrar na pasta Counter
Strike Animations Este é um projeto da Unreal
Engine. Eu adicionei todas as animações que você
precisa usar no jogo Se você simplesmente seguir em frente e
abrir este projeto, quando tiver aberto
este projeto, isso é o que você verá. Você tem essa pasta de animações. Aqui estão todas as animações que
você precisa para criar o jogo Você tem algum deslocamento de animação ao apontar
a arma e assim por diante Para isso, clique com o botão direito do na pasta de animações e
selecione migrar A propósito. Outra dica aqui. Se você clicar com o botão direito do mouse em um
arquivo em vez de em uma pasta, a migração estará em Ações de
ativos
e, em seguida, estará aqui migrar Isso ocorre se você quiser
migrar apenas um arquivo, mas quisermos migrar
a pasta inteira Clique com o botão direito e migre. E clique em OK, aqui novamente, vamos
migrá-lo para nossa pasta de conteúdo Se você for ao
Shooter de multiplicação, esta é minha pasta. Está dentro dos contras, ataque o projeto e depois o
conteúdo está dentro do conteúdo. Aqui, novamente, selecione apenas
a pasta de conteúdo, selecione qualquer
outra pasta, caso contrário, ela não funcionará. Basta ir em frente e selecionar
a pasta de conteúdo. Selecione a pasta e ela
extrairá todas
as animações ou passará
para o nosso próprio projeto Agora que
terminamos a migração, vamos voltar ao
nosso próprio projeto Dentro daqui, você pode ver que agora temos o projeto de animações e temos todas
essas animações que migramos Agora vamos
transferir todas essas animações para
nosso próprio personagem E depois podemos excluir essas duas pastas
que importamos. Além disso, para essas duas pastas, vou
clicar e arrastá-las para o mercado apenas para
deixá-las um pouco mais limpas. Às vezes, quando você arrasta
pastas de uma para outra e pode ver no
mercado, elas agora estão aqui. No entanto, eles
ainda estão aqui, e são apenas pastas vazias. Não foi excluído.
O que você pode fazer é selecioná-los, pressionar delete no teclado e ver que são redirecionadores de
objetos Você pode simplesmente ignorar isso
e excluí-lo. Agora você pode ver que ele
ainda não foi excluído. Isso acontece às vezes
no Unreal Engine. Você pode clicar com
o botão direito do mouse na pasta de conteúdo e clicar em Corrigir redirecionadores e
tentar excluir novamente. Se não for excluído, geralmente eu simplesmente
fecho o projeto. E então eu entro no
meu próprio projeto aqui e na pasta de conteúdo e simplesmente
os excluo daqui. Apenas certifique-se de
transferi-los para a
pasta do Marketplace, como você pode ver aqui. Vou apenas excluir essas pastas vazias
da pasta de conteúdo
e, em seguida, vou
abrir minha própria pasta. Novamente, isso acontece
às vezes no Unreal Engine. Ok, então aqui estamos novamente
dentro do projeto, e agora que
importamos nossas animações, vamos
transferi-las para nosso próprio personagem E então vamos remover essas duas pastas mais tarde, mas vamos
para a próxima lição.
21. 3.10 Criando rigs IK: Antes de podermos copiar as animações para
nosso próprio personagem, precisamos criar
algo chamado de equipamento K. Vamos ver as plantas. E vamos para a
pasta do player, aqui vou clicar com o botão
direito do mouse e criar uma nova
pasta chamada Animações E então, dentro dessa pasta, podemos acessar as animações. Aqui, aqui embaixo,
vemos algo chamado K. Então temos que selecionar isso no amarelo
chamado Krig Eu costumo ligar para eles, vamos
chamar esse de um manequim. Mannequin é o nome do
outro personagem do qual
vamos copiar as animações
do K Agora você pode
clicar duas vezes e entrar aqui. E o que você pode fazer
aqui agora é
selecionar uma malha esquelética
que deseja usar Vou usar esse manequim aqui do qual precisamos
copiar os itens Você pode ir em frente e
selecionar este. Você pode ver que é chamado na
pasta de referências 01. Se você puder ver essas informações lá
embaixo no link, vá em frente e clique nelas. Agora, este é o Manikin, vamos criar uma plataforma
IK de forma muito simples Aqui, na interface da
plataforma IK, você tem todas as
animações, como você pode ver aqui no navegador de
ativos Se você puder clicar duas vezes neles, poderá ver as
animações aqui na retargeting
do IK Aqui você tem que
especificar os ossos
desse personagem e
, em seguida, também temos que especificar os ossos do
nosso outro personagem. E então, dessa forma,
podemos realmente copiar animações desse
personagem para o outro Porque
definimos os ossos e o Honoral Engine sabe como copiar
as animações Agora vou clicar
em reiniciar apenas para
fazê-los ficar parados. Aqui no Reino Unido estão mirando. O que você precisa fazer é criar uma nova cadeia. A primeira cadeia que vamos visitar, vamos chamá-la apenas cabeça. Vá em frente e chame isso de cabeça. No momento, não precisamos
selecionar nada, apenas encadear. Exatamente desse jeito. Ok, agora
temos um chamado cabeça. Vamos continuar adicionando
os outros. Vou bater em uma corrente novamente. E essa vai
se chamar esquerda,
esquerda, e então vá em frente e crie uma nova chamada direita. Em seguida, crie um novo, com a perna esquerda. Crie uma nova
chamada perna, certo? Então, podemos criar
uma nova chamada coluna vertebral e
uma última chamada raízes. Ok, então essas são todas as
cadeias que precisamos criar. Cabeça, esquerda, perna direita, perna
esquerda, coluna direita e raiz. Agora você precisa especificar onde a cabeça começa
e onde termina, o osso inicial e o osso final. O que você pode fazer
aqui, e de uma maneira
muito, muito fácil, agora
eu sei que se chama. Se você pesquisar aqui por pescoço, poderá selecioná-lo aqui
e ele terminará na cabeça. Agora eu sei disso porque
já fiz isso 100 vezes. No entanto, se você é
novo aqui ou tem um novo personagem com ossos
diferentes,
porque lembre-se, se você tem um artista fazendo isso para você normalmente em
um software de três D, pode chamá-lo do
que quiser Você tem
que saber como se chama. Esses são apenas os
nomes dos ossos que geralmente aparecem em motores reais. Eu sei como eles são chamados. O que você pode fazer aqui
para ver seus nomes sem realmente saber como são chamados. Aqui você pode clicar em
Mostrar realmente o personagem aqui. Clique em Personagem, vá até Bones e selecione toda a Hierarquia Isso faz com que você possa ver todos
os ossos desse personagem. O que você pode fazer aqui,
você pode clicar aqui embaixo. Agora você pode ver que se
chama Neck 01. Minha cabeça começa no pescoço 01. Se eu clicar aqui, esse
se chama cabeça. O osso final é a cabeça. Agora
vamos fazer isso com o braço esquerdo. Agora, esse é o braço esquerdo aqui. Se estivermos assim,
esse é o braço esquerdo. Se você puder clicar
no braço esquerdo, ele começa na clévica,
à esquerda, o osso inicial é Levical, à esquerda, a extremidade Não é realmente o fim
aqui nos dedos, mas onde a mão começa, se você clicar aqui, diz mão esquerda. A espinha dorsal aqui. Vamos selecionar o
que sobrou, sem mais nem menos. Tinha saído como o fim. Agora, para a direita,
é a mesma coisa. É só Levi Coal, certo? E então vire a mão direita
para a perna novamente, você pode experimentá-lo como um exercício, você pode clicar nele em algum lugar aqui em
cima. Essa é a coxa Começa aqui na coxa, procurando o que
vou copiar Coxa esquerda, e eu vou
colá-la aqui na perna direita para deixá-la
na
coxa esquerda. Coxa direita. A perna termina aqui embaixo. Se você clicar nele, ele termina com o pé de seleção esquerdo
e aqui embaixo, pé direito. Agora, a última, coluna vertebral,
é muito fácil. É a coluna média aqui. Começa na coluna um
e termina na coluna três. Essa é fácil. Procurando pela coluna vertebral, você
pode ver que ela começa coluna um e termina
na coluna três. A raiz é chamada apenas de raiz. Você pode pesquisar raízes, basta chamá-la de raiz aqui
também. Raiz, raiz. É a mesma coisa,
é só o osso aqui em cima, o osso da raiz aqui embaixo. Agora terminamos de
redirecionar esse personagem. E o que você pode fazer é clicar com o botão
direito na pélvis
aqui. Muito importante Agora clique com o botão direito na pélvis
e selecione definir raiz alvo. Isso estabilizará
esse personagem. E vá em frente e clique em Seguro. Ok, agora que
terminamos com este, o que podemos fazer agora é ir para a pasta de
animações Encontre o IK Ric que você acabou de fazer. Você pode clicar com o botão direito do mouse e, em seguida , duplicar isso Deixe-me chamar isso de jogador K.
Esse é o jogador. Agora, em vez de fazer
qualquer coisa aqui, o que você pode fazer é
simplesmente selecionar o jogador. Agora, por exemplo, você pode selecionar
esse undaterroristk masculino. Você não precisa fazer isso de novo. Você pode ver que já está lá. Tudo está bem.
Está tudo bem. Ela já está definida como rota de redirecionamento porque
fizemos para a outra Podemos fechar essa, mas agora temos
essas duas plataformas IK Com isso concluído,
vamos passar para a próxima lição e
criar
o IK retargeta
22. 3.11 Criando um Retargeter IK: Vamos agora
criar o IK Targeta. Vamos dar uma olhada
aqui, duas animações. Em seguida, selecione o K C novamente. E selecione o segundo
chamado IK Targeta. Porque agora estamos prontos para copiar as animações de um
personagem para outro, criando o retargeting K. Vou chamá-lo de IKR. Vamos chamá-lo de
player por enquanto, IKR. Vamos abri-lo. Agora, ele
perguntará de qual IK Rick você deseja copiar
as animações Quero copiar animações do meu manequim em que
temos E eu quero copiar animações para o meu player desse jeito Ele adicionará esses dois caracteres
para você automaticamente. Agora eles estão sobrepostos
aqui na malha alvo. Deslize o x aqui. Vou clicar
e arrastar e simplesmente mover esse personagem
para fora do caminho, algo como 175
aqui no eixo x. Então eu posso ver os dois. Agora, dentro da
tageta IK, você pode ver, agora
eu posso ver todas
as animações
aqui na cadeia ou
no navegador definido No mapeamento da cadeia,
você pode ver as cadeias que criamos
para que funcionem corretamente. E geralmente faz isso
corretamente de forma automática, apenas certificando-se de
que a raiz da cadeia alvo,
que é essa, seja a mesma, pois a
raiz de origem
está emparelhada com a raiz, coluna está emparelhada
com a coluna, e assim por diante. Apenas certifique-se de que a
perna direita, por exemplo, não
esteja emparelhada com a coluna.
Isso será errado. Eles precisam ser emparelhados com o mesmo osso ou corrente
que criamos. Normalmente, o Unreal Engine faz
isso automaticamente e corretamente. Vamos para
o Acid Browser agora, essas são as animações. Se você clicar em uma delas, por exemplo, vamos selecionar
essa caminhada, certo? Você pode ver que está quase correto. Na verdade, vou remover esses ossos para que possamos
vê-los mais corretamente. Se eu clicar em
Character Bones e selecionar somente agora
, está quase correto. No entanto, os braços
são muito estranhos,
caso contrário, todo o resto
parece funcionar corretamente. Podemos copiá-lo quase no entanto, precisamos
corrigir alguma coisa aqui. Vou clicar em Parar. Eu acredito. Aqui,
sim, clique em Parar. Vamos parar a animação. A razão pela qual não está
copiando corretamente é porque a posição desse personagem precisa ser a mesma
posição desse personagem. E você pode ver que o braço
não está na mesma posição. É por isso que está criando uma era com os braços. Nesta animação,
vou clicar em Pare aqui. O que podemos fazer é
selecionar um dos ossos. Novamente, clique nos
ossos do personagem, todos em hierarquia. Então eu posso ver todos os ossos, e aqui estão eles
para esses ossos. Agora, o que podemos fazer é
clicar no modo Editar. O Modo de Edição possibilita que
editemos
a pose desse personagem. Agora você pode selecionar um
dos ossos, por exemplo. Você pode simplesmente experimentá-lo, selecione este,
tente girá-lo Você pode ver que este não é
o que você deve girar. Você pode clicar no
controle Z para voltar e selecionar o próximo. O próximo aqui. Se você girar para baixo, desse jeito,
acho que algo em torno de 50 graus. Acho que 40 graus
é um pouco demais. Talvez possamos tentar
-50 graus dessa maneira. Para o outro, vou
clicar no mesmo osso e depois girá-lo em -50 graus, desse
jeito.
Assim como esse cara. Você também pode ver que esse cara tem uma rotação
no osso aqui. Eu tenho que fazer isso
aqui também. Eu tenho que clicar
aqui neste osso. Então eu posso girá-lo
talvez em 30 graus. E tente
comparar esses dois. Também clicando na outra, girando-a em 30
graus, sem mais nem Apenas tente dar uma olhada de cima e comparar
esses dois personagens. Tudo bem, acho que
eles têm a mesma aparência. Vamos testar a animação e ver se ela está realmente funcionando. Eu vou sair
do modo de edição. Vou esconder
os ossos novamente, só para ver
como fica sem os ossos. E então eu vou clicar
em uma das animações. Por exemplo, vamos
selecionar um em que ele esteja
andando ou correndo. Isso é um pouco melhor de se ver. Você pode ver que as mãos
são um problema agora, e acho que é porque
giramos os braços
demais para baixo Vamos voltar novamente
no modo de edição. Vou ver todos os ossos, depois vou
clicar nesse osso e girar o braço um pouco
para cima Provavelmente o problema é que o
rotacionamos um pouco demais para baixo. Agora
vamos dar uma olhada Vamos voltar do modo
de edição. Clique na frente aqui, deixe-me remover
o osso para
que eu possa ver como fica
experimentando outras animações Você pode ver que tudo
está funcionando corretamente. No entanto, o erro aqui
é que, no momento, as mãos não
estão
funcionando corretamente. Só para ter certeza de que
tudo está correto, vou parar as
animações e dar uma olhada nelas do
ponto de vista em perspectiva Aqui. Do ponto de vista certo. Basta dar uma olhada
nesses dois personagens, apenas para garantir que
tudo esteja correto. Também indo para a vista frontal e certificando-se de
que tudo está correto
para vê-la melhor. Aqui podemos clicar novamente
no personagem,
Bones, e depois em toda a hierarquia Assim, podemos ver todos os
ossos e aqui estão eles. Você pode ver que há
uma pequena diferença. Se você puder clicar em um
dos braços e definir o
encaixe para a rotação, vou configurá-lo para cinco
e depois ir para o modo de edição Então deixe-me
girá-lo um pouco aqui. Em seguida, vou girá-lo levemente para que quase
caiba na outra mão Algo parecido com isso aqui. Você pode clicar no outro, e também não neste,
neste aqui em cima. E gire-o para que ele se encaixe
no outro também. Agora você pode voltar para
a visão em perspectiva, dar uma olhada nesses personagens. Você também pode
dar uma olhada na vista superior para ver a aparência de ambas. E se eles parecem iguais, acho que na maioria das vezes
eles realmente têm a mesma aparência. Vamos voltar ao modo de
perspectiva agora. O que precisamos fazer é
realmente
consertar as mãos porque
elas não estão com boa aparência. Podemos simplesmente tentar
executar uma animação. Por exemplo, a caminhada de volta à esquerda. E eu vou remover todos
os ossos para que eu possa ver. Você pode ver que eles estão
bem. Os dois. No entanto, as mãos estão
um pouco bagunçadas. Então, temos que consertar isso.
Vamos passar para a próxima lição e consertar as mãos antes de
copiarmos as animações.
23. 3.12 Fixando as mãos: Agora vamos
fixar os dedos. Antes de copiarmos as animações, vamos clicar duas vezes neste modelo
de equipamento K aqui Eu já adicionei as correntes. Você pode ver aqui, você também precisa adicionar correntes
para os dedos. Se você quiser que os dedos funcionem exatamente como as outras
partes do corpo, vá em frente e
adicione os mesmos. O polegar aqui, esse polegar aqui. E então você tem o
dedo indicador, o dedo médio, o dedo anelar e
depois o rosa aqui. Você tem que adicioná-los,
todos eles novamente,
polegar esquerdo, polegar
direito, indicador esquerdo,
índice direito, meio esquerdo, meio direito,
anel, esquerdo, anel, direito esquerdo e mindinho
, direito Vá em frente e
adicione-os. Vou apenas mostrar os dois primeiros sobre
como você pode encontrá-los novamente, e depois vou
adicionar o resto deles. O primeiro aqui, o polegar, você pode clicar
no primeiro aqui Você pode ver que este é
o polegar 01, certo? Você pode clicar aqui e
pesquisar o polegar. Você pode ver que começa
com o polegar 01. Esse é o da esquerda. Temos que selecionar o polegar. 01, Esquerda, polegar direito. Termina no polegar 03, à esquerda. Você também pode clicar
aqui para ver o nome, mas é muito fácil
para esses dedos, o mesmo direito, você pode pesquisar o polegar,
selecionar o correto Ele termina em 033, aqui no
dedo indicador, você pode clicar nele Começa com o índice 01. Você pode ver pelas mãos, elas são realmente simples Se você clicar aqui
e pesquisar por índice, poderá ver o índice
01 para a esquerda, um para a direita, 1203 para a direita 101203, um esquerdo e um direito. Aqui, no dedo médio, você pode clicar
no dedo médio. Começa com o meio de 01. Vou seguir em frente
e adicionar todos eles aqui. Agora eu adicionei todos eles e podemos clicar em Salvar. E você pode ver
todos eles aqui. Exatamente como o que fizemos aqui em cima. Ok, então agora o que eu posso fazer, eu posso fechar isso. Agora, em vez de adicionar a
mesma coisa aqui, vou excluí-la. Eu só vou
deletar este. E clicando em OK. Na verdade, vai te
dar uma era
porque foi adicionado
a esta plataforma IK Eu também vou deletar
esse equipamento IK. Agora diz que há algo rodando aqui e
eu não tenho certeza do que ele quer. Estou tentando salvar o projeto. Clique na
pasta de conteúdo, corrija os redirecionadores, volte às
animações do player e tente excluí-los Na verdade, vamos deletar esse. K jogadores vão me dar isso. Na verdade, vou
fechar o projeto e tentar abri-lo
novamente para ver se funciona. Ok, aqui estamos de novo. Vou deletar esse. E aí vai.
Às vezes, o Unreal Engine fornece alguns erros aleatórios Não vamos deletar o alvo IK, vamos apenas fazer com que ele fique aqui. Vou
clicar com o botão direito do mouse e duplicar meu manequim
IK e chamá-lo de jogador IK como antes, entrar aqui
e trocar esse manequim
por nosso
próprio antiterrorista assim,
está tudo bem. Nós podemos economizar. Vamos voltar para o alvo do IK. Agora, para o retargeting de IK, certifique-se de que o manequim IK seja a fonte e que o
alvo seja o jogador Então, tudo parece
bem. Vamos tentar novamente. Vamos tentar fazer uma animação. Se voltarmos para a
esquerda, por exemplo. E eu vou esconder todos
os ossos
para que eu possa realmente
ver o que está acontecendo. Você pode ver que também não
parece bom. Eu suspeito que as
cadeias não estejam mapeadas. Se você clicar
no mapeamento de cadeia, como
eu disse antes, eles precisam ser semelhantes, você pode ver que na verdade
não são os mesmos aqui, eu
tenho que vinculá-los. Em vez de fazer isso manualmente, tente clicar aqui e
clicar em Map All Exact. E você pode ver que
mapeia todos eles para você. Agora vamos ver como
é. Você pode ver agora
que está muito melhor. Na verdade, está segurando,
assim como o outro jogador, não apenas segurando os
dedos aleatoriamente. Aqui estão, corrigimos
o mapeamento da cadeia. Agora você pode ver que a mão desse jogador está torcida,
como você pode ver Está distorcido aqui. No entanto, o problema não é
realmente seu, é apenas como o
personagem é feito. Você pode ver que está um pouco bagunçado
nessa parte do braço. Está tudo bem. Na verdade, não você que fez
algo errado. Vamos reproduzir algumas
animações apenas para
garantir que tudo esteja
correto antes de continuarmos E só de dar uma olhada
e tudo parece bem, você pode até ver que
esse dedo no gatilho está segurando corretamente, assim como esse outro dedo no
gatilho também. Ok, então podemos sempre dizer que, se você quiser que os braços e as mãos sejam 100%
como esse jogador, como eu disse
antes, você pode editar, mover
levemente os
dedos se quiser se lembrar de
clicar nos ossos
do personagem e em toda a hierarquia e
tentar
movê-los um pouco se
não estiver satisfeito E então você pode seguir em frente
e reproduzir uma animação. Dê uma olhada no que
parece, mas acho que por enquanto
isso parece muito bom. Antes que você possa imaginar, ou lembrar, que os
braços estavam voando para cima Agora estão todos bem e os dedos também estão funcionando. Ok, então com isso, vamos
clicar no personagem. Novamente, vou esconder todos os ossos porque não
preciso mais vê-los. E agora vamos salvar o projeto
e passar para a
próxima lição, na qual
copiaremos as animações
24. 3.13 Retargetando as animações: Agora estamos prontos para copiar
as animações. Vamos até o IQ Targeta. Dentro daqui, você pode ver quando eu clico nas animações, assim como na lição
anterior, tudo está funcionando bem Agora estamos prontos para copiar
todas as animações. O que você pode fazer
é muito simples. Você pode clicar na
primeira e descer, selecionar a última e
clicar nas animações selecionadas Agora você precisa selecionar uma pasta na qual deseja
salvar essas novas animações. Na verdade, vou
criar uma nova pasta. Para ficar mais organizado, vou criar uma nova
pasta e chamá-la de Assets. Isso é o que eu
costumo fazer nos meus jogos. Eu posso escrever, clique
aqui e vamos chamar a nova
pasta de animações. E então você pode ir em frente
e clicar em Exportar. E agora estamos exportando
essas animações para cá, e agora está concluído Agora, se eu minimizar e passar
para minhas animações de ativos, agora você pode ver
que elas estão todas aqui Se eu clicar em um deles, você pode ver que está funcionando
com nosso personagem. Isso está parecendo muito bom. Não, eu não acho que todas as animações
que eu posso ver aqui E isso é porque eles
não estão usando o mesmo manequim. Se eu voltar para, vamos ver aqui, o jogador e se eu voltar para meu K targeta, esse manequim aqui, dá para ver se eu passar
o mouse sobre ele,
ele está usando a malha esquelética da de referência 01 Você pode ver aqui agora que são apenas as animações
da pistola Eu posso ver que aqui na
pasta de animações de ativos, copiamos todas as animações de
pistola Você pode ver no final que
eles são chamados de pistola. No entanto, temos
mais animações. Você pode ver se você vai para a outra
pasta de animações que importamos, você tem o desarmado
e também o Não podemos vê-los.
E por que isso? Só podemos ver as pistolas. Isso ocorre porque
os outros estão, na verdade, usando outros manequins
para o rifle Se você apenas segurar
o mouse sobre ele, verá que ele está
usando o esqueleto da pasta
de referências 02, na
verdade está usando
outro Manequin O que podemos fazer é
voltar para o manequim K dentro daqui Podemos clicar neste. Se você simplesmente passar o mouse sobre os outros maniquins
que você tem, por exemplo, este, ele diz que este é da pasta de
referências 02 No momento, estamos usando o
maniq das referências 01, clicando no segundo manequim Agora vá em frente e clique em Salvar. Vamos até o alvo K. Agora você pode ver
nas animações que ainda
há a pistola O que precisamos fazer
é clicar
nessa seta apenas para reiniciá-la. Em seguida, vou clicar novamente
e selecionar o manequim IK. E vá em frente e clique em Salvar. Agora você pode ver que não é mais
a pistola, todas as animações do rifle, vá em frente e selecione
todas as animações do Exporte as animações selecionadas. E vou exportá-los novamente na pasta de animações Vá em frente e exporte-os quando
tiverem sido exportados. Vou voltar
para o meu manequim IK. Vou selecionar o manequim
da
pasta de referências 03, você pode salvar Volte para o Ktageta. Vou clicar na seta novamente aqui para reiniciá-la. Em seguida, vou selecionar
o manequim novamente
e garantir que ele diga
UA no final, e garantir que ele diga o que Essas são todas as animações
desarmadas. E você pode clicar nele para
ver como é. Vá em frente e selecione
todos eles novamente. E vá em frente e clique em
Exportar animações selecionadas e exporte-as novamente
na pasta de animações.
Clique em Exportar. Agora vamos fechar tudo
e dar uma olhada na pasta
de animações Agora você tem todas as
animações aqui. Então, você pode ver
que, ao clicar neles, eles parecem um pouco bobos. E isso não é porque
fizemos algo errado, na verdade
é a animação que parece um pouco boba, na minha opinião, mas está tudo bem Na verdade, não temos animações
melhores. E eles são gratuitos
e podemos usá-los. Então você pode ver aqui todas essas animações
muito, muito boas E podemos usá-los
para criar nosso jogo. Ok, então agora tudo está
funcionando para o personagem. E você pode ver que tudo
está ótimo. E às vezes podemos ajustar
algumas dessas animações. Você pode ver que quando ele
olha para o chão, é demais para o
chão, na minha opinião. E podemos ajustar isso mais tarde. Mas você pode ver que tudo
está funcionando bem. E é assim que você copia animações de um
personagem para outro Então, vamos clicar em Salvar e passar
para a próxima lição.
25. 3.14 Introdução ao Blend Spaces: Tudo bem, então vamos continuar
e criar um espaço de mistura. E um espaço de mesclagem é
usado apenas para mesclar duas
animações E podemos usar isso no esquema de
animação. Mais tarde. Você pode ver que
acabei de colorir minha pasta de plantas só
para vê-la ou localizá-la mais rapidamente Novamente, lembre-se de que você pode fazer isso selecionando todas
essas pastas. Clique com o botão direito do mouse em Ir para Definir cor
e, em seguida, clique em Nova cor
e selecione a cor. É assim que você coloca
cores nas pastas. Agora, dentro da
pasta do blueprint nas animações. Vamos em frente e clique com
o botão direito aqui. Vá para Animação e selecione
esse chamado espaço de mesclagem. Novamente, um
espaço de mesclagem é onde você pode mesclar duas
animações Por exemplo, a animação inativa
e a animação de execução. Podemos usá-los posteriormente
no esquema de animação. Vamos continuar e
criá-lo por enquanto. Agora ele pede que você
escolha um esqueleto. Você tem que escolher o
esqueleto para o seu personagem. Para este, vou
selecionar o estilo MW. Esse é o contra-terrorista
e esse é o terrorista. Vou selecionar
o antiterrorista porque lembre-se de que,
nas animações, nós
realmente redirecionamos
as animações para esse Vou selecionar o esqueleto
antiterrorista. Chame isso de BS para combinar espaço. Então eu vou
chamá-lo de run depois disso. Eu costumo chamá-lo, por exemplo, deste. Vou fazer os
espaços de mistura desarmados porque mais tarde vamos correr
com
o rifle e correr
com a pistola Este é chamado de run armed. Vamos clicar duas vezes
nele ao abri-lo. Esse é o espaço de mistura. Aqui à esquerda, você tem um painel de detalhes aqui dentro. Você pode fazer coisas como
suavizar a animação, a velocidade do
movimento, a direção e assim por diante, mas trabalharemos mais
com isso mais tarde. Aqui embaixo, muito, muito
importante, você tem um gráfico. E aqui você adiciona todas
as suas animações. É aqui que você mistura
as animações, e faremos isso
na próxima lição
à direita Não se preocupe muito com isso. Nós realmente não temos muito
o que fazer dentro daqui. Mas aqui embaixo você pode ver
todas as animações. Se você clicar duas vezes em um deles, por
exemplo, neste, clicar
duas vezes neste, poderá ver todas as
animações aqui dentro deste reprodutor de
animação Se você clicar duas vezes
nele, verá que está fora do espaço de mesclagem. Agora você não pode ver esse gráfico
se você simplesmente rolar. Você pode simplesmente
abri-lo novamente aqui clicando aqui. Mas agora você também pode ver
isso com as animações. Você pode ver isso aqui
embaixo. Essa é a cor do espaço de mesclagem. Você pode clicar duas vezes nele e abri-lo novamente, sem
mais nem menos. Muito, muito simples.
É assim que fazemos. E podemos, por exemplo,
clicar e arrastar uma animação. Na verdade, não vamos
usar esses. Isso é uma compensação. Vamos usar essas animações. Vamos trabalhar com
o Aim offset mais tarde. Vamos trabalhar com
uma das animações. Você pode clicar e arrastar,
colocá-los no gráfico. E então você pode ver que esse cara agora
está andando automaticamente. E você pode arrastar
outra animação e simplesmente colocá-la em algum lugar. E agora você pode ver
que eles estão realmente se misturando. Se você mantiver o controle do
teclado e apenas mover o mouse
daqui para cá, verá que
agora eles estão se misturando Ok, muito legal. Por enquanto, isso foi apenas um exercício. Vamos clicar neste, clique
em Excluir no teclado. Clique neste, clique
em Excluir no teclado. Vamos em frente e economizemos. E vamos começar com
a próxima lição, qual adicionamos espaços de
mesclagem desarmados
26. 3.15 espaços de mistura desarmados: Agora estamos prontos para criar espaços
de lentes desarmados.
Vamos começar por aqui. Eu geralmente começo aqui no painel
de detalhes. Temos um eixo horizontal
e um eixo vertical. Se você clicar
nas pequenas setas, poderá ver todas
essas informações Normalmente, no eixo horizontal, temos a direção do movimento. Vá em frente e chame
isso de direção do movimento. Você também pode ver
que ele muda de nome. Aqui embaixo, aqui em cima,
temos a velocidade de movimento. Esse é o eixo vertical. Vamos chamar isso de velocidade de movimento. Agora, para a direção do movimento, vamos de um valor mínimo
para um máximo. O mínimo é
menos 180 graus, o máximo é 180 graus. É assim que podemos
girar 360 graus. Agora, para a velocidade de movimento, geralmente o que eu faço aqui, por exemplo,
é a corrida. Se formos até o personagem, se clicarmos no jogador e
clicarmos na base de jogadores, dentro da
base de jogadores, clicaremos no componente de movimento. Você pode ver aqui que
a velocidade máxima de caminhada, que também é a velocidade de corrida, é 600 agora. Normalmente, o que eu faço é configurá-lo para cerca de metade do que
está escrito aqui. Porque se você escrever 600, precisará
atingir a velocidade de
600 antes de poder fazer a transição
completa para essa animação. Se você quiser fazer a transição para
a animação em execução, eu geralmente escrevo 300 porque quando eu alcanço
a velocidade de 300, que eu faço muito rápido
porque minha velocidade total é 600, então eu faço a transição para a velocidade de
corrida muito mais rápido. Normalmente, eu apenas
diminuo o que é. Vou escrever
300 para este,
para a direção do movimento. Vou aumentar
as divisões da grade aqui porque tenho mais
animações do que quatro Eu vou escrever
oito. um movimento em oito direções Você pode ver agora que
tenho mais linhas aqui. E é assim
que queremos que seja. Agora, essa é a única coisa
que você quer fazer dentro daqui. Vamos clicar em salvar
neste painel de detalhes por enquanto. Agora, aqui no gráfico, agora o que você pode fazer é
fazer a animação de corrida para
os desarmados aqui embaixo
na velocidade zero É aqui que você tem a
animação inativa na velocidade zero Estamos apenas parados. Agora, aqui, se
procurarmos por ocioso, esse chamado ocioso armado Vamos pegar esse. Ocioso,
desarmado, vamos arrastá-lo E temos que
colocá-lo aqui, onde a
velocidade de movimento é zero. Agora, se você segurar a tecla shift no
mouse enquanto a arrasta, poderá vê-la se encaixar na grade. E
é isso que eu quero. Eu quero tirá-lo aqui. Se você posicioná-lo, poderá ver o personagem agora está ocioso
com uma animação inativa Agora vamos clicar e
arrastar isso novamente. Segure a tecla Shift para encaixá-la. Basta clicar
e arrastá-lo para todos
esses pontos da grade aqui embaixo. Basta levar a
animação inativa até aqui. É apenas a animação inativa
porque a velocidade é zero. Agora aqui, quando
a velocidade estiver máxima, faça a animação da corrida. Se eu apenas procurar fugir
agora, estaremos desarmados. Se você simplesmente entrar aqui,
verá que este se chama
is forward. B significa inverso. B L, por exemplo, significa voltar à esquerda e B R significa voltar
à direita e assim por diante. Para este, queremos
correr para frente, mas estando desarmados,
corra para frente aqui E você pode ver esse
chamado desarmado. Você pode arrastar este novamente, segurar a tecla Shift e colocá-lo aqui. Agora, se você segurar
o controle do teclado e
mover o mouse, verá que
pode fazer a transição da animação de Adle E se você mover o mouse enquanto mantém o controle
do teclado, você pode fazer a transição para este. Você pode ver o que parece. E isso é o que é
um espaço de mistura. Agora, aqui,
na verdade, vou clicar neste botão para
mostrar os nomes das amostras, você
possa ver o que eu
coloquei e também será
mais fácil para você. Então, aqui, em vez
de procurar fugir, vou na verdade procurar
por alguém desarmado desse jeito Acho que será
mais fácil para mim e poderei ver todas as minhas animações de corrida
desarmada Então, aqui à direita, temos a frente direita. Esse chamado front right. Vou deixá-lo aqui. Então temos o
direito aqui. Eu vou pegar o
que está certo. Deixe-o aqui. Então esse
está de volta, certo? Eu vou pegar a parte de trás. Logo no final, na esquina, está
o movimento traseiro. Estou pegando a parte de trás
e colocando-a aqui para que você possa ver se eu mantenho o controle
e vou até ela lentamente. Você pode ver que meu personagem
está em transição. Simples assim,
tudo parece correto. Ele anda para trás e
depois volta. Pois este é exatamente
o oposto disso. Este é o lado esquerdo,
então corra para a frente para a esquerda. Então eu vou pegar este
na frente à esquerda, segurar a tecla Shift, posicioná-lo e este fica à esquerda. Vou encontrar a esquerda
e depois a esquerda, escolhendo esta chamada de volta à esquerda e esta
chamada de volta. Assim como no
outro canto, temos o movimento traseiro aqui e
também temos o
movimento traseiro aqui. Porque estamos girando
360 graus. Tudo bem, então esta
é minha animação e tudo
parece correto. Então é assim que
deveria ser. Então, temos o movimento frontal
e, em seguida, temos
os movimentos para a esquerda
e os movimentos para a direita. E agora terminamos
a corrida com o braço direito, para que
você possa manter o controle. Veja o que acontece
quando você faz a transição. Agora você tem que fazer isso com
os outros também. Então, vou compartilhar
mais um exemplo rápido. Eu vou
passar por isso rápido. Agora, se você simplesmente voltar
às animações do player, clique com o botão direito do mouse, vá para as animações e
crie um novo espaço de mesclagem Selecione o personagem novamente, o esqueleto que
criamos, chame-o de PS Desta vez, vou
chamá-lo de agachamento, porque agora
estamos agachados E, novamente, chame isso de desarmado. O último,
na verdade, vamos clicar com o botão direito novamente. Vamos para a animação. Vá para o espaço de mistura,
selecione o esqueleto. Essa é uma caminhada de S porque agora estamos andando
e a chamamos de desarmados Este também temos que
fazer. Clicando novamente no agachamento, aqui no eixo
horizontal, temos a direção do movimento Então temos a velocidade de movimento. Como movimento, estamos
passando de menos 180 para 180. A divisão da grade é oito, porque temos oito
movimentos que precisamos somar aqui para obter
a velocidade do movimento. Novamente, este é
para quem está agachado. Agora, agachar-se é muito
mais lento do que a velocidade de caminhada. Novamente, você pode voltar se
quiser para a base de
jogadores. Clique no componente de movimento e veja
a velocidade de agachamento. No momento, são 300. Vou colocar em 150, metade disso por enquanto. Mais tarde, vamos
mudar todo esse
movimento porque temos que testar o jogador
no jogo e
ver o quão rápido ele está correndo. E sempre podemos vir aqui e mudar esse
valor aqui, ok? Agora que temos isso
aqui à direita,
agora precisamos que seja o agachado,
agachado armado Vamos apenas
escrever o braço sublinhado, temos tudo isso agachado O primeiro é o ocioso. Vou pegar essa
, anim crouch idle. Vou segurar o turno,
coloque-o aqui embaixo. Basta clicar e arrastar
o mesmo agachamento inativo em todos esses
pontos Porque, novamente, a velocidade de
movimento é zero. Estamos apenas ociosos. Em seguida, temos o movimento frontal. Vamos tomar a
frente aqui, desarmados. Então aqui está
o movimento certo. Este está na frente, para a direita,
arrastando para a frente para a direita. O outro lado está na frente esquerda, na frente direita, na frente esquerda. Então temos a direita aqui, a direita e a esquerda
está do outro lado. Neste está de volta à direita,
arrastando de volta para a direita. Do outro lado está atrás à esquerda. E então temos o
movimento traseiro nesses lados. Podemos novamente manter o controle. Veja o que parece.
Tudo está indo bem. Vá em frente e economize.
E eu vou fazer o último e
eu vou voltar para você. Tudo bem, então aqui eu
terminei a caminhada e posso habilitar os rótulos para que você possa ver o que eu fazia antes. Os movimentos para a direita,
os movimentos para a esquerda e também a marcha lenta aqui embaixo Nada de novo.
Vamos em frente e economizemos,
e vamos fechá-la. E aqui temos todos
os espaços de mistura para o movimento desarmado Agora, mais tarde, também
teremos que criar
tudo de novo para o
rifle e para a pistola, mas não vamos nos
preocupar com isso por Vamos passar para o plano de
animação.
27. 3.16 Introdução aos Blueprints de animação: Agora estamos prontos para trabalhar
com projetos de animação. Vamos entrar na pasta
de plantas. Vou entrar na pasta
do player.
Pasta de animação. Aqui. Vou clicar com o
botão direito do mouse, ir para Animação. Em seguida, selecione esse
chamado blueprint de animação. Agora temos que
selecionar o esqueleto para o jogador para o qual estamos
fazendo isso Estou fazendo isso para este
Cando Terris agora. Vou seguir em frente
e selecionar o esqueleto. Vá em frente e clique em Criar. Vamos
chamá-lo de reprodutor de MBP. Agora, vamos clicar duas vezes e abrir esse plano de
animação Um esquema de animação
consiste em duas partes. A primeira parte é
esse gráfico de animação. Dentro desse gráfico de animação, conectamos as animações e você pode ver se você
segurar o botão direito do mouse aqui, você pode dar uma olhada dentro desse gráfico
de animação, nós conectamos as animações E a segunda parte
é esse gráfico de eventos. Dentro do gráfico de eventos, escrevemos o código
para o movimento. Temos a parte do código
e, em seguida, temos
a parte da animação onde adicionamos as animações. Vamos começar aqui
no gráfico de animação, você pode ver à
direita que você tem todas as animações
que você pode ver aqui Você pode até clicar
e arrastá-lo para o gráfico de animação e
conectá-lo ,
compilá-lo e assim por diante E você pode ver quando
você o conecta, você pode ver agora que o player está ocioso e você pode
ver a animação Agora estamos trabalhando com espaços de mistura de
animação, não apenas com essas animações
aqui. Vamos deletar esse. Em vez de apenas inserir
uma animação aqui, vamos clicar com o botão direito do mouse e
pesquisar a máquina de estado Vamos selecionar essa máquina de estado
único. Vá em frente e renomeie este. Vou chamá-lo de movimento
desarmado, porque mais tarde teremos movimento com
a pistola e movimento
com o rifle Vamos pegar isso e
conectá-lo aqui, e vamos compilar. E você pode ver
que recebe um aviso porque este está
vazio no momento. Vamos clicar duas vezes
nessa máquina de estado que criamos aqui. Se você clicar e arrastar a partir daí, você não tem muitas
coisas para fazer aqui. A única coisa que queremos fazer
é criar esse estado. Clique em um estado e vamos chamar
isso de execução inativa E agora podemos ver
que você tem esse estado. Agora, se você clicar duas vezes
nesse estado aqui, agora
poderá adicionar a animação. Vamos atacar esse movimento
desarmado aqui. É com ele que estamos
trabalhando agora. Vamos conectá-lo e clicar em Compilar. Agora você pode ver que a
era desapareceu agora. Se você quiser voltar ao gráfico de animação,
clique aqui. Você pode ver que
não tem uma guia. Você só precisa clicar aqui e voltar ao gráfico
de animação. Você pode ver que a era
desapareceu. Conectamos o
movimento desarmado dentro daqui. E temos esse estado, o estado ocioso Mais tarde, vamos
criar mais estados. Por exemplo, se
você arrastar no estado, criaremos
o estado agachado
e, em seguida,
criaremos outro Talvez queiramos criar
o estado de caminhada e assim por diante. Mas, por enquanto, apenas
o estado de execução ociosa. Dentro daqui, temos esse espaço de mesclagem que
criamos anteriormente. Agora podemos ver que o espaço de mesclagem
deseja receber duas entradas. Se eu voltar para o
espaço de corrida aqui dentro, você pode ver que criamos a direção
e a velocidade do movimento. É isso que ele quer. Ele
quer esses dois valores. Agora, se eu escrever
um número estático aqui na velocidade de movimento, por exemplo, digamos que eu esteja me
movendo com uma velocidade de 400. E se eu compilar, você pode ver que o personagem está
funcionando corretamente. Se eu também mudar a
direção, por exemplo, escrevendo 90 graus, podemos compilar o que está funcionando corretamente.
Tudo bem, muito legal. Agora, não queremos realmente números
estáticos aqui, queremos calculá-los por meio de
código no gráfico de eventos. Vamos continuar e fazer
isso na próxima lição. Vamos compilar por enquanto, escrevendo 00 novamente aqui. Vamos salvar tudo
e seguir em frente.
28. 3.17 Velocidade e direção de movimento: Para calcular a
velocidade e a direção do movimento, vamos
entrar no gráfico da van. Agora, dentro daqui, em vez
de começar daqui, vamos clicar com o botão direito do mouse agora e
pesquisar por initialize E selecione este chamado Blueprint Initialize Animation Este evento é
como começar a jogar. Se você se lembra, se eu voltar
para a base de jogadores, usamos essa chamada
de start play. O que deve acontecer se eu
começar a jogar? Agora, nos esquemas de animação, isso é chamado apenas de esquema,
Inicializar O que acontece quando você
inicializa esse plano? É a mesma coisa aqui. O que você quer
fazer, use esta função aqui, tente obter o dono do peão Vamos direto daqui
e dizer que é válido. E vá em frente e
selecione este com o ponto de interrogação válido. Agora estamos perguntando se
o jogador é válido, se o jogador
apareceu no mundo Se o jogador tiver surgido,
queremos clicar com o botão direito do mouse nessa para
transformá-la em uma variável e
chamá-la de peão do jogador e seguir em frente e conectar-se
ao que é válido Agora, o que estamos simplesmente fazendo
aqui é perguntar a
esse peão aqui esse jogador fez esse
jogador desovar para o mundo Você pode imaginar o contra-ataque. Ao se conectar,
você precisa selecionar se quer ser terrorista
ou contraterrorista. Agora, se o jogador ainda não selecionou um terrorista
ou antiterrorista, o jogador ainda
não apareceu no mundo Não faz
sentido fazer todo
esse código de animação se o player
ainda não apareceu Estamos apenas verificando se
o jogador surgiu, se o jogador é válido, se o jogador está
dentro do mundo Se não, queremos esperar. Vamos apenas escrever o atraso aqui
e selecionar esse atraso. Vamos atrasar o código
em, digamos, 0,3 segundos. Por exemplo, quando esse atraso for concluído, vamos correr. Isso é válido novamente porque,
se o código não for válido, se o jogador ainda
não tiver
surgido, não queremos ficar presos aqui Se não adicionarmos nada aqui, o código simplesmente vai parar. E eu não quero isso,
quero que essa variável player pon seja definida
sempre que o jogador reaparecer Vou continuar verificando
se o jogador apareceu. Vou atrasar
o código se ele não for válido e, em seguida, vou
executá-lo novamente. E agora podemos
clicar duas vezes neste para criar nós de
rota, a fim de
torná-lo um pouco mais organizado. Algo parecido com isso.
Aqui, continuamos atrasando o código se o
jogador não tiver surgido, até que o jogador apareça e isso crie essa variável de
dor
do jogador Agora podemos pegar essa
variável de peão do jogador , podemos colocá-la aqui Se você pegar aqui,
poderá obter a variável ou
definir a variável. Agora, para fazer
isso rapidamente, você pode segurar o controle
e arrastá-lo para dentro para obtê-lo automaticamente. Se você segurar Alt e obtê-lo aqui, ele definirá a variável. Esses são apenas atalhos, mantendo pressionado o controle e pressionando a
tecla Alt enquanto você os arrasta. Ok, então estamos recebendo
essa variável de peão do jogador. Agora, vamos clicar com o botão direito do mouse nessa variável e
convertê-la em uma ainda validada. Agora, o que isso faz é conectá-lo aqui. O que isso faz é
verificar novamente se o jogador é válido, se o jogador penhorou Só para ter certeza de que
estamos executando esse código somente quando o
jogador for gerado Porque você pode ver
se eu compilo agora,
agora o código está sendo executado E você pode ver que isso
está funcionando infinitamente, porque ainda não surgimos. Isso vai parar de funcionar
sempre que aparecermos. Quanto a este, isso sempre
será executado, a atualização do plano e a
animação sempre serão executadas E é sempre bom
verificar se o jogador foi gerado porque não queremos
executar esse código quando um
jogador val ainda não apareceu Ok, agora para calcular
a velocidade de movimento, vamos atacar com
esse jogador, a pata Vamos pesquisar a velocidade e obter essa
chamada velocidade Isso é simplesmente a única coisa que
temos que fazer, na verdade. No entanto, se eu voltar aqui
no blueprint de animação e voltar ao meu estado de execução ociosa, você pode ver o plug-in Ele quer a entrada que deseja, é uma variável do tipo flutuante Não é um vetor.
Você pode ver se eu voltar ao meu gráfico de ventilação,
isso é um vetor Nós realmente não podemos
conectá-lo aqui. O que podemos fazer para
transformar um vetor em um flutuador, podemos arrastar a partir deste
e pesquisar o comprimento Podemos escolher esse
chamado comprimento vetorial, que na verdade o transformará
em uma variável do tipo flutuante Podemos clicar com o botão direito do mouse
e promovê-la para uma variável agora e
chamá-la de velocidade de movimento. Agora vamos conectá-lo
aqui ao S válido. E agora temos a velocidade de
movimento. Na verdade, isso é muito fácil. É assim que você faz. Você obtém
a velocidade do player Fizemos o comprimento do vetor
porque queremos transformar
a variável em
uma variável flutuante E então temos a velocidade de
movimento aqui. Agora, para calcular a direção
do movimento, podemos arrastar a partir daqui e
pesquisar por calcular. E você pode ver isso
chamado calcular direção. Como este agora, ele
pede uma rotação. O que você pode fazer é
direcionar a partir do jogador e procurar a rotação de atos. Este tem rotação de atos. Agora vamos
conectá-lo. Agora, se você é muito
novo no blueprint, às vezes não sabe como
essas funções são chamadas Se ele pedir
rotação, por exemplo, você pode simplesmente direcionar a partir daqui
e escrever rotação. Isso é o que eu fiz
quando comecei. Quando eu estava totalmente,
acabei de escrever rotação e tentei ler o que eram todas
essas funções. Depois disso, eu
seleciono um deles. Agora vai demorar um
pouco se você for novo. No entanto,
isso é feito
repetidamente e se tornará uma memória
muscular para você. Não se preocupe com isso,
apenas continue praticando. Estamos obtendo a rotação do
ator, estamos conectando-a Estamos calculando a direção. Agora podemos clicar com o botão direito do mouse nessa
, transformá-la em uma variável e chamá-la de direção do movimento. Agora também calculamos a velocidade e a direção do
movimento. Vamos continuar e compilar. E agora temos esse código aqui. Vamos para o estado de
inatividade aqui. Novamente, você pode clicar
no gráfico de animação. Você também pode clicar no gráfico de
animação aqui. Ou vá para o estado de
inatividade aqui, à esquerda, dentro daqui Vamos aumentar nossa velocidade de movimento. Conecte-o à velocidade do movimento e arraste a direção do movimento, conecte-o na direção do
movimento. Vamos continuar e compilar agora. Antes de podermos jogar,
você pode ver se eu jogo agora, nada vai acontecer porque não
usamos o
esquema de animação no player Vamos até a base de jogadores. Vá até o Viewpo, clique
no player ou na malha. Aqui, aqui em cima você
pode ver o modo de animação. Use o esquema de animação,
isso é correto. Na cláusula de animação,
temos que selecionar nosso plano e clicar em
Compilar E agora você pode ver que o player está animado aqui
no Viewpoard Vamos clicar em Play
e vamos experimentar. Se eu clicar em W para avançar, para retroceder, vá
para os lados também Eu mudo para todos
os outros sites. Você pode ver que está
funcionando corretamente. Incrível. As animações que conectamos estão
funcionando corretamente Agora, quanto à velocidade de movimento, vamos alterá-la mais tarde, então não se
preocupe com isso. Também posso ver
que o player é realmente muito pequeno
em comparação com o ambiente. Então, temos que corrigir isso também. Mas não vamos nos
preocupar com isso por enquanto. Tudo está funcionando corretamente. E vamos passar
para a próxima lição e criar o agachamento
29. 3.18 Entrada para Multiplayer Crouch: Agora vamos criar
a entrada para o agachamento dentro da pasta
do player Eu vou para a pasta de entrada. Novamente, aqui vamos clicar com o botão direito do mouse, ir para Entrada e criar
essa ação de entrada. Novamente, vamos chamar
isso de agachamento. Agora, vamos abrir nosso contexto de
mapeamento de entrada aqui. Vamos adicionar esse novo mapeamento. Agora já fizemos isso antes. Vou ir um
pouco mais rápido, desta vez criando
esse agachamento Para me agachar,
vou clicar aqui e usar meu botão de controle esquerdo Agora você pode escolher qualquer
botão que desejar
para os gatilhos. Vou clicar no sinal
de adição E eu só quero que
essa ação de agachamento seja acionada sempre que
eu pressionar o botão Porque se você não
adicionar isso pressionado aqui, isso realmente será executado muito
rapidamente muitas vezes por segundo. Assim como o movimento aqui, se você não adicionar nenhum gatilho, ele será executado continuamente No entanto, isso só será acionado uma vez
quando você pressioná-lo. E isso está apenas tornando
o código mais otimizado. Além de pressionar,
também quero clicar aqui e selecionar Liberado. Porque eu quero me agachar
quando solto meu botão, pressionado
ou Ok, vamos em frente e salve isso agora. Vamos fechá-lo. Agora vamos voltar
para o player agora. E dentro do jogador, vamos abrir a base de jogadores. Aqui embaixo novamente, clique com o botão direito do mouse, pesquise IA crouch
ou o que você chama de ação de entrada.
Selecione o evento aqui. Agora, aqui embaixo
no valor da ação, você precisa arrastar a
partir daqui e escrever uma ramificação e
conectá-la ao acionado. A verdade aqui é tocar sempre que você pressionar o botão. Se eu simplesmente arrastar
daqui e escrever uma sequência de caracteres impressa e escrever pressionada. Agora, é sempre bom adicionar sequências de caracteres de
impressão se você estiver
depurando Se você tem uma era em seu código, é muito, muito bom simplesmente
escrever cadeias de caracteres impressas todo o código, como inseri-las aqui
no meio do código, ver se elas funcionam e assim por diante É sempre bom depurar
por meio de strings de impressão. Agora podemos depurar a Síria
e ver se funciona. Se eu pressioná-lo, ele
deve dizer pressionado. Se eu liberá-lo,
deveria apenas dizer lançado. Se eu compilar, agora,
se eu clicar em Jogar, se eu clicar em Controlar, apenas uma vez, e se eu soltar, agora diz lançado Você pode ver o
comunicado de imprensa. Comunicado à imprensa. Ok. Agora está
funcionando corretamente. Portanto, podemos excluí-los por enquanto e passar
para a próxima lição.
30. 3.19 Função de Crouch para multiplayer: Tudo bem, então vamos nos
agachar. Agora, para se agachar, você precisa clicar no componente de movimento do personagem Primeiro aqui, basta pesquisar por agachamento e clicar
neste chamado can crouch Se você não tiver isso marcado, você não pode realmente se agachar
e nada acontecerá Lembre-se de ir até o componente de
movimento do personagem, pesquisar agachamento e
selecionar este, agachar-se Ok, agora vamos
clicar nesse T novamente. Agora, para o agachamento,
podemos simplesmente arrastar até aqui
e dizer Isso funcionará perfeitamente
para um único jogador. No entanto, estamos trabalhando
com o modo multijogador, então temos que executá-lo
por meio de um servidor. Agora, no Honorable Engine, você tem algo chamado
cliente e servidor Se você clicar aqui e definir a quantidade ou o número
de jogadores para dois, e no modo Ith, configurá-lo para jogar
como servidor de escuta. Se você clicar em jogar aqui, agora você pode ver que duas janelas se
abrirão e agora estamos
trabalhando com o modo multijogador. Agora, no Honorable Engine, você tem o servidor e
o cliente Agora, o servidor é o verdadeiro
jogo. E o que isso significa? O servidor tem a
autoridade do jogo. E isso significa que o servidor pode fazer
o que quiser. Por exemplo, digamos que aqui
no jogo de tiro multiplicador, eu tenho uma arma e atiro minhas
balas Agora, no cliente, eu posso atirar nos borrões,
eu posso bater no cliente No entanto, o cliente,
quando eu atiro a arma com o
cliente agora no servidor. Este código para o
disparo da arma. Ele
passará pelo servidor e, em seguida, o servidor enviará essas informações de volta ao
cliente e dirá ao cliente:
OK, você tem permissão para atirar. Por que ele faz isso? E isso é, na verdade, para evitar trapaças. Agora, o servidor, novamente,
é o verdadeiro jogo. Isso significa que todos os clientes aqui estão conectados
ao servidor. O servidor pode ver o jogo
como está, por exemplo, onde os jogadores estão, o que estão atirando, quais
armas estão segurando. No entanto, para os clientes, na verdade, temos que enviar todas
essas informações para eles, do servidor para o cliente. Por exemplo, se alguém
saquear uma arma, digamos que temos
vários clientes E vamos consertar esse
dinheiro mais tarde. Mas digamos que temos, por exemplo, quatro jogadores. E clicamos em Play. E todos eles se abrem
no meu segundo monitor. Então, deixe-me
arrastá-lo até aqui. Agora, digamos que aqui
estou eu, o servidor, e tenho todos esses
clientes jogando comigo. Digamos que esse cliente aqui na minha
frente vai
saquear uma arma Agora, a arma que esse
cliente vai saquear, eu tenho que enviar essa informação Por exemplo, se você
saquear um AK ou uma arma, use Agle, por Tenho que enviar essas informações do servidor para
todos os clientes. Porque se você não enviar as informações, na verdade somente o servidor poderá
ver que você saqueou um deagle e os outros clientes não poderão ver que você está
segurando Se você não enviar
essas informações
dos servidores para os
clientes, elas não funcionarão. É por isso que dizemos que o
servidor é o verdadeiro jogo, tem a autoridade do jogo e todas as informações estão contidas aqui no servidor. E o servidor precisa enviar informações importantes
aos clientes. Por exemplo, se um dos
clientes disparar uma bala, esse cliente dirá: “ Eu vou atirar uma bala E ele enviará essas
informações para o servidor. Agora o servidor
vai verificar se esse cliente
realmente tem balas Porque estamos tentando
evitar trapaças. Ele enviará essas
informações de volta ao servidor. O servidor vai verificar se esse cliente tem balas Então, o serviço
, talvez diga,
sim, esse cliente
realmente tem balas Em seguida, ele enviará
essas informações de volta
ao cliente e dirá, ok,
você pode atirar. Agora você realmente tem balas
e o cliente pode atirar. É assim que fazemos aqui no
relacionamento cliente-servidor , o servidor tem todas as
informações e o cliente simplesmente recebe e envia informações para evitar fraudes Tudo bem, essa
sessão em grupo acabou. Você pode ver que eles estão em uma sessão de grupo discutindo,
vamos parar aqui. Agora temos essa era
aqui, muito, muito simples. Está apenas dizendo que acesse, sem tentar ler isso, obtenha o subsistema de player local E, na verdade, está aqui em cima.
Se você clicar aqui, vá até aqui, diz
apenas eixo nenhum. Tentando ler essa
propriedade aqui, a única coisa que precisamos
fazer é simplesmente arrastar a partir desta e dizer que é válida. E vá em frente e conecte
este com o ponto de interrogação. Estamos apenas nos certificando de que
o controle do jogador seja válido. E se for válido, podemos
seguir em frente e executar esse código. A era que você chegou aqui é porque ele está
tentando executar o código. Quando o controle do player ainda não
for válido, você receberá um erro
informando que não há acesso. O que axis none significa
é que está tentando ler a variável que você
está tentando executar. No entanto, acesse, essa
variável está vazia. Eu não sei do que
você está falando. Vamos fechá-lo.
Vamos jogar novamente. Você pode ver se eu jogo aqui e esse cara caiu
no chão, porque eles estão todos desovando um
em cima do outro E você pode ver que a era acabou. Tudo bem, vamos continuar aqui
antes que o vídeo
fique muito longo. Vamos ver aqui no código
de crouch. Aqui no código crouch, primeiro eu quero
criar uma função Vamos criar uma função aqui em cima. Se você clicar em adicionar
esta função, vou chamá-la de agachamento Normalmente, escrevo na frente dos nomes
das minhas funções
para poder pesquisá-las mais tarde muito rapidamente. Aqui em cima. Se eu também os adicionar aqui, posso
ver que é um. Se eu for até o gráfico de
eventos novamente, posso arrastar essa função aqui e
simplesmente pressionar dois deles. Conecte um ao verdadeiro e
conecte um ao falso. O que queremos fazer é adicionar um lingote. Isso é porque queremos nos
agachar aqui e
queremos nos agachar Vou clicar nessa
função nas entradas,
vou clicar
no sinal de mais e adicionar esse lingote chamado u. Como você pode ver, você pode
adicionar um B na frente das variáveis do ouro e elas não
aparecerão Isso geralmente é feito
em C plus plus. Você pode
procurá-los mais facilmente mais tarde. Escrever um B não será exibido no nome se
você fizer isso para bullins Agora, para me agachar,
vou marcar esta. Então, eu quero me agachar aqui
quando estou tentando me agachar com meu botão de controle e quando solto o botão que
quero me desagachar, isso é considerado com meu botão de controle e quando solto o botão
que
quero me desagachar, isso é considerado falso. Agora, se entrarmos
nessa função de agachamento, talvez fique
um pouco difícil E você tem que
praticar isso um
pouco dentro dessa função. Agora podemos
clicar com o botão direito do mouse nesse agachamento
e eu vou promovê-lo
para
uma variável local e
chamá-lo de Crouch e eu vou promovê-lo
para uma variável local e
chamá-lo de Crouch Agora, o que é uma variável local, ela está apenas
contida nessa função. Você vê que se eu for para
o gráfico de eventos, essa função ou essa
variável não está aqui. E se eu voltar
para a função, você pode ver que eu tenho a
variável local, Crouch Na verdade, essa variável é usada apenas dentro daqui e não
é usada fora. Agora, antes de fazermos qualquer coisa, quero sair daqui e
dizer: o switch tem autoridade. Esse switch tem autoridade. Você pode ver que ele tem
dois pinos de execução. A primeira é a autoridade e a outra é o controle remoto. Lembre-se de que eu disse que o
servidor tem autoridade. A autoridade significa apenas que esse é o servidor
que está executando o código. Remoto significa que esse é o cliente
que está executando o código. Como eu disse antes,
o cliente precisa executar o código no servidor e verificar se tudo o que o cliente está
fazendo é legal antes podermos continuar o código no servidor para evitar fraudes Mas, por enquanto, vamos fazer
isso por meio do servidor. O servidor pode simplesmente seguir em frente e fazer o código
sem nenhum problema, porque o servidor tem
autoridade sobre o jogo. Então, o que queremos
fazer é
verificar aqui se isso
é verdadeiro ou falso, porque definimos aqui
como verdadeiro ou falso. E esse lingote
definirá essa variável aqui. Então, vou pegar
essa variável local e arrastá-la daqui e escrever uma ramificação e perguntar se isso é verdadeiro ou falso e
conectá-la à autoridade aqui. Agora você pode fazer dessa maneira ou dessa maneira. Isso é bom. A mesma coisa. Eu só quero ficar um
pouco mais organizado. Então eu o conecto dessa maneira. Se o agachamento estiver definido como verdadeiro, eu quero me agachar desse jeito. Se não for verdade,
eu quero me agachar. Procure agachamento
desse jeito. Muito fácil. Também vou
criar variáveis que
usarei posteriormente no esquema de
animação Crie uma nova variável aqui, um novo lingote chamado crouch Então você pode pegar este, arrastá-lo
daqui e configurá-lo como verdadeiro. E arraste-o aqui e
defina-o como defeito. Vamos usar esse mais tarde no esquema de
animação, para que possamos alternar a animação Agora temos o servidor finalizado. Você pode ver se eu
clico em jogar agora, jogo como servidor e corro aqui. Eu clico no controle. Você pode ver que a velocidade de movimento diminui, na verdade, agora está agachado No entanto, a animação ainda não
está conectada, então você não pode ver a animação de
agachamento Agora está realmente funcionando. Agora, para o cliente,
o que precisamos fazer executar esse código primeiro executar esse código
no servidor para verificar se o jogador
está trapaceando ou não Vamos voltar ao gráfico
de eventos. Vamos clicar com o botão direito do mouse e
pesquisar um evento personalizado. Vamos criar um evento personalizado. Vamos chamar isso de
SRV para servidor. E vou chamá-lo de agachamento. Porque agora eu quero executar
isso por meio do servidor. Dentro desse evento,
vamos clicar nele. E agora você pode ver as réplicas. O que você precisa fazer é clicar aqui e executar isso no servidor e clicar em Confiável. Agora estamos realizando esse evento
aqui por meio do servidor. Vamos pegar esse agachamento aqui novamente e
simplesmente conectá-lo E conecte esse
bullying a aqui. E ele
criará automaticamente essa variável
dentro desse evento. Agora, na verdade, estamos executando
isso por meio do servidor. O que precisamos fazer é
voltar para a função aqui
a partir do controle remoto. Precisamos
partir daqui e pesquisar
o evento de crouch do servidor que acabamos Agora, para essa entrada, basta conectá-la aqui, criar um nó de rota traseira apenas
para ficar um pouco organizado. Agora ele está sendo executado
no servidor. Depois de ser executado no servidor, agora
ele pode executar esse código
junto com o servidor. Ok, foi isso. Agora podemos compilar, e
isso deve funcionar perfeitamente. Se eu clicar em jogar, agora
sou o servidor e
clico em controle. Você pode ver que estou agachado,
estou me movendo lentamente. A mesma coisa com o cliente. Eu posso me mover e
clicar no controle. E eu também me movo lentamente. Você pode ver no servidor que, na
verdade, também estou me movendo lentamente. Isso significa que ele está
funcionando corretamente. Ambos estão trabalhando lentamente. Só de passar por isso
muito, muito rapidamente, pode ser um pouco
confuso para começar Criamos essa função de agachamento Adicionamos o lingote
para agachar ou
agachar quando pressionamos o botão ou soltamos o botão Dentro dessa função, temos basicamente
apenas o ouro aqui configurando
essa variável local Então temos o switch, tem
autoridade para verificar se é o servidor no momento em que estamos
jogando As ou o cliente, se for o servidor, você pode simplesmente seguir em frente e executar o código. Agora, se você estiver agachado, nós vamos nos agachar Se você não estiver agachado, nós nos agacharemos
dependendo do valor que
você definiu aqui dependendo do valor que
você Agora, se você está jogando com o cliente, primeiro precisa passar pelo
servidor e verificar com o servidor qual é o
valor que você está aqui. Então, ele será executado
no servidor. Dependendo desse valor
que você inseriu, ele pegará
esse valor e se agachará ou se
agachará também no cliente
31. Blueprint de animação em crouching 3.20: Agora que temos o agachamento funcionando dentro do nosso personagem de
projeto, vamos
fazer isso dentro do plano
de animação Vamos para a pasta de
plantas, animações
do player com E vamos entrar no plano da
animação. Agora, aqui novamente, você pode voltar para o gráfico de
animação aqui. Você pode clicar na
sua máquina de estado. Dentro daqui, precisamos
criar um novo estado. Vamos atacar a partir
daqui e vamos para a direita. Ou clique nesse estado aqui. Vamos nos agachar à direita Agora vamos fazer
o Você não precisa
vir até aqui. Você também pode simplesmente arrastá-lo
aqui para o lado ou aqui para cima. Eu só gosto de
arrastá-lo até aqui. Para o agachamento. Eu só imagino que estou agachado,
descendo E então podemos clicar duas vezes
nesse estado
agachado à direita Fizemos este se agachar desarmados. Podemos arrastar esse espaço da lente para o gráfico e depois
conectá-lo. Lembre-se de que já definimos a
direção e a velocidade do movimento, então podemos arrastá-las e
conectá-las aqui. Então vamos compilar.
Agora, recebemos um erro ou um aviso aqui porque não
fizemos a transição. Vamos voltar aqui
no gráfico de animação, você pode voltar para
sua máquina de estado. E dentro daqui você
vê agora esse círculo. E esse círculo é
uma regra de transição. Você tem que contar seu jogo. Quando você deseja passar do inativo
para
o modo agachado Você tem
que fazer uma transição. Agora, se você clicar duas vezes aqui, você pode ver que aqui
está a transição, o lingote, então temos que
fazer uma transição E da maneira de fazer isso,
primeiro você precisa acessar o gráfico de eventos e fazer um código antes de fazer
uma transição. Você precisa saber quando
o jogador está agachado. Agora, se você voltar para a
nossa base de jogadores, você volta aqui na
nossa função de agachamento Se você não clicar aqui.
Fizemos esse chamado crouch Este lingote aqui,
lembre-se de que não é o local que fizemos É essa única
variável global de alta que criamos. Podemos usar este para saber
se o jogador está agachado ou não e podemos usá-lo aqui dentro do esquema de
animação Primeiro, temos que obter a
referência ao jogador. No momento, esse é o peão de um jogador, mas precisamos de uma referência
à base de jogadores porque agora precisamos
usar esse ouro aqui Vamos voltar aqui e voltar
para a pasta Interfaces. Vamos clicar com o botão direito do mouse para acessar o Blueprint e criar uma nova interface de
blueprint Vamos chamá-lo
de base de camadas porque queremos fazer referência
à base de jogadores. Vamos abri-lo. E aqui, dentro dessa interface de
projeto, assim como para o controlador do
player, se você não se lembra, pode seguir em frente e assistir interface do controlador
do Player Quando chegamos aqui,
na verdade é a mesma coisa. Você pode clicar aqui,
clicar em dois para alterar o nome e dizer obter jogador, obtendo a referência do jogador. Você também pode simplesmente chamá-lo de get
get player base reference. É a mesma coisa.
Em seguida, você pode clicar nessa função
aqui na saída. Vá em frente e crie
uma nova variável. Lembre-se de que aqui
você deve selecionar a qual Eva você está
tentando se referir. Estamos tentando fazer referência
à base de jogadores da BP. Vá em frente e selecione-o.
Deixe-me chamar isso de um jogador. Eu posso compilar agora. E indo para a base de jogadores. Indo para a classe,
na verdade, nos padrões da classe, as configurações da classe aqui, nas interfaces, clique em Adicionar
e pesquise a base de jogadores
T. Este compile e você
verá essa interface. Lembre-se de que, se você não vê isso, mesmo que tenha adicionado,
é necessário compilar dentro da interface
antes de poder vê-la Muito importante clicar em
Obter referência do jogador. E aqui podemos arrastar novamente e escrever a nós mesmos como antes. Porque lembre-se de que estamos
na base de jogadores. Estamos apenas dizendo
que essa variável aqui é essa base de jogadores. Agora podemos ir para o.
Vamos compilar primeiro Agora podemos acessar o plano de
animação. E aqui já
temos o peão do jogador. Em vez de simplesmente
arrastar a partir daqui, deixe-me criar
uma nova variável Vou
arrastá-lo até aqui
, colocá-lo e clicar em Obter. E eu vou usá-lo aqui em vez de
arrastar daqui Acho que ficará um pouco confuso quando as linhas estiverem
sobre todo o código Deixe-me interpretá-lo aqui como
um novo e dizer layer ref. Agora temos isso para obter a referência do jogador. Vamos conectá-lo. Agora podemos usar a variável. Agora, se você arrastar a partir
daqui e se agachar para a direita. Na verdade, um pequeno truque que
eu quero te mostrar. Se você estiver
agachado e quiser usar
a variável bullion, as
variáveis sempre são
encontradas aqui usar
a variável bullion, as variáveis sempre são
encontradas Você pode ver que essa é a variável
de agachamento que precisamos. No entanto, se você não vê, você sempre pode criar
um espaço e escrever variável VAR para variável e poderá
ver todas as variáveis. Apenas um pequeno truque
para encontrá-lo rapidamente. Obtendo essa
variável de agachamento que criamos. Agora posso clicar com o botão direito do mouse
nessa variável promovida a uma variável dentro daqui
no esquema de animação E eu vou chamá-lo, está agachado desse jeito Ou você pode simplesmente chamar um
agachado da mesma coisa. Vá em frente, conecte-o
e clique em Compilar. Ok, agora estamos
agachados. Estamos considerando o valor
disso aqui na base de jogadores. Então, se for verdadeiro ou falso, estamos pegando esse valor e colocando-o dentro
dessa variável. Agora podemos usar essa variável
para a regra de transição. Se eu voltar ao gráfico de
animação, à minha máquina de estado e
a essa regra de transição, você
pode clicar nela. Agora está perguntando a
você, quando devo ir da
corrida ociosa para o E podemos arrastar daqui
e conectá-lo aqui. Quando estamos agachados, se agachar
é verdade, então queremos seguir em frente
e fazer a transição No entanto, vamos voltar. Temos que clicar aqui
e arrastar a partir daqui. E conecte-o aqui também. Porque em algum
momento temos que voltar do agachado para o modo inativo, clicando na
segunda regra de transição Isso é voltar
do agachamento para a corrida. Vou arrastar isso
e aqui podemos escrever N B e esse
chamado N lingote Basicamente, o que estamos dizendo
é que se o agachamento é falso
, queremos voltar
ao modo de execução porque não
estamos mais agachados Será falso
quando os evalu não estiverem agachados, porque nós o configuramos aqui para cair na Vamos continuar e
compilar. E agora você pode ver que todos os erros desapareceram. Agora vamos ver se está
faltando alguma coisa. Conectamos tudo aqui à
direção e à velocidade do movimento Na verdade, vamos
experimentá-lo. Vamos clicar em Jogar. E eu vou clicar em, na
verdade, estou preso
aqui como jogador. Deixe-me clicar em jogar
novamente. Agora estou andando. Como jogador aqui, vou manter
o controle para me agachar. E você pode ver que estou
agachado. Está funcionando. Mas você pode ver nas
minhas outras telas não
estou agachada Isso ocorre porque agora estamos
trabalhando no multiplicador. Você pode ver que estou
agachado como servidor,
os outros não conseguem
ver. Estou agachado No entanto, se eu pegar esse
cliente aqui e me agachar, você pode ver que o
servidor pode ver que estou agachado desse jeito se eu estiver agachado como cliente,
mas se
eu estiver agachado como servidor, eu estou agachado No entanto, os clientes não conseguem
ver que estou agachado. E lembre-se de que, na lição
anterior, eu disse que estamos trabalhando
no modo multijogador. E o servidor tem que enviar as informações de volta ao
cliente e dizer aos clientes,
ei, estou agachado agora,
atualize minha animação O servidor precisa enviar essas informações, caso contrário eles não poderão ver o que estou fazendo. E é isso que
faremos na próxima lição com
a replicação de
variáveis
32. 3.21 Replicação de variáveis: Certo. Vamos consertar o
agachamento Agora, antes de fazer
isso, vou clicar aqui e
selecionar dois jogadores. Porque eu não quero carregar muitos jogadores o tempo todo. Se eu clicar em Play, você pode
ver aqui como antes, se eu me agachar no servidor,
o cliente não consegue Estou agachado, eu, estou
agachado no cliente. O servidor pode ver no próprio servidor
que eu estou agachado Lembre-se, como antes, de enviar informações
ao cliente e dizer a ele que agora estou agachado Isso é muito fácil de fazer. Então, se você for até a base de
jogadores agachada, isso é basicamente o que está
errado agora no plano da
animação Se voltarmos às regras de
transição, temos essas regras de transição
retiradas desse ouro aqui Esse lingote controla se
estamos agachados ou não aqui A variável, essa
informação dentro daqui, precisa ser enviada ao cliente Se você clicar nele, poderá ver as variáveis também podem ser
replicadas, não apenas os eventos,
você pode ver o evento Já o replicamos antes
para ser executado no servidor, mas as variáveis
também podem ser replicadas Se você clicar nessa variável, verá que a replicação
aqui está definida como nenhuma Mas precisamos enviar essas
informações para o cliente. O cliente também tem as
informações se estamos agachados ou não clicando aqui e configurando isso
para replicá-las E ele terá o símbolo aqui porque é replicado. E agora eu posso clicar em Compilar. Agora, é muito importante saber que as variáveis só podem ser
replicadas por meio do servidor Você nunca pode pegar
uma variável aqui. Por exemplo, se,
digamos que eu esteja no cliente aqui
e cole assim, você nunca poderá fazer isso. Ele não pode ser replicado
por meio do cliente, as variáveis só podem ser
replicadas no Muito importante lembrar
que você não pode definir uma variável e replicá-la
por meio do cliente, nunca vai acontecer Aqui você pode ver que ele
está sendo executado no servidor porque
temos esse switch autoridade e está
sendo executado no servidor e se replicando, assim
como no controle remoto. Na
verdade, está sendo executado
no servidor porque está sendo executado
primeiro no servidor
e, em seguida,
replicamos essa variável Então, essa foi, na verdade, a única
coisa que tivemos que fazer, basta clicar nela e
configurá-la para replicá-la Agora, se pudéssemos reclamar, agora, como você pode ver, eu sou o servidor Agora, se eu
maximizar isso um pouco. Assim, você pode ver que, se eu me
agacho como servidor, agora
estou agachado tanto no cliente quanto
no E se eu sou o cliente
e também estou agachado, estou agachado no
cliente e no servidor Às vezes, também é
bom clicar aqui, ir para o modo Net e
jogar como dois clientes. Então vá em frente e jogue. É sempre bom
testar nos dois sentidos. Então, como servidor e cliente, mas também como
cliente e cliente para ver se eles
realmente conseguem se ver. Se eu me agachar no cliente, o outro cliente
também poderá me ver Está funcionando e vamos
voltar e trocá-lo para
jogar como servidor de escuta. Por enquanto, vamos salvar tudo e
passar para a próxima lição.
33. 3.22 Smoothing de animação: Quando eu vou em frente
e jogo, você pode ver que minha animação não
é muito boa. Então, se eu andar por aí, você
pode ver a transição muito rapidamente , e quando eu me agacho
aqui, isso De repente, eu
posso realmente suavizar isso um pouco
e fazer com que pareça bom. E, na verdade, é apenas um
ajuste que precisamos fazer. Se você for até o player e
clicar nas animações. E você clica, por exemplo, nessa corrida de espaço de combinação. Você tem esse
aqui chamado Weight Speed. Se você colocar em
algo muito baixo, como um, por exemplo. E você pode clicar em jogar e
ver o que acontece. Você pode ver se eu começar a
andar, correr, você pode ver a transição
para aquela animação em execução Se eu parar, ele
volta por execução, ele faz a transição. Você pode ver agora que é muito
suave quando eu corro e paro. Portanto, temos que colocá-lo em um
número que pareça bom, sem muita suavização Se você aumentar esse número
, será menos suave. Normalmente, algo em torno de
56 é muito bom. Cinco agora está
muito melhor do que antes. Se você colocar em
algo como três, essa velocidade de peso,
vamos colocá-la três e vamos clicar em play. Às vezes, não gosto de exagerar porque o personagem de alguma forma se sente
pesado quando eu ando por aí. Mas você pode ver que agora está transição muito
mais do que Acho que três é muito baixo. Então, podemos tentar
quatro e clicar em play. E então podemos correr
e ver o que acontece. Quatro ainda é muito pesado. Acho que cinco foi um bom número. Ou para suavizar
aqui, se você simplesmente
correr assim, fica bem Talvez até 5.5 eu não goste
que seja muito baixo aqui, 5.5 Eu não gosto que
o personagem pareça muito pesado. Vamos fazer isso com
os outros. Vamos clicar no agachamento, colocar a velocidade do peso em
5,5 E clicar na caminhada,
colocar a velocidade
do peso em 5,5 também Vamos
clicar em Arquivo e Salvar tudo. Vamos clicar em Jogar. E agora você pode ver que
quando estou correndo, quando estou agachada, ela também
está se suavizando Na verdade, você pode ver muito
mais a
diferença entre se agachar Acho que se eu dissesse o
agachamento até zero novamente. E se eu clicar em play, você pode ver a
transição muito rápida Quando estou agachado,
é quase antinatural. Se eu colocá-lo no 5.5 e eu
salvar e clicar em jogar. Agora, quando eu me agacho e faço isso, você pode ver que está muito
mais suave do que Não parece antinatural. Apenas um pequeno
ajuste que pode fazer com suas animações pareçam muito melhores quando você as
suaviza
34. 3.23 Caminhada multijogador: Agora estamos prontos
para fazer a caminhada. Agora, caminhar é o
mesmo que se agachar. Se voltarmos para o jogador
e formos para a base de jogadores, na verdade
é o
mesmo processo que estamos fazendo
aqui com o agachamento Tente fazer isso sozinho, se puder, e tente ver até onde
você chega sem minha ajuda. É um exercício muito bom se você quiser continuar comigo, vamos continuar. Vou prosseguir com a
entrada e criar uma nova. Vamos até Entrada e
clique em Ação de Entrada. Vamos chamar esse. Eu ando. E vamos prosseguir para
dentro daqui. Dentro daqui, nós
realmente não precisamos fazer nada. Vamos ver o
contexto de mapeamento de entrada aqui. Vamos clicar no sinal de mais e
adicioná-lo aqui embaixo como a caminhada. Para caminhar,
vou segurar a tecla Shift, clicar nesta, clicar em
Shift no meu teclado. Quanto aos gatilhos,
vou clicar aqui,
dois pontos positivos, e o primeiro é
pressionado e o segundo
é pressionado e o segundo
é Este botão será acionado
sempre que eu pressioná-lo para andar e sempre que eu o
soltar para parar de andar. Agora vamos continuar
e economizar aqui. E vamos voltar para a base de
jogadores aqui. Vou escrever,
clicar e escrever
uma caminhada e selecionar a ação de entrada
recém-criada. Agora, para este,
assim como antes, vamos tirar desse lingote
e escrever uma ramificação a partir do verdadeiro Estaremos andando porque é quando
pressionamos a tecla shift. Quando liberarmos o turno, pararemos de caminhar até
aqui partindo do falso. Vamos criar uma nova função
como antes. Vou chamar isso de caminhada. Vamos voltar ao gráfico
de eventos. Vou arrastar essa caminhada até aqui e conectá-la aqui.
E arraste-o novamente. E conecte-o aqui embaixo. Agora, novamente, assim como antes, precisamos de um lingote para
andar ou parar de andar Vou compilar
e clicar
na entrada e chamar
isso de B Agora, para esse
lingote, vou ajustá-lo para verdadeiro quando
eu quiser andar, e vou ajustá-lo para
cair quando eu parar de andar Agora, assim como antes,
quero
executá-lo no servidor
quando sou o cliente. Então, vou clicar com o botão direito do mouse
aqui e dizer server walk. E lembre-se de configurar as réplicas para serem executadas
no servidor e de forma confiável Agora vamos seguir em frente e
fazer essa caminhada conectada, pegar essa entrada para o ouro e colocá-la
no evento para que ela crie
automaticamente
essa variável aqui Ok, a maioria acabou. Vamos entrar na
função de caminhada aqui dentro. Vamos clicar com o botão direito do mouse nessa e promovê-la em uma variável
local. E esse podemos
chamar de walk local. Vá em frente e arraste a partir daqui
e diga que o switch tem autoridade. Agora, assim como antes, queremos primeiro executar o código
no servidor. Se formos o cliente, arraste
daqui e diga server walk, aquele que acabamos de
criar e agora o estamos executando primeiro no servidor. Lembre-se de pegá-lo e
conectá-lo com o
clique duplo da caminhada para criar um
nó redondo e deixá-lo um pouco
mais organizado. Agora vamos pegar essa variável de caminhada
local e colocá-la aqui. A partir daqui, à direita, uma filial
e vamos conectá-la. Porque temos que perguntar: isso
é verdadeiro ou falso? Porque se for verdade,
queremos caminhar. Se cair,
queremos parar de andar. Talvez queiramos começar a correr. Vá em frente e conecte
tudo o que ele precisa para ficar assim. Agora, a partir daqui, o que
basicamente queremos fazer
é que você possa ver
no componente de movimento do personagem que temos algo chamado
velocidade máxima de caminhada. Isso é exatamente o
mesmo que correr. Não sei por que é
chamada de velocidade de caminhada, mas na verdade também é a velocidade de
corrida desta. É isso que queremos
ajustar quando
queremos andar e não andar. O que precisamos fazer é pegar esse
componente de movimento do personagem e partir daqui e dizer definir a velocidade máxima de caminhada. É isso que queremos ajustar. Queremos conectá-lo aqui. É claro que
realmente não precisa ser alto. Se você acessar o componente de
movimento do personagem agora, a velocidade de corrida é 600. Quando queremos caminhar, precisamos reduzi-lo para um número menor. Na verdade, posso clicar com
o botão direito do mouse neste promover isso para uma variável. Vou chamar
isso de velocidade de caminhada. Não gosto de ter números
estáticos como esses. Vamos compilar e clicar nessa variável de velocidade de caminhada e
configurá-la para algo como, vamos configurá-la para 100 ou na verdade, apenas 200 por
enquanto, número aleatório Vamos mudá-lo
mais tarde, quando
não estivermos mais andando. Vamos pegar isso
e colar aqui. Vamos transformar isso em uma variável
novamente e chamá-la, por exemplo, de velocidade de execução. Vá e coloque-o aqui e
conecte as cataratas a ele. Quando não estivermos mais andando, voltaremos à nossa velocidade de corrida. E clique na velocidade de execução. Lembre-se de definir
o valor padrão. Vá em frente e compile Primeiro, ele pede que você compile
o plano Vá em frente, compile e defina-o para 600, como padrão E agora estamos correndo novamente. Agora, assim como antes,
preciso de um lingote
para usar dentro do meu projeto de
animação Vou fazer um novo lingote aqui,
Bullet Walk. Agora eu posso pegar essa atração e configurá-la como verdadeira
quando estou andando. E eu copio e colo aqui embaixo. E defina como falso
quando eu não estiver andando. Agora, lembre-se de que isso precisa ser replicado para que o cliente
saiba se isso é verdadeiro ou falso para que o
plano de animação
prossiga e configure isso para
replicá-lo também Com isso concluído,
terminamos e temos que seguir em frente com
o plano de animação Mas vamos
experimentar. Vamos clicar em jogar. E se eu clicar em Shift, você pode ver que estou andando agora. Estou andando devagar. A animação que precisamos
corrigir na próxima lição. Mas, como você pode ver, se
eu deixar de andar, posso correr novamente. Isso é muito, muito legal. Vamos seguir em frente e fazer
o plano de animação.
35. 3.24 Modelo de animação ambulante: Agora, para o plano de animação, vamos até a animação
do jogador e
abrir nosso plano de animação Agora, dentro daqui,
lembre-se de que, dentro
da máquina de
estado do gráfico de animação, vamos arrastar a partir daqui e
criar outro estado. Vamos chamar isso de uma caminhada. Agora, para este, vamos
clicar duas vezes nele e abri-lo. Assim como antes, criamos
esse espaço de mistura de caminhada. Vamos
conectá-lo aqui. E vamos arrastar a
direção do movimento e
conectá-la à variável de
velocidade de movimento. E conecte-o também. Vamos
clicar e compilar agora. Vamos voltar aqui. Como você pode ver,
assim como antes de
definirmos a regra de transição, precisamos primeiro acessar o gráfico de
eventos e obter ouro
que acabamos de fazer na mesma
interface aqui Podemos arrastar e
dizer andar como variável. Podemos obter esse
lingote com este. Podemos escrever clique
e promover isso para uma variável e chamá-la, por exemplo, de caminhar. Podemos dizer que está andando. Vamos prosseguir e conectá-lo. Clique duas vezes aqui para
fazer uma anotação de redirecionamento,
organizá-la, sem mais nem menos Vamos compilar e
voltar ao movimento aqui. Agora, para a regra de transição, agora estamos fazendo a transição
da corrida para a caminhada Podemos arrastar, isso é
entrar aqui, sem mais nem menos. Se estamos andando, queremos fazer a transição
de corrida para caminhada. Vamos continuar e compilar. Vamos voltar novamente. Temos que arrastar isso
daqui para aqui, porque agora
queremos fazer a transição da caminhada para a corrida. Se não estivermos mais andando, arraste isso e pegue e diga bullying se você
não estiver mais andando, que significa que esse
bullying ambulante será falso, então queremos
começar a correr Saia, clique e compile. Agora isso vai funcionar. Se você clicar em Jogar e
clicar no botão de mudança, poderá ver como estou andando. E tudo está funcionando
muito bem. Tudo está funcionando. Você pode testar a animação se algo estiver errado
com ela. Você provavelmente fez
o espaço de mesclagem errado. Mas você pode ver que tudo está
funcionando em todas as direções. No entanto, há um
problema no momento. Se você clicar em agachar e clicar no botão andar ao
mesmo tempo, agora ele não está andando,
não está em transição Isso ocorre porque você também
precisa arrastar isso para isso para criar regras de
transição. Se você está agachado
e quer seguir em frente e começar a andar, vou apenas
afastar isso um pouco que haja mais espaço,
mais organização Agora vá em frente e clique
nessa regra de transição. O que deveria acontecer? Quando devo fazer a transição da
caminhada para o agachamento Você pode pegar isso caminhando
e trazê-lo aqui novamente, como
antes do bullying Se eu não estou andando, agora estamos passando
da caminhada para o agachamento Então, não estamos mais andando. Não estou mais andando, mas estou agachada Se agachar é verdade, mas correr é falso, e temos que arrastar a
partir daqui e dizer:
selecione esse lingote, vá em
frente e Se você não está mais andando
e está agachado, siga em frente e execute esta regra de
transição Vamos voltar aqui e
vamos atacar
daqui, do agachamento até a caminhada desse
jeito e clicar
duas vezes nela Agora, quando você deve transição de
agachado para andar Isso é se eu não estiver
mais agachada, pegando essa. Se eu não estiver mais agachado, desse
jeito, estou andando Eu quero fazer a transição
para a caminhada. Se eu não estou
mais agachado, mas estou andando, quero fazer a transição Se eu
clicar em jogar agora, você pode ver se eu me agacho Se eu segurar o turno para andar
e me soltar do agachamento, você pode ver que estou Também podemos fazer a transição da
caminhada e do agachamento. No entanto, você pode ver
que ainda há um pequeno erro. Você pode ver se eu me agacho, seguro, desloco para andar e
vejo que estou Mas se eu segurar o controle para me agachar, você pode ver que minha velocidade de movimento é um pouco maior porque
na verdade estou agachado Está tomando a velocidade de agachamento. Isso é algo para fazer
dentro do nosso jogador, na base de jogadores aqui, dissemos essa velocidade de corrida e
velocidade de caminhada. Estamos automaticamente
correndo nessa velocidade de caminhada aqui sempre que estamos andando, mesmo estando agachados Esta é uma
era pequena e quero
apresentar a vocês mais tarde
as enumerações E podemos tornar esse
sistema muito mais inteligente,
mas, por enquanto,
tudo está funcionando E vamos
para a próxima lição.
36. Salto para multiplayer 3.25: Faça o salto. Vamos prosseguir
na pasta de plantas, vá para a entrada do player Vamos seguir em frente e
fazer uma ação de entrada. Assim como antes. Você pode clicar com o botão direito aqui, ir para Entrada e criar
uma ação de entrada. Vamos chamar isso de
salto para dentro daqui. Na verdade, não precisamos
fazer nada, vamos encerrar
a ação de entrada. Em vez disso, vamos entrar no contexto do
mapeamento de entrada, vamos minimizar tudo
isso para que possamos ver o que estamos fazendo. Vamos clicar no sinal de mais
aqui e adicionar o salto. Se você pesquisar por pular e
selecionar a
ação de entrada que acabou de fazer. Quanto aos gatilhos,
assim como antes, vou clicar
no sinal de mais aqui e
selecionar a impressora Sempre que eu pressiono, vamos
escolher a barra de espaço. Então eu posso clicar aqui e
clicar na barra de espaço. Então, sempre que eu clicar
na barra de espaço, essa ação de entrada
será acionada. Agora que isso foi adicionado, você pode clicar em Salvar. Vamos fechá-lo e ir até a base de jogadores. Dentro da
base de jogadores, onde
temos todos os nossos movimentos
aqui no gráfico de eventos, você pode clicar com o botão direito do mouse
e pesquisar um salto
e, em seguida, selecionar
esse evento de salto. Agora, para este evento de salto, o que queremos
fazer é simplesmente arrastar partir daqui e pular para a direita. E então você pode selecionar
essa função chamada salto. Agora, para fazer isso funcionar,
na verdade, isso já está
funcionando, como você pode ver aqui. Fizemos tudo isso
caminhando e agachando,
mas o salto no motor Unreal já
está replicado
e no já
está replicado Então você realmente não precisa
fazer mais do que isso. Você pode ver se eu compilo agora e se eu clicar em jogar e você
pode clicar na barra de espaço, você pode ver que estou
pulando agora A animação não está
correta porque
não definimos nada dentro
do esquema de animação Mas, como você pode ver
aqui, se eu pular como cliente, ele funciona e se eu pular como
servidor, também funciona. Jump inside of Wheel Engine já
é multijogador. Na verdade, você não precisa
fazer mais do que isso. No entanto, antes de fazermos isso, eu só quero ter certeza de
que o jogador não pode enviar spam para
o botão de pular quando já
estiver pulando. Porque você pode ver
aqui, se eu arrastar
daqui e escrever uma string de impressão. É sempre bom usar
uma string de impressão para depurar, para que possamos compilar
e clicar em Play Você pode ver se eu apenas
envio spam para meu botão Space. Eu posso enviar spam para o salto
mesmo estando no ar. Para corrigir isso, apenas para
torná-lo mais otimizado, podemos pegar esse componente de
movimento do personagem que podemos arrastar daqui
e dizer que está caindo. Basicamente, isso é dizer se o jogador
está no ar ou não. Podemos pegar isso aqui
e agora vou dizer que não é para não lingotes O que estamos dizendo é que só
queremos pular sempre que meu personagem não
estiver caindo. Isso significa que o
personagem não está
no ar e, portanto,
eu quero pular. Se o personagem estiver no
ar, eu não quero pular. Podemos arrastar daqui,
pegar isso e fazer um galho. Podemos afastar isso um
pouco para que tenhamos mais espaço para trabalhar
e conectá-lo aqui. O que estamos dizendo é que se meu
personagem não está caindo, ou
seja, meu personagem não
está pulando,
queremos ir em frente e pular. Se você compilar e clicar em Reproduzir e enviar spam para o botão de pular, na verdade, vamos
escrever uma sequência de caracteres impressa aqui para que você possa ver
o que está acontecendo Vamos compilar, salvar e jogar. Se eu pressionar meu botão Space, você verá que só posso enviar spam sempre
que cair
no chão. Só é acionado uma vez. Isso só torna o jogo mais otimizado, apenas para torná-lo
um pouco mais limpo aqui. O que você pode fazer
é opcional, é claro, mas o que você pode fazer
é passar por cima desses nós e escrever click and say collapse
em uma função. Agora, essa função que você
pode chamar, por exemplo, não
está pulando Em vez de fazer isso com as entradas aqui, pinos de
execução Este é basicamente
apenas obter informações se você
clicar duas vezes nessa função aqui, se clicar duas vezes nela
e entrar nela. E eu vou
organizar isso um pouco. Você pode ver que estamos apenas
recebendo algumas informações. Não estamos definindo
nenhuma informação nova, estamos apenas verificando se o
jogador está caindo ou não. Em vez de ter
esses pinos de execução, isso realmente não
faz sentido para funções que apenas
obtêm informações Podemos clicar na
função e selecionar puro. Pure significa apenas que essa é uma
função que obtém informações. Não precisamos executá-lo
por meio do código porque não
estamos realmente definindo
nada de novo aqui. Podemos simplesmente arrastá-los juntos. E agora você está dizendo que se
o jogador não está pulando, você pode ir em frente e pular E você pode ver que pode
tornar as coisas um pouco mais limpas se
as reduzir a funções. Então, você pode
clicar em Compilar e jogar e testá-lo. E tudo está funcionando tanto
no cliente
quanto no servidor. E vamos seguir em frente e fazer
o plano de animação.
37. 3.26 Blueprint de animação de salto: Faça a animação.
Vamos às animações. E dentro do plano de
animação do jogador. Agora, dentro daqui,
vou clicar aqui
e clicar com o botão direito do mouse e fechar as guias à direita para que
fique mais limpo Novamente, vou
abrir o gráfico de animação. Abra a máquina de estado
que fizemos aqui dentro. Para o salto,
precisamos de três estados. Para o primeiro,
você pode arrastar a partir daqui e
criar um novo estado. Esse eu vou
chamar de jump start. Depois, você pode arrastar
a partir daqui e criar um novo estado chamado
jump loop ou jump air. E você pode arrastar a partir
deste e criar um terceiro estado chamado jump end. Agora, para a extremidade de salto,
você pode pegá-la e conectá-la novamente
à marcha lenta. Agora temos três estados e
precisamos adicionar as
animações a eles. Como isso vai
funcionar é que, quando eu pulo, tenho uma animação de
início de salto Se eu clicar nele e pesquisar por jump aqui
nas minhas animações, você tem esse chamado
Jump Start Unarmed Apenas certifique-se de que seja
o desarmado. Clique e arraste até
aqui e conecte-o. Se você quiser ver a aparência
da animação, você sempre pode clicar
duas vezes nela. E isso é o que parece. Temos uma
animação inicial de salto que
vamos ver antes de irmos para
a animação em que
estamos no ar Vamos voltar aqui. Agora que conectamos isso,
vamos voltar, clicar no salto aéreo e pegar este chamado
Jump A desarmado E coloque aqui
para o último. Vamos voltar ao ponto de salto. Vamos pular desarmados. Se eu conseguir encontrá-la, essa
na verdade salta de terra desarmada. Podemos pegar isso e
conectá-lo e continuar compilando, ok Agora, assim como antes, temos que definir essas regras de transição, vamos clicar na primeira. A primeira, basicamente
quando estamos no ar, como fizemos aqui
na base de jogadores, se você voltar como
fizemos aqui para pular, se o jogador estiver caindo, significa que estamos no ar. Isso significa que realmente
queremos pular. Temos que ir primeiro
no gráfico de eventos e codificar que aqui como jogador, assim como você fez
na base de jogadores,
você pode arrastar a partir dele e obter o componente de
movimento do personagem. E então, a partir do componente de
movimento do personagem você pode arrastar e dizer que está caindo. Se estivermos caindo, você pode clicar com o botão
direito do mouse
e transformá-la em
uma variável e
chamar essa variável de “está no ar”. Isso significa que estamos no salto. Você também pode chamá-lo de
is jumping se quiser prosseguir e compilar o Now
dentro do gráfico de animação Vamos voltar ao salto
aqui. Essa regra de transição. Vamos supor que isso esteja no
ar e conectado. Agora que estamos transferidos,
eu volto aqui. Estamos fazendo a transição para o ponto de
partida sempre que
estamos no Sempre que clicamos neste botão de
espaço aqui. Do início ao
salto, podemos clicar nisso. A função que queremos usar aqui é chamada de tempo restante. Se você clicar com o botão direito do mouse e
pesquisar o tempo restante, isso é chamado de proporção de tempo
restante. Apenas certifique-se de que seja uma proporção. Você pode arrastar a partir
disso e dizer menos, menos do que aqui e depois
conectá-lo. O que estamos dizendo aqui
é que queremos fazer a transição de uma
animação inicial para o salto, uma animação sempre que
o tempo restante da animação inicial for
menor do que qualquer número
inserido aqui. Por exemplo, se eu conectar
0.5 e compilar, vamos realmente
continuar com isso e eu
posso te mostrar mais tarde
o que isso está fazendo Então, vamos voltar aqui
para dar o salto aqui. Se eu clicar na regra de
transição entre o salto
aéreo e a ponta do salto, mas desta vez,
pousaremos sempre que
não estivermos mais no ar. Porque você pode
imaginar que o jogador está pulando e depois pousando novamente no chão Quando o jogador
pousa no chão, queremos reproduzir essa animação
de salto quando o jogador não
estiver mais no ar. Então, podemos obter isso, digamos não lingotes, e
podemos conectar isso Quando o jogador não estiver mais
no ar, queremos seguir em frente e reproduzir
a animação do jump end. Agora, para este
aqui embaixo, assim como antes, queremos escrever,
clique e
pesquise a razão de tempo restante para o terreno do salto quando
for menor do que algum
número que inserimos aqui. Em seguida, queremos
interromper a animação do jump end e
voltar para a corrida de adição. Para este, vou
escrever 0.5 novamente e
compilar agora, podemos experimentar
e ver o que acontece se você clicar em
reproduzir e maximizar isso aqui Quando eu corro e pulo, você pode ver que eu tenho uma animação de
salto inicial. Eu também tenho uma animação de jump
land. Você pode ver isso mais
claramente se eu colocar esse número em
algo muito baixo. Se eu voltar a este
também e colocá-lo em
algo muito baixo, você pode ver suas transições Se eu clicar em play jump, ele terá uma animação de jump start. E tem uma animação de Jump
Land. E veja que a
animação de jump land é mais visível. Agora parece que o jogador está deslizando
no chão quando
cai É assim que você controla
aqui
a proporção de tempo restante.
Se você clicar nela, quanto mais alto colocar, mais rápido
a animação
será cortada Se você colocar muito baixo, verá que a animação não
está sendo interrompida rapidamente. E parece que o
player está deslizando. No entanto, se você colocar em algo muito alto, por exemplo, 0,9 você pula, verá
que o jogador não
está mais deslizando. A animação do salto será
interrompida muito mais rápido. Quando esse é um número maior, você só precisa
sentar aqui e ajustar esse número, bem
como esse número. Para começar, basta
clicar em Jogar várias vezes,
tentar pular, ver
o que funciona para você, ver o que parece bom e
tentar ajustar esses números. Eu tento contornar isso, e o número que melhor
se encaixa para mim início
do salto é 0,8. Se eu
voltar para o final do salto, é 0,9. Isso é correto. Então, vamos clicar em Play e
ver como fica. Agora, se pularmos, você pode ver que
isso é o que parece. Você sempre pode ajustá-los
um pouco mais, se desejar. Mas acho que essa é uma boa rodada de
partida para o salto. Agora, o que você também pode fazer. Você pode ver aqui se eu
clicar em jogar e andar por aí segurando a tecla Shift para
andar e clicar em pular. A animação não está sendo reproduzida. Isso porque, lembre-se de que você precisa fazer a
transição da caminhada. Você
ainda não tem uma transição para arrastar da caminhada e fazer
a transição para
o salto. A partir daqui, você pode ver essa
regra de transição exatamente como antes. Assim como você fez
aqui em marcha lenta, você usa o Is in air bullion Você precisa clicar aqui
e usar a mesma coisa. Se você estiver no ar,
você pode fazer a
transição da caminhada para o salto. Agora, não tenho certeza se quero fazer a transição do
agachamento para o salto, mas você pode adicionar essa
mecânica ao seu jogo, mas não quero
adicioná-la Acho que não vou
aceitar isso assim. Então você pode clicar em jogar agora, e você pode andar pressionando Shift, você pode clicar no espaço. E agora você também pode ver
a transição para
a animação de salto quando
você está andando
38. 3.27 Introdução às enumerações: Agora, eu quero mudar alguma coisa com o
movimento aqui. Você pode ver se eu clicar na tecla Shift e andar e se
eu segurar o controle, você pode ver que eu realmente não consigo me agachar enquanto estou
segurando a Se eu segurar a tecla Shift para andar e manter o controle ao mesmo tempo, não
estou realmente agachada Eu tenho que pressionar Shift e
depois soltar a tecla Shift e depois pressionar C. Eu realmente
não gosto disso. Eu gosto, por exemplo,
se você clicar em Crow, pressionar Shift ao
mesmo tempo, ele vai andar
aqui assim Mas não está fazendo
isso agora. Eu tenho que soltar o
botão e então eu posso andar. E eu tenho que soltar o botão
de caminhada. E então clique em, no
agachamento antes que eu possa me agachar. E eu realmente não
quero fazer isso. Vamos corrigir
isso e tornar o sistema um pouco mais avançado para que ele
possa receber entradas como O que vamos usar
para isso são enumerações. Nessas aulas, eu só quero
apresentar a você as enumerações Você pode voltar para
a pasta de plantas e
clicar com o botão direito do mouse aqui e criar uma nova pasta e chamá-la de enoms ou enumerações Isso depende de você. Você pode clicar com o botão direito do mouse nessa pasta,
definir uma nova cor e usar a mesma cor de
antes dentro dessa
pasta. Clique com o botão direito do mouse, vá para o Blueprint e selecione esse chamado enumeração Vá em frente e faça isso,
e eu vou chamá-lo de prefixo e vou
chamá-lo de estados de movimento E você pode
abri-lo e ver que uma enumeração é basicamente
apenas uma lista Você pode clicar
aqui para adicionar um item. Se eu clicar aqui
algumas vezes, você pode ver que é uma enumeração é apenas uma lista
de itens que você pode fazer Pode ser uma lista de
qualquer coisa, por exemplo, uma lista de mantimentos, uma lista de armas, uma lista de estados de movimento Como estamos fazendo aqui apenas uma lista de tudo o que você deseja. Também pode ser uma lista
de itens que você pode saquear ou uma lista das partes que
você tem no jogo Qualquer coisa que você possa fazer uma lista, você pode criá-la aqui. Ao clicar nesses ícones, você pode remover os itens da lista. Para o primeiro,
vamos apenas fazer uma lista de estados de
movimento. O primeiro estado de movimento
que temos é correr. Então você pode clicar
aqui novamente. Em seguida, temos que caminhar. Agora, ele realmente não
precisa estar em uma ordem específica. Você pode, por exemplo,
correr primeiro ou caminhar primeiro e assim por diante. Mas agora temos
a corrida e a caminhada, e também temos o agachamento e você pode
ir em frente e economizar Então, é muito, muito simples e enumeração é apenas
uma lista de itens Nesse caso, estamos criando uma lista dos estados do movimento e os usaremos na próxima lição para tornar o sistema um pouco mais
avançado para o movimento.
39. 3.28 Mudando de variáveis de movimento para enums: Agora que criamos
a enumeração, vamos clicar no Vamos entrar na base
de jogadores. Agora vamos voltar ao gráfico
de eventos aqui. E eu vou arrastar essa
aba para o lado. Portanto, tem um pouco
mais de estrutura como essa para o primeiro. Por exemplo, para o agachamento, vamos entrar na função agachamento Dentro daqui, você pode ver que estamos agachados e estamos ajustando esse lingote para C
e Vamos tornar
esse sistema um pouco mais avançado para que ele possa
receber várias entradas. Vamos excluir
esses lingotes por enquanto. Vou arrastar isso para baixo
para ter mais espaço para, vamos criar uma nova variável. Essa variável,
vamos chamá-la de estado de
movimento para
o tipo de variável. Em vez de apenas criar
essas variáveis padrão, você também pode criar variáveis de qualquer coisa dentro do jogo. Por exemplo, você pode criar uma variável a partir da
enumeração que acabamos de Se você apenas
pesquisar estados de movimento, você pode ver aqui, esta é
a enumeração Apenas certifique-se de pesquisar o nome conforme você o escreveu, para o arquivo. Estados de movimento. Você pode ver aqui, se eu
voltar para a enumeração, ela se chama estados de Agora eu tenho isso como uma variável e posso
clicar e compilar Veja, se eu der uma olhada
aqui no valor padrão, você pode definir o item da lista
aqui para a enumeração Você pode configurá-lo para um desses
estados se estiver correndo, andando, agachado e assim por diante Você pode clicar e
arrastá-lo até aqui e escrever o conjunto. Você também pode ver a
enumeração aqui. Você pode configurá-lo como um
desses itens da lista. Você pode ver que isso é muito
bom e também
vamos usá-lo mais
tarde para os widgets Quando estamos criando a interface do usuário, podemos fazer uma lista da interface do usuário. Por exemplo, menu principal, menu pausa, menu de escape Podemos criar a interface principal do jogo. Assim, você pode
fazer uma lista de tudo o que é realmente
útil usar aqui. Em vez de apenas tê-la assim como uma variável
padrão, quero atribuir
vários valores a ela. Você pode ver se eu me
conectei, quero andar Em vez de apenas me agachar, você definirá essa variável
para caminhar No entanto,
isso será como antes, não
há realmente uma mudança. Você está apenas configurando-o
para andar e não andar. E você o está configurando para se
agachar e não se agachar. Agora eu quero que ele tenha várias entradas. O que
você quer fazer. Em vez disso,
quero clicar nisso, no tipo aqui de qual tipo de
variável ela deveria ser. E vou selecionar uma matriz em vez de
uma única variável. Agora, o que uma matriz é comparada a uma única variável ou
a uma única variável, você só pode
defini-la com um valor. Por exemplo, se eu configurá-lo para
caminhar na caminhada, isso substituirá esse
valor que eu defini aqui Para se agachar da matriz, você pode imaginá-la como uma caixa e você tem várias
entradas aqui Você pode ver se eu compilo. E quando você o transforma em uma matriz e clica
nesse sinal de mais aqui, você pode ver que pode
ter várias entradas Você pode ter a
corrida, a caminhada o agachamento ao
mesmo tempo em uma matriz, você pode imaginá-la como uma caixa E você está colocando todos esses
valores dentro da caixa. No entanto, se você tiver apenas uma
única variável padrão, é apenas um item que você pode configurar para caminhar,
agachar-se e assim por diante Mas para as matrizes, novamente, você pode imaginá-las como uma caixa Você está basicamente colocando todos esses itens
dentro da sua caixa e tem todos esses
valores armazenados para você. Outro uso de uma matriz é, por exemplo, quais itens
você tem em seu inventário? Por exemplo, você pode ter um triste, você pode ter um escudo e assim por diante. Assim, você pode ter vários itens
dentro do seu inventário. Você pode ver que
as matrizes são muito boas
ou, se você tiver
vários itens que deseja armazenar por enquanto, vamos excluir tudo aqui E vamos compilar
para o agachamento. Vamos arrastar esse
agachamento até aqui. O que queremos usar
é que, se você arrastar, você pode dizer definir
elemento de matriz para as matrizes Se você não conhece todas essas
funções, você pode basicamente arrastar a
partir daqui e escrever a matriz. Eu faço isso às vezes, se
há algo que eu esqueço ou não sei,
você pode escrever uma matriz. E você pode ver, você pode ver todas
as funções da matriz. Ele pode limpar, pode encontrar um item que você está perguntando
se ele contém um item. Você pode encontrar um item. Você
pode obter um item específico. Você pode perguntar se essa matriz está vazia e
fazer algo com ela. Você pode obter o
comprimento da matriz. Você pode ver que temos muitas
funções que você pode
usar para a matriz. O que vamos usar
é chamado de elemento set array. Vamos definir um item. Agora você também pode usar este
se arrastar e escrever um, por exemplo, write add here. E você pode escrever o agachamento. Quando estivermos agachados,
adicionaremos o agachamento a ele, o
item No entanto, este está funcionando
muito bem no modo single player, mas tenho muitos problemas
com ele no modo multijogador. Às vezes, ele não adiciona e eu tento depurar meu código por horas, e na verdade é só
esse que está funcionando Não há nada de errado com seu código. Este é muito ruim de
usar no modo multijogador, tem muitos bugs, então vou
excluí-lo e usar este. Se você quiser adicionar itens, use esse elemento de matriz sit em vez disso para
conectá-lo. O que eu quero definir é que,
quando eu vou me agachar, quero colocar o
item Estou fazendo basicamente o que estou
fazendo aqui por meio de código. Quando clico em agachamento, estou adicionando esse
agachamento Ok, vá em frente e verifique se
você excluiu todos os valores
padrão por enquanto. Então, agora estamos configurando
o agachamento. Agora, para o índice, ele apenas pergunta onde você
deseja definir o agachamento Se você clicar na matriz
e clicar no sinal de adição, verá que tem
um número de índice. E se eu clicar
no sinal de mais novamente, você verá que tem
outro número de índice. As matrizes começam no índice zero
e, quanto mais itens você
adicionar, elas serão incrementadas Será índice um, índice dois, índice 345 e assim por diante Então, começa no índice zero. Não começa no índice um. É muito importante saber agora
o índice, em vez de
apenas tê-lo, pois isso será um
problema. Porque se pegarmos isso e
copiarmos, colaremos na caminhada e também configuraremos a
caminhada para o índice zero. Você pode ver aqui que se
sobreporá se eu estiver andando, digamos, digamos que
eu esteja agachado Eu pressiono o botão de agachamento e
vou deletar todos
os outros Este eu vou
deletar, assim como este. Agora estou
agachado. Ele adicionou o agachamento ao meu índice zero Agora, se eu clicar na
caminhada ao mesmo tempo, ela sobreporá
meu agachamento aqui,
o valor do agachamento, porque vai
configurá-lo para o índice zero em vez O que você pode fazer é
tirar disso e dizer, último índice. Ele vai dar uma olhada em qual é o
seu último número de índice. No momento, meu último número de
índice é zero. Se eu adicionasse esses itens, por exemplo, meu
último índice seria três. Ele encontrará o último
índice que você pode extrair disso economizará perdas e adicionará
um a ele desta forma. E então você pode
adicioná-lo ao índice. O que você está basicamente
dizendo é encontrar o último índice número três, por exemplo, incrementado em um É aqui que você
deseja adicionar esse novo valor. Você nunca está sobrepondo
seus movimentos antigos. Vou deletar tudo isso. Compilar agora clique
em Size to Fit, porque isso basicamente
abrirá espaço para o novo
estado que você adicionará Ok, agora temos isso aqui. Agora, para o agachamento, se não
quisermos mais nos agachar, você pode pegar esse estado agachado arrastar a partir daqui
e dizer remover E você pode escolher
este chamado remover item e conectá-lo aqui. Quando não estamos mais
agachados, basicamente
queremos remover o agachamento desse item
ou dessa matriz aqui Quando estamos agachados,
adicionamos o item à matriz,
ao último índice mais um, o que significa que
não estamos
sobrepondo ao último item que adicionamos,
que talvez possa ser caminhar
ou correr E então, quando
não estamos mais agachados, queremos removê-lo
dessa matriz porque
não estamos mais agachados Ok, vamos compilar. copiar e colar tudo isso aqui. Copie e cole na caminhada. Vou deletar a velocidade de
movimento e a caminhada. Vamos adicionar a velocidade de
movimento mais tarde. Faça com que seja mais alavanca também. Vamos deletar tudo
isso. Vamos colar esse código, conectá-lo
e, para este, selecione a caminhada em vez disso. Se não estivermos mais andando, podemos pegar isso e dizer remova o item exatamente como
antes e conectado. E você pode remover a caminhada. E vá em frente e organize
um pouco mais. Certo, então temos a caminhada, agora estamos adicionando a caminhada. Apenas certifique-se de ter os valores corretos
para caminhar e também para se agachar.
Agachado, agachado Quando estamos agachados.
Vamos adicionar o item quando estivermos caminhando. Também vamos adicionar
o item. No entanto, agora, para a execução, não
temos realmente
um local onde possamos adicioná-la à execução. O que eu quero fazer é adicioná-lo por padrão. Se eu clicar no estado do
movimento, quero clicar
no sinal de mais aqui. E vou apenas adicionar
a execução como padrão. Porque quando estou andando ou quando não estou agachada
aqui e não estou andando, estou basicamente correndo Eu só quero ter esse estado de
movimento como padrão. Quando não estou agachado
e andando, ele funciona automaticamente Então você pode ver aqui, quando
eu começar a andar, ele adicionará essa caminhada
ao último índice mais um, que significa zero mais um. Isso aumentará a caminhada
até aqui e nunca se sobreporá ao meu estado de movimento de
corrida Agora que terminamos isso, na verdade
terminamos
com esse sistema. Você pode ver que está um
pouco mais avançado, mas vai funcionar
muito melhor do que antes. E você pode ver que quando
fazemos uma enumeração, podemos reduzir a quantidade
de variáveis que Porque agora, para se agachar, você pode
clicar em Excluir Você pode simplesmente excluir isso. E para caminhar também. Agora você pode ver que só temos uma variável para o agachamento e para a caminhada posterior Se você quiser criar uma
variável de sprint para o seu jogo, você pode entrar na enumeração,
adicionar a variável
de sprint
e, para o sprint novamente, como antes, ir em frente e torná-la Assim como o agachamento e a caminhada, você pode adicionar o sprint desse
jeito
40. 3.29 Mudando as regras de transição de animação: Agora que terminamos
com esse sistema, vamos compilar, salvar tudo Vamos encerrar isso
e, em vez disso, passar para o
plano de animação do jogador Agora, aqui,
recebemos alguns erros porque excluímos agachamento e
a caminhada
no gráfico de eventos do plano de
animação Você pode simplesmente excluir
esses,
o agachamento e a caminhada,
porque não
precisamos mais o agachamento e a caminhada, porque não
precisamos Você pode compilar e
ver que os erros desapareceram. Em vez disso,
o que queremos
usar aqui direcionar a partir daqui e dizer que o
movimento indica que
queremos usar essa matriz
que criamos. Vá em frente e pegue essa matriz. Você pode escrever lick it promovido para uma variável e simplesmente
chamá-la de estado de movimento aqui dentro
do esquema de animação Vá em frente e
conecte-o. E conecte o is em Er junto com ele. E vá em frente e
torne-o um pouco mais organizado. Agora, quando compilamos
, ocorre um erro. Não tenho certeza do que ele
realmente quer aqui. Se eu compilar novamente,
você pode ver que ele desapareceu. Não sei, foi
apenas um erro aleatório. Vamos ver o gráfico de
animação. Dentro do gráfico de animação,
vamos entrar aqui. Agora, queremos mudar todos os estados
de movimento do
primeiro , de inativo para
andar, por exemplo Você pode clicar aqui usando esse lingote
que usamos antes Vamos continuar e excluí-lo. Vamos considerar esse estado de movimento. Agora, para essa matriz,
o que
você pode fazer é pegá-la
daqui e dizer get. Basicamente, só
queremos começar a caminhar. Lembre-se, se eu
voltar para o jogador só para
explicar um pouco melhor. Em vez de quando
estamos andando, estamos basicamente adicionando o item de
caminhada a essa matriz. Agora, para a planta aqui, a planta da animação,
queremos fazer essa caminhada Não sabemos realmente em
que índice está, porque pode
estar no índice zero. Pode estar no índice um. Lembre-se de que nunca pode
estar no índice zero, porque no índice zero
estamos sempre correndo. Portanto, pode estar no índice um ou dois para
saber o que é isso. Em vez de apenas obter, você pode arrastar a partir deste
aqui e obter o último índice. Lembre-se de que usamos esse
na lição anterior
e, em seguida,
conecte-o aqui. Agora estamos obtendo
o último índice. Lembre-se de que qualquer que seja o último índice é o
botão atual que você está pressionando. Se eu estiver pressionando a caminhada, meu último indicador
seria andar aqui. Se você receber isso
e pedir para
obter o último índice dessa matriz, esse último índice será igual. Assim, você pode escrever um sinal de igual e selecionar essa enumeração
igual Se esse último índice
obtido dessa matriz for igual a
andar, isso é verdade. Isso significa que eu estou andando. Porque o último índice,
se estiver andando, significa que estou pressionando o botão de caminhada
e quero andar. Eu quero fazer a transição
do inativo para passar por isso aqui e
voltar e ir para este Vamos da caminhada para
a marcha lenta, em vez de usar
essa, não é andar Você pode copiar e colar
o código que você escreveu antes e pode simplesmente
colocá-lo em execução. Se o último índice for igual a corrida, significa que
não estamos pressionando a caminhada, porque a
removemos da matriz. E também não estamos pressionando
o agachamento. Como o
removemos da matriz, só
nos resta o estado de
execução. Se estiver funcionando, podemos
seguir em frente e correr
e isso estará correto. Ok, vá em frente e copie e
cole isso para todos eles. Isso foi para caminhar. Agora, para que o inativo se agache, você pode clicar aqui Em vez de
este ficar agachado, você pode colá-lo novamente Selecione agachamento, conecte-o. Volte e, do
agachamento, execute, novamente,
exclua esse passado, selecione
o em execução e conecte-o Você pode ver que é muito
mais fácil de usar, na verdade, mas este,
do agachamento para andar, podemos deletar tudo isso Não precisamos dele
agachado para andar. Isso significa que estamos andando.
Podemos selecionar a caminhada. E conectou a mesma coisa
da caminhada até o agachamento. Isso significa que estamos agachados. Podemos selecionar isso, selecionar
agachamento e conectá-lo. Agora trocamos todos eles. Nós os trocamos E esse é
só para pular. Nós realmente não precisamos
trocar nada aqui. Vamos compilar e
clicar em reproduzir. Vamos testá-lo. Você
pode ver como jogador, eu posso clicar no
controle, eu posso me agachar Se você segurar a tecla Shift
ao mesmo tempo, verá que agora consigo andar enquanto estou segurando o controle e a
tecla Shift ao mesmo tempo. Se eu largar o turno para agachar novamente, você pode
ver que está funcionando E se eu soltar o controle, estou andando aqui agora, a velocidade de movimento não
está correta e precisamos corrigir isso mais tarde. Mas você pode ver que agora posso
pressionar vários botões. Se eu deixar o turno
agora, posso andar normalmente. Eu posso segurar a tecla Shift novamente, segurar o controle ao mesmo tempo. Você pode ver que agora podemos segurar
os botões ao mesmo tempo. E ele fará essa ação em vez de antes de soltarmos o botão, antes que ele possa fazer essa ação. Tudo bem, então vamos
testá-lo também no cliente, só para ter certeza de que
funciona no modo multijogador. Para o cliente, eu posso me agachar, para o servidor, eu posso me agachar e não está
funcionando Se você se lembra do que eu disse, temos que replicar a
variável antes que ela funcione Então, se voltarmos para o jogador , eu clicar no estado do
movimento e clicar em Replicar. E replique, compile e clique em reproduzir como a pesquisa Novamente, se eu me agachar,
você pode ver que funciona. E se eu andar, funciona de novo. Também podemos testá-lo para dois
clientes apenas para ter certeza. Jogue como cliente e jogue. Agora temos dois clientes. Se você fizer o movimento,
ele funcionará corretamente. Agora, novamente, para fixar a velocidade de
movimento mais tarde. Mas agora você pode ver que tudo
está funcionando corretamente.
41. 3.30 Fixando o tamanho do jogador: Antes de continuarmos fixando
a velocidade de movimento, precisamos corrigir o tamanho do
personagem. Porque agora você pode ver que, como personagem, se eu andar por aí, sou um personagem muito pequeno e
temos que torná-lo maior. Não tenho certeza se
meu mapa é muito pequeno ou se
são esses personagens que eu importei do mercado.
Eles são muito pequenos. De qualquer forma, isso
realmente não importa. O que temos que fazer é
aumentar o tamanho do jogador. Essa será a solução
mais fácil. Vamos clicar na base
de jogadores na malha. Lembre-se de que você precisa fazer
isso na base de jogadores. Ele o
aplicará automaticamente ao encontro terrorista, clicando o
terrorista
na base de jogadores. Clicando nesse personagem, tentei testar um
pouco com os tamanhos. Eu tentei ampliar isso algumas vezes para
ver o que há de melhor aqui. Mas se você clicar na malha
e clicar nesse cadeado, você pode ver se você simplesmente
escrever um número aqui, o y e o z não estão
escalando junto com o x. Na verdade, não estão
escalados Você pode clicar nesse cadeado. Isso significa que se você
alterar um número, ele será alterado
para todos eles. Extrema direita, 1.7
aqui, por exemplo. E você pode clicar em Compilar
e clicar em Jogar Você pode ver que, se eu
andar por aí agora, sou muito grande em
comparação com o ambiente. Você pode tentar
testar tamanhos diferentes. Tente percorrer
seu ambiente e ver como ele se parece. Acho que talvez seja
um pouco grande demais. Vou diminuí-lo para 1.6. Vá em frente, compile
e clique em Play E tente andar
agora pelo ambiente para ver como sua altura é
comparada à das caixas. Você pode até dar uma volta por
aqui e talvez
andar nessa rampa para ver o
tamanho e subir até aqui Acho que está muito
melhor do que antes. Vou usar esse 11.6
se tivermos problemas mais tarde, sempre
podemos
alterá-lo e corrigi-lo mais tarde Podemos simplesmente mudar
o número aqui. No entanto, acho que
isso é bom agora. Também temos que consertar
essa cápsula de colisão. Porque se eu correr agora, talvez eu vá até essa
parte e entre aqui. Você pode ver que eu me sobreponho
a tudo. E eu posso pular na parede. E isso é porque você
precisa aumentar o tamanho dessa cápsula
de colisão novamente. Se eu clicar aqui e
ir para a vista certa, por exemplo, posso aumentar
a metade da altura da cápsula, posso clicar no personagem. Mova o personagem para baixo para que
o pé fique na parte inferior. Aqui você pode ver que eu tenho que
aumentá-lo um pouco mais. Então, se eu clicar na cápsula de
colisão novamente, aumente-a, talvez
algo como 150 E eu posso clicar no personagem novamente, mover o personagem para baixo. Ele se encaixa muito
melhor do que antes. Agora, isso realmente não
precisa ser preciso. Nós vamos criar um sistema
melhor mais tarde. Mas basta clicar
aqui, verifique se o pé está na parte inferior. Aqui, você pode clicar
nesta cápsula de colisão. Agora você provavelmente
precisará ampliá-lo. Você pode clicar,
clicar na vista frontal, agora temos que aumentar o
raio um pouco. E vou
torná-lo um pouco mais largo do que esses braços para que eles não
colidam com os objetos Algo assim,
talvez 60 exatamente. Podemos seguir em frente
e clicar em jogar. Agora podemos andar por aí. É muito mais
preciso do que antes. Você pode tentar
entrar aqui e ver que isso não
permitirá.
Temos uma caixa pequena. Se você clicar no controle,
poderá caminhar até aqui, mas eu também posso sair do controle e você pode ver que estou
sobrepondo agora Temos que corrigir esses
pequenos problemas mais tarde Mas você pode ver
que geralmente tudo está funcionando bem, o tamanho do caractere é
muito melhor do que antes. Então, vamos continuar.
42. 3.31 Definindo a velocidade de movimento: Agora que melhoramos
nosso sistema de movimento, vamos definir
a velocidade de movimento. Vamos encerrar isso. E eu vou voltar para o jogador na base de jogadores. Dentro daqui, o que eu quero
fazer é criar uma nova função. Vamos clicar no sinal positivo aqui em cima. Vamos escrever F, definir a
velocidade de movimento para esta função. Simplesmente o que eu quero
fazer é pegar esse componente de
movimento do personagem e definir a velocidade máxima de caminhada. Isso é simplesmente o que
eu quero fazer agora. Quero definir essa velocidade máxima de
caminhada
dependendo se o jogador está correndo
, andando ou agachado Agora, a maneira de fazer
isso é direcionar a partir desta e dizer selecionar. E você pode ver
esse chamado select. É a primeira vez
que estamos usando esse. E este é muito,
muito útil em jogos ou, aqui basicamente, em todos os jogos
que você cria. O motor real com plantas permite que você selecione uma opção dependendo do
que você conecta aqui Digamos, por exemplo, que você esteja
conectando uma arma aqui. E dependendo da
arma que você estiver conectando, você terá a velocidade de
tiro ou quantas balas
você
tem nessa arma e assim quantas balas
você
tem nessa arma e Portanto, uma nota muito útil
para usar neste caso. Vamos definir
a velocidade de movimento dependendo se estamos correndo, agachados ou andando.
Na verdade, precisamos dessa velocidade de
movimento novamente Vamos obter o último
índice exatamente como antes. Lembre-se de que
o último índice é o botão mais recente que
pressionamos . Vamos
arrastar a partir daqui novamente
e dizer pegue uma cópia, e vamos conectar este. Ok, agora estamos recebendo
o movimento mais recente. Estamos pressionando o teclado e vamos arrastar a partir disso
agora, em vez de antes, arrastamos e escrevemos da mesma forma e fizemos assim Agora, para a seleção, agora vamos
simplesmente obter o último índice e ver o que o jogador está pressionando no
momento E podemos arrastar a partir disso
e conectá-lo aqui. E agora você pode ver a
corrida, a caminhada e o agachamento. E a razão pela qual você vê
isso é porque está simplesmente retirando dessa enumeração que
escrevemos Se você adicionar mais coisas a essa enumeração, também
adicionará mais opções O que quer que você adicione a
essa enumeração, podemos ver que é muito útil agora, sempre que você estiver correndo,
você pode ter essa variável de velocidade de
execução Você pode arrastá-lo e conectá-lo aqui sempre que estiver
andando, você pode conectá-lo aqui
sempre que estiver agachado Na verdade, ainda não temos um. Vamos clicar com o botão direito do mouse nessa,
transformá-la em variável
e chamá-la de velocidade de agachamento Vamos continuar e compilar agora. Por enquanto, eu realmente não tenho números de movimento
específicos, vamos
ajustá-los mais tarde. Por exemplo, para a corrida, você pode escrever 1.000
para a caminhada, você pode escrever 500
para o agachado, você pode escrever Isso é só para ver se
funciona e você pode seguir em frente
e torná-lo mais organizado. Tudo bem, para este
conjunto de velocidade de movimento, o que eu quero fazer é
voltar ao gráfico de eventos. E vamos começar com o agachamento. Para o agachamento, estamos
fazendo o agachamento aqui. E então precisamos pegar essa velocidade de movimento definida
e configurá-la aqui. Também aqui embaixo, precisamos definir a velocidade
do movimento, arrastando-a até aqui,
definir a
velocidade do movimento, porque quando não
estamos
mais agachados, novamente,
precisamos pegar o
último índice e ver se ele está correndo,
andando ou se Precisamos fazer isso
também para caminhar. Vamos arrastar novamente a velocidade
de movimento definida. Conecte-o. E a mesma coisa aqui
embaixo, defina a velocidade de movimento. Agora, quanto à corrida, não
importa, porque se removermos a
caminhada e o agachamento, ela correrá aqui como o último indicador
e aumentará a velocidade de corrida Ok, vamos clicar em Play , testar
e ver
se tudo funciona. Então, aqui estou eu como servidor. Na verdade, estou correndo
aqui para correr. Você também precisa
alterá-lo primeiro. Aqui está o padrão
no componente de movimento catal
para a velocidade máxima de caminhada Como escrevi aqui que a velocidade máxima de caminhada
seria 1.000 por padrão, vamos escrever 1.000
aqui também por enquanto. Então, eles são os mesmos aqui para
a velocidade de caminhada, 500, tudo bem. Vamos clicar em play
novamente, testado. Agora estou andando e
é muito rápido. Vamos
ajustar isso mais tarde. Crolick, mude para andar. Você pode ver que tudo está funcionando de forma agachada e
deslocada ao mesmo tempo Você vê que há um erro,
uma luta, agache-se ou pressione,
agache-se e depois pressione a marcha Você pode ver que o movimento ainda
está agachado. A razão pela qual isso é
porque quando você está agachado,
você escreve isso, você
tem esse Você nunca se agacha, a menos que
realmente remova o dedo
do botão de agachamento realmente remova o dedo
do botão de agachamento Na verdade, quando nos agachamos
e andamos ao mesmo tempo, ainda
estamos
nesse estado agachado Na verdade, precisamos nos agachar para que a
velocidade do movimento esteja correta Vamos voltar à velocidade de movimento
definida. Na verdade, vamos nos agachar, se estivermos agachados para
que pareça correto, o que vamos fazer é copiar isso aqui E vou estender
isso aqui, copiar e colar. O que você precisa fazer é arrastar a partir disso e dizer igual, e precisamos ver se
é igual a se agachar Precisamos perguntar se o jogador
está agachado ou não? Se o jogador estiver agachado no
momento, precisamos escrever
esse agachamento Se o jogador estiver agachado, ou
seja, se o último índice
estiver realmente Mesmo que o jogador também
pressione o botão de agachamento, mas o último indicador esteja andando, o jogador está andando no momento Na verdade, precisamos conectá-lo mais tarde. Nós podemos nos agachar. Quando
removermos a caminhada, vamos conectá-los aqui.
Esse é o agachamento E aqui nos agachamos. E podemos simplesmente ir em frente
e conectá-lo aqui. Novamente, vou
clicar e criar um nó traseiro aqui e
vou conectar este aqui. Sim, isso parece correto. Agora, se eu me agachar, ele vai colocar o
agachamento Se eu não estiver agachado,
digamos que eu esteja pressionando o botão de caminhar ao mesmo tempo que
pressiono o agachamento,
ele realmente vai se agachar ele realmente vai se E então eu vou
aplicar essa velocidade de caminhada. No entanto, quando eu paro de andar e ainda
estou pressionando
o botão de agachamento, ele simplesmente
vai se agachar aqui Vamos clicar em Jogar e ver. Vamos clicar em Shift to Walk. Agora você pode ver se eu clicar em agachar e clicar em
Shift ao mesmo tempo, você pode ver a
velocidade do movimento se ajustar corretamente Se eu sair do turno
novamente e me agachar, você pode ver que as velocidades de
movimento estão se
corrigindo aqui e eles
estão corrigindo aqui e eles
estão Se eu me deslocar, me agachar
e depois me deslocar, ou então primeiro me deslocar
e depois me agachar, você pode ver que Nossa velocidade de movimento está
funcionando corretamente. Agora, o que basicamente
fizemos foi fazer com que essa função
definisse a velocidade de movimento. Agora estamos perguntando se o
jogador está agachado ou não. E a razão pela qual fazemos
isso é que, se não estamos fazendo isso e pressionamos
primeiro o botão de agachamento, aplicaremos
essa função de agachamento No entanto, se você
ainda estiver pressionando o botão de agachamento e, em seguida,
pressionando
o botão de caminhada, ele ainda aplicado
porque você nunca se agacha, nunca solta esse Basicamente, ele aplicaria o movimento
errado, embora também
tivesse definido
o movimento para a velocidade de caminhada. Só estamos perguntando aqui, estamos agachados ou Se estivermos agachados,
continue agachados. Se não estivermos agachados, certifique-se de nos agachar
antes de fazer tudo isso Porque se você não se agachar, você ainda está aqui. Estamos apenas nos certificando de que estamos aplicando o movimento
correto. Agora que a
velocidade de movimento terminou, podemos salvar tudo e passar para
a próxima lição.
43. 4.01 Aim Offset Blend Space: Agora estamos prontos para
criar o Aim Offset. Para que o jogador
crie o Aim offset, vamos voltar para a pasta
do player Dentro daqui, vamos
voltar às Animações. E vamos clicar com o botão direito
aqui, vá para Animação. Agora temos algo
chamado deslocamento de objetivo, mas também temos um
mais simples chamado deslocamento de objetivo D. Isso é a
mesma coisa que o espaço de mesclagem Na verdade, você tem algo
chamado espaço de mistura. Um D para este, estou
apenas mostrando para você rapidamente para
o espaço de mistura. Por exemplo, você pode ver antes que tivéssemos o movimento em
oito direções, mas um D é apenas passar de caminhar para correr, um espaço de combinação
muito simples. Agora, para o deslocamento Am, deixe-me excluir este clique com
o botão direito novamente. Em vez de fazer
o movimento oito, vamos até o legado e
usar o deslocamento Aim Um D. Vou
selecionar meu esqueleto novamente e chamá-lo de
O, fique desarmado Vamos clicar duas vezes nesse. Esse é o deslocamento do Aim. O offset Aim,
muito, muito básico. Nosso único objetivo aqui é o centro onde
estamos ansiosos. E o jogador está
olhando para baixo. E o jogador está
olhando para cá. O que precisamos fazer, assim
como o espaço de mesclagem, temos um eixo horizontal. Essa é a nossa direção. Nós podemos escrever a direção. O valor mínimo
para a direção é -90 Isso é quando
estamos olhando para baixo, o máximo é 90, é quando estamos olhando para
cima para ver a velocidade do peso Vou aplicar
exatamente como antes o que fizemos com os espaços de mistura. Vou aplicar um pouco de suavidade para que fique melhor E agora estamos prontos para aplicar a animação. Vamos
salvar tudo. Agora você pode ver que eu também importei para você os offsets do Aim Se você pegar um deles, por exemplo, vamos fazer esse. Você pode ver que quando
tento
arrastá-lo, ele diz um tipo de
animação aditiva inválido Então, precisamos corrigir isso. E vamos
para a próxima lição para corrigir esse tipo de aditivo
44. 4.02 Preparando as animações de deslocamento de meta: Antes de podermos usar
nossos offsets de Aim, precisamos prepará-los. Então, vamos às animações dos
ativos. E é aqui que estão todas
as suas animações. Lembre-se, não está dentro
das animações que
eu te dei É dentro desses recursos e animações que
abordamos anteriormente Por exemplo, vamos
pesquisar um deslocamento de animação. Se você simplesmente escrever AO aqui, verá todos os deslocamentos
da animação Agora você pode clicar em um
deles e aqui você pode ver
esse, por exemplo. Esta é a pistola voltada
para frente, pistola central agachada. Para este, você pode
ver o tipo de aditivo, é
disso que ele
estava falando Neste caso, você
precisa clicar aqui e configurá-lo para o espaço de malha. Então você precisa clicar aqui e dizer o quadro de animação selecionado. Agora você precisa selecionar o
ídolo para esta animação. O ídolo dessa animação é o ídolo pistol crouch, que
podemos Se você acabou de pesquisar por ídolo, esse aqui,
animation crouch Certifique-se de escolher isso para
seu esqueleto redirecionado e
não para a pistola Crouch Idol padrão de
animação manqin Isso seria o
correto para este. Vamos em frente e
economizemos agora para este. Você pode ver se eu o
fecho e volto às animações
do meu player Abra-a aqui,
você pode ver se eu
volto para a pistola do sensor, se consigo encontrá-la aqui Esse aqui. Pistola com
sensor de agachamento Agora, se eu arrastá-lo até aqui, você pode ver que está funcionando. Temos que fazer isso
com todos eles. Você pode ver que
os outros
também são inválidos para
o tipo aditivo Deixe-me deletar
este por enquanto. E temos que fazer
isso por todos eles. Agora, há uma maneira
mais fácil de fazer isso. Se você clicar novamente
nos Ativos, nas animações, você
procura o AO novamente. Agora você pode clicar no
primeiro, Hold Shift. Clique no último,
você pode escrever, clicar em
Ir para ações de ativos
e, em seguida, clicar em
Edição em massa por meio da matriz de propriedades. Dentro daqui, você pode editar as configurações de todas elas
de uma só vez. Um truque muito útil para fazer isso. Aqui você pode ver
que também pode editar outras configurações, como
compressão, animação. Você pode editar coisas assim,
mas, por enquanto, estamos interessados
apenas nas
configurações aditivas aqui Vamos ver aqui, o tipo de animação
aditiva. Você pode clicar aqui e configurá-lo para
mesclar espaço para todos eles. Para todos eles, você
pode clicar aqui e
configurá-los para o quadro de
animação selecionado. Agora, para a animação da pose básica, ela não pode ser a mesma
para todas porque algumas delas têm uma
pistola, um rifle e assim por diante Então, vamos fechar tudo. Agora que temos as configurações
básicas definidas, podemos
salvá-las primeiro. Agora, o que podemos fazer, por exemplo, vamos começar com
a pistola de agachamento. Clicando neste.
Também estou clicando nesta agachamento para baixo
e na pistola de agachamento Só temos três para cada
pistola centralizada para baixo e para cima. Agora podemos clicar neles aqui, clicar com direito do mouse em Ações ácidas
editadas em massa por meio da matriz de propriedades. Novamente, podemos acessar
as configurações aditivas. Clique neste botão aqui,
nesses quadrados aqui. Precisamos encontrar
a animação
inativa dessa pistola rabugenta. Podemos ver que é a pistola
de agachamento. Precisamos encontrar o inativo. Para a pistola crouch idle. Agora está correto.
Vamos fechá-lo. Temos que fazer isso também com
o rifle aqui. Clique no agachamento do rifle, no agachamento rifle e no agachamento Clique com o botão direito em Actions Bulk
Edd via matriz de propriedades. Vá para as configurações aditivas. Clique nos quadrados. Agora precisamos encontrar o agachamento. Para o rifle, agache-se, atire aqui. Feche-o novamente. Você pode ver que é exatamente
o mesmo método, mas temos que fazer
isso várias vezes. Agora é para os
desarmados. Essa. Esse e
esse. Clique com o botão direito do mouse, editado
em massa por meio das configurações
aditivas da matriz de propriedades . Clique aqui
e depois pesquise por idle. Agora precisamos encontrar o
agachamento para os ociosos,
desarmados, desse jeito Então, eu vou fazer
a mesma coisa com
o estande também. E eu posso ver que este tem
um nome errado. Então, vou
renomeá-lo antes de continuar. Este se chama AO,
fique desarmado. Em vez disso,
agora vou
aplicá-lo no suporte,
exatamente como se estivesse agachado E eu vou pular em frente. No momento, eu preparei
todos eles para que você
possa ver se você apenas
procura por um deles,
por exemplo, o
rifle de suporte AO, você pode clicar nele e agora você pode ver
que aplicou Animation Idol Apenas certifique-se de aplicar a animação inativa correta,
caso contrário, ela estará errada. Então eu fiz isso em todo
o estande aqui,
bem como no agachamento Agora vamos salvar tudo e passar
para a próxima lição.
45. 4.03 Adicionando animação ao deslocamento de meta: Vamos agora criar o
deslocamento Am para os movimentos
desarmados Vamos ver as plantas. E vou voltar novamente
para a pasta de animações. Na verdade, vamos fazer isso
para depor primeiro. Antes de fazermos os outros, vamos clicar neste suporte
desarmado aqui dentro Lembre-se de que fizemos a
direção e
fizemos a suavidade
do peso aqui Agora, o que podemos fazer é
pesquisar AO para este. Agora é o stand desarmado. Eu preciso do movimento desarmado. Então, o
estande começa daqui até aqui. Eu preciso do centro Primeiro, vamos pegar o centro desarmado Clique,
arraste e segure a tecla Shift
e, em seguida, ela se encaixará aqui Agora, para o -90 na
direção em que está olhando para baixo, precisamos deste
chamado stand, que significa clicar
desarmado, arrastar e segurar a tecla Shift para
encaixá-la Então, para o movimento ascendente, fique de pé, desarmado, segure a tecla Shift
e conecte-a aqui Agora, ao clicar no
controle e mover o mouse, você pode ver que esse deslocamento de
animação está sendo executado. Isso
está ótimo. Sempre podemos ajustar o
quão longe ele está olhando para baixo e o quão longe ele está olhando para
cima mais tarde, se quisermos, se acharmos que isso
parece um pouco ridículo Então, sempre podemos fazer isso
assim em vez disso. Sempre podemos
ajustá-lo mais tarde. Mas, por enquanto, vamos
salvar tudo. Isso está funcionando agora, vamos
fazer isso para os outros. Na verdade, vou
clicar com o botão direito do mouse neste e duplicá-lo E vamos chamá-lo de braço rabugento. Agora, para caminhar, é na verdade o
mesmo que ficar em pé. Nós realmente não precisamos de
um para caminhar. Agora que temos
isso duplicado, vamos clicar duas vezes nele Deixe-me deletar
este por enquanto. Agora, esse é o agachamento. Vamos procurar
o agachamento aqui, o braço central
agachado, o braço agachado para baixo e
o braço agachado para cima . Agora você pode ver que isso também
está funcionando. Ok, vamos em frente e
salve tudo agora. Vamos fazer
isso mais tarde pistola e
o rifle de
agachamento e assim por diante, mas por enquanto não
precisamos realmente deles Vamos descer o colosso agora. Antes de podermos aplicar
esses deslocamentos de animação, precisamos calcular a direção
da mira Precisamos saber em que
direção o jogador está mirando, se está para cima ou para baixo. E vamos fazer isso
na próxima lição.
46. 4.04 Calculando a direção do objetivo: Tudo bem, agora é hora de
calcular a direção da mira. E podemos fazer isso de forma muito simples
indo até o jogador. Agora, indo para a
base de jogadores daqui, vamos realmente criar
uma nova função. Vamos criar uma nova função
chamada calcular a direção da mira. Para esta função,
deixe-me
compilá-la e voltar
ao gráfico de eventos O lugar onde eu quero colocar isso, faz mais sentido
para esse evento de look. É aqui que controlamos o movimento do mouse
quando estamos no jogo. Faria mais
sentido colocá-lo aqui, na verdade, depois deste, deixe-me arrastá-lo, calcular uma direção e
conectá-lo aqui. Agora, basicamente, o que queremos fazer é definir uma flutuação chamada direção da
mira Vamos fazer um novo flutuador
chamado direção de mira. E vamos
transformá-la em uma variável flutuante. Opa, número inteiro. Flutue, compile e salve. Agora, dentro disso aqui, vamos seguir essa direção de mira. Nós simplesmente queremos configurá-lo. Agora lembre-se do que eu disse
antes, no modo multijogador, você nunca pode definir uma
variável para um cliente. Você precisa estar
no servidor para definir uma variável e depois
configurá-la para replicá-la Você precisa configurar
este para replicá-lo, porque os clientes
precisam saber em qual direção os outros
jogadores estão mirando. As animações são atualizadas corretamente para todos os clientes
conectados O servidor precisa replicar essas informações
de
volta para os clientes Caso contrário, os clientes
não conseguirão ver em qual direção todos
os jogadores estão mirando. E eles só
estarão ansiosos. E
é como se nada estivesse acontecendo quando você define variáveis e as coloca para
replicá-las Você nunca pode definir e replicar variáveis
por meio do cliente, tem que ser executado pelo servidor Agora você pode ver se eu escrevo
uma string de impressão a partir disso. Agora vou te dar
um truque para saber quando você está no servidor e
quando está no cliente. No momento, ele deve imprimir uma string automaticamente
quando eu mover meu mouse, porque eu o
conectei aqui e ele será conectado aqui
se eu compilar agora, e eu clico em reproduzir
e movo o mouse Quando eu movo meu mouse,
estou no cliente. Você também pode ver que estou
jogando como cliente
aqui para que o cliente possa
realmente executar esse código. Quando o cliente
consegue imprimir código, significa
que esse código que você está escrevendo também está
sendo executado no cliente. Você pode ver quando eu
jogo como servidor,
na verdade, é o segundo cliente. Agora, deixe-me alterá-lo aqui
para jogar como servidor de escuta. Em vez disso, deixe-me clicar em Play. Agora estou jogando como servidor e você pode
ver que agora é o servidor imprimindo
a string na tela quando estou
jogando como cliente. Deixe-me jogar de novo
e pegar esse cliente. Agora você pode ver que o código está
sendo impresso como cliente. Quando você também pode imprimir uma string
por meio do cliente, isso significa que esse código é executado pelo servidor e pelo cliente,
e não apenas pelo servidor. Quando precisamos
definir essa variável, precisamos ter certeza de que
estamos executando no servidor. O que podemos fazer, novamente, como
antes, pegar isso e dizer que o
switch tem autoridade. Estamos nos certificando de que
estamos executando
isso apenas no cliente do servidor. Você ainda precisa executar o código. Se você for o cliente, primeiro precisará executar
o servidor. Vamos voltar ao gráfico
de eventos. Eu só vou voltar aqui. Vamos
organizar isso mais tarde. Aqui embaixo, podemos escrever
eventos personalizados e
executá-los no servidor. E eu vou chamá-lo de
Calcular uma direção. E vamos executar isso no
servidor e ser confiáveis. E eu vou
pegar isso, calcular uma direção e
conectá-la aqui. Vá em frente e compile
agora, vamos
voltar ao cálculo de
uma direção E vamos rodar esse servidor, calcular a
direção da mira aqui embaixo. E então podemos
continuar o código. Quando você é o cliente, você vai até
o servidor e executa isso. E isso garantirá que, como cliente, você nunca possa
executá-lo sozinho. Tem que passar pelo servidor. Ok, agora para
a direção da mira, como podemos calcular
essa primeira lista, clique com o botão
direito e diga rotação
de controle. Agora estamos obtendo a rotação
do controle do player. Então, podemos dizer:
obtenha a rotação do Acta. Temos a rotação para
o controle do player e temos a
rotação para o ator. Agora, o que podemos fazer para
encontrar um ponto médio, precisamos encontrar
esse ponto
médio para saber onde
o jogador está mirando Podemos pegar isso e dizer delta e escolher esse
chamado rotador delta Você pode
conectá-lo, é por meio da rotação do
controlador do player e da rotação do ator. Ele vai encontrar
um ponto médio através desse rotador delta Agora vamos dividir isso
aqui, rotadores. Quando você quebra um rotador, você pode ver o X, Y e Z. Você também pode simplesmente fazer isso Se você escrever, clique aqui
e diga split struct pin, na
verdade é a mesma coisa Eu só gostaria de me dividir aqui. Então eu vou escrever
break, Break rotator. E eu posso ver o XY e
Z para a direção da mira, precisamos do y, do Y Você pode pegá-lo e
conectá-lo aqui. Agora você está realmente calculando a direção da mira corretamente. Você pode ir em frente, compilar
e salvar tudo. Agora estamos prontos
para aplicar isso
ao plano de animação e fazer com que nosso player com
o deslocamento Am funcione
47. 4.05 Adicionando o deslocamento de meta: Vamos agora adicionar o deslocamento de mira ao plano de
animação Volte para a pasta de
animações e abra o esquema de
animação do player Aqui, vou voltar
ao gráfico de animação. E a partir daqui, vamos
realmente desconectar isso. Vou te mostrar
um truque com este. Para essa máquina de estado, você pode realmente
arrastar
e dizer Cache e clicar nessa
. Salvar em cache Deixe-me chamar isso de Movimento
Desarmado em Cache. O que é isso, é só
pegar a locomoção, toda
essa máquina de estado, e salvá-la
por meio desse cache Está salvando isso aqui dentro. Em vez de pegar este, podemos simplesmente usar o
cache. Vamos colocá-lo aqui. Em vez de usá-lo novamente, vamos clicar com o botão direito do mouse e
dizer movimento desarmado Você pode ver que
pode usar este. Usei o
movimento desarmado do cache aqui. Agora você pode usar isso em vez
deste aqui em cima. Vamos clicar com o botão direito do mouse
e pesquisar por AO. Deixe-me realmente lembrar como eu
o chamei. Vamos usar esse suporte de 10 desarmados. Vamos procurar por
O, Stand desarmado e ter certeza de que é isso.
Jogador de offset à 1h Um jogador de offset, fique armado. Assim como o
chamamos aqui. Nós o chamamos de braço de suporte AO. Vamos conectar
isso como poste base, o movimento desarmado com
o deslocamento de animação
desarmado Vamos
conectá-lo aqui. Quanto à direção da mira. Lembre-se de que já
calculamos isso. Precisamos ir até o gráfico
de eventos , arrastar o jogador e procurar a direção
da mira.
Esse aqui. Vamos novamente promovê-la para
uma variável aqui dentro
do projeto e
chamá-la de direção Vamos conectá-lo
aqui no final
do gráfico. E deixe-me clicar
duas vezes
para torná-lo um pouco melhor. Tudo bem, vamos compilar. E agora eu posso voltar
para o gráfico de animação. E dentro daqui,
a direção que estou tomando é essa direção de mira, conectando-a E agora vamos compilar. Agora, quando clicarmos em play, vamos ver se funciona.
E você pode ver que funciona. Agora, se eu olhar para baixo
e olhar para cima
, está realmente funcionando.
48. 4.06 Adicionando câmera ao jogador: Agora, quando vamos jogar
o jogo, você pode ver que a câmera está
apenas flutuando e não
está realmente seguindo a cabeça quando
olhamos para cima e para baixo. Para fazer isso,
vamos voltar aqui. Vamos colocar a câmera
na cabeça do personagem. Para fazer isso, precisamos encontrar o esqueleto do nosso
personagem agora mesmo Está dentro do mercado, dentro do
personagem militar Silva, e esse é o esqueleto que
temos usado até agora Deixe-me
clicar duas vezes nele aqui. Dentro desse esqueleto, vamos encontrar o osso da cabeça Você pode simplesmente ir até aqui e tentar procurar o osso da cabeça, e você pode ver que está aqui embaixo. Você também pode simplesmente
procurá-lo aqui. Um terceiro método é clicar
no personagem aqui em cima. Vá para Bones e vá
para All Hierarchy. Isso mostrará todos os
ossos do personagem. Você pode simplesmente
clicar no osso da cabeça. E você pode ver que
também será selecionado aqui. Quero clicar no personagem
novamente e ir até Bones. E selecione-o apenas para que eu possa
remover esses ossos novamente. Agora que você
selecionou o osso da cabeça, vamos clicar com o botão direito do mouse
aqui e criar um soquete Adicione um soquete para um soquete. É apenas um suporte
vazio que você pode usar para
anexar itens a ele. Nesse caso, vamos usar esse suporte para conectar
nossa câmera à cabeça. Você também pode imaginar que também pode usar isso para armas. Por exemplo, se
digamos que você queira
conectar um AK 47 ao
lado do personagem, você sempre pode adicionar um
soquete ao lado do personagem aqui,
talvez até o quadril E então você também pode conectar a arma
por meio de um soquete Mas, por enquanto,
vamos apenas adicionar uma câmera. Vamos endireitar esse osso da cabeça, vá para Adicionar soquete E deixe-me clicar nele e clicar em dois
no meu teclado
para renomeá-lo E deixe-me chamá-lo para
soquete e câmera. Ok, essa câmera de soquete, nós a temos agora,
vamos perder tudo Agora vamos voltar
ao projeto. Vá até o jogador e
vá para a base de jogadores. Ok, dentro daqui. Vamos voltar para a janela de exibição. E agora queremos
conectar essa mola à cabeça ou à cabeça ou à câmera
do soquete que
acabamos de criar aqui
nos soquetes, você pode ver no painel de
detalhes,
ao selecionar a mola, você pode ver a seção do soquete e
também pode ver que ela não está
conectada a Agora, se clicarmos nessa pasta, você poderá ver o soquete Agora, se você não vê isso
é porque você não tem essa mola dentro
desse componente de malha. Se eu arrastar isso para fora
daqui desse jeito, você pode ver se eu clicar nesta pasta, agora
nada acontece. Você pode ver que precisa colocar o braço de mola
no personagem. É um filho dessa malha. Antes que você possa realmente clicar
aqui e ver tudo isso, você também pode clicar no
condomínio terrorista, por exemplo Quando você clica no
contraterrorista, você realmente não pode clicar aqui na primavera para
falar sobre o
contraterrorista, você tem que fazer isso
por meio dos pais Então, na base de jogadores,
isso é possível. Você terá o
braço de mola dentro da malha. E então, para o braço de mola, podemos clicar aqui e selecionar a câmera. Lembre-se de que, se você não
tem nada na malha, por exemplo, aqui você não tem nada, você a limpou
e não tem um personagem parado aqui, então você também não encontrará
o soquete aqui É por isso que na base de
jogadores
precisamos que um personagem
esteja aqui, porque precisamos clicar aqui e depois adicioná-lo a um soquete Clique nesta câmera. Agora, a câmera está conectada
ao personagem. Você pode ver que está realmente
se movendo com o movimento da cabeça. Na verdade, está anexado. Agora
é mais realista. Agora está flutuando.
Vamos clicar na mola para ver o comprimento do braço
alvo. Vou escrever zero, já que é um jogo em primeira pessoa. Em seguida, para a localização
e a rotação, basta clicar nessas setas para redefinir a localização e também
a rotação Você pode ir em frente, compilar
e salvar tudo. Vamos clicar em Play e ver como fica. Você pode ver que estamos dentro
da cabeça do
personagem agora, mas quando eu olho
para baixo e olho para cima, você pode ver que ele está
seguindo a cabeça. Agora, quando eu fico parada e olho como se estivesse
na minha frente, você pode ver que ela também está seguindo
a cabeça. A câmera está se movendo um pouco
da mesma forma quando eu corro. Na verdade, está se movendo com o
mesmo movimento da cabeça. Ok, agora está anexado
ao nosso player. Vamos voltar e agora vamos
tentar ajustar o soquete. Se você abrir o
esqueleto novamente, eu volto para o
personagem militar Silva, abro o esqueleto E dentro daqui, vamos
clicar na câmera do soquete. E eu vou ficar na frente aqui e tentar
ajustar o soquete Você pode ver o soquete Depois de
selecioná-lo, você também tem a localização relativa Você pode clicar e arrastar aqui. E eu só estou tentando
ajustá-la perto dos olhos porque a câmera
está realisticamente perto
dos olhos do personagem Talvez dez no X e
no Y e no Z. Está tudo bem agora Deixe-me, vamos jogar novamente para
ver como é. Agora estamos dentro da
cabeça do personagem. Se olharmos para baixo, se
olharmos para cima, parece bom. No entanto, a
cabeça do personagem está no caminho. Também posso ver que os lados
do personagem estão atrapalhando.
Deixe-me realmente voltar. Deixe-me empurrar a
câmera um pouco para frente. Se você clicar e
arrastar isso,
verá que está deslizando
a câmera para frente No entanto, não
quero avançar muito. Eu só vou escrever
cinco em vez de zero. Deixe-me tentar jogar novamente. Parece melhor. Agora, no entanto, ainda
podemos ver
partes da cabeça. O fato é que não podemos ver o corpo dentro do nosso personagem aqui. Tudo está indo bem. No entanto, a cabeça está no caminho. Na verdade, vamos
na próxima lição e remover a cabeça
desse personagem. Somente o inimigo pode
ver sua cabeça, mas você, como jogador,
não consegue ver a cabeça, é assim
dentro da câmera. Vamos continuar na
próxima lição e fazer isso.
49. 4.07 Escondendo o líder do modelo do jogador: Para esconder a
cabeça do personagem para o jogador, você pode ir até o jogador novamente. E vamos abrir
a base de jogadores. O que queremos fazer é remover essa cabeça para mim como jogador. Quando eu interpreto meu
personagem, no entanto, os inimigos ainda conseguem ver
minha cabeça aqui em cima. A razão pela qual eu
removo a cabeça para mim é porque quando eu sou o personagem em primeira pessoa
aqui, eu tenho a câmera. Na verdade, está dentro da
minha cabeça, certo, e eu não quero ver tudo
isso, não é necessário. Agora vamos remover a cabeça
do jogador que está
interpretando o personagem. Vamos ver o
gráfico da van aqui dentro. Vamos fazer isso
aqui no início do Play. Quando começarmos
a jogar aqui,
você pode clicar com o botão direito do mouse e
terá uma função chamada ocultar ou por nome. Esconda o osso pelo nome.
E selecione isso. E ele vai criar essa variável de malha para
você automaticamente. Essa variável é simplesmente
dessa variável de malha. Você pode simplesmente clicar e arrastar
isso para dentro. É o mesmo. Ok, então vamos
em frente e conectá-lo. Agora ele pergunta: qual osso você tenta esconder? Agora, se você voltar
para o seu esqueleto, você está tentando
esconder o osso da cabeça Se você clicar nele, verá
que se chama cabeça. Você tem que escrever exatamente
como está escrito aqui. É sensível a maiúsculas. Você tem que escrever
exatamente como está aqui. Se eu escrever uma cabeça
assim e clicar em Compilar, e se eu clicar em Plate
para jogar, você verá que a cabeça
sumiu para mim E eu também posso ver
isso na minha sombra. Você pode ver que a cabeça sumiu. E, na verdade,
está parecendo melhor. Agora, como
personagem em primeira pessoa que consigo conhecer, tudo está bonito, nada está funcionando.
Sim, é incrível. No entanto, do lado do
personagem, eu posso ver isso, acho que é o rádio
do personagem que está realmente aparecendo
para consertarmos isso. Você sempre pode voltar
para o jogador aqui se tiver algo para seu personagem que ainda esteja aparecendo. E clique no
soquete da câmera. E então você pode clicar no Y novamente e aumentá-lo um pouco até que
não esteja mais incomodando. Se você simplesmente aumentar
isso para algo como dez e clicar em jogar. E se eu olhar para baixo
e andar de lado, você pode ver que não consigo mais
ver o rádio. No entanto, não aumente
muito dessa forma , porque se você
aumentar demais para frente, a câmera está realmente
atravessando paredes. Se eu
clicar em jogar agora , vejo que está atravessando paredes porque eu o
aumentei demais. Não aumente muito
esse. Talvez, em vez de cinco, eu queira experimentar seis e ver
se isso resolve meu problema. Se eu andar por aí e ainda
ver o rádio um pouco, posso aumentá-lo
para sete. Em vez disso, tente clicar em reproduzir novamente. Tente jogar com o
valor mínimo para ver se isso resolve o problema. Eu posso ver que sete é o
número certo para mim, e tudo está indo bem. No entanto, você pode ver minha
sombra, estou sentindo falta da cabeça. Então, também precisamos corrigir isso. Vamos prosseguir na próxima
lição e corrigir tudo isso.
50. 4.08 Adicionando uma malha de terceira pessoa: Ok, agora vamos consertar a cabeça
perdida na sombra. Então, vamos em frente e
vamos até a base de jogadores. Deixe-me entrar aqui, como podemos corrigir isso é que podemos realmente adicionar outra malha de
terceira pessoa. Se você clicar na
malha, acessar Adicionar e pesquisar
por malha esquelética Agora, se você não sabe
o que é uma malha esquelética, se você é novo aqui, é simplesmente um modelo em três D
que está animado no momento Por exemplo, a malha do
seu personagem é animada. Essa malha, se você segurar
o mouse sobre
ela, diz que o componente da malha esquelética é simplesmente um
modelo em três D animado Isso é uma malha esquelética. Vá em frente e crie-o novamente. Vamos chamar isso de personagem de
terceira pessoa, ou malha de terceira pessoa, aqui
dentro. O que queremos fazer, novamente, selecionar o personagem e temos que selecionar
esse estilo, um homem como este. Em seguida, temos que selecionar o plano de
animação aqui. Reprodutor de esquemas de animação. Agora você pode ver que está animando exatamente como nossa malha aqui O que realmente queremos
fazer é esse personagem. Não queremos que nosso próprio
jogador veja esse. Se você clicar em jogar, agora
poderá ver que a cabeça está de volta. A razão pela qual a cabeça
está para trás é porque agora temos essa malha que
estamos vendo no jogo, mas também temos essa malha. essa malha de terceira pessoa, na verdade não
queremos que as pessoas a vejam, porque eu só estou adicionando isso para ver minha
sombra no chão e corrigi-la
da outra. Para esconder isso para
todos os jogadores, podemos clicar nessa malha de
terceira pessoa. E então podemos descer e tentar acessar as configurações de
renderização Você pode ver nas configurações de
renderização, você pode clicar em Oculto no jogo Agora está escondido no jogo. Se você clicar em jogar, poderá ver que agora
a cabeça sumiu. No entanto, minha sombra também desapareceu. Eu preciso consertar isso também. Se você clicar na
malha de terceira pessoa novamente e
pesquisar por sombra, você terá essa
chamada Sombra oculta. Eu posso ver a sombra
do meu item escondido, minha malha escondida em terceira pessoa. Se você clicar na
sombra oculta, você compila. Você pode clicar em Jogar. Meu personagem está escondido. No entanto, eu também posso ver a
sombra no chão agora. Agora está funcionando corretamente.
Agora isso está corrigido. E vamos voltar apenas para
garantir que não haja
nenhuma colisão esse personagem,
porque não queremos que esse modelo de personagem
colida com a malha
aqui em cima Ao clicar nessa malha de
terceira pessoa, vou até
as configurações de colisão e me certifico de que
ela diz que pode
se caracterizar , vou dizer não aqui E certifique-se de que você não tenha gerado eventos de
sobreposição ativados E certifique-se de que você
não tenha nenhuma colisão como predefinição de
colisão. Vamos compilar tudo. Vamos salvar tudo e passar para
a próxima lição.
51. Suavização de câmera e FPS 4.09: Quando estamos jogando, há uma perna leve, talvez eu não tenha certeza se você
pode notar agora, mas se você simplesmente correr e tentar mover o
mouse para cima e para baixo, às vezes parece que
está um pouco lento Para corrigir essa rotação, você pode tentar fechar
o jogo agora mesmo. Vá até o player
e aqui você pode
clicar na mola. Se você clicar na mola, poderá habilitá-la
aqui abaixo desta chamada ativar a rotação
da câmera Le. Isso suavizará a rotação da
câmera. Se você brincar e
sentir que, na verdade,
está um pouco lento Você pode realmente se sentir lento quando tento
girar minha câmera Para corrigir isso, você pode ativar
a rotação da perna da câmera, que suavizará a
rotação da Você pode ouvir a perna de rotação da
câmera, você pode tentar definir um número. Se você configurá-lo
muito, muito alto, poderá
ver como é. Não está acontecendo muita coisa aqui. Se você talvez o coloque em um
e tente jogar novamente, você pode ver que agora é
muito suave assim. Isso é demais. Você pode ver que está
tentando suavizar a câmera. Isso
é demais. Eu tenho que aumentá-lo
para talvez algo como dez e você pode
tentar ver como é. No entanto, se você colocá-lo muito
baixo, verá que é liso, mas parece um pouco lento e provavelmente causará
enjôo Deixe-me colocá-lo em
algo como 30. Em vez disso, eu compilo e
tento girar. Eu só quero que
pareça natural. Ainda é um jogo de
tiro em primeira pessoa e não queremos colocá-lo muito alto
ou muito baixo aqui, talvez colocando 40 em vez disso Apenas tente continuar jogando novamente. Tente aumentar o número. Tente olhar em volta e
ver como é. Ainda parece um pouco, talvez algo como 60. E vou tentar dar uma olhada. Parece muito mais natural, assim como um jogo de tiro em primeira
pessoa Vamos tentar ajustar
esse número aqui. Você não quer que seja muito baixo, senão a câmera
ficará muito lenta e tudo bem, isso foi corrigido. Agora vamos até a
janela ou editemos, na verdade, e vamos até
as Configurações do Projeto aqui dentro. Se você pesquisar por suavidade, terá algo chamado taxa de quadros
suave. Você precisa ter
isso ativado para o seu jogo se quiser
lançá-lo em outro lugar,
por exemplo, no Steam
ou para um amigo. A razão pela qual isso é um erro que
cometi quando lancei o
Fm tail no Steam. Se você não tiver esse limite, se não tiver isso ativado
, o jogador que está
jogando seu jogo executará seu jogo no
máximo de quadros por segundo. Depende da
placa gráfica que eles têm. Se eles tiverem um jogo
muito, muito bom, talvez seu jogo rode
a 800 quadros por segundo
e, na verdade, use muitos recursos para o computador deles. Provavelmente, você pode
ouvir o computador emitindo muito
som dos ventiladores porque a placa gráfica
está funcionando demais. Você precisa habilitar isso
para evitar que o jogo executado e use todos os
recursos do jogador. Vá em frente e use essa taxa de quadros
suave. No mínimo,
vou colocá-lo em 30 quadros por segundo
, no máximo. Normalmente eu coloco em
60 quadros por segundo. Para outros jogos, no entanto, este é um jogo de tiro em primeira pessoa, você precisa de mais quadros por segundo Talvez eu coloque em 200 como
o máximo de quadros por segundo. Acho que 200 é bom. Eu não acho que você
precise de mais do que isso. Vamos fechar isso
e salvar tudo. Vamos passar para
a próxima lição.
52. 5.01 ajustando a velocidade de movimento: Agora estamos prontos para ajustar
a velocidade do movimento. Você pode ver
que, ao clicar em jogar
, está funcionando muito rápido. Portanto, se estiver executando um jogo, você pode tentar ter uma ideia de quão rápido deseja
executar o jogo. Agora, para mim, isso
é muito rápido. Realmente depende do
jogo que você está criando. Agora, se você estiver criando
um jogo rápido, essa execução pode até
ser muito lenta para você Para mim, estou apenas criando algo próximo
ao contra-ataque Na verdade, não 100%, mas alguma coisa. Vou reduzir um pouco essa velocidade de
movimento. Eu acho que é muito rápido. Eu posso ir aqui na minha
base de jogadores, o componente do personagem. E então eu posso diminuir
minha velocidade máxima de caminhada. Agora vou
diminuí-lo para algo como 700. Eu tento jogar algumas vezes e tento
ajustar esse número. E então você precisa
clicar em Jogar novamente. E só para correr até aqui e
tentar ver como é. Agora continue jogando o jogo. Tente aumentar e diminuir o número de velocidade
e ver como é. Eu acho que para mim isso é bom. Talvez eu possa realmente
aumentá-lo para 750 e tentar jogar novamente. Acho que 750 é o
número certo. Ok, então, quando você está
pesado com este, você também pode se lembrar de que também tem essas variáveis
flutuantes para a velocidade Na verdade,
deixe-me clicar e arrastar isso até aqui, para
que eles fiquem juntos. Você também pode clicar nessa velocidade de
execução e
configurá-la para 750. Continue e compile agora.
Para a velocidade de caminhada, vou configurá-la para
algo como 400 E para a velocidade de agachamento,
algo como 200. Mais uma vez, tentei jogar meus jogos algumas vezes.
Eu conheço esses números. Você precisa, novamente, definir a velocidade de caminhada para alguma coisa. Em seguida, você precisa clicar em Jogar. Então você precisa clicar
em Shift to Walk e tentar ver se essa
velocidade de caminhada é boa para você. Ou se você quiser que
seja um pouco mais rápido. Apenas tente jogar
seu jogo
repetidamente e tente
ajustar esses números. Agora, se eu jogar meu
jogo e correr por aí e tentar ter uma
ideia de como ele é rápido, se eu clicar em Shift
para andar por aí, acho que também está
bom. E se eu clicar no controle e tentar ver como
fica, acho que essa velocidade também
parece boa para mim. Ok, então vamos fechar
tudo isso
agora que a
velocidade de movimento foi ajustada. E também vamos ajustar a velocidade da animação
na próxima lição.
53. 5.02 Ajustando a velocidade da animação: Quando ajustamos a velocidade do
movimento, também
precisamos ajustar a velocidade da
animação,
caso contrário, ela parecerá incorreta. Se clicarmos no jogador novamente e clicarmos
na base de jogadores. Por aqui, quero adicionar um
pouco de comprimento à primavera. Mais uma vez, assim como antes. O motivo é que eu quero ver minha animação em execução e
ver a velocidade com que elas estão correndo. Você pode ver que estamos correndo agora. Na verdade, parece bom. Você pode ver que está
seguindo o chão. Às vezes, suas animações para o personagem quando
você está correndo
são muito rápidas e muito lentas. Você também precisa ajustar a velocidade de
corrida. Você pode realmente ver que há
alguma colisão aqui. Por alguma razão,
acho que é meu céu. Se eu clicar neste céu
aqui e realmente
o afastar,
por algum motivo, este
terá uma colisão iniciada Mas isso é apenas o céu aqui em
cima e
realmente não importa onde esteja, vamos
colocá-lo aqui. Ok, para a velocidade da animação, o que você
precisa fazer é acessar as animações E então você pode definir
as animações dentro dos espaços de mesclagem que
criamos anteriormente Deixe-me começar com
o espaço Run Blend. E aqui dentro,
basta
descer e ver
todas essas misturas Agora, todas essas animações que você adicionou aqui como pontos, você também pode vê-las aqui Agora,
primeiro o que eu quero fazer é realmente
aumentar minha velocidade de peso. Porque a velocidade do peso, lembre-se, é a suavização
das animações Acho que às vezes está deslizando um
pouco demais. Talvez se eu aumentar para
6,5 em vez de 9,5 novamente. Lembre-se, assim como antes,
quando você a aumenta,
ela aplica menos suavidade
à animação Eu só queria
parecer mais natural. Eu vou abrir
o resto deles. Para o resto deles, também
vou definir
a velocidade do peso para 6,5 6.5 para a caminhada também. Vou definir a velocidade do
peso para 6,5 Ok, isso está corrigido. Vamos
salvar tudo. Tudo bem, antes de
fazermos qualquer coisa, você também pode subir aqui e lembrar de mudar
seu eixo vertical. Valor máximo aqui. Lembre-se de que essa foi a velocidade de
movimento da corrida. No
momento, a velocidade de movimento do meu jogo é 750. Eu costumo colocá-lo
em algum lugar ao redor da metade. Em vez disso, vou colocar
este em 350. Você pode ver quando você
coloca em algo maior, agora é aplicado aqui, 350. No entanto, minhas animações ainda estão rodando a 300,
preciso clicar aqui, arrastar e segurar a tecla Shift e colocá-la aqui novamente, clicar em segurar a tecla Shift para
tirá-la novamente e colocá-la aqui Nada de novo. Já
fizemos isso antes. Basta arrastar todas essas
animações até 350 e agora elas estão
rodando nessa velocidade Ok, então vamos fazer isso
com o resto deles. Vamos abrir o agachamento. Meu agachamento estava a uma velocidade de 200. Se você abrir o
player e, dentro da
base do jogador, a velocidade de agachamento, eu a ajusto para 200, que eu
possa ir até o
agachamento e colocá-lo em algo No entanto, você pode ver que se eu
colocar em algo menor, isso me causará muitos erros e todas as minhas
animações desaparecerão Isso ocorre porque ele está excluindo
todas essas animações. Aqui em cima, vou
clicar no controle Z para trazer tudo isso de
volta. Aqui estão elas. Lembre-se de diminuir todos
eles antes de realmente
começar a brincar com esses números para que
eles não sejam excluídos. Eu os coloquei aqui. Deixe-me diminuir esse
número para 100 agora. E agora você pode pegar
todos eles e adicioná-los aqui
até a velocidade máxima. Eu gostaria que houvesse uma
funcionalidade em que você pudesse realmente pegar todas
elas e movê-las para cima ao
mesmo tempo. Eu
não acho que existam. Na verdade, agora para a velocidade de caminhada, ela está definida para 400. Vou colocá-lo em 200, voltando à velocidade da
animação, e vou
colocá-lo em 200 em vez disso Para a velocidade, vou movê-los
para cima novamente. Tudo bem, agora que isso
foi corrigido, vamos salvar tudo. Vamos voltar à corrida
agora para ver a velocidade da animação. Vamos começar com
a corrida para frente. Vou começar
com a corrida para frente. E a razão pela qual eu faço isso é
porque, quando isso estiver correto, vou aplicar
para o resto deles. A corrida para frente
é minha primeira aqui. Corra para frente desarmado. E você pode clicar
na pequena seta para ver essas configurações
da escala de taxas. Se eu aumentar para
algo como três e todos eles forem maximizados
por algum motivo, esse é o avanço Se eu definir para três
e clicar em reproduzir, você verá que a
velocidade da minha animação é muito, muito rápida. Agora você precisa ajustar a velocidade
da animação para
se adequar ao seu movimento.
Se eu, neste momento, uma é a padrão. Se eu dissesse para 1.1,
um pouco mais rápido. E se eu clicar em play, e você puder ver o que
parece, agora, a corrida nas
laterais não está funcionando porque essa é apenas a corrida para frente que ajustamos. Isso é o que
parece. Para mim. Acho que 1,1 na escala
de taxas parece bom. Na verdade, quero
aplicá-lo ao resto deles. O que você pode fazer é
segurar a tecla Shift e clicar com o botão direito do mouse. Isso copiará isso. Ou você pode simplesmente clicar com o
botão direito do mouse e copiar. Mas você pode ver que a tecla Shift
e o botão direito do mouse também
copiarão isso. Então eu não quero fazer isso
para a animação ociosa. As animações ociosas, eu só quero que elas sejam uma, como de costume Mais um problema para a animação
em execução. A frente direita está correndo aqui. Vou segurar a tecla Shift e clicar com o botão
esquerdo para colá-la. Novamente, você pode simplesmente
clicar com o botão direito do mouse e colar também. Mas você pode ver que o atalho
é Shift e clique com o botão esquerdo. Também vou colá-lo em todas
as outras animações, para que sejam aplicadas
exatamente assim Vamos continuar e clicar em
Salvar. Vamos clicar em Jogar. Agora você também pode ver o que
parece todos os outros lados. Parece um pouco melhor. E a razão pela qual o
aumentamos é para que não pareça
um pouco como antes. Tudo bem, agora que isso está
feito, deixe-me encerrá-lo. Você também precisa fazer
isso para se agachar. Você tem que jogar aqui. Tente se agachar e tente se agachar,
veja como é Talvez, novamente, precisemos aumentar um pouco
a velocidade da animação porque você pode ver que ela está deslizando porque a
velocidade da animação é muito baixa. Então você tem que entrar aqui novamente, ir para a animação, se
agachar Vou
colocá-lo em 1.1 novamente, assim como na minha execução, só
para ver como fica. E se eu me agachar e tentar caminhar
para o lado, talvez precisemos de
um pouco mais aqui, 1.3 Em vez disso, clique em play Tente se agachar e
ver como é. Coloque-o em algo como 1.1 e, em seguida, você pode clicar em Play. Então você pode se lembrar, isso é apenas para se agachar Não funciona se
você correr até os sites ou se agachar até os
sites, se agachar para frente, e eu posso ver como é Talvez ainda esteja
deslizando um pouco. Se eu colocar em 1,2 em vez disso, clico em play e
me agacho Eu acho que isso está
parecendo muito melhor. Vamos tentar, na verdade 1.2 O que vou fazer é copiar
isso novamente e colar em todas as minhas outras animações
que não estão ociosas Não
me importo com as animações ociosas. Eu os tenho na proporção
de um. Isso é bom. E para as outras animações, vou colocá-la em 1.2,
assim como isso vai salvar E então vamos jogar e
ver como é. Se eu andar para os lados também, ainda está deslizando Na verdade, talvez eu precise
aumentá-lo para 1,3. Deixe-me realmente ir novamente. Aqui você pode ver que leva algum tempo. Você
tem que testá-lo. Se eu colocar em 1.3
, copio isso e colo em todas
as outras animações Assim como antes. Eu vou em frente
e clico em jogar novamente. Deixe-me ver o que
parece agora. Agora é muito menos, você pode ver que parece
muito melhor do que antes. Podemos seguir em frente
e continuar ajustando essas velocidades de movimento e essas animações e ver como elas
se parecem Quando estiver satisfeito, agora
você pode ir até a caminhada, fazer a mesma coisa, clicar em Jogar segurar a tecla Shift, tentar andar por aí. Você está deslizando
demais agora. Vá para o movimento para frente. Deixe-me ver se
consigo encontrá-lo aqui. Se eu subir para a frente, essa aqui,
Animação. Ande em frente. Se eu colocar
em 1.3, clique em play e eu mantenho a
tecla Shift pressionada e tento andar por aí. E ainda está
deslizando um pouco. Se eu colocar 1,5 em vez disso, segurar a tecla Shift e
tentar andar por aí, você pode ver que a caminhada
está muito melhor. Não estou deslizando por aí. Você pode ajustar
a velocidade do movimento para a caminhada ou ajustar as animações de acordo com a velocidade
do movimento Acho que 1,5 é bom para mim. Vou copiar isso em todas as outras animações
que não estão ociosas, como essa e também na parte de trás E agora você pode
ver que isso está inativo, então não vou
copiá-lo aqui Ok, clique em play, e
agora você pode segurar a tecla shift e andar por aí e
tentar andar para o lado. Parece muito melhor. Se você
achar que isso é muito rápido, você sempre pode reduzir a velocidade do movimento ou
reduzir a velocidade da animação. Isso é bom. Novamente, isso realmente depende de qual
jogo você está criando. Eu acho que para mim isso é bom. E eu sempre posso vir aqui e ajustá-lo mais tarde, se
eu não estiver satisfeito. Às vezes, quando
fecho meu jogo e
fico online no dia seguinte, às vezes acho que
algo parece estúpido e mudo de ideia, tento mudar a velocidade do movimento
e a velocidade da animação
e assim por diante. Mas, por enquanto,
parece bom para mim. Então eu tenho que fechá-lo agora e deixar a gente salvar tudo. E vamos
para a próxima lição.
54. 5.03 Fixando o clipping da parede da câmera: Agora precisamos corrigir
o problema da câmera. Se eu voltar para o
jogador e colocar a mola no comprimento do
braço de zero, só para voltar ao
modo em primeira pessoa e jogar o jogo, você pode ver se eu me aproximo de
algo e olho para baixo, às vezes corta a parede assim, como você pode ver aqui E eu posso olhar pela parede, e as pessoas provavelmente
usarão isso de forma errada e trapacearão
no jogo para ver o que está por trás
da parede para consertar Há duas maneiras. A
primeira maneira é ir ao mercado
e ir até o jogador e
encontrar o esqueleto
para o jogador Agora
depende aqui do seu soquete. Primeiro, no soquete que
você adicionou, você pode ver que eu
coloquei meu valor Y em sete, se você colocá-lo em
zero, por exemplo E você clica em Play, você pode ver que você empurra a câmera
para trás. E você pode ver mais do
seu corpo, desse jeito. Você pode tentar empurrar sua câmera para
trás, talvez em vez de zero, você possa fazer com que seja menos cinco Você pode ver o
quanto consegue empurrar sua câmera para trás sem
fazer com que pareça ruim. Então você pode ver menos cinco. Começo a ver o pescoço ou a cabeça do meu
personagem, quase onde a cabeça
desapareceu e
não parece muito boa. Menos cinco é demais. Eu o colocaria de volta em zero, por exemplo, e
tentaria jogar novamente. O problema com esse
personagem é que ele tem um rádio. Você pode ver o rádio
no player aqui. Na verdade, é ficar na
frente do personagem ou da câmera desse jeito
e é um pouco irritante Agora, se esse fosse um personagem personalizado que
você projetou, você poderia
estabilizá-lo um pouco mais para que ele realmente não
passe pela câmera E se fosse esse o caso
, essa posição para o soquete
seria realmente muito melhor Porque você pode ver o corpo
e ele fica bonito assim. No entanto, o rádio é um pouco
chato para esse personagem, então vou
adiantá-lo novamente. Essa é a razão pela qual aumentamos
para sete, porque às sete não conseguimos ver o rádio e tudo
está ótimo. Ok, como podemos resolver isso agora? Na verdade, não podemos mais brincar
com o soquete porque ele está colocado da melhor maneira
possível A outra coisa é que você pode ir
até a base de jogadores e acessar a janela de visualização
aqui na base de jogadores, você pode clicar no Componente da
Cápsula Componente da cápsula. Você pode
ver se você aumentar o raio
da cápsula para algo extremo,
por exemplo, 150 E você clica em Play,
você pode ver que tem uma
colisão muito mais rápida
contra as paredes E você não pode ir até
as paredes facilmente. Você pode ver aqui. Agora é impossível andar e
ver através das paredes. No entanto, é um pouco
irreal
colocá-lo muito alto, porque
você não consegue realmente chegar perto das paredes
e fica bloqueado Você também será
bloqueado aqui. Se você for até essa rampa, acho que não pode
passar pela rampa porque
o componente da cápsula está
muito alto e você não
pode passar por Ok, aumente esse componente da
cápsula. Um tamanho que realmente faz sentido para você e remove
o recorte da parede, mas ainda é pequeno 70, por exemplo.
Vamos experimentá-lo. Vamos atravessar a parede aqui. Olhe para baixo, veja o tamanho. Talvez seja bom. Isso está funcionando, na verdade,
vamos para este. Às vezes eu consigo ver
através das paredes. Às vezes, se eu entrar nela, tenho que aumentá-la
um pouco porque, na verdade ainda atravessar as
paredes pode aumentá-la para 75. E depois teste novamente e
veja como é. Sim, talvez 75 esteja
funcionando, na verdade. Às vezes, está tremendo um
pouco. Ok, então vou colocar um 280. Essa é minha decisão final aqui. Então, vamos compilar e
agora está em 80. Sim, se eu olhar para baixo, eu olho para cima, eu olho para os lados. Não consigo ver através da parede. E eu ainda posso me aproximar
da parede desse jeito. E vamos ver se podemos
subir as rampas aqui. Se eu subir a
rampa e ela funcionar, mesmo estando
perto da parede da rampa aqui, ainda
posso subir a OK. Essa foi uma
solução fácil se você for aqui. Agora, aqui, é um
pouco problemático porque o espaço
é muito estreito. O que você pode fazer
para corrigir isso
agora é que você sempre pode vir aqui e colocar as fotos aqui até
talvez algo como dez E coloque-o. Então, na verdade velocidade da
minha câmera é muito alta. Eu vou
diminuí-lo. Você pode clicar nesse objeto aqui e
simplesmente movê-lo para o lado. Talvez mude um pouco o
design do mapa para que
isso não dê certo. Agora, se você precisa de um sistema de colisão
muito, muito complexo, isso realmente requer um trabalho muito avançado
para este curso Aqui, você pode fazer
isso com plantas. No entanto, ele requer
muito código para funcionar e será muito avançado
em comparação com este curso. Você pode tentar novamente subir
aqui e ver se funciona. Veja se está tudo bem. E você pode ver que tudo
está funcionando bem também. Tudo bem, então é
assim que consertamos a câmera. Cortando
as paredes novamente. Se for gravado em algum momento, você sempre pode entrar aqui Talvez retome a posição aqui do soquete,
isso ajudará Ou se você puder vir
aqui e aumentar um pouco
o componente da cápsula
para que ele não se esgote. Mas tenha cuidado para não
aumentá-lo demais.
55. 5.04 Fixando o salto: Certo. Agora, se eu jogar o jogo, você pode ver quando eu pulo;
na verdade, quando eu pulo e pressiono meu botão de
agachamento ao mesmo tempo, você pode ver que posso enviar spam Quando eu pulo e
continuo agachado, a câmera está
cortando Você pode usá-lo como mecânico
se quiser para o seu jogo. Algumas pessoas gostam de coisas
assim, por exemplo. Você pode pular,
tentar se agachar e olhar por cima da parede e ver que
talvez seja um No entanto, acho que é um pouco
demais e eu realmente não quero esse mecânico aqui
quando ele se encaixa assim Se eu continuar agachado, vamos voltar para o jogador, ir para a
base de jogadores dentro daqui Vamos até a lógica
do agachamento. Esse aqui. Na lógica do agachamento, quero ter certeza de que
o jogador não está pulando Você não pode se agachar quando
está pulando. Se pegarmos essa, lembre-se que já fizemos com que essa
função não fosse pular A única coisa que fizemos
aqui foi pegar
o componente de movimento do personagem e perguntar se o personagem
está caindo ou não. Se o jogador não estiver caindo, significa que
não está no ar, o que significa que não
está pulando Ok, podemos pegar isso,
podemos fazer um galho. Se o jogador não estiver pulando
, podemos nos agachar momento, há um pequeno
problema se pularmos e eu
pressionar o agachamento Porque veja, eu só
consigo me agachar no chão. No entanto, se eu pular e me agachar, quando aterrisso, não me agacho Na verdade, preciso me agachar sempre que pulo e
clicar em agachar,
ele deve me agachar automaticamente E precisamos corrigir isso aqui. Vou me
arrastar disso e atrasar o código em algo
muito, muito pequeno. Então, talvez 0,05 após o atraso, possamos voltar e
reproduzir esse código novamente. O que isso está fazendo é simplesmente
se você estiver pulando, não conseguindo se agachar, então
será falso Ele
atrasará o código e voltará e perguntará novamente
se você está pulando ou não Ele continua verificando se
você está pulando ou não. E quando você pousa
no chão e ainda tem o botão de
agachamento pressionado, ele realmente
avança e se Você pode experimentar, ver
se funciona ou algo assim. Insetos, você pode pular aqui,
agachar-se, automaticamente, agachar-se, com
um olho, pousar Isso realmente funciona. Agora,
se você colocar isso muito alto, parecerá um pouco lento,
porque quando você pula, leva um pouco de tempo Antes de se agachar, você pode tornar muito melhor se agachar
aqui Se você diminuir muito, o tempo de resposta
será muito maior. Se você pular,
clicar e se agachar, poderá vê-lo Não gosto de exagerar,
porque lembre-se de que quanto mais abaixo você coloca isso, mais vezes esse
código será executado. Vai ser executado
várias vezes por segundo tentando verificar se
você está pulando ou não Para este, vou
colocá-lo em 0,05 em vez disso. Para verificar quantas
vezes isso é executado, você sempre pode pegar esse
navegador e dizer 1/0 0,05 Então você pode ver
esse código agora, executado 20 vezes por E você pode ver que ele
funciona muitas vezes. Se você colocar em 0,01,
ele será executado 100 vezes por segundo. Eu não gosto de colocar
isso muito baixo. 0,05 é um bom número.
Vamos fechar isso. Ok, agora isso está funcionando. Agora, o problema está
aqui. Para o agachamento Na verdade, ele executará o código
do crouch, mesmo que
eu não esteja mais Você pode ver se eu
arrasto aqui e digo imprimir string e eu apenas imprimo uma mensagem simples
na tela para ver se esse código está sendo executado ou não está sendo
compilado. Vamos clicar em Jogar. Você pode ver se eu pulo e
seguro, me agacho e vou soltar. Então, quando eu pousar, ele
realmente vai se agachar. Eu pulo, me agacho e me solto. Ele executará
o código crouch mesmo que eu
realmente não precise, porque ainda não me agachei para fazer isso ou
corrigi-lo Podemos pegar o
estado do movimento e arrastar a partir dele e
dizer que contém o item. Se ele contiver
o item agachado, queremos
seguir em
frente e Quando soltarmos o
botão, vamos atacar aqui. Na verdade, basta
arrastá-lo até aqui. E vamos fazer uma ramificação e
conectá-la, sem mais nem menos. Ok, eu organizo isso
um pouco, ok? Então, o que estamos fazendo
aqui é perguntar se estamos
no salto ou não. E se não estivermos no salto, podemos seguir em frente e nos agachar
se estivermos no chão No entanto, se estivermos pulando no ar, ele continuará sendo
verificado sempre que pousarmos E quando aterrissarmos,
ele
examinará esse código e
perguntará você
soltou o botão
ou pressionou o botão? Se você pressionar o botão, você
se agachará Se você ainda estiver pressionando
o botão de agachamento, se tiver
soltado o botão, primeiro
ele verificará se
você está realmente agachado Se essa matriz de estados de movimento contém o elemento
agachado
e, se não tiver, não faça nada porque não faça nada Faz algum sentido executar esse código. No entanto, se ele
contiver o agachamento e você soltar o botão, ele se agachará Vamos tentar jogar agora. E vamos pular
e clicar em agachar. Isso ajuda. Se eu pular e
clicar em agachar e soltar, você pode ver que o
código não está
mais em execução e está
totalmente otimizado Vamos compilar agora. Tudo está funcionando aqui. Quando eu pulo e envio spam meu botão de agachamento, ele
não funciona Somente quando aterrisso
aqui no ar, não
consigo enviar spam para meu botão de agachamento.
56. 5.05 Corrigindo os erros restantes do Crouch: Ok, a última coisa
que quero corrigir para o
agachamento é que você pode ver se eu vou
até uma borda ou saliência E eu me agacho aqui e
vou até essa borda aqui e
simplesmente saio da Você pode ver que o personagem
está bloqueado aqui no ar. Você pode ver cada borda
que realmente faz isso. Se eu for até aqui, isso
é muito alto. Eu subo aqui e me
agacho e quero cair. Você pode ver que eu estou realmente
aqui no limite. E sim, parece estranho.
Vamos fechá-lo. Vamos até a base de jogadores. E se você clicar no componente de movimento do
personagem e pesquisar por agachamento,
você tem este chamado
Can walk off ledges você tem este chamado
Can walk off Ao se agachar, clique nele e vá em frente,
compile e clique em reproduzir Agora você pode ver
quando ele faz isso, se você se agachar aqui
e se você pular, ele cairá
desta borda Essa foi a única
coisa que tivemos que fazer, uma solução muito, muito simples. Vamos passar para
a próxima lição.
57. 5.06 Preparando os passos do SFX: Agora é hora de adicionar alguns efeitos
sonoros de passos
ao personagem para que ele soe melhor no jogo, para
que não fique muito silencioso. Vamos
criar uma nova pasta. Vamos continuar aqui na pasta
de conteúdo. Vamos clicar com o botão direito, ir para uma
nova pasta, chamá-la de áudio. Dentro dessa pasta,
vou escrever clicar e criar uma
nova pasta também. Vou chamá-lo de
efeitos sonoros dentro desta pasta. Vamos importar os efeitos
sonoros agora. Novamente, nos
materiais de custo que
eu enviei para
você neste site, você verá muito mais itens. Por exemplo, na
interface do usuário ou no áudio, você verá muito
mais itens do que os que vê aqui,
porque eu continuo adicionando coisas. Enquanto eu desenvolvo este curso. Você pode ver ainda
mais coisas do que o que está
vendo aqui agora. Não se
preocupe, não fique muito confuso, eu continuo adicionando coisas
enquanto desenvolvo este curso. No momento, o que precisamos
usar são os passos,
o efeito sonoro dos passos
1-6 Então, tudo isso, você pode clicar e
arrastá-los para o painel aqui, no navegador de conteúdo, soltar
e eles serão adicionados O que você precisa fazer é
clicar com o botão
direito e, aqui no
áudio, fazer um som que. Quando você faz um som que, você pode chamá-lo, vamos
chamá-lo de passos Agora, outra forma de criar um
som que é clicar com o botão direito do mouse em um deles e
clicar em Create Que. A terceira opção é
selecionar todos eles e criar uma única fila que,
na verdade, também carregará todos
eles em uma única fila,
que é realmente
o que queremos fazer. Mas você também pode clicar com
o botão direito do mouse e
acessar o áudio e criar
o som que. Você tem opções diferentes. Vamos entrar
nessa fila de som. Deixe-me torná-lo um pouco
maior para que possamos ver. O que podemos fazer agora é
pegar tudo isso. Clique no
primeiro, durante todo o turno, clique no último e
clique e arraste-os até a sugestão sonora que adicionará todos os efeitos
sonoros de
passos à sugestão sonora Agora, dentro daqui,
o que você pode fazer é seguir esses
passos aleatoriamente Ele deve escolher
aleatoriamente qual jogar, só para que tenhamos alguma variedade. O que você precisa fazer é escrever,
clicar e pesquisar aleatoriamente. Então você encontra essa nota aleatória. A propósito, para as
dicas sonoras, você pode escrever clique. E você pode ver que
tem esses nós exatamente como no blueprint No entanto, não é como no blueprint. Você pode ver que não
tem muitos nós, mas também pode fazer
coisas legais com eles, mesmo que não
tenha muitos nós. Agora, para este,
vamos usar o aleatório, e ele vai reproduzir um desses
efeitos sonoros aleatoriamente. Vamos conectá-lo. Vamos arrastá-los
e conectá-los aqui. E vamos clicar
nisso. Além disso, algumas vezes que temos essas entradas, podemos conectá-las desse
jeito. Conecte
todos eles. A saída que
conectamos à saída. Vamos
organizá-lo um pouco. O que você pode fazer
agora é clicar
em Pl Q para ver o que ele faz. E você pode ver que ele toca
um som aleatoriamente. Só escolhe um deles. Agora eu acho que está muito quieto. Podemos acessar o
multiplicador de volume e aumentar o efeito sonoro do passo para
colocá-lo em 1,2 Ou você pode colocá-lo em três. Você pode ver que isso
aumenta o som, talvez 1,2. Não
quero que seja muito alto para este curso porque também estou falando com você e você
pode ouvir minha voz. Se estiver muito alto, provavelmente
será muito irritante. Talvez um para mim, você possa
aumentá-lo um pouco mais. Talvez um ainda esteja muito quieto. Mas para este curso,
vou ficar com um. Acho que você
também pode me ouvir quando me lembro do curso. Ok, temos esse passo
e ele está preparado. E você também pode tocá-la aqui
para ver como ela soa. Agora, se você também quiser mais
variedade, pode usar algo
chamado modulador Se você clicar com o botão direito do mouse e
pesquisar o modulador aqui, na verdade
vou usar apenas um som para
demonstrá-lo para você Se eu pegar esse som e
conectá-lo à saída, você pode ver que, se estiver tocando agora
, soa um pouco diferente. Se você clicar no modulador e talvez diminuir o tom para 0,9 e aumentar
o tom máximo para 1,1, há uma
grande diferença Ele fará uma variedade de sons com tons
diferentes Se você clicar em reproduzir
agora, poderá ouvir que soa um pouco
diferente toda vez que você pode usar um modulador para aumentar e diminuir o
tom aleatoriamente Você também pode conectá-lo aqui. Se eu apenas conectar isso de volta, você pode conectá-lo aqui para
criar uma variedade. Agora, em vez de 0,9,
vou ficar com 0,95. Mas para o tom máximo, posso ficar com um Algo parecido. Você ouve um som diferente toda
vez que toca isso. Ok, vamos salvar tudo. Vamos encerrá-lo e
passar para a próxima lição.
58. 5.07 Timer por evento: Agora, adicione o efeito sonoro de
passos. Se você já fez isso antes, sabe que pode acessar
os ativos e as animações. E dentro de uma animação, por exemplo, essa aqui,
qualquer animação aleatória. Na verdade, o agachamento é provavelmente a corrida que precisamos encontrar
. Por exemplo, esse. Você sabe que pode entrar
aqui, clicar com o botão direito do mouse, adicionar os notificadores um efeito sonoro Ao fazer isso selecione um efeito sonoro
aqui na fila de som e clique em reproduzir Você pode ver que está
realmente funcionando. E você pode copiar esse efeito
sonoro, colar, tentar
juntá-lo com os
passos, sem mais nem menos Algo
assim, por exemplo. Assim mesmo. Também
funcionará no jogo quando você jogar. No entanto, eu fiz isso e
queria gravar para você. No entanto, ele oscila um
pouco porque, quando você corre, às vezes ele coloca
o som duas vezes Porque na outra
animação você também tem isso, você precisa colocar isso em todas as animações
de execução ao alternar a animação de trás para frente ou de trás da
direita para a esquerda Às vezes, ele realmente coloca
o som duas vezes ao mesmo tempo. Parece um pouco confuso. Eu realmente não gosto desse método, então tentei outro. Então, vamos encerrar isso e tentar algo
chamado cronômetro por evento Nesta lição, eu
só quero explicar
para você o que é esse
cronômetro por evento, porque na verdade vamos
usá-lo mais de uma vez E é um conceito
e uma função muito
importantes dentro
do blueprint Vamos até o jogador,
vamos até a base de jogadores. Agora, para a corrida, eu só quero
dizer que talvez aqui
no evento do movimento
faça mais sentido. Vamos pegar tudo isso e, na verdade, vou diminuir um pouco
para poder trabalhar aqui
sem nenhuma restrição. Vamos até o final do código
de movimento
e vamos arrastar a partir daqui
e escrever o cronômetro por evento E podemos seguir em frente e selecionar esse chamado cronômetro por evento Você também pode escrever e ver o que pode fazer. Você tem cronômetro por evento, cronômetro por nome de função Isso é quase o
mesmo que o evento, mas você pode ver o que é isso. Depois de entender
o que é definir cronômetro por evento, vamos selecionar definir cronômetro por Agora, para este evento, temos que
adicionar um evento personalizado aqui. Você pode ver essa entrada
que precisa direcionar a partir daqui e
escrever eventos personalizados. Então você precisa chamar seu evento
personalizado de algo. Por exemplo, vou
chamá-lo de tocar passos, efeitos
sonoros, tocar efeito sonoro de
passos Agora ele pergunta aqui a
que horas você
deseja repetir isso? Por exemplo, vamos aumentar 0,5 Agora vou selecionar aqui que esse
cronômetro está em loop E eu vou
clicar nessa seta novamente. Ok, agora é um cronômetro em loop. E vai se repetir a
cada 0,5 segundos. Se eu direto daqui
e imprimir uma corda, e eu puder clicar em reproduzir aqui, você verá que corremos aqui. E eu paro meu código, você pode ver que ele é
executado a cada 0,5 segundos. Você pode ver que ele realmente imprime
olá a cada 0,5 segundos. Você pode ver isso melhor se
eu mudar a cor. Por exemplo, na duração, em vez de apenas 2 segundos, eu coloquei em 50 segundos. Eu clico em jogar,
me movo e paro. Ele executará o código. Veja a cada 0,5 segundos, ele vai dizer olá. Se você largá-lo,
poderá ver que a cada 0,2 segundos ele vai dizer
olá, como você pode ver aqui. Então, podemos usar esse
cronômetro para executar algum código. Nesse caso,
vamos usá-lo para repetir efeitos
sonoros de passos
quando você estiver correndo, ele reproduzirá os efeitos
sonoros Ok, para este cronômetro, em algum momento precisamos
parar o cronômetro Caso contrário, ele continuará para sempre e seu código falhará em algum momento porque você gerou muitas
instâncias disso Então, vamos clicar com o botão direito do mouse e
promover isso para uma variável. Vamos chamar isso de passos de 1 pé. Isso afeta o tempo ou o controle.
É chamado de alça. Se você segurar o mouse sobre ela, ela é chamada de estrutura de
controle de tempo. Eu geralmente chamo isso de
hora ou controle no final. Passos, som,
efeitos, tempo ou controle. Agora temos isso mais tarde, o que podemos fazer é pegar isso e
dizer claramente e invalidar É quando queremos
parar esse cronômetro. Em algum momento,
podemos seguir em frente e usar esse cronômetro claro e
invalidado. Mas agora vamos
simplesmente excluí-lo. Sim, isso foi na verdade
para esta aula. Deixe-me mudar este para algo como 0,5
para começar. Porque lembre-se de que um cronômetro
executa essa quantidade de segundos. Então, por exemplo, se você for 0,1, ele será executado
dez vezes por segundo. Você pode imaginar que não quer colocar isso em
algo assim, porque imagine quantas
vezes isso vai funcionar. Se eu disser olá e clicar em
jogar, correr e parar, dá para ver que vai virar spam. Esse código, você pode ver que
meu jogo está realmente travando e está muito atrasado Não faça isso, isso
é muito ruim. Eu gosto de ficar com o valor
mínimo e mínimo. Se eu realmente tiver que ir muito baixo, é 0,3 ou talvez
0,2 em casos raros. Mas geralmente eu tento
ficar em 0,50 0,40
0,6 Isso se eu
realmente precisar executá-lo Muitas vezes, novamente,
o que eu disse antes, você sempre pode acessar navegador da Internet
e dizer,
por exemplo, 1/0 0,01 Então você pode ver
quantas vezes ele é executado Normalmente eu não gosto de ir
mais de 60 vezes por segundo. Eu escrevo, por exemplo, se você escrever 0,03, ele
roda 33 vezes por segundo E às vezes está
tudo bem, não se preocupe. Às vezes, isso é necessário e você saberá
quando precisar. Quando você consegue ficar acordado
assim, é muito melhor. Isso executa o código 16 vezes. Você pode ver 0,03 Você
executa o código quase ou, na verdade, o
dobro do
tempo de 0,06. Tente
ficar o mais alto
possível aqui, porque
isso será realmente otimizado para mim
agora, seguindo os passos Vamos executá-lo em 0,5
segundo, duas vezes por segundo. E sempre podemos
ajustá-lo mais tarde, quando necessário. Vamos deletar
esse. Vamos compilar tudo e passar para
a próxima lição
59. Replicação 5.08 Multicast: Ok, então aqui estamos novamente. Agora, é muito importante que
estejamos no modo multijogador. Não podemos simplesmente entrar aqui e arrastar a partir daqui e dizer
play Sound, por exemplo. Você acabou de dizer play Sound. Você pode reproduzir o som em dois D, que geralmente é usado para elementos da
interface do usuário quando você
clica em um botão. E você pode reproduzir
som em um local, por exemplo, seguindo passos E você pode simplesmente ir em frente
e selecionar o som. E você pode ver
que se eu clicar em Play, eu corro, ele tocará
o som como você pode ver aqui. Agora, isso realmente
não funciona
no modo multijogador. O cliente não ouvirá
o som, porque, novamente, lembre-se de que precisamos replicar os itens para os clientes
da lista de servidores Agora, isso funcionaria no single player, mas
não no multiplayer. Agora, para multijogador,
precisamos usar um multicast. O que é um multicast, na verdade, vamos criá-lo aqui e eu
explicarei para você Vamos clicar com o botão direito do mouse e
criar um evento personalizado. Neste evento personalizado,
vou chamar o servidor primeiro. Vamos executá-lo no servidor. Passos do servidor, efeitos sonoros. Ok, vamos clicar aqui
nas réplicas, rodar o servidor e de forma confiável Agora vamos clicar com o botão direito do aqui e criar um
novo evento personalizado. Vamos chamá-lo de MC para multicast. E, novamente, toque passos, efeitos
sonoros para este, vamos clicar em Replicar E agora também vamos escolher multicast e confiável O que é um multicast,
você pode imaginar,
ele replica isso, tudo o que você escreve aqui para
todos os clientes Custa todos esses itens que você escreve aqui para
todos os clientes. Para multicast, ele só pode ser
executado por meio do servidor. Você não pode entrar aqui e dizer efeitos sonoros
multicast footstep porque este que você pode ver diz que
se o servidor só
funciona através do servidor, você não pode transmitir
através do cliente Não podemos fazer isso. É por isso que temos que arrastar a partir daqui e executá-lo
primeiro no servidor, com efeitos sonoros de passos Então, a partir do servidor,
podemos arrastar e dizer efeitos sonoros
multicast footstep E isso funcionará perfeitamente, então você deve executá-lo
primeiro no servidor, a partir do servidor e, em seguida,
fazer multicast Ok, outra
explicação também para o multicast que você
precisa entender é multicast geralmente é usado para efeitos temporários Por exemplo, se você reproduzir um efeito sonoro porque se
lembra do multicast, se um jogador se conectar ao seu jogo e você tiver
escrito um código em multicast, o jogador conectado não
conseguirá ver esse É aqui que
entra a notificação de representante . E isso
virá mais tarde. Não se preocupe com isso por enquanto. Mas você pode ver aqui se
eu clicar em uma variável, se eu realmente tenho uma
variável, se vou até você, agachado, por exemplo, e
clico no meu estado de movimento Você pode ver na replicação que eu também tenho algo chamado notificação
de representante que
virá Mas se voltarmos e
voltarmos aqui para o multicast, qualquer código que você escrever
aqui não será visto pelo player conectado,
a
menos que seja reproduzido novamente. Se eu simplesmente me conectar
ao jogo e ele apenas reproduzir o efeito sonoro de
execução, não
consigo ouvi-lo,
a menos que o jogador pare e corra
novamente. E coloque esse código enquanto
eu estiver conectado ao servidor, então ele será reproduzido corretamente
para o multicast É muito importante que você faça
algo que o
player conectado realmente não
precise ouvir ou ver, a menos que seja reproduzido
novamente, por exemplo. Agora, para esse
efeito sonoro de passos, podemos tocar aqui, bem
como alguns efeitos visuais,
por exemplo, alguns fogos de artifício E se você abrir um
baú e houver alguns efeitos visuais dourados saindo
desse baú, ele também precisará ser executado
em uma transmissão múltipla O representante aqui, se eu clicar em
uma das minhas variáveis. precisa ser usado sempre que você precisar que o player
conectado veja essa alteração. Digamos, por exemplo, se
o jogador estiver segurando, por exemplo, uma AK ou
uma pistola, uma águia Então, é muito importante
que o jogador
conectado veja a
arma correta nas mãos do jogador. A arma que você
realmente não usa em um multicast porque o
jogador conectado verá a arma errada no player Alguns jogos custam muito dinheiro porque usam
multicast para tudo Novamente, geralmente eu o
uso principalmente para efeitos
sonoros e visuais que não precisam estar
presentes o tempo todo. Por exemplo, você pode ver se
há um semáforo que vai de vermelho,
amarelo e verde. Esse semáforo
dessa cor, eu provavelmente faria
dentro de um representante, notificar porque essa cor
precisa estar visível corretamente
para o player conectado O player conectado precisa
ver se está amarelo ou vermelho e não continuar vendo a
cor verde até que ela mude novamente. Para
efeitos visuais temporários, por exemplo, fogos de artifício
relacionados que desaparecem
após 3 segundos não
precisam estar em uma notificação que precisa estar em uma transmissão múltipla Tudo o
que é temporário e que o player conectado não precisa ver imediatamente,
você precisa fazer isso aqui. Lembre-se de que esse código precisa ser executado novamente antes que o
player conectado possa vê-lo. Ok, vamos
tocar o som aqui. Vamos arrastar a partir daqui e
dizer reproduzir som no local. É assim que você toca um som. Você precisa especificar onde
deseja reproduzir o som. Lembre-se de que estamos codificando
dentro do player. Eu posso simplesmente arrastar a partir daqui
e dizer obter a localização do ator. Estou obtendo a localização desse
jogador. Agora, esse som será
reproduzido onde quer que o player esteja. Agora temos que
selecionar qual som. Vamos selecionar
os passos. Agora, se eu clicar em jogar
e correr, agora eu paro. Você pode ouvir que
os passos estão tocando Você também pode ouvir isso aqui
no outro player. Se eu abrir o outro player, também
posso ouvir
o som. Isso é do cliente.
Agora isso está funcionando, ok? Você pode ouvir que ele
funciona o tempo todo, mesmo que eu não esteja correndo. E também precisamos corrigir
isso na próxima lição. Mas, por enquanto, sabemos que esse efeito
sonoro está
realmente sendo reproduzido. Novamente, o multicast só pode
ser executado por meio do servidor. Você não pode executar um multicast por meio do cliente,
executá-lo por meio do servidor
e, a partir do servidor,
você pode transmitir vários efeitos sonoros ou
visuais
temporários que
não precisam aparecer conectado. Por exemplo, alguns fogos de artifício ou uma bala que você acabou de atirar e
ela desaparecerá Mas, por exemplo, qual
arma o jogador está segurando é muito importante
para o jogador conectado. Então, isso
entrará em um representante, notificará. Não se preocupe,
faremos isso mais tarde. Por enquanto, não temos muito. Só temos o efeito sonoro. Mas teremos muitos
exemplos ao longo deste curso. Ok, para parar o efeito sonoro sempre que pararmos
aqui no final. Isso ocorre sempre que
soltamos as teclas de movimento. O que podemos fazer é seguir
os passos aqui novamente. Podemos limpar e invalidar o
cronômetro por alça. Isso impedirá que esse cronômetro
continue funcionando. Podemos prosseguir e conectá-lo, assim como podemos compilar e vamos
tentar reproduzi-lo agora Se corrermos e eu parar aqui, você não ouvirá nada
quando correr. A razão pela qual você não consegue
ouvir tudo isso é porque continua funcionando
assim muito rápido. Ele nunca atinge esse cronômetro antes que o segundo
movimento esteja em execução Continua funcionando assim. Isso dá uma pausa para realmente revisar
e ajustar esse cronômetro. Vamos corrigir isso, mas você pode ver aqui que,
ao adicionar isso, o cronômetro na verdade não reproduz mais
o efeito sonoro
porque estamos parando Ele limpa o cronômetro apenas para garantir que
ele não se apague. Sempre podemos usar
essa alça de passos, podemos arrastar e dizer
válido e podemos usar, este é um cronômetro válido Se for válido, podemos
criar uma ramificação e limpar esse cronômetro dessa forma Está bem? Certifique-se de
que esse cronômetro seja válido e, em seguida,
limpe-o para torná-lo mais Você sempre pode pegar outra instância dessa
variável e conectá-la aqui. E você pode ir em frente e
organizar mais esse poço. E agora temos esse código. Ok, vamos compilar e,
na próxima lição, vamos realmente tornar isso menos
complicado e realmente executar esse
código sempre que estivermos executando
60. 5.09 Condições da Footsteps SFX: Ok, primeiro o que eu preciso
fazer é fazer um lingote,
vamos arrastar isso para longe. E vamos fazer um novo lingote chamado Playing
Footsteps Effects Tocando o efeito
sonoro dos passos. E eu simplesmente escrevi isso errado. Assim, reproduzindo o efeito sonoro de
passos, vamos arrastá-lo e configurá-lo verdadeiro sempre que estivermos
reproduzindo os efeitos sonoros Antes de fazermos isso, vamos
pegar isso e fazer um galho. Primeiro, vamos perguntar se
estamos tocando os
efeitos sonoros ou não. Só para torná-lo mais legível, vou me debruçar sobre isso e escrever não lingotes”, sem mais nem menos Quando não estamos tocando
os efeitos sonoros, quero continuar
tocando os efeitos sonoros. Não precisamos executar
os efeitos sonoros dos pés quando já os estamos executando. Se não estivermos reproduzindo os efeitos sonoros de
passos
, podemos continuar reproduzindo os efeitos sonoros desse
jeito Lembre-se de que você
precisa configurá-lo para falhas. Em algum momento aqui, quando pararmos o cronômetro e
pararmos os efeitos sonoros, vou definir isso como falso Vamos compor,
ver se isso funciona ou se precisamos fazer mais. Agora você pode realmente ver que
funciona quando você está correndo Funciona quando você está
parando, também para. Ok, incrível. Agora ele
corre muito devagar. Então, talvez você precise reduzir
esse número para 0,5 ou quatro. E você pode ir em frente
e jogar novamente. Talvez seja muito rápido. Na verdade, vou escrever 0,42. Acho que você tem que
jogar algumas vezes Tente testar seu jogo.
Acho que está tudo bem. Você sempre pode ajustar isso mais tarde, se tiver
dinheiro com isso Mas acho que esse número
está bom para mim agora. Agora isso está funcionando corretamente. No entanto, você
terá alguns bugs. Você verá se clicar
em Jogar e eu correr por aí, você pode ver se
encontra alguma coisa. Coloque também o efeito sonoro. Esse é um pequeno bug
que você precisa corrigir. Para este, você pode usar
a velocidade do player, porque se eu simplesmente
tirar isso, vamos mover tudo
isso para cá. Assim, você pode realmente ter
algum espaço para trabalhar. Se você clicar com o botão direito do mouse
e disser obter velocidade, essa é a velocidade do jogador e você pegar isso e
quebrar, quebrar esse vetor Assim, você pode ver o
X, Y e Z novamente. Você também pode clicar com
o botão direito do mouse e dividir o pino da estrutura.
Isso é a mesma coisa. No entanto, eu gosto de quebrar o vetor só
para tê-lo aqui. Agora, só para ver,
vamos imprimir uma string. Você pode simplesmente imprimir
a velocidade x, por exemplo, e
ver o que ela diz Eu costumo fazer isso às vezes
quando faço um novo mecânico. Eu uso
muito a string de impressão para ver o que ela faz. Você pode clicar em
W para se movimentar e ver o aumento da
velocidade A velocidade do seu personagem
aumenta sempre que eu me movo. OK. Assim mesmo. E a mesma coisa
com o X e o Y. Então você pode ver que ele aumenta
sempre que você se move O que podemos fazer para tocar os efeitos sonoros quando
você entra nas coisas eu não quero tocar o som. Vamos partir
disso e dizer se essa velocidade é maior que, por exemplo, 100 ou se
é menor que 100 Porque lembre-se,
se você voltar
, será um número negativo se também for menor que 100 Ou vamos fazer isso
para o y também. Vamos copiar e colar isso e
conectá-lo aqui. Se for menor ou maior, ou menor que 100 aqui.
Vamos nos afastar disso. Não precisamos
usar barras de ouro porque n significa que tudo isso
precisa ser verdade Podemos arrastar a partir disso e usar um lingote Or, se um
deles for verdadeiro, não
queremos reproduzir o
som porque somos muito lentos. Vamos clicar no sinal de mais
aqui e adicionar todos eles. O que estamos dizendo é que se a velocidade
do x for maior que 100, ou se for menor que 100, ou se for isso,
ou se for aquilo, então queremos
reproduzir o som que
podemos arrastar daqui
e escrever uma ramificação Então, a partir dessa ramificação, podemos
prosseguir e conectá-la. Assim,
podemos conectar o código. Agora, o código
só será reproduzido sempre que estivermos nos movendo
nessa velocidade Vamos clicar em jogar.
E eu me movo. Eu paro e me mudo
para algo aqui. Veja que ainda está tocando. E acho que é porque isso
aqui não é alto o suficiente. Se escrevermos, por exemplo, na verdade isso é
porque esse é, o menor também está errado. Na verdade, vamos
aumentá-lo primeiro, vamos fazer 250. E aqui eu tenho que escrever abaixo de -250 Isso foi
um erro meu. Deixe-me escrever 250 e
é menor que -250 Na verdade
, ainda está tocando
o som se eu entrar em coisas e é porque eu não o coloquei
aqui no falso Quando for falso, você
pode ver se é verdadeiro, ele reproduzirá o efeito
sonoro. Mas se eu continuar pressionando
o botão, será falso. Nós realmente não fazemos nada. Isso só interromperá
o efeito sonoro sempre que eu soltar o botão. O que precisamos fazer é arrastar isso até aqui. E precisamos inserir esse
falso aqui também. Portanto, ele interrompe o cronômetro
sempre que for falso. Vamos clicar em jogar agora
e ver as coisas. E você pode ver agora que ele
não reproduz o som. Quando eu ando um pouco, você pode ver que ele começa
a tocar o som. Você sempre pode
ajustar esse número. Se você
diminuí-lo, ele tocará o som muito mais rápido
quando você entrar nas coisas. Mas, por enquanto, isso
é bom para mim. E você sempre pode ir em frente e organizar isso um pouco mais, ok? Então, algo parecido.
Acabei de colocar as notas da rota de leitura para que fique
um pouco mais legível Simples assim, ok. Agora, o que precisamos fazer é que
existem outros fatores. Agora, o próximo fator é que você pode ver se eu subo até aqui, deixe-me realmente pular
daqui e eu pulo
, também está tocando o
som no ar. O que precisamos fazer
é pegar,
este não está pulando, então estamos nos certificando de que
o jogador não esteja pulando Caso contrário, não queremos
reproduzir os efeitos sonoros. Vamos tirá-lo do remo e do
lingote direito. Se for verdade, se você não estiver pulando, podemos
tocar os efeitos sonoros Isso também precisa ser uma
condição. Na verdade, vamos atacá-los. Sim, um pouco aqui atrás. Deixe-me arrastar tudo
isso ainda mais longe. Agora o salto está funcionando. A segunda coisa é que também
queremos ter certeza de que
estamos realmente correndo
e não andando. E você pode ver aqui, se eu
correr primeiro e andar, na verdade, ele também vai
jogar, correndo. Não sei se tenho
isso, na verdade não tenho. Podemos pegar esse estado de movimento e arrastar a partir daqui e dizer pegue uma cópia novamente. Podemos tentar verificar
qual é o último índice. Se estiver funcionando,
significa que estamos pressionando o botão de corrida agora e não andando ou agachados Se isso for igual à execução, podemos
seguir em frente e fazer esse código desse jeito.
Nós podemos fazer isso assim. Agora, para torná-lo mais limpo, vou selecionar tudo isso com o botão direito
do mouse
e reduzi-lo a uma função que vou
chamar assim, a função está em execução. Isso é apenas verificar se o
player está funcionando ou não. Estou transformando isso em
uma função pura. Vamos entrar aqui
e organizar isso um pouco mais dentro da
função, desse jeito. Aqui, estamos simplesmente verificando se o player está funcionando ou não. Então, este está funcionando, então estamos garantindo que
o player esteja funcionando,
caso contrário, não queremos reproduzir
os efeitos sonoros de passos Ok, vamos
jogar aqui. E tente novamente. Estou jogando agora. Eu paro. Se eu correr, se eu segurar o turno para andar,
não vou jogar. Se eu desistir, ótimo. Agora funciona, ok. Há um pequeno
problema no momento. Você pode ver que se eu correr um pouco, ele realmente não reproduzirá
o efeito sonoro, a menos que
eu corra um pouco mais. O que você precisa saber
aqui para o cronômetro por evento é o tempo
que você
precisa percorrer aqui antes ele realmente reproduza esse
código, ajuste cinco, por exemplo E eu clico em Play. Ele não vai reproduzir
esse código instantaneamente. Ele vai esperar 5
segundos antes de ser executado. A primeira instância
desse código leva 5 segundos
antes que ele realmente comece a reproduzir os efeitos sonoros de
passos Como você pode ver aqui,
ele acabou de ser reproduzido, o
efeito sonoro do passo é 0,42.
Precisamos tocar o efeito sonoro logo antes de ser reproduzido
, apenas uma vez Nós podemos fazer isso aqui.
Sempre que vamos começar a tocar
os efeitos sonoros. Posso continuar e lembrar que você não pode executar o multicast
diretamente do cliente Você também precisa executá-lo
no servidor. É por isso que eu posso dirigir
a partir daqui e escrever primeiro
os efeitos
sonoros do play footstep E então ele
reproduzirá o multicast. Depois disso, vou tocar o
efeito sonoro de passos imediatamente. Quando eu correr, após 0,42 segundos, ele começará a repetir esse
código. Porque se eu não fizer isso, ele vai esperar 0,42 segundos antes de começar a
executar tudo isso É por isso que temos
um pequeno atraso. Se você clicar em “Pode jogar agora”,
você pode ver que ele é reproduzido
imediatamente , então é muito melhor. Agora, também o que você pode fazer se não quiser
reproduzi-lo imediatamente. Se quiser ter
um pequeno atraso no efeito sonoro,
o que você pode fazer clicar aqui e pegar segundos decorridos
ou os segundos do gatilho Ambos funcionam.
Na verdade, deixe-me usar aquele chamado segundos de
gatilho. O que você pode fazer é arrastar a partir daqui. Na verdade, vamos
imprimir uma string. Gosto de imprimir sequências de caracteres para que você
possa ver o que estamos fazendo. Vamos conectar essa string de impressão ao código e apenas conectar esse gatilho em segundos à string de
impressão. Vamos jogar. Você pode ver quando eu seguro minha chave, apenas conta os segundos de quanto tempo estou segurando minha chave. Por exemplo, não só minha chave,
na verdade, todo o meu
movimento pode dizer que estou me movendo, mas conta. Se eu abandonar meu movimento, ele começa do começo. Ele conta apenas os segundos de quanto tempo você pressionou
os botões de movimento. Mas o que você pode fazer é
rastrear a partir disso e dizer que se os segundos
de gatilho forem maiores que, por exemplo, 0,3, então
queremos seguir em frente e correr. Deixe-me adicionar outra
condição aqui. Temos muitas
condições 1 aqui. No final, temos
muitas condições. Vamos conectá-lo e
clicar em Play. Funciona, mas agora, após 0,3 segundos, ele
reproduzirá o código. Agora, se você aumentar, ele será reproduzido
muito mais tarde. Após 2 segundos, se você clicar em Reproduzir e
executar após 2 segundos, ele reproduzirá o código. Isso se você quiser
atrasar um pouco. Se você não quiser reproduzir o
efeito sonoro de corrida instantaneamente, você pode ter um pequeno atraso, talvez 0,4 em vez
de 0,5, e ele será reproduzido muito mais rápido. Você pode ver que ele não reproduz o efeito sonoro sempre que
você faz isso. Se você clicar na tecla rapidamente, mas se clicar
um pouco mais, ela reproduzirá
o efeito sonoro. Acho que vou colocar em 0,3 Acho que está jogando
tarde demais. Se você fizer isso,
não vai funcionar. No entanto, se você
pressionar um pouco mais, ele reproduzirá
o efeito sonoro. OK. Agora funciona perfeitamente. Vá em frente e organize o código. Se você quiser remover um
dos pinos do Ou,
por exemplo, você pode escrever,
clicar e remover o pino Vá em frente e organize o código. Agora tudo está organizado e você pode ver o código
aqui, caso tenha
perdido alguma coisa. Também fiz o upload
deste projeto final para você, para
que você possa acompanhar. Vamos continuar e compilar. Vamos salvar tudo e passar
para a próxima lição.
61. 6.01 Colocando os pontos de spawn: Ok, agora que terminamos
o movimento, é claro que ainda
precisamos do movimento da pistola e do
movimento do rifle, mas vamos nos
concentrar nisso mais tarde Por enquanto, vamos continuar com a geração
do jogador
para a geração do jogador, vamos começar a colocar
alguns pontos de desova para o jogador aqui na pasta Vamos clicar com o botão direito do mouse em
criar uma nova pasta. Vamos chamar isso de
Span Points Again, vamos clicar com o botão direito do mouse nessa pasta. Eu vou definir a
cor para este. Novamente, dentro dessa pasta. Vamos clicar com o botão direito agora
para obter os pontos de desova Precisamos que os jogadores comecem para que o jogador possa realmente
começar no nível No entanto, em vez de
criá-lo a partir daqui, porque este agora é criado
apenas a partir
dele, os jogadores começam. No entanto, precisamos
dos pontos de desova que são, na verdade, plantas Em vez de fazer isso
, vamos deletar isso. Os jogadores começam do
nível. Se você quiser certeza de que não tem mais partidas de jogador
em seu nível, você sempre pode simplesmente
vir até aqui no esboço e
procurar
o início dos jogadores E você pode ver que nada está aqui. Vou clicar no X aqui em
cima para criar um novo. Vamos clicar com o botão direito do mouse para ir para a classe
Blueprint agora, em vez de selecionar uma dessas aqui, você pode clicar
nesta pequena seta, pode realmente ver, você pode fazer plantas de quase tudo Uma câmera, folhagem e até mesmo
o jogador começa e assim por diante. Então você pode ver que tem 682
itens que você pode pesquisar,
por exemplo, um jogo salvo, quando você vai criar um jogo onde você salva,
descarrega e assim por diante Então você tem muitas
coisas aqui dentro. Por enquanto, só precisamos que
os jogadores comecem. Se você pesquisar uma
partida de jogador, poderá vê-la aqui. Este chamado Players Start. Selecione este. Vá em frente
e clique em Selecionar. Vamos chamá-lo de BP spawns. Vou salvar automaticamente
por algum motivo. Vamos chamá-la de base de pontos de
desova da BP. Nós temos, temos um
plano básico, assim como o jogador. Se você voltar para o jogador,
temos uma base de jogadores. E a partir desse jogador
, criamos esses dois. Agora, eu realmente não expliquei para que eles
são usados, porque
não temos realmente
nada dentro
dos planos terroristas e
antiterroristas E esse é o que precisamos
corrigir mais tarde. Mas agora você pode ver
aqui que eles estão vazios, os filhos da base de jogadores. Lembre-se de que essas são as
plantas secundárias da base de jogadores Você também pode ver que, se você
segurar o mouse sobre eles, verá que a
classe principal é a base de jogadores. Vamos explicar
nesta seção como
eles são usados. Agora vamos voltar
à soma dos pontos. E agora que temos
um ponto de desova básico, vamos clicar com o botão direito nele Crie uma turma infantil de blueprint. Vamos chamar isso de ponto de surgimento de
terroristas da BP. Vamos clicar com o botão
direito do mouse na base do ponto de serra novamente e criar outra cláusula
secundária do blueprint Vamos chamar isso de ponto de surgimento de
terroristas da BP. Ok, temos um ponto de desova
antiterrorista
e temos um ponto de desova
terrorista Agora vamos
colocá-los dentro do nível. Vamos pegar primeiro o
antiterrorista e colocá-lo no nível em
algum lugar, por exemplo, aqui. E você pode clicar novamente em E para girar e
girá-lo. Assim mesmo. Você pode ver que tem
essa seta azul e é para onde o
jogador está olhando. Porque você pode ver
se eu clicar em jogar, agora o jogador está olhando
nessa direção. Se eu girar dessa
maneira e jogar, o jogador está girando
nessa Então, para ter certeza de que eles estão olhando na direção correta, vamos seguir em frente e
fazer com que ela aponte para essa direção dessa forma. Está bem? Agora você sempre pode ajustar
os pontos de ligação mais tarde,
mas, por enquanto,
vou
colocá-los onde acho que
seriam os mais ideais. Então, por exemplo, no terraço do
balcão aqui, você sempre pode segurar Alt
e arrastar para copiá-lo. E você pode colocar
este aqui, por exemplo. E eu geralmente os coloco
atrás da defesa aqui, porque se você
os colocar aqui, eles podem simplesmente
se matar imediatamente. Eu costumo colocá-los
atrás da parede para que não sejam
mortos imediatamente. Você pode simplesmente colocar
alguns deles. Esse é o terceiro e
esse é o quarto. Está bem? Assim mesmo. Você pode até colocar um aqui, mas eu não quero gerar
ninguém aqui, na verdade Eu só quero
gerá-los aqui embaixo. Novamente, para o seu jogo,
tudo depende de você. Você pode escolher onde quer que seus jogadores
apareçam até você Ok, eu os gerei aqui. Deixe-me fazer a mesma coisa agora
aqui para o terrorista. Deixe-me entender isso
e colocá-lo em algum lugar aqui. Novamente, estou tentando
colocá-los o melhor que
posso atrás da parede. Segure alton, arraste para copiar e eu vou
colocar um aqui Agora diz, oh, eu
tenho o seletor de cores. Por alguma razão, na verdade,
não tenho ideia do que acabei de pressionar. Clicando aqui e
arrastando-o aqui novamente. Fique em algum lugar
aqui e segure Alt. Arraste e coloque o
último aqui. Eu só vou dar
uma olhada na lateral, ver como eles ficam. Posso selecionar todos eles
segurando o controle e
clicando neles. Eu posso simplesmente movê-los
um pouco mais perto da parede. Isso ocorre porque eu realmente
quero colocar armas atrás desses jogadores ou
atrás desses spawns OK. Algo parecido. Eu acho que parece bom. Você pode ajustar esses pontos de
desova conforme desejar, mas acho que
está ótimo Então, agora temos os pontos de
desova do terrorista colocados e também os pontos de desova do contraterrorista Então, vamos salvar
tudo e seguir em frente.
62. 6.02 Armazenando informações do Spawn Point: Agora que colocamos
todos esses pontos secundários, vamos analisar e armazenar
todas as informações. Agora eu costumo fazer isso
dentro do modo de jogo porque o modo de jogo escolhe
as regras do jogo Agora, muito importante, agora que você está trabalhando
no modo multijogador, é muito importante
saber que o código que você escreve aqui
dentro do modo de jogo só
está sendo executado no servidor se
você for o jogador e, só
está sendo executado no servidor se
você for digamos, dentro do jogador, você tenta aqui a partir do movimento porque lembre-se de
que quando você inicia o movimento aqui, você está disparando o código como jogador ou como cliente. E, como servidor,
você sempre pode ver qual deles está atirando Se você simplesmente arrastar a partir daqui
e escrever uma string de impressão. Agora, lembre-se de que uma sequência de caracteres de impressão
é realmente poderosa de usar. E se você compilar
e clicar em Play. E agora, quando eu me mudo, você pode
ver que agora está dizendo servidor. E quando me mudo como meu cliente, é o cliente que está dizendo olá. Isso significa que esse código
aqui está sendo executado no servidor e no cliente
e não apenas no servidor. Agora deixe-me conectá-lo. Deixe-me dar outro exemplo. Algo que só é executado
pelo servidor. Por exemplo, se eu ficar
agachado e jogar aqui com a autoridade, por
exemplo, posso compilar Clique em jogar e, quando
eu ando como servidor, nada está sendo impresso. E isso é, na verdade, agora,
quando eu clico em jogar, eu ando como servidor. Na verdade, vou me agachar.
Essa é a chave de agachamento. Se eu me agachar, você pode
dizer que diz olá. No entanto, se eu jogar como
cliente e me agachar, você pode ver que o servidor
está dizendo Não é o cliente
que está dizendo olá porque esse código
só é executado no servidor. Agora, para o modo de jogo, você não pode acessar o
código aqui de um cliente. Ele não tem acesso
ao modo de jogo. Se você quiser escrever algum código aqui que você precisa
acessar do cliente, isso não é possível,
então você
não deve escrevê-lo dentro
do modo de jogo. Pontos de desova. É muito
importante saber que é sempre o servidor que gera coisas no mundo Isso ocorre porque estamos
tentando evitar trapacear. Sempre deixamos o servidor
lidar com a geração. Por exemplo, fazer com que os
jogadores gerem uma arma no nível quando
o jogador a retira do inventário
e coisas
assim A desova é sempre feita no modo de
jogo. Para os pontos de desova, podemos
escrevê-los aqui. Vamos deletar tudo
isso por enquanto. Vamos escrever um clique
dentro dos eventos. Se você clicar em um
evento, por exemplo, e clicar em um jogo, poderá ver algo chamado post login. Você também pode simplesmente escrever, clicar e
escrever o login da postagem. E esse evento em
jogos multijogador. Sempre que o jogador
se conecta ao seu mapa, se conecta ao seu servidor. Cancelar o login é
como começar a jogar. Sempre que o jogador se conecta ao seu servidor, algo acontece. Está bem? Então, o que geralmente
queremos fazer aqui é
criar uma nova variável. Crie uma nova variável, você pode
ver a entrada do novo jogador. Aqui está um controle de player, para que você possa realmente armazenar o controle do player
quando ele se conectar e usá-lo posteriormente. Essa é uma informação muito útil. Vamos escrever os jogadores conectados e o tipo é controlador do
jogador e, em
seguida, selecionar este, Referência do
objeto
do controlador do jogador .
E vamos compilar Como queremos armazenar todos os controles
do player
quando eles se conectam, precisamos transformar
isso em uma matriz. Lembre-se de que essa é
uma variável única, você só pode armazenar uma
informação. No entanto, em uma matriz,
é como uma caixa. Você pode colocar todos os controles do player dentro dessa caixa e
usá-los mais tarde. Vamos pegar essa, vamos
rastrear a partir daqui e dizer Ad. Podemos adicionar esse controlador de
player a esta caixa aqui com todo
o controle do player com os jogadores
conectados aqui. Em vez de usar esse anúncio, evite a caixa que eu
normalmente tiro
daqui e use
essa chamada add unique. Você só pode ter uma instância desse controlador de
player aqui, caso o jogador
se reconecte ou coisas assim Não temos dois controles de jogador
desse cara
dentro da matriz. Adicionar exclusivo. Basta adicionar uma instância desse
controlador de jogador aqui. E depois para armazenar as
informações dos pontos de ligação. Agora, para conseguir qualquer coisa, isso é muito, muito importante. Quando você costuma programar
por meio dos meus cursos, quero que preste atenção
às ferramentas que estou usando. Às vezes é importante que
estejamos programando um jogo de tiro em primeira pessoa
ou um jogo em dois D. Às vezes, é mais
importante realmente
prestar atenção aos
nós que estou usando. E imagine de que
outra forma você pode usá-lo em um jogo de RPG ao
saquear moedas e assim por diante Para armazenar ou obter qualquer coisa
que esteja dentro do seu nível, que exista
dentro do seu nível, temos que usar um nó
chamado Get Actor of class. Se você clicar com o botão direito aqui
e dizer Obter ator da classe, você pode ver agora que pode obter qualquer coisa aqui que esteja
dentro do seu nível. Por exemplo, os jogadores
começam que estamos usando. Se você pesquisar jogadores
começar, você pode ver isso. Você
também pode ver isso aqui, já que não se chama partida de jogadores,
isso não está errado. No entanto, você também pode obter, se você for até os pontos de desova, você pode obter a base do ponto de
desova, agora que a temos
na planta, se você apenas
pesquisar a base do ponto de desova, poderá vê-la Consiga o ator da turma. Obtém apenas um deles
aqui do nível. Também temos outro nó
chamado get all actors of class. Não estamos ganhando apenas
um ponto, na verdade
estamos recebendo
todos os pontos de desova Na verdade, eu só
quero separá-los. Você pode simplesmente
pesquisar a base do ponto de extensão e adicioná-la e
chamá-la de pontos da Espanha. No entanto, na verdade, eu já vou separá-los daqui. Vou procurar os pontos de desova dos
terroristas de Cada pontos de desova dos
terroristas Ponto de desova. Certifique-se de que seja o
ponto de desova que você selecionou aqui. Vou clicar com o botão direito aqui, promovê-la a uma
variável e chamá-la pontos de desova de
Cada terrorista Agora eu os tenho dentro
dessa variável de matriz. Ok, em seguida, podemos novamente dizer que
pegue todos os atores da classe, podemos obter os pontos de desova do
terrorista Agora, se você conseguir encontrar um ponto de spa
terrorista, vamos conectá-lo aqui novamente. Deixe-me clicar com o botão direito neste, transformar isso em uma variável e chamá-lo de
pontos de geração de terroristas . Está recebendo todos os atores da classe de pontos
de desova em terraços, que são todos aqueles que Ele está recebendo todos os quatro e
agora os estamos armazenando dentro
dessa matriz. Tudo bem, agora que
temos isso armazenado, novamente, você sempre pode tentar imprimir
uma string se quiser, clique com o botão
direito do mouse em imprimir uma
string assim. Você pode tentar obter
este, por
exemplo, obter
uma cópia dele. Novamente, se você não se lembra
das funções de uma matriz, basta
pesquisar a matriz e ver todas as funções
que podem ser usadas aqui. Por exemplo, você pode dizer get, se eu puder encontrá-lo
aqui, este aqui e você pode
conectá-lo. Agora você está obtendo o
ponto da Espanha no índice zero. E se você jogar, pode ver que é
chamado de ponto de rotação terrorista, assim. Se você obtiver o ponto de rotação
no índice um nessa matriz, ele será chamado de spin 0.2 Se você
obtiver o do índice dois, é chamado de Spin 0.3. Você pode ver essa matriz realmente contém
todos os pontos da Espanha. Muito útil, novamente, para usar cadeias de caracteres
Pin quando você
deseja depurar seu jogo, só
está interessado em
ver o que essa variável,
por exemplo, está
realmente Vamos compilar, salvar tudo
e seguir em frente
63. 6.03 Importando a interface do usuário: Agora que temos as informações dos
pontos da Espanha armazenadas, estamos realmente prontos para criar uma interface de usuário antes de
terminarmos a geração. Então, vamos importar
a interface do usuário nos materiais de custo
que eu
forneci dentro deste site, você pode acessá-la e
baixá-la novamente. Se você ainda não o
baixou, pode entrar
na pasta UI. Aqui eu tenho botões para você e eu tenho os ícones
e também tenho imagens. Agora, se você clicar nos botões, deixe-me entrar primeiro no
motor. E deixe-me criar uma pasta de interface do usuário. Vamos clicar com o botão direito
na pasta de conteúdo. Vou criar uma nova pasta
chamada I dentro daqui. Vamos clicar com o botão direito do mouse e
criar uma nova pasta. E eu vou chamá-lo,
por exemplo, de botões. Vou criar
um novo chamado ícones. Vou fazer uma
nova chamada Imagens. Vamos começar com
a pasta de botões. Deixe-me ver os materiais do
meu curso. Pegue todos os botões aqui,
clique e arraste-os para o seu navegador punt. Assim, você pode ver
todos eles importados. Awesome. Agora, para esses aqui, se você apenas abrir um deles, verá que eles são importantes
e que tudo está correto. Para torná-los um pouco melhores e não deixá-los embaçados ou com
erros dentro do jogo,
você precisa alterar o grupo de
texturas para Você também precisa alterar
as configurações de compressão para a interface de usuário dois
D. Então, ele realmente sabe que é um elemento da interface e que
não temos nada embaçado ou alguma linha branca
por trás dessa interface e assim por diante E você realmente tem
que fazer isso para todos eles. Agora vou te mostrar um truque. Já usamos isso antes. E se você apenas
selecionar todos eles, poderá escrever Clique em
Ir para ações de ativos e Editar em massa por meio
da matriz de propriedades. Agora fizemos isso
com as animações. Se você se lembra, você também pode fazer isso com os
elementos da interface do usuário aqui. Vamos clicar em compressão aqui. Certifique-se de que, nas configurações
de
compressão transforme-as em uma interface de usuário. Dois D, deixe-me realmente
ver qual é o outro, acho que está no
nível de detalhe aqui. Um grupo seleciona esse
e o transforma em UI. Agora você realmente
mudou isso para todos eles e não precisamos
fazer isso para cada um deles. Agora você pode ver se clicar
em um deles, por exemplo, você pode ver que é a interface de
usuário e a segunda interface de usuário, incrível. Tudo está indo
bem. clicar
em Arquivo e Salvar. Vamos voltar aos materiais do
curso. Vamos voltar aos ícones Agora, você pode ver mais ícones do
que os que você pode ver
aqui na minha tela. Novamente, isso ocorre porque eu geralmente coloco ícones à medida que
desenvolvo este curso. Posteriormente, adicionarei mais ícones, mas no seu exemplo ou nos materiais do curso de
conteúdo, você provavelmente verá mais ícones. Não se confunda,
vamos usá-los mais tarde. Mas por enquanto eu só
tenho esses dois. E eu vou até meus ícones e vou
arrastá-los até aqui. E novamente, assim como
antes, clique nele, transforme-o em uma interface de usuário e em uma interface de usuário dois D. Eu também vou fazer
isso para o outro, interface de
usuário dois D.
Ok, então eles estão prontos. Vamos voltar
às imagens agora. E deixe-me abrir
meus materiais de custo. Vamos voltar às imagens. Deixe-me importar
todos eles para aqui. E às vezes isso
realmente
os transforma em um mapa normal,
como você pode ver aqui. Esses foram importados como mapas
normais e eu
não quero isso. E clicar em Reverter, Reverter e revertê-lo não
os transformará em um mapa normal, então vá em frente e clique
no primeiro novamente,
selecione o
último, clique com o botão direito Acesse Ações de ativos e
Edição em massa por meio da matriz de propriedades. Abra a compressão selecione aqui nas configurações de
compressão. Selecione a interface do usuário,
dois D no nível de detalhe no
grupo de texturas, selecione a interface do usuário. Vamos fechar tudo
e salvar tudo. Agora que tudo está pronto, vamos para
a próxima lição.
64. 6.04 Importando uma fonte personalizada: Tudo bem, agora que
adicionamos a interface do usuário, na verdade também precisamos de algum
fundo que possamos usar. Alguns textos, textos personalizados, e você pode encontrá-los escrevendo fundos para o Google É muito bom
usar
isso porque eles são gratuitos e têm
muitos fundos interessantes. Se você entrar nos fundos do Google e clicar nele,
este é um dos fundos que você
deseja usar no seu jogo. O que eu costumo fazer é
aqui em categorias, eu geralmente removo a tela, a
caligrafia e o monoespaço Novamente, depende do
estilo que você deseja para o seu jogo. Quanto ao número de estilos, geralmente
gosto de fundos que
tenham muitos estilos porque sei que eles ficam
bem dentro do jogo. Por exemplo, podemos usar o
Roboto ou o Open Sense. Ou você também pode usar, por
exemplo, algo como Rubic. Acho que vou usar
o Rubic novamente. Escolha o que
quiser, não importa. Vou escolher Rubic e clicar em
Download Family Ele vai
baixá-lo para você. Eu posso clicar nele e abri-lo. E aqui você pode ver todos os
fundos estáticos, clicando nos estáticos, e aqui estão todos
os fundos, ok? O que vou fazer é
minimizar tudo isso aqui no meu desktop. Vou colocá-los
aqui primeiro porque é uma pasta e você
precisa extraí-la primeiro. Porque se você tentar importar
coisas de uma pasta Sip, ela não vai deixar, vai
te dar esse erro aqui Novamente, vou
minimizar isso. Normalmente, você realmente não precisa de
fundos muito leves como este. Luz rubiana, porque é
muito difícil de ver no jogo, geralmente
escolho
as mais ousadas. Rubrica, negrito, extra
ousado. Vamos escolher também
o semirnegrito, há um meio normal Vou pegar o médio
e clicar e
arrastá-lo para a área de trabalho
para extraí-lo. Agora vou
encerrar isso. Agora que temos esses fundos, podemos voltar ao Unreal
Engine e deixar
eu criar uma nova pasta, na verdade,
aqui na pasta UI Deixe-me clicar com o botão direito do mouse e criar uma nova pasta chamada
fundos. Vá embora daqui. E vou arrastá-los para minha
pasta de fundos. E eu vou te perguntar, você gostaria de
criar um novo ativo de fundos usando esses fundos importados? Vou clicar e
aplicar em todos os D. Sim, eu quero que você faça isso. Isso criará
um fundo para você. Vá em frente e salve tudo. E agora você pode realmente
usar esse fundo se entrar em qualquer interface de usuário que estamos
criando no futuro. Você pode alterar o fundo para um desses para
ver uma maneira muito, muito fácil de adicioná-lo. Está bem? Então, agora que
adicionamos fundos ao motor, vamos seguir em frente e
apresentarei os projetos do
Widgit
65. 6.05 Introdução aos widgets: Vamos agora
criar um plano de widget. Os esquemas do widget
são basicamente a interface do usuário aqui dentro
do Unreal Então, se você clicar com o botão direito do mouse, acesse a Interface do usuário e
crie um esquema de widget Mas, em seguida
, crie-o e selecione-o. Aqui, aqui em cima, o widget do usuário. E vamos chamá-lo de WB. E vou chamar
isso de seleção de equipe, porque estamos criando a seleção de
equipe em que você pode escolher ser terrorista ou contraterrorista Vamos abrir esse
widget, blueprint. Dentro desse
widget. Planta. Quase parece o visualizador de plantas com o qual
estamos trabalhando Você pode escrever,
clicar aqui e girar para a esquerda. Você pode ver todos os elementos dentro da paleta
que você pode adicionar Por exemplo, podemos adicionar imagens,
botões, bordas,
controles deslizantes, texto e assim por diante Vamos trabalhar
muito com tudo isso. Também existe uma hierarquia. Por exemplo, se você clicar e arrastar esse botão
para essa hierarquia, aqui você pode ver
que temos esse botão adicionado Parece muito estranho agora, mas temos um botão adicionado nossa seleção do Steam,
o
Widgit Agora, novamente, você pode
compilar para garantir que não haja erros,
assim como no Blueprint E você pode jogar o jogo
no teste e ver seu jogo. No entanto, nós realmente não exibimos essa interface de usuário
no nível, então você não pode ver
nada no jogo, ok. E à direita você
tem um painel de detalhes. Se você clicar no
botão, por exemplo, verá que pode mudar
coisas sobre esse botão. Você pode alterar o estilo, alterar a cor e também
alterar outras configurações. Vamos trabalhar
com eles agora. O projeto do Wiga é
dividido em duas seções. Você tem o designer agora, você está projetando a interface do usuário. E então você tem
o gráfico onde você codifica os botões e assim por diante. Aqui está todo o código,
o projeto ou a interface do usuário. Por exemplo, aqui
no gráfico você pode codificar, por exemplo, se você clicar nesse botão, o que deve acontecer? Isso é feito aqui no
código, aqui você projeta, aqui você codifica a
funcionalidade da interface do usuário. Ok, vamos em frente
e exclua isso. E a razão pela qual parece
tão estranho é porque você realmente precisa adicionar algo
chamado tela primeiro Se você pesquisar por tela, você pode clicar e arrastá-la
para a hierarquia primeiro E agora você pode ver
que tem uma tela. Quando você tem uma tela agora, você pode adicionar elementos a ela. Agora, normalmente eu não
clico nessas listas, mas se você é muito novo aqui, pode clicar em todas elas. Tente ler o que você
realmente pode fazer aqui. Isso é realmente muito bom. No entanto, se você é novo
aqui, geralmente
procuro apenas elementos. Você vai se
acostumar muito com isso porque na verdade, vamos
trabalhar muito com isso Os mesmos elementos que
continuamos usando repetidamente, você se
familiarizará muito com isso. Por exemplo, você pode
pesquisar um botão e clicar nele e
arrastá-lo para a tela. E você pode ver que quando você o
adiciona à tela, ele também é adicionado
na hierarquia Tudo o que você vê dentro
dessa hierarquia
, também está dentro
do seu designer Aqui na tela, por exemplo, você pode clicar nesse botão
e redimensioná-lo Ou aqui no painel de detalhes, você também pode redimensioná-lo aqui
no tamanho x e no
tamanho Y. Por exemplo, você pode
pesquisar uma imagem arrastar uma imagem até aqui também.
Você pode redimensioná-lo. Clique na imagem,
clique no pincel e você poderá alterar essa imagem. Por exemplo, você
pode alterá-lo para, na verdade, vamos
importar alguns ícones. Se eu pesquisar por ICO e
selecionar um dos ícones, e você pode ver aqui,
importamos o ícone e você pode
brincar com ele. Você também pode clicar
em Tamanho para conteúdo. Na verdade, isso o dimensionará para qualquer tamanho que você tenha
aqui no tamanho da imagem. Você também pode aumentar e
diminuir isso. Normalmente, quando você clica
nessas pequenas setas, padrão
é qualquer resolução que
você Por alguma razão, não está
funcionando para mim agora. Não sei se é um bug no motor
real ou o que quer que seja,
mas geralmente funciona
, mas
na verdade deve redimensioná-lo para qualquer
tamanho que você tenha importado E como você pode ver, as
dimensões desse ícone são 256 por 256. Portanto, deve ser
256 como este. Eu pressiono aqui, mas por algum
motivo não faz isso. Mas esse é, na verdade,
o
tamanho original desta imagem aqui, e se você clicar em
Tamanho para consentir, ela realmente a
redimensionará para esta aqui Ok, então você pode
apenas brincar. Temos o botão,
temos uma imagem e você também pode
clicar em todas elas. Na verdade, não
importa se você simplesmente tirar tudo
daqui. Basta clicar nele, tentar ver
se você agrega valor a ele. Veja se você pode realmente
mover esse controle deslizante. E você pode clicar,
por exemplo, em Entrada do Editor. Por exemplo, texto editável. Você pode colocá-lo aqui
e ver o que acontece. Você pode escrever algo dentro deste texto e simplesmente
brincar aqui. Na verdade, é muito divertido
dar uma olhada no que está
dentro daqui. E vou
clicar e clicar no meu botão Excluir e
excluir tudo por enquanto. E também vou
excluir o painel de tela. Vá em frente e compile,
salve tudo. E vamos passar
para a próxima lição.
66. 6.06 Exibindo a interface do usuário de seleção de equipe: Vamos agora exibir a interface do usuário antes de realmente
projetá-la para exibir a interface do usuário. Normalmente, quando trabalhamos com a interface do usuário, fazemos isso dentro do controle do
player. É aqui que controlamos a interface do usuário que entra
no controle do player. Vamos ver o gráfico de
eventos aqui. O que costumamos fazer
no modo single player, pegamos isso e dizemos criar
widgets, desse jeito Crie um widget e, em seguida, selecione
o widget,
por exemplo, seleção de equipe do WB. E então geralmente adicionamos isso à janela de exibição, sem mais nem menos E então podemos clicar em jogar e estamos felizes em
poder ver a interface do usuário. E quando eu clico em Escape, você vê que eu tenho uma era. E isso ocorre porque agora
estamos no modo multijogador para exibir a interface do usuário e podemos realmente
ver alguma coisa. Vamos primeiro
entrar na interface do usuário novamente. Deixe-me adicionar uma tela novamente, deixe-me adicionar uma
imagem aleatória porque eu realmente quero ver se ela foi adicionada
à janela de visualização ou não Então, vou adicionar essa imagem
estranha aqui à minha interface de usuário. E eu clico em Jogar,
e você pode ver que está realmente sendo exibido
na minha tela, tanto no cliente
quanto no servidor. Na verdade, estou exibindo
a interface do usuário agora. No entanto, se eu clicar aqui, se eu clicar em Escape, você verá que somente controladores de
jogadores locais podem ser atribuídos aos widgets Lembre-se de que, quando
estamos trabalhando com a interface do usuário, não precisamos realmente
executá-la no servidor. Isso ocorre porque cada
jogador tem sua própria interface de usuário. Não é como uma
arma que você tem no
jogo, em que você
precisa passá-la
pelo servidor e, em seguida, o servidor precisa replicar
essa informação para os clientes e dizer a eles que você tem uma arma
aqui no chão É diferente para a interface do usuário, cada jogador
tem sua própria interface de usuário. Não é como se estivesse
sendo executado no servidor e, em seguida, o
servidor estivesse atualizando sua interface de usuário. Não é assim que está acontecendo. Isso está acontecendo com
cada jogador como sua própria interface de usuário. Não está sendo executado
no servidor. Quando você trabalha com a interface do usuário, precisa executá-la
por meio do cliente. Lembre-se de que toda
vez que você tem uma interface de usuário, precisa executá-la
por meio do cliente. Vamos deletar tudo
isso por enquanto. O que vou fazer é clicar com o botão direito do mouse e criar um novo evento personalizado aqui dentro
do controle do player. Vamos chamar isso de widget
show hide. Basicamente, o que
esse widget ou esse evento fará é mostrar
ou ocultar o widget, dependendo do que
você mandar fazer Agora temos que
dar dois parâmetros. Qual widget ele
vai mostrar ou ocultar? E isso vai mostrar ou
esconder isso? Aqui, deixe-me usar esse nome para
mostrar que isso
será verdadeiro ou falso. Se for falso, ele
ocultará a interface do usuário. Se for verdade,
mostrará a interface do usuário. Podemos usar esse touro aqui. No entanto, para o segundo, temos que dizer de qual
widget estamos falando Temos que fazer uma enumeração. Vamos minimizar isso. Vá até a pasta de esquemas para
enumerações Lembre-se de que criamos esse chamado estados de movimento anteriormente. Agora vamos clicar com o botão direito do mouse
e criar um novo. Vá para a planta e a enumeração. Vamos chamar isso
de widgets de jogo. Podemos fazer uma lista de
todos os widgets de jogo que temos Para este, deixe-me adicionar um
novo enumerador, um item de lista. Deixe-me chamar isso de seleção de equipe, porque agora
queremos criar o widget de seleção de equipe Você também pode fazer um mais tarde. Por exemplo, o Mau I, que na verdade é o principal com sua saúde e assim por diante. Você também pode criar um novo chamado menu Escape quando
tiver um e assim por diante,
mas, por enquanto, vou
excluí-los. Eu só tenho a seleção da equipe. Vamos economizar agora dentro da
nossa lei de controle de jogadores. Vamos clicar novamente em nosso evento. Vamos mudar esse tipo para E.
Nós o chamamos de widgets de jogos. E é essa,
essa enumeração. Vá em frente e chame isso de Widgets. E aqui está.
Então, vamos compilar agora Como você pode ver, se
eu escrever, começar, jogar e criar o
evento start play. Se eu arrastar daqui e chamar esse evento, mostre o widget ocultar Mostre ocultar widget,
você pode ver agora que
posso selecionar de qual widget ou de
qual widget estou falando E então eu posso selecionar
se eu quero ocultá-lo, significa que o show é falso. Ou se eu quiser mostrar a interface do usuário. E podemos executar o
código por aqui. Ok, muito, muito legal. Agora vamos continuar com o código. Eu disse que isso
precisa ser executado no cliente,
então toda a interface do usuário que você cria precisa ser executada
por meio do cliente. Então, vamos clicar com o botão direito do mouse e
criar um novo evento personalizado. Vamos chamá-lo de CL para
cliente, mostrar widgets ocultos. E vamos executar isso através
do cliente e, de forma confiável, assim como o que está aqui em cima, precisamos das duas entradas Vamos criar as duas entradas. O primeiro é chamado de widgets e ele já
selecionou este O segundo é chamado show
the bullion. Mostrar ou ocultar. E vamos selecionar o
lingote como o tipo. Temos que passar por aqui. Escolha os widgets CL, mostre e
oculte aqui também Então, estamos conectando o evento
do cliente aqui. E vá em frente e
conecte-os. Ok, então o que está acontecendo agora
é no Begin Play Quando você começar a
jogar, mostrarei a interface de
seleção de equipes instantaneamente. Então, vou
marcar isso e mostrar a interface de
seleção de equipes. Quando eu fizer isso aqui
no início do jogo, o código será
executado aqui. Então, ele colocará essas informações no cliente. E agora essa
informação vem
aqui e podemos
usá-la como quisermos. Agora vou
arrastar esse touro e escrever uma ramificação
porque quero saber se vou mostrar a interface do usuário ou
vou ocultar a interface do usuário? Isso é falso ou é verdade? Isso é o que estou perguntando
agora. Agora, se for, vamos criar uma nova função. Vamos criar essa função
chamada show widgets. Vamos criar outro
chamado Hyde widgets. Novamente, clique neles e adicione uma nova entrada do widgit
tipo A enumeração que fizemos
antes e a chamamos de widget é compilada
novamente porque
precisamos saber que Widgit estamos falando no widget Faça uma nova entrada
e chame-a de widget. Novamente, certifique-se de que esse tipo também
seja um widget de jogo. Ok, vamos
voltar ao gráfico. Vamos arrastar as funções que acabamos de criar. Eles ainda
estão vazios. Não há nada dentro deles. Mas, por enquanto, vamos
adicioná-los aqui. Ok, mostre o widget ocultar. Se for verdade, precisamos mostrar o widget Esse, eu posso conectá-lo. Se for falso, precisamos
ocultar o widget e podemos selecioná-lo aqui Agora, de que widgit
estamos falando? Essas informações que temos aqui, porque as configuramos aqui,
podemos conectá-las às entradas que
acabamos de criar podemos conectá-las às para aqueles que estão aqui Agora, essas informações vão para
dentro da função. Agora temos isso aqui, e
podemos fazer o que quisermos. Qual é o nosso objetivo aqui?
Para mostrar um widget, precisamos usar o
nó chamado create widgit. Precisamos
usar esse aqui. Em seguida, temos que selecionar de qual
widgit estamos falando. Este, por exemplo, aqui, como você pode ver
na enumeração, poderíamos ter muitos itens Precisamos saber qual é o
valor dessa enumeração. Fazemos isso simplesmente arrastando a partir daqui e
procurando por Switch E temos esse
chamado Switch na enumeração. Vá
em frente e selecione-o. E agora ele
fornecerá um pino de execução, dependendo dos itens da
lista que você tem. Por exemplo, se eu voltar à minha enumeração e
digamos que eu tenha um MenuI e
um menu de escape,
exatamente assim, exatamente assim Vá em frente e salve-o. E vamos voltar ao controle do
player. Agora você pode ver que eu
recebo pinos de execução, dependendo dos itens da minha lista, independentemente do que você configurou aqui Então, se eu voltar,
o que você selecionar aqui
passará por esse evento, coloque-o dentro do cliente e ele
continuará o código, coloque-o dentro da função. Agora ele sabe que você
está falando sobre a seleção da equipe porque
você a selecionou aqui. Então, ele executará
o código dentro da seleção
do jogador. Ele não executará o
código que está escrito aqui. E não executará o
código que está escrito aqui. Só vou executar o
código que está escrito aqui porque você definiu o
valor para a seleção da equipe. Ele só vai passar por aquele
pino de execução agora. É assim que fazemos.
Na verdade, vamos excluí-los por enquanto. Nós realmente não precisamos deles, precisamos apenas da seleção da equipe. Vá em frente, salve e
compile isso também. Ok, para criar
ou mostrar um widget, vá em frente e crie o widget Selecione qual deles
você deseja mostrar. Em seguida, vamos clicar com o botão direito do mouse e
promovê-la em uma variável. Como é muito
útil com a variável, podemos usá-la posteriormente
para executar eventos. Essa eu vou chamar de
seleção WB . Agora que
você criou a interface do usuário, agora, se você clicar em Play, ela realmente não mostrará
nada. Isso ocorre porque não
basta apenas
criar a interface do usuário. Você também precisa arrastar a partir
daqui e dizer Adicionar à janela de exibição. Agora ele é adicionado ao Viewport. Agora, se você clicar em Reproduzir, verá que agora ele foi adicionado
à janela de visualização e não há erros ao clicar
no botão Escape Ok, isso está parecendo bom. Agora, para garantir que você não continue adicionando isso à sua janela de visualização
sem nenhum motivo, deixe-me desconectar
aqui e afastar isso Deixe-me pegar essa variável,
arrastá-la até aqui, clicar com o botão
direito do mouse e convertê-la em um get validado, vá em
frente e conecte-a Agora,
se
essa variável não
for válida , o programa ou mecanismo irreal não sabe realmente do que
você está falando com essa variável porque você não colocou nenhuma
informação dentro dela Isso significa que ainda não
executamos esse código. Se não for válido, vá
em frente e crie a interface do usuário. No entanto, se for válido, se essa variável já
contiver o widget Então, já executamos esse código antes. Na verdade, não
queremos executá-lo novamente, só
queremos adicioná-lo à janela de visualização,
assim, ok? Portanto, isso evita que criemos
a interface do usuário repetidamente. Se não for válido,
vá em frente e crie a interface do usuário e, em seguida,
adicione-a à janela de exibição a interface do usuário e, em seguida,
adicione-a à janela de exibição
. No entanto, vá em frente e basta adicioná-lo à janela de exibição Vamos compilar
e salvar tudo. Agora, para o widget de ocultação
aqui, a mesma coisa. Vamos atacar a partir daqui e
dizer que ative a enumeração. Vamos pegar essa variável, agora que a criamos, vamos clicar com o botão direito do mouse em converter em um get validado. Vá
em frente e conecte-o. Agora, se for válido, significa
que realmente queremos ocultá-lo. Agora vamos atacar a partir daqui
e dizer remover do Parent. É assim que você remove a
interface do usuário do seu Viewport. Remova do pai,
se for válido, vá em frente e remova-o, porque queremos ocultá-lo. Agora, se você compilar
e clicar em Reproduzir, poderá ver a janela de visualização Na janela de exibição,
você adicionou a interface do usuário. Se você prosseguir no gráfico de eventos de controle do
jogador, basta remover o programa, porque agora, na verdade,
quando
é falso, vai passar por aqui e vai
passar por aqui. E mostrará falso porque
você o definiu como falso. O que significa que ele irá em frente e
ocultará a interface do usuário, o widget. E ele sabe de qual widget
você está falando, porque está inserindo essas
informações aqui E isso vai
ocultar a interface de seleção de equipes. Como você pode ver aqui quando eu jogo, não
vejo a interface de
seleção de equipes. Mas, por enquanto,
na verdade, queremos mostrar a interface
do usuário à frente para
a seleção da equipe, vá em frente e clique em Mostrar. Agora ele deve funcionar perfeitamente. Agora, se quiser tornar isso mais organizado,
você sempre pode clicar e criar pinos de execução, ou pode
selecionar todos eles. Clique em C no
teclado e chame-o,
por exemplo, de Mostrar
Ocultar UI e assim por diante. Então, vá em frente
e mantenha-se organizado. Mas, por enquanto, vamos
compilar, salvar tudo
e seguir em frente
67. Tamanho da interface dinâmica para todos os tamanhos de tela: Agora, antes de começar a
projetar a interface do usuário, é muito importante
saber como ela se parece
em outras telas, não apenas na sua tela,
mas na minha tela. Se você cria seu jogo, precisa saber como ele
se parece na minha tela, que é um monitor com
resolução de quatro K. E também na
tela de um laptop e assim por diante. Portanto, você precisa
redimensioná-lo corretamente. Na verdade, vamos aprender isso
antes de realmente projetarmos, porque será mais
tarde se você projetar
de maneira errada. Por exemplo, vamos ver o esquema
do widget. Vamos
adicionar um pouco de texto. Essa será a maneira
mais fácil de ver isso. Adicionando uma
tela de texto e digamos que estou redimensionando algo
assim, seja o que for Agora que você tem isso dentro da interface do usuário, vamos
continuar e compilar E vá em frente e clique em Placa. Agora, isso é o que
parece na minha tela. E normalmente eu simplesmente pego meu plano de widget e
retomo meu jogo aqui E eu geralmente
tento compará-lo. Vá em frente e
abra seu jogo aqui. Vou
minimizá-lo um pouco e tentar ver como
fica no jogo. Isso é o que
realmente parece. Se eu comparar com aqui, parece um pouco maior aqui, na verdade se parece com isso. Quando eu aumento e diminuo o zoom, você pode realmente ver
o zoom aqui em cima. No momento,
ampliei mais três e agora parece Com zoom mais três,
parece correto. Agora, isso pode parecer um
pouco estranho para corrigir isso. Agora suba aqui no tamanho
da tela. Normalmente, o que você
quer fazer é querer, na interface do usuário, na menor
tela possível. Se você quiser projetá-lo
para jogos para celular, clique
no tamanho da tela, vá para os telefones e
selecione o telefone. Você deseja projetá-lo
para a menor tela. No momento, eu só quero
fazer um jogo de computador. Vou clicar aqui. Normalmente eu o desenho para laptops. Esses notebooks genéricos de 14,
15 polegadas. Eu não vou agora. Eu tenho um monitor de quatro K. Eu posso selecionar isso e
apenas projetá-lo aqui. No entanto,
talvez fique assim na tela se você tiver
um monitor de um K e assim por diante. É muito importante
projetá-lo corretamente. Primeiro, vamos clicar
no tamanho da tela. E vou selecionar o tamanho genérico
do laptop. Agora, se eu aumentar o zoom
e for um a um como este aqui
no tamanho de um laptop, agora, eu estou realmente
olhando para ele e vendo
como é. Se eu abrir este jogo
agora no meu laptop, esse é o tamanho do texto Por exemplo, no laptop,
vamos clicar nesse fundo. Clique no fundo e eu faço
o tamanho, por exemplo, 30. Agora é o que
parece no laptop. Mas se eu jogar, agora
é assim que parece. No meu monitor de quatro K, você pode ver que
há uma diferença. Esse é o laptop. Esse sou eu. Eu vejo que é muito maior no
meu do que no laptop. Se você não gosta disso,
se às vezes a interface do usuário fica muito grande nos monitores
maiores, você pode clicar neste
botão aqui embaixo. Aqui você pode ver o
dimensionamento da interface do usuário. Os laptops genéricos
estão aqui embaixo. Como você pode ver, essa
é a resolução. Estou projetando
para esses laptops. Agora eu tenho
um monitor de quatro K, e na verdade está aqui. Você pode ver que em um monitor de quatro K, estou aumentando em 3,8.
É 3,8 maior do
que um laptop Agora, se você não quiser
aumentar tanto, você pode selecionar esta resolução. Em vez de escalar para oito, vou escalar
para quatro, por exemplo Agora você pode ver
que não vai
aumentar tanto
em comparação com antes. Agora, se eu clicar em Play
, na verdade é
menor do que era antes. Se eu voltar,
na verdade, clicar aqui, deixe-me aumentá-lo
para algo como 18, que você
possa realmente
ver algo extremo. Se eu clicar em Jogar, você pode
ver que agora é muito grande. Normalmente, o que eu gosto é que, se estou satisfeito com
o tamanho do laptop, tento escalá-lo. Então, também estou satisfeito
com meu monitor de quatro K. Normalmente, está em torno de
2,5 na escala. Eu não gosto de ir muito. Você pode clicar nesses botões. É, é para sua tela desse jeito. Vou apenas diminuir um pouco o
zoom. Talvez seja só clicar em,
vou diminuir um pouco o zoom,
para que fique melhor. Deixe-me clicar em jogar Agora, acho que isso parece bom. Se eu precisar dimensioná-lo mais, eu o redimensionarei Mas eu acho que isso parece bom. Você pode compará-lo agora e quase parece o mesmo. Vou tentar projetá-lo com
a escala de 2,5, mas, novamente, vá em frente e
brinque com ele. Basta aumentar e reduzir isso, dependendo da aparência do
monitor em comparação com
o monitor do laptop. Ok, quando você estiver satisfeito, vamos fechar tudo e
salvar tudo. Vamos passar para
a próxima lição.
68. 6.08 Projetando a interface do usuário de seleção de equipe: Agora que estamos
exibindo
a interface do usuário na tela e
temos o tamanho correto, vamos prosseguir e
projetar a interface do usuário. Vamos encerrar o jogo. Vamos até a pasta UI. E aqui, dentro do widget de
seleção de equipe, planta. Agora vamos deletar isso aqui. A única coisa que temos
agora é o painel de tela. Novamente, se você ainda não o
adicionou, vá na paleta
e pesquise por tela E vá em frente e adicione-o ao
seu widget, blueprint. A tela é muito importante. Você precisa adicionar isso
antes de fazer qualquer coisa. O que queremos projetar
é a seleção da equipe. Isso é do meu outro projeto. Eu gostaria de mostrar a interface do usuário para que você saiba
o que está projetando. É isso que queremos projetar. Sempre que você começa a projetar a interface do usuário, precisa imaginar
o que deseja criar, pois
será muito mais fácil para você. É isso que
vamos projetar. Vamos até aqui. A primeira coisa que queremos fazer detalhar a interface do usuário. Se eu levar isso de
novo aqui para
você, você tem que detalhar. Como você pode ver aqui, temos um plano de fundo e
um texto em cima dele. Quando você tem duas coisas uma
em cima da outra, precisa usar essa
chamada sobreposição Quando a sobreposição sobrepõe itens uns
sobre os outros, quando você tem algo
em cima de alguma coisa, pense em uma sobreposição
arrastando-a até aqui, e vamos procurar uma
imagem, o plano de fundo,
e colocá-la aqui também, e colocá-la aqui também, quando você tem algo
em cima de alguma coisa,
pense em uma sobreposição
arrastando-a até aqui,
e vamos procurar uma
imagem, o plano de fundo,
e colocá-la aqui também,
dentro da sobreposição.
Assim mesmo. Vamos arrastar isso para o meio da tela
para que possamos ver o que estamos fazendo apenas redimensionando essa sobreposição para preencher essa imagem Você pode ver que é muito pequeno. Para preencher esta imagem
em toda a tela, você precisa aqui
no alinhamento horizontal e
vertical,
clicar aqui para preencher, horizontal e verticalmente,
ela preenche toda a sobreposição ela preenche Não importa o
tamanho da sua sobreposição, sua imagem
preencherá tudo Queremos preenchê-lo
com o plano de fundo. Agora, no fundo, você pode
clicar aqui para ver a imagem, e no pincel aqui, clicar na imagem e
você pode pesquisar, acho que chamei de painel. E esse painel é azul. Novamente, depende de você
o que você deseja usar. Você pode usar outra cor, mas eu vou usar a
azul. E aqui está. OK. Neral Engine, para fazer com que as coisas não fiquem embaçadas
dessa forma e que elas
se estendam corretamente, você tem que mudar isso
em vez de uma imagem, você tem que
transformá-la em Agora, antes de fazer isso, deixe-me realmente mostrar como funciona. Se eu for até as imagens da interface do usuário
e pesquisar o painel, você pode ver se eu segurar
o mouse sobre
ele, na verdade é uma imagem
muito pequena. São 68 pixels por 68 pixels. Se você abri-lo,
isso é realmente o quão grande ele era quando eu o
projetei no Photoshop Este você pode tornar muito grande e ainda ficar
bem no Unreal Engine Se você acabou de adicionar a imagem, pinte os desenhos em uma caixa
e altere a margem para 0,5, como se você clicasse nesta. Aqui você remove
essas linhas tracejadas. Eu gostaria de fazer isso para ver minha interface de usuário sem que
nada me distraia E é isso que
parece que você pode ver, mesmo sendo uma imagem pequena agora você pode simplesmente
clicar na sobreposição esticá-la e
criar
outra coisa sem
que fique embaçada Recurso muito legal
no Unreal Engine. Você não precisa criar
cada botão, você pode simplesmente criar a base
e, em seguida, criar os próprios botões aqui
dentro. Este é o nosso histórico
para a seleção da equipe. Agora,
para a seleção da equipe , também, se eu arrastar
isso para aqui, novamente, temos algum
texto abaixo dela. Nós temos esses botões. Temos algo
chamado caixa vertical. Se você for até aqui e
pesquisar por vertical, verá essa caixa vertical. Vou
adicioná-lo à sobreposição. Agora, na caixa vertical, temos algum texto na parte superior como título. Como
você pode ver aqui, também
temos esses botões. Antes de adicionar esses botões, você também precisa
detalhar isso. Na verdade, você tem
uma caixa horizontal. Eles estão alinhados
horizontalmente entre si. Se eu procurar por uma caixa
horizontal, essa caixa horizontal, você tem que
colocar na caixa vertical. Nós temos o título,
temos o título aqui. E então temos
a caixa horizontal onde adicionamos os dois botões. Ok, esse aqui. Na verdade, o título
precisa ficar no meio. Vou clicar no texto, alinhá-lo aqui horizontalmente
ao meio E você pode ver que nada acontece quando eu o alinho no meio Às vezes, quando você faz
isso dentro de uma interface de usuário, não se confunda, você também
precisa olhar para o pai. Não importa se o texto está alinhado dessa forma ou se a caixa vertical também
não está alinhada Você pode ver a caixa vertical ao clicar em uma delas. Aqui você pode ver que a caixa vertical é,
na verdade, apenas essa seção. Isso não acontece, se você
alinhar esse texto aqui, aqui e aqui, você
só tem o espaço Não está preenchendo
a coisa toda. Clicando na caixa vertical, tenho que preenchê-la
aqui nesta sobreposição clicando no alinhamento
horizontal
e no alinhamento vertical Agora você pode ver que é. Preenchendo horizontal
e verticalmente. Ok, agora, quando eu alinho
o texto, ele deve funcionar. Sempre preste atenção
ao pai aqui em cima,
como ele está alinhado Porque se estiver
alinhado assim,
esse texto nunca
vai aparecer aqui Vá em frente e
alinhe-os horizontalmente desta forma. Agora, para dar mais
espaço às bordas, podemos clicar na caixa
vertical e empurrá-la aqui para baixo no
preenchimento ou à esquerda Na verdade, você também pode
escrever um número aqui, por exemplo, 50 ou 102030 Você pode ver que pode
empurrá-lo pelas bordas 50, 60 e assim por diante. E se você quiser empurrá-lo
especificamente em direções, por exemplo,
colocarei a esquerda em 55 e a parte superior colocarei em 45. Não tanto quanto a
esquerda e a direita. A direita é 55 e
a parte inferior também é 45. Algo parecido. Lembre-se,
estou no zoom mais dois. O tamanho real é
parecido com isso. Apenas preste
atenção no zoom
em que você está , pois você pode
estar muito ampliado. Isso é o que realmente
parece agora. Acho que o espaçamento até as
bordas está bom agora. O que você pode fazer
é seguir em frente e continuar nosso design. E então podemos seguir em frente
e estilizar tudo. Vamos clicar na caixa
horizontal. Agora, para a caixa horizontal, temos esses dois botões. Agora, novamente, estamos
sobrepondo um botão. Em cima dela está uma imagem
e também temos um texto. Novamente, você precisa
usar uma sobreposição,
caso contrário, não poderá sobrepor
coisas umas sobre as outras Dentro da
caixa horizontal, temos uma sobreposição. Dentro dessa sobreposição, temos um botão
e, em seguida, temos uma imagem, que é o ícone do botão Também temos alguns textos. Se eu pesquisar texto
e adicioná-lo aqui, temos o botão, a
imagem e algum texto. Clicando nessa sobreposição, na verdade, nessa caixa horizontal, novamente, temos que
preenchê-la aqui. Então você pode ver que, embora eu o esteja alinhando
horizontal e verticalmente, ele não está alinhado
verticalmente verticalmente E isso ocorre porque você
precisa clicar em Preencher e ele
preencherá tudo. Ao clicar nesse
botão, vamos adicionar algo
a esse botão. Clique no botão,
vá para o Estilo, clique em Normal aqui em cima e selecione o botão. Vou selecionar
o botão vermelho. E geralmente eu chamo os botões BTN. Você pode tentar pesquisar
qual botão deseja usar. Novamente, é opcional,
depende de você. No entanto, o que eu quero usar é esse chamado Button Red, eu acredito, ou Button
Square red, como este. E eu vou escolhê-lo aqui. O que você pode fazer é, novamente, pintar. Vou
clicar na tonalidade e
colocá-la em branco, porque não quero nenhuma tonalidade
cinza no meu Na verdade, essa é a cor real. Se você colocar em branco aqui, a caixa arredondada,
eu vou
trocá-la por uma caixa, uma caixa normal. Novamente, a margem, o que
eu disse antes, defina-a para 0,5 e
parecerá normal. Agora vamos ver se temos outras coisas para
mudar e não, se você quiser copiar essa
configuração para o hovert, você não precisa
fazer tudo isso Novamente, segure a tecla Shift
e clique com o botão direito. Ou, novamente, você pode simplesmente clicar com
o botão direito e copiar. Mas você pode segurar a tecla shift e o botão
direito do mouse para copiá-la, e a tecla shift e
o botão esquerdo do mouse
para colá-la também para esses dois. Lembre-se de clicar no cursor. E lembre-se também colocar o cursor no
tabuleiro E clique no pressionado
até o, pressionou este. OK. Talvez também precisemos
ajustar o tamanho da imagem, mas vamos fazer isso mais tarde. Por enquanto, neste você pode
ver que está muito esticado. Então, o que
vou fazer é clicar na sobreposição e clicar em Preencher Então, ele preenche a coisa toda. Então, deixe-me realmente
copiá-lo novamente. Ao clicar nessa sobreposição, vou clicar em Control D, e isso copiará
o outro botão Então, eu posso realmente ver o que
parece se eu
tiver dois botões. Agora eu tenho essas
duas sobreposições, e vamos colocar um
espaçador entre elas,
procurar por espaçador e
adicioná-las procurar por espaçador e entre E então vamos adicionar algum espaço
entre essas duas sobreposições. Esse é o eixo x e esse é o eixo Y. E precisamos de espaço no eixo x. Deixe-me escrever algo como 50. E agora você pode ver
que há algum espaço. Agora, para este texto. Eu quero que esteja na parte inferior
deste botão aqui. Ao clicar no texto,
vou alinhá-lo ao botão aqui e
também no meio E a mesma coisa com
esse alinhamento inferior e no meio horizontalmente Ok, agora vamos aos botões. Eu não quero que eles sejam
esticados assim. Ao clicar em um dos botões, em vez de
alinhá-lo verticalmente, vou clicar
na parte A mesma coisa aqui.
Clique na parte inferior. Alinhe verticalmente, assim. Em vez de
alinhá-lo verticalmente, vamos
controlá-lo nós mesmos Clique no botão, você pode
clicar no Tamanho da imagem. Aqui, este é o Y
aumentando para cima e para baixo. Você pode aumentar o
Y do botão e escolher
o tamanho que ele
deve ter para este e
este, algo como 160. Por enquanto, 160. Na verdade, vamos adicionar
os ícones antes de
decidirmos qual
tamanho eles devem ter. Vou fazer de
novo para a imagem, é alinhá-la no meio Na verdade, vamos fazer isso
por ambos. Vamos clicar nos dois. Clique em um controle antigo,
clique no próximo. Vamos alinhá-los no meio
e na parte inferior novamente. Para empurrá-los para cima novamente, podemos usar o acolchoamento, empurrando-os de baixo para cima Então você pode
empurrá-los, por exemplo, 40, algo assim, 50, 60. Você pode ver que pode
empurrá-los para cima em torno de 40. Na verdade, deixe-me
mudar o ícone primeiro. Clique na imagem e
vamos mudar o ícone. Se você pesquisar ICO para este, vou
selecionar o contador ou o terrorista
para este,
vou escolher o
contra-terrorista. Aqui podemos ver que eles são
muito pequenos por algum motivo. Novamente, esses botões não funcionam, então eu tenho que adicionar
o tamanho manualmente. Se você simplesmente descer
aqui, na verdade, e clicar se eu for
até a interface do usuário até os ícones, se você segurar o mouse
sobre esses ícones, poderá ver as dimensões. O tamanho real é de 256
pixels por 256 pixels. Se você puder clicar nele,
se escrever 256 por 256, esse é realmente o tamanho
real do ícone. No entanto, isso é muito grande. Mas lembre-se de
que, se você
aumentá-lo mais do que o
tamanho máximo que ele tem, ele ficará embaçado.
Não exagere nisso. O que eu vou fazer
é talvez
fazer com que seja 150 por 150. E a mesma coisa para
o contraterrorista, o tamanho 150 por 150. OK. Algo
parecido. Agora, para controlar o quão altos e baixos
esses botões estão, você pode clicar na
caixa vertical,
na verdade, na própria sobreposição E então você pode simplesmente
redimensionar a caixa vertical. Em seguida, escolha
até que ponto esses botões
devem ser comparados ao título para cima e para baixo. Clicando nesse texto também. Eu quero estilizar esses textos. Lembre-se de que adicionamos alguns fundos
dos fundos do Google,
The Rubic one Sempre podemos clicar no texto, clicar na família da fonte
e, em seguida, escolher um
dos estilos rubicos Para este, vou escolher apenas
a rubrica em negrito. E então vou definir
o tamanho para um pouco menor, talvez algo como 22. Em vez disso, vou adicionar
um esboço ao texto. Se você selecionar
os dois novamente, vá para Configurações de contorno Vou definir o
tamanho para algo como, você pode tentar 1234, acho que algo como
três está bem aqui E depois também mude a cor. Vou mudar a
cor clicando na cor do
contorno e depois
usando o seletor de cores Então eu vou
escolher uma cor escura, talvez essa aqui. Vá em frente e clique nele e
ele escolherá essa cor. Você acabou de selecionar. Ok, para o texto, se
você quiser empurrá-lo para baixo, você sempre pode tentar essa
parte inferior aqui, por exemplo. Menos dois, menos cinco. Você pode ver que pode
arrastá-los para baixo. Se você escrever um número positivo, na verdade
você o pressiona
para cima. Algo parecido. Você também pode usar
este aqui embaixo, o tradutor, se eu puder
encontrá-lo aqui embaixo, a transformação. E então tradução, você
pode traduzi-la em y. Se você escrever dois
aqui, por exemplo 56, você também pode
empurrá-los para cima e para baixo
na tradução, pois isso pode ser algo, dois está bem. Nós apenas o empurramos um pouco para baixo. OK. Eu vou estilizar
esse texto também Clique nele. Vá em frente e
selecione o negrito Ruby Este eu fiz 22. Este eu estou fazendo 24
porque é um título. E então vá em frente e selecione
as configurações de contorno. Vou colocá-lo em três,
assim como os outros. Para a cor do contorno, vou talvez usar essa cor
escura ou essa, vou escolher essa
cor escura e clicar em OK. Agora você pode simplesmente ir
em frente e alterar o texto. Por exemplo, selecione
uma equipe para essa. Vou escrever Terri
para o outro, vou escrever terrorista Ok, para o daterrista. Na verdade, eu quero
mudar o botão. Você pode clicar nele,
alterar esse botão. Vou mudar para quadrado, acho que quadrado verde. E vá em frente e
selecione quadrado verde. Assim mesmo. Novamente,
assim como antes. Você pode copiar isso em
cima dos outros, clicar no texto, clicar na cor do contorno Pegue o seletor de cores e
selecione este em vez disso. Ok, eu acho que isso parece
muito melhor do que antes. Ok, agora vamos
ver o que está errado. Agora, se você clicar em Play, é sempre bom compilar Clique em Jogar e veja
o que está acontecendo. No momento, você pode ver que a interface
do usuário ou o widget
de
seleção do Steam na verdade, na parte superior
da imagem e não no meio Você pode ver se você
clicar na tela, na
verdade está aqui. Se você simplesmente arrastar essa sobreposição
aqui, por exemplo, no canto inferior direito, e clicar em Play,
poderá realmente ver
que ela está no meio Isso realmente não faz sentido. Deveria estar aqui embaixo,
porque acabei de colocá-lo aqui. Esse é um
conceito muito importante que você precisa
entender esses pontos de ancoragem Eles são muito
importantes no momento. O que está acontecendo é que você tem
o ponto de ancoragem aqui em cima. Se eu clicar em jogar, tento
maximizar a tela aqui, você pode ver que essa interface de usuário está ficando. extremidade
da tela aqui em cima, ela será empurrada para cá. Isso ocorre porque seu ponto de
ancoragem está lá em cima. Não vai ficar
aqui como você deseja. Você tem que mudar
o ponto de ancoragem. Lembre-se de sempre
fazer isso com sua interface de usuário. Ao clicar na sobreposição, você precisa alterar o
ponto de ancoragem clicando aqui. Como você pode ver aqui, somente o pai tem
um ponto de ancoragem Todos os outros não
têm pontos de ancoragem, apenas o principal Clicando nesse, vá em
frente e clique em Âncoras e selecione onde você
deseja alinhá-lo. Para esta interface de usuário. Quero
alinhá-lo no meio, selecionando o ponto
de ancoragem
central no meio da
tela desta forma Então, para a posição, vou escrever 00 para
alinhá-la no centro Mas, como você pode ver,
não está alinhado com o centro. Na verdade, é até
aquele ponto aqui. É aqui que você tem que
jogar com o alinhamento. Se você apenas aumentar esse, verá que agora está
aumentando corretamente. Está no meio,
na posição 00. Agora, para este, você tem que escrever o
número exato em vez disso. 0,50 0,5 Você pode ver aqui, se você escrever zero
no alinhamento, esse é o alinhamento x. Ele vai se alinhar dessa maneira. Se você escrever 0,5
, está no meio. Se você escrever um, ele vai para o outro lado do alinhamento. Você pode escrever 00 ponto
5.1 Você tem essas opções. Vou escrever 0,5
por 0,5 porque vai alinhar isso no meio
e na posição 00 Agora você pode ver que está
diretamente no meio. E se eu compilar e jogar
, deve estar no meio Não importa o
tamanho da tela que eu tenha, ela vai ficar
no meio da tela. OK. O próximo problema
que temos agora é que o mouse realmente
não aparece, e vamos fazer isso mais tarde. Nós
vamos consertar isso. No entanto, se eu tentar passar
o mouse sobre os botões, eles estão realmente E eu tenho que consertar isso. Isso ocorre porque, se você clicar
no botão e
clicar no normal, definirá o
tamanho da imagem para 32 por 160. No entanto, para o
hovert, o tamanho da imagem ainda
é muito baixo Você deve copiar o
tamanho da imagem do tamanho normal, com base no cursor e no pressionamento
de todas elas pressionamento
de todas E faça o mesmo
com o verde. Copie isso, com base no da imagem exibida e também no tamanho da imagem pressionada Vamos continuar e compilar, ok. Clique em jogar. Agora, novamente, se eu passar o mouse sobre ele, você pode realmente ver que
consigo passar o mouse
sobre o No entanto, quando coloco o
mouse sobre a imagem, não
consigo realmente passar por cima do botão, e a imagem e o texto estão, na verdade,
bloqueando o botão. Vamos consertar isso. Clique nas
imagens, todas elas aqui. E o texto também. Você tem que encontrar
esse chamado visibilidade. E você precisa configurá-lo
para não ser testável. E isso significa que as imagens e os textos
são apenas decoração. Não quero que meu mouse
interaja com eles. Eu escolho este não testável, e isso
garantirá que eles não
interajam
com meu mouse Agora, quando clico em reproduzir e
tento passar o mouse sobre o botão, você pode ver que ele também paira, mesmo eu
esteja passando o mouse sobre
o ícone e o texto Ok, então foi isso para o CI. A última coisa que quero
fazer é também
deixar o fundo desfocado porque, como você pode ver, está
tudo bem. No entanto, também gosto que meu
plano de fundo fique embaçado. Agora é opcional. Talvez
eu o remova mais tarde. Mas, por enquanto, vamos pesquisar desfoque e colocá-lo
aqui em segundo plano, ou
seja, sobre a sobreposição
fora de Agora, para este, novamente, lembre-se de mudar
o ponto de ancoragem Quero que esse desfoque
preencha a tela inteira. Como você pode ver, para esse desfoque, você pode alterar a intensidade do
desfoque Então, algo como 50
, como você pode ver aqui. Mas eu quero que ele preencha
a tela inteira. O que você precisa fazer é
clicar no ponto de ancoragem novamente e preencher a tela inteira.
Assim mesmo. E altere o deslocamento para
0000, sem mais nem menos. Agora ele vai preencher toda
a tela. E se você clicar em Play,
a tela ficará desfocada. Agora, quanto à quantidade de
desfoque, na verdade vou reduzi-la para algo como dez Isso ocorre porque você
também pode ver o fundo, um efeito
muito legal
enquanto seleciona a equipe. Ao entrar no
jogo, você pode ver os outros jogadores jogando
enquanto você seleciona a equipe. Ok, agora que
terminamos, vá em frente e salve tudo e vamos
para a próxima lição.
69. 6.09 Efeitos de som do Button: Agora vamos adicionar alguns efeitos sonoros
aos botões. E para fazer isso, vamos
examinar os materiais de custo. E dentro daqui,
vamos ao áudio. E eu tenho esses
efeitos sonoros para você. O botão passa o mouse
e o botão é pressionado. Vamos também para a pasta
de áudio, o motor
e os efeitos
sonoros. E vamos
arrastá-los para o navegador de conteúdo. Agora, clique com o botão direito do mouse
no botão, passe o mouse em Criar. E eu vou ligar para
ele, então passe o botão. Para o outro, pressionado,
vamos clicar com o botão direito do mouse em
Criar Q e
chamá-lo de pressionamento do botão de som. Vamos entrar em ambos. O passar o mouse e o pressionado. Deixe-me reduzir
o som para talvez 0,25 Isso soa
bem para a imprensa Deixe-me colocar em 0,4, talvez. Sim, isso soa bem. Ok, vamos salvar
tudo de novo. Como eu disse antes, podemos
ver se você toca o som. Se você quiser que
isso seja diferente. Toda vez que você pode adicionar um modulador e
conectá-lo aqui, você pode Eu gostaria de mudar
o tom de 0,9 para 1,1. Parece diferente toda vez que você pode fazer
a mesma coisa aqui. Vou copiar o modulador. Vou colá-lo aqui e conectá-lo aqui também. Agora, isso também soa diferente a
cada vez, quando você passa o mouse sobre os botões Ok, incrível. Vá em frente e salve tudo Agora para adicionar
os efeitos sonoros, vamos voltar para a interface do usuário. Abra o widget, a planta,
clique no botão. Então, aqui embaixo, você
vê as opções pressionadas. Som Você pode ir
em frente e
alterá-lo para
pressionar o botão para passar o mouse Som Você pode alterá-lo
para o botão, passe o mouse. A mesma coisa para o outro. Você pode mudar o pressionado
para o pressionamento do botão e o que passou o mouse
para o botão
passar o e o que passou o mouse
para o botão
passar o mouse. Vá em frente e compile E agora, quando você clica em Play e passa o
mouse sobre eles, se você pressionar ok, agora
você pode ver que funciona No entanto, você pode ver que eu
realmente tenho um dinheiro aqui, então preciso trocar
o verde Verde pairado e verde prensado. Na verdade, eu quero usar o
outro, o alto. Acho que tenho um alto. Esse é muito melhor para mim. Na verdade, vou
copiar isso. Escolha a versão com o mouse e
pressionada. Vou clicar no texto
e selecionar o seletor de cores E selecione este em vez disso. Acho que parece muito melhor. Ok, para o som, eu realmente preciso reduzir o efeito
sonoro do passar o mouse, acho um pouco chato Em vez disso, deixe-me alterá-lo
para 0,15. Jogue. E agora vamos testá-lo. Funciona aqui. Ok,
agora eles funcionam. E você também tem alguns sons
nos botões.
70. 6.10 Como spawn de atores: Agora vamos em frente
e criemos o jogador. E antes de fazermos isso, vamos examinar as configurações
mundiais de extensão. Na verdade, vamos
ver as plantas. Clique no modo de jogo
para ver o modo de jogo. Lembre-se de que, nos padrões da classe, definimos o padrão da classe para aparecer como Vamos prosseguir e
esclarecer isso por enquanto. E vamos, antes de fazer
qualquer outra coisa, vamos examinar as plantas e abrir o
antiterrorista para ter certeza de que está correto Se eu abrir a janela de visualização aqui, apenas me certificando de que
a
malha de terceira pessoa é
a mesma da malha e acho que há
um bug no terrorista Então, se eu o abrir e você
ver que há um bug, a malha é o terrorista.
Isso está correto. E a malha de terceira pessoa, temos que mudá-la para
o terrorista masculino, bem
como essa malha aqui. Ok. Apenas
certifique-se de esteja errada por algum motivo que a câmera
esteja errada por algum motivo, na verdade porque também precisamos do soquete da câmera aqui e
do soquete principal Porque lembre-se de que o terrorista
está usando outro esqueleto. Se eu for ao
mercado, este,
o personagem prateado está
usando esse esqueleto,
os militares usam, o terrorista
está usando esse esqueleto Vou abrir esse
esqueleto para o terrorista. Vá até a cabeça. Vou clicar com o botão direito do mouse e adicionar um soquete para
este também Vou mudar
o nome para câmera, assim como a
outra que vou salvar. E agora precisamos
posicioná-lo da
mesma forma que o outro. Vou abrir o
personagem Silver Skeleton. Vou clicar
nesse soquete. Vou segurar a tecla Shift e clicar com o botão direito do mouse para
copiar essas configurações. E então eu vou até
o terrorista, pressiono a tecla Shift e botão
esquerdo naquele e ele o
colocará no mesmo lugar, vá em frente e salve tudo. E agora você deve ver se você
voltar para o terrorista, ele
colocou automaticamente a câmera aqui
porque o braço de mola está realmente conectado à câmera do soquete Ok, vamos salvar tudo. Agora, isso parece correto. Novamente para o modo de jogo. Nos padrões da classe, precisamos remover o pan
padrão e defini-lo como não, porque agora é o
jogador que
selecionará se deseja aparecer como terrorista ou
antiterrorista Ok, vamos fechá-lo. Além disso, certifique-se
nas configurações mundiais, se você clicar aqui, de que essa classe de pan padrão também
esteja definida como não. Ok, agora, se você clicar em jogar, poderá ver que você aparece
em uma área aleatória E isso é bom.
Isso é intencional. Então, agora não estamos surgindo
como nenhum personagem. Temos que selecioná-lo nós mesmos. Ok, para gerar jogadores, temos que fazer isso dentro
do Player Controller, o Player Controller,
dentro daqui Fazemos a interface do usuário como fizemos aqui, mas também fazemos a geração
de itens e
personagens e assim por diante Toda vez que você gera algo, você precisa acessar a interface do
Player Controller e a desova ocorre dentro
do Vamos abrir o
Player Controller. E dentro daqui, na verdade, desta vez eu quero trabalhar de
trás para frente, porque você
entenderá muito melhor a desova.
Muito, muito importante. Queremos realizar um evento, e ele não precisa estar dentro do controlador do Player. Você pode organizar o evento a partir
do jogador ou de
qualquer outro lugar. Então você tem um
evento inicial que deseja realizar. Então, esse evento precisa
passar pelo modo de jogo. Porque lembre-se de que o
modo de jogo só funciona no servidor. O cliente não consegue se comunicar
com o modo de jogo. Então, a geração de
itens e jogadores. Na verdade, percorremos o modo de jogo para garantir que
o cliente não esteja trapaceando Portanto, o servidor está sempre verificando se o que você está
fazendo é legal ou não. E então, a partir desse
modo de jogo, se tudo estiver bem, você vai até o Player Controller e
gera aquele item ou personagem A desova final está sempre
dentro do Controlador. Como não temos
um personagem no
momento e realmente queremos
gerar o personagem, vamos começar esse evento a partir do controle
do Player Na verdade, eu quero
trabalhar de trás para frente. O evento final que queremos
alcançar é se você escrever clicar e escrever um
evento personalizado e fazer Saw player, chamamos esse
evento personalizado de spawn player Você arrasta daqui e diz
desova o ator da classe. Essa é a função usada para gerar
coisas para o mundo. Agora, para este, em vez de apenas selecionar o que
queremos gerar, vamos deixar
o jogador decidir, vou simplesmente arrastar essa
entrada ou esse pino aqui para o evento e ele
criará automaticamente essa variável para mim E eu vou
fazer a mesma coisa a transformação
de spawn Agora, para esta classe,
vou apenas
selecionar uma equipe ou chamá-la equipe porque é o
contraterrorista ou o terrorista que
vai aparecer O jogador seleciona a equipe, então ela aparecerá em algum
momento aqui para a colisão Eu tenho que configurá-la
para tentar ajustar a localização, mas certifique-se de
sempre gerar esse Ok. É sempre bom ter uma variável
desse jogador. Vamos clicar com o botão direito,
promover uma variável e chamá-la de peão do jogador, ok? Essa é a etapa final
que queremos alcançar. Queremos, por exemplo, realizar um evento
chamado Selecionar equipe. E então essa equipe
selecionada passará
pelo modo de jogo. E o modo
de jogo
voltará para controle do Player e executará esse único jogador de spawn
se tudo estiver bem e nós
aparecermos no mundo Ok, vamos salvar tudo agora, vamos
para o modo de jogo. Dentro do modo de jogo, queremos executar
esse spawn player Na verdade, estou trabalhando de trás para frente, agora estou trabalhando de trás para Este reprodutor de spawn
deve ser executado aqui. Para fazer isso, vamos realmente
criar um novo evento personalizado. E vamos chamar essa
solicitação de spawn player, estamos solicitando a geração
do player para esta Mais uma vez, eu quero organizar este evento. Na verdade, não temos uma referência ao nosso controlador
Player. Na verdade, vamos
adicioná-lo a este. Basta clicar no e
procuro meu PC. Eu acredito que se chama
PC Counterstrike. Essa. Vá em frente e selecione
o controle do player. E vou
chamá-lo de controlador Player, podemos arrastar daqui agora. E então, como o
chamamos, Spawn Player. Eu arrasto daqui e digo Spawn player e vou
em frente e seleciono Ok, então agora você está
executando isso. Agora podemos ver que você precisa definir a equipe e
a transformação do
spawn Agora, para a equipe, novamente,
a equipe será determinada sempre que o
jogador pressionar esse botão Então, este vai
voltar
até o pressionamento do botão. Então, vou clicar e arrastar isso para aqui também. Então, agora, para a transformação de desova, temos que determinar em que lugar do mundo queremos
gerar os jogadores, além dos pontos de desova
que
criamos anteriormente Então, vamos prosseguir
na próxima lição e escrever a lógica para isso.
71. Localização do Spawn do jogador 6.11: Tudo bem, agora temos que
determinar onde queremos
gerar os jogadores E lembre-se de que já colocamos os pontos de desova aqui para o terrorista e
o antiterrorista, e já armazenamos esses pontos de desova
dentro dessas matrizes Vamos pegar os pontos de desova
do contraterrorista
e os pontos de desova do terrorista Vamos atacar a partir daqui
e escrever aleatoriamente. Então, temos uma função
chamada item de matriz aleatória, então vamos gerar o jogador em um desses pontos da
Espanha aleatoriamente, indo em frente e selecionando um desses
pontos da Espanha aleatoriamente E então
vamos pegar o
ponto da Espanha e dizer get act transform. Ok, faça a mesma coisa aqui. Vamos escrever aleatoriamente
e depois obter a transformação. Agora temos a localização dos atores, rotação e a escala. Você pode ver que, se
clicar com o botão direito do mouse aqui e dividir a estrutura, poderá ver o ponto de desova
que ela selecionou aleatoriamente Você tem a localização
desse ponto de serra, você tem a rotação dele e você também tem a escala dele. Vou recombinar o pino
da estrutura porque,
na verdade, quero transformar Agora, o que você pode
fazer, muito legal aqui, é arrastar dessa equipe, e agora você pode dizer igual
assim e selecioná-la aqui. Se essa equipe selecionada for
igual, por exemplo,
a contraterrorista, vamos selecionar essa equipe antiterrorista da BP Se o jogador selecionou
o antiterrorista, o que
podemos fazer aqui é arrastar a partir daqui e dizer selecione, use este. Na verdade, vamos usar esse
chamado select transform. Mas você também pode usar
esse chamado select. E então você pode
simplesmente colocar isso aqui e usar isso
falso ou correto. A propósito, isso é a mesma
coisa, a transformação selecionada. Já nos dá um lingote. Na verdade,
vamos usar esse. Vamos em frente e
conecte-o. Agora , o que está dizendo aqui,
vamos conectá-lo aqui. O que está dizendo
é
que se a equipe aqui selecionada é
igual à equipe antiterrorista, se for verdadeira, vá
em frente e escolha A. Se for falsa, vá
em frente e escolha B. É isso
que está dizendo. Se é verdade que
selecionei o antiterrorista, tenho que pegar os
pontos antiterroristas aqui e depois conectá-los
ao A. Porque é verdade, eu
selecionei o antiterrorista. Vou pegar os pontos de observação
antiterroristas e conectar a transformação aqui. No entanto, se for falso, é o terrorista
que o jogador selecionou e o configurou aqui. Se você tem várias
equipes para seu atirador, você tem que usar essa
chamada select porque esta na verdade
só oferece a
opção de duas Este oferece a
opção de mais de dois, exatamente como você viu antes. Se você inserir uma
enumeração aqui, ela fornecerá as opções de
todas as enumerações que você todas as enumerações Agora, vamos deletar esse. Vamos nos concentrar
nisso para a equipe, vou
reconectá-la aqui Não sei por que
ele se desconectou. E vamos continuar organizando
as coisas um pouco mais. Tudo bem, agora isso
vai levar esse jogador
aleatoriamente a um desses
pontos,
dependendo se o jogador selecionar
contra-terrorista ou terrorista Como você pode notar aqui, para aqueles eventos que eu nunca
seleciono executar no servidor novamente, lembre-se de que o modo de jogo
só funciona no servidor. Você não precisa executar isso no servidor
ou no cliente. E, a propósito, você nunca
pode executar
no cliente no modo de jogo,
porque, novamente, ele só
roda no servidor. Você realmente não
precisa replicá-lo aqui. Ele será executado automaticamente
no servidor e
também aqui no
controle do jogador. Você pode ver aqui. Ou observe que eu também não executei
isso no servidor. Lembre-se do que eu disse antes, é sempre o servidor que gera coisas
no mundo Realisticamente, deve
ser executado no servidor. No entanto, lembre-se de que você está
vindo do modo de jogo. O modo de jogo só
funciona no servidor e executa esse spawn player Isso
ainda está automaticamente no servidor. Isso nunca sai do cliente. Isso vem do modo de jogo que é executado no servidor. Portanto, esse sempre
será executado no servidor, então você também não
precisa replicá-lo Ok, agora, se eu voltar
ao modo de jogo, agora temos essa
solicitação de spawn player E isso realmente vem
do controle de jogo. Então, se eu voltar aqui, o botão direito do mouse e crio
um evento personalizado. E vamos chamar isso
de Select Team. Estamos quase terminando.
Selecione a equipe. E também quero fazer com que
outro seja executado
no servidor chamado
Server Select Team. E este é executado
em um servidor confiável. Ok, agora
vamos selecionar uma equipe. Quando clicamos na interface do usuário, para essa equipe selecionada, quero executar a equipe de seleção do
servidor. Então, agora ele vai ser
executado no servidor. Para este, vou
executar o modo de jogo. Um chamado Request Spawn Player. Agora não consigo executar a
solicitação de spawn player porque, como você pode ver aqui, não
tenho uma interface de
plano para meu modo de jogo e não
tenho nenhuma referência a Então, vamos prosseguir
na próxima lição e criar uma
interface de modelo para o modo de jogo
72. Interface do Blueprint do modo de jogo 6.12: Tudo bem, então
vamos criar
uma interface de modelo
para o modo de jogo Agora você pode fazer isso
sozinho, porque já
fizemos isso muitas vezes. Agora, se você não se lembra, vá em frente e
me siga aqui nesta lição. Vamos continuar na pasta de interfaces do
blueprint. Clique com o botão direito do mouse, vá para Blueprint e selecione a interface do
blueprint Vá em frente e ligue e eu vou para o modo.
Entre nessa interface de
diagrama Vamos chamar essa função, obter a referência do modo
de jogo aqui. Vamos criar uma saída. Você precisa selecionar o que você está
tentando referenciar. Acho que estou tentando me
referir ao meu modo
de jogo chamado GM Contra-ataque. Se eu clicar aqui novamente, certo,
contra-ataque Selecione meu modo de jogo e
, em seguida, chame-o de modo de jogo. Ok, agora terminamos aqui. Lembre-se de compilar tudo. Vamos voltar ao nosso modo de jogo
no modo de jogo Blueprint. Dentro daqui, vamos clicar
nas configurações da classe, ir até as interfaces
e selecionar a interface que você acabou
de criar no modo jogo. Agora vamos clicar duas vezes
na interface. E dentro daqui, vamos
escrever autorreferência. Agora definimos
esse modo de jogo. Vá em frente, compile
e salve tudo. Agora podemos acessar o controlador do
Player e eu posso aqui começar a jogar. Na verdade, vamos
dizer e clicar com o botão direito
aqui para obter o modo de jogo. Agora, a partir disso, podemos dizer que obtemos referência
do modo de jogo
que acabamos de fazer. E é uma mensagem porque vem de uma interface de
diagrama E vá em frente e se conecte. Agora, para este, você
pode clicar com o botão direito do mouse e promovê-lo para uma variável
e chamá-lo de modo de jogo. Agora temos uma referência
ao nosso modo de jogo. Agora que temos uma
referência ao nosso modo de jogo, o que podemos fazer agora é pegar esse modo de jogo e
dizer que se eu voltar ao
meu modo dizer que se eu voltar ao de jogo e lembrar como eu realmente
o chamei,
e voltando aqui, o
chamamos de Request Spawn Player Então, agora podemos sair
desse modo de jogo e dizer Request Spawn Player, sem
mais nem menos Ok, agora podemos
usá-lo na próxima lição. Vamos compilar e
salvar tudo,
e vamos seguir em frente
73. 6.13 Finalizando a lógica de seleção de equipe: Ok, agora vamos continuar
e terminar a lógica. Agora vamos
conectar essa solicitação evento
spawn player
do modo de jogo nos permite
conectá-lo ao servidor Agora, se você conectar
este aqui, você também terá uma era se conectá-lo aqui. E então, para este modo de jogo, digamos que você conectou
esse alvo aqui Essa é a referência do modo de jogo. Se você fizer isso aqui,
se você executá-lo, essa é a referência do modo de jogo.
Se você executá-lo a partir daqui, na verdade, chega a uma época em que diz que essa
variável do modo de jogo não existe. Eu não sei do que
você está falando. Isso acontece se você executar
isso no cliente. Lembre-se de que o modo de jogo
só pode se comunicar
com o servidor. Se você tentar executar a
variável do modo de jogo por meio do cliente, isso lhe dará uma era e dirá não
sei o que é
essa variável. Lembre-se de executar esse modo
de jogo também no servidor. Vamos excluir essa variável. Deixe-me conectar meu modo de jogo
novamente, sem mais nem menos. Agora eu tenho que conectar meu controlador de
player, selecione. Lembre-se de que já estamos no controle
do jogador, arraste
daqui e escreva para si mesma a equipe que
você deve selecionar. Novamente, queremos fazer isso
por meio da interface do usuário aqui. O que vou fazer é simplesmente
arrastar isso para o evento, arrastar isso para o
evento também e compilar Agora, o que podemos fazer agora é pegar esse evento
e executá-lo por meio da interface do usuário. Se eu abrir meu
widget, blueprint, clico no meu botão.
Para este, vamos realmente mudar
o nome dele Se você clicar no botão,
eu o chamarei de BTN Terrace. Faça com que seja variável, porque se você não tiver isso
como variável no gráfico, quando você vai codificar a funcionalidade
desse botão. Você pode ver que não tem nenhuma variável. Se
você colocar isso, agora
você pode vê-lo como
uma variável aqui. E você pode criar
eventos por meio dele. Certifique-se de marcar que é variável. Faça a mesma coisa com
o contraterrorista. Vamos chamá-lo de terrorista BT N. Vamos fazer com que seja variável. Vá em frente, compile
e salve tudo. Vamos passar para
o gráfico agora. Para este, vou deletar
tudo isso. Por enquanto, vou clicar primeiro no
Terris, por exemplo E agora temos esses eventos. Podemos selecionar isso com um clique. O que deve acontecer quando eu
clico no botão Terris? O que eu quero fazer
é, ao clicar em, executar essa Seleção de Equipe. Preciso de uma referência ao controlador
do Player. Então, do jeito que você faz isso de forma muito, muito fácil dentro da interface do usuário, você pode escrever, clicar
e dizer “Get Owning E você pode ver que
tem duas coisas aqui. Você pode
se tornar proprietário do jogador e isso obterá o
controlador do player para o jogador E você pode se tornar
dono do jogador Pon. Isso obterá o player P em vez do controlador
do player. No momento, precisamos do controlador
do player. Eu vou fazer o
Get Owning Player. Agora, novamente, já nos lembramos ter uma interface de modelo para o controlador do player, onde
podemos arrastar a partir dela e dizer obter referência do
controlador do player Vá em frente e se conecte.
Agora podemos realizar esse evento chamado Selecionar equipe e
selecioná-lo. Agora você precisa especificar
o que é a equipe. É o terrorista porque
clicamos no botão
terrorista Vá em frente e procure o terrorista da BP e compile
o antiterrorista Vá em frente e clique nele.
Vá em frente e clique aqui. Vou copiar e
colar tudo isso. Você pode escrevê-lo novamente se
quiser mais prática. Agora vamos selecionar o contador em vez deste. Vamos
continuar e compilar Agora, só para explicar para
você, o que realmente está acontecendo é se eu clicar
no botão terrorista. Agora, passará
pelos
controles do jogador , selecione Evento da equipe. Vai passar por aqui. Lembre-se de que este está sendo executado no cliente e no servidor. Nós o executamos por meio
do cliente aqui e depois executamos primeiro no servidor. Quando o executamos no servidor, agora
estamos nos comunicando
com o modo de jogo Vamos acessar o modo
de jogo e perguntar ao modo de jogo podemos
realmente gerar isso E vamos
passar por tudo isso e gerar o controle do jogador Vai descer aqui. Lembre-se de que ele sabe o que
gerar porque nós os
definimos aqui na interface do usuário, definimos a equipe aqui Ele levará esse
valor para a equipe selecionada, passará por
aqui, conectará aqui, login aqui, executará o modo
de jogo aqui. E então ele vai
executá-lo no player de spawn aqui. E ele sabe qual
é o valor porque nós lhe dissemos o que é e ele também sabe
onde gerar o jogador Ok, agora vamos
clicar em jogar. E se eu selecionar um
deles, por exemplo, o terrorista, você pode ver que nada está
acontecendo agora. Na verdade, vamos para a próxima
lição e terminar isso.
74. 6.14 Gerando o jogador: Tudo bem, então há uma última
coisa para gerar o jogador. E temos que
possuir o jogador. Se você realmente clicar nisso, você está realmente
gerando o jogador Mas você não pode ver o
jogador no nível porque também precisa possuí-lo
. Se você arrastar do display pon, lembre-se de que já criamos uma interface para
a base de jogadores, então você pode arrastar da tela e dizer obter referência do jogador. Já criamos essa interface de
diagrama e agora você pode arrastar
do player Você precisa possuir o jogador para controlá-lo. Vá em frente e compile
tudo agora, e vamos clicar em Play Se você clicar no terrorista
agora, verá que pode realmente possuir esse
contraterrorista. No entanto, ainda há a interface de usuário à nossa frente e
precisamos removê-la. A interface do usuário é executada
pelo cliente. Quando você trabalha com a interface do usuário, você está trabalhando dentro
do cliente. Agora, em vez de fazer isso aqui, vamos clicar com o botão direito do mouse e
criar um novo evento personalizado. E passe pelo cliente. Spawn player, vou
chamá-lo de cliente spawn Eu sei que está conectado a este.
Vou clicar nele. Vá em frente e continue
possuindo um cliente confiável. Vamos examiná-lo por
aqui também. Cl spawn player para este
aqui agora Só quero lembrar que o
chamamos de widget show hide. Então, podemos vir aqui e dizer mostrar o widget ocultar
e selecioná-lo aqui Agora podemos selecionar
a seleção da equipe e esta desmarcada Agora, ele ocultará
a interface do usuário dos jogadores. Vamos compilar
e clicar em Play. E vamos selecionar,
por exemplo, o
Counter Terrist. Agora você pode ver que
estamos aqui dentro. Agora você pode ver aqui, eu não
consigo mover meu personagem. E também posso ver a
cabeça do meu personagem. Lembre-se de que realmente removemos
a cabeça. Isso é um bug. Se formos até o jogador, e eu só quiser verificar meu código se você clicar na base de jogadores, se você acessar o gráfico do evento,
ele mostrará minha cabeça. Lembre-se de que, no início do jogo, removemos a cabeça, também não
podemos
controlar o jogador. Suspeito
que esse código aqui,
o código de movimento e o
esconderijo da cabeça não estejam funcionando Porque se eu jogar e clicar, você pode ver que consigo ver minha cabeça, esse código não está sendo executado. Este também não está funcionando porque eu realmente não consigo
mover meu personagem. Acredito que seja porque você pode simplesmente
imprimir uma string aqui. Imprima uma string novamente, imprimir uma
string é realmente poderoso. Deveria dizer olá aqui. Se isso acontecer, sei que
meu código está sendo executado aqui. Se eu clicar nos meus galeirões, você pode ver que ele
não está dizendo olá Mas se eu conectá-lo
ao inválido. Então, se eu simplesmente desconectá-lo, coloque-o como inválido, desse
jeito E eu posso reconectar isso novamente. Eu clico em jogar e
agora ele diz olá. Na verdade, está dizendo
que isso não é válido. Agora, no modo multijogador, você
precisa saber que precisa dar
ao jogador um pouco
de tempo para apareça, porque
não é como um único jogador Eles demoram algum
tempo para aparecer
no servidor ou se conectar
ao servidor Então você tem que se afastar
disso e, digamos, atrasar. Às vezes, isso realmente
resolve o problema. Se eu apenas adicionasse um atraso e
não fosse realmente um grande, apenas 0,01, então muito, muito baixo e compilasse. E agora,
se eu clicar em Jogar, selecione o Counter Terrorist. Agora você pode ver que eu posso mover meu personagem e minha
cabeça também sumiu. Na verdade, a única coisa que
precisávamos aqui é
adicionar esse atraso. Porque quando você se conecta
à rede no servidor, é necessário um atraso
muito pequeno
para que o player realmente se conecte e execute esse código. Tudo bem, agora, como
você pode ver aqui, tudo está funcionando bem. No entanto, você pode
ver que o mouse está desaparecendo toda vez
que eu clico na tela E é irritante,
eu tenho que selecionar minha outra tela antes de poder realmente
clicar nos botões E eu tenho que clicar
aqui antes de poder jogar. Então você pode ver que eu tenho que clicar, ou realmente
minimizar isso. E agora eu posso clicar na interface do usuário. E eu tenho que clicar novamente
na tela antes de poder mover
meu personagem com o mouse. Então, temos que consertar isso. E, na verdade, temos que fazer isso na próxima lição
com algo chamado modo de entrada
que temos que definir. Vamos para
a próxima lição.
75. 6.15 Definindo o modo de entrada: Tudo bem, agora
vamos
abrir nosso controle de player. Então, se você abrir o
Player Controller,
agora, como você pode ver
quando clico em play, não
consigo ver meu mouse e não
consigo pressionar nada. Se eu for até o controle do player e clicar nos padrões da
classe, posso selecionar esse chamado
sapatos Se eu compilar e jogar, agora você pode ver que consigo
ver o cursor do mouse No entanto, às vezes, quando
entro no jogo, não
consigo passar o mouse sobre meus botões E é aí que entra o modo de entrada
definido. Aqui no controle do
player. Vamos atacar a partir
daqui, desde o início. Jogue e, digamos,
defina o modo de entrada. Você tem esses tipos diferentes. Você pode definir o
modo de entrada para somente interface do usuário, somente jogo ou jogo e interface do usuário. No momento, quando nos
conectamos ao servidor, queremos apenas que ele esteja apenas na interface do usuário. Porque queremos apenas nos concentrar na seleção de
nossa equipe
e selecionar a equipe. Não nos importamos com
o jogo no momento, você será suficiente. Em seguida, temos que especificar
o controlador do player. Lembre-se de que já estamos
dentro do controle do jogador, então vou me arrastar
daqui e dizer eu mesmo. Então, para que o widget se concentre, não
precisamos
fazer nada aqui E tudo está indo bem. Então, vamos continuar e compilar. E agora, quando clico em Jogar, na
verdade não estou
focando no meu jogo. E eu posso ir em frente
e fazer tudo isso. Agora, quando o jogador aparece, você também precisa
alterar o modo de entrada Porque quando
entramos no jogo, você pode ver que não consigo mais me mover porque, no momento, seu
modo de entrada está configurado apenas para a interface do usuário, então você também precisa
mudar isso. Vamos descer até aqui.
E lembre-se, na verdade, se você subir
aqui e ver o ícone, você pode segurar o mouse sobre ele Você pode ver que
este na parte superior, você pode ver que diz apenas cliente. Ele só funciona no cliente.
Vamos descer até aqui. Quando geramos o player, vamos realmente executá-lo para
o cliente. Spawn player Vamos arrastar a partir daqui
e dizer definir o modo de entrada. No momento, precisamos do jogo apenas porque agora estamos no jogo. Queremos nos movimentar. Não nos importamos com a interface do usuário,
com o controle do player ,
digamos, como antes. Deveria ser isso.
Vamos compilar e jogar Agora eu seleciono Counter Terrace, por exemplo, e agora
estou aqui dentro. Mas, como você pode ver, ainda
consigo ver meu mouse. Vamos arrastar a partir
daqui e dizer mouse. Você tem esse evento aqui embaixo. O lingote chamado
set show mouseursa. Vou fazer com que caia aqui em cima. Você sempre pode
defini-lo como verdadeiro por padrão Se quiser,
você pode copiá-lo. E você pode colá-lo aqui conectá-lo e
configurá-lo como verdadeiro. Agora, já fizemos isso definindo-o como
verdadeiro por padrão, mas só para ter certeza de
que está visível, caso você faça algo no futuro, você
pode ter isso. Mas, por enquanto,
na verdade, não é necessário. Mas, na verdade, vamos
deixar que esteja aqui. Vamos clicar em Play by
Select, No terrorist. Você pode ver que meu mouse desaparece e tudo está
funcionando perfeitamente Tudo bem, então vamos
fechar tudo. Lembre-se de salvar seu
jogo e vamos seguir em frente.
76. 6.16 Colocando uma câmera para espectador: Agora, ao
clicar em Jogar, você pode ver que ele
começa em um ponto aleatório. E, na verdade, quero
começar em um lugar legal onde você possa ver todos
os jogadores logo
quando você se conecta. Isso vai ser muito bom. O que você pode fazer é
simplesmente configurar uma câmera aqui, por exemplo. Deixe-me colocar
minha câmera primeiro. Por exemplo, eu
quero colocar minha câmera assim aqui e eu posso ver todo
o nível e
os jogadores também. Agora, quando estiver satisfeito com a posição
da sua câmera, você pode clicar aqui
na janela de exibição e depois
clicar nesta Crie a câmera aqui
e selecione Câmera. Isso criará um
ator de câmera automaticamente. Agora, se eu clicar na câmera, ela foi criada aqui. Para garantir que eu não mova
a câmera aqui por engano, escreverei
clique e transforme e selecione Bloquear
movimento selecionado. Agora, quando você clica nela e seleciona a ferramenta de movimentação, você pode ver que ela não está lá. Eu realmente não posso mover
isso por engano. Agora, bloqueou o
movimento para este. Ok, vou renomear
essa e chamá-la de espectadora. Vamos economizar. De vez em quando, o que
podemos fazer é acessar o controle do player e lembrar o que eu disse antes. Se você quiser uma referência a
qualquer coisa dentro do mundo, tente se lembrar de qual
função realmente usamos. Vou te dar apenas
um pequeno segundo para pensar sobre qual
função podemos usar aqui para obter a
referência para esta câmera aqui. Vamos para o
controlador do Player agora. O que podemos fazer é
definir essa visualização sempre que
o jogador se conectar. Na verdade, vou fazer
isso aqui no início do Play. O que você pode fazer é que
eu vou fazer isso
aqui depois do modo, vou arrastar isso para longe. E então, a partir daqui, diga um
ato de aula na Floss. Essa é a função
que você precisa usar. Em seguida, selecione a câmera. Se eu procurar a câmera
, você poderá
selecionar a câmera. Esta é uma câmera, estamos tirando a câmera
do nosso nível. Agora, o que podemos fazer é usar essa função chamada Set View Target, Blend. Definir o alvo de visualização com
mesclagem
definirá a visualização da sua
câmera quando você se conectar. Agora ele pergunta
qual é a vista? A visão é apenas essa câmera
que criamos. Vá em frente e conecte-se.
Na verdade, foi isso. Vamos apenas escolhê-los aqui. Vá em frente e compile,
salve tudo. Vamos clicar em Jogar. E agora você pode ver que começamos aqui. E eu posso ver esse nível. Parece legal se os jogadores estão jogando e eu
posso selecionar meu time, bem
como ver os jogadores
em segundo plano. Quando você clica em terrorista, por exemplo, você
avança e aparece dentro do nível E tudo está funcionando
bem para o outro. Se eu for em frente e aparecer
como contra-terrorista, eu for até lá e você
verá que eles podem se ver No momento, você pode
ver que há um bug. Vamos realmente consertar isso. Com a cabeça desaparecendo quando vejo o cliente
como servidor, se eu sair daqui, isso
realmente me mostra uma era e pode ser
por causa dessa Diz que não estou
tentando ler esta era aqui, você pode tentar
consertá-la sozinho agora antes de me seguir,
apenas para praticar. Axis não significa que ele tenta ler esse valor chamado get
local player subsystem Se eu clicar aqui, este é o subsistema get local player Ele está tentando ler esse valor,
mas diz acesso nenhum, o que significa que não consigo obter nenhuma
informação deste. Vamos acabar com isso. Sempre bom fazer isso é simplesmente
eliminar isso e dizer que é válido somente quando é válido. Vamos executar esse código, vamos
conectá-lo aqui também. Sempre que o
controlador do player for válido, assim como
essa entrada aprimorada, ela é válida, então
queremos executar o código novamente. Basta clicar duas vezes aqui
no nó de redirecionamento. Vá em frente e faça essa compilação
organizada. Vamos clicar em play
e ver o que ele faz. Agora vá em frente e selecione terroristas para
este, por exemplo Vamos até o meio e selecionaremos o outro. Vamos selecionar o
antiterrorista. Deixe-me ver o
outro cara aqui e ver se eles se vêem. E agora você pode ver que está corrigido. Era apenas um problema com
aquela era que tínhamos antes. Agora, se você quiser testá-lo, poderá jogá-lo como cliente. Você pode jogar como, por
exemplo, três jogadores. Vamos abrir todos
esses três jogadores. Vou minimizar
esse grande por enquanto e torná-los
um pouco maiores. Assim, neste caso, vamos criar um antiterrorista E para o outro, vamos criar um
antiterrorista. Para o terceiro, vamos criar
um terrorista. Deixe-me ir para o meio aqui. Para este, eu também
vou para o meio. E para o outro também. Agora você pode ver que eles
estão funcionando perfeitamente. Todo mundo pode ver todo mundo. E as animações, elas
podem ser vistas agachadas, essa também, os efeitos
sonoros funcionando, e tudo está pronto Vamos salvar
tudo e seguir em frente.
77. 7.01 Espaços de mistura de pistola: Agora estamos realmente
prontos para trabalhar com as armas e
colocá-las no nível também. No entanto, antes de fazermos isso, vamos realmente fazer as animações de rifle
e pistola porque estamos sentindo falta
delas no momento Vamos finalizá-las antes de
trabalharmos com as armas, porque nesse
momento teremos todas as animações
e tudo ficará muito mais fácil para nós Então, vamos voltar para
a pasta de plantas, clicar no player e voltar para a pasta de animações O que eu quero fazer
é, nesta lição, criar os espaços de mistura da pistola Assim como essas,
mas as de pistola agora, se você quiser
criá-las você mesmo Portanto, é um bom exercício e então você pode
ver o que estou fazendo. Mas você
já deve saber como fazer isso. Porque na verdade é
a mesma coisa que aqueles que se agacham desarmados,
correm desarmados
e também andam desarmados andam Se você quiser seguir, clique
com o botão direito aqui. Vamos aqui na animação e
selecionar
o espaço de mesclagem para esta. Novamente, selecione nosso estilo de
esqueleto, um masculino, e
chame-o de espaço de mistura Vamos chamar isso de pistola
de agachamento. Vamos criar esse primeiro.
Vamos clicar duas vezes aqui. Para o eixo horizontal, essa é a direção do movimento
para o eixo vertical, essa é a velocidade do movimento. Para a direção do movimento, ela vai de menos 180 para 180 E então temos
oito deficiências
porque temos um movimento de
oito vias Quanto à velocidade de movimento agora, depende
se estamos agachados ou se estamos
andando ou correndo Agora vamos voltar para, na verdade, eu posso fazer isso
aqui, à direita. Vamos voltar ao
agachamento para os desarmados. Quero ver qual era a velocidade do
movimento. Aí está 100, então vou configurá-lo da
mesma forma aqui para a pistola, 100 E a última coisa aqui
para a velocidade do peso, colocamos em 6,5.
Se você se lembrar, se não se lembrar, pode clicar no agachamento e descer E então você pode ver a
velocidade do peso, nós a configuramos para 6,5. Faça a mesma coisa com este
, para que eles sejam iguais. E antes de fazer qualquer coisa, vou salvar
isso e clicar com o botão
direito do mouse
e duplicá-lo Isso ocorre porque eu não preciso fazer tudo isso de
novo e de novo. E essa é
chamada de pistola de corrida. E então eu vou
duplicar isso novamente e
isso vai se
chamar S Walk Pistol Vou
abrir a pistola de corrida. Agora só precisamos mudar a velocidade
do movimento. Acho que é 350 e se
você não se lembrar novamente, clique no desarmado Para a corrida, você vê que é 350. No agachamento ou,
na verdade, no agachamento, na pistola de corrida, você também precisa
colocá-la em 350 Ok. E vamos
verificar a pistola. Acho que essa é 200
na arte. Sim, são 200. Então, vamos colocar a caminhada um em 200 também e
vamos salvar tudo. Agora você pode ver que
quando eu o
dupliquei, não preciso fazer tudo isso
de novo e de novo. Então, agora eles estão todos prontos. Ok. Vamos começar
com a pistola 1 Vamos procurar o agachamento ou posso simplesmente
procurar uma Isso é muito mais fácil. E então eu posso dar uma olhada
no agachamento aqui Assim como antes. Primeiro você
precisa ter o inativo. Vamos ver,
agache-se novamente,
segure a tecla Shift e
conecte-a aqui embaixo segure a tecla Shift e
conecte-a Exatamente desse jeito. E
a mesma coisa do outro lado, sem mais nem menos. Ok, aqui em cima está o movimento para frente, como você pode ver aqui. E então você tem a
frente esquerda até aqui, e a frente direita até aqui. Então você tem a esquerda
aqui e você tem
a direita aqui. E então você tem as costas à esquerda e
as costas à direita, e então você tem as
costas dos dois lados. E eu posso habilitar os rótulos para que você também possa ver
como eu os coloco. Mas você pode segurar
o botão de controle e mover o mouse apenas para
verificar se está tudo bem. Tudo parece bom. salvá-lo e fechá-lo. E agora eu posso
abrir a pistola de corrida. Vou procurar a pistola de marcha lenta e vou usar essa chamada pistola de marcha lenta e
colocá-la novamente Segure a tecla Shift e
coloque todas elas. Agora, quando você as tiver colocado, vamos procurar por pistolas e eu vou
encontrar as de corrida. Use esta, as
pistolas agora precisamos, se eu puder encontrá-la
aqui, a da frente Então precisamos da frente
esquerda e depois da frente direita. Então precisamos da
esquerda, da direita, e precisamos da parte traseira
esquerda, de trás para a direita. Também precisamos da parte de trás
aqui para os dois lados. Novamente, mantenha o controle apenas
para ver como é. Tudo parece bem. Ok. Nós podemos fechá-lo. Agora vamos abrir a última,
a pistola de caminhada. Mais uma vez, vou
encontrar o ocioso. Pegue a pistola ociosa e
coloque-a aqui novamente. Então vamos procurar uma pistola. Agora precisamos encontrar a caminhada
nesta frente de calçada e colocá-la aqui assim. E então precisamos da
esquerda, da frente, da direita. Então precisamos da esquerda
e da direita aqui, volta à esquerda, de volta à direita. E então precisamos em
ambos os sites. Novamente, posso ativar
esses rótulos para que você possa ver e eu manter o controle. Mova meu mouse só para ver como
fica e
tudo fica bem. Então, agora podemos salvar tudo. E isso foi tudo para
a pistola uma vez. Vamos passar para a próxima
lição e usar o rifle.
78. 7.02 Espaços de mistura de rifles: Para o rifle. Novamente,
você pode tentar fazer isso sozinho, agora que
também fizemos a pistola Mas vamos fazer isso juntos se você ainda tiver alguma
dificuldade com isso. Vamos clicar com o botão direito aqui.
Vamos para Animação. Vamos ao Blend Space
e selecionamos nosso esqueleto. Novamente, chame isso de S.
Vamos chamá-lo de Rifle. Vamos falar sobre isso. Ligue para o horizontal. Direção do movimento. O eixo vertical. Velocidade de movimento. A direção vai
de menos 180 a 180. Com oito divisões de grade, a velocidade do peso é 6,5 Quanto à
velocidade de movimento, é o agachamento Portanto, está definido como 100. Isso está correto. Vamos
fechá-lo novamente. Vou duplicar isso
e chamar isso de rifle Un. E vou
duplicar isso novamente. Vamos chamar isso de rifle de caminhada. Vou abrir
o rifle de corrida e mudar
a velocidade de movimento para 350 Sim, não precisamos
mudar mais nada. Vamos abrir o rifle de
caminhada aqui. Vamos mudar a velocidade de
movimento para 200, como as outras. E vamos salvar tudo
e fechá-lo. Ok, para o rifle. Vamos começar com
o agachamento novamente. Para o agachamento,
vou
procurar um rifle e depois vou encontrar o
rifle inativo e colocá-lo aqui embaixo E vá em frente e coloque-os
novamente, até aqui embaixo. Tudo bem, quando isso for feito, agora encontre o
rifle agachado e coloque-o aqui embaixo Às vezes, estou apenas segurando o
controle para verificar
se a animação que
importei para você está correta. Normalmente, eu apenas mantenho o controle e verifico
se isso está correto. Eu não cometo um erro
aqui neste curso. Agora temos essa frente. Ok, então temos a frente
esquerda, temos a frente direita, depois temos a esquerda agachada à esquerda e Então temos a parte traseira
esquerda e a traseira direita. Então, temos idas
e vindas também. Opa, eu preciso copiar isso de
volta desse jeito novamente. Mantenha o controle, verifique se
tudo está correto, tudo parece estar correto. Vamos encerrar isso. Vamos até o rifle
novamente. Eu procuro por ocioso. E eu pego esse rifle ocioso
e o coloco aqui embaixo. E coloque-o novamente,
até aqui embaixo. Quando isso for feito, vá em frente
e procure por um rifle. E agora eu encontro o
Run uma vez e encontro o rifle Run Forward e
isso parece correto E vamos colocá-lo na
frente, à esquerda, à frente, à direita. E então temos
a esquerda e a direita. E temos as costas
à esquerda e as costas à direita, e temos as
costas dos dois lados. E eu vou manter o controle, verificando se tudo
está correto. Parece correto.
Vamos fechá-lo. O último é o rifle de caminhada. Novamente, vou
procurar o inativo, arrastá-lo para baixo do rifle e colocá-lo até Mais uma vez, vamos
procurar um rifle. E agora precisamos do Walk One. Vamos seguir em frente. Coloque-o aqui embaixo e vamos dar uma
olhada. Isso está correto. Em seguida, na frente, à esquerda. Frente
à direita, e nós temos a esquerda. Nós temos os direitos. Então
temos os Bccrights Também temos costas nos
dois lados. Vou controlar, novamente, apenas para verificar se
tudo parece correto e se tudo
parece estar correto. Vamos salvar tudo.
Vamos fechá-lo. E agora o rifle e as
pistolas estão prontos. Vamos passar para a próxima
lição e fazer o deslocamento da mira.
79. 7.03 Pistol Aim Offsets: Agora vamos seguir em frente e
fazer o deslocamento do Aim. Agora você já fez isso antes. Novamente, tente fazer
isso sem mim. Essa é uma boa prática. E se você não consegue se lembrar, vamos
fazer isso juntos. Vamos clicar com o botão direito aqui, ir para Animação
e ir para Legacy. E selecione-os, Offset one D, vamos selecionar o personagem Vamos chamá-lo de O para uma compensação. E vamos nos agachar. E vamos chamar isso de pistola. E vamos clicar duas vezes nele. Para este, o
eixo horizontal é a direção. Você também pode clicar
no outro para
ver o que você fez. Então você faz a mesma coisa. Não é muito bom fazer coisas
diferentes
no mesmo jogo. Por isso, é sempre bom
fazer a mesma coisa. Se você a chamou
de direção aqui, tente chamá-la de
direção aqui também, em vez de
direção de movimento e assim por diante. Então, tente fazer a mesma coisa. Então você tem consistência
em seu jogo -90 E acho que os deficientes
continuam os mesmos Tudo está indo bem. A velocidade de peso que
coloquei em 5,5 Vou clicar na
pistola e colocar a velocidade de peso em 5,5 também Eu vou salvar
tudo agora. Vamos procurar o offset da pistola
Crouch. Se eu procurar uma pistola e
descer até o Am offset,
essas são as agachadas O central que eu
vou segurar e segurar mude e o coloque aqui embaixo. Então estamos prontos
e eu vou manter o controle para ver se tudo
está correto. Isso é bom.
Vamos fechá-lo. Vou clicar com o botão direito do mouse em
Animation Legacy Am. Compense um D. Selecione seu esqueleto e
chame esta pistola de 10 pés. Vamos abri-lo novamente. Chame isso direção indo de -90 a
95,5 na velocidade do peso E vamos
procurar uma pistola novamente. Desta vez, é
a pistola de suporte, a central que vou
colocar no centro Então temos o baixo,
e depois temos o alto. E você também pode ver o
rótulo aqui. Nós temos o baixo,
nós temos o alto. Tudo está indo bem. Vamos salvar tudo e passar para
a próxima lição.
80. 7.04 Rifle Aim Offsets: Ok, então agora só nos
falta o rifle. Mire offset novamente, tente fazer
isso sozinho para praticar. E se você não se lembrar novamente, vamos fazer isso
juntos. Vamos clicar com o botão direito do mouse em Animação. Selecione
Legacy e mire um D. E vamos selecionar
nosso esqueleto e chamá-lo,
vamos chamá-lo de rifle de agachamento Para este, vou
clicar duas vezes em Chame de direção para o valor mínimo -90. Para
o valor máximo, é 90 A velocidade do peso é de 5,5. Vamos procurar o rifle, desta
vez para compensá-los. Esse é o agachado. Precisamos do deslocamento do agachamento. Vou atacar esse
centro e colocá-lo aqui. Então temos o baixo,
depois temos o alto. Isso aqui parece bom. Agora, a animação
em si parece estranha. Quero dizer, ele está muito curvado
e isso parece tão estranho. Mas essas são apenas
animações como se não fosse sua culpa, não estivéssemos fazendo nada de errado É apenas a animação
que é feita assim. Agora, se eu tivesse animações melhores,
eu as daria para você. Infelizmente, eu realmente não
tenho animações melhores. Talvez no futuro eu
tenha alguém que faça
tudo personalizado. Mas, por enquanto, isso é o
melhor que podemos fazer. Tudo está indo bem. Agora vamos fechá-lo. E vamos clicar com o botão direito novamente. Vá para Animação e legado, aqui está dito que
selecione o esqueleto Chame isso de rifle de suporte AO. Vamos clicar duas vezes aqui
e chamá-la de direção. Então, para o valor mínimo -90 para o máximo
90, para o peso, velocidade 5.5 E vamos
procurar o rifle e
agora podemos selecionar o rifle de suporte, este é Então temos a penugem. E
então temos o controle antigo para verificar se tudo está correto e se
está tudo bem. Ok, vamos salvar tudo. Vamos fechá-lo. E agora também temos a
mira compensada. Vamos seguir em frente
na próxima lição.
81. 7.05 Blend Poses by Bool: Agora estamos prontos para voltar
ao plano de animação
e trabalhar nele Vamos clicar na
pasta Animações do player e abrir o plano de
animação Agora, aqui dentro, eu quero que você clique no gráfico de
animação. Então, estamos
aqui dentro. Como você pode notar, anteriormente usamos
o offset para o estande No entanto, também
usamos o outro, o desvio de mira, para
agachamento Usamos apenas
aquele para o estande. Quando estamos agachados, não
estamos usando o deslocamento correto da mira
. Para fazer isso. Vamos clicar com o botão direito do mouse e
pesquisar por agachamento. Este jogador de um offset, momento em que estamos no, vou apenas
copiá-lo na direção. E copie este
enquanto o conectamos. Agora temos isso.
Mas o problema agora é que não consigo
conectar isso aqui,
porque, como você pode ver, apenas uma entrada. Temos que conseguir algo que junte essas
duas coisas. A maneira como podemos fazer isso
é clicar com o botão direito do mouse e pesquisar poses de mistura. Você pode ver que podemos combinar essas duas poses por vários fatores. Você pode
ver tudo isso. No entanto, o que precisamos
é misturar poses de touro, você pode ver que há algo
chamado mesclar poses de touro. Isso possibilita que você misture
as poses
por meio de um lingote Se você tem um
lingote verdadeiro, ele vai usar essa pose Se for falso, ele
vai usar essa pose. Temos que lhe dar um lingote. O ouro que queremos usar é verificar se o jogador
está agachado Se o jogador estiver agachado, usaremos o
desvio de mira para Se o jogador não estiver agachado, usaremos o
deslocamento para o Vamos descobrir que
o lingote aqui, se já
fizemos isso agora, está agachado e está andando Lembre-se de que os excluímos
anteriormente daqui. Na verdade, eles não são usados
no momento e estão errados. Vamos deletar o Está
agachado e está andando. Lembre-se de que os
trocamos pelo estado do movimento aqui. Vamos atacar
este. E vamos arrastar a partir daqui e dizer
pegue uma cópia. E agora você pode arrastar a partir
daqui e dizer o último índice, e então podemos conectá-lo. Estamos verificando se o jogador está pressionando o botão de agachamento
no
momento Podemos arrastar a partir daqui e dizer igual se o último índice
for igual a agachamento, o
que significa que o jogador está pressionando o botão de
agachamento
agora ,
então podemos seguir em frente e nos agachar então podemos seguir Agora vamos
conectá-lo se for verdade, ou
seja, o jogador está agachado, queremos usar este em que o desvio
da mira é agachado No entanto, se o jogador não
estiver agachado, queremos usar
este com o suporte Vá em frente, compile e conecte-os aqui.
Compile tudo E eu vou mover
tudo para cá
e organizá-los. Tudo bem, então tudo
está organizado agora. Agora você pode tentar verificar
se isso está funcionando. Assim, você pode clicar
no estado do movimento. Você pode adicionar uma matriz aqui, adicionar um elemento à matriz. E você pode simplesmente
configurá-lo para agachado. E você pode
ver como é. Então, agora você pode realmente
ver que está funcionando. Porque se eu configurá-lo para
agachado, ele estará agachado. Se eu configurá-lo para outra coisa
, ele
mudará para o outro. Agora você pode ver
que ele está funcionando corretamente. Vamos lembrar de excluir isso por enquanto. OK. Então, isso está
funcionando corretamente. É assim que você
mistura poses por meio dessa chamada pose de mistura
de bullying OK. Então, temos
outro que precisamos usar mais tarde, porque esse é
apenas o movimento desarmado Também precisamos do movimento da pistola e
do movimento
do rifle Então você pode ver que fica
um pouco mais complexo porque precisamos criar tudo isso para a pistola
e o rifle Precisamos de outra chamada pose de
mesclagem por enumeração. Mas, por enquanto, vamos passar para
a próxima lição e
aprender sobre o assunto.
82. 7.06 Blend Poses by Enum: Tudo bem, aqui estamos de novo. Desta vez, queremos
usar essa chamada pose de mesclagem
por enumeração Se você escrever, clicar e escrever pose de
mesclagem ou pose de mesclagem, verá todas aquelas que começam com E. Começando com E, na verdade, é uma enumeração E essas são apenas enumerações criadas no
Unreal Agora, vamos criar nossa
própria enumeração,
deixe-me minimizar tudo isso Vamos para o Enos. Deixe-me clicar com o botão direito do mouse nessa pasta, ir para Blueprint e criar
uma nova lista de enumeração Mas vamos chamá-lo de tipo de arma. Vamos prosseguir e
inserir a enumeração. E agora você pode adicionar os tipos de
armas que temos. Temos a pistola
e o rifle, mas também temos os desarmados porque eu também preciso do movimento
desarmado Então, vou fazer o
desarmado, para começar. E podemos fazer um para a pistola e podemos
fazer um para o rifle Novamente, não importa
em que sequência eles estão. Se for assim, você os
criou ou algo assim
, não importa. Ou seja , isso realmente não significa nada. Ok. Vou fazer com que seja como uma pistola desarmada, Vá em frente e salve, essas
são as armas que temos. Se você tiver mais armas, pode adicioná-las. Mas, por enquanto, vamos
salvar tudo. Vamos entrar aqui. Agora podemos clicar com o botão direito do mouse e pesquisar poses de mistura. E então você pode pesquisar a enumeração que acabou de fazer, O tipo de arma, podemos
pesquisar o tipo E aqui está. E agora
você pode selecioná-lo. Agora você o tem
aqui. Agora você pode mesclar poses por meio
dessa enumeração Podemos clicar com o botão direito do mouse nessa pose
padrão e, em seguida, você pode selecionar e adicionar um
alfinete para quem está desarmado . Clique com o botão direito,
selecione a pistola, clique com
o botão direito, selecione o rifle Agora você tem pinos para todos
os movimentos que você tem, então você pode conectar o movimento desarmado,
o movimento da pistola
e o movimento do rifle E você precisa inserir
a enumeração para poder alterá-la adequadamente Ok, vá em frente e
salve tudo. Agora,
o que precisamos fazer aqui é voltar ao jogador, porque agora realmente precisamos
saber o que o jogador está
equipando agora Porque se você está
equipando um rifle, precisamos mudar sua
pose para um Se eu for até a
base de jogadores e adicionar uma nova variável que
usaremos mais tarde, vou
chamá-la de arma equipada. Vou transformar
esse tipo de variável
no tipo de arma. Vamos usar essa arma
equipada mais tarde quando definirmos qual arma
o jogador equipou. E vamos salvar tudo. Acho que este
será replicado mais tarde. Agora vamos fazer isso replicado para que os outros possam realmente ver qual arma
você equipou E vamos voltar ao plano
de animação. Acesse o gráfico uniforme aqui. Lembre-se de que já temos a
referência do jogador, então podemos arrastar a partir
daqui e procurar arma
equipada e
obter essa variável. Agora, o que podemos fazer é clicar com o botão
direito do mouse para promover
isso para uma variável chamá-la de
arma equipada também Vá em frente e conecte-o. Vou clicar aqui para
criar um nó de redirecionamento, só para tornar as coisas um
pouco mais organizadas. Tudo bem, agora que temos
isso, vá em frente e compile. Vamos voltar ao gráfico de
animação agora. Agora podemos conectar essa arma
equipada aqui e compilar Agora, para a pose padrão, você precisa ter uma pose padrão. Normalmente, o que eu faço é conectar o movimento desarmado dentro
da pose padrão Para os desarmados, você
precisa conectar a mesma coisa. No entanto, você realmente não pode conectá-lo
duas vezes assim. Você realmente tem que
copiar e colar isso. Agora, para tornar isso mais organizado, eu realmente quero me desconectar E é por
isso que é tão bom fazer as notas de cache, porque você não precisa copiar e
colar tudo isso. O que podemos fazer é simplesmente colocá-lo aqui. E então eu vou renomear esse Unarmed Movement Vou chamá-la de Máquina Estatal
Desarmada. Cache de máquina de estado desarmado. Lembre-se de que essa era
chamada de máquina de estado, máquina de estado
desarmada em cache Eles estão conectados
aqui corretamente. Para este, na verdade
, vou arrastar e dizer
cache e nova pose de salvamento
do cache. Para este, vou chamá-lo desarmado, porque agora esse
é o movimento desarmado que também inclui os desvios de
mira Agora podemos
pegar este aqui e usá-lo
aqui se você
pesquisar o movimento do braço,
não o movimento desarmado da máquina estatal armazenado em cache E agora você pode ver como
é fácil e organizado. Na verdade, não
precisamos copiar tudo isso e conectá-lo aqui
repetidamente. Agora podemos simplesmente
copiar e colar isso e usá-lo também como
pose desarmada Agora, para a pistola
e o rifle, precisamos fabricá-los Vamos arrastar isso,
conectá-lo aqui,
ir em frente e
compilá-lo. Então, aqui o que eu posso
fazer agora é clicar
na arma de equipamento. E digamos que no jogo
eu pego um rifle. Então você pode ver que está mudando. No entanto, nós realmente não
conectamos nada. E é isso que
esta nota está dizendo. Está dizendo que a pose da pistola
e do rifle foi ignorada porque não temos
nada conectado aqui Mas, como você pode ver
, está realmente funcionando. E se você voltar
para desarmado, ele volta para o movimento
desarmado Então, agora o que nos
falta é que estamos perdendo a pistola e as máquinas de
estado do rifle Então, vamos realmente passar para
a próxima lição e fazer os planos de animação da
pistola
83. 7.07 Modelo de animação de pistola: Olá e bem-vindo de volta. Agora estamos prontos para fazer a máquina de estado
da pistola. Então agora temos os desarmados. Vou copiar isso. Vá em frente, clique em Copiar e controle C e controle V
novamente. E agora temos isso. Vou pressionar F dois para
renomear isso e vou
chamar esse movimento de pistola Agora vou entrar
nessa máquina de estado e lembrar
de mudar todo o movimento
para o modo inativo. Vamos trocar
isso por este. Se você acabou de pesquisar uma pistola, na verdade não
precisa pesquisar já Coloque-os aqui
embaixo. E temos a pistola acionada. Arraste isso até aqui. Vá em frente e exclua este. E conecte a
direção e a velocidade do movimento. E vá em frente e conecte-o. Volte para a
caminhada, agora a caminhada. Vamos excluí-lo. Vamos
procurar a pistola de caminhada aqui. Apenas certifique-se de arrastar
no espaço de mesclagem correto que
você criou e compilou Agora vamos
voltar e ficar agachados agora. Vá em frente e exclua
esta e, para a
pistola de agachamento , arraste-a e conecte a
direção e a velocidade do movimento Vá em frente e conecte
isso também. Compile, volte agora
que temos tudo isso. Não acho que precisemos mudar nada com as
regras de transição e, na verdade, não precisamos. Tudo está correto agora. Agora, para o salto,
precisamos pressionar aqui. Agora, para começar, vamos procurar o salto. Preciso usar
aquele para a pistola. Esta é uma pistola de arranque. Vá em frente, exclua
este e conecte-o. Vamos para o ar
e este é o salto de uma pistola, apague esta
, conecte a A última é a pistola jump end e jump end, esta aqui e
conecte-a também Agora, lembre-se de alterar
a regra de transição para esta, porque ela ainda
diz que comece desarmado Precisamos pesquisar a relação de tempo e selecionar aquela
para a pistola E ele sabe automaticamente que é a pistola porque
bloqueamos a animação na outra.
Nós o corrigimos. Então vá em frente e selecione
esta, proporção e pistola. E vá em frente e exclua este e conecte este em vez disso. Lembre-se de que também
o temos aqui embaixo. Clique duas vezes neste novamente, pesquise a
relação de tempo restante para a pistola de salto Exclua este
e adicione este. Agora, compile, salve tudo. Deixe-nos aqui, basta
verificar se há algo que
perdemos. Acho que não temos mais
nada aqui. Agora temos o
movimento da pistola e podemos arrastar
a partir daqui
e dizer cache novamente. Podemos chamar isso de
Pistol State Machine hash, sem mais nem menos E agora temos o movimento da
pistola.
84. Blueprint de animação de rifle:: Certo. Então, a última coisa que falta é o movimento do rifle Então, vamos copiar
a pistola, Ted aqui. E vamos renomear isso
para Rifle Movements. Deixe-me entrar aqui novamente. Em vez disso, clique duas vezes na marcha lenta
desta pistola de uma corrida. Deixe-me deletar tudo isso. Desça, na verdade,
vou procurar um rifle que será muito
mais fácil descer até aqui Só vemos o
rifle misturando espaços. Este é o rifle Un. Vá em frente e conecte
a direção
e a velocidade do movimento e
conecte-a também. Vamos voltar para a caminhada. E deixe-me deletar esse. Conecte o
espaço de mistura para a caminhada, para o rifle. Tranque-os. Exatamente desse jeito. A mesma
coisa para o agachamento Vá em frente e pegue
o agachado. Tranque-os novamente, desse jeito. A mesma coisa para
o salto. Comece, vou procurar por Jump e encontrar aquele para o rifle Fuzil Jump Start, esse. Exclua o antigo.
Coloque este novo. Agora, a mesma coisa para o salto. A, selecione o salto, um rifle. Conecte isso. A mesma coisa para a ponta do salto. Pegue o rifle jump end e exclua
este. Conecte isso. Lembre-se de alterar novamente a regra de transição
aqui para a proporção
do tempo de
partida restante do rifle de partida Vá em frente e exclua o antigo. Selecione este e o mesmo para
este. Regra de
transição de ponta de salto, proporção de
tempo restante para o rifle de ponta de salto Exclua o antigo.
Em vez disso, coloque este. Vá em frente e compile,
salve tudo. E acho que terminamos
com este também. Só verificando rapidamente,
acho que está tudo bem. Vamos voltar ao gráfico de
animação. E dentro daqui, vamos
atacar e dizer cache novamente. E renomeie este para
Rifle State Machine. Ok, você pode organizar isso
um pouco mais se quiser, mas por enquanto
está tudo acabado. Vamos em frente e
salvemos tudo. Lembre-se também de compilar
e seguir em frente.
85. 7.09 Finalizando o Blueprint de animação: Ok, agora é hora
de terminar isso. Não temos mais muita coisa, então vamos continuar e
terminar tudo isso. O que precisamos
fazer agora é adicionar também as compensações de mira Vamos começar com a pistola 1. Eu só vou
arrastar isso para longe. Pegue a pistola aqui. Agora precisamos usar
essa pose de cache. Vamos clicar com o botão direito do mouse e
pesquisar o cache da pistola. Pegue este, com a pistola
de estado em cache e use isso. Agora precisamos fazer
a mesma coisa aqui. Precisamos clicar com o botão direito do mouse
e pesquisar por AO Rauch. Procure aquela
com a pistola
Am offset player crouch pistol Am offset player crouch Vá em frente e conecte-o aqui também para ver a
direção da mira. Eu posso simplesmente copiar e colar essa
variável. Agora isso está correto. Vou usar para eles uma pistola
offset. Pegue aquele com o reprodutor de offset
Am. Conecte na direção da mira, vá em frente e faça
a mesma pose em cache e conecte-a aqui também Agora você tem uma para
o agachamento e outra para a pistola vertical,
assim Use essa mistura de
poses de Bool. Na verdade, vou
copiar tudo isso. Nós realmente não precisamos
escrevê-lo de novo e de novo. Então vá em frente e pegue isso. Vamos configurar este para agachado, que na verdade ainda está correto Vamos apenas conectar o verdadeiro. Se estivermos agachados,
vamos usar este. Se não estivermos agachados,
vamos usar este. Vá em frente e compile. E agora vou organizar
isso um pouco mais tarde. No momento, eu só
quero conectar isso porque esses ficarão um pouco maiores, assim
como este aqui. O que vou
fazer é pegar isso e salvar
uma nova pose em cache, assim como antes você a
chamava de unun movement Esse eu vou chamar movimento de
pistola, sem mais nem menos E vá em frente e
conecte-os aqui. Agora vou organizar
isso como antes. Ok. Então, agora está organizado. Eu apenas tentei
organizar tudo. E agora temos o
rifle aqui. Podemos simplesmente
movê-lo para baixo por enquanto. Na verdade, vou
mover o movimento desarmado acima da pistola, um desses Tente ser o mais organizado
possível , porque quando você está
criando um jogo grande, vai ficar muito confuso porque você terá
muitas coisas acontecendo E é sempre
bom tentar se manter
organizado para a última vez aqui, com a pistola
ou o rifle Vamos novamente, assim como antes, clicar com o botão direito do mouse e procurar por AO Rauch e escolher aquele para
o E, novamente, levante-se e escolha
aquele para o rifle novamente. Agora podemos seguir em frente e pegar
o rifle da máquina de estado, máquina de
estado em cache,
conectá-lo aqui, pegar a direção e
conectá-lo Agora podemos colar isso
aqui também. Conecte-o a essas entradas. Agora está tudo bem. Novamente, assim como antes,
vou copiar tudo isso. A mistura que intimida
aqueles que estão aqui também. Vá em frente e cole. Conecte o agachamento. Se
você estiver agachado,
você Se você não está agachado, está fazendo isso, está E podemos arrastar a partir daqui
e dizer Cache novamente. Podemos salvar uma nova pose de
cache e chamar esse movimento de rifle de
Cached assim Ok, tudo parece
correto. E vamos compilar E vou
organizar isso de novo assim como antes.
Agora está organizado. E eu vou pegar
tudo isso e
colocá-lo logo abaixo do da
pistola, assim como aqui Está bem? Tente fazer isso da melhor maneira possível.
Agora nós o temos aqui. Temos aquele para os desarmados, temos o da pistola e também o do
rifle O que podemos fazer agora é
compilar e salvar tudo apenas para garantir nada falhe com a pistola Agora podemos arrastar e dizer que
podemos usar o agora, este
está apenas usando o
movimento, porque
a partir do movimento determinamos se
devemos usar o
agachamento ou o suporte A partir disso, pesquise o cache e lembre-se de selecionar o movimento da
pistola em cache, não o
movimento da máquina de estado Então, para o rifle, podemos arrastar e procurar o cache novamente. E escolha o único movimento do
rifle armazenado em cache. Vá em frente e organize
isso da melhor maneira possível. Eu também vou
arrastar isso um pouco para baixo. Parece um pouco melhor, talvez algo assim. E agora vamos compilar. E agora você pode ver que a nota
sumiu porque
conectamos tudo E se eu clicar na arma
equipada e trocá-la por pistola,
ela está funcionando Se eu mudar para
rifle, está funcionando. Se eu mudar de volta para desarmado,
ele também está funcionando. Agora, você também pode alterar o tempo de
mistura, se desejar. Então, podemos ver se
você aumenta todos e tenta alterá-los Agora, o que você pode fazer é mudar para a pistola e
o rifle, você pode ver que isso
muda instantaneamente O que você pode fazer, você
também pode aumentar esse tempo. Por exemplo, posso
aumentá-lo para dois. Na verdade, ele
se misturará muito mais lentamente. Lembro-me de compilar,
caso contrário, não funcionará. Compile e depois
mude para pistola. Agora você pode ver
que leva muito
tempo antes de mudar
para essas poses. Você pode tentar jogar com isso. Por exemplo, 0,0 0,3
talvez dois ao extremo. Vamos compilar e selecionar o
rifle de pistola. Talvez isso seja muito melhor. Acho que ainda está muito lento. 0,20 0,20 0,2 Vamos compilar. Vamos selecionar a pistola de rifle
desarmada. Basta compilar, certificando-se de
que está funcionando corretamente. Eu acho que é muito melhor. 0,2 em vez de 0,1
é muito melhor. Agora você pode ver que
terminamos o movimento, e talvez possamos colocar
este aqui no meio. Esse é o último. E agora tudo está funcionando. Portanto, sempre podemos trocar
essa arma equipada posteriormente em nossa base de jogadores,
quando estivermos saqueando armas E automaticamente, no gráfico de eventos, definirá essa variável aqui e ela mudará
no gráfico de animação. Mas, por enquanto, para a arma
equipada, vou
colocá-la como padrão,
compilar tudo, salvar tudo e agora estamos prontos para seguir em frente
86. 8.01 Importando a arma Assets: Vamos agora
importar os ativos de armas. Para isso, volte para o lançador da
Epic Games. E dentro daqui,
vamos ao mercado. No mercado,
vamos acessar Browse e acessar Weapons In Weapons, você precisa clicar nos
gratuitos para que possamos obter alguns ativos gratuitos que possamos
usar no curso. Eu baixei este
chamado FPS Weapon Bundle. Se você clicar nele, vá em frente
e clique em Download. Se você ainda não
o baixou, clique em Adicionar ao projeto. Depois de fazer o download novamente, clique em Mostrar todos os projetos e selecione nosso próprio
projeto, Counterstrike E vá em frente e selecione
a versão
compatível com a versão
mais recente, esta. Realmente não importa que
seja compatível com essa versão, isso não nos
causará problemas. Vá em frente, selecione-o
e vá para Adicionar ao projeto. Isso vai adicionar
isso a um projeto. E isso pode levar algum tempo. Se esta é a primeira
vez que você está fazendo isso, eu vou voltar aqui. Vou baixar
este também porque este pacote aqui não
contém nenhuma pistola E eu quero fazer
uma pistola também, é claro. Então você sabe
atirar com pistolas e assim por diante Portanto, não são só rifles.
Vamos clicar nesse. E vamos
baixar este novamente. Armas militares Doc. Vá
em frente e faça o download. Você também pode usar esta, prata
militar em vez disso, mas eu vou
usar esta. Faça o download
e adicione ao projeto novamente, clique em Mostrar todos os projetos, selecione nosso projeto e
selecione a versão mais recente. E adicionar ao projeto também. Então você pode ver que, quando isso terminar e
eu puder fechá-lo, você pode ver dentro do
nosso projeto que agora temos o pacote de armas FPS e também o documento de armas
militares E antes de fazer qualquer coisa, vou selecionar
os dois e
depois arrastá-los para a pasta
Marketplace. E selecione Mover aqui. E este vai
levar algum tempo, então vou pular até
terminar. Tudo bem. Agora eles foram movidos
e, como você pode ver, na pasta
Marketplace, agora
tenho o dock de armas
militares e o
pacote de armas FPS Mas como você pode ver lá fora, eu ainda tenho essa pasta de pacotes de
armas FPS E isso pode
acontecer com você também. Você pode ver que eles estão vazios
e se eu clicar em excluir no meu teclado e selecionar
Excluir, ele não será excluído. E isso acontece às vezes
em um motor real. Então, o que eu faço é geralmente salvar o projeto e
fechá-lo. Então eu abro o arquivo do projeto, então está dentro daqui,
o contra-ataque. E então eu abro a pasta de
conteúdo e excluo esse pacote FPS Portanto, certifique-se de
que
todos
os arquivos já estejam dentro do mercado. Então você pode ver aqui,
o pacote FPS está vazio e
não há nada dentro dele Não sei por que não está sendo
excluído por algum motivo. Então, vamos
excluir essa pasta. E então eu posso ir em frente
na biblioteca e executar
meu projeto novamente. E ela deve ser excluída
agora, como você pode ver aqui, quando eu estiver dentro do
meu projeto novamente, a pasta desaparecerá porque
acabamos de excluí-la. E na
pasta Marketplace, temos o pacote de armas FPS e
o documento de armas militares
87. 8.02 Configurando a arma: Agora que importamos
as armas, vamos configurá-las. Vamos clicar com o botão direito aqui
na pasta Blueprint. E vamos criar uma nova pasta, e vamos chamar essa de armas. Vamos clicar com o botão direito do mouse nessa e definir uma nova cor para essa pasta. Novamente, vamos
abrir essa pasta, botão
direito do mouse e ir para a classe
Blueprint Para este,
vamos apenas criar um ato simples. Porque uma arma é apenas um Ta estático que
existe no mundo. Não é um peão ou um personagem
que você possa controlar. E também não é um
desses, é só um ator. Vamos chamar isso de Base de
Armas BP . Novamente,
vou criar uma classe Base. E a partir dessa, podemos escrever, clicar e selecionar Create
Child Blueprint Class Para este,
vamos fazer um AK 47, então podemos chamá-lo de PK 47 Em seguida, você pode
clicar com o botão direito do mouse novamente e criar uma
classe secundária de blueprint para esta Vamos chamá-lo de BP M41. Aí está a outra arma. O último é uma pistola. Podemos clicar com o botão direito do mouse em Criar classe de planta
infantil
e chamá-la de pistola BP. Vamos salvar
tudo. Primeiro, vamos abrir a base de armas
porque primeiro temos que
trabalhar aqui. Aqui precisamos de um novo componente. O componente que precisamos é uma malha estática
ou uma malha esquelética, porque precisamos adicionar os
três modelos D para a arma Agora, se você clicar aqui
e pesquisar por malha, teremos a malha esquelética e a
malha estática Se você não sabe, a diferença
é que a malha estática é apenas um modelo estático de três D
sem animações E temos uma
malha esquelética que é um modelo em três D com animações Se você voltar, na verdade,
temos que
conferir aqui as armas do
mercado, como elas vêm se você
abrisse o pacote de armas do FPS, abrisse as armas
e abrisse as malhas E vamos abrir
esse K para sete. E você pode ver que
é uma malha esquelética. Se você vê essa linha rosa ou também
pode olhar aqui embaixo, diz
malha esquelética Na verdade, temos que
adicioná-lo como uma malha esquelética. Também podemos verificar a outra
pasta apenas para garantir que o documento de armas militares abra armas e que elas também venham como malhas
esqueléticas Você pode ver aqui que eles
têm animações. Eles têm animações de recarga, animações filmagem e assim por diante Essas armas têm animações. Se voltarmos para a
base de armas daqui, vamos clicar em Anúncio e
procurar a malha esquelética E selecione-o aqui. E
vamos chamar isso de arma. Agora, para esta arma aqui, também
precisamos de uma esfera de colisão Porque precisamos
interagir com a arma. Por exemplo,
se estiver no chão, precisamos pegar aquela
arma e saqueá-la É por isso que precisamos de
uma esfera de colisão para que possamos colidir com
ela e realizar algumas ações Se você apenas pesquisar
por colisão, podemos ver que podemos
fazer uma colisão de caixa, colisão cápsula ou colisão
de Agora eles são iguais, é só a forma
que é diferente. Então, vou selecionar uma colisão esférica para esta E vou aumentar o raio
dessa esfera um pouco maior. Agora, isso não
importa agora, porque vamos
ajustá-lo mais tarde. Quando testamos as armas
dentro do nível
, podemos calcular o raio de
distância em que o jogador pode
saquear a arma e assim por diante É assim que você controla isso aqui. Mas, por enquanto,
vou colocá-lo um número aleatório
e salvar tudo. Agora vamos fechar a base de armas e ver as plantas da criança Se você abrir armas. E vamos abrir
o AK 47 aqui. Agora, para a arma,
se você clicar nela, vamos selecionar a malha esquelética Se você apenas
pesquisar, não sei por que se chama KA 47, mas você pode
pesquisar e encontrar e selecionar este. E vamos abrir
o segundo. E você pode clicar na arma, abrir esta aqui
e pesquisar por R quatro. Você pode selecioná-la aqui, depois abrir a
última, a pistola, clicar na arma
e depois selecionar ou simplesmente pesquisar a pistola
e selecionar esta aqui Agora você pode ver que todas
as armas estão agora
dentro daqui. Vá em frente e compile
todas as plantas. Mas, como você pode ver aqui, todos
eles estão virando dessa maneira. Na verdade, essa é a direção
errada, porque no Unreal Engine, o eixo X é o eixo dianteiro E você pode ver aqui,
o ponto de articulação vermelho aqui é o eixo dianteiro As armas precisam
girar dessa maneira. Aqui estão todos
virando para o lado errado. Como você pode ver, temos que
virar todos eles em vez de apenas
girá-los um por um desta forma. E temos que ir aqui
e transformá-lo também. Na verdade, vamos fazer outra
coisa. Lembre-se de que temos uma base de armas que é a classe principal do
projeto Tudo o que você fizer aqui dentro se
aplicará
a todas as crianças. Se você clicar na
arma e pegar a ferramenta de rotação e
girá-la em -90 graus, vá em frente e
compile Agora dê uma olhada
na pistola M four, a AK. Eles estão todos virando da maneira correta, agora essa é a
maneira correta que eles deveriam virar. Vá em frente e salve tudo. Eu acredito que foi
isso para tudo. Agora que temos isso,
vamos arrastá-los para o nível e dar uma
olhada em sua aparência. Eu só vou
separá-los um pouco. Vou selecionar
todos eles e depois movê-los para
cá no nível. Novamente, você pode clicar em G
para ocultar todos os ícones, dar uma olhada neles e tudo ficará bem. Por enquanto, vá em frente e salve tudo,
e vamos seguir em frente.
88. 8.03 Habilitando a física: Como você pode ver aqui,
quando eu clico em jogar, todas as armas estão flutuando. Se eu for, na verdade, eles estão do
lado terrorista. Se eu clicar em jogar e
selecionar terroristas, podemos ver que todas as
armas estão flutuando Queremos que eles
caiam no chão. Em vez de
fazê-los flutuar assim. Precisamos habilitar a física. Se voltarmos ao plano
e antes de eu fazer isso, na verdade
vou reduzir
a quantidade de jogadores que eu espio no servidor de aulas Ok, vamos até as armas, abra a
base de armas. Dentro daqui você clica na arma. Você
pode ver algo chamado Simular Física aqui em Física Simular
Física No entanto, por algum motivo, não consigo selecionar e não tenho ideia do porquê. Mas o que você pode fazer é simplesmente
excluir esses eventos por enquanto. No Begin Play,
vamos fazer isso aqui. Vamos pegar a arma.
Vamos arrastar a partir daqui. Se você simplesmente escrever
o mesmo nome
que você pode ver aqui,
clique em Arma. É chamado de Física Simulada. Se você arrastar a partir daqui
e apenas escrever Simular, você pode ver que é esse
chamado Set Simulate Se você simplesmente selecioná-lo
aqui, conectá-lo e configurá-lo como verdadeiro para que ele simule a física e
vá em frente e compile Agora, ele ainda não funcionará
porque a colisão Se você clicar na arma e
descer até a colisão, verá que não há colisão Se você clicar em jogar
agora e selecionar o terrorista, verá que ele ainda não está
caindo. Eles ainda estão voando no ar. Vamos fechá-lo e,
para a colisão, vamos alterá-lo para personalizado Por enquanto,
vou clicar em Ignorar a colisão para ignorar
tudo por enquanto Estou indo aqui para
não colidir. Vá em frente e selecione somente
física. Só queremos física. O que significa consulta. Isso significa que se podemos interagir
com a arma ou não. Na verdade, não
precisamos disso porque nossa esfera de colisão é,
na verdade, apenas uma consulta É como se estivéssemos
colidindo aqui. Estamos fazendo alguma ação
com essa esfera de colisão. É uma colisão e você pode interagir com
ela sem ter física Mas para a arma, eu
não quero isso porque
já temos a
esfera de colisão para esta, só queremos que a
física seja ativada Então eu vou
ignorar tudo. No entanto, você precisa bloquear a estática mundial
e a dinâmica mundial porque agora é o chão. Se você ignorar tudo,
você pode ver se eu clicar em jogar agora e
selecionar o terrorista, as armas sumiram. Isso ocorre porque você não bloqueou o chão. Eles estão
caindo pelo chão. Temos que bloquear o chão, o mundo estático e dinâmico. Vá em frente e compile e clique em jogar e
selecione terroristas Novamente, na verdade,
vou pegar todos e colocá-los
aqui, em vez disso. Basta colocá-los no meio
para que eu possa realmente
vê-los mais rápido. Se eu clicar em
jogar, vou até terrorista, você pode ver que
agora eles estão sendo bloqueados
pelo chão e estão
caindo no chão, ok. Agora você também pode ver se eu
entro neles como
terrorista ou como peão, nada está realmente
acontecendo e isso é porque eu não estou
colidindo com Agora, se você quiser que
o peão colida com eles, eu não vou fazer isso
dentro deste projeto No entanto, se você quiser isso,
você também pode selecionar o lago que você está controlando também os
bloqueará. E isso significa que agora você pode interagir com eles
como peões para que
possamos entrar neles e a
colisão também funcione Você
também pode fazer isso se quiser. No entanto, para este projeto, eu realmente não vou fazer isso, vou ignorar
isso por enquanto. Então, agora temos a física ativada e estamos simulando a física
para todas as armas Então, vamos compilar
e salvar tudo
e seguir em frente
89. 8.04 Atores replicantes: Anteriormente,
replicávamos variáveis, mas você também pode replicar atores do
blueprint E temos
que fazer isso para que eles apareçam corretamente para
todos os clientes. Se você abrir a base de armas e aqui nos padrões da classe, verá que ela
também é chamada E você precisa selecionar
isso se quiser mostrar as informações corretas
do servidor para todos
os clientes que exibem
essas armas, bem
como o movimento das armas e assim
por diante. Então você tem que pressionar as réplicas. Portanto, funciona em multiplicador. Você também precisa replicar
o movimento,
para garantir que o movimento
deles também para garantir que o movimento não esteja incomodando. Essa era a única
coisa que você precisava
fazer às vezes, se
você esquecer isso, às vezes você faz algum código e vê que não está funcionando para os clientes e
fica confuso por que está. Então, mas é porque você também precisa usar um ator
que você cria,
por exemplo, essa
é a base de armas. E você precisa selecionar réplicas, bem como
replicar Funciona para multijogador. Vá em frente e salve tudo. Como você pode ver, como é
o modelo principal, agora
ele também se replica para
todos os filhos Vá em frente e salve tudo,
e vamos seguir em frente.
90. Sobreposição de arma 8.05: Agora estamos prontos
para realizar alguns eventos para quando nos sobrepormos
à arma Para ver melhor, você pode abrir a base de armas por enquanto, se clicar na esfera, poderá clicar neste jogo
oculto Você pode removê-lo. E se você compilar, poderá ver a
esfera de colisão no jogo É bom ver aqui. Você pode ver a que distância você pode interagir
com a arma. Você sempre pode aumentá-lo ou diminuí-lo, dependendo do
jogo que você está criando. Mas é sempre bom
ver o interior daqui. Vamos fazer alguns eventos de
interação. O que queremos fazer aqui
na base de armas clicar na colisão
da esfera na parte inferior.
Se você acessar
aqui no painel de detalhes, poderá ver este chamado
Component Begin Overlap Se você clicar no sinal de adição, ele criará o evento para você. Agora diz o que deve acontecer sempre que você se sobrepõe a
essa colisão esférica Para este, primeiro
preciso verificar
se é o jogador que
está colidindo com ele Porque se você tiver
inimigos correndo por aí ou alguma
outra coisa colidindo com eles, ele realmente disparará esse código Quero ter certeza de que somente o jogador pode
interagir com ele. O outro ator
é o ator que está interagindo com
essa esfera de colisão. Posso dirigir a partir desse
outro ator e dizer que ator tem tag e, em seguida, posso
selecionar essa função aqui. E o que essa função
está dizendo é que se o ator que está
interagindo com essa colisão de esfera
tem essa etiqueta específica, eu posso ir em frente e
disparar o código Eu posso fazer um galho aqui. Se isso for verdade, o jogador tem essa tag que
estamos prestes a escrever. Os eventos podem disparar aqui a tag que
precisamos escrever aqui. Temos que atribuir uma
etiqueta para o jogador. Se você abrir
o player novamente, base de
jogadores aqui, dentro
daqui na classe, é padrão Se você pesquisar por tag
no painel de detalhes, poderá ver
essa em ator. Não está sob etiquetas. Você tem que se certificar de
que está abaixo do ator. E você pode ver as etiquetas. É chamado actor has tag. Precisa estar sob o comando do ator. Se você clicar na cláusula, eu posso chamar
isso de um jogador Agora adicionamos uma tag aqui
para essa cláusula do blueprint. Adicionamos o reprodutor de tags. O que podemos fazer é ir até
a base de armas e perguntar: esse ator tem
o tag player? Se isso for verdade, podemos
disparar essas funções. Agora, isso só é verdade para os
jogadores da base de jogadores. Eles têm o tag player. E isso se aplicará
tanto ao terrorista quanto ao
contraterrorista, porque, novamente, essa é a cláusula
principal Vamos abrir aqui. Agora,
para colisões aqui, para a sobreposição de componentes, você sempre precisa se
certificar de
executá-lo no servidor
para evitar A partir daqui, arraste e diga que o
switch tem autoridade e, em seguida, podemos escrever o código
dessa autoridade aqui, que é o servidor sempre garantir que você execute esse
código no servidor. Porque se você não fizer isso, digamos que o cliente esteja aqui e
esteja trapaceando de alguma forma, tenha baixado algum
software e possa realmente interagir com
a arma, possa realmente interagir com mesmo
estando aqui,
executando-a no servidor O servidor verifica se o jogador está realmente
interagindo com ele ou não Ok, desse outro ator, o que
podemos fazer é arrastar também. Agora sabemos que é o jogador e agora o executamos
no servidor. Podemos arrastar a partir daqui e
dizer obter referência do jogador porque lembre-se de que é o jogador que está interagindo com ele E também fizemos com que isso
pegasse o player F da interface. Anteriormente, temos a referência dos
jogadores, para que possamos prosseguir
e conectá-la. Clique duas vezes aqui para fazer anotações de redirecionamento
e torná-las Assim mesmo, Deus e compile. E agora podemos realmente
interagir com ele. Agora, para ver se isso está correto, você pode arrastar a partir daqui
e escrever uma string de impressão. Talvez você possa
conectar esse player a ele. Vá em frente e veja se isso acontece. Se você clicar em jogar e realmente
selecionar o terrorista
, não estaremos do
outro lado do mapa. Agora, se eu for até aqui
e interagir com ele, você verá que
diz aqui, terrorista da BP Agora está realmente correto, estamos interagindo com ele Tudo está funcionando, então vá em frente e exclua isso por enquanto, compile e vamos seguir em frente
91. 8.06 Definindo o tipo de arma: Porém, antes de continuarmos, preciso adicionar o
tipo de arma a cada arma. E é bom usar isso
mais tarde, porque é sempre bom saber se
a arma que você está saqueando é um rifle ou uma Precisamos disso mais tarde
para o inventário, para não saquearmos
vários rifles,
várias pistolas e É claro que você pode fazer isso em seu próprio jogo, mas
também verificar,
por exemplo, se você não pode saquear três rifles e
coisas assim Então você tem que saber
se é um rifle
ou uma pistola que você está saqueando, porque no momento não temos
ideia do que estamos saqueando,
estamos apenas
interagindo estamos apenas
interagindo O que podemos fazer está aqui
na base de armas. Na verdade, antes de
fazermos isso,
vamos às enumerações E já temos esse
chamado tipo de arma, na verdade já
temos esse. Vamos voltar à
base de armas e adicioná-la aqui. Clique no sinal de mais
nas variáveis e escreva o tipo de arma aqui. Para o tipo de variável que você
pode pesquisar pelo tipo de arma, esta é nossa enumeração Saia e selecione-o, clique compile
e salve tudo Agora, o legal disso
é que você
o adicionou à base de armas, que é a classe principal
desses projetos de armas Muito bom é que, se você
abrir o AK 47 agora e clicar nos padrões
da classe, agora
poderá ver o tipo de arma
variável e selecionar qual
tipo de arma é essa Se você adicionar variáveis
à classe principal, elas poderão ser usadas nas classes
secundárias Agora você pode ver se eu
abro a 44 ou a pistola, clico nos padrões da classe, posso ver as variáveis
da Tudo o que você adicionar aqui também pode ser aplicado
a todas as crianças. Agora, clicando no AK, posso selecionar o tipo de
arma para ser um rifle Eu posso compilar agora. Também
posso ir até os quatro selecionar o tipo de arma
para ser um rifle Se eu abrir a pistola, vou para os
padrões da classe e
clico aqui e seleciono a pistola
para Vá em frente e compile
todos esses projetos. E agora podemos salvá-los. Sim, agora sabemos qual
é o tipo de arma para todos eles. Isso é uma pistola,
isso é um rifle. E isso também é um rifle. E precisamos fazer isso para
sabermos o que estamos saqueando.
92. 8.07 Verificando se o jogador tem a arma: Vamos agora criar
um inventário de armas para o jogador e verificar se o jogador já
tem a arma. Porque o que eu estou tentando fazer é se o jogador interage
com a arma, ele precisa verificar se o jogador já tem a arma ou não Se o jogador já tiver
a arma, não poderá saqueá-la Só vai saquear o rifle se eles ainda não
tiverem um rifle E eles vão
saquear a pistola se ainda não
tiverem uma
pistola Vamos continuar
na base de jogadores e, dentro daqui,
vamos clicar no sinal de mais. Vou criar uma nova variável
chamada Inventário de Armas. Aqui, apenas procuramos o tipo de arma ou
a base de armas, porque precisamos adicionar as
armas a esse inventário, elas precisam ser do
tipo de base de armas. E vá em frente e selecione
a referência do objeto. Agora, como agora é
um inventário, deixe-me
clicar no X aqui. Como é um inventário, precisamos alterá-lo de uma
única variável para uma matriz. Lembre-se de que uma matriz é como uma caixa onde você adiciona coisas a ela. Temos que adicionar as diferentes armas que você saqueou. Você pode ver se eu
clico no sinal de mais. Agora, aqui eu não posso selecionar
porque é a classe principal. E não podemos
simplesmente adicionar coisas aqui automaticamente. Mas você pode ver que pode adicionar o rifle e a pistola durante
o Você pode adicionar várias armas
dentro desse inventário. Mas, para nós, queremos adicionar, por exemplo, um
rifle e uma pistola E você pode ter uma espingarda
e assim por diante para o seu jogo. Mas, por enquanto, só temos
o rifle e a pistola. Vá em frente e
exclua-o por enquanto. Isso foi só por exemplo. Vamos voltar para
a base de jogadores. Agora, da base de jogadores, como já
temos a referência, podemos arrastar a partir daqui e pesquisar inventário de
armas e
obter essa matriz. Agora, para essa matriz,
queremos percorrer todo esse
inventário e verificar se o jogador tem um rifle
que podemos arrastar daqui e dizer para cada laço com freio. E você pode
ir em frente e selecionar isso. Agora você pode ver as
armas através desse giro, se você segurar o mouse sobre elas. Agora é um elemento único. É a base de armas da BP. Vai pegar
cada arma daqui e
percorrer o código, percorrer essa matriz, e você poderá fazer
algo com ela. Agora, o que estamos tentando fazer
é verificar se o jogador já tem essa arma com a qual está
tentando interagir. O que precisamos fazer é pegar cada uma das armas
do inventário que precisamos arrastar daqui e verificar
o tipo de arma. Lembre-se, você acabou de
criar esse tipo de arma, então você pode chamá-lo aqui. Agora está
percorrendo cada um deles. Você está pegando o tipo de arma, você está apenas perguntando aqui, arrastando e dizendo o mesmo, se esse tipo de arma dentro
do seu inventário é igual ao tipo de arma
que você está tentando saquear E podemos fazer um galho, se estiver correto, então você não pode saquear a arma Temos que fazer isso mais tarde para que
você não possa saquear a arma. No entanto, se for falso, podemos realmente saqueá-lo É assim que você faz. Agora
precisamos replicar essa porque
o cliente também precisa ver essa informação, que tipo de arma você tem Vou selecionar
replicá-lo. Vá em frente, compile
e salve tudo. Agora você pode ver aqui que estamos
fazendo o inventário de armas. Estamos tentando verificar se o jogador já tem a
arma. Estamos pegando o tipo de arma com a arma dentro
do inventário. E estamos verificando se
esse tipo de arma é igual ao que
estamos tentando saquear Se isso estiver correto, não
podemos saquear a arma porque já a temos
no inventário Se for falso,
podemos saquear a arma. Ok, este com intervalo,
podemos usá-lo mais tarde. Eu posso explicar o que isso
significa, mas por agora
podemos salvar tudo e passar
para a próxima lição.
93. 8.08 Saqueando a arma: Agora vamos seguir em frente e
possibilitar que o jogador saqueie
a arma Então, agora verificamos se a
arma está no inventário. Se isso for verdade,
vamos primeiro entrar
na base de jogadores e
fazer um novo lingote, que vou
chamar de arma de saque Eu vou
transformá-lo em um lingote. Vamos alterá-la para
uma única variável em vez de uma matriz.
Vamos compilar Agora, isso será verdade se o jogador
conseguir saquear a arma E será falso
se o jogador não conseguir. O que vou fazer é colocá-lo como padrão. Assim, o jogador pode saquear
a arma por padrão, a menos que encontremos aqui
no inventário que o jogador já tem
uma arma por padrão Vá em frente e defina como verdadeiro. Vamos salvar tudo e
vamos para a base de armas agora. Agora, o que podemos fazer é nos
afastar desse jogador novamente e procurar por esse
lote de barras de armas Vamos configurá-lo aqui. Se encontrarmos essa arma que estamos
tentando saquear, se a encontrarmos no inventário, vamos configurá-la como defeituosa É verdade por padrão, mas vamos definir como erro que o jogador
não possa saquear a arma se realmente a encontrarmos
no inventário Esse loop aqui não
o encontra no inventário
do jogador, mas sim em
todos os itens que ele está
pesquisando. No final, quando o
loop estiver concluído, esse ainda é verdadeiro. Se não encontramos nenhuma
arma, ainda é verdade. Então, podemos ir em frente e saquear a arma que podemos
arrastar desta Agora, novamente, e eu posso procurar uma arma
para saquear. Dependendo se isso
é verdadeiro ou falso, podemos fazer alguma ação
aqui quando ela for concluída. Primeiro, ele simplesmente
percorrerá os itens. E depois disso,
vamos verificar se essa arma
pode saquear
agora é falsa ou verdadeira Agora vou organizar
isso um pouco. Vou adicionar um nó de rocha traseiro
aqui e conectá-lo aqui. Em vez disso, se isso for verdade, se o jogador puder
realmente saquear a arma, vamos em frente na
base de jogadores e vamos até aqui Vou escrever, clicar e
criar um novo evento personalizado. Vamos chamar isso de
arma única novamente. Vou apenas
executá-lo por meio do servidor. Apenas certifique-se de que agora ele já
esteja sendo executado
no servidor. Porque você lembra que está administrando isso por meio
da autoridade. Ele já está sendo executado
no servidor. No entanto, eu gostaria de fazer isso dessa maneira para me manter consistente. Você pode simplesmente escrever um para este
servidor imediatamente. Você não precisa fazer
isso porque
já estamos acessando
o servidor para você. Você pode simplesmente usar
este se quiser, mas eu só gosto de permanecer
consistente com meu código. Vou executá-lo
por meio do servidor aqui. Novamente, vou arrastar a partir
deste e executá-lo no servidor desta forma. Então eu vou escrever
meu código aqui. Agora, novamente, você pode simplesmente escrever um código aqui se quiser, mas no futuro, se você
não o estiver executando no servidor, precisará executá-lo aqui. Agora temos isso escrito. Agora, o que queremos fazer
quando saqueamos a arma, queremos apenas adicionar essa
arma saqueada ao inventário Estamos fazendo esse inventário de
armas e dizendo
definir elemento de matriz. Como queremos
adicioná-lo ao inventário, ele pergunta: a qual índice
você deseja adicioná-lo? Eu só quero adicioná-lo a
qualquer índice disponível. Então, vou direcionar a
partir daqui e dizer comprimento, depois vou adicioná-lo aqui. Agora, lembre-se de que as matrizes começam
do índice zero e depois
vão para 123 e assim por diante Se você arrastar daqui e disser, último índice agora, o último índice será três, ou essa matriz aqui. Se você estiver pegando esse último índice e conectando-o aqui, verdade
você
vai sobrescrever qualquer arma que esteja
no índice Se você quiser usar
o último índice, você tem que pegar o último
índice e dizer mais um. Você está encontrando o último
índice e,
na verdade, está adicionando a nova arma
aqui no índice quatro, que você pode conectar aqui. Agora, um método melhor para fazer isso
é apenas encontrar o comprimento. O comprimento é 1234. Na verdade, ele vai
adicioná-lo ao índice de quatro. Não precisamos fazer isso aqui. É por isso que eu uso comprimento. Vai produzir quatro. E você também pode ver
isso se você apenas escrever uma string de impressão e
conectá-la aqui, sempre bom adicionar strings de
impressão Se você quiser verificar
os valores do que está fazendo, vou
adicioná-los a esse índice. Agora, qual item
queremos adicionar? É a arma que queremos adicionar. Agora, nós realmente não temos
nenhuma referência à arma. Deixe-nos fazer isso. Vamos clicar em
Perder neste evento aqui. E vamos
procurar uma base de armas. E vamos selecioná-la aqui
e chamá-la de arma. Você também pode chamá-la de
arma saqueada, se quiser. E então eu vou
tirá-lo
daqui e conectá-lo
a este evento. E agora podemos usá-lo
aqui na base de armas. Se muitas armas forem verdadeiras, então queremos
pegá-las
da base de jogadores e
procurar muitas armas. É assim que a chamamos. Vá em frente e
selecione-o e
agora você pode conectá-lo aqui novamente Vou clicar para fazer anotações
reescritas para torná-las um pouco mais legíveis Assim mesmo. Agora ele vai te perguntar,
qual é a arma? Qual é a variável para isso? Agora, a forma como você define isso é : lembre-se de que você está dentro
da base de armas se
apenas atacar e escrever a si mesmo, porque
é a arma com a qual você está
interagindo Se você interagir
com este aqui, ele sabe que é o 41 porque é com ele que
você está interagindo E se você escrever self
como referência, ele sabe que essa arma é, na verdade a única
cláusula padrão aqui embaixo. Se a arma for considerada
falsa, ela pode saqueá-la. Então isso significa que você não pode saquear a arma porque
em algum momento ele realmente encontrou a arma
no inventário e você
não pode saquear a Agora, se ele encontrar a arma
no inventário,
digamos, por exemplo, no primeiro índice, ele
realmente encontrou a arma. E não faz sentido
vasculhar todas
as outras armas porque ele já encontrou a arma
e você não pode saqueá-la De qualquer forma, isso é o que isso
é, o que essa pausa significa. Eu quero quebrar o ciclo. Não quero mais
percorrer essa matriz. Quando eu encontro a arma
no inventário posso fazer com que a arma de
saque caia Na verdade, quero arrastar
isso e configurá-lo para quebrar. Posso clicar duas vezes agora e fazer algumas anotações traseiras para facilitar a leitura. O que estou dizendo é que, quando você encontrar essa arma
no inventário, vá em frente e quebre o ciclo. Porque não faz
sentido dar uma olhada em todos
os itens quando eu já
o encontrei e não consigo
saqueá-lo de qualquer maneira Então, ele vai quebrar
e isso pode ser saqueado, a arma está prestes a cair Então você não vai saquear nada porque
não temos nenhum código aqui Mas lembre-se de
que você precisa definir isso como verdadeiro novamente
porque é verdade. Por padrão, tem que ser verdadeiro. Isso funcionará na próxima vez que você
interagir com uma arma. Por padrão, será
falso porque você não se lembrou de
defini-lo como verdadeiro. Por padrão, será falso. E mesmo que você
possa saquear uma arma, mesmo que ela não tenha
encontrado nada, essa será falsa Na próxima vez que você saquear uma arma. Lembre-se de arrastar a partir daí
novamente e procurar novamente se pode pegar uma arma e
configurar e , em seguida, lembre-se de
configurá-la como verdadeira novamente. Por padrão, sempre que
você interagir com uma arma novamente no futuro,
você pode realmente configurá-la, mas você pode realmente
saquear a arma mas você pode realmente
saquear a arma
se não a tiver
no inventário Eu também posso simplesmente
clicar e arrastar isso até aqui. Na verdade, vai
ficar muito melhor. Algo parecido. Então,
agora deve ser verdade, você pode ir em frente e
compilar tudo novamente. Lembre-se de que se você fez isso como eu, vá em frente na
base de jogadores e no inventário, vou deletar todas aquelas aqui que
acabei
de criar para demonstrar que o inventário de armas por padrão,
não deveria ter nada. Vá em frente e salve tudo. E agora, para essa arma aqui, vamos levá-la até aqui e organizá-la um pouco melhor. E agora, o que você pode fazer agora, você pode conectar essa
arma porque a
definimos aqui
como a autorreferência. Agora você pode pegar,
essa arma passará por aqui e será
adicionada ao inventário. Novamente, clique duas vezes para
fazer anotações traseiras da rota. Agora você o está saqueando para
o inventário. E vá em frente e
selecione o tamanho adequado. Ele garantirá que ele seja
adicionado a essa matriz. Vá em frente e compile. E agora ele deve funcionar
corretamente para testá-lo. Para ter certeza, vá em frente e arraste a partir daqui e
escreva uma sequência de caracteres impressa. E você sempre pode
pegar esse, vamos colar aqui. E vamos arrastar e dizer
, pegue uma cópia. E sempre podemos obter o
índice zero porque isso é, lembre-se de que em matrizes ele
começa com o índice zero Estamos obtendo o
índice zero e nos
certificando de que estamos realmente
saqueando a arma Isso. E adicione-o à corda para que ela saiba
o nome da arma. Agora vamos
imprimir o nome da arma na tela
que saqueamos, compilar e
salvar E vamos garantir que
tudo esteja funcionando. Vamos clicar em jogar.
Selecione Terroristas E se eu entrar aqui , vai dizer AK 47,
como você pode ver aqui Agora, o único
realmente não importa, é apenas o número
desse plano Nós podemos pegar esse. Agora você pode ver que não consigo
interagir com ele porque já
tenho um rifle
no meu inventário Agora, se eu jogar
novamente e selecionar o terrorista e
passar pelo 41, ele imprime o 41 na tela aqui em cima. Agora, se eu usar a pistola, porque você pode
ver a K, ela não imprime
nada porque eu
já tenho um rifle
que está funcionando corretamente Agora, se eu usar a
pistola, ela deve imprimi-la. E você pode ver que está imprimindo , mas está imprimindo
o nome errado. E lembre-se de que, para
a sequência de caracteres de impressão, estamos imprimindo apenas
o índice zero, então estamos
imprimindo apenas o 41. voz alta, sempre
podemos configurá-lo para o índice um e ele
imprimirá a pistola Agora, se você quiser
imprimir tudo dentro desse inventário para ver
o que está dentro dele, sempre arraste a partir daqui e
diga que para cada loop, agora você vai percorrer toda
essa matriz e conectar o loop. E então você pode selecionar
cada nome único
do item que
está aqui e imprimi-lo como uma string. Eu posso ir em frente e
pegar o AK, por exemplo. Então você pode ver se ele é
impresso na tela. Eu posso ir até a pistola e
agora ela vai imprimir
tanto a AK quanto a
pistola na Está funcionando como
deveria. Vamos salvar tudo e passar
para a próxima.
94. 8.09 Criando o soquete de arma: Antes de podermos colocar a
arma nas mãos do jogador, precisamos criar um soquete Lembre-se de que criamos
um soquete anteriormente. Quando criamos a câmera do
jogador e colocamos essa câmera
na cabeça do jogador, precisamos adicionar outro
soquete onde
colocamos a arma
na mão do jogador Vamos até a
pasta Marketplace e vamos até o personagem militar Silva para entrar nesse esqueleto aqui Lembre-se de que esta é a câmera, esse é o soquete da
câmera que adicionamos anteriormente Agora, o que precisamos fazer é
adicionar um soquete para a mão do jogador
para
que ele possa segurar a arma na mão, certo? aqui que você geralmente segura uma arma. Tê-lo na sua mão direita. Para a mão, à direita,
posso clicar com o botão direito do mouse e adicionar um soquete aqui Vou clicar
em dois para renomeá-lo. E eu vou chamá-lo de Rifle. Agora vou
adicionar um soquete para um rifle e
um soquete
para rifle e
um soquete
para Agora, eu tentei mais cedo apenas
adicionar um para a arma. Arma e eu poderia
adicionar a pistola e o rifle a ela. No entanto, posições na
mão são diferentes. É muito melhor adicionar
um para o rifle e
outro para a pistola Parece muito melhor
selecionar um rifle S. Vamos adicionar
uma animação prévia que
possamos realmente ver como seria se eu apenas procurasse por rifle e procurasse
por um deles. Por exemplo, o rifle de
animação idle. Vou pausar
essa animação
no primeiro quadro para que ela fique
parada e não se mova E eu posso ajustar o soquete. Clicando no rifle de soquete, posso clicar com o botão direito do mouse agora para adicionar prévia D. Vamos adicionar, por exemplo, o 41,
ou ele se chama R four, na verdade aqui
e selecioná-lo Agora podemos visualizá-lo e
ajustar o soquete. Então vá em frente e
clique no soquete. E vá em frente e selecione
a ferramenta de rotação. E agora você pode
girá-lo 90 graus dessa maneira. E eu só estou tentando
ajustá-lo à mão para
que fique melhor. Vou reduzir a
velocidade da minha câmera. É muito rápido. Agora você pode ver o
único erro aqui, você pode tentar
ajustar o soquete No momento, o único erro desse personagem é que ele está realmente segurando o
rifle assim Parece estranho
porque ele vai
atirar para frente aqui embaixo Se eu estiver na frente dele, ele está realmente atirando o ar quando
deveria atirar em mim. Isso é um pouco
errado no lado da animação. Você realmente não pode fazer
nada sobre isso. Vamos tentar fazer isso da melhor maneira
possível. Na verdade,
essa rotação deveria ser como se fosse um disparo para frente. Vamos remover o
encaixe para a rotação. E estou tentando fazer com que ele mire para frente da
melhor maneira possível. Você também pode ir para
a vista certa. Na verdade, vá para a vista frontal. Para a visão frontal,
você pode novamente girar a arma da
melhor maneira possível.
Aqui está. Talvez seja melhor ver como ele
está mirando assim. Você pode voltar
à perspectiva e dar uma olhada nela,
ter certeza de que ele está mirando para frente e tudo está ótimo,
talvez algo assim Então você pode ir em frente
e movê-lo para cima, tentar colocá-lo na mão do personagem,
algo assim. Apenas tente da melhor maneira
possível
colocá-lo corretamente na
mão do personagem. Por exemplo, ter
esse gatilho aqui, certificando-se de que
não passe por seus dedos assim aqui. Tentando movê-lo um pouco
para frente, mas ainda com ele
na mão do jogador. Agora você realmente não pode
fazer isso perfeitamente. Se esse for um
projeto sério, os personagens devem ser projetados de forma que
estejam segurando essa
arma corretamente. A arma e o
personagem se encaixam. Por exemplo, no Counterstrike, eles estão projetando dessa forma No entanto, aqui para este, é apenas um personagem aleatório, animação
aleatória.
Com armas aleatórias. Você não pode esperar que isso
seja 100% factível. Estamos apenas tentando
ajustá-lo da melhor maneira possível. Agora, esse parece bom. Tudo está ótimo. Eu posso tentar
arrastá-lo um pouco para trás, sem
mais nem menos. Tudo
está ótimo. Ele está segurando a arma agora. E você pode ver que se eu
animar, vai ficar
assim. Parecendo incrível. Agora você tem que testá-lo
com o outro rifle. Só para ter certeza,
vou clicar com o botão direito do mouse nesse e remover
todos os ativos anexados. Vou clicar com o
botão direito novamente na análise. Agora deixe-me adicionar o KA para sete. Deixe-me adicionar o AK. Você pode ver o AK está se
rompendo um pouco O que vou fazer é
aumentá-lo o máximo que puder sem fazer com que
seja um livro assim. Agora vai
passar um pouco aqui, mas seja como for, não podemos fazer
muito a respeito. Essas armas não foram projetadas
para essas animações. Não podemos ser 100% precisos. Mas algo assim aqui. E, novamente, posso
selecionar o rifle, chupá-lo corretamente para
movê-lo para baixo o
máximo que puder, sem fazer que pareça cheio de bugs, Talvez seja o melhor que eu possa fazer. Se você clicar com o botão direito do mouse, remova o ativo anexado e clique com
o botão direito novamente. Adicione o AR four como pré-visualização apenas para
ter certeza de sua aparência. É um pouco mais ascendente. Mas isso é o melhor que
podemos fazer por essa arma. Como se não pudéssemos realmente
colocá-lo melhor ,
porque também funcionaria para
o AK. Agora podemos olhar através do gelo desse personagem e verificar se a
rotação está correta. Acho que está girado
um pouco para o lado errado. Vou clicar no
soquete novamente e vou
segurá-lo e girá-lo
nessa direção aqui Acho que está
um pouco inclinado, talvez. Algo parecido. E
parece muito melhor. Ok, foi isso. Isso sim, tudo
está indo bem. Agora, só para
ter certeza, vou clicar com o botão
direito do mouse
novamente. Remova-o. Vou
clicar com o botão direito do mouse no AA 47 assim como na última vez para ter certeza de que
tudo está correto. Agora, o que podemos fazer é sempre arrastá-lo um
pouco mais dessa maneira. Não está grampeando aqui
pela alça. Algo parecido com isso. Ok, parece melhor agora,
tudo parece bem. Agora você sempre pode
ajustá-lo um pouco para cima e para baixo. Acho que parece bom. Agora
vamos salvar tudo. Agora você deve se lembrar de adicionar isso ao outro
esqueleto também, mas vamos adicionar a pistola primeiro Antes de fazermos isso,
vamos ver a prévia agora. Ou não prévias.
Visualize a animação. E vamos
procurar uma pistola agora, vamos pegar uma das animações da
pistola E eu vou selecionar
esse ídolo de pistola aqui. Vamos colocá-la na
primeira animação. Agora, para este, vou
remover todos os ativos anexados. Vamos clicar com o botão direito na
mão e adicionar um novo soquete. E vou chamar
isso de pistola. Na verdade, pistola.
Sabemos que é um soquete Agora, para este,
vamos clicar com o botão direito do mouse e adicionar a pistola como
o ativo anexado Se adicionarmos nossa
pistola como antes, vamos girar o Vou adicionar essa ferramenta de
encaixe ao girar 90 graus novamente para girá-la dessa forma, de forma que fique
apontando para frente, você sempre pode voltar
para a vista Vá em frente e aumente o zoom.
Selecione a pistola ou o soquete aqui e
remova o encaixe Vou girá-lo um pouco para baixo para que esteja mirando corretamente. E vá para a visão em perspectiva. Verifique se
está tudo bem. Tente o melhor que puder
para fazê-lo mirar para frente. E sempre podemos
ajustá-lo mais tarde. Agora vamos movê-lo para
a mão do jogador. Assim, desta forma,
talvez desta forma. Novamente, tente colocar o dedo no gatilho da melhor maneira
possível. Então, algo assim, novamente, sempre podemos
ajustá-lo mais tarde. Não é realmente um problema. Se algo estiver um pouco confuso, você pode ver que a rotação está um pouco confusa. Está muito
inclinado Vou, novamente,
girá-lo dessa maneira, para que não fique inclinado assim
. Eu acho que isso é bom. Sempre podemos ajustá-lo mais tarde. Agora vamos tentar
movê-lo da melhor maneira
possível nas mãos do jogador. Acho que algo
assim parece bom. Acho que vou movê-lo
um pouco para cima, sem mais nem menos. Ok, agora ele está segurando a arma e
atirando para frente. Sempre podemos tentar visualizá-lo. Você pode tentar pré-visualizar com outras animações, se desejar Por exemplo, se eu pesquisar pistola e atirar
na pistola, você pode ver como é. Parece bom. Agora vamos salvar
tudo. Agora você tem que copiá-los. Vamos clicar com o botão direito do mouse e remover
todos os ativos anexados. Você também precisa copiá-los para
o outro esqueleto. Então, vou
pegar esse soquete, botão direito do mouse aqui
e copiar o soquete selecionado Ou você pode clicar no controle C. Vá até o outro esqueleto,
o médico militar Clique na mão direita
e controle V para colá-lo. Vamos até o outro
esqueleto também. Copie um rifle e clique no controle V para
colá-lo aqui também Este também tem. Agora, tanto o
contraterrorista quanto o terrorista devem funcionar agora. Ok, então foi
isso para os soquetes. Vamos passar para
a próxima lição.
95. 8.10 Criando os soquetes restantes: Agora vamos criar os soquetes
restantes. Então, vamos voltar ao
esqueleto do personagem prata Eu quero colocar o
rifle na parte de trás do personagem se
o personagem já
estiver segurando a pistola Portanto, não queremos colocar
a pistola na mão
do personagem que já está
segurando uma arma. Vamos. Digamos, por exemplo,
a animação da pistola. Basta selecionar um deles.
Vamos apenas selecionar esse. Ocioso novamente. Vou
pausá-lo no primeiro quadro Vou adicionar um soquete aqui na parte de trás
para o rifle. Vou colocar o rifle na trás se eles não
o
estiverem segurando Eu vou dizer que, se você
não tiver certeza de qual osso usar, você sempre pode clicar
em Character Bones e depois mostrar toda a hierarquia E então você pode tentar escolher o melhor osso que você pode ver aqui no
player que vai caber. Por exemplo, você pode
escolher a coluna dois ou escolher
a coluna três. Acho que vou escolher
a coluna três. Você pode escolher a coluna
três. Clique com o botão direito. Adicione um soquete. Vou
chamar isso de arma. A arma vai
estar aqui na parte de trás. Vamos clicar com o botão direito do mouse novamente, adicionar
uma malha de visualização e
vamos adicionar os K chamados KA 47. Na verdade, vamos selecionar este. Vamos apenas girar essa arma. Vou segurar ou selecionar essa ferramenta de encaixe e
vou girar 90 graus Dessa forma, vou movê-la para fora e tentar
colocar a arma como quiser Não há realmente uma resposta
para o que é correto ou não. Seja qual for o jogo que você está
tentando fazer, tente fazer do seu
jeito, do seu estilo. Você sempre pode arrastá-lo para
a parte de trás do
personagem, se desejar. Você sempre pode incliná-lo
assim para
melhorar a aparência e simplesmente colocá-lo na parte de trás
do personagem da melhor maneira
possível E talvez algo parecido. Eu acho que está parecendo bom. Eu posso movê-lo um pouco para cima. Acho que fica
bom se você apenas reproduzir uma animação para
garantir que tudo
esteja bem e que tudo
esteja funcionando. Se você acabou de fazer
uma animação de execução, por exemplo, frontal direita, desarmado, você pode sair
e reproduzir a animação E eu posso clicar nos ossos do
personagem. E selecione-o apenas para remover todos os ossos para
que eu possa ver como realmente é. E parece que sim. Ok, tudo
parece correto. A arma também está se movendo
com o corpo. Também posso selecionar
Remover anexado. E eu posso selecionar o AR Four só para ver como ficará
se eles o usassem em vez disso. Ok, tudo
está indo bem. Sim, isso está ligado
ao player. Agora podemos clicar com o botão direito do mouse
e remover todos os anexos. A segunda coisa que
quero acrescentar agora é
voltar ao ídolo
e selecionar um deles. Por exemplo, o ídolo da pistola que
vou posicionar
na O que eu quero fazer é colocar a pistola na lateral
do personagem quando ele estiver segurando o rifle Este era para o rifle, o outro aqui
é para a pistola Mas, novamente, você pode clicar nos ossos
do personagem toda a hierarquia e
selecionar aqui um osso que se encaixe Por exemplo, esse.
Essa é a coxa Vamos criá-la aqui,
na coxa, clicar com o botão direito do mouse, adicionar um soquete e chamar essa
de arma desse jeito Vá em frente e
clique com o botão direito neste. Anexe um ativo de pré-visualização
e selecione a pistola. Esta, assim como antes, vou adicionar a ferramenta de encaixe e girá-la dessa maneira Por exemplo, deixe-me avançar
também. A pistola, quando colocada de
forma realista aqui, estará na verdade
do lado oposto,
algo parecido Em vez disso, vou
girá-lo, se desejar,
você pode girá-lo de alguma forma e tentar colocá-lo da
melhor maneira possível Agora, realisticamente, se fosse um jogador
projetado para este jogo, eu não colocaria este aqui Então, poderíamos realmente
colocar a pistola aqui. Mas podemos tentar colocá-lo
debaixo desta bolsa da melhor maneira possível e tentar
movê-lo um pouco para fora. Também podemos movê-lo ou
girá-lo nessa direção e tentar colocá-lo da melhor maneira
possível na coxa
do personagem Eu acho que isso parece bom. Agora, se você simplesmente
salvar tudo e vamos tentar fazer com que
a animação seja executada novamente. Selecione um deles, por
exemplo, execute a pistola dianteira. E se você apenas jogar agora, você pode vê-lo aqui. Agora, personagem,
vou selecionar ossos. Selecione somente para que eu possa
remover os ossos. E aqui está a pistola
quando você corre com ela. Ok. Isso está preso
à coxa Agora podemos parar essa animação. E eu posso clicar com o botão direito do mouse ou em
outra pistola, a da coxa. Se eu puder encontrá-lo aqui, este aqui embaixo,
eu posso clicar com o botão direito. Remova todos os ativos anexados. E lembre-se de copiar isso
também para o outro esqueleto. Se eu clicar duas vezes aqui e abrir
o documento do personagem, eu também abro o esqueleto Vamos copiar o soquete da coxa. E eu vou encontrar
a coxa aqui mesmo. Se eu conseguir encontrá-lo. Este
controla V para colá-lo. Eu vou voltar
e vou encontrar o soquete traseiro.
Aqui está a arma de volta Eu vou copiar este. E para a coluna três novamente, vou
colá-la e será correta
para esta também. Vamos salvar tudo e passar para
a próxima lição.
96. 8.11 Anexando arma à mão: Agora que
criamos esses soquetes, podemos colocar
a arma na mão Vamos voltar para
a base de jogadores. Na base de jogadores
anterior, se você se lembra, nós já criamos a lógica da arma de
saque aqui Na verdade, podemos fazer com que o jogador já
equipe a arma. O que podemos fazer é usar algo chamado anexar se
você apenas pesquisar anexar, para que você
possa usar um
desses, por exemplo, anexar ao ator ou ator
ao componente e assim por diante. Então você pode simplesmente selecionar um
deles para ver o que é. Você está basicamente aqui para
isso, por exemplo, você está anexando um
ator a um componente Por exemplo, você está conectando
o ator da arma
ao componente de malha, onde seleciona em qual soquete
deseja adicioná-lo Por exemplo, a pistola. E então você pode
encaixá-lo lá e
prendê-lo à mão Agora, em vez de fazer isso, lembre-se de que estamos dentro
de um jogo multijogador. Isso não é single player. Se fosse para um jogador, poderíamos fazer
isso aqui sem todo esse servidor e assim por
diante, e funcionaria. No entanto, como estamos
em um jogo multijogador, precisamos replicar as informações do
servidor para o cliente Para mudanças visuais como essa, você precisa usar algo
chamado notificação de representante. E ainda não usamos
isso antes. Se você clicar com o botão direito nessa arma e
promovê-la a uma variável, vou
chamá-la de arma saqueada Agora, quatro variáveis. Vamos agora primeiro coletar
ou conectar este. Deixe-me clicar duas vezes, na verdade,
já temos um nó de
rota traseiro aqui, então vou
arrastá-lo até aqui. Clique duas vezes neste. Agora temos essa variável. E se você clicar nele agora, em vez de
configurá-lo para replicá-lo, você tem algo
chamado de notificação de representante. E onde a notificação de representante
é: se você tiver alguma alteração visual em seu jogo que precise ser
enviada a todos os clientes,
você precisará usar uma réplica de notificação de representante Ele é usado apenas para
informações como números que
serão enviados ao cliente. Anteriormente, tínhamos essa chamada
arma equipada, por exemplo. Esse que dissemos foi replicado. Porque o cliente precisa
saber se essa
informação é variável, que está configurada, se está
configurada pistola ou rifle desarmado No entanto, para este,
vou fazer uma mudança visual. Não são apenas números e
informações, como texto. Eu tenho que atualizar a arma. Então, está preso
às mãos do jogador, na verdade
é uma atualização visual. Essa arma vai
se teletransportar para as mãos do jogador e
vai ficar lá Então, eu tenho uma mudança visual
que preciso fazer, e é aqui que você
seleciona uma notificação de representante Agora, se você se lembra,
também usamos um multicast. Então, se eu voltar
aos passos, usamos esse
chamado multicast O Multicast também envia informações
para todos os clientes. Por que estamos usando
algo chamado notificação de representante em vez
de multicast? No entanto, uma notificação de representante é usada
se você tiver alterações
visuais que
precisam ser mostradas a todos os
jogadores, mesmo aqueles que ainda não estão
conectados ao servidor Digamos que alguém
se conecte ao servidor, como se eu estivesse aqui e
saqueasse o 44 ou o 41 Alguém se conecta ao meu
servidor 2 minutos depois. Se eu fizer esse código
dentro de um multicast, o player conectado não
conseguirá
ver que estou segurando esse 44 O multicast só pode ser usado
para coisas temporárias. Por exemplo, passos
aqui e agora. Ou se eu tocar alguns efeitos visuais de
fogos de artifício que desaparecerão
após 2 segundos. Os jogadores conectados não, o jogador que está
se conectando
agora realmente não
precisa saber disso. Porque provavelmente já
desapareceu no nível. Por exemplo, o
efeito visual de um representante é usado para
mudanças visuais que também precisam ser vistas por alguém que se
conectará ao seu jogo Daqui a 2 minutos, quero ver os jogadores que estão
se conectando ao meu jogo. Eu quero que eles vejam que agora
estou segurando o 41. Vamos até aqui. E vamos clicar nele. E
vamos clicar em Representar, Notificar Vá em frente e compile.
E você pode ver que ela já foi criada como
uma função para você. Isso vai ser chamado, então você vai
saquear a arma E este vai ser definido. Sempre que isso for definido e alterado em valor, ele
executará automaticamente essa função. Então, agora podemos escrever o código
dentro dessa função. E o que quer
que escrevamos aqui, isso será notificado
a todos os clientes. Ok, então, antes de
anexarmos qualquer coisa, quero pegar essa
arma saqueada que acabamos de saquear
e vamos atacar aqui
e procurar
a malha e vamos atacar aqui de armas Então, se eu for até o fundo
e selecionar a arma. Lembre-se, esta arma aqui. Se eu voltar às armas
e selecionar a base da arma, essa é a malha do
esqueleto da arma Vou selecionar a malha do
esqueleto porque lembre-se de que estamos
simulando física Nós realmente não precisamos
simular física. Sempre que essa arma aqui
estiver nas mãos do jogador, precisamos remover a física. O que eu preciso fazer é
primeiro arrastar a partir daqui e dizer set
simulate physics Vamos conectá-lo. Vamos defini-lo como falso. Na verdade, não precisamos
simular a física quando ela está nas
mãos do jogador A próxima coisa é que eu também
preciso remover a colisão, porque quando ela está
nas mãos do jogador,
nós realmente não precisamos colidir com Novamente, arraste
desta arma e diga Definir colisão e
selecione esta Defina a Colisão ativada e vamos conectá-la
sem colisão Agora a arma não
tem nenhuma colisão. Nós realmente não precisamos dele quando o jogador o
tem nas mãos. Agora lembre-se de que na base de armas você também tem a esfera aqui. Você também precisa remover a
colisão disso. Caso contrário, outros jogadores podem
realmente entrar em
você quando você tiver a arma e saqueá-la da sua mão Agora você pode usá-lo como
um recurso no jogo, mas para este,
vamos removê-lo. Vamos pegar a arma
saqueada novamente. E vou me
arrastar daqui e procurar minha esfera de colisão E está aqui embaixo. E, na verdade, é chamada de
colisão, apenas chamada de esfera. E eu vou renomeá-lo,
na verdade, para pollsionsphere, só para ficar mais óbvio Esfera de colisão. Vá
em frente e compile Vamos voltar aqui e
procurar a esfera de poluição agora. E deixe-me ir até o
final e selecioná-lo aqui. Ok, assim como antes, arraste-o aqui e diga que definir colisão ativou este aqui e vamos
configurá-lo para não colisão Agora, quando outros jogadores estão entrando nessa esfera de
colisão, eles não estão interagindo
com ela
porque agora não há
nenhuma colisão Vou me lembrar de
tornar isso falso porque não precisamos
simular nenhuma física.
As colisões de armas e também as colisões da
esfera de colisão Agora, quando usamos a função
attach the, na verdade
precisamos
fazer algo antes. Porque quando eu estava fazendo isso
antes, havia um bug. Eu estava jogando aqui. E
coloquei a arma na minha mão. Sempre que eu entrava nessas
armas por algum motivo, mesmo que eu
as colocasse na minha mão, elas continuavam no chão
e eu não entendia. O motivo está aqui para simular
a física. Você pode ver aqui
na parte inferior que diz:
Observe que, se esse componente estiver atualmente conectado
a algo, início da simulação o
separará Isso significa que quando eu
simulo a física aqui, ela realmente separará essa arma da raiz de cena
padrão No momento, é como se
esses dois não estivessem conectados, isso é separado deste. Na verdade, preciso
recolocar a arma raiz
da cena padrão.
Vamos realmente fazer isso. Vamos pegar a arma
saqueada se eu arrastar daqui e
pesquisar a raiz padrão da cena, o mesmo nome aqui na
parte inferior, e selecioná-la Agora, o que eu quero
usar é
anexar um componente
a um componente. Lembre-se de que esses são componentes
se arrastar daqui e pesquisar e você pode selecionar esse componente anexado ao componente que estou tentando anexar Na verdade, não essa. Estou tentando colocar a arma aqui. seguida, basta arrastar e procurar arma e ir até o fundo
novamente, selecionar a variável Estou tentando conectar
a arma à rota
padrão da cena. Parece assim de novo. Vamos prosseguir e conectá-lo. Agora temos que
selecionar o soquete. O soquete, nós
realmente não temos nada. Estamos apenas conectando a arma com a rota de cena padrão. Este é adequado para
a regra de localização. Tudo isso precisa
ser direto ao alvo. Ele se encaixa exatamente assim, e agora está correto Vamos continuar e
compilar. E agora tudo deve estar
funcionando corretamente. Agora, se tentarmos colocar a arma na
mão do jogador, podemos arrastar a partir daqui. Agora, para o anexo,
estamos tentando
conectar um ator,
essa base de armas. Estou tentando anexar um ator a essa malha aqui,
que é um componente. Precisamos anexar um
ator a um componente. Se eu arrastar daqui e disser anexar e você puder
pesquisar de ator a componente, estou tentando conectar o ator da arma
saqueada Se eu apenas copiar e colar aqui
na malha aqui,
que é um componente, o soquete ao qual estamos
tentando adicioná-lo agora é,
digamos, por exemplo, que o chamamos de rifle. Vamos
tentar pegar o rifle primeiro, e sempre podemos usar
a pistola depois Novamente, ajuste o alvo
para todos eles. Vamos compilar
e salvar tudo. Vamos ver como funciona
se eu clicar em Compilar agora ou Jogar agora e
selecionar o terrorista Agora, se eu entrar no rifle, você pode ver que ele está
realmente em minhas mãos Você pode ver isso aqui
na sombra. Na verdade, está em minhas mãos. Agora, a razão pela qual
eu não estou segurando a animação do rifle é
porque também precisamos atualizar o equipamento,
a arma equipada Lembre-se, se eu voltar
ao plano de animação, já faz algum tempo que fizemos isso Se eu for até o player, animações e plano de
animação Lembre-se de que estamos trocando essas animações aqui,
dependendo do que é essa enumeração de
armas equipadas Este vem da arma equipada pelo
jogador. Precisamos mudar isso para que as
animações
mudem O que precisamos fazer aqui
é fazer isso rapidamente. Se voltarmos ao gráfico da van, posso clicar com o botão direito do mouse e
criar um novo evento personalizado. Eu posso chamar isso
de uma arma equipada. Novamente, vou copiar
esse nome, clicar com o botão direito do mouse, criar um novo evento personalizado executá-lo no servidor. Este é executado em um servidor confiável. Vou executar o servidor por meio dessa
arma normal de conjunto de eventos . Agora, para este, a única coisa que ele está fazendo
é colocar essa arma
equipada aqui. Se você simplesmente
conectá-lo assim. E se o conectarmos
assim, novamente, a única coisa que esse evento
está fazendo é definir essa variável aqui para o que
quisermos configurá-la, e
usaremos essa mais tarde. Vamos compilar agora.
Lembre-se de que você só pode definir variáveis e
replicá-las quando elas estão sendo
executadas no servidor Você não pode usar esse aqui em cima. Você precisa executá-lo
no servidor antes de poder configurá-lo e
replicá-lo para todos os clientes Ok, agora isso está feito. Vamos clicar duas vezes
nessa variável. Novamente, você pode abrir a função aqui ou
simplesmente
clicar duas vezes aqui e isso
fará com que você entre aqui. Agora, lembre-se de que precisamos configurar a arma equipada para
que a animação seja atualizada. Se você arrastar a partir
daqui e procurar a
arma equipada que acabamos de criar
, teremos
que selecionar o que
queremos configurá-la. O que queremos definir
é o que você saqueou. Lembre-se de que na arma que você
fez, esse tipo de arma. Se você pegar essa arma saqueada arraste daqui e
procure o tipo de arma Agora você sabe se é um rifle
ou uma pistola, por exemplo, e ele sabe qual
animação usar Se você conectá-lo aqui, compile. Vamos clicar em
jogar. Se você selecionar o terrorista, só para que
apareçamos ao lado dele E se eu entrar
nesse AK, por exemplo, agora
ele mudará a animação para
a correta. Agora, se eu abrir
o cliente também, só para ter certeza de que
tudo está funcionando. Se eu jogar como servidor aqui, vou minimizar isso, também estou jogando como
cliente. Então eu abro o
contra-terrorista para este, e eu estou abrindo o
terrorista para este. Vou até lá com o contraterrorista e só para ver se tudo
está funcionando corretamente. Se eu trabalhar com este quatro, você pode ver que eu o saqueei Se eu chegar perto do jogador, ele não está interagindo com minha esfera de colisão porque eu a configurei para não E agora, quanto ao outro, se eu entrar neste AK, você pode ver que ele também
foi saqueado Acho que vou reduzir o tamanho do AK. Talvez a arma
pareça muito grande. Você pode ver
que agora está apenas saqueando o rifle, porque agora, se
eu entrar na pistola, ela também vai colocá-la
no soquete do E parece estranho assim. E temos que
mudar isso mais tarde. Então, vamos fazer isso
na próxima lição. Por enquanto, nós realmente o
anexamos e podemos tornar isso
um pouco mais complexo. Então, também está funcionando
para a pistola.
97. 8.12 Anexando armas às costas: Tudo bem, então vamos tornar
esse código um pouco mais complexo em vez de apenas
anexá-lo diretamente Agora tenho que perguntar se o jogador já está
segurando uma arma ou não. Se o jogador já estiver
segurando uma arma, eu quero colocar essa
arma na parte de trás
do personagem porque ele
já está segurando uma arma, então não queremos
prendê-la na mão. O que eu quero fazer é pegar essa arma equipada e arrastar daqui e
dizer, é igual, igual a uma arte? Neste momento, você
não tem armas? Se for esse o caso, como se
você não estivesse segurando nenhuma arma, eu realmente quero
colocá-la na mão do jogador. O que eu posso fazer é
conectá-lo aqui, aqui. Em vez de apenas conectá-lo ao soquete
do rifle,
talvez seja uma pistola O que eu posso fazer é arrastar a partir daqui e dizer selecione este. Já usamos esse antes, mas agora podemos ver
outro exemplo disso. Agora temos que selecionar dependendo
do tipo de arma. Se for uma pistola, vai usar
a pistola de soquete. Se for um rifle, ele
vai usar um rifle de soquete. Vou copiar
esse tipo de arma novamente e vou
conectá-lo aqui. Ou se o tipo de arma
for igual a desarmado, realmente não
precisamos
fazer nada Se for uma pistola, quero prendê-la
à pistola. Isso é o que chamamos de soquete. Se for um rifle, queremos anexá-lo
ao rifle. Agora ele sabe qual soquete usar, dependendo do tipo
de arma e tudo o
mais está correto Agora, na verdade, vamos
movê-lo para cá. No entanto, se você não estiver desarmado, significa que você já tem
uma arma na mão Vamos copiar tudo isso de novo e agora, em vez de depender agora do tipo de arma, ou
eu, se for uma pistola, vou adicioná-la
à coxa da arma Lembre-se de que é o que
chamamos de soquete para a arma da coxa Se for um rifle agora, ele também o
colocará naqueles Isso vai
ser conectado aqui. Se for falso,
vou aproximar tudo
isso. Agora está mais organizado e podemos sair, compilar
e salvar tudo Só queremos configurar
a arma equipada sempre que não tivermos
nada em nossas mãos. Porque se tivermos
algo em nossas mãos, só
queremos
adicionar a arma na parte de trás
do personagem.
Vamos salvar tudo e clicar em jogar. E se eu selecionar Terrorist
aqui e caminhar
até aqui, deixe-me abrir deixe-me abrir este para que
possamos ver se está funcionando para esse personagem, se
eu maximizar isso um pouco. Então você pode ver se eu agora
entro no rifle, você pode ver que eu o seguro
na minha mão Se eu entrar na
pistola agora, você pode realmente
ver que a pistola caiu no chão Na verdade, quero consertar isso. E eu acredito que é
essa malha aqui. É muito fino, então está
caindo no chão. Vamos realmente consertar isso. Deixe-me pegar a
caixa aqui, se eu for, deixe-me lembrar
onde eu a salvei, a
pasta Super Grid, o pacote de estatísticas e as malhas. E vamos usar a caixa de supergrade para o
solo em vez do avião. Eu vou pegar essa caixa. Na verdade, vou reduzir para 100 aqui para o movimento Primeiro, vou colocar essa
caixa em algo como aqui. E vamos movê-lo
para o chão novamente. E eu vou empurrá-lo para trás exatamente onde está
esse chão, eu vou
movê-lo assim, eu acredito. E aqui. Ok, agora está no chão. Agora vou
escalá-la da
mesma forma que a escala do solo. Vou tentar
o melhor que puder. Deixe-me, na verdade,
ampliá-lo primeiro. Deixe-me escalá-lo aqui para 1010 para o Z. Nós realmente não precisamos dele.
Deixe-me clicar nesse cadeado. E deixe-me escrever um aqui. Vou clicar
no chão, na
verdade, está mais
abaixo, assim aqui. E eu vou tirá-la aqui
e do outro lado Ok, agora ele se encaixa
no chão. E eu vou
clicar no chão. Vou segurar a tecla Shift e clicar com
o botão direito para copiar isso. 80, 81. Vou
clicar na minha caixa aqui. Vou segurar a tecla Shift e clicar com o botão
esquerdo para colá-la. E agora deve estar correto. Agora, se eu for para o
outro lado só para verificar se cobre o chão
e funciona, tudo bem. Agora, o que
vou fazer é selecionar o avião. Acabei de clicar algumas
vezes aqui. Ele selecionará o plano
da superrede. Vou deletar
e copiar esse material
para
guardá-lo novamente. Clique com o botão direito do mouse na
orelha, clique com o botão esquerdo para
colar esse chão aqui. E parece exatamente como antes. Ok, vamos salvar tudo. E agora, se clicarmos em Play, ele não deve
cair no chão. O chão era muito
fino e eu tenho a suspeita de que seja branco
caindo do chão Deixe-me novamente
maximizar isso um pouco. Agora, se eu jogar como esse jogador, diluir um M quatro
e diluir uma arma, ela deve adicioná-la à coxa Você pode ver do
lado do meu personagem, agora
eu posso ver a arma. Incrível. Agora, para esse K, eu posso saquear tão bem
quanto o outro jogador No momento, ele desapareceu. Você pode ver que o cliente
não pode vê-lo no servidor. Você pode ver que parece
correto porque lembre-se o servidor tem autoridade
e pode fazer qualquer coisa. No entanto, para o jogador,
está na parte de trás. Como você pode ver aqui
na sombra, há um problema de
replicação, algum valor que
não está sendo ultrapassado A única coisa que consigo pensar essa arma equipada e desarmada, porque essa
escolhe se coloca a arma nas
costas ou na A maneira de corrigir esse
problema em que você não
consegue ver a arma
ao saqueá-la é Na verdade, vamos fazer
isso de outra forma, a arma equipada com o conjunto. O motivo é que
não sei realmente
esse valor, porque às vezes,
quando eu jogo como cliente, ele coloca essa arma na
parte de trás do personagem. Você pode ver aqui, em vez
de saqueá-lo na mão. O motivo pelo qual ele o coloca volta na parte de trás do personagem
é um problema de replicação Por alguma razão
, estamos equipados, este é o único que controla devemos estar em sua mão ou a arma em suas costas. Por alguma razão, está vendo que esse valor de
arma equipada não está armado como se você já tivesse
uma arma e a coloca nas costas
do personagem em vez
de na sua mão. Na verdade, isso
ocorre porque estamos executando este por meio da notificação do representante. Não precisamos fazer isso
porque isso vai estragar o jogo. Vou remover
isso. Em vez disso, vamos
para o gráfico de eventos. Vamos executá-lo aqui no servidor. Como precisamos definir valores por meio do servidor
em vez de por meio do representante,
notificar, em vez de apenas
alterá-los diretamente Lembre-se de que você só quer
colocar a arma equipada sempre que estiver
aqui desarmado Sempre que estiver desarmado, você deve colocar a
arma equipada porque não quer trocá-la sempre que
colocar
a arma na parte de trás Em vez disso, para este, temos que pegar a arma
equipada. E, novamente, temos que perguntar
se é igual a estar desarmado. E deixe-me afastar isso. Certifique-se de perguntar,
você está desarmado ou não? Porque só queremos executar
esse código se você estiver desarmado. Se você estiver desarmado, sim. Vamos em frente e vou atrasar o código
antes de realmente fazermos isso. E a razão pela qual eu faço isso é que estou dando uma chance
para esse representante notificar para ficar sem esse código Lembre-se de que usará essa variável de arma equipada para verificar se você está
desarmado ou não E isso será grampeado.
Se você colocar instantaneamente essa arma equipada e
mudar esse tipo de arma, vamos
adiar um pouco Certifique-se de que esse
código seja executado
antes de realmente alterarmos o tipo de arma ou a arma
equipada aqui. Esse atraso precisa
ser o menor possível, pois parecerá
estranho se você estiver
correndo sem a aplicação da
animação Mas vamos tentar
assim antes de
fazermos qualquer coisa. Então, deixe-me clicar em jogar
aqui como terrorista. Agora eu posso
clicar em jogar e posso entrar na arma e
ver se ela está funcionando. Agora você pode ver que está funcionando. Preciso fazer isso algumas vezes apenas para ter certeza
de
que está realmente funcionando, e agora você pode ver que não
está funcionando Acho que isso resolveu o problema. No entanto, no futuro, se ainda tivermos
problemas com isso, tentaremos corrigi-lo. Mas acho que está realmente corrigido agora e não temos
problemas com isso. OK. Agora vamos tentar
reduzir esse número, 0,05, algo muito baixo E podemos tentar jogar
e tentar reduzi-lo, mas ainda vai funcionar. Agora você pode ver que ele ainda
está funcionando. Se você reduzir demais, corre o risco de o código na notificação
do representante não ser
capaz de ser acessado neste momento Antes de realmente fazer isso, verifique se está lento
, mas não muito baixo. Você terá problemas,
mas, como você pode ver aqui,
tudo está funcionando. E não se esqueça de comentar esse atraso porque se você voltar
três meses depois, não terá ideia de
por que fez isso. Certifique-se de segurar, clique em C no
teclado para adicionar um comentário. Por exemplo,
para este comentário, você pode verificar se a
arma está presa à mão antes de alterar
o estado de equipamento do jogador. Assim mesmo.
Você pode até mesmo escrever que está esperando que
o representante notificado se inscreva Vá em frente, compile
e salve tudo. E isso deve funcionar
se você clicar em play. Agora, se você
entrar na pistola agora, você
pode ver que ela está mudando Se você entrar neste
, ele está de
costas e eu posso ver
que tudo está funcionando agora. Outro dinheiro que temos, espero que
o último,
é que quando você coloca duas armas uma em cima da outra, um
pouco confuso porque
você está sobrepondo duas esferas e eu não sei qual delas
saquear, e ela vai acabar se esgotando se reclamar
agora E aqui está o cliente. Eu
entro nos dois, tento
me deparar com os dois
desse jeito. Você pode ver que na verdade está
segurando a pistola e as quatro ao mesmo tempo
e está um pouco confuso Temos
que consertar esse dinheiro também. Vamos realmente fazer isso
na próxima lição.
98. 8.13 Sobrepondo duas armas de uma vez: O problema que estamos
enfrentando agora é que, se eu usar
duas armas ao mesmo tempo, elas explodirão porque agora
você pode ver que estou segurando a pistola e o
rifle ao mesmo tempo Portanto, esse é um bug
que temos
agora e precisamos corrigir de alguma forma. Precisamos verificar as duas sobreposições de armas
e não apenas Porque, no momento, estamos apenas verificando a sobreposição de
uma arma e não estamos verificando
se há duas armas sobrepostas
ao mesmo tempo Para corrigir isso,
vamos até o jogador e vamos abrir a
base de jogadores dentro daqui. No momento, temos
essa arma de saque. Em vez de apenas
saquear a arma, preciso criar uma nova matriz onde reúno todos
os elementos sobrepostos E então, a partir desses atores
sobrepostos, ele
saqueará as armas em vez de
saqueá-las diretamente Vamos pegar tudo isso
e colocá-lo aqui, botão direito do mouse e
criar um novo evento personalizado. Vou chamar esse
evento de item sobreposto. Ok, com esse, novamente, vou
executá-lo no servidor, no servidor
personalizado, e
adicionar um item sobreposto E então lembre-se de executá-lo
no servidor e também de forma confiável. E eu vou executar
aquele servidor aqui em cima no evento normal, adicionar um item sobreposto, desse
jeito O que precisamos fazer é
criar uma nova matriz chamada itens
sobrepostos Novamente, esta é uma base de armas na verdade, não itens sobrepostos Provavelmente é mais correto
chamá-lo de armas sobrepostas Em seguida,
clique com o botão direito do mouse ou simplesmente clique aqui e procure
a base de armas. Vá em frente e selecione-o. Vamos prosseguir e
selecionar essa matriz novamente. Agora, em vez de um item
sobreposto, provavelmente é melhor chamá-la de arma sobreposta que é mais precisa para
não mudarmos nosso estilo Uma arma de sobreposição como essa. E vá em frente e
pegue essa matriz. O que podemos fazer aqui, sempre que
sobrepomos um item ou uma arma, podemos adicionar
essa arma a essa matriz Agora precisamos saber qual arma
estamos sobrepondo novamente. Vá em frente e adicione uma variável, procure a base de armas. Basta chamar essa arma e
conectá-la aqui também. Ela parte daqui sempre que nos
sobrepomos e, em seguida, as
informações estão aqui Assim como antes,
o que fizemos aqui. Vá em frente e pegue
isso e diga definir elemento
de matriz e conectá-lo. Esse é o item
que queremos adicionar ao índice. Novamente, exatamente o que eu te
disse antes. Vamos usar o comprimento. Tire dessa pesquisa o comprimento e ele
encontrará automaticamente o índice correto. Ele o adicionará para
prosseguir e organizar isso. Tudo bem, o que
estamos simplesmente fazendo é em vez de saquear instantaneamente
a arma do chão, estamos adicionando essa
arma sobreposta a essa matriz E então, a partir dessa matriz,
podemos ir em frente e
saquear as armas Garantimos que todas
as armas sobrepostas sejam saqueadas
daqui. Quando eu sobreponho uma arma, lembre-se de usar novamente
essa arma de saque,
caso contrário, você não a usará. Na verdade, vamos voltar primeiro. Vamos voltar para a base de armas
em vez da base de armas agora, em vez de aqui com
o código que escrevemos, em vez de saquear a arma instantaneamente quando
você sabe que pode saquear a arma, vá em frente e adicione-a às armas
sobrepostas Deixe-me remover isso. Vamos pesquisar aqui no player. Lembre-se de que este é o reprodutor de pinos. Vamos pegar isso e
pesquisar a arma sobreposta ao anúncio. Vá em frente e adicione-o aqui. A arma é exatamente
assim e compile agora. Ele adicionará
essa arma de sobreposição à matriz primeiro aqui Vamos usar a
arma do lote. Vamos atacar a partir
daqui e procurar muitas armas. A arma aqui. Na verdade, não precisamos
disso porque lembre-se que
agora o adicionamos a essa matriz. Em vez de
simplesmente ir daqui para cá, agora
podemos usar essa
matriz aqui embaixo. Na verdade, não precisamos desse alfinete. Se você clicar nesse
pino, remova-o. Também clique aqui e
remova-o, sem mais nem menos. E para que este o remova, segure Alt e clique
nele e ele será removido, ou você pode clicar aqui
e atualizar todos os nós que também
removerão
esses pinos da era vermelha Agora você está saqueando a arma. Vai passar por aqui. Agora, antes de adicioná-lo diretamente, vamos primeiro verificar algo. Vamos pegar essas armas
sobrepostas. Primeiro, vamos perguntar se estão vazias ou
não Porque se estiver vazio, não
queremos saquear. Vamos atacar a partir daqui
e dizer que está vazio. Digamos que não esteja vazio. Se não estiver vazio,
vamos para O. Podemos arrastar a partir daqui. E escreva um ramo e
saia e se conecte. Agora, se não estiver vazio,
vamos saquear. Tudo bem, qual é a
arma que estamos saqueando, podemos arrastar daqui e
dizer pegue esta Estamos simplesmente
obtendo o primeiro item que está dentro do conjunto de armas
sobrepostas, obtendo apenas aquele
no índice, zero Então, a primeira arma
que está aqui dentro, vamos conectá-la com
a arma de sobreposição Agora estamos adicionando essa
arma ao inventário. Em seguida, ele vai entrar aqui, adicioná-lo ao inventário, vai configurá-lo
para a arma de saque Vamos verificar
se estamos desarmados Se estivermos, vamos
configurar a arma equipada Agora lembre-se de remover a arma de
sobreposição, aquela que você está adicionando agora Lembre-se de
removê-lo da matriz,
caso contrário, ele ficará aqui para sempre. Você tem que pegar essa matriz agora. Então, depois de fazer isso, talvez possamos pegar
as armas sobrepostas Podemos dizer que remova o item e
vá em frente e conecte-o. Então lembre-se de pegar
este que você acabou de adicionar. Em vez disso, você pode
conectá-lo aqui. Novamente, clique duas vezes para criar um nó de rota traseiro e apenas torná-lo outro nível
com os outros. Agora estamos lembrando de
removê-lo da matriz. Ele ficará aqui para sempre e você terá uma
caixa em seu jogo. Ok, agora estamos removendo esse item sobreposto da matriz porque agora
o adicionamos ao inventário e tudo está concluído, então o removemos Agora lembre-se de que essa função aqui, esse evento aqui, está
sendo executado apenas uma vez,
sempre que você se sobrepõe Está realizando o
evento de armas do lote, como você pode ver aqui. Quando terminamos,
paramos o código. E se você realmente tiver dez armas nas armas
sobrepostas Você precisa continuar usando essa arma do lote
até que ela esteja vazia. E quando estiver vazio, não
fará nada. Você precisa continuar
realizando este evento para verificar se há
mais itens sobrepostos Porque ele continua verificando
se está vazio ou não para executá-lo. Novamente, aqui em cima, vamos
fazer um novo evento. E vou chamá-lo, vamos começar a partir
daqui, de um evento personalizado. Vamos ligar para este, verificar se
há armas sobrepostas. Vou verificar se há mais armas
sobrepostas. Podemos pegar essa
e derrubar até aqui. Verifique se há armas sobrepostas. Quando terminarmos de
adicionar a arma, faremos essa verificação de armas
sobrepostas e a
executaremos novamente E então o código aqui será executado novamente e verificará
se está vazio ou não. Se não estiver vazio, ele pegará novamente
aquela nova arma. Continue adicionando-os ao
inventário o máximo que pudermos. No entanto, se estiver vazio, não
faremos nada. Tudo bem, um problema que
temos agora é se
o jogador se sobrepor
a várias armas Porque toda vez que você colidir com uma arma
e puder
saqueá-la, isso aumentará
essa arma sobreposta E,
na verdade, ele executará isso novamente, mesmo que
estejamos no meio
do código, e isso interromperá
o jogo toda vez que você
se sobrepor a algo Isso executará
tudo e, na verdade, também
ativará tudo isso. Em vez disso, vamos colocar
uma barreira. Isso só funciona uma vez. E o que você pode fazer é arrastar
a partir daqui e dizer faça uma vez. Esse nó garante que
isso seja executado apenas uma vez, mesmo que eu me sobreponha
a várias armas Não vai
repetir esse código aqui. Na verdade, ele vai
repetir esse código, vai adicionar algo a isso. Mas essa parte do código
não vai se repetir. Na verdade, só vai
fazer isso uma vez. E podemos controlar quando
ele deve fazer isso de novo. Só queremos fazer isso uma vez, mesmo que tenhamos cerca de
100 armas sobrepostas Só fazemos isso uma vez
porque lembre-se de que estamos fazendo um loop infinito até que não esteja
mais vazio e paremos o código. Nós realmente não precisamos
amar isso daqui também. Ok, faça uma vez. Quando podemos redefinir isso? A redefinição significa que eu só
vou fazer esse código uma vez. Você me diz quando posso reiniciar, para que eu possa executar esse código novamente. O reset, vamos arrastar a partir daqui e criar
um novo evento personalizado. Digamos que pode perder
uma arma novamente. Eu posso saquear a arma novamente sempre que eu parar de
saquear aqui Quando está vazio,
a arma sobreposta. Sempre que estiver vazio, podemos arrastar daqui e
dizer que podemos saquear a arma novamente. Podemos executar esse código novamente
porque ele parou. E vou me arrastar um pouco
daqui , abrir espaço
e organizar isso. Tudo bem, agora isso
está mais organizado. Então, vamos entrar, compilar, e vamos também compilar
aqui, salvar tudo Vamos agora tentar
clicar em play e ver o que acontece.
Selecione Terrorist. Na verdade, deixe-me
copiar essas armas todos esses
pontos, para que eu não precise continuar correndo
para aquele local novamente. Basta copiar algumas vezes
e colocá-las ao redor. Selecione terrorista
e vamos entrar nisso agora que nada está acontecendo. Provavelmente ganhamos um dinheirinho aqui, provavelmente
sobrepondo-se Mas como você pode fazer isso é arrastar de um deles,
por exemplo, essa sobreposição de
servidor e escrever uma string de impressão É assim que você depura seu
código se tiver um bug. Não quero remover
isso do vídeo porque também quero
mostrar como depurar Você conecta essa sequência de impressão
e clica em Reproduzir. Sempre que imprime a string, como você pode ver, na verdade está
imprimindo a string. Isso significa que essa parte
do código está funcionando. Não há nada errado aqui.
Está passando. Sim, acho que está aqui. Eu esqueci de fazer
esse tamanho para caber. Talvez vamos tentar jogar
de novo e testá-lo. E esse era o problema. Eu não fiz esse tamanho para caber. E isso significa
que, para matrizes, quando você as cria, você realmente precisa arrastar a
partir daqui e dizer redimensionar E então você tem que dizer
ao motor qual é o tamanho dessa matriz. Por exemplo,
darei 20 vagas. Agora, com esses 20 slots, agora
posso adicionar itens. Você tem que fazer
isso, por exemplo, no jogo Begin ou
algo parecido. No entanto, com o tamanho adequado, ele indica que você pode criar
automaticamente um novo slot. Isso é bom. Eu não me importo com
o tamanho dessa matriz. Que o que você está fazendo aqui, tamanho adequado, era o problema. Agora, se você tiver problemas, novamente, arraste a partir daqui, escreva uma string de impressão, veja se a string é
impressa na tela. Se isso acontecer, provavelmente há
algo mais errado. Novamente, lembre-se de que você também pode
imprimir valores para ver se eles
foram realmente adicionados a essa matriz de
armas sobrepostas e assim por diante Mas, por enquanto, parece funcionar. Vamos clicar em Jogar. Se você
quiser verificar melhor, você também pode clicar
na mola, torná-la, por exemplo, 600. Só para que eu possa ver meu personagem. Vamos tentar lotar novamente. Agora você pode ver que está na minha
arma ou nas minhas mãos e costas. Vou fazer isso
algumas vezes apenas
para ter certeza de que tudo está funcionando corretamente
e parece funcionar. Então você pode ver que isso
resolve o problema, porque agora ele continua
passando por tudo Ele garante que ele
examine o
conjunto de armas sobrepostas antes de parar e que
possamos saqueá-las novamente Então, é garantir que
tudo seja saqueado. E, como você pode
ver, embora eu me sobreponha a várias
armas ao mesmo tempo, ela está funcionando corretamente O rifle está na minha mão e a pistola está ao lado
da minha perna Certo? Então, agora que
terminamos com essa lógica, vá em frente
e salve tudo, e vamos
para a próxima.
99. 8.14 Criando a estrutura da arma: Ok, com este jogo, quero mostrar
tudo o que fazemos quando desenvolvemos um jogo, mesmo que seja avançado. Nesta lição,
vamos criar uma estrutura de
armas. É muito melhor do que continuar criando variáveis
para as armas. Antes que isso fique muito grande, vamos começar a
criar a estrutura. Agora eu posso tentar te
mostrar e você entenderá
muita coisa nas plantas Vamos clicar com o botão direito do mouse e
criar uma nova pasta. Vamos chamar isso de Estruturas.
E clique com o botão direito novamente, defina a cor para
essa cor aqui, assim como antes
Dentro desta pasta. Vamos clicar com o botão direito do mouse
e acessar o Blueprint. Temos algo
chamado estrutura. Clique nele e eu
vou chamá-lo de ST como um prefixo para a estrutura Vamos chamar isso de informação sobre armas. Essa estrutura contém
as informações das armas. Agora, quando você
abre uma estrutura, a única coisa que você
faz aqui é adicionar variáveis. Se você adicionar uma variável, poderá escolher como essa variável
deve ser chamada. Você pode escolher o
tipo, assim como aqui no blueprint em que você
cria uma nova variável mesma coisa. Agora, dentro
da estrutura, você pode ter todas as informações sobre
armas aqui. Você pode adicionar várias
variáveis aqui e ter todas
as informações da
arma aqui. Por exemplo, com que rapidez a arma
pode disparar, qual é o nome da arma e todas essas
coisas que você deseja. Por exemplo, a miniatura da arma quando você a
adiciona ao inventário, quanto ela deve custar na
loja ao comprar a Você pode ter um valor de moeda
ou um valor de $1 e assim por diante. Todas as informações da
arma podem estar dentro de. Aqui você pode ver que é possível reunir todas as variáveis
dentro de uma estrutura. Não é necessário criar 100 variáveis dentro desse projeto, elas na verdade as contêm
dentro da estrutura Vamos
começar a fazer um. Vou deletar todos eles. O primeiro aqui eu
vou chamar de nome. Preciso de um nome para minha arma. E vou mudar para
o tipo de string porque
string é apenas
um texto que podemos escrever. Agora, muito importante, a diferença entre
uma string e um texto pode ser localizada ou traduzida para
diferentes idiomas Por exemplo, se eu quiser que meu jogo
seja alemão, japonês
ou chinês, no futuro,
terei que selecionar texto. Por exemplo, se eu
quiser traduzir o nome da arma, se
você escolher String, não
poderá
traduzi-la no futuro. Certifique-se de que você quer
um jogo que possa ser traduzido porque você
deseja traduzi-lo no futuro. Vá em frente e selecione o texto. No entanto, vou selecionar nomes de armas de
corda,
como AK 47 ou 44. Mesmo que eu o
mude para idiomas diferentes, ele realmente não
será traduzido. Quero dizer, como se chama AK 47 em diferentes idiomas?
É o mesmo nome. É por isso que eu escolho uma
string em vez de um texto, embora eu queira traduzir
meu jogo no futuro string para o
nome. Então lembre-se também
adicionamos esse
tipo de arma. Na verdade, também podemos
ter esse tipo de arma dentro da
estrutura. Eu posso simplesmente chamá-lo de tipo, você pode chamá-lo
de tipo de arma, tudo bem. Chame-o do que quiser para torná-lo mais visível
para você aqui. Vamos mudar para o tipo de arma. Lembre-se de
que criamos esse tipo de
arma de enumeração tipo de
arma Também podemos adicionar
um novo e chamar a classe. Uma classe é se você procurar base de
armas e pegá-la aqui, selecione esta classe,
referência Uma classe é que você pode gerar uma nova
arma a partir desta Talvez precisemos, talvez não. É sempre bom ter uma classe para qualquer
jogo que você crie, porque talvez no
futuro você
precise devolver essa
arma ao mundo É sempre bom ter
essa aula aqui. Agora temos uma estrutura. É pequeno, mas é bonito
e criamos um mais tarde. Você pode adicionar, por exemplo, velocidade de
tiro para essa arma. E então você pode
selecionar um flutuador para o número de quão
rápido ele pode disparar Mais tarde, você pode dizer velocidade de
recarga e assim por diante. Então você pode ver que pode adicionar muitas informações
sobre essa arma. Talvez você queira adicionar valor de
uma loja, adicionar uma descrição
semelhante ou
adicionar uma miniatura ao
inventário Você pode adicionar muitas coisas. Mas, por enquanto, vamos
apenas adicioná-los. E vou adicionar mais
à estrutura mais tarde,
quando precisarmos. Agora que
criamos essa estrutura, podemos prosseguir com a
criação de uma tabela de dados. Eu vou te dizer na próxima
lição o que é uma tabela de dados, mas por enquanto, incrível, você criou uma estrutura
e vamos seguir em frente.
100. 8.15 Criando a tabela de dados de armas: Nesta lição, vamos
criar uma tabela de dados de armas. Para criar uma tabela de dados, você precisa estar no Google
Drive ou no Google Sheets
ou, se tiver o Excel, também
poderá usá-lo. Estou usando o Google Sheets. Vá em frente e crie uma
conta do Google, se você não tiver uma. E então, aqui dentro,
estamos clicando aqui
e indo para o meu drive. Dentro do seu drive,
acabei de criar uma pasta aqui para ficar
estruturada dentro daqui. Quando você está dentro do Google, você pode escrever, clicar criar uma nova planilha do Google. Clique aqui, e então
ele vai fazer uma, e eu vou chamar essa
aqui de tabelas de dados. Vou criar um espaço
aqui, dentro daqui. Eu só vou
organizar isso um pouco. Vou clicar em Controle
A para selecionar tudo. Vou clicar
aqui, alinhar seu centro. Clique aqui, alinhe seu centro. Clique aqui e selecione
a quebra de texto. Então eu vou mudar
o telefone para este. Aqui nesta linha, vou clicar em negrito. Novamente, controle para selecionar tudo. Vou tornar
tudo mais amplo assim,
e isso é apenas uma preferência. Ok, agora estamos dentro
das planilhas do Google. E o que é uma tabela de dados é que podemos escrever todos esses valores de uma estrutura
dentro de uma tabela de dados. Assim, pessoas que não
sabem programar podem realmente usar
essa tabela de dados e modificar informações sobre
seu jogo, por exemplo. Vamos começar aqui e você
pode ver o que quero dizer. Criamos essa estrutura
aqui com a variável nome. O que podemos fazer dentro
dessa tabela de dados para escrever escrever
essas variáveis exatamente como
você as escreveu. Dentro de uma estrutura. Para o nome, podemos escrever nome
e, em seguida, temos o tipo
e, em seguida, temos a classe. Isso é o que temos dentro
de uma estrutura agora, lembre-se de escrever exatamente como você escreveu aqui
dentro da estrutura. Caso contrário, você receberá uma caixa, escreva-a aqui para o
nome do item. Por exemplo, no primeiro,
temos um AK 47 K 47. A próxima, temos uma se você vê aqui na arma de
plantas, é
isso que você tem E então você tem uma pistola. Você também pode dar um nome a ele. No entanto, minha pistola
é chamada de pistola. Eu realmente não tenho
um nome para isso. Agora você tem que escrever
o tipo dessa arma. Lembre-se de que, dentro
da enumeração você criou esse Dentro da
estrutura, você também pode ver o tipo de
arma que selecionou. Agora, para esse tipo de arma, você deve escrevê-lo exatamente como os tipos de armas que
você escreveu aqui. Caso contrário, você receberá uma caixa
dentro de uma tabela de dados. Você tem que escrever as coisas exatamente como você
fez aqui dentro. Para o tipo de arma,
podemos ter um rifle. Este AK é um rifle, o quatro é um rifle A pistola é simplesmente o
tipo de pistola como essa. Para a aula, temos que
fazer outra coisa. Vamos criar a tabela de
dados primeiro porque não
consigo fazer referência a essa a menos que eu realmente tenha a tabela de dados dentro
dos blueprints Vamos criar uma nova pasta. Vamos chamar isso de
tabelas de dados dentro dessa pasta. Novamente, vamos clicar com o botão direito
do mouse em Definir a cor dentro dessa pasta. Vamos clicar com o botão direito, acredito que
esteja dentro do Michelaneous, Aqui está, a tabela de dados. Vá em frente e crie.
Agora ele diz a você, qual estrutura você
deseja criá-lo? Eu quero criá-lo a
partir das informações da arma. Vá em frente e clique. Ok.
Agora vamos chamá-la de tabela DT e, novamente,
chamá-la de Informações sobre Armas. Eu geralmente chamo isso da
mesma forma que a estrutura. No entanto, DT para prefixo, porque esta é uma tabela de dados Se eu abrir essa tabela de dados, você pode ver que ela está
vazia agora. Se você clicar
no sinal de mais, um puro, você adiciona uma nova entrada
para a tabela de dados. Você pode ver aqui, você
pode dar um nome a ele. Por exemplo, AK 47. Eu posso transformá-lo em um
rifle e a classe é esse BPAK 47 que Aqui você pode ver que
agora
temos as informações , em vez de uma tabela de dados. Na verdade, podemos extrair essas informações e
usá-las em nosso jogo. Vamos fazer isso a partir da nossa tabela de dados aqui
do Google Sheet. Vou clicar nesta,
nesta entrada que você
criou agora, e selecionar uma
delas aleatoriamente. Por exemplo, esse PPK 47. Então você pode escrever,
clicar agora neste e dizer copiar, porque agora você está
copiando esta referência. Aqui você pode ver que
é assim que realmente precisamos escrevê-lo dentro
da sua planilha do Google. Nós já fizemos isso. Escrevemos o nome aqui
corretamente, assim. Escrevemos um tipo como
esse rifle, por exemplo. Para a classe, você também
precisa escrevê-la
assim se eu controlar
V dentro daqui. Lembre-se de escrever:
Clique aqui, copie, controle
V. Dentro daqui. Vou apenas
registrá-lo para que eu
possa realmente ver o que estou
fazendo. Assim mesmo. Ok, aqui,
é assim que se faz. Agora você copia este e
cola nos outros. Lembre-se, em vez de
um AK 47, isso é 44. Então você tem que escrevê-lo
exatamente como referência. Estou me referindo a este PP
44. Eu posso voltar aqui. Estas são as
pastas, plantas e armas corretas. E eu só preciso
mudar esse 1141. A última é a
pistola chamada pistola BP. Eu escrevo
pistola P aqui também. Ok. Agora eu tenho essa
informação corretamente. O que eu preciso fazer
agora é clicar no arquivo para baixar e selecionar CSV Esse é o formato
que precisamos usar. Agora, se eu abrir minha pasta de
downloads aqui, vamos chamá-la de T para tabela de dados. Vou chamá-lo com o
mesmo nome de dentro daqui, para que possa ser importado. Lembre-se de chamar o mesmo
nome, ET Weapon Info. Agora você pode clicar e
arrastá-lo até aqui. Se você clicar e
arrastá-la até aqui, ela dirá Nome esperado
da coluna não encontrado. Não tenho certeza do que eu chamo
isso. Eu o chamei de nome. Isso ocorre porque,
na verdade, precisamos de uma coluna aqui. Precisamos clicar com o botão direito do mouse e adicionar uma coluna à
esquerda e chamá-la de ID. Por algum motivo
, ele cria um ID, também
precisamos disso. O que eu geralmente faço é copiar todos os nomes e
colá-los aqui. Na verdade, vai extrair
informações do ID. E quando você extrai, por
exemplo, esse ID aqui, ele sabe o nome, o tipo, essa classe e assim por diante. Então, ele conhece todas
essas informações. Na verdade, você precisa primeiro de uma identificação. Ok, então vamos tentar
baixá-lo novamente como um CSV. Vamos voltar para aqui. Vou copiar esse nome. Vou deletar o antigo. E para o novo, vou
renomeá-lo assim. E agora eu posso arrastá-lo até aqui. Agora você pode ver que
funciona corretamente. Então, precisamos dessa identificação. Agora você pode ver que quando eu importo
minha tabela de dados, ela preenche automaticamente
todas as informações Então eu clico no primeiro, você pode ver que ele tem
o rifle AK 47 e está configurado
com o modelo correto E o outro, por
exemplo, em quatro, você também
pode ver as
informações corretas, também está aqui. Então você pode ver como
é
muito bom para pessoas que não sabem programar. Na verdade, eles podem
simplesmente entrar aqui, mudar o tipo da arma ou mudar o
nome da arma. E a única coisa que você precisa fazer agora é clicar no arquivo. Baixe essa pasta ou arquivo e
arraste-o para o jogo. E isso mudará
todos os valores. Dentro daqui, você pode imaginar que pode ter um valor na
loja e que
as moedas custem pela arma se
comprá-la na loja. E o designer do jogo
pode simplesmente vir aqui e editar todos esses valores
dentro da planilha do Excel. Você pode até mesmo criar
fórmulas aqui e calcular. Depois, basta clicar em Baixar
e
arrastá-lo até aqui e ele mudará todos os valores da
moeda aqui. Você não precisa fazer isso
dentro do motor. É muito bom usar uma tabela de dados, especialmente para pessoas
que não sabem programar. Eles podem entrar aqui e
alterá-lo a partir da tabela de dados, agora nós o temos dentro daqui. A próxima coisa é que precisamos
usar uma biblioteca de funções. Vamos fazer isso
na próxima lição.
101. 8.16 Usando a biblioteca de funções: A etapa final antes de podermos usar essa tabela de dados é
criar uma biblioteca de funções. Uma biblioteca
de funções, assim como o nome diz, uma biblioteca e dentro
dela estão as funções. Vamos clicar com o botão direito aqui
novamente, criar uma nova pasta. Deixe-me chamar isso de bibliotecas. E vamos mudar a cor
dela dentro dessa pasta. Vamos clicar com o botão direito do mouse em
Ir para Blueprints e usar essa chamada biblioteca de funções de
blueprint Você pode ver que já
usamos uma vaca modelo. Estamos usando a biblioteca de
plantas. Usamos a interface do blueprint. A biblioteca de macros é
igual à biblioteca de funções. Usamos a enumeração e também usamos Você pode ver que, na verdade, já
passamos pela maioria dessas aulas de
blueprint É muito bom que
você tenha passado por tudo isso e esteja
tendo a experiência. Vamos criar uma biblioteca de
funções de blueprint. E deixe-me chamá-la de biblioteca de funções
BP porque eu só tenho
uma no meu jogo Vamos abrir essa biblioteca de
funções dentro de uma biblioteca de funções. Você pode criar funções e
criá-las aqui. A vantagem de
uma biblioteca de funções é que você pode usar as
funções globalmente. Se eu criar uma função aqui, vamos chamá-la,
por exemplo, aleatória
se eu compilar Agora, se eu for ao meu
plano de jogador, por exemplo. E eu escrevo clique e digo aleatoriamente, foi assim que eu o chamei. Você pode ver, agora eu posso ver funções de uma biblioteca de
funções. Não importa
onde eu escrevo isso. Se eu abrir o
modo de jogo e escrever, deixe-me sair
desse, na verdade, deixe-me acessar o
gráfico de eventos e dizer aleatoriamente. Você pode ver, eu posso ver a função dentro
da biblioteca de funções. Qualquer função que
você faça aqui pode ser vista globalmente
por meio de todos os projetos Lembre-se de que não funciona aqui sem motivo, porque isso consome desempenho. Se essa biblioteca for enorme, a única coisa para a qual você deve
usá-la é se você tiver uma função usada
em muitos projetos Por exemplo, você está
recebendo as informações da arma Você pode usá-las
na base de jogadores. Você pode usar isso
no modo de jogo. Você pode usar isso
no controle de jogo. Se você tem uma função
que vai usar em
vários blueprints, então vá em frente e
coloque-a dentro de uma biblioteca de funções para que você não precise fazer
a mesma função repetidamente em
cada blueprint Mas funções específicas não as criam dentro de
uma biblioteca de funções. Isso se destina apenas a
funções que você
usará muitas vezes
em vários projetos Por exemplo, para
este, vamos
chamá-lo de Obter informações. Estamos recebendo as informações sobre as
armas. Eu também vou marcar puro,
puro só faz com
que seja aquela função verde. Se eu compilar e você puder ver se eu vou até a
base de jogadores, por exemplo e digo obter informações sobre a arma, você pode ver que ficou verde E a razão pela qual ficou verde
é porque eu cliquei em puro. E aqui você pode ver isso. Na verdade, fica como
aquelas funções verdes se você tiver criado uma. Este, por exemplo, para este, estamos recebendo
o controlador, você pode ver que está verde
porque está simplesmente obtendo informações. Se você definir informações , precisará desses pinos
aqui e eles são azuis Essas são funções definidas e
essas são funções get. Eles estão simplesmente
obtendo informações sem modificar nada Isso é o que queremos
fazer. Queremos obter informações sobre nossas armas. Nós o configuramos como puro
porque não estamos modificando
nada aqui A função principal que
precisamos usar aqui,
se você clicar com o botão direito do mouse, ainda
é a linha da tabela de dados. Esta aqui embaixo,
mas linha da tabela de dados. Essa é a função principal
que precisamos usar. E precisamos selecionar
nossa tabela de dados. Portanto, precisamos obter informações
das informações da arma T. Agora você tem
que dizer quais informações você deseja obter dele? Agora, isso precisa ser dinâmico, dependendo do que você está
fazendo dentro do jogo. Vamos fazer isso, e eu posso explicar isso mais tarde para obter
as informações sobre a arma. Agora vamos criar uma variável e vamos chamá-la de nome da arma. E eu vou
transformá-lo em uma corda. Vou pegar
isso e dizer substituir. E use essa função
chamada substituir. Agora, a razão pela qual eu uso isso é se você dentro da sua tabela de
dados aqui, digamos que você tenha um
nome, por exemplo, digamos que você tenha uma
arma chamada quatro em um. Vamos fingir
que isso é uma arma. Você tem espaços entre
seu nome para o ID. Agora, quando você cria algo
dentro de uma tabela de dados, ele realmente remove os espaços. Se você abrir a tabela de dados, digamos que você importe
esta no espaço um a. Se você importar
isso para aqui, ela realmente
removerá o espaço e escreverá apenas
um A sem espaço. O que eu geralmente faço aqui para remover todos os espaços daqui, quando você os carrega, eu pego o nome da arma
aqui no formulário. Eu pressiono espaço,
certifique-se de adicionar um espaço. Os dois podem simplesmente estar vazios. Nada dentro
daqui, só isso. O que isso está simplesmente
fazendo é ocupar todos os espaços
desses nomes. Digamos que seja esse. Ele está ocupando o espaço e o
substituindo por nada, que
significa que você está, na verdade excluindo o espaço dessa forma Em seguida, ele encontrará o ID correto dentro dessa tabela de dados. Porque essa tabela de dados remove
automaticamente esses
espaços quando você os importa. Quando você pesquisa por um nome
como neste espaço, isso lhe dará uma era. Estamos removendo todos os espaços e agora vamos
conectá-los aqui. Ele
converterá automaticamente
a string em uma variável de nome. Então podemos sair
daqui e dizer “volte”. Você pode conectar essa
saída ao retorno e chamar essa informação
de arma. Ok, agora terminamos
e preciso explicar todo
o processo para você, porque isso pode ser um pouco confuso O que estamos fazendo aqui agora é que agora
podemos dizer, por exemplo, aqui dentro da base de
jogadores
que podemos dizer obter informações sobre armas. E podemos chamar essa função que criamos na biblioteca de
funções. Estamos recebendo essa informação. Agora precisamos inserir
o nome da arma. Digamos, por exemplo, que faremos isso
na próxima lição. Mas digamos, por exemplo, que eu conectei o nome AK 47 Vai levar esse nome. Ele vai entrar nessa função na biblioteca
de funções. Ele vai pegar
o nome aqui, vai remover todos os
espaços, se houver algum. Ele vai colocar aquele AK 47 que eu escrevi aqui
no nome da linha, que significa que ele aparece
aqui no nome, ele procura o AK 47, ele procura este. Agora ele sabe que estamos
falando sobre essa linha. Ele sabe o nome, o tipo, a classe e assim por diante. Então você pode arrastar a partir
daqui e dizer quebrar, você pode quebrar estruturas. E agora você pode ver todas
as variáveis, pois ele pega as informações dessa tabela
de dados, agora sabe o nome do AK 47, sabe
que tipo de arma
é, de que classe é, porque está pegando todas essas informações
dessa tabela de dados. É assim que você o usa
e agora precisamos
realmente criar nomes para essas
armas. Liste isso por enquanto. Vamos compilar, salvar
e seguir em frente.
102. 8.17 Adicionando o nome da arma: Agora, o que precisamos fazer,
vamos fechar tudo. Vamos voltar para as armas
e vamos para a base de armas. Agora, dentro daqui, vamos criar uma nova
variável chamada, vamos chamá-la de nome da arma. Vamos dar a ele o tipo de string. Então, é só uma mensagem de texto. E se você compilar, você pode ver, você pode escrever algo aqui
agora para o nome da arma Como você cria essa variável, lembre-se de que, como você
criou dentro da classe principal do blueprint, todos os filhos
herdarão essa Se você abrir o Q 47, poderá ver nos padrões da
classe que agora você pode
escrever o nome de uma arma Você pode torná-lo específico
para cada arma. Agora você adiciona a variável dentro da
base da arma e depois
pode editar essa variável para ser algo específico
para cada criança. O nome da arma para o AK 47
é apenas K 47 para os quatro. Eu posso ver isso aqui. Não
preciso clicar aqui. O nome da arma para
os quatro é 41. Vamos fechar isso também. Para a pistola,
é só uma pistola. Na verdade, vou me
lembrar compilar aqui desse jeito Salve tudo. Agora você escreveu o
nome da arma para cada uma delas. Precisamos do
nome da arma, extraia as informações corretas tabela de dados porque se
o nome da arma for pistola, vamos inserir
o nome da arma e ela extrairá todas
essas informações daqui Ok, vamos fechá-lo agora. Agora, o que podemos fazer, por exemplo, é ir até o jogador.
Vamos até o jogador. Eu só vou te mostrar que você realmente não
deveria seguir aqui. Na verdade, eu só quero te
dar um exemplo. Temos, por exemplo,
essa arma saqueada. Essa arma saqueada eu
posso arrastar daqui. E agora eu posso dizer o nome e pegar essa variável de nome de arma. A partir disso, posso dizer
ainda informações sobre a arma. Essa é a biblioteca de funções. Agora podemos realmente
conectar isso. Digamos que eu andei
por cima de uma AK 47. Eu passei por ela e agora posso realmente extrair as
informações dela se eu simplesmente imprimir uma string na
minha tela e
conectá-la aqui embaixo. Vamos pegar isso e dizer que
quebre essa estrutura. Vamos imprimir o
nome dessa arma. Se eu apenas acompanhar, eu vou até lá, na verdade eu preciso escolher, então se eu escolher terroristas
e passar por cima dessa pistola, ela vai imprimir Se eu examinar isso em quatro, vai ser impresso em 41. Portanto, você pode ver que agora está extraindo
informações
corretamente ,
dependendo do nome da arma Deixe-me deletar isso por enquanto. Lembre-se de que
é muito importante que,
ao adicionar essa variável à classe principal, lembre-se de que você
precisa entrar em cada um
dos filhos e alterar
o valor dela. Ok, vá em frente e salve
tudo e vamos seguir em frente.
103. 8.18 Substituindo a variável WeaponType: Tudo bem, nesta
lição eu vou
substituir a variável do
tipo de arma. Se formos à base de armas, lembre-se de que criamos esse
tipo de arma e o estamos usando aqui para verificar se o jogador já tem a arma no
inventário. Esse tipo de arma, nós já fizemos isso dentro
da estrutura. Se você for até a estrutura,
lembre-se de que fizemos esse tipo. Agora, não precisamos que essas variáveis
extras estejam espalhadas. Na verdade, podemos usar nossa
estrutura para substituir isso. O que podemos fazer agora,
em vez de tudo isso, em vez de usar o tipo de
arma como esse, agora
podemos dizer obter informações sobre a arma. Podemos pegar isso aqui, inserir
o nome assim. Lembre-se de que estamos dentro
da base de armas. Já temos o
nome aqui. Agora, para obter o tipo de arma, temos que arrastar e dizer
break e podemos quebrar isso. O que você pode fazer,
você também pode escrever clique aqui e diga estrutura dividida. E você pode obtê-los assim. No entanto, eu gosto de apenas escrever pausas e
publicá-las aqui. Agora, essa é apenas a preferência. Agora posso pegar esse tipo, esse é o tipo de arma, e
posso conectá-lo aqui. Agora você pode ver que isso
é a mesma coisa. Agora eu posso realmente excluir essa variável de tipo de arma para esconder os pinos que
você não está usando Para melhorar a aparência, você
pode clicar nele e pressionar ocultar os pinos não conectados.
Parece que é assim. Ok, eu tenho que organizar
isso um pouco mais tarde, mas vamos deixar que esteja
aqui para esse tipo de arma. Aqui estou me retirando disso
e dizendo o nome novamente. Obtenha o nome da arma,
obtenha informações sobre a arma. E então você pode quebrar isso. Em seguida, você pode inserir
o tipo aqui; em vez disso, também podemos
excluí-lo. Agora você pode ver que não estamos mais
usando essa variável. Temos todas as informações sobre a arma
dentro desta. Ok, vou
organizar isso um pouco. Tudo bem, agora está um
pouco mais organizado para dar uma olhada se você tem outras referências
desse tipo de arma. Em vez de procurá-lo, sei que também o
usamos na base de jogadores. Mas se você não se lembra, digamos que você venha
aqui um mês depois e não se lembre de
onde o usou. Em outro lugar, você pode ver se
você tentar excluí-lo agora, ele diz que o tipo de arma variável já foi
usado. Você
quer excluí-lo? Estou pressionando não, porque ainda o estamos usando. Clique com o botão direito aqui e
diga encontrar referências. Agora, isso aqui embaixo
está apenas encontrando as referências dentro
deste projeto Mas se você clicar
nesse pequeno ícone, ele o encontrará
em todas as plantas Ele vai pesquisar em
todas as plantas. E você pode ver que é usado
na base de jogadores da BP. Se você clicar duas vezes
na variável aqui, ela nos levará e a usamos aqui na arma de
saque onde definimos o tipo de arma
equipada Em vez de fazer isso de novo, vamos pegar essa arma saqueada Digamos que coloque a arma. Na verdade, obtenha informações sobre armas. Obtenha o nome, obtenha o nome da arma. Em vez de fazer tudo
isso de novo e de novo, na verdade
vou
até a base de armas e vou copiar
isso e isso aqui. Então, as informações da arma Git
e a estrutura do freio. Então, eu posso
simplesmente colar aqui e conectar isso aqui,
é um pouco mais rápido. E agora você pode conectar
o tipo aqui. E você pode excluir
isso novamente apenas para tentar torná-lo o mais
organizado possível. Mas você pode ver que agora é muito
longo em comparação com antes. No entanto, novamente, você tem todas as informações
contidas nessa estrutura, então ela será muito
mais limpa para você. Tudo bem, agora
temos isso e
vamos abrir minhas referências novamente. Vou
clicar duas vezes neste agora. E eu o uso aqui
quando quero trocar ou conectar o ator
ao meu componente de malha. Novamente, assim como antes. Vamos copiar tudo
isso porque, na verdade,
estávamos usando
essa arma saqueada Novamente, vou
voltar aqui, saquear um
representante e vou
deletar isso,
abrir espaço além disso e depois conectá-lo E então basta empurrá-los de volta. A mesma coisa aqui embaixo.
Exclua-os e conecte-os. Assim mesmo. Ok, agora você tem que compilar,
salvar tudo E isso deve ser
tudo que você pode ver. Você não tem mais referências.
Eram todos eles. Se você voltar agora para a base de
armas e pressionar delete, ela será excluída
automaticamente
porque você não a está mais
usando. Agora você pode ver que
substituímos todos eles. As plantas estão ficando
mais limpas no futuro. Não temos cerca de dez
variáveis para a arma. Nós os temos todos dentro de nossa função funcional,
nossa estrutura. E a partir dessa estrutura, ele pega essas informações
da tabela de dados. E sempre podemos
prolongar mais tarde. Mas, por enquanto, essas são todas
as informações de que precisamos. Vamos agora salvar tudo
e seguir em frente.
104. Ação de entrada de arma 8.19: Ok, antes de fazermos a funcionalidade
Lote, como quando você pressiona um
botão, por exemplo. Se eu pressionar E em uma arma
no chão e a soltar, acho que é muito melhor
começar com uma arma solta. Porque se você estiver segurando
uma arma na mão, também
precisará soltá-la
ao saquear a outra Vamos começar soltando
uma arma antes soltá-la com uma tecla
no teclado Vamos para a entrada
aqui na pasta do player. Vá para Entrada, clique com o botão direito do mouse. Na verdade, você pode tentar fazer
isso sozinho, se quiser. É um bom
momento para se exercitar. Nós já fizemos
muitos deles. Você deve ser capaz de fazer isso sozinho. Tente fazer isso sozinho. Se possível, tente criar uma ação de entrada ou
soltar uma arma E adicione-o ao contexto
de mapeamento de entrada. E também adicione o evento
à base de jogadores. Agora vamos fazer isso juntos aqui. Vamos à direita para Entrada
e selecione Ação de Entrada. Vamos chamar isso de uma
arma. Vamos abri-lo. Na verdade, não precisamos
mudar nada aqui dentro. Vamos ao contexto do mapeamento. Vamos adicionar um novo mapeamento. Vamos selecionar a arma de lançamento. Vou soltar a arma
com a tecla G no meu teclado, assim como no Counterstrike Agora você pode usar
qualquer outra coisa que seja adequada para o modificador Vou clicar em Pressionado, porque você precisa pressionar
o botão e ele reproduzirá o código quando
não abranger isso. Ok, agora temos isso.
Vamos fechá-lo. Vamos até o
jogador, a base de jogadores. E dentro daqui,
vamos ao gráfico de eventos. Aqui embaixo, você pode clicar com o botão direito do mouse
e escrever o nome novamente, exatamente como você fez com
a entrada ou a arma de lançamento. Clique com o botão direito do mouse e diga uma arma solta e aqui está o
evento que você precisa usar. Agora podemos codificar na lógica de
soltar a arma, vamos salvar tudo e passar para a próxima.
105. Lógica da arma 8.20: Tudo bem, então vamos
começar com a lógica de lançamento da arma. Agora precisamos saber
qual arma
você quer retirar
do inventário. Agora vamos executá-lo
no servidor. Novamente, precisamos executá-lo no servidor para evitar fraudes Então, vou criar
um novo evento personalizado chamado SRV Weapon Vamos executar isso no
servidor e de forma confiável. Vamos rodar o servidor
que está dentro daqui. Ok, então quando eu pressiono a tecla
G para soltar minha arma, ela passará por
esse evento personalizado. Agora precisamos saber qual
arma estamos soltando. Estamos soltando a arma que
temos em nossas mãos. Precisamos saber qual
é a arma que estamos
segurando em nossas mãos. No momento, na verdade é
esse tipo de arma equipada. Ele sabe se estamos
segurando um rifle, pistola ou se estamos desarmados com essa arma
equipada Na verdade, vou
renomeá-lo para que soe melhor. Não é arma equipada, é tipo de arma equipada. Também precisamos
mudar o nome aqui. Na verdade, configure a arma equipada. É definido como tipo de arma equipada. Eu também vou
fazer isso aqui embaixo, defina o tipo de arma equipada. E a mesma coisa aqui
para as variáveis. Eles são chamados de
tipo de arma equipada e tipo de arma equipada. Tipo de arma equipada. Está
mais correto do que antes. Agora já sabemos qual é o tipo de arma
equipada. Precisamos encontrar isso
no inventário. Precisamos fazer o inventário de
armas. E podemos economizar para
cada loop com uma pausa. E vamos
conectá-lo aqui novamente. Lembre-se de que criamos
esse nome na última lição. Vamos pegar isso e dizer variável
name e pegar
o nome da arma. Agora estamos recebendo o
nome da arma do item agora. A arma aqui. Então, a partir desse nome de arma,
obtenha novamente as informações da arma. A estrutura aqui,
vamos quebrá-la. O que nos
interessa é que estamos
interessados em obter o tipo de arma
agora a partir
do inventário que
estamos examinando Se esse tipo que estamos
vendo atualmente no inventário for igual, enumeração
igual, se for igual ao tipo de arma
equipada, isso significa que
temos essa arma no inventário e é
a
que temos, certo? agora. Se for esse o caso,
queremos largar essa
arma agora. Ok, se for o fato que a arma que
estou procurando
agora no meu inventário é
igual ao tipo de arma equipada no momento. Isso significa que
essa arma aqui é realmente a que queremos
remover do inventário. Se isso estiver correto,
vamos clicar com o botão direito do mouse aqui e promover
isso para uma variável. Vou chamar isso
de arma para soltar. E agora podemos
conectá-lo aqui. Assim como antes de você
fazer este, vamos ver se podemos encontrá-lo. Você fez essa única arma de saque. Ao saquear a
arma, você remove a colisão aqui
da função de notificação A mesma coisa que realmente precisamos fazer aqui com
a arma de soltar, porque temos que habilitar
a física novamente, lembre-se de que simulamos a física nas armas desde
o início Na verdade, temos que fazer a
mesma coisa aqui para este. Vamos adicionar algumas
notas de rota traseira para que essa arma caia. Vamos clicar nele e
dizer, vamos compilar. Vamos fazer essa função
na próxima lição. Mas, por enquanto, vamos
continuar aqui, estamos soltando a arma E lembre-se também de
removê-lo do inventário. Vou pegar esse
inventário aqui e colar aqui e
dizer remover item. Digamos que remova
um item assim. Vamos agora selecionar o
item que queremos remover. É esse item de arma
ou item de inventário. Agora estamos removendo-o
do inventário porque,
se você não fizer
isso, ele ainda estará
no inventário. Se você deixá-la cair no chão
, devemos
lembrar de atualizar também
o
tipo de arma equipada. Arraste a partir daqui e diga
definir o tipo de arma de equipamento. Por enquanto, vamos
configurá-lo como desarmado. Podemos modificá-la posteriormente,
se você tiver uma pistola ou o que quer que tenha agora,
ao soltar a arma, vamos configurá-la para desarmada E foi isso. Agora você está
realmente soltando a arma. Agora terminamos
com este. No entanto, ainda precisamos criar
essa função de representante e notificação. Vamos fazer isso
na próxima lição.
106. 8.21 Drop Weapon Rep Notify: Certo, vamos abrir a
arma para soltar o representante e notificar. Se você não se lembra do
que fizemos, você sempre pode voltar
para a arma mencionada E aqui o que você fez foi
remover a física simulada, removeu a colisão da arma porque
agora a está segurando na
mão e também removeu a colisão da esfera
de colisão. Você pode opor a isso: se
voltarmos para nossa arma caída, precisamos primeiro soltar
a arma da mão Porque lembre-se de que,
nas armas saqueadas, você anexou isso
ao personagem O que precisamos fazer primeiro é
pegar essa arma para soltar. Precisamos dizer desapego. E você pode selecionar esse. Separe-se do ator. Agora você está separando
essa coisa aqui, essa arma para soltar
desse ator Vamos manter a localização, rotação e a escala para manter mundo onde quer que ele esteja
agora. Ele apenas mantém a
localização e assim por diante. Exatamente o oposto
das armas saqueadas. Vamos pegar isso e dizer que vamos primeiro definir a colisão porque não podemos
simular Se você realmente não configurou
a colisão corretamente, vamos
ativar a colisão .
Na verdade, é a arma Se você voltar, se não se
lembrar, sempre volte para a base de armas,
verifique
o que precisa de colisão Lembre-se de que é a arma que
precisa dessa colisão aqui. Na verdade, precisamos pegar isso
e pegar a arma primeiro, a variável da arma, pegar aquela. Então, podemos dizer que a colisão definida está
ativada aqui. Vamos conectá-lo. A colisão, lembre-se,
foi apenas física. Não precisamos de consultas para essa
malha aqui, apenas física. E também precisamos
simular a física. E fazemos isso com a arma. Lembre-se, se você voltar
e clicar na arma, é aqui que você
simula a física Não está nos padrões da classe. Você tem que se arrastar da arma e dizer simular física E selecione esse Deus,
conecte-o e habilite a física. Vá em frente e faça algumas
anotações de redirecionamento para torná-lo mais agradável. Ok, agora simulamos a física e também temos
algumas colisões ativadas Agora lembre-se de que você também
desativou a colisão. Se eu voltar para a arma saqueada, você também desativou a colisão
da esfera de colisão, você precisa pegar esta e usar a variável da esfera de
colisão Você desce até a parte inferior aqui, pega a
esfera de colisão e, em seguida,
define novamente uma colisão ativada
e sai e seleciona E sim, sem mais nem menos. Agora você precisa definir a
colisão para consulta somente porque na verdade,
a colisão é uma consulta somente para a esfera de colisão Você pode ver isso aqui. Somente consulta, precisamos configurá-la para somente consulta. Eu acredito que é a única
coisa que tivemos que fazer. Vamos testá-lo. Vamos
ver se tudo funciona. Se tivermos alguma caixa
que precisamos consertá-la, vamos jogar como o terrorista. Agora, se eu bater alto, por exemplo,
o AK e clicar em G, soltar a arma, você pode ver
que ela caiu no chão. Assim mesmo. Incrível. Na verdade, vamos jogar
em primeira pessoa, para que eu possa ver melhor. Vou clicar
no meu braço de mola para ver a base de jogadores
e configurá-lo para zero. Vamos jogar em primeira pessoa. Agora vamos pegar esse K.
Agora que estou segurando, eu pressiono para soltá-lo Agora você pode ver
que está no chão. Incrível. Vamos tentar pegar essa aqui e
jogá-la no chão. Agora você pode ver que temos um dólar. Eu não acho que seja invisível porque você não pode
vê-lo nas minhas costas. Estou me perguntando o que está acontecendo. Vamos pegar a primavera.
Vou configurá-lo para 600
para ver o que está acontecendo. E, na verdade, é
apenas o M quatro. Então você pode ver que a pistola
está funcionando corretamente. O K também está funcionando
corretamente. Nada está acontecendo
, exceto o M quatro. Estou carregando corretamente
na primeira vez. No entanto, se eu deixá-lo cair
e entrar nele,
oh, na verdade está embaixo de mim. Você pode ver isso nos meus pés. Está lá. Vamos realmente
corrigir isso rapidamente. Acho que precisamos
redefinir a localização. Se você for ao representante, notifique a
arma saqueada. Sempre que você saqueia uma
arma, você precisa reiniciar, transformar. Na verdade, vamos
fazer isso aqui depois anexar o componente
ao componente raiz. O que posso fazer aqui é pegar a arma e
dizer reset. E você pode ver algo chamado reset, transformação
relativa. Isso reiniciará
a transformação dessa arma aqui dentro da planta Como não basta reconectá-lo ao componente
raiz, também
precisamos redefinir
a transformação dele Vamos compilar, jogar e
ver se isso resolve nosso problema. Eu pego os quatro, eu deixo cair. Eu pego quatro novamente, e agora você pode ver
que está funcionando corretamente. Se eu voltar com meu
braço de mola, coloque-o em zero. Jogue agora como terrorista. Agora posso pegar isso em
quatro e posso soltá-lo. Posso aguentar de novo.
Eu posso largar isso. Você pode ver agora que está
funcionando corretamente. É um bom mecânico que,
na verdade, precisamos sair primeiro
da esfera de colisão
antes de podermos saquear Porque você pode
imaginar que, se você a soltar e não tiver
essa funcionalidade, continuará saqueando a arma Quando você o deixa cair embaixo de
você, você tem que sair
e entrar novamente e tudo está funcionando
perfeitamente, tudo bem A última coisa que
também esquecemos, ou eu esqueci, foi
quebrar o ciclo Porque se você encontrar
a arma aqui, nós realmente
precisamos quebrar o circuito. Precisamos pegar isso e executá-lo até
o intervalo. E vamos clicar duas vezes para
redirecionar os nós para
melhorar a aparência Porque agora, se
encontrarmos a arma, precisamos parar o circuito. Não precisamos examinar
mais porque já
encontramos os resultados. Temos que quebrá-lo
aqui através do loop. Isso o tornará
mais otimizado. Agora vamos compilar e
clicar em Reproduzir. E toque o personagem só para testar se tudo está
funcionando corretamente. Agora podemos ver que tudo está funcionando bem com
a pistola também Tudo está funcionando
bem também. Agora, às vezes você
recebe um erro se soltar a arma e
não tem nada realmente aqui. Em vez de continuar
soltando a arma, temos que verificar se você
realmente tem uma arma ou não Precisamos pegar esse tipo de
arma equipada e precisamos dizer: é igual a desarmada Na verdade, podemos dizer que não
é igual? Isso vai ser muito melhor. Se não for igual a desarmado, você pode
soltar a arma Se estiver desarmado, você não tem
nada na mão e não faz sentido
soltar a arma Se não estiver desarmado, você pode
soltar a arma, que a tornará
muito melhor E também remova
uma caixa que você possa ter mais tarde
se soltar a arma. E você pode ver agora que tudo está funcionando como deveria. No entanto, não se deixe enganar pois agora vamos tentar
jogar como cliente Agora, se eu jogasse como
cliente como terrorista,
agora, se eu entrar em uma arma, você pode ver que ela está
posicionada corretamente E se eu clicar em G
para soltar a arma, tudo
bem. No entanto, se eu for
saqueá-la novamente, você verá que estou segurando alguma coisa e, na verdade, estou
segurando a arma No entanto, ele ainda está
no chão. O que está acontecendo? Esse bug está acontecendo porque o
representante notifica Se eu for até a
base de jogadores, o representante
só notifica ser chamado se
o valor mudar Por exemplo, aqui, se
eu perder a arma aqui, digamos que eu aluda à
arma. Ok, bom. Eu defino essa variável, esse representante notifica que
está configurada para pistola Agora, se eu
deixar cair, vamos voltar ao jogo. Se eu deixar aqui, se eu distribuir os quatro,
tudo bem, é bom soltá-lo Se eu for até a
pistola funciona bem. Você pode ver que eu posso fazer isso. No entanto, não posso usar a
mesma arma duas vezes. Vai funcionar, mas
eu entro nela, você pode ver que está
saindo e algo está estranho.
Isso ocorre porque ,
se for o mesmo valor que está sendo inserido aqui
da última vez, na verdade
ele não
chamará uma função de notificação de representante A função de notificação do representante não
será chamada se for exatamente o mesmo valor
que você inseriu aqui E isso acontece com tudo. Por exemplo, digamos que você tenha uma variável vetorial e
esteja definindo alguma Digamos que você tenha definido
a localização da arma. Digamos que você esteja definindo
a localização da arma e, na verdade,
executando-a por meio de uma notificação de representante Digamos que a
localização da arma precise ser 000 e você a conectou aqui Agora, da próxima vez
que você executar isso e a localização da arma for exatamente
a mesma, na verdade, ela não
executará essa função de notificação de representante A
função de representante notificado só será executada se você estiver
alterando o valor Vamos deletar esse aqui. Vamos deletar isso na localização da
arma representativa
que acabamos O que precisamos fazer aqui é
mudar isso. Vamos realmente fazer isso
na próxima lição.
107. 8.22 Redefinindo o valor do aviso de representante: Tudo bem, agora vamos redefinir a função de notificação do representante
para que ela funcione corretamente. Então, o que podemos fazer
aqui agora você está usando esta arma de lançamento. Você o está executando corretamente. Agora vamos redefini-lo aqui. Quando o loop estiver concluído
e tudo isso estiver concluído, vamos
redefinir esse valor. Então, na próxima vez que a configurarmos, mesmo que seja o mesmo valor, ela executará essa notificação, porque a redefinimos antes
disso. Aqui embaixo, o que eu
preciso fazer é pegar essa arma. Vamos pegar isso aqui.
Está aqui embaixo, a arma para largar.
Vamos levá-lo até aqui. Vamos nos conectar ao completo. Na verdade, essa é a
única coisa que você precisa fazer se não inserir
nada nesse valor, ele jogará fora todas as informações
que estão dentro dele e redefinirá
essa variável aqui. O que podemos fazer agora é que
haverá um pequeno bug, e você provavelmente também
verá isso. Agora, se clicarmos em
Play, eu pego isso, eu solto, você pode ver
que agora está no ar. Estamos pegando corretamente. No entanto, ele ainda está no ar. Isto é, deixe-me
encerrar isso. Isso ocorre porque você
ainda está executando essa
função aqui. E, ao mesmo tempo, você está
redefinindo essa variável. Na verdade, precisamos
dar um pequeno atraso para que ele tenha a chance de
executar essa função de notificação. Antes de reiniciá-lo.
Deixe-me atrasar em algo muito pequeno, como 0,1, e então
podemos redefinir essa variável. Vamos compilar, vamos jogar
e ver o que acontece. Agora, se eu jogar como terrorista, eu pego e largo. Veja se funciona corretamente.
Se eu pegar de novo. Agora ainda há um
erro aqui e
temos que fazer a mesma coisa com a arma
de alaúde Agora diz X sem tentar ler a propriedade
da arma para
soltar, separada do ator Agora, o que precisamos fazer aqui é
porque, quando executamos isso, lembre-se de que, ao executar
uma função de notificação de representante, você está alterando o
valor, mesmo colocando zero nisso Mesmo que você esteja esvaziando, ainda
esteja alterando o valor E, na verdade,
executará tudo isso. Novamente, a maneira de
fazer isso é clicar com o botão direito do mouse
nessa arma para soltá-la e convertê-la em
um objeto validado e conectá-la aqui
sempre que for válida Podemos seguir em frente,
conectar e executar esse código sempre que
ele não for válido. dizer isso aqui, sempre que
não conectarmos nada aqui, isso fará com que isso não seja válido e não faremos nada
se não for válido. Vamos compilar e ver se isso
realmente resolve os problemas. Antes de continuarmos,
posso soltá-la aqui, entrar nela, e você
pode ver que ela ainda está invisível e temos que
esvaziar a outra variável. No entanto, você pode ver que
não recebemos nenhum erro, então eles foram corrigidos.
Vamos voltar. Agora, vamos até
as armas saqueadas. Este também
precisamos reiniciar. Lembre-se de que isso também está configurado para a mesma variável porque você está saqueando a pistola
repetidamente Agora, para este, o que podemos
fazer aqui, lembre-se de que não está vazio, então estamos verificando se o conjunto de armas
sobrepostas está vazio ou não Se estiver vazio, colocamos a arma de saque
novamente, aqui Novamente, posso dizer que demore 0,1 segundo para dar
a ele a chance de jogar. Sempre que isso for feito, posso pegar essa arma
saqueada e configurá-la assim e esvaziar
os valores aqui dentro Agora lembre-se de entrar
nisso novamente e garantir
que isso seja válido
sempre que você fizer isso Vamos clicar com o botão direito do mouse em converter em um get validado,
assim como antes Somente quando é válido. Queremos executar o código
porque, se ele não for válido, não
queremos fazer nada. Vamos compilar, salvar tudo. Deixe-me clicar em jogar agora,
e isso deve funcionar. Se eu jogar como terrorista, largo a arma e
saqueei novamente. Você pode ver que foi
saqueado corretamente. Se eu deixar cair muito de novo, você pode ver que agora está
funcionando perfeitamente. Está correto. Agora ele
funciona como cliente. E se eu jogar o servidor de escuta do
jogo. Então, se eu jogar como servidor
e também como cliente. Agora aqui está meu servidor. Eu vou desovar. E aqui está meu cliente. Eu também vou desovar. Eu mencionei a pistola como minha cliente e você pode
vê-la aqui no servidor,
e se o servidor e se o servidor K, por exemplo, você
também pode vê-la Se eu deixar cair, eu aludi, você pode ver que você pode ver isso
tanto nas telas
aqui quanto no cliente, eu posso largar esse lote, tudo está funcionando corretamente Se eu aludi às informações, elas também estão corretas OK. Tudo está
correto, está bonito. Agora, há um pequeno problema. Se eu for até o jogador e
o jogador soltar a arma, você pode ver que agora estou
segurando a arma. No entanto, como jogador, como cliente,
não consigo ver nada. Mas como servidor, você pode
ver, eu posso ver o K. Agora, o que está acontecendo? Você pode estar pensando
que isso pode ser um problema de replicação,
porque, como servidor, posso
ver as informações corretas,
mas, como cliente, não consigo
ver as informações corretas Isso pode ser um problema de
replicação. Porque você pode
ver no chão, eu posso realmente ver a arma. Há algo errado. Agora, eu não suspeitaria de
um problema de replicação. Eu posso realmente ver a
arma no chão. Se fosse um problema de replicação, a arma deveria estar nas minhas costas Porque então ele pensa
que eu já tenho algo na minha mão e
colocaria meu Ak nas minhas costas. Mas por alguma razão estranha, a arma está realmente
no chão e aqui está na minha mão Provavelmente, o problema é que você esteja
saqueando a arma Como o outro jogador, você está realmente saqueando
a arma antes ter a
chance de jogar todo esse código na arma
de soltar Vamos realmente fazer isso
na próxima lição. Vamos corrigir esse problema.
108. 8.23 Interação de armas: Para garantir que não possamos
interagir com essa arma até que ela realmente passe e seja
reiniciada. Então, na verdade,
queremos interagir com a arma porque, no
momento , os jogadores estão interagindo
com ela muito rápido. Vamos para a base de armas. E dentro daqui eu vou
criar uma nova variável. Vamos chamá-lo, pode
ser interagido. Vamos
transformá-lo em um lingote. Agora vamos para a base de jogadores. Na verdade, vamos fazer com que, por padrão, você possa
interagir com ele. Se clicarmos
nesse
lingote, vou defini-lo como verdadeiro padrão. O que podemos fazer agora
é ir até o jogador. Agora, não
quero que eles
interajam com ele. Depois de realmente encontrarmos essa arma e
quisermos soltá-la, vou
arrastá-la para longe. Agora temos essa arma. Eu só vou dobrar aqui. E eu posso partir
daqui, dizer e interagir com ele, e
podemos configurá-lo como falso Agora, não precisamos replicar isso e o motivo é que estamos apenas executando isso
no servidor Às vezes você acha que às vezes
está replicando coisas, às vezes não está
replicando O que eu realmente
preciso replicar Se você precisar de algumas variáveis que você está usando apenas
durante as funções do servidor, elas não
precisam ser replicadas Você está definindo se isso pode
ser interagido ou não. Se você está usando essas
informações apenas dentro
das funções do servidor para fazer alguma lógica e os outros jogadores não precisam saber sobre isso, você realmente não
precisa replicá-las No entanto, se você quiser
outras coisas, por exemplo, qual arma você está
equipando, se estiver usando aqui
, você pode ver o tipo de arma
equipada Na verdade, estou usando aqui, onde o cliente também executa o código. Agora, se isso não for replicado, isso dará uma
era para o cliente No entanto, pode ser que
se eu o usar aqui em cima onde
o cliente também está, eu tenha que replicá-lo Mas como eu o estou usando apenas
na lógica do servidor
, na verdade não
preciso replicá-lo É como uma
coisa interna. Você pode salvá-lo agora. Agora não consigo interagir com
a arma aqui embaixo. Sempre que for concluído, quero
definir que minha pode ser interagida como
verdadeira Agora precisamos
configurá-la antes desta, porque lembre-se de que você está
excluindo a variável Antes de excluirmos a
variável, precisamos usá-la. Vamos pegar isso e dizer que
pode ser interagido com. E vou defini-la como verdadeira porque agora
podemos interagir com ela e depois queremos
excluir essa variável. Você
não quer fazer isso aqui porque
excluiu a variável, então essa seria inválida Agora isso é excluí-lo. Agora, o que precisamos
fazer é ir até
a base de armas aqui. Também precisamos escrever aqui que, se você não conseguir
interagir com ele, não faça nada depois da autoridade. Vamos
atacar a partir daqui. Lembre-se de que não
replicamos essa variável. Se escrevermos algo aqui, isso nos dará uma era em
que estamos escrevendo,
depois que o switch tiver autoridade, então só o estamos usando
dentro do servidor, então tudo ficará bem,
não precisaremos replicá-lo Vamos pegar, isso
pode ser interagido e vamos fazer uma ramificação Digamos, isso pode
ser interagido com isso? Se puder, vá em frente
e execute o código. Se não puder, vou
atrasar o código em,
digamos, 0,1 segundo. E então eu vou
executar isso de novo. Então, eu continuo
examinando esse código. Na verdade, vou
organizar isso um pouco mais. Então, basicamente, o que
estou fazendo aqui é continuar
percorrendo o código para
ter certeza de que posso interagir com minha arma antes de fazer
algum código de interação Então, deixe-me tentar organizar isso aqui,
deixe-me reduzi-lo. Então, agora, o que estou
basicamente dizendo é que vá em frente e dê uma olhada e veja se isso pode ser
interagido Se puder, execute o código com
antecedência. Se não for possível, vou repetir ou atrasar o
código em 0,1 segundo. E depois vou
voltar e verificar se é
possível interagir com isso Eu continuo
examinando e estou esperando isso seja verdade, porque
sempre que você soltar a arma, isso acontecerá muito rapidamente Então você nem vai
notar esse. Não se preocupe,
isso não prejudica o desempenho porque isso
vai se repetir muito rápido. E não vai
funcionar muitas vezes, porque isso vai
ser verdade muito rápido. Então, na verdade, este
não está sendo executado muitas vezes. Então não se preocupe com isso. Vamos tentar clicar em
jogar agora e ver o que acontece se eu jogar como
terrorista e maximizá-lo. Eu saqueio algo e clico em, você pode ver que eu estou realmente
saqueando instantaneamente E esse é o problema
que temos agora. Se eu soltar a arma
muito rápido, continuo saqueando-a porque na verdade ela está indo aqui e verificando se eu consigo
interagir com ela Mesmo sendo
o mesmo jogador,
o mesmo jogador que
solta a arma pode interagir com Então, isso é algo que
temos que corrigir. No entanto, no momento,
o código está funcionando. Só podemos interagir com ele sempre que isso acontecer. Portanto, não obtemos nenhuma caixa
por ela ser invisível. Então, vamos para
a próxima lição.
109. 8.24 Removendo interação do Dropping Player: Tudo bem, agora precisamos
escrever um bom código aqui
antes que isso funcione. Como queremos
ter certeza de que o jogador que está soltando
a arma agora, queremos garantir
que o jogador que essas informações não as esteja
saqueando Novamente, só queremos que o
outro cara saqueie as informações. Não queremos interagir
com ele imediatamente,
caso contrário, você continuará saqueando Precisamos definir
a arma caída. Deixe-me ir em frente e fazer
um novo evento para clientes. E vamos chamar isso de um
conjunto de arma caída. E vamos executá-lo novamente
no servidor. Conjunto de servidores descartado. Em seguida, precisamos
executar isso no servidor
e ser confiáveis, e
precisamos executar
o evento normal aqui, ativar a arma solta. Ok, aqui embaixo, nós
simplesmente precisamos definir essa variável. Vou clicar aqui adicionar uma nova variável. É apenas a base de armas
porque precisamos da arma. Vamos chamar isso de arma
caída. Vamos
conectá-lo aqui também. Para este, vamos
promovê-lo para uma variável e, digamos, arma
caída. Agora, acho que não
precisamos replicá-lo, porque acho que só
precisamos executá-lo
por meio do servidor Mas eu realmente não posso determinar
isso por enquanto. Vamos fazer o código e, mais tarde, se realmente usarmos isso também
no cliente, precisamos replicá-lo Por enquanto, vamos deixar
que não seja replicado. Gosto que as coisas
não sejam replicadas quando não
precisam ser replicadas Porque lembre-se de que quanto mais
informações você replicar, mais lento será o jogo Porque você está
enviando informações do servidor para o cliente. Quanto mais informações você
envia, menos desempenho. Apenas mantenha as coisas não replicadas
sempre que puder. Agora temos essa arma caída. Agora, quando você saqueia coisas aqui, quando está interagindo
com elas na base de armas, precisamos ter certeza de que você não saqueia a O que eu preciso fazer
aqui é do player, antes de fazer tudo isso,
eu posso arrastá-lo para longe. Antes de fazer tudo isso, posso pegar isso e dizer abandonado. Nós levamos isso aqui. Se a arma caída
for igual a eu, essa arma, eu estou
tentando saquear agora Se for igual,
não faça nada. Se não for igual, vamos excluir
isso e dizer que não é igual. Isso será melhor
para facilitar a leitura. Se a arma caída não
for igual
à arma com a qual estou
tentando interagir no momento
, podemos
saqueá-la No entanto, se for o mesmo, não faça nada. No momento, não
definimos a arma caída. Vamos realmente fazer
isso. Deixe-me dizer isso. Deixe-me voltar para a base de
jogadores aqui em cima. Sempre que soltamos a arma, vamos realmente colocar a
arma e defini-la. Deixe-me chamar esse
evento aqui embaixo. Arma soltada,
deixe-me chamá-la aqui. E a arma caída
é simplesmente essa. Você pode simplesmente ligar para este aqui. E vamos
aproximar tudo, como antes. Vamos compilar e
salvar tudo. Tudo bem, agora
podemos experimentá-lo. Vamos clicar em Jogar e
jogar como terrorista. Agora, se eu saqueio
algo e o faço, você pode ver que não estou
interagindo com O problema dessa arma
caída continua o mesmo. Então, na verdade, nunca mais
poderei saquear essa arma. Temos que removê-lo sempre que quiser. Você pode ver aqui, sempre que
eu carrego e
solto, eu venho aqui novamente, você
pode ver que não consigo carregá-lo. No entanto, sempre que saímos
dessa esfera de colisão, preciso redefinir essa variável de arma
solta Podemos fazer isso na base de
armas novamente. Lembre-se de que usamos o
componente on start overlap. Agora, o que podemos usar se você clicar na esfera de colisão
novamente e descer, você pode usar esta
na sobreposição de colisão Agora você pode usar isso para remover a definição
da arma caída. Agora, o que podemos fazer
é, como antes, copiar Este ator tem um player
técnico porque
queremos ter certeza de que é o jogador saindo dessa esfera
de colisão Vamos conectar isso novamente. O Switch tem porque
queremos ter certeza de é o servidor que lida com tudo isso
para evitar fraudes A única coisa que queremos
fazer é ajustar a arma solta
da mesma
forma que reinicializar a variável. Pegue isso e diga
para obter informações do jogador. Ou obtenha a referência do jogador. Na verdade, não é informação, obtenha a referência
do jogador.
Vamos conectá-lo. Vamos chamar o conjunto de
arma caída e transformá-lo em nada. Estamos apenas redefinindo a
variável. Tudo bem, aqui está. Vamos compilar e
salvar tudo. E vamos tentar
lutar. Clique em jogar e eu
coloco o terrorista. Agora eu me deparo com o. Em quatro, eu o deixo cair, eu fico sem ele, eu corro para ele. Agora você pode ver que está
funcionando perfeitamente. Eu não o saqueio instantaneamente, só o
saqueio sempre que
saio dessa esfera de interação E eu entro novamente. Eu posso saquear a arma. Agora vamos tentar clicar em play. E jogue como dois jogadores. Agora, se eu minimizar esse cliente, na verdade esse é o servidor. Vamos jogar como cliente e também
como cliente. Eu posso saqueá-los em quatro. O servidor tem uma
aparência bonita. Eu posso largar isso. Parece correto. Eu
posso saqueá-lo novamente. Parece correto. Ok. Eu posso tentar te dar
essa arma aqui. Eu vou largar isso.
Esse cara agora o saqueia. Eu posso esquecer isso desse cara. Agora eu não posso realmente saqueá-lo. Às vezes, ele se apaga, você
pode ver que às vezes quando eu
solto , ele realmente se apaga. Eu não o perco instantaneamente. Essa é a
esfera de colisão, você pode ver aqui. Eu não posso mais saqueá-lo. Estou tentando entrar nela. Não posso saqueá-lo
aqui como servidor. Isso ocorre porque o outro jogador está realmente de pé sobre
ele e está sofrendo a colisão daquele outro jogador
que está em cima dele Sempre que o novo jogador tenta se conectar
ou interagir com
ele, na verdade não
está fazendo nada. O problema agora com essa sobreposição inicial é
que ela está verificando
apenas um jogador Se houver vários jogadores sobrepondo essa esfera de
colisão, na verdade
ela está um pouco incomodada Temos que consertar isso também. Você pode ver que temos
muitas coisas para consertar e essa é simplesmente
a natureza dos jogos. Você continua tendo problemas
que precisa resolver, mas é muito bom
quando tudo está funcionando e tudo
está escrito. Agora vamos para
a próxima lição e continuaremos
aprimorando o código.
110. Melhoria da interação do jogador de arma 8.25: Tudo bem, bem-vindo de
volta. Agora, vamos melhorar esse código para
garantir que, embora vários jogadores estejam interagindo com a esfera de colisão, isso é levado
em consideração agora quando garantimos que podemos
interagir com essa arma Agora, em vez de apenas
fazer isso aqui, deixe-me arrastar esse código para longe. Deixe-me arrastar isso
para baixo e deixe-me arrastar isso para que tenhamos mais
espaço para trabalhar. A maneira como você interage com
várias coisas é escrever clicar e dizer, obter atores
sobrepostos Agora você tem todos os atores
sobrepostos. Eu posso pegar todos os jogadores
que estão se sobrepondo. Essa aqui, que está se sobrepondo, é a base de jogadores É a
base de jogadores, o que significa que todos os jogadores
estão aqui para esta. Agora posso perguntar se o comprimento é maior que um ou se o
comprimento é realmente um. Eu posso tirar disso
e dizer o comprimento. Posso perguntar se isso
é maior que um. Porque se não for
maior que um, significa que é apenas um
jogador interagindo com ele Essa é uma informação crucial. Se for maior que
um, eu posso fazer alguma coisa. No entanto, se
não for maior que um, posso pegar isso e
obter o primeiro índice, ou
seja, apenas esse
jogador, esse jogador. E agora eu posso
conectá-lo a este. Em vez de tirar isso
desse outro ator, agora
posso pegá-lo
desse jogador sobreposto E eu posso
conectá-lo aqui se for menor ou não
maior que um, o que significa que é apenas um jogador que está interagindo com
essa esfera de colisão Eu posso pegar esse jogador
aqui do índice zero, e eu posso conectar esse
jogador aqui. Ok, então está
funcionando perfeitamente. No entanto, e se
tivermos vários jogadores? No momento, estou apenas verificando
se é um jogador. Então, se você tem vários jogadores sobrepondo
essa esfera de colisão, preciso examiná-los Eu posso pegar todos esses atores
sobrepostos, eu posso dizer. Ou cada loop com intervalo. Quero ter certeza de que
quem soltou a arma não interaja com essa arma que
tenho no Eu posso conectar isso Agora eu posso partir
daqui e dizer
obter referência do jogador. Agora, para cada um desses jogadores, o que eu posso fazer agora é
pegar a arma caída. Posso perguntar: essa arma
caída para esse jogador que estou
examinando agora não
é igual Na verdade, estamos apenas escrevendo
o mesmo código que aqui embaixo. Se não for igual
à arma que estou tentando
saquear agora
, posso ir em frente
e saquear a Estou percorrendo cada jogador. Estou tentando encontrar o jogador que ainda não
soltou a arma. Se for verdade,
deixe-me clicar aqui e
promovê-los como uma variável E chame esse jogador
interativo. Deixe-me configurá-lo para aqui. Vá em frente e configure para fazer
algumas anotações de redirecionamento para
que pareça muito melhor Agora, quando
definimos essa variável, o que podemos fazer agora está
aqui na íntegra Quando eu encontrar meu player
interativo, quero pegar isso
e quebrar o loop Lembre-se, sempre
quebre o loop para não
colocar nenhuma caixa aqui. Seu código também será muito mais otimizado porque você
não percorre tudo. Eu quebro o código,
quebro o loop. Agora eu tenho o player
interativo. O que eu posso fazer agora. Agora precisamos examinar
o inventário. Porque não precisamos
executar tudo isso aqui. Nós já fizemos isso aqui em cima. Portanto, precisamos examinar
diretamente o inventário do jogador que está
interagindo Em vez de partir daqui, na verdade, basta
que
o jogador interagindo agora passe por isso aqui em cima, um jogador e você
passe por isso aqui O que você pode fazer é
clicar com o botão direito sobre este
e promovê-lo. Ou simplesmente pegue aqui. Esse é o jogador interativo. Agora, se for apenas um jogador
e ele passar por isso e executar
corretamente, você pode fazer isso. Em vez de fazer tudo
isso, você
sempre pode simplesmente pegá-lo
daqui agora e conectá-lo aqui
para que eu possa mover meu código um pouco para que
não fique muito confuso Assim mesmo. Agora estou apenas usando esse player
interativo Você pode pegar isso e
conectá-lo aqui. Na verdade,
não assim. Não sei por que eu o configuro, arrasto para fora, conectei aqui. Em vez de partir
diretamente disso, agora estamos apenas usando isso, essa variável que definimos. Na verdade, vou deletar este e apenas
conectá-lo a cada um deles. Assim mesmo. Ou
o que você pode fazer. Na verdade, vou
usá-lo várias vezes. Vou usar o player
interativo aqui. Eu também vou
copiá-lo aqui neste. E você não precisa desse. Eu posso simplesmente conectá-lo
diretamente, sem mais nem menos. Eu também posso conectá-lo aqui. Estou apenas substituindo
as notas artísticas traseiras para que pareçam muito melhores pois esta vai
para esta aqui. Vou excluir
as notas artísticas traseiras. E apenas conectá-lo aqui, parece muito
melhor do
que Agora estamos examinando isso. Estamos configurando o jogador que
interage e agora estamos
percorrendo o inventário Tudo bem, agora eu
organizei isso. Agora, como você pode ver, estamos pegando a variável interativa do player e a executando
por meio do código Estamos nos certificando de que seja o jogador interativo que possa interagir com tudo isso Vamos testar esse código.
Vamos clicar em jogar. E vamos jogar como
terroristas, por exemplo. Deixe-me jogar como cliente. Novamente, selecione Terrorista. Deixe-me perder alguma coisa. Deixe-me saquear essa pistola. Eu vou até o jogador, vou deixá-lo para o jogador. O jogador
deve saqueá-lo. Vou devolvê-lo. Agora você pode ver que esse
jogador o saqueia. Vou devolvê-lo.
Esse jogador a saqueia, eu vou devolvê-la Agora você pode ver que agora está funcionando e tudo
está funcionando bem. Se eu deixá-lo aqui, não
posso interagir com
ele a menos que eu saia
dessa esfera e
corra de volta para ela. No entanto, mesmo
estando na minha frente, esse cara pode saqueá-lo
sem nenhum problema Agora você pode ver que tudo
está funcionando corretamente agora. Incrível. Agora,
na verdade, parece mais um jogo do que
apenas um protótipo Estamos chegando mais perto nossa meta e você pode ver
que tudo está bem É muito divertido de
jogar e será muito mais divertido agora, quando adicionarmos o disparo, o
recarregamento e assim por diante Como você pode ver, tudo
está funcionando bem. Se eu de alguma forma notar
alguma caixa no futuro, vou fazer alguns
vídeos para eliminá-las. Ou você sempre pode visitar Pixel Helmet.com ou você pode
visitar meu servidor Discord Se você encontrar alguma caixa
que eu não tenha percebido, estou sempre consertando e
mostrando como consertá-la, mas por enquanto não podemos
realmente ver nenhuma caixa. Tudo
parece funcionar perfeitamente. Eu vou melhorar
o jogo mais tarde. Por exemplo, podemos melhorar
o que achamos que parece ruim. Parece iniciante que sempre
podemos consertá-los. Aqui estou testando-o como
servidor e clientes. Eu também posso entregá-lo
ao cliente. Eles podem soltá-lo para frente e para trás. Eu posso jogá-lo no chão. O outro jogador pode
entrar nela e saqueá-la. Eu posso colocá-lo aqui
como servidor. O cliente também pode se deparar com
ele e saqueá-lo. Você pode ver que realmente não
temos nenhuma caixa no momento e tudo está funcionando
perfeitamente no futuro. Novamente, você pode visitar meu site
ou servidor do Discord novamente, Pixel Helmet.com, e eu me
certificarei de que, se
alguma caixa aparecer de alguma forma
durante o desenvolvimento do jogo, sempre
poderemos corrigi-la Mas, por enquanto,
tudo está funcionando. Tudo está bem. Vamos
passar para a próxima lição.
111. 8.26 Arma de saque com chave do teclado: Vamos agora adicionar algumas teclas do teclado
para saquear as armas Antes de fazer isso, quero
aumentar o tamanho da minha interface do usuário. Alguém me disse
que é difícil
acompanhar quando meu UIize é pequeno Se você também quiser aumentar
o seu, clique em Ferramentas e depois em
depurar e depois no refletor de widgit Vou aumentá-lo para 1,2. Talvez seja mais fácil
para você seguir. Você pode ver que minha interface de usuário está
maior, agora me
avise se isso ajuda ou se
devo transformá-la novamente em uma. Feito isso,
vamos prosseguir com
a entrada e fazer uma
nova ação de entrada, certo? Novamente, você pode fazer isso
sozinho, se desejar. Nós já fizemos muitos deles. Vamos clicar com o botão direito do mouse e ir para
Entrada e ir para a ação de entrada. Vamos chamar isso de arma única. Então, para este,
vamos prosseguir com a
ação de
mapeamento de entrada. Vou clicar no sinal positivo aqui em cima e descer aqui e adicionar esse lote de ações de entrada de
armas. Vou pressionar minha Ekey para
saquear a arma novamente. Aqui, para ver os gatilhos, vou configurá-lo para pressionar, salvar e
fechar Vamos voltar para o jogador. Ok, dentro daqui. A propósito, vamos
limpar tudo isso em breve em
algumas aulas. Porque você pode ver
que fizemos muito e
também precisamos nos organizar um
pouco antes de continuarmos. Antes de fazermos isso,
vamos até aqui e
clicar com o botão direito do mouse e procurar
a arma A lot. E escolha esse evento. Ok. O que eu quero fazer
é que, ao pressionar meu EK, quero carregar qualquer
arma que esteja embaixo de mim O que precisamos fazer é
criar uma nova função porque já temos
uma aqui. Deixe-me ver aqui. Já temos essa
chamada arma Lot. Essa arma de lote. Lembre-se de
que adicionamos uma arma de sobreposição daquela que chamamos de arma
de saque Basicamente, não é
saquear uma arma diretamente. É mais como se estivéssemos
solicitando o saque uma arma se encontrássemos
uma arma sobreposta Se eu conseguir encontrá-la novamente aqui, se eu encontrar uma arma sobreposta, então eu posso ir em frente e saqueá-la Vamos criar um novo evento personalizado. E essa que vamos
chamar de arma de lote de requisição. E vamos executá-lo por meio
do servidor e de forma confiável. E vamos ligar para cá
quando pressionarmos a tecla E. Vamos chamar o SRV
Request Lot Weapon. Ok, então primeiro
vamos verificar se estamos sobrepondo alguma arma
porque não queremos
jogar o código. Se estivermos aqui e não
tivermos nenhuma arma embaixo de nós, isso não faria nenhum sentido. Vamos clicar com o botão direito do mouse e dizer isso. Atores sobrepostos. E vamos mudar essa para
a base de armas. Estamos nos certificando de que estamos
sobrepondo a uma arma. Vamos atacar a partir daqui
e dizer que não está vazio. Isso apenas verifica
se estamos realmente sobrepondo a uma
arma. Pelo menos. Vamos atacar aqui
e fazer um galho, e ir em frente e conectá-lo. Quando temos uma arma aqui, se ela não estiver vazia, isso significa que estamos sobrepondo
a uma Temos que verificar se já
temos essa arma
no inventário. Porque se você já está
segurando essa arma nas costas
ou na mão, precisa
soltar a arma atual. Você não pode ter duas pistolas ao mesmo tempo e não pode ter
dois rifles ao mesmo tempo É claro que você pode fazer
isso para seu próprio jogo, mas para este jogo que
estamos criando, você só pode ter
um rifle, pistola, uma granada ou faca ou
qualquer outra coisa para Digamos que aqui, vamos tentar
encontrá-lo em nosso inventário. Lembre-se de que já estamos
fazendo tudo isso. Na verdade,
vou pegar isso e copiar tudo isso aqui. Vou copiar isso
aqui e colar aqui porque estamos
fazendo o inventário e depois verificando se já
temos essa arma por meio desse tipo de arma.
Para
esse tipo aqui embaixo, é simplesmente a arma que
estamos sobrepondo Então, vou me arrastar
daqui e dizer recebe. E então vamos pegar uma cópia. E vamos obter
o índice de um. Se estivermos sobrepondo
várias armas, obteremos apenas o índice zero aqui e
vamos verificá-lo Ok, então o que precisamos fazer, assim como antes, precisamos
obter o nome deste. Não podemos realmente dizer o nome da
arma agora e obter essa variável
porque esta,
se você segurar o mouse sobre ela, é apenas uma referência geral do objeto
ator. Lembra dessa?
Este é o BP, objeto baseado em
arma
ou referência de objeto Portanto, se você tiver apenas
um general para referenciar, primeiro precisará transformá-lo
nessa base de armas. Para este, temos que
obter a referência da arma. Acho que não
fizemos isso aqui. Nas interfaces que não
fizemos, obtenha a referência da arma. Novamente, tente fazer isso
sozinho, porque já
fizemos isso antes,
apenas para praticar. Tente fazer com que uma função obtenha referência de
arma e
tente usá-la aqui. Ok, se você não se lembra,
vamos fazer isso juntos. Clique com o botão direito do mouse, vá para Blueprint e escolha a interface
Blueprint Vamos chamar isso de uma
base de armas. Vamos abri-lo. Digamos que pegue a arma
F. Agora vamos compilar. Aqui embaixo, você deve selecionar
a qual Eva você está
tentando se referir. Estou tentando fazer referência à base
de armas,
selecioná-la e chamá-la de arma. Vamos compilar e
salvar tudo. Vamos voltar aqui. Deixe-me pensar nas armas, vamos abrir a base de armas. E agora vamos para as configurações
da classe e adicionar a interface
aqui chamada Base de Armas. Vá em frente e selecione Compilar. E agora você pode
abri-lo aqui
nas interfaces e
rastrear a partir daqui e dizer self. Isso é uma autorreferência. Agora definimos
essa variável. Agora, o que podemos fazer é
voltar para a base de jogadores e aqui podemos arrastar e dizer
isso, referência à arma. Agora temos uma referência
a essa base de armas. E agora transformamos essa referência
geral de ator em
uma referência de objeto
ou ator base de arma. O que podemos fazer é
arrastar isso agora para aqui fazer login como antes. Vamos arrastar e dizer que,
na verdade, pode simplesmente copiar e
colar tudo isso. Vamos apenas copiá-lo.
Não precisamos escrevê-lo 100 vezes. Vá
em frente e conecte-o. Na verdade, vou
arrastar
este aqui abaixo e
conectá-lo aqui. Vamos arrastar a partir daqui, fazer uma ramificação e conectar esta. Ok, então antes de
ficarmos muito confusos, talvez o que estamos fazendo aqui seja pegar aquela arma com a qual
estamos sobrepondo E agora estamos examinando o
inventário. Estamos tentando ver se
já temos essa arma. Se eu simplesmente não clicar para fazer uma nota traseira para que você
possa ver o que está acontecendo. O que estamos fazendo é
vasculhar
o inventário e verificar
se já temos esse tipo de
arma em nosso Se tivermos esse tipo de arma, temos que soltá-la primeiro. Digamos que eu esteja
saqueando um AK 47 e já tenha um
M41 nas minhas costas Eu tenho que largar esse 41. Então, temos que soltar a arma. Lembre-se de que já
fizemos aquela arma de lançamento. Nós chamamos isso. Agora não precisamos ligar para
este evento daqui. Isso ocorre porque, na verdade,
estamos examinando o Não precisamos fazer isso porque já
estamos fazendo isso aqui. Na verdade, temos essa parte aqui, mas o que precisamos é
dessa parte em que façamos que o jogador não possa
interagir com a arma. E a arma
será descartada e assim por diante, e será
removida do inventário. Na verdade, também configuramos
esse tipo de arma. Precisamos de tudo isso, você pode
simplesmente colar aqui. No entanto, para uma boa prática de
codificação, em vez de apenas copiar e colar, é melhor transformá-la em uma
função para que possamos usá-la novamente Vá em frente e aqui no servidor, solte a arma deste. Selecione tudo isso, basta selecionar tudo aqui
sem essa ramificação. E clique com o botão direito para entrar em colapso. Para funcionar, transformamos
isso em uma função, vamos chamar essa função de arma de
soltar. Solte a arma. Deixe-me clicar duas vezes
aqui para criar um nó traseiro. É redobrado para
esse pino de entrada. Na verdade, se você
clicar duas vezes nessa função, eu a deixo um pouco melhor de
ver agora. Você pode ver que está um
pouco confuso aqui. Isso termina aqui. Deixe-me ver se realmente
precisamos fazer alguma coisa. Depois da verdade, ele
solta a arma e depois volta
e quebra o laço. Isso parece bom. Nós realmente
não precisamos fazer nada por aqui. Tudo bem, então agora
parece muito melhor. Vamos compilar e salvar agora
para este pino de entrada aqui. Vamos chamar isso de arma para soltar. Ok, estamos fazendo tudo isso como antes e estamos
apenas interrompendo o ciclo. Estamos apenas fazendo a
mesma coisa de antes. Mas agora nós o
transformamos em uma função. E agora podemos usar
essa função. Se formos até aqui agora e
descobrirmos que temos
isso em nosso inventário, agora
podemos pegar essa arma.
E agora podemos selecionar. Que arma você quer soltar? Quero colocar essa arma no meu inventário
que acabei de encontrar. Então eu posso arrastar isso e
conectá-lo aqui. Vou clicar para fazer anotações de rock. Ok, agora vamos usar a arma. A próxima coisa que precisamos fazer é adicioná-la
às sobreposições aqui. Porque quando o adicionamos
às sobreposições,
lembre-se de que o adicionamos
à matriz de sobreposições e depois
começamos a saquear a arma Precisamos chamar isso de arma de sobreposição de
anúncios. Vamos até aqui e digamos que
adicione uma arma sobreposta. E agora precisamos
selecionar de qual arma
estamos falando? A arma da qual estamos
falando é essa. Lembre-se, não é esse. Porque você não pode arrastar
daqui e conectá-lo aqui. Isso não funcionará
porque lembre-se de que essa é apenas uma referência normal de objeto
ator. E este precisa de uma referência de objeto
base de arma. Lembre-se, você já
fez isso aqui. Então você pode arrastar a partir deste
e conectá-lo aqui. Novamente, clique duas vezes para
fazer anotações de redirecionamento. Aqui está.
Lembre-se de que quando você encontrou isso em seu inventário e
terminou com tudo isso, lembre-se de arrastar a partir deste
e também quebrar o loop, para não continuar o loop. Então, novamente, clique duas vezes e
faça anotações aqui também. Ok, antes de terminarmos
isso aqui no loop, lembre-se de que quando você solta
uma arma também, se você subir aqui
para pegar a arma de soltar, você a configura para interagir
novamente e assim por diante Então, vamos copiar tudo isso novamente, e vamos até aqui
e colá-lo aqui. Só assim, porque
lembre-se de que você está usando essa arma de soltar e,
dentro dela, está fazendo com que não possa
interagir com uma arma. Então você tem que fazer isso para
poder interagir novamente. E adicionamos isso
ao seu completo. Agora, se você clicar em jogar, podemos
selecionar Terrorista. Vamos correr por aí, pegar
essas armas. Agora, se clicarmos no K, você verá que nada está
realmente acontecendo agora. Se eu sair e,
novamente, algo estiver incomodando. E também temos um erro aqui. Se eu clicar
nele, estou apenas dizendo que este não pode ser encontrado.
Não se preocupe com esse. Isso está relacionado a
outra coisa que corrigiremos posteriormente. Mas, por enquanto, você
pode ver que eu deixei cair a arma e adicionei a
sobreposição da arma, mas por algum motivo ela não
está pegando Em vez de remover isso
do vídeo e
fornecer a solução, tentarei mostrar como
costumo depurar erros Esse é um bom lugar para fazer isso. Agora estamos soltando a arma. Então, sabemos que todo
esse código funciona. Porque chega ao
ponto em que realmente derruba
a arma de você. Mas algo está
errado aqui, desde o início, quando se adiciona uma arma
de sobreposição Agora, ao depurar, você precisa adicionar uma string de impressão Chamamos esse evento aqui. Deixe-me adicionar uma string
de impressão aqui. Pesquise a sequência de caracteres impressos, selecione-a e ela deverá
dizer olá aqui. Quando eu aludi, eu
seleciono Terraço. Agora eu vou para o AK. Deixe-me, na verdade, eu
não pego essa. Deixe-me clicar aqui. Você pode ver no canto aqui em
cima, que diz Olá. O código chega a
essa parte corretamente. Agora preciso verificar
se isso está correto. Agora eu acho que esse
está errado. Mas nós podemos. A primeira coisa aqui,
vou verificar aqui se essa vez está realmente
funcionando ou não. Vamos clicar em Jogar.
Selecione Terrorist. Vá em frente e selecione
ou pegue isso. Clique aqui no AK e
você não verá nada impresso. Agora eu sei que essa
parte do código funciona, mas essa parte não funciona. Nunca chega ao
ponto em que realmente
perde a arma. Há algo errado aqui
com essa parte do código. Talvez nunca abra. Esta nota novamente. Diz que pode pilhar armas novamente. Lembre-se de que este
é um nó e ele só faz esse código uma vez
até abrirmos aqui reiniciarmos esse nó. Faz isso de novo.
Há algo com essa arma lotada novamente, pode pilhar arma novamente, estamos chamando isso aqui. Há algo
errado com essa parte. Talvez não estejamos removendo as coisas corretamente dessas armas de
colo oval. O que podemos fazer é sempre clicar aqui
e imprimir uma string. Vamos imprimir uma sequência
aqui e ver o que acontece se eu clicar em jogar agora e
pegar o terrorista. Eu perdi tudo isso. Agora
você o vê removido. Em vez
de fazer tudo isso, vamos sair desse índice.
Na verdade, sabemos o que é. Removendo a sobreposição que aparece, estamos obtendo o índice
e o removendo Deixe-me conectar isso
aqui, eu posso realmente ver
o que estou removendo. Reprodução física de lúteos.
Remova o ph. Ele faz isso como
você pode ver aqui. Se eu saquear a pistola, ele deve remover a pistola, mas você pode ver que
nada Isso porque
ele está removendo apenas o Inp, mas não a pistola Algo está errado e o que estamos fazendo de
errado aqui é que agora só
estamos removendo essas coisas sempre que estivermos desarmados Se eu clicar em Jogar e jogar agora, sempre que estiver
no estado desarmado, ele será
removido corretamente no momento No entanto, se eu não estiver mais
desarmado, ele realmente
executará esse código aqui E nunca executará
essa parte do código. O que precisamos fazer aqui, mesmo não estando desarmados, remover tudo o que
saqueamos após a primeira Se saquearmos as informações, não
estaremos mais desarmados Quando saqueamos a pistola, ela roda nesta parte e não
fazemos nada Na verdade, o que precisamos
fazer é sair daqui e também remover a pistola que
saqueamos após a informação Então vá em frente e
conecte-o a este removedor. E vamos compilar agora. Vamos clicar em Play e
ver se nosso código funciona. Agora, se eu saquear este, agora se formos para o AK
e se eu clicar em E, agora
você pode ver que
funciona corretamente Se eu for até esta, na verdade eu saqueei a pistola,
ela saiu. Isso é algo que
corrigimos na próxima lição,
mas, por enquanto, você pode ver que
as informações estão funcionando e,
quando
sobrepomos a pistola, precisamos corrigir esse problema
e pronto Mas você pode ver que está saqueando os rifles corretamente,
nada mais errado. Isso é o que fizemos
desenhando antes. Você também precisa adicionar algumas notas
reescritas aqui. Tudo bem, vamos compilar. A próxima coisa é, veja aqui, se pressionarmos E, eu continuo enviando spam no meu
teclado e gosto Você pode ver que temos algum
erro aqui e diz: Access não está tentando ler
a propriedade saqueada da arma Há algum erro aqui e vamos corrigir
isso na próxima lição. Bem como a era aqui embaixo
que às vezes acontece. Por enquanto, tudo está funcionando, vamos salvar tudo e passar para a próxima lição.
112. 8.27 Definindo o tipo de item equipado corretamente: OK. Antes de corrigirmos o
acesso, não há erros. No momento, o que você pode ver
aqui é quando clicamos em jogar e saqueamos as
informações e a pistola E quando eu vou até
uma pistola e pressiono E, ela muda para o modo de visão da
pistola Isso ocorre porque lembre-se de que,
na arma de soltar,
definimos que você
deve simplesmente mudar para desarmado sempre que
soltar a arma Agora temos que melhorar isso porque quando você está
segurando um rifle, não
queremos
passar para o lado desarmado Ou quando você está trocando
a arma nas costas, você não quer
mudar para desarmado O que podemos fazer
aqui, muito simples, é pegar a arma
equipada. No momento, tipo de arma equipada. Vamos tentar perguntar se é o mesmo que
estamos deixando cair Se o tipo de arma equipada for o mesmo da arma
que estamos lançando, isso significa que devemos
ir para a desarmada No entanto, se estamos soltando uma arma que
não estamos segurando no momento, não
devemos ir desarmados porque ela
estava nas nossas costas E não precisamos trocar
o tipo de arma aqui. Vamos arrastar a partir
daqui e dizer igual. Vamos pegar a arma que
estamos soltando agora. Vamos arrastar a partir daqui. Digamos, por
exemplo, o nome da arma. Vamos pegar o nome da arma novamente. Digamos que obtenha informações sobre armas. Essa. Vamos quebrar isso. Vamos pegar o tipo aqui e conectá-lo. E pergunte se é o mesmo aqui. Vamos conectar essa filial e
deixar eu organizar isso. Agora, o que estamos perguntando
é se a arma que estamos soltando é do mesmo tipo que a
que estamos segurando agora? Se for, vamos
mudar para desarmados. Se não for, não
faremos nada. Não vamos trocar. Vamos compilar agora e
vamos ver se funciona. Então, se eu for aqui e
pegar o rifle e
clicar na pistola, você pode ver que ela solta a outra pistola que
eu estava segurando agora, ela não está mais mudando para o estado de movimento
errado Se eu falar isso também, você pode ver que a mesma
coisa está acontecendo, ok? Agora isso está funcionando e
a única coisa
agora é que temos um eixo sem era. E vamos fazer isso. Vamos corrigir
isso na próxima lição.
113. 8.28 Corrigindo o erro de saque "Acesso a nenhum": Ok, então o problema
agora com o
não acesso é se estamos tentando enviar spam
para a chave. Se eu continuar enviando spam para a tecla
E para saquear uma arma, isso me dará um acesso Se eu tentar isso aqui. Se eu tentar enviar spam para a
chave desse jeito e clicar em escapar,
vejo que estamos chegando nessa era dizendo acesso, tentando ler a
propriedade, arma saqueada Esse único acesso não significa
que essa variável está vazia. E isso provavelmente é porque
estamos reconfigurando aqui. E ele não tem a chance de processar todo o código antes de
tentarmos saquear novamente. Porque se você
enviar spam para a chave de
saque, você está simplesmente enviando spam para
todo esse E ele chega a esse
ponto e depois atinge esse ponto
ao mesmo tempo e diz acesso
nenhum. Fica confuso. O que podemos fazer é impedir que
o jogador saqueie sempre que ele estiver realmente
saqueando a arma Se eu for até aqui e
criar uma nova variável, vamos chamar essa variável de arma de
saque Compile este quando
estivermos saqueando a arma. Vamos pegar isso e
dizer que uma arma de saque é verdadeira Sempre que terminar de
saquear a arma, podemos pegar isso e dizer falso Ok, isso evita que o jogador
envie spam para o código. Temos que fazer isso aqui
quando pressionamos a tecla, temos que dizer ao jogador que você não pode fazer isso
sempre que estiver saqueando Arraste daqui e diga “não é bobagem”. Quando você não está
saqueando uma arma, podemos
fazer um galho e dizer que agora você pode ir em frente
e solicitar a arma perdida Quando isso é definido como
verdadeiro aqui, quando começa a
saquear a arma, você não pode fazer nada Mas quando terminarmos de
saquear a arma aqui, você pode prosseguir e
solicitar o saque de uma nova Agora, este vai te
dar um problema, e talvez você já possa
ver qual é o problema. Agora, se eu for como cliente e tentar
saquear a arma aqui, você pode ver que isso está me
causando um problema No momento, se você se lembra,
estamos no modo multijogador. E este agora, você está configurando
por meio do servidor e aqui você está tentando usar essa variável no cliente. Lembre-se de que você pode arrastar e escrever uma string de impressão para ver se está no servidor
ou no cliente. Se eu jogar aqui como
servidor e pressionar, você pode ver que imprimo
hello como servidor. Mas se eu jogo aqui
como cliente, agora eu jogo e pressiono. Você pode ver que estou enviando spam para
isso como cliente. Eu posso jogar esse código por meio
do servidor e do cliente. Isso significa que
também estamos no cliente. Quando estamos aqui, você está usando a variável
no cliente, mas está
configurando-a no servidor. Lembre-se de que, como servidor, você precisa replicar
as informações de volta para o cliente, caso
contrário, o cliente não terá chance de saber se isso
é verdadeiro ou falso Quando você configura algo
no servidor e
precisa usá-lo no cliente, precisa replicar essas informações de volta para o cliente. Vamos
compilar e salvar Então, agora, se eu jogar como cliente e clicar em jogar, vamos experimentar
aqui como terrorista. Vamos pegar as armas e me deixar ir
até K. Eu continuo, tudo está funcionando agora Ok, está funcionando. E também posso
trocar minha pistola
na parte traseira e também posso
trocar essa Você tem que fazer isso
se eu enviar spam agora, enviando spam para minha chave de lote, defina um atraso, se desejar Se você não quiser que o jogador
troque isso rapidamente, você pode definir um atraso para o saque Mas, como você pode ver aqui
, está funcionando corretamente. E se eu clicar em Escape, você pode ver que não
recebemos nenhum erro. Isso ocorre porque, na verdade,
está esperando que isso seja falso antes que o jogador tenha a
chance de saquear novamente. Mas o jogador não percebe isso porque o código está
sendo executado muito rápido. Mas agora estabelecemos essa barreira e tudo
está funcionando corretamente. Às vezes, se
disser erro com armas, você está tentando cair. Se você está tentando jogar
aqui e está tentando
enviar spam para a tecla, eu
pressiono escape. No momento, não estou
cometendo nenhum erro, mas se você tiver uma
era no futuro, sempre
poderá aceitar isso. Essa é a era que tínhamos antes. Você pode clicar com o botão direito do mouse em converter
isso em um get validado, certifique-se de que seja válido
antes de fazermos tudo isso Sim, é assim que você se livra
da era anterior à nossa,
em que você realmente ganhou uma era
ao largar a arma Você pode ver que estou
tentando enviar spam. Nada está acontecendo.
Acho que está consertado. Mas se você tiver esse problema, sempre
poderá fazer isso. Vamos compilar e
salvar tudo. Por enquanto. Vamos passar
para a próxima lição.
114. 8.29 Limpando o código: Ok, então antes de continuarmos, o que
eu quero que você faça é limpar todo
esse projeto
porque está ficando muito grande e precisamos
consertar algumas coisas. Se pudermos otimizar as coisas e
pudermos comentar algumas coisas, será muito
melhor fazer isso agora do que mais tarde, antes que
fique muito complexo. Então, o que eu quero que você
faça, por exemplo, você pode ir
aqui até o Início. Jogue. Tente fazer anotações da rota traseira, se ainda não tiver feito isso. E você pode selecionar tudo. Clique em C no teclado e você pode, por exemplo,
escrever start, Play. Isso é melhor do que não
ter nada aqui no código. E você
pode clicar nele. Você pode clicar na cor
do comentário, você pode alterar a
cor do comentário para algo. Por exemplo, eu posso escolher
essa cor azul púrpura. Posso reduzir a saturação 20,75 e posso colocar o
alfa 20,25 Apenas tente estilizar isso da melhor maneira
possível. Além disso, por exemplo, posso
transformar o texto em 24, para que eu possa lê-lo muito
melhor quando estou com o zoom reduzido Mas você pode ver aqui. E
você também pode salvar a cor. Se você clicar aqui e puder clicar e arrastar até aqui, isso é seguro. Agora, quando você comenta algo aqui
embaixo, por exemplo, deixe-me arrastar tudo isso e movê-lo para um
diesel como este. Então eu não arrasto isso para baixo, arrasto tudo isso para
baixo, por exemplo. Você pode comentar essa parte porque essa
parte é para seguir os passos O que você pode fazer é
clicar neste, por exemplo. Você pode chamar os efeitos sonoros de Playing the
Footsteps. Novamente, assim como antes,
vou aumentar a frente. E você pode clicar aqui
e clicar nessa cor. E isso aplicará
automaticamente todas as configurações
que você fez aqui. Ok, então eu quero que você
comente tudo. Tente tornar tudo o mais
organizado possível. Além disso, vou fazer os
comentários no meu tempo livre, que você não precise
olhar para mim fazendo comentários sobre
tudo. Mas lembre-se de que você pode fazer comentários com comentários. Você tem este
e digamos que eu queria incluir o
movimento com este. Assim, você sempre pode selecionar tudo com o
comentário aqui. E você pode fazer um novo
comentário e, por exemplo, chamar isso de movimento. Então você tem um comentário principal. E você também pode comentar pequenas coisas aqui dentro
. Mas, por enquanto, vou
fazer isso no meu tempo livre. O que é mais importante
agora é ver se
podemos melhorar o código de
alguma forma. Na verdade, podemos. Se formos até aqui, você pode ver que já
usamos este antes. Muitas vezes estamos fazendo o inventário e
entrando em um loop e tentando encontrar esse item dentro
do inventário. Estamos fazendo isso
há algum tempo aqui. Algumas vezes.
Também podemos ver que estamos fazendo isso aqui. Então, estamos
vasculhando o inventário e obtendo
esse tipo de item Acredito que faremos algum outro lugar que não
consigo encontrar agora. Mas, por enquanto, vamos
realmente transformar isso em uma função e
será muito melhor o que podemos fazer. Vamos
apenas copiá-lo por enquanto. Vamos copiar essa parte
do código aqui. Vamos também copiar esse igual. Vamos apenas copiar e
colar aqui. Na verdade, podemos transformar
isso em uma função. O que podemos fazer é
selecionar tudo isso. Clique com o botão direito. Na verdade, você não pode
transformá-lo em uma função porque
temos uma macro. Se você disser colapso para funcionar, ele dirá erro e você
poderá mostrar a mensagem. E diz que só pode
ter um pino de execução. E você pode ver que este tem
muitos pinos de execução. O que você pode fazer é clicar com
o botão direito
do mouse e reduzi-lo a uma macro. Para essa macro, a diferença entre uma função e uma macro é simplesmente que uma macro pode
ter vários pinos de execução E as funções só podem ter
uma entrada e uma saída, enquanto as macros podem ter
vários pinos de execução E você pode ver
aqui, essa ramificação que estamos usando é na verdade uma macro e tem vários pinos de execução para
essa macro que acabamos de criar Deixe-me clicar aqui
e clicar em dois. Vamos chamar isso de M para macro. Vamos chamá-lo de Encontre o tipo de
arma no inventário. Isso é simplesmente o que está fazendo. Está tentando encontrar
o tipo de arma dentro do nosso inventário. Vamos criar um novo pino
de execução aqui. Se você apenas escrever
a execução, acho que execute. Na verdade, se você
clicar aqui, o tipo, se você
apenas escrever execute, na verdade
removeremos
o texto aqui. Esse é um segredo
para a
execução da gravação de macros . Vamos conectá-lo aqui. Também precisamos de um
pino de execução para quebrar isso mais tarde. Deixe-me fazer um novo pino de execução. Vamos chamar isso de um loop de interrupção. Ok, agora temos isso. Deixe-me conectar isso aqui embaixo. E também precisamos de uma
entrada para este. Vamos colocar essa aqui. Deixe-me subir uma vez. Se eu clicar e
arrastar isso até aqui, vamos mudar o
nome para este. E esse é o tipo de
arma a ser encontrada, estamos tentando encontrar
esse tipo de arma em nosso inventário. Basta clicar
duas vezes nele
e fazer algumas
anotações de redirecionamento Tudo bem, aqui
na saída, precisamos ter tudo
isso aqui dentro. Agora vamos primeiro pegar esse
corpo de loop e colocá-lo aqui. E já diz loop
body. Isso está correto. Vamos agora pegar este
e colocá-lo aqui. Em vez do valor de retorno. Estou dizendo que a arma
foi encontrada e podemos fazer um galho para ver se
isso é verdadeiro ou falso. Agora, para a outra coisa,
vou conectar o concluído. Opa, não
desse jeito. Pegando isso, conectando-o E, apenas para concluir o ciclo de
esclarecimento, também
precisaremos da referência da
arma posteriormente para que possamos fazer
algumas coisas com ela E eu vou
movê-la para cá, vamos chamá-la de arma agora. Não importa se ele foi
movido para cá, por exemplo. Se eu mover isso para cá ou para cá, isso realmente não
importa. É só ficar
limpo com o código. Mas eu gosto
de ser assim. Novamente, vou
clicar duas vezes aqui e fazer algumas
anotações de rota , bem como para este pino de
execução aqui. Ok, então aqui
está e vamos compilar. Agora vamos voltar
ao gráfico da van. E agora você pode ver que
essa é a macro que criamos. Agora podemos usar este
em vez disso, chicotes. Se eu aumentar o zoom novamente
para ver essa arma de lançamento. Em vez de fazer isso,
já estamos entrando aqui O que posso fazer é
excluir isso e, em vez disso, conectar
este. Deixe-me afastá-lo um
pouco para que eu possa ver o que estou fazendo. Agora. Em vez de fazer tudo isso, já
estamos fazendo isso. Vamos deletar esse também. Este tipo de arma equipada. Podemos pegar isso e
conectá-lo aqui. Em vez disso. Ou seja,
lembre-se de que é isso que estamos tentando comparar
com nosso inventário. Isso é a mesma
coisa de antes. E se eu conectar esse loop e conectar essa ramificação com aqui. Agora vamos ver, essa arma. Isso é o que precisamos usar para
a arma de lançamento. Quando encontrarmos a arma, vou deletar
esses três nós de rota. Vou mover isso para
mais perto daqui. E vamos quebrar o ciclo
depois de soltarmos a arma. Esse código é como antes. Na verdade, está apenas otimizado. Não fizemos nada novo aqui. Estamos apenas criando essa macro para torná-la melhor
e mais limpa. Sim, quando o loop estiver concluído, vamos conectar tudo isso
novamente, como antes. Agora você pode ver que está
muito mais limpo do que antes. É assim que você otimiza o código. Agora você pode usar esse. Deixe-me organizar
isso um pouco mais agora. Podemos pegar esse tipo de
arma encontrada no inventário. Nós podemos, vamos ver
aqui onde
tentamos encontrar o item novamente no inventário.
Vamos arrastar isso para fora. Vamos deletar este. E exclua este também. Deixe-me conectá-lo
por enquanto no corpo do loop. Assim como antes,
estamos conectando isso, tudo isso aqui
já temos dentro da macro. Vou deletar tudo isso. E esse também.
É com isso que estamos tentando comparar esse tipo de arma
a partir das informações da arma. O que realmente podemos fazer,
mesmo que pareça um pouco confuso, podemos arrastá-la e
colocá-la de volta aqui no tipo de arma
para encontrar novamente, clicar
duas vezes para fazer anotações para que
fique melhor O que estamos essencialmente fazendo
é a mesma coisa de antes. Sem essa macro, estamos apenas
encontrando o tipo e conectando-o para compará-lo com o tipo de arma
do inventário Deveria fazer a mesma coisa. Deixe-me dar uma olhada aqui. Está passando pelo galho. Lembre-se de que vamos
administrar essa filial aqui. Vamos também
clicar duas vezes neles para fazer
anotações de rota traseira para este. Para esta arma aqui, a arma para soltá-la é do inventário. Então, estamos tentando retirar a
arma do inventário que você possa arrastá-la até
aqui e conectá-la. Ok, agora tudo
está conectado. E lembre-se de interromper
o ciclo a partir daqui. Mais uma vez, arraste, quebre o loop. Eu só quero ver se eu
realmente me lembro de fazer isso também com o
outro, e eu fiz. Vamos descer, e vou
afastar isso um pouco mais. Eles não se sobrepõem, sem mais nem
menos. Ok, compile e agora,
para concluir o loop, vamos reconectar
este aqui embaixo A arma, estamos tentando retirá-la
do inventário. E é a arma que
estamos tentando saquear. Vamos nos
sobrepor exatamente como antes,
mas acabamos de torná-lo
muito mais limpo do que Por isso, é sempre bom
jogar o jogo e apenas testar e ver se tudo está
funcionando conforme o esperado. Agora você pode ver que está
funcionando exatamente como antes. Sim. Então, tudo está funcionando. momento, há um pequeno erro com o código, que está aqui quando estamos tentando solicitar o
saque da arma, estamos tentando
compará-la com o inventário, tentando encontrar a arma
dentro do nosso inventário Se não tivermos a
arma no inventário
, terminaremos
nesta parte do código. Porque se tivermos a
arma no inventário, a arma que estamos tentando saquear, estamos tentando soltar o rifle
existente, por exemplo No entanto, se
não tivermos um rifle, na
verdade vai acabar aqui Em vez disso, vou pegar isso e
colocá-lo na sobreposição, porque ainda queremos saquear o item se não o tivermos em nosso Só uma pequena correção para
esse código, ok? Todas as outras coisas, eu realmente não vejo mais coisas
que possamos tentar melhorar. Mas se você quiser
fazer alguma coisa funcionar,
por exemplo, esta. Você pode criar uma função ou coisas que deseja que
funcionem e tentar limpar. Vá em frente e faça isso agora. No entanto, acho que
isso é suficiente e vou
comentar tudo. O que você também pode
fazer é colocar todas essas variáveis
em categorias. Por exemplo, a velocidade aqui, você pode escrever algo
na categoria. Por exemplo, propriedades da camada, que podem ser uma categoria. E você pode ver
que foi adicionado aqui. E você também pode clicar
na velocidade de execução. Clique em Categorias e
adicione-as às propriedades do player. O mesmo acontece com o
agachamento. Agora você pode ver que eles
estão em uma categoria. Você pode limpar todas as
variáveis desse jeito. Na verdade, você
também pode fazer isso com funções. No entanto, você não pode fazer
isso com as funções unrep, você só pode fazer isso com as outras funções
que você criou Está bem? Então, com isso dito, vou
comentar tudo. E lembre-se de que vou
entregar esse projeto para você. E você pode
baixá-lo do site para ver tudo
isso que eu fiz, todos os comentários e assim por diante. Mas você provavelmente também
verá isso na próxima lição. Vou
comentar tudo e
nos vemos na próxima aula.
115. 8.30 Corrigindo um pequeno problema de replicação: Ok, então antes de continuarmos, vamos voltar para
a base de jogadores. Então você pode ver aqui, eu
limpei meu projeto, coloquei tudo em ordem, e a única coisa que fiz foi
basicamente criar alguns comentários e organizar
as coisas um pouco mais. Então, temos o movimento básico do
personagem aqui com todas as coisas que
fizemos com o agachamento,
a caminhada, o salto e assim por diante E aqui embaixo eu tenho o saque
e o lançamento da arma, ou temos as sobreposições, o saque
da arma e assim por diante E eu também adicionei um
comentário para este, certifique-se de que a
arma esteja acoplada. o atraso
sobre o qual falamos anteriormente, é sempre bom
escrever por que você edita esse atraso para que não pareça aleatório e você o exclua
por engano no futuro. Ok, então vamos salvar tudo. E agora, antes de
continuarmos para a próxima seção, percebi um pequeno bug. Se eu clicar em terrorista
aqui e tentar saquear duas coisas,
às vezes funciona Então você pode ver que eu
saqueei coisas aqui. Na verdade, vou clicar no braço
da mola e chegar
a algo como 500. Só para que eu possa ver o que está
acontecendo e poder jogar novamente. Tenho que fazer isso algumas
vezes e às vezes você percebe que o jogador na verdade
não está saqueando a arma Então, vou continuar tentando
saquear a arma dessa forma e ver se consigo
dinheiro para estar Aqui. OK. Então, eu tentei isso algumas vezes e depois de 1 minuto tentando de
novo e de novo, você pode ver aqui
que está falhando Eu não tenho uma
pistola na minha mão. Se eu movê-lo rapidamente para que você possa ver que minha mão
não tem uma pistola A pistola está no
chão e eu realmente não consigo saqueá-la assim,
ela está saindo. No entanto, ele está funcionando
no servidor. Então, se eu tivesse o servidor jogando, acho que estamos jogando
como dois clientes. Então você pode ver que este
é o segundo cliente. Eu entro como o segundo inclinado
e olho para esse jogador. Eu posso ver que esse jogador
não tem uma pistola. Então você pode ver aqui, não
tem nada na mão. Não consigo ver a pistola
ainda no chão. E eu
também não posso saquear desta vez. O bug está acontecendo porque isso é apenas um problema de
replicação Se eu clicar em G para
soltar a arma, você pode ver agora que ela está
realmente no chão. Se eu voltar e caminhar
até a frente dela novamente, você pode ver que estou
saqueando a pistola e agora eu realmente tenho
a pistola na Então, na verdade, é apenas
um problema de replicação e percebi
que demorei talvez 1 hora ou
30 minutos apenas tentando
depurar e ver o que estava
acontecendo porque tudo
parecia correto No entanto, o que está errado agora está na arma de saque Se você andar sobre as armas. E o que fiz aqui
para pegar esse bug foi
passar por cima de duas armas rapidamente.
Algo parecido com isso. E eu tento algumas vezes e uma vez
você pega o bug, às vezes uma das
armas não funciona. Na verdade, isso ocorre porque, quando esse código está em execução e
você está tentando saquear a arma por meio desse representante, às
vezes, se você passar por cima dele com rapidez suficiente
ou no ritmo correto, ele realmente excluirá a arma
saqueada E quando o próximo chegar lá, então não tem nada
, não será válido. E então tudo isso não
acontecerá e você
será expulso, e então poderá ver que a
arma está no chão Mas se você jogar como servidor, poderá realmente
ver que o cliente está segurando a arma. No entanto, para o cliente, o cliente não consegue ver
a arma na mão. Eles só conseguem
vê-la no chão, mesmo que na verdade a estejam
segurando na mão. Eu sabia que era um problema de
replicação porque o servidor o
examinou corretamente, mas
o cliente viu que ele parecia
estar no chão,
embora devesse estar na mão Na verdade, é
esse. Isso é o que está tornando tudo estranho Em vez de excluir a variável da arma
saqueada, lembra o que fizemos aqui? Apenas uma rápida
caminhada para não
ficarmos muito confusos, porque
fizemos muito neste curso. O que simplesmente fizemos foi saquear a arma. E depois passamos por
isso, saqueamos a arma. Estamos verificando se essas armas
sobrepostas não estão vazias. Se não estiver vazio,
estamos saqueando a arma. E depois de tudo isso, vamos removê-lo
da arma sobreposta E então estamos
verificando se há mais armas sobrepostas
que precisamos saquear,
que nos levarão até que nos levarão Na verdade, deixe-me
ver onde está. Ele nos leva até aqui, verifica se
há armas sobrepostas e depois tenta
saquear a Novamente, ele verifica se está vazio. Agora há menos itens porque removemos
o antigo aqui. Agora ele é executado novamente. Digamos que
foi só a pistola. Digamos que fosse apenas a
pistola e a removemos aqui. Este deve estar vazio agora. E diz que, se não estiver vazio
, será falso
porque está vazio agora. E então diz, pode saquear arma novamente. Isso vai atrasar isso. Aqui, ele excluirá isso. Lembre-se de que o motivo pelo qual excluímos uma notificação de representante é porque
você saqueia a mesma
arma repetidamente Lembre-se de que uma notificação não é
executada se você a atualizar
com o mesmo valor; se eu atualizei com
a mesma pistola, na verdade não funcionará Essa é a desvantagem
de uma notificação de representante. Se você aplicar exatamente o mesmo
valor, ele não será executado. É por isso que, na verdade, excluímos a variável e, em seguida,
podemos executá-la novamente. Ok, em vez de
fazer isso aqui, apenas uma solução muito simples, podemos começar a partir daqui. Vamos apenas colá-lo
em algum lugar por aqui. Em vez disso, não podemos
colá-lo aqui porque,
na verdade, o estamos usando aqui para definir o estado do movimento ou a arma
equipada com firmeza. Podemos adicioná-lo aqui antes
de removê-lo deste. Ou você também pode adicioná-lo
aqui. Isso não importa. Vou apenas adicionar antes disso aqui e você
pode conectá-lo. E então eu vou
reorganizar as coisas, certo? Então eu mudei os comentários também. Aqui está, agora, em vez disso,
está aqui embaixo. E podemos realmente
tê-lo aqui porque estamos
tendo esse atraso. Podemos utilizar esse atraso, então não estamos sobrescrevendo essa variável aqui porque, na verdade,
temos um atraso E esse código pode ser reproduzido antes de realmente
excluirmos a variável. Faz sentido que
esteja aqui embaixo. E então nós realmente não
precisamos desse atraso, desse atraso. Nós o adicionamos antes porque queríamos esperar que
esse código fosse reproduzido. No entanto, para este,
vamos apenas excluí-lo. Este, podemos simplesmente conectar de
volta. Assim mesmo. Sim, acho que isso
vai resolver tudo. Então, vamos salvar tudo. Deixe-me clicar, na verdade, deixe-me mudar para
jogar como servidor de escuta. E eu vou jogar
com três jogadores. Estou tentando jogar novamente e ver se consigo fazer com que esse
livro apareça novamente. Tudo bem, então eu tentei cerca de 40 vezes agora,
nada está acontecendo. E parece ter
resolvido o problema. Esse foi um problema de replicação. Tudo está funcionando
como deveria. Agora, deixe-me clicar na
mola e configurá-la para zero. Novamente, compile tudo. Vamos passar para
a próxima lição.
116. Ações de entrada de comutação de armas 9.01: Agora é hora de criar
a ação de entrada para trocar as armas e
tentar fazer isso sozinho. Tente fazer uma ação de entrada chamada arma primária
e arma secundária e tente adicioná-las você mesmo. Já fazemos isso
há algum tempo. Apenas um desafio legal. E você pode tentar se
desafiar. E se você não se lembra,
vamos fazer isso juntos. Vamos clicar com o botão direito do mouse aqui e ir
para Entrada e Ação de Entrada. Vou fazer isso
um pouco mais rápido do que antes, porque sabemos
o que estamos fazendo agora Arma primária. Vamos tentar, clique novamente, vá para a ação Entrada de Entrada e crie a arma secundária. Vamos ao contexto do
mapeamento de entrada. E, fora daqui, estou clicando
duas vezes porque preciso adicionar dois mapeamentos E eu não tenho ideia de por que
não me mostra nada. Na verdade, acho que preciso mudar isso antes de
adicionar a segunda,
uma arma primária. E vou clicar
no sinal de mais novamente. Não sei por que eles
continuam maximizando. Na verdade, é um pouco irritante Acho que você pode pressionar aqui. Sim, você pode dizer aqui,
desmoronar ou expandir. Tudo, você pode derrubar tudo.
Acho que talvez funcione. Uma arma secundária? Sim, eles maximizaram novamente
sem motivo. Arma primária. Vou clicar
na minha única tecla para pegar minha arma principal,
que é meu rifle E clique nas duas teclas
para pegar minha pistola novamente. Como gatilho, vou escrever pressionado porque
só quero tocá-lo uma vez Quando clico no botão, não
quero
atualizar constantemente. Então, esses dois são adicionados. Agora vamos salvar tudo,
vamos fechá-los. E vamos até o jogador. Vamos até a base de jogadores. E aqui dentro, vamos clicar com o botão direito do mouse aqui
e dizer arma primária IA. E aqui embaixo, digamos, uma arma secundária
IA. Ok, agora temos
esses dois eventos. E podemos usá-los para obter nosso rifle ou pistola, se os
tivermos no inventário
117. 9.02 Lógica de comutação de armas: Ok, então para a troca de
armas, vamos primeiro descer aqui. Vou remover isso para o lado porque
não preciso disso primeiro. Só precisamos trabalhar
com a arma principal. Então, vamos aqui e
criamos um novo evento personalizado. E eu vou percorrer o servidor e
vou chamá-lo,
vamos chamá-lo de equipar arma Vamos executar este no servidor e
de forma confiável. Quando pressionamos
uma tecla, por exemplo, a tecla principal da arma, queremos equipar o rifle Quando faço algo assim, tento pensar um
passo de cada vez. Não pense dois
ou três passos à frente, porque você ficará confuso. E eu
também vou ficar confuso, um passo de cada vez. O que precisamos fazer quando
precisamos equipar a arma? Primeiro, se você tem essa arma em seu inventário
e como você faz isso? Lembre-se de que encontramos esse tipo de
arma no inventário. Podemos arrastar isso aqui. O que queremos encontrar
é simplesmente o rifle. Porque quando você clica em
uma tecla, eu posso realmente arrastar daqui e dizer arma equipada com
servidor. Quando clicamos nele,
queremos encontrar o rifle. Agora, primeiro,
queremos ter certeza ainda
não temos o rifle em nossas mãos, caso contrário, não
faz sentido
reequipar o Vou pegar o que
já temos equipado. Então, o tipo de arma equipada, eu vou dizer que se não
for igual a um rifle, então podemos prosseguir
e realizar este evento Porque se já
temos o rifle equipado, não faria nenhum
sentido executar tudo isso, ir em frente e
conectá-lo aqui Ok, então aqui embaixo, vamos sair desse galho
e fazer um galho aqui, ou desse lingote
e fazer um galho E sempre que encontrar essa
arma no inventário, sempre
que encontrar o rifle, eu vou fazer um lingote. E esse lingote é chamado de
arma encontrada no inventário. E agora podemos pegar
isso aqui e
configurá-lo como verdadeiro, sem mais nem menos. E lembre-se de quebrar o
ciclo assim: Ok, agora sabemos que ela encontrou a arma no inventário
aqui embaixo, concluída. Podemos continuar o código aqui. Estávamos apenas procurando o item no inventário
e agora o encontramos. Então, vou aproveitar essa
constatação e me certificar que ela é verdadeira
somente se for verdadeira. Vamos executar um código. Se não o encontramos
no inventário, realmente não
precisamos
fazer nada. O que eu preciso fazer é
equipar a arma. Na verdade, vamos aqui, podemos
clicar com o botão direito neste. Esta é a arma que
encontramos no inventário. Deixe-me
promovê-la a uma variável e chamá-la de arma de equipamento. Agora, o que isso
significa, precisa ser
replicado ou representado, notificado Você pode tentar responder a
pergunta para si mesmo. E por que deveria ser
representado, notificado ou replicado? Agora eu vou te dar a resposta. Este precisa
ser representado, notificado. E lembre-se, sempre que
você tiver alterações visuais. Então, agora o jogador
vai segurar o rifle na mão, o
que é uma mudança visual Você precisa
transformá-la em uma notificação de representante, para poder notificar todos
os clientes sobre a mudança
visual Então vá em frente e conecte-o aqui. E clique nele e
configure-o para notificar o representante. E depois lembre-se também
de mudar sua postura. Porque agora,
se você clicar nele, você equipará uma arma Então, no momento, não
temos isso feito, e faremos isso
na próxima lição. Portanto, você também
precisa se lembrar de definir o tipo de arma
equipada atual pois lembre-se de
que fizemos isso aqui. Este está controlando o que está sendo reproduzido dentro do
seu plano de animação Vamos até aqui
e, digamos, e você pode encontrá-la aqui,
definir o tipo de arma equipada. Então, o tipo de arma
precisa ser rifle neste caso. Além disso, você precisa
definir isso para quedas, porque mais tarde,
quando fizermos isso, novamente, será definido como verdadeiro. Lembre-se de
configurá-la para cair aqui, precisamos redefinir essa
variável também. Precisamos configurá-lo para falls sempre que
terminarmos o código Na próxima vez que ele for inserido, ele executará o código corretamente,
caso contrário, ele será
verdadeiro automaticamente. E ele executará esse código
mesmo que não esteja correto. E também quero redefinir essa variável porque, quando
tivermos feito tudo isso,
lembre-se de que precisamos redefinir
a notificação do representante para que ela
não saia. E podemos pegar essa arma
equipada e reiniciá-la aqui antes de
acabarmos com tudo. E talvez precisemos
adicionar um atraso aqui para
notificar o representante sobre a hora de jogar Mas vamos realmente
verificar isso mais tarde. Não sou fã de
adicionar atrasos aleatórios. Eu só adiciono atrasos
sempre que realmente
precisamos , porque atrasos são bons Este não será notado. É 0,05 Nenhum humano jamais
notará isso, mas não
precisamos realmente adicionar um se realmente
não precisarmos Ok, então a segunda
coisa que realmente precisamos aqui é se você já está
segurando uma arma na mão. Então, por exemplo, se você
já está segurando uma pistola, você precisa desequipar essa Na verdade, também precisamos nos
desequipar. Então eu preciso perguntar se o
jogador está armado ou desarmado. Porque o jogador
pode estar segurando uma pistola agora
e nós estamos saqueando o rifle e pressionando tecla
do rifle e já
temos Então precisamos primeiro desequipar
a pistola. Vamos, a partir daqui, na verdade, desconectá-lo e arrastá-lo um pouco para baixo Então podemos pegar esse tipo de arma
equipada
e dizer: é igual a desarmada Vamos fazer uma ramificação aqui
e conectá-la aqui novamente. Se for igual a desarmado, vamos seguir em frente e executar
o código que criamos anteriormente No entanto, se não estiver desarmado, queremos desequipar a
arma que estamos Mais uma vez, encontre a arma
no inventário de que
estamos falando. De que arma
estamos falando? Estamos falando sobre a arma equipada
atual que temos. Essa pode ser a
pistola agora. Então, quando você encontrar isso, estamos fazendo um galho
como antes. Quando você encontrar isso,
vamos promovê-la para uma variável e
chamá-la de
arma não equipada . E vamos
entrar em contato com um representante, notificá-lo e
conectá-lo aqui Faça algumas anotações da rota traseira. E então, quando isso estiver concluído, porque agora você está executando esse código e está
desequipando a arma Mas você tem que equipar
essa arma depois. Então, aqui na
íntegra, você tem que executar
isso aqui novamente. Deixe-me arrastá-lo aqui para abrir espaço e
fazer com que pareça muito melhor. E podemos arrastar isso até aqui. Ok, então algo
assim parece muito melhor. Estamos verificando se
estamos desarmados ou não. Se estivermos desarmados, vamos equipar a arma instantaneamente Se estivermos armados com uma pistola, por exemplo, vamos desequipar
a Lembre-se de quebrar o ciclo. Esqueci de conectá-lo aqui. Vamos quebrar o ciclo também. Depois de quebrarmos o ciclo,
e ele estiver completo, vamos
equipar a arma,
a desequipada e a Faremos isso
na próxima lição. Mas lembre-se também de reiniciar
a arma não equipada para que não
recebamos a caixa mais tarde no jogo Sim, acabou
a lógica no momento, não
podemos realmente testá-lo porque realmente
não temos a notificação do representante Vamos pular para a próxima
lição e trabalhar nelas.
118. 9.03 Equip e Unequip Weapon RepNotify: Tudo bem, então avise o representante de equipamento
não equipado. Isso será muito fácil porque já
fizemos isso antes. Se formos até a arma saqueada ou a
arma saqueada,
se você for ao representante, notifique
a arma se você for ao representante, notifique
a Se você entrar aqui,
lembre-se de que fizemos tudo isso desativando a
colisão e assim por diante Então, quando você já tem a
arma no inventário, já
removemos a física, já removemos a colisão
e fizemos tudo isso Então, nós realmente não precisamos
fazer tudo isso de novo. Você já fez isso
quando saqueou a arma. Então, a única coisa que
precisamos fazer é realmente equipá-lo de costas Então, este aqui, conecte o ator a qualquer
um desses soquetes Então, vamos apenas duplicar
esse código aqui. Vou copiar e
vou até minha arma de equipamento e
vou colá-la aqui Tudo bem, para este, não
é a arma saqueada Eu vou deletá-los. É nossa arma equipada, então vou arrastá-la
e conectá-la aqui. E eu vou conectar
este aqui. Ok, novamente, vou
dar uma olhada
aqui e clicar com o botão direito do mouse e dizer
converter em um get validado Estou me certificando de que minha variável é válida
antes de fazer tudo isso, antes de anexá-la. Lembre-se de que agora
sua arma equipada, esta aqui agora, está presa às suas costas. Por exemplo, seu AK 47 antes de
segurá-lo na mão, ele é preso às costas
do personagem. Primeiro, o que você precisa
fazer é realmente
separá-lo daquele soquete antigo Você tem que arrastá-lo daqui
e dizer separar-se do ator. Vamos separá-lo primeiro
da parte de trás. E podemos manter
a posição mundial em todos eles. Depois de retirá-lo
da parte de trás, podemos seguir em frente. Na verdade, vou
excluir esse nó de rota. Vou
conectá-lo diretamente aqui. E podemos detalhar isso para que pareça
um pouco melhor aqui. E então este você pode realmente excluir e conectá-lo aqui, se desejar. É só para fazer com que pareça um pouco melhor,
algo assim. Deixe-me
aproximá-los um do outro. Ok, aqui está. Este é o
código equipado para os não equipados. Talvez você já tenha adivinhado. Temos que ir até a arma
let's para soltar. Já fizemos tudo isso e, na verdade,
não caímos no drop. Vamos até a arma saqueada. Precisamos desse código
aqui em que você coloca sua pistola, por exemplo, na
coxa ao tirar o Vamos copiar tudo isso aqui onde você coloca nas
costas ou na coxa E vamos para a
arma não equipada, como antes. Vamos colar esse. E deixe-me pegar a arma
não equipada e conectá-la aqui Deixe-me deletar esse.
Deixe-me repetir, certo, converta em uma conexão
validada Na verdade, vamos excluir este e
conectá-lo aqui. Antes de fazermos isso, vamos nos separar
novamente do ator. E vamos manter
a posição no mundo e vamos
separá-la do ator E então vamos
conectá-lo aqui. Lembre-se também aqui, que estamos usando a arma não equipada, desse
jeito Ok, vá em frente como
antes. Mova-o para baixo. E aproxime-o, para que fique um pouco melhor. Algo parecido com isso. E vamos continuar
compilando e salvando tudo. Ok, agora terminamos
com eles e podemos clicar em Play para ver se realmente
funciona ou se
fizemos alguns livros. E vamos clicar
em jogar. Deixe-me aqui, como servidor, jogar
como contra-terrorista. Na verdade, vamos jogar
como terrorista. Porque as armas
estão lá agora. É apenas a única
chave que funciona. Então eu preciso eluir o
rifle como minha segunda arma. Agora, se eu clicar em um, você pode ver que estou realmente
selecionando meu rifle E se eu enviar spam para uma chave, lembre-se de que não podemos enviar spam a única chave se eu
fechar isso para que eu possa mostrar a você, porque aqui, vamos
encontrar o gráfico de eventos. Na verdade, vou
fechar tudo isso. Então, vou mover isso aqui, clicar com
o botão direito, fechar
as guias à direita Então, é um pouco
melhor dar uma olhada aqui. Lembre-se de que fizemos esse
lingote para não enviar spam para a chave do rifle, porque se já
temos o rifle, não
executamos Isso também é bom para
otimização. Assim, você não executa
código desnecessariamente. Tudo está funcionando bem
e, se encontrarmos alguma caixa, sempre
poderemos consertá-la. No entanto, tudo está funcionando. A próxima coisa que precisamos fazer
é a arma secundária, e vamos fazer isso
na próxima lição.
119. 9.04 Equipando a segunda arma: Agora, vamos usar a arma
secundária agora. Você pode copiar tudo isso e
criar um novo evento. E basta copiar e colar tudo isso e mudar isso para uma pistola No entanto, isso não
seria realmente uma boa prática de codificação. Agora lembre-se de que estou
tentando te ensinar o melhor código e poderíamos copiar e
colar isso aqui embaixo, e funcionaria perfeitamente. No entanto, quando vejo
algo copiando e colando, quando vejo um código que precisa ser copiado e colado e a única coisa preciso alterar é um valor,
por exemplo, de rifle Eu sempre tento caçar. Eu só tenho esse
evento e posso reutilizá-lo em vez
de copiar e colar novamente. Sim, podemos tentar
pensar por si mesmos como podemos usar esse
evento aqui também? Na verdade, funciona aqui e aqui. Sem precisar
copiar e colar tudo isso, o que precisamos fazer agora? Podemos postar esse vídeo
e você pode voltar. E agora eu vou
te dar a resposta. Em vez de tê-la
como uma variável estática, podemos tê-la como dinâmica. Podemos arrastar isso para
aqui, para este evento. Esse é o tipo de arma a ser encontrada. Na verdade, acredito que precisamos,
sim, desse também. Quando trocamos
a arma, a animação, essa também
precisa entrar nessa. Vamos clicar duas vezes neste
e fazer algumas anotações de redirecionamento. Tudo bem, agora nós o
conectamos aqui. O que podemos fazer é usar a arma principal para transformá-la
em um rifle aqui em vez
de aqui embaixo O que podemos fazer aqui é copiar e
colar tudo isso. E cole aqui embaixo. Vou conectá-lo agora em vez de um rifle Agora, a
arma secundária é uma pistola. Então, se não tivermos uma
pistola já equipada, podemos ir em frente e
realizar este evento E essa eu vou
mudar para pistola agora. Ele vai ter esse
valor conectado aqui e agora ele vai
procurar por uma pistola Ok, então agora, muito fácil, nós realmente terminamos
esta lição. Você pode clicar em jogar e eu posso clicar em terrorista e saquear essas duas armas Eu posso clicar em um
para ter meu rifle. Posso clicar em dois
para pegar minha pistola. Agora você pode ver que podemos alternar entre essas duas armas
sem nenhum problema. E nem copiamos e
colamos tudo isso. Acabamos de reutilizar o mesmo.
120. 9.05 Criando montagens de animação: Ok, então o que eu
gostaria de fazer agora é que acho que é um
pouco barato agora. Porque podemos trocar
as armas assim. E seria legal se tivéssemos uma animação ao
trocarmos a arma. Se você já jogou
Counter Strike antes, quando você troca uma arma, ela meio que recarrega a arma
antes que você possa usá-la Vamos fazer algo assim e para esta lição, muito simples. Vamos apenas criar algumas animações ou montagens de
animação Vamos clicar nos ativos. Lembre-se, não é a animação
, não são as antigas. São os ativos.
É nosso personagem. Apenas certifique-se de que é
nosso personagem. Em vez disso,
vou apenas pesquisar
por recarga porque temos algumas animações de recarga que
usaremos Agora, eu não tenho animações
específicas para tirar sua arma Você provavelmente tem se tiver um projeto sério e quiser fazer
algo assim. No entanto, para
este, vamos usar a animação de recarga ao arrastar
nossa arma E isso também é uma boa
prática. Vamos clicar com o botão direito
na pistola primeiro. Por exemplo, acesse Criar e crie uma montagem de animação Com a montagem da animação,
podemos adicionar, na verdade, algo
como recarregar animações, animações disparar a arma
e coisas assim
sem interromper nossa animação sem interromper E clique na
montagem de animação e vamos chamá-la ânion para montagem de animação
e chamá-la de pistola Vamos fazer a mesma coisa com
o rifle, clique com o botão direito, vá criar uma montagem de animação E chame isso de rifle de recarga. E se você abrir agora, verá que temos
uma montagem de animação E temos algumas
coisas que podemos fazer aqui. E, na verdade, vamos
usar essa parte aqui embaixo para criar um movimento da
parte superior do corpo. Então, quando estamos correndo, podemos ter essa
outra animação,
essa animação de recarga, sem parar nossa animação em execução Então, podemos ter duas
animações ao mesmo tempo e é por
isso que criamos
essa montagem de animação
121. 9.06 Ajustando o Blueprint de animação: Ok, antes que as montagens de animação possam funcionar em sua animação, você precisa fazer algo dentro do esquema de animação Vamos até o player e vamos abrir o plano da
animação E lembre-se de que isso é o que
fizemos aqui até agora. O que você precisa fazer
é realizar
um movimento da parte superior do corpo,
como você pode ver aqui. Se eu voltar às minhas
animações, pesquisar
minha animação e dar uma
olhada nas minhas montagens de animação Agora, se eu clicar em um deles, posso ver aqui que ele está usando um slot chamado slot padrão. E, na verdade, precisamos usar a parte superior
do corpo em vez disso. Aqui na animação
Slot manager. Vamos clicar em um slot, vamos chamá-lo de parte superior do corpo, porque eu só quero
mover a parte superior do corpo quando recarrego e ainda quero que meu
personagem corra Você pode correr e recarregar parte superior do corpo e deixar que a gente a salve E agora você vê se vai
até a pistola também. Aqui no gerenciador de slots, você tem essa parte superior do corpo. Você tem esse slot sempre que
cria um deles, o rifle o tem e a
pistola também Ok, você precisa clicar no slot aqui em vez
do slot padrão. Vamos agora clicar aqui
para ver o nome do espaço e
alterá-lo para a parte superior do corpo. A mesma coisa para a pistola, então os dois
clicam aqui, colocam o nome do slot e
alteram para parte superior do corpo Agora você pode ver que a
animação não está sendo reproduzida porque, na verdade, só nós sabemos
que essa é
a parte superior do corpo. Nós realmente não
dissemos ao motor neural o que é a parte superior do corpo no
momento. Precisamos fazer isso. Vamos ver o
plano de animação aqui dentro. Precisamos usar uma função
chamada mistura em camadas de seu osso. Esta em camadas mistura seu osso como padrão. Vamos
pegar a pistola primeiro Vamos copiar isso. O
movimento da pistola foi armazenado em cache, e vamos colocá-lo aqui. O que precisa ser misturado é
tentar copiar e colar isso novamente. E precisamos arrastar até aqui e
procurar o slot padrão. Você pode ver aqui que
temos esse slot padrão. No entanto, não é isso que
queremos usar agora. Queremos usar, se
você clicar aqui, você deseja
alterá-lo para a parte superior do corpo. Agora estamos usando
este em vez disso. E você pode sair
e conectá-lo aqui. Sempre que reproduzimos nossa montagem de
animação, ela se mistura
entre as duas Temos essa mistura aqui. Vamos clicar nele aqui. E vamos clicar
na configuração da camada. Clique aqui e
clique no sinal de mais. Clique na seta aqui. Agora
estamos dentro daqui. O que estamos tentando fazer
agora é dizer ao Unreal Engine o que
é a parte superior do corpo, porque no momento o
Unreal Engine não conhece
realmente a parte superior do Você tem que dar a ele um nome de osso. Se você abrir o esqueleto
ou o personagem e clicar nos
ossos do personagem e em toda a hierarquia, poderá ver o osso
do personagem que
queremos mostrar na parte superior do corpo Onde isso começa? Normalmente
, na maioria dos casos , começa aqui na coluna 01. Às vezes parece melhor
quando começa na coluna 02. Nesse caso, vamos tentar
usar o Spine 01. Você tem que voltar e
escrever exatamente como
é chamado aqui, vamos chamá-lo de Spine 01. E a profundidade da mistura é uma. E também a rotação do espaço da malha, diz-se que a
mistura é verdadeira. Vamos compilar e
excluí-lo daqui de cima. E, em vez disso, vamos conectar isso. Assim,
vou copiar colar tudo isso e
deletar a pistola Em vez disso, pegue
o rifle e
conecte-o aqui também Vamos
conectar o rifle também e excluir este antigo Vou reduzir isso
e organizar as coisas um pouco mais. Então, algo assim aqui. Então eu posso movê-lo para
cá como antes. E agora nós
realmente terminamos isso. Se eu clicar em pode
compilar, você pode ver meu personagem está
realmente se movendo agora Agora, se reproduzirmos nossas montagens de
animação, tudo deve
funcionar perfeitamente Lembre-se de alterá-lo. Aqui em sua montagem de animação, lembre-se de
alterá-la para a parte superior do corpo E lembre-se aqui,
para a parte superior do corpo, para a mistura em camadas por osso, lembre-se de dizer de qual osso você deseja se misturar Muito, muito importante.
Salve tudo e vamos seguir em frente.
122. 9.07 Equip Animation Multicast: Vamos seguir em frente e fazer com que funcione. Vamos voltar para
o jogador e
abrir a base de jogadores aqui. Vamos reproduzir nossa montagem
de animação. O que você precisa fazer é pegar
essa malha que temos e arrastar a partir daqui e pesquisar por montagem de animação E então você pode ver isso aqui. Reproduza a montagem de animação. Ok, agora temos que selecionar qual montagem
estamos falando Vou torná-lo
dinâmico, assim como este. O que podemos fazer é lembrar que este é um efeito temporário. Em vez de usar um representante, notifique, lembre-se de que uma notificação de representante será vista por um jogador que ainda não se
conectou ao seu servidor E se eles se conectarem,
por exemplo, 10 minutos depois, poderão
ver sua arma equipada. No entanto, a animação, como a
animação de recarga quando você
pega uma arma e eles
podem ver uma recarga, não precisa ser exibida
para jogadores desconectados porque é apenas uma animação que desaparece As pessoas realmente não
se arrependerão se não
conseguirem ver essa animação
quando se conectarem,
porque, de qualquer forma, ela simplesmente desaparecerá após 1 segundo. Então, em vez disso, vou adicionar a
um multicast. Uma transmissão múltipla. Lembre-se de que somente os jogadores
conectados podem ver isso. E jogadores desconectados, se eles se conectarem ao mesmo tempo em
que você está recarregando, não
poderão ver isso
até que você recarregue novamente Vamos criar um novo Chame isso de multicast. Vamos chamá-lo de Equip Weapon, porque eu geralmente chamo do
mesmo nome do servidor Vamos executar isso em
multicast e de forma confiável, e vamos conectá-lo
aqui para o multicast Dependendo se estamos
segurando uma pistola ou um rifle, queremos reproduzir a
respectiva animação Exatamente como o que fizemos aqui. Vou criar
uma nova variável e é o tipo de arma
que existe lá em cima. Selecionado. Vamos fazer a
mesma coisa aqui. Eu só vou me equipar. Eu só vou
ligar para equipar. Na verdade, vou
chamá-lo da mesma coisa aqui em cima. Em vez de encontrar,
equipar assim, tipo de
arma para equipar Ok, tudo parece bem. Agora podemos arrastar
a partir daqui e dizer selecionar e usar esse nó de seleção. Então podemos conectar
este aqui embaixo. Agora, ele
selecionará a animação dependendo de qual é esse valor de
enumeração. Se for a pistola, vou selecionar e jogar a pistola Montagem de animação.
Se for o rifle, vou jogar o
rifle Animation Agora vai funcionar
dependendo do que
selecionamos aqui para
o rifle ou
aqui embaixo para a pistola Deixe-me, na verdade
, colocá-lo abaixo dos dois. Na verdade, vou
organizar isso um pouco mais. Movendo isso, movendo isso para cima. Então, eles estão juntos e
este está abaixo deles. E podemos mover esse para cima
também, sem mais nem menos. Ok, agora nós o
temos e agora precisamos adicioná-lo ao código. Então, vou
adicioná-lo aqui. Logo depois de mudarmos
nosso estado de movimento, quero reproduzir minha animação de
recarga E nós a chamamos de arma de equipamento
MC. E lembre-se de que os multicasts
só podem ser executados em eventos do servidor. Este é um evento de servidor. Lembre-se de que é muito importante que o
multicast não pode ser executado aqui. Portanto, você não pode chamar um
multicast aqui. Isso está errado. Você precisa
executá-lo por meio do servidor. Vamos descobrir isso e,
digamos, a arma MC Equip. Vamos conectá-lo aqui.
E vamos conectar esse tipo de arma a ela para que
fique correta quando for jogada. E vamos compilar agora. Agora podemos
clicar em Play para ver se tudo funciona ou
se temos alguma caixa. Se eu clicar em jogar e selecionar terroristas e os selecionar aqui,
agora
eu clicar em um, agora
eu clicar em um, você pode ver que eu jogo
a animação de recarga Se eu clicar em dois,
eu também recarrego. Agora vamos ver se isso
combina com nossa corrida. Se eu correr e clicar aqui, você verá que estou realmente
correndo e recarregando Se eu clicar no controle
e recarregar,
veja, na verdade, se
eu clicar no braço
da mola e
torná-lo 500 para que possamos realmente ver
como é, eu clico em play E se os pegarmos agora, vamos fazer isso agora. Se eu trocar, você pode ver que eu também estou agachado e
recarregando Está funcionando agora. Tudo
está funcionando corretamente. Incrível. Então, agora eu estou
clicando no braço da mola, tornando o
comprimento do braço alvo zero novamente, e tudo está funcionando. Agora também precisamos
adicioná-lo em outro lugar. Porque quando saqueamos a
arma do chão, no momento ela não está jogando Sempre que você saquear os itens
ou aqui no lote de armas, sempre que você saquear o item Quando definimos o tipo de arma
equipada com a arma do lote, também
precisamos
reproduzir a animação. Então está correto. Deixe-me
mudar isso um pouco para cá. E vamos chamá-la
novamente de arma MC Equip. E vamos adicionar qualquer que seja
o tipo de arma. É esse. Vá em frente
e crie um nó de rota traseiro, e agora está correto aqui. Então, vamos organizar as coisas um
pouco mais desse jeito. Ok, agora está
aqui dentro também na arma de saque E agora vamos clicar em play. Agora, sempre que eu saqueio minha arma, ela realmente reproduz essa animação antes
que eu possa atirar com minha arma Então é assim que você também adiciona animações às suas
armas Você pode adicioná-los por meio montagens de
animação
e também fazer um movimento da parte superior do corpo
para as montagens de animação, para não interromper
a animação em execução enquanto faz tudo isso Ok, então foi isso por enquanto. Vamos salvar tudo e passar para a próxima.
123. 9.08 Configurando o Widget de exibição de armas: Agora é hora de criar
o widget de exibição de armas.
Então, vamos em frente. Na interface de usuário aqui, assim como antes de criarmos
a I de seleção de equipe, vamos agora clicar com o botão direito do mouse e ir até a Interface
do usuário e criar
outro widget, o blueprint Agora, para este,
novamente, o widget do usuário é o que
vamos selecionar E vamos chamá-lo de B.
Vou chamá-lo de principal. Essa será a
interface principal que teremos. Não criamos um NuWi
principal para o jogo. No Nei principal, você também pode
ver suas armas. Vamos abrir esse. Lembre-se de que sempre que você começa com um esquema de widget, primeiro
precisa usar a tela, adicionando
uma tela a ela E agora estamos
prontos para projetá-lo aqui. No entanto, ainda
não importamos os ícones. Então, deixe-me salvar tudo.
Vamos encerrar isso. E eu quero que você leia
os materiais do curso
que eu lhe dei,
vá os materiais do curso
que eu lhe dei, até os ícones da interface do usuário, e eu dei
esses ícones para você. Então vá em frente e selecione todos os ícones
de armas novamente. Você pode ver
itens diferentes nos materiais
deste curso,
dependendo de quando você fizer o download. Porque, no momento,
estou apenas adicionando mais coisas à medida que faço este curso. Pode haver
mais ícones do que você pode
ver aqui agora. Tenha esses três ícones. Por enquanto, vamos para a pasta de ícones. Deixe-me clicar e
arrastá-los até aqui. Novamente, assim como
fizemos com os outros,
lembre-se de que alteramos o grupo de
texturas para UI e as configurações de compressão para a interface de
usuário dois D. Vamos fazer isso com
esses três também. Agora você pode clicar neles
e configurá-los individualmente. No entanto, você pode simplesmente clicar em um ou segurar o controle para
selecionar os três. Clique com o botão direito do mouse e vá para Ativo. Ação, edição em massa
por meio da matriz de propriedades. Lembre-se de que é assim que você
edita todos eles de uma vez. Isso é algo que
fizemos antes. Vamos em frente e clicamos nele. Na compressão,
acredito que, já que
daqui as configurações de compressão
aqui, ela vai para duas interfaces de usuário, duas D, e o nível de detalhe, você pode configurá-lo do mundo para a interface do usuário. Agora podemos fechá-lo
e salvar tudo. Tudo bem, agora, quando
entramos na interface
do usuário e na interface principal, e se, por exemplo,
adicionarmos uma imagem à tela, você clica nela aqui em cima para
que a imagem encontre a imagem, vamos encontrar os ícones que
adicionamos. E aqui você pode ver
os ícones que temos. Tudo bem, então vamos passar para
a próxima lição, onde criaremos esse
modelo de widget Por enquanto, vamos
excluir esse. Vamos manter essa tela
porque precisamos dela. E compile, salve tudo
e vamos seguir em frente.
124. 9.09 Projetando a interface do usuário da tela de armas: Ok, então o que
queremos fazer agora com tela
da arma é
como no Counterstrike, onde você pode ver aqui ao lado que você tem a
arma e, em seguida, você tem a tecla no
teclado que precisa pressionar
para ver essa arma Então, assim,
faremos a mesma coisa,
e a interface ficará mais visível sempre que você tiver
essa arma selecionada em comparação com
as outras e assim por diante, então apenas um pequeno efeito. Ok, por enquanto, deixe-me
encerrar isso e
vamos criar essa interface de usuário de exibição de armas muito
simples. Agora, quando você cria
algo assim, precisa pensar em quais
caixas deseja adicionar. Então, temos a caixa horizontal e temos a caixa vertical. Primeiro, precisamos de uma caixa
vertical porque as armas estão uma em
cima da outra. Vamos escolher uma caixa vertical. Coloque-o aqui. Vamos redimensionar isso de alguma forma para
que eu possa arrastá-lo E eu vou
arrastá-lo até aqui em algum lugar. Novamente, lembre-se de
alterar o ponto de ancoragem,
caso contrário, ele estará errado
na tela aqui Clicando no ponto de ancoragem, colocando-o
no canto inferior direito E também para a
posição, vou
escrever 00 para ver
onde está na tela. E você pode ver que está
fora da tela. Lembre-se de que você pode ajustar
isso no alinhamento. Se eu escrever 0,5 aqui, você pode ver que agora ela
se encaixa no meio dela E se eu escrever um, ele se
encaixa no outro lado, assim
como para Y, se t 0,5 ele se encaixa
no meio dele E se eu escrever um, ele se
encaixa no outro canto. Agora, mesmo na posição 00, ela está dentro da nossa tela, e é isso que queremos
para as posições x e y. Posso dar algo
como -30 aqui e -30 aqui, só para
afastá-la das Não está na parte superior da tela. Aqui está a borda da tela. Ok, vamos compilar. Agora,
o que precisamos fazer é ter uma arma e a tecla do teclado. Além disso, na verdade
precisamos de uma caixa horizontal. Agora, uma caixa horizontal dentro
da caixa vertical. E agora podemos adicionar a imagem
da arma, bem como o
texto da tecla do teclado. Adicione-os aqui. Deixe-me clicar no texto
e vamos escrever um por enquanto. Essa é a tecla do teclado. E então você pode
clicar na imagem. Deixe-me selecionar a imagem. Se eu pesquisar o ícone
AK 47, por exemplo, e quiser um tamanho maior,
em vez de 32 por 32, talvez possamos escrever
algo como 130 por 130. Lembre-se de que, antes
de criar isso corretamente, lembre-se de clicar
no tamanho da tela. Acesse laptops, por exemplo, e selecione o notebook genérico de
14 a 15. Isso é exatamente
o que eu mostrei
antes com o widget de
seleção de equipes Isso é para escalar essa interface de usuário
corretamente em todos os dispositivos. Sempre que eu estiver no
zoom, um por um, é
assim que
vai ficar no laptop, é isso
que parece. Agora você pode ver se você
clicar neste botão aqui, eu removo as linhas de traço Eu costumo fazer isso para ver como
fica sem
todas essas linhas. Acho que é grande
o suficiente para um laptop. Vamos compilar. Lembre-se,
nós o escalamos para minha tela Por exemplo, eu tenho
um monitor de quatro K e o escalamos clicando
nesse pequeno ícone E então selecionamos aqui
o quanto queríamos escalar. Acho que antes eram oito. Portanto, é escalado muito rapidamente. Eu coloquei em 2,5 Sim. Agora vamos clicar nesse número. Vou alinhá-lo verticalmente
ao meio. Acho que agora é
clicar nessa caixa horizontal. Na verdade, o que vou fazer é clicar na caixa vertical. E clicando em Tamanho para conteúdo, a caixa
vertical simplesmente será dimensionada em comparação com qualquer
conteúdo que ela contenha. O que podemos fazer é, por exemplo, para a
caixa horizontal, eu posso controlar D, e isso vai copiá-la
além desta aqui em cima. Se você apenas controlar D para
copiá-lo ou duplicá-lo, você pode ver que ele cola
as armas aqui em cima e está
parecendo correto Eu só preciso de dois deles.
Eu não preciso de tantos. Vou clicar
no número primeiro. Na verdade, vou
deletar esse. Vou apenas estilizar um deles e
posso copiar e Vou clicar
nesse número. Vou mudar
o fundo para alguma coisa. Nós importamos rubi. Acho que Simy Bold
ficará bem com este. Sempre podemos
testá-lo quanto ao tamanho. Acho que 22 pode
ser um pouco melhor. 22, precisamos de um espaço
entre esses dois. Vá até aqui, procure por espaçadores e coloque-os entre
a imagem e o texto E então você pode colocar
algum espaço entre eles. Por exemplo, se eu fizer
20, algo parecido. Ou você pode aumentar ainda
mais se for muito pouco. Acho que está tudo bem por enquanto. Agora, o que você pode fazer é clicar nesse
controle de caixa horizontal D para duplicar. E agora você tem
, por exemplo, para este você pode
transformá-lo em uma pistola Agora, isso realmente não
importa agora, porque vamos mudar isso
dinamicamente no jogo Esse AK será uma arma. Se eu for até o
projeto de armas, se eu puder encontrá-la aqui, a arma aqui, 44 Este será o
ícone, ou este. Se você pegou
44 em vez de um AK, essas imagens mudarão
dinamicamente no jogo Realmente não importa,
mas para esses números, isso é um, isso é dois. E é isso que eu pressiono
no teclado para que essas armas sejam
equipadas para mim. Tudo bem, então foi
isso para estilizá-lo. Você pode ver que é
muito, muito simples. É uma interface de usuário muito simples, mas ficará
bem no jogo. Então foi isso por enquanto. Vá em frente, compile
e salve tudo, e vamos
para a próxima
125. 9.10 Exibindo a interface do usuário da tela de arma: Agora vamos exibir
essa interface de usuário na tela. Agora você pode fazer isso sozinho
se quiser algum treinamento, porque já
fizemos isso antes. Tente descobrir como você pode
exibir isso na tela. Depois do widget de seleção de equipe. Sempre que selecionamos a equipe, quero exibir essa interface principal. Tente descobrir isso sozinho. É um bom treinamento se você não se lembra
ou quer ajuda. Vamos fazer isso juntos.
Deixe-me encerrar isso. Primeiro, o que eu preciso
fazer é
ver as plantas. Vá
para o controle do jogador. Lembre-se de que, no controle do jogador temos toda a interface de usuário em que criamos esse evento show
hide widget Aqui, quero
mostrar meu widgit principal. Agora usamos essa enumeração, preciso adicioná-la à Se eu for para Enums, clico nos widgets do jogo Dentro daqui, estou adicionando
um novo enumerador e estou escrevendo nome ou não nome Vou movê-lo aqui
até o topo só para ficar mais limpo.
Realmente não importa. Então eu vou para o controlador do Player
aqui, assim como antes. Clique com o botão direito, crie widgets. Então, podemos criar
o widgit principal. Podemos procurá-lo aqui. Vou clicar com o botão direito do mouse
e promover isso para uma variável e chamá-la de WB main Agora vamos
arrastar a partir daqui e adicionar ao Viewport, assim Agora, assim como antes,
vou arrastar esse principal para fora,
certo, convertê-lo em
um get validado Então, quando não for válido, quero criar o widget No entanto, se já o
criamos antes, vou adicioná-lo diretamente à janela de visualização, como
antes Tente organizar isso. Quando você terminar
assim, poderá
prosseguir e compilar E lembre-se também de acessar o widget ocultar aqui dentro Assim como antes,
vamos colocar W em um get e arrastar validado a partir
daqui e dizer remover de Lembre-se também de fazer
isso sempre que
quiser , talvez um pouco agora. Isso realmente não acontece
muito com o MenuI. Você não o remove demais. No entanto, em um
caso, por exemplo, se você tiver um filme cinematográfico
ou algo parecido, não
desejará
exibir o MenuI Também é assim que você o remove. Vamos voltar ao gráfico de
eventos agora. Após a seleção da equipe, lembre-se que aqui no
controle do jogador na parte inferior,
criamos esse CL spawn player Nós geramos o jogador,
escondemos a seleção da equipe. Agora, aqui está um bom
lugar para mostrar o Maui. Lembre-se de que a interface do usuário está do lado do cliente. Sempre que você trabalha com a interface do usuário, você precisa executá-las
no cliente aqui. O que eu geralmente faço
é procurar
um evento para clientes que já
criamos e
que possamos usar. Este reprodutor de spawn do CL está
rodando no cliente, então esse é um ótimo
lugar para mostrar o Maui Vou dirigir até
aqui e dizer Mostrar widget
Ocultar, como o chamamos E eu vou
selecionar o MenuI. Vou clicar em
Mostrar e conectá-lo. Agora, só um lembrete,
se você esqueceu, ele selecionará o
Maui e
selecionará Mostrar aqui no Ocultar widget. Ele sabe que
é o MenuI Ele sabe que esse
boletim é verdadeiro. Então, vai ficar aqui. Ele sabe que é verdade. Então, ele
vai mostrar o widget Agora ele sabe qual widget é, porque selecionamos
o widget principal, que entrará E ele executará esse
código a partir do widget principal. E vai
ignorar esse. Só está rodando
esse aqui em cima. E vamos adicionar o widget
principal à janela de visualização. Então, acho que não
estamos perdendo nada. Então, vamos jogar
e selecionar,
por exemplo, o antiterrorista. E então você pode ver
que eu tenho minha interface principal. Se eu maximizar minha tela, tenho a interface principal aqui e
posso vê-la na minha tela.
126. 9.11 Codificando a funcionalidade de exibição da arma: Agora vamos codificar a funcionalidade
da interface de exibição. Vamos até a interface do usuário
e vamos abri-la. Essencialmente, antes de
começar a codificar a interface do usuário, você só precisa pensar o que está tentando fazer? O que estou tentando
fazer é
mudar essa imagem para o que estou segurando. Quero exibi-la e removê-la, dependendo se eu
saqueei a arma ou não Então, vamos começar com
o primeiro. No primeiro, vou
apenas mudar
o nome da imagem para que não
fique confuso Vou chamá-lo de rifle IMG. A próxima eu vou
chamar de pistola IMG. Agora, para usá-los
aqui no gráfico, você pode ver que não
temos nenhuma variável. Temos que clicar nos
dois. Selecione os dois. Dois é variável, então você tem que
pegar isso e compilar. E agora podemos ver que podemos
usá-los como variáveis
dentro daqui. Vou deletar
tudo isso e deixar que criemos um evento personalizado. Vamos chamar isso de
atualizar o inventário. Eu atualizo o inventário
I dentro daqui. Basicamente, o que estamos
tentando fazer é pegar essa pistola de imagem, por
exemplo, um rifle de imagem
e , dizer
, separar o pincel da textura Este é um conjunto de pincel de textura, isso é simplesmente quando você
está alterando esta imagem. Queremos mudar essa imagem dependendo se
estamos segurando o K,
as informações ou qualquer outra coisa. Defina o pincel a partir da textura e aqui está a
imagem que podemos mudar. A outra coisa é que estamos
tentando mostrar
ou ocultar esse ícone,
dependendo se saqueamos
a arma ou não Novamente, drague a partir desta visibilidade definida
e selecione esta. Vou copiar e colar
este aqui embaixo, copiar isso e conectar
o rifle de imagem também Isso é o que você está
tentando fazer. Também estou copiando e colando isso
assim. Essas são as funções
que simplesmente vamos usar. É sempre bom fazer isso sempre que você vai
começar algo. Tente pensar qual é a principal
coisa que você está tentando fazer. Você está tentando
mudar a imagem dependendo da
arma que você saqueou e está tentando definir
a visibilidade como
oculta ou não oculta, dependendo se você
saqueou essa arma ou Ok, com esse. Agora, depende de qual
arma estamos saqueando. É uma pistola ou é um rifle? Lembre-se de que já
temos uma variável para isso e esse é o tipo de
arma E. Estamos
usando muito isso e vamos chamar isso de
um tipo de arma. Ok, então temos esse e
podemos arrastar a partir daqui e dizer que o switch tem autoridade. Na verdade, ative a
enumeração desta. Agora, dependendo
se for uma pistola, vamos executar esse código Dependendo se for um rifle, vamos executar esse código E eu vou conectar tudo isso aqui, desse
jeito. Ok, agora para as imagens,
para as texturas. Em vez de
colocá-los aqui, vou apenas clicar e
arrastá-los para este evento. E eu vou
chamar isso de prego idiota. Também podemos arrastar isso
para cá. Ok, vamos compilar agora.
Vamos salvar tudo. Tudo bem, então a única
coisa que falta
agora é a miniatura da arma Porque lembre-se de
que não adicionamos uma miniatura de arma à infraestrutura de
armas Então, precisamos fazer isso
na próxima lição. No entanto, antes de
terminarmos isso, também precisamos definir
isso como visível ou não. Então, agora a visibilidade
da arma ficará visível sempre que você tiver
carregado a arma. No entanto, se você ainda
não o tiver carregado, ele ficará oculto. Então, para fazer isso, o que podemos
fazer é verificar se essa miniatura de imagem ou miniatura de arma é
válida ou Porque, assim como antes, se eu voltar ao
jogador e à base de jogadores, lembre-se de
como poderíamos excluir variáveis como essa
sem configurá-las para nada e elas não
serão válidas. Podemos fazer a mesma coisa aqui com
a miniatura da imagem. Podemos configurá-lo para nada
e não será válido, que significa que
deixamos cair a arma. O que podemos fazer é
arrastar a partir daqui e dizer que é válido e podemos
escolher, este é válido. Assim como antes,
ou como trabalhamos com as notas selecionadas,
podemos arrastar a partir daí e dizer selecione e escolha esta. Agora eu posso conectar esse
lingote a este aqui. Está bem? Se a
miniatura da arma não for válida, válida
é falsa, isso significa que queremos que ela fique
oculta Agora, para este outro, se for verdade, é válido. Queremos que seja testável
sem impacto. Lembre-se de que não
pode ser testado com acerto significa que o
cursor do mouse não pode
interagir com essa imagem Nós realmente não precisamos fazer isso. O que precisamos fazer
é clicar nele aqui e manter o controle. Clique no
segundo e também
defina a visibilidade como
não testável Visível significa que seu mouse
pode realmente clicar nele e bloqueará
qualquer coisa por trás disso. Mas nós realmente não
precisamos clicar neles. Preciso configurá-los
para que não sejam testáveis. E faça a mesma coisa
aqui para o texto. Defina-os como não testáveis. Aqui embaixo, na visibilidade também por padrão, vou
selecionar esses dois e a visibilidade fica oculta. Na verdade, não
precisamos
vê-los quando
começamos o jogo, não temos armas. Vamos configurá-la para ser
testável sem impacto sempre que realmente
saquearmos a arma Faça a mesma coisa aqui. Estamos
perguntando se isso é válido. Na verdade, podemos simplesmente
copiar e colar este. Copie, cole, conecte e também conecte aqui. Ok, então aqui eu criei algumas notas de rota e
organizei um pouco o código. Aqui temos o
código, e esse é o código principal do
nosso inventário, UI. Agora vamos para
a próxima lição e criar essa miniatura de arma
dentro de nossa estrutura
127. 9.12 Adicionando miniatura de arma à estrutura: Vamos agora adicionar a
miniatura da arma à estrutura. Vamos voltar às nossas estruturas e abrir as informações sobre as armas. E vamos adicionar uma nova
variável e
chamá-la de miniatura aqui Para a miniatura, o tipo
é apenas uma imagem, então é uma textura dois D.
É assim que elas são
chamadas. Saia e economize. Agora vamos fechar
essa estrutura. Vamos também adicioná-lo
à tabela de dados. Se você abrir a tabela
de dados das planilhas do Google que
criamos anteriormente e abrir a tabela de dados aqui, vamos adicionar a variável dentro da estrutura.
Vou empurrá-lo para cá
depois do tipo, talvez aqui só
para deixá-lo mais limpo. Realmente não importa para
onde você o move, mas agora preciso adicioná-lo aqui. Depois da digitação, preciso
adicionar a miniatura. Se eu olhar aqui depois do tipo, preciso adicionar a
miniatura Vou clicar com o botão direito do mouse e
adicionar uma coluna à direita. Então eu vou chamar
isso de uma miniatura. Lembre-se de
chamá-lo do
mesmo nome que você chamou aqui. Agora precisamos das
referências a eles. Se eu fechar isso,
vou para a interface do usuário. Abro os ícones, agora posso escrever, clicar
neste AK e copiar a referência. Posso voltar para minha tabela de dados e colá-la aqui para o AK. Faça o mesmo
aqui para obter as informações, clique com o botão
direito do mouse em copiar referência. Cole aqui, clique com o botão direito
do mouse em copiar referência para a pistola. E cole aqui também. Agora você
pode
baixá-lo como um arquivo CSV aqui
na pasta de downloads Vou renomear Weapon Info. Vou copiar
isso, o antigo. Eu vou deletá-lo. Vou colar o
nome aqui, DT Weapon Info. Lembre-se de que esse é
o mesmo nome que chamamos aqui
em nossas tabelas de dados. E agora podemos clicar
e arrastá-lo até aqui, e ele diz que foi
reimportado com sucesso Se você abri-lo,
poderá ver que ele realmente tem ícones anexados a ele agora. Ok, agora podemos fechá-lo. E agora vamos até
o jogador e
abrir a base de jogadores. Dentro da base de jogadores, queremos atualizar a interface quando
saqueamos a arma aqui
no lote de armas Vamos até aqui com a arma
Servalote. Precisamos chamar esse
evento de atualização da interface do usuário dentro de um cliente. Lembre-se de que a interface do usuário está localizada no
cliente e, na verdade,
não temos nenhum evento para
clientes no momento O que vou fazer é clicar com o botão direito do mouse aqui e criar um
novo evento personalizado. Chame-o de CL para o cliente, deixe-me chamá-lo de Atualizar
inventário, UI, por exemplo. E execute-o no
cliente proprietário e é confiável. O que queremos
fazer aqui é chamar nosso B principal. Lembre-se de que está dentro
do controlador do player, temos esse WB principal E dentro do B principal, podemos encontrar nosso evento
que criamos anteriormente. Precisamos acessar esse WB principal, que está dentro do controlador do
player Tente ver se você pode fazer isso sozinho e ligue para
este evento aqui. Essa é uma boa prática
para se comunicar entre os projetos.
Vamos fazer isso juntos. Agora, deixe-me clicar com
o botão direito do mouse e dizer obter o
controlador para obter o controlador específico. Então eu posso arrastar
daqui e dizer get player controller reference, nós fizemos isso a partir da nossa interface de
blueprint E então eu posso chamar
minha variável principal WB. Então eu posso arrastar e
atualizar o inventário. Evento atualizar o inventário. Eu vou em frente e
o conecto ao tipo de arma. Vou apenas
arrastá-la até aqui, assim
como a miniatura da arma Estou apenas arrastando
isso para o evento. Ele cria uma variável automaticamente e eu vou
criar alguns nós de rota. Agora, quando isso for feito,
vamos
compilar e salvar
tudo aqui Sempre que saqueamos uma arma, eu vou chamá-la, depois equipá-la, depois de mudar
o tipo de equipamento aqui, vou afastá-la Eu também vou afastar
isso. Eu vou afastar isso. Em seguida, vou ligar para o CL, atualizar a arma ou a interface do inventário. Agora, em vez de definir
o tipo de arma, vamos apenas arrastá-la
dessa arma saqueada Vou clicar e
arrastá-lo até aqui. Faça também uma anotação de redirecionamento. Também para a miniatura da arma. Agora nós o temos dentro
da nossa tabela de dados. Ao obter as informações da arma, você também obtém as informações da miniatura,
que você pode ver aqui Se você não vê,
lembre-se de marcar isso aqui. Lembre-se de que clicamos em Ocultar pinos
desconectados e só
vemos isso Agora você também pode clicar
no Spin para mostrar a miniatura e
podemos conectá-la Tudo bem, então agora
temos isso aqui. Nós o temos conectado agora. Deve funcionar sempre que
saqueamos uma arma. Vamos apenas experimentá-lo.
Antes de continuarmos, vamos clicar em play. E quando clicamos em Jogar
como terrorista. Eu me refiro a essa
pistola, por exemplo. E você pode ver que a pistola
agora está sendo exibida
aqui na My UI Quando eu aludo ao for, ele não está mostrando o P.
Precisamos corrigir este Não está mostrando o por enquanto. É estranho porque deveria
ser o mesmo código aqui. Sempre que for, segundo a informação, não
estamos mais desarmados Então, aqui no saque de armas
agora ou lote a arma, então não estamos desarmados Então, na verdade, ele está
passando por essa parte
do código aqui em cima e está
pulando tudo isso Precisamos realmente reconectar
isso a um correto. Vou manter o controle
e a tecla Alt para desconectar isso. Alt. Clique em, desculpe. Alt e clique para
desconectar isso. Então eu vou mover
isso do falso para cá. Acho que é melhor conectá-lo aqui. Em vez disso, vamos
conectá-lo aqui Isso é mais correto e vamos compilar agora
e tentar reproduzi-lo Então, se eu jogo com terroristas selecionados, agora eu pego um formulário
e depois pego a pistola e você pode ver que
os dois estão funcionando agora Precisamos corrigir o problema em que agora
soltamos uma arma e agora ela deve ser
removida da nossa interface. Vamos copiar isso aqui
e encontrar a arma de lançamento. Agora, aqui para pegar o código da arma de descarte
e a arma de soltar, eu vou entrar aqui. E agora estamos configurando
a arma caída e a removendo
do inventário. Você pode fazer isso aqui ou
aqui. Realmente não importa. Eu só vou fazer
isso dentro daqui. Eu vou colá-lo. E precisamos ter a miniatura
da arma. Então essa é a arma a ser solta. O que eu posso fazer é tirá-lo daqui, a
arma para soltar, e
posso conectá-lo aqui, para que pareça mais limpo. Eu também aguento isso. Posso dizer novamente, estamos
realmente fazendo tudo aqui. Em vez de copiar e colar, vamos usar este.
Deixe-me movê-lo de volta. E então eu posso usar
o tipo de arma e posso usar a miniatura E vamos
estruturá-lo melhor para este. Vamos
reconectá-lo. Vamos movê-lo de volta. Assim como antes,
sempre podemos criar uma traseira. Na verdade, não precisamos
criar um nó traseiro. Podemos simplesmente colocá-lo assim aqui para a miniatura da arma Na verdade, antes de
clicarmos em play
, na verdade não é assim. Lembre-se de que, ao
soltar uma arma, você não quer
definir uma miniatura, queremos configurá-la para Aqui na interface do usuário, ele diz que não é válido
e, quando não é
válido, oculta esse ícone. Clicamos em frente no jogo e saqueamos a pistola Saqueie o rifle. E se soltarmos o rifle, por exemplo, você pode ver que
ele foi removido da interface do usuário Se eu soltar a pistola,
agora ela será removida. Se eu pegar o AK, você pode ver que agora está mostrando o ícone AK. Se eu pegar a pistola, se eu soltar o AK e
pegar as informações, você pode ver que agora está
mostrando o ícone de informações Então, tudo está funcionando
como deveria. E foi isso por enquanto. Então, na próxima
, podemos tentar. Então, sempre que você tiver
uma arma selecionada. Então, agora, se eu tiver
a pistola selecionada, a pistola deve
estar totalmente visível No entanto, o ícone de informações
deve estar pouco visível. Assim, você sabe o que
selecionou do seu inventário.
128. 9.13 Unequipped Weapon UI Opacity: Tudo bem, então vamos
continuar o código aqui. O que precisamos fazer
agora é
alterar a opacidade das
imagens no designer Se você clicar em um deles, por exemplo, o AK,
se clicar na tonalidade, se clicar na
seta e ver, poderá alterar o alfa para torná-lo visível e não visível Então é isso que queremos mostrar sempre que
selecionamos a pistola Por exemplo, eu vou
fazer isso de novo. E vamos ao gráfico. Podemos pegar a pistola de imagem
e dizer opacidade. Se você não
sabe como se chama, basta pesquisar
a palavra e ver
qual é a melhor para usar. Isso às vezes é
algo que eu uso. Se estou criando uma nova mecânica, posso simplesmente escrever a palavra e tentar
selecionar
o que fizer sentido Queremos definir a opacidade dessa opacidade do conjunto
de imagens. Agora depende de qual é a
nossa arma equipada. A arma equipada está
dentro do nosso jogador, este tipo de arma equipada. Porque esse
agora, não podemos usar. Esta é apenas a arma que
pegamos
do chão. Essa não é necessariamente a arma que estamos
equipando agora Precisamos obter essa variável. E da maneira como fazemos isso, novamente precisamos nos comunicar
com o jogador. Dentro da interface do usuário, temos
algo chamado get owning, get owning player. Se
você quiser uma referência ao controlador
do player,
obtenha o proprietário do player Se você quiser uma referência à panorâmica
do jogador para o I, queremos uma referência
à Paw do jogador Eu vou dizer para
possuir o peão do jogador. Então, podemos arrastar a partir daqui
e dizer obter referência do jogador. Porque já
fizemos isso dentro de uma interface de blueprint Vamos
conectá-lo depois dos que estão aqui. Não importa qual
deles seja,
ele executa o código e
continua sendo executado a partir daqui. Queremos equipar,
esta é do tipo de
arma equipada. Novamente, assim como antes. Vou mover isso e dizer
ativar a conexão de enumeração Agora vamos pegar isso. Se for uma pistola, queremos definir a opacidade
para uma Se for um rifle, vamos copiar isso, na verdade,
sem esse Digamos que defina a opacidade
se for um rifle. Da pistola. No momento em que
equipamos a pistola, o rifle estaria com 0,25 de
visibilidade Por exemplo, a opacidade. Agora podemos copiar e colar isso aqui e podemos
conectá-lo ao rifle A pistola agora é 0,25
e o rifle é um. Agora que terminamos isso, podemos prosseguir,
compilar e salvar tudo. Agora deve funcionar. Temos que ligar para esse. Lembra dessa interface de atualização do
inventário? Na verdade, não estamos convocando nosso evento, onde na verdade
selecionamos
armas aqui embaixo. Quando selecionamos a arma primária e secundária aqui. Não estamos chamando o evento em que atualizamos
a interface do inventário, precisamos chamar
esse também. Sempre que equipamos armas, esta aqui é atualizada Temos que fazer isso.
Vamos até a base de jogadores. E deixe-me afastar isso. Lembre-se de que estamos usando a arma
de equipamento Serva. Sempre que mudamos
para o
primário e o secundário aqui. Depois desta, novamente
vou ligar para CL, atualizar a arma
I, vou verificar aqui
o tipo de arma que estamos equipando, é essa arma tipo dois
equipamentos que estamos usando Posso simplesmente conectar isso aqui e criar um
nó de redirecionamento para o próximo. A miniatura da arma
é que podemos realmente obtê-la dessa variável de
arma, podemos arrastá-la aqui,
obter o nome, pesquisar a variável de nome, coletá-la como antes obter informações sobre a arma
e, em seguida, podemos arrastá-la
daqui e quebrá-la Então, podemos obter as
informações aqui. Temos o tipo de arma
e temos a miniatura. Tecnicamente, você pode simplesmente
conectar isso aqui também. Realmente não importa.
Vou apenas inserir a miniatura.
Isso é bom. E vou
clicar neste e ocultar os pinos desconectados E agora terminamos isso. Vou levar
isso mais de perto e
tudo ficará bem. Vamos compilar, salvar tudo
e testar. Reclame agora
selecione terroristas e eu
posso pegar a pistola e
eu posso pegar as quatro posso pegar a pistola e
eu posso pegar Você pode ver que o M quatro não está tão visível quanto a
pistola no momento Se eu selecionar o M quatro, ele se tornará mais visível. Então agora eu posso ver que posso
trocar de arma assim. Se eu soltá-la e selecionar
a AK ou pegar a AK, posso soltar a pistola E agora o AK não está visível porque eu
não o equipei. Mas se eu
equipá-lo, ele vai aparecer. Agora você pode ver como isso funciona. Está muito melhor do que antes. Agora podemos realmente ver
o que equipamos. É apenas um bom design de jogo, então podemos, na verdade,
ter algumas mudanças visuais. Ok, agora isso acabou. Vamos fazer alguns efeitos sonoros. Os efeitos sonoros de quando
realmente trocamos a
arma e a
recarregamos dessa forma e sempre que dessa forma e sempre que a
jogamos no chão
129. 9.14 Adicionando efeitos sonoros de equipa: Vamos agora adicionar os efeitos
sonoros equipados. Primeiro, vamos
importar os efeitos sonoros. Se formos para a pasta de áudio e efeitos
sonoros daqui, eu forneci a vocês os materiais de
custo aqui. Se você acessar o áudio e descer até aqui e encontrar o recarregamento do rifle e o clipe do
rifle, o recarregamento da
pistola e o clipe da pistola, esses cinco efeitos sonoros, clique
e
arraste-os
para o recarregamento do rifle e o clipe do
rifle, o recarregamento da
pistola e o clipe da pistola,
esses cinco efeitos sonoros, clique
e
arraste-os
para o navegador de conteúdo daqui. Ok, então quando
você os arrastar, vamos selecionar todos eles segurando,
clicando em um
deles, segurando a tecla Shift e clicando no
último clique com o botão direito e criando várias dicas Isso criará todas
essas dicas sonoras para você. Agora, eu gostaria de
renomeá-los para o que fizemos antes aqui com
o S, o prefixo Vamos continuar e
clicar no primeiro. Vou deletar
do final. Vou adicionar som
Q em vez de efeitos. Eu vou fazer isso
com o resto deles. E vou pular um pouco e
renomeá-los Agora eu renomeei todos eles. Antes de continuar,
vou reduzir o volume de cada um
porque eles estão muito altos. E para este curso, não
quero que muito alto, pois isso
será irritante para você Este é o som aqui, e
se eu clicar no próximo,
talvez o reduza para algo
como 0,30 0,3 A propósito, você pode ter volumes Luda Soará muito
melhor no jogo, mas estou fazendo
isso apenas pelo meu núcleo,
para que você não precise
ouvir esses ruídos altos Então, essas são as recargas e é
isso que parece. Ok, incrível. Agora deixe-me
fechá-lo, salvar tudo. Agora vamos ver os recursos e animações
e encontrar essas animações Lembre-se, não
são essas animações antigas, nossas próprias animações aqui. Se eu procurar
alguma montagem agora, podemos ir em frente e
abrir as duas A montagem de animação de rifle e
a montagem de animação de
pistola que criamos anteriormente.
Ok, legal. Dentro da
montagem da animação aqui, o que você pode fazer é adicionar efeitos sonoros não precisar fazer
isso dentro do código Aqui no nó para F,
temos essa barra aqui, essa. Você pode
renomeá-lo se quiser
clicando nele Clique em dois no teclado. Ou simplesmente clique
nele e talvez chame efeitos sonoros ou
algo parecido. Realmente não
importa. E aqui, vamos clicar com o botão direito do mouse e adicionar uma
notificação e depois reproduzir o Sound. Agora vamos clicar nele e agora
podemos escolher qual
som queremos tocar. O que queremos tocar
no primeiro
é chamado de clipe de pistola Queremos escolher
esse
clipe de pistola porque você pode ver aqui, queremos colocar o som
sempre que ele recarregar aqui, sempre que ele tirar o
clipe da Agora, o que eu
descobri é que é
muito melhor adicionar o som antes que ele faça a coisa,
porque parece atrasado. Se você realmente colocar o
som aqui onde ele tira o clipe e você
pode tentar ouvi-lo, parece um pouco atrasado. O que eu gosto de fazer
é
adicioná-lo antes que ele realmente o faça. Talvez algo como
aqui. Ok. Parece bom. Agora,
a próxima é que eu não preciso usar efeitos sonoros
para o clipe da pistola, na verdade
temos que
adicionar o mesmo Você pode clicar aqui, controlar C e depois
controlar V aqui. Vamos ver quando
queremos jogar. Talvez algo como aqui. Então a última é
a recarga da pistola. E acho que vou adicioná-lo
a algum lugar por aqui. Clique com o botão direito em Adicionar, notifique o jogo. Som Clique nele e
encontre a recarga da pistola. Acho que se você pesquisar, então recarregue, encontrará
o que eu te dei Recarga da pistola. E, a propósito, você pode ver muitos efeitos
sonoros aqui. E isso porque você já importou efeitos sonoros
do mercado. Quando você importou todas
essas armas, na verdade
existem efeitos sonoros dentro dessas pastas de armas. Você pode tentar usar alguns
deles, se desejar. Você não precisa usar
o que eu te dei. Você pode pesquisar por recarga de
pistola. Esse é o que eu te dei. Esse é o som. Você pode clicar no espaço para ouvi-la. Ok. Para que pareça
um pouco mais interessante, você pode ouvir o clipe
entrando e saindo. Ou recorte e encaixe.
Eles soam iguais. Está bem? Não é
realmente interessante. Vamos mudar
isso e torná-lo mais interessante. Se você acessar os efeitos de áudio
e som e clicar, clique nele. Mas vamos clicar no clipe
da pistola e duplicá-lo. Se eu conseguir encontrar o
botão aqui, duplique. Vamos chamá-lo de Pistol Clip In. Vamos renomear este
para Pistol Clip Out. Vamos clicar no clipe da
pistola aqui para fazer com que pareça diferente Acho que já o usamos antes dentro
do curso. Mas você pode usar
esse chamado modulador. E com um modulador, você pode alterar o
tom do som E dessa forma você pode
fazer com que pareça diferente. Vamos conectá-lo aqui.
Vamos juntá-los. Agora clique no modulador. Vou mudar essa
para 1,3 no campo. Vai soar mais alto
do que o outro. Se você tentar tocar ,
é assim que parece. Se você abrir o outro, o clipe sai agora e você pode
ouvir a diferença. Ok, podemos clicar no espaço
aqui para ouvi-la. Na verdade, acho que sim, precisamos
trocá-los aqui em vez de cortá-los. Vou alterá-lo para
encaixar e vamos tentar novamente. Ok, parece muito
melhor do que antes, então vamos salvá-lo. E temos que fazer a mesma
coisa com o outro. Se eu abrir a outra montagem de
animação, e você puder fazer isso, a
propósito aqui
no navegador de ativos, você poderá ver a outra montagem de
animação Vá em frente e
abra-o como antes. Vamos renomear esse
para efeitos sonoros. Vamos clicar com o botão direito do mouse em algum lugar
aleatório aqui e adicionar uma notificação. Jogue. Som Clique no som. Vá em frente e procure
por rifle Lip, acho que se chama
Rifle Clip out O primeiro é recortar novamente. Vou adiar, talvez eu esteja colocando aqui. Em seguida, o clipe entra,
vou adicionar em algum lugar por aqui, talvez o clique com o botão direito do mouse
e clique nele, mude para rifle. Na recarga, talvez eu reproduza a
recarga Clique com o botão direito, Jogue. Som Clique nele e
procure por recarregar o rifle. Vá em frente e
selecione-o e vamos tentar ver
como soa. Clique aqui Talvez este deva chegar
mais cedo porque parece atrasado. Isso soa bem. Eu gosto disso agora. E
vamos salvar tudo. E foi isso para este. Portanto, já deve funcionar. Como agora elas são
aplicadas às animações
, não precisamos adicionar
nada ao código Então, se formos até aqui
e selecionarmos terroristas. E se eu pegar uma
pistola por enquanto. Parece bom. Se eu pegar a informação
e selecionar, parece bom. Ok. Incrível. Agora
eles soam bem. É claro que vamos
fazer com que pareça muito melhor com
o recarregamento, com o clipe e assim por diante, mas por enquanto foram
apenas os efeitos sonoros e, aliás, tudo está soando
bem Novamente, você pode usar outros efeitos
sonoros que vêm com as outras armas que você baixou
do mercado. E foi isso por enquanto. Então, vamos salvar tudo e passar para a próxima.
130. 10.01 Criando a interface do usuário do Crosshair: Ok, então vamos
adicionar a cruz. Vamos para a pasta UI. E vamos abrir a pasta de ícones em vez
de aqui, como antes, vá até seus materiais de custo
e eu incluí para você, em vez de ícones,
incluí essa cruz para você. Clique e arraste-o para
o navegador de conteúdo. Antes que
esqueçamos, vamos abri-lo e entrar aqui
no grupo de texturas. Mude-a para a interface do usuário, assim como antes para as configurações de
compressão, vamos alterá-la para uma interface de
usuário em dois D, vamos salvá-la, vamos
fechá-la. Agora, o que queremos fazer,
vamos para a interface do usuário. Clique com o botão direito aqui
e vá para a interface do usuário, selecione Wigid, Blueprint.
E escolha o usuário. Widgid. Tudo isso
já fizemos antes. Vamos chamá-lo de WB. Rosa. Vamos
abri-lo em vez de aqui. Qual é a primeira
coisa que precisamos acrescentar? Lembre-se de que é a tela. Vamos procurar por
telas. Vamos adicioná-lo. E por dentro, muito simples. Para o Crossa,
só precisamos de uma imagem. Só precisamos da Crossa. Vamos mudar
a imagem para a cruz. Selecione a Crossa, queremos
que ela fique no meio. Tente fazer isso sozinho. Já fizemos isso antes. Tente fazer essa cruz no meio
, na posição 00. Tente fazer isso. Vamos continuar juntos o que você
quer fazer aqui. Primeiro, você quer mudar o ponto de ancoragem
para o meio Então, se você escrever
00 na posição, poderá vê-la ancorada aqui. Isso ocorre porque,
para o alinhamento, você também precisa configurá-lo como
0,5 para o Y. 0,5 exatamente assim para que seja dimensionado corretamente. Em vez de alterar o tamanho aqui ou aqui, quero dizer, você pode usar esse
tamanho para o conteúdo, ele será dimensionado para
qualquer tamanho de imagem que você tiver, em vez de
alterá-lo aqui. Vamos compilar agora. Agora, isso é o que parece. Lembre-se de que você também deseja
clicar na tela aqui e nos laptops, e alterá-la para genérica, neste notebook aqui. Como isso é apenas uma cruz, realmente não
precisamos
de toda essa tela aqui Isso é apenas algo que está no meio da tela. Por causa disso,
podemos clicar em Tela
cheia e selecionar Desejado. Isso só vai chegar
a essa pequena coisa aqui porque só queremos
colocá-la na tela. Não queremos todo
o espaço ao redor. Selecionar o desejado aqui
seria correto. Agora, se você ampliar um por um, poderá ver como isso é pequeno. Precisamos aumentar a
imagem e talvez
algo em torno de 80 por 80,
só que muito maior. Podemos testá-lo no jogo mais tarde para ver se é grande ou pequeno. Então, agora podemos guardar
tudo para este. Vou clicar nele novamente. Vá para Visibilidade,
altere-a para Testável sem toque. E isso ocorre porque não
queremos que o mouse
interaja com ele. Foi isso para tudo. Vamos salvar isso.
Vamos fechá-lo e passar
para o próximo.
131. 10.02 Exibindo a mira: Agora vamos adicionar a
cruz à tela. E você também pode
tentar fazer isso sozinho. Já fizemos isso antes. Se você não se lembra, vamos
fazer isso juntos novamente. Vamos ver as plantas. Agora vamos ao controlador do
player. É aqui que temos toda a
nossa interface de usuário no gráfico de eventos. Você pode acessar seus
widgets aqui. Você precisa criar o valor de
enumeração para ele. Se você simplesmente abrir
a pasta de plantas, pasta
en e os widgets do jogo aqui
dentro, como
antes Vamos adicionar um novo enumerador. Vamos chamar isso de cruz. Vá em frente e economize.
Vamos voltar ao controle
de jogo aqui. Clique com o botão direito do mouse em
Criar widgets aqui, selecione Criar widgets
e selecione Cruzar Clique com o botão direito nela,
promova-a para uma variável e chame-a de B cross. Vá em frente e adicione-o
à janela de exibição. Adicione duas janelas de visualização, sem
mais nem menos. Ok, assim como antes, vamos tirar essa variável cruzada
B. Vamos clicar com o botão direito do mouse e
convertê-lo em um get validado. Vamos conectá-lo aqui. Se for válido, podemos
simplesmente adicioná-lo diretamente à janela de visualização.
Se não for válido. Vamos
criá-lo primeiro, antes de adicioná-lo
à janela de exibição Lembre-se também de adicioná-lo, vamos ver aqui, ao Hyde Widget Se você clicar em Hyde Widgets também poderá encontrá-los aqui Se você não a tiver
aberto, você pode pegar essa cruz e
convertê-la corretamente em uma obtenção validada Se estiver na tela
e quisermos removê-lo, podemos arrastar e dizer
remover dos pais. Vá em frente e organize um
pouco mais desse jeito. Ok, vamos salvar tudo e agora vamos
adicioná-lo à tela. Vamos ao gráfico da van. E acho que o
melhor lugar para adicionar isso talvez seja depois
de gerar o jogador, você oculta a seleção da equipe e também mostra
o widget principal Vamos mostrar
a cruz também. Vamos atacar a partir
daqui e dizer mostrar ocultar o widget e chamar
esse evento que criamos Vá em frente, selecione a
cruz e selecione Mostrar. Isso deve funcionar agora,
compile, vamos jogar. Agora vamos jogar como
cliente, por exemplo, e
selecionar Terrorist. Agora você pode ver que tenho o Crossa no meio
da minha tela agora Você pode optar por ajustar o
tamanho, se desejar. Se você simplesmente acessar
a interface do usuário e acessar o Crosier, poderá clicar
nela e talvez alterar o
tamanho para algo como 60,
60, se achar que
é muito grande. E você pode tentar jogar novamente e ver como
fica. Talvez algo assim seja
muito melhor do que antes. Ok, então é assim que você adiciona
um crosier à tela e vamos passar
para a próxima
132. 10.03 Adicionando propriedades de arma à estrutura: Antes de
continuarmos, precisamos adicionar algumas propriedades
à estrutura. Vamos agora para a
estrutura aqui e vamos abri-la. A primeira coisa
que queremos adicionar às informações
da arma é
a velocidade de tiro. Nós precisamos disso. A
próxima coisa que precisamos adicionar é o flash do focinho Esse é o efeito visual que queremos jogar sempre que
dispararmos a arma. O último é
o efeito sonoro, adequado para a velocidade de disparo. Vamos transformá-lo em um carro alegórico. Esse é apenas um
valor numérico para o flash do focinho. É um
sistema de partículas. Sistema de partículas, o efeito visual. E
vá em frente e escolha a referência do objeto para
o efeito de disparo. Vamos usar a dica sonora. Estamos usando sinais sonoros aqui
para a velocidade de disparo, mosca do
focinho e efeito sonoro Tudo parece bom.
Vamos salvá-lo. Essas variáveis que
criamos aqui, vamos adicioná-las
posteriormente à tabela de dados, mas por enquanto terminamos. Nós os adicionamos. Agora
vamos fechá-lo, salvar tudo e
passar para o próximo.
133. Ação e estrutura de entrada de arma de tiro: Agora vamos criar
uma ação de entrada
chamada Shot Weapon. E você pode fazer isso de
novo sozinho. Tente fazer isso como prática. Vamos até o player e
abrir a pasta de entrada. Vamos clicar com o botão direito do mouse, acessar as entradas
e adicionar uma ação de entrada. Vamos chamar isso de arma de tiro. Nós realmente não precisamos fazer
nada dentro daqui. Vamos abrir o contexto do mapeamento
de entrada. Vamos adicionar outro mapeamento. Deveria estar aqui na parte inferior. E vamos selecioná-lo e
procurar a arma de tiro. Vá em frente e
selecione-o. E para a tecla, vamos usar apenas
o botão esquerdo do mouse. Nós realmente não precisamos de
nada aqui embaixo. Vamos agora fechá-lo. Vamos abrir a
base de jogadores e o interior daqui. Então, aqui eu posso
olhar agora e
procurar uma arma de tiro. E vá em frente e selecione-o. Agora, também antes de terminar, vejo aqui a arma de equipamento.
Vamos realmente consertar isso. Agora que percebi que, para a arma de equipamento, temos
essa animação de recarga Na verdade, vamos adicionar isso
dentro da nossa estrutura. Se você simplesmente for até a estrutura
, abri-la e pesquisar ou apenas criar uma nova variável e
chamá-la de equip, algo parecido
ou equipar animação. Você também pode escrever a
coisa toda, algo assim. Equipe a animação Para esta, vamos abri-la e procurar qualquer montagem Vamos usar uma referência de objeto de
montagem de animação para a animação do equipamento. Vou deixar que seja
aqui embaixo . Vamos salvar tudo. Vamos agora ver aqui
dentro do código. Em vez de fazer assim, o que podemos fazer agora é
remover isso, na verdade, excluir esse. E podemos usar essa montagem
para tocar diretamente aqui. E podemos remover
esse também. Podemos alterar este para
equipar algo
assim ou equipar E vamos arrastá-lo para mais perto. Agora, o que podemos fazer é aqui, onde quer que o tenhamos usado, se
você não sabe onde o usou, a propósito, nós o usamos aqui, mas
se você quiser todas as referências, você pode escrever, clique
aqui e você pode pesquisar por referências e você pode realmente ver
onde as usamos. Vamos clicar no primeiro. É só esse. Vamos
clicar no próximo. Está aqui. Podemos clicar em Alt
e clicar
aqui para desconectá-lo Também vou
deletar esse nó rodoviário. Em vez de usar
o tipo de arma, é essa,
a arma equipada. E já temos a
estrutura dividida, então podemos
simplesmente clicar nela. Esconda tudo aqui.
Esconda os pinos não conectados E eu posso simplesmente clicar
nessa animação de equipamento. E eu posso pegar e
arrastar isso até aqui. Agora você pode ver que temos uma animação personalizada para
todas as armas. Então, dependendo do que
conectamos para cada arma, ele pegará essa
animação e a reproduzirá Então, vamos compilar e
salvar tudo. Temos que mudar
isso aqui também. Então, se eu simplesmente desconectar isso, excluo esse nó da estrada E com essa estrutura,
novamente, esconda os pinos desconectados Vou mostrar a animação
do equipamento. E eu vou
adicioná-lo aqui também. Tudo bem, agora
consertamos e
reorganizamos isso para
a animação do equipamento. O que podemos fazer é simplesmente adicionar essas informações dentro
da nossa tabela de dados. Vamos abrir a tabela
de dados aqui. Vou
abrir a tabela de dados. Também vou
abrir a estrutura para que
eu possa ver quais variáveis
eu adicionei aqui. Para as variáveis,
deixe-me aumentá-las um pouco e ir para este lugar
depois da aula. Aqui adicionamos a velocidade de
disparo, também
adicionamos o flash do focinho e também adicionamos um efeito sonoro de
disparo E adicionamos a animação do
equipamento. Novamente, lembre-se de escrevê-los exatamente como o nome que
você escreveu aqui. Agora, para a animação do quip,
vamos salvar tudo. Vamos acessar o navegador aqui
e abrir os ativos. Animação. Pesquise a montagem de animação
aqui para a pistola. Vamos clicar com o botão direito do mouse e
copiar sua referência. Vá até a tabela de
dados da pistola, que é a última aqui Vamos para o lado
para ver a animação do quip. Vou apenas
colar essa referência. Vou clicar com o botão direito
para ver a referência do rifle. Vou colá-lo
tanto para o AK quanto para os quatro. A propósito, você pode fazer
a mesma coisa aqui. E vamos fazer isso com
o AK para ver a velocidade de disparo. Agora temos que testar isso
no jogo, não tenho ideia. Vamos escrever 0.1
para o próximo 10.1, para o terceiro 10.1, não
sei, temos que
tentar isso no jogo Não temos ideia no momento. Quanto ao
flash do focinho, o que você pode fazer. Acho que temos alguns flashes de
focinho dentro
desta pasta onde
importamos todas as armas
do mercado Se você apenas procurar por focinho, poderá ver esses flashes de
focinho Vou usar um deles, por exemplo. Você pode usar o. Flash no cano do fuzil de assalto. Vou clicar com o botão direito do mouse. Sua referência para
o rifle para o AK. Eu posso colar um para o M quatro. Eu posso colar o mesmo. Agora você pode ver que, para
cada arma, você pode realmente ter um focinho
para cada uma delas. Na verdade, eles podem ser únicos. Todos eles podem ter efeitos sonoros
exclusivos, animações
exclusivas, velocidades de filmagem
exclusivas e assim por diante Então você pode ver como esse método é
bom. É muito dinâmico e
é muito fácil de mudar. Se um dia você quiser
ter outro efeito sonoro, basta entrar aqui
e adicionar outra referência. Ok, para a pistola, temos o flash do cano da pistola aqui e podemos
clicar com o botão direito neste Podemos copiar a referência novamente. E podemos colá-lo aqui. Agora, para os efeitos
sonoros de filmagem , ainda não os
importamos, então vamos realmente fazer isso
enquanto estamos fazendo isso aqui. Vamos abrir a pasta de
materiais de custo. Vamos voltar ao material de
custo aqui. O que eu quero que você importe
é o tiro AK 47. Eu também quero que você
importe os 41 tiros e também o tiro de pistola Esse é um tiro de pistola. Vamos para a
pasta de áudio como efeitos. Deixe-me remover a palavra de
pesquisa e você pode clicar e
arrastá-la até aqui. E, assim como antes, você
pode clicar em todos eles. Clique com o botão direito para criar
várias dicas. Eu vou abrir
todos eles aqui em cima. Reduza o som aqui para
0,3. Acho que quero reduzi-los ainda mais
porque eles estão muito altos e não quero que eles entrem
neste curso. 0.1 para todos eles. E vamos tentar
jogar. OK. Incrível. Tudo parece bom.
Vamos fechar todos eles. Agora, antes de copiarmos
as referências, vamos renomeá-las. Vou renomear este para SC e remover o
Q aqui no final Eu também vou trocar
isso pela pistola. Vamos remover o Q e
escrever C no início. O último para o AK. Novamente, remova Q e
A.C para o início. Agora, para as referências, vamos copiar primeiro o AK 47. Vou copiar a referência. E então aqui
na tabela de dados do AK 47, que
é o primeiro, posso colá-la aqui
para o M quatro. Se pudermos encontrá-lo aqui. Aqui estão os quatro. Vamos clicar com o botão direito do mouse em copiar, referenciar e colar. E o último é
o tiro de pistola. Copie a referência e
cole-a aqui também. Agora vamos em frente e
, na verdade, é um salvamento automático, então vamos
fazer o download aqui e no CSV Agora, aqui,
vou renomeá-lo. Copiando o mesmo nome aqui para as informações da arma,
excluindo a antiga Estou renomeando a nova e
depois vou voltar às tabelas de dados do
meu esquema e agora é só pegar essa nova
tabela de dados e conectá-la Está bem? Agora, todas essas
informações estão aqui. Você pode
verificar se tudo está correto
e se está tudo bem. Podemos ir em frente e
salvar tudo isso. Agora ele deve ser reproduzido
automaticamente, porque aqui na base de jogadores. Agora, aqui na
base de jogadores da arma de equipamento, temos agora essa animação
de equipamento. E agora está sendo
reproduzido automaticamente. Como definimos na estrutura
o que é, se jogarmos agora e
vermos o que acontece se selecionarmos terrorista e
eu sair e pegá-lo, você deve ver se ele
está realmente jogando. E para a pistola também. Agora, em vez de
extrair do tipo de arma, todas as informações
que podemos tornar únicas, podemos adicionar a essa estrutura de
arma.
134. 10.05 Criando o temporizador de tiro de arma: Ok, então agora vamos abrir
a base de jogadores. E aqui dentro, vamos
até o evento em que fizemos
a arma de chute Para começar com isso,
vamos criar o servidor um clique direito e
fazer um evento personalizado. E vamos criar a arma de
tiro do servidor dentro daqui. Primeiro, vamos criar
um cronômetro, colocá-lo em réplicas no servidor
e ser confiável para Vamos criar um cronômetro como o outro
cronômetro que criamos
aqui para as etapas em que
criamos o cronômetro definido É o mesmo método que
vamos usar para fotografar. Se descermos até aqui e
arrastarmos daqui e dissermos cronômetro por evento,
prosseguirmos e selecioná-lo Então, a partir daqui, podemos arrastar
e criar um novo evento personalizado. Podemos chamá-lo de Shot Weapon Loop. Ok, a
lógica da arma de tiro estará aqui embaixo. Lembre-se de configurar o cronômetro para ficar loop e, em seguida,
temos que definir um Agora, o tempo definido aqui depende da velocidade com que sua
arma está disparando. Para AK 47, por exemplo, digamos que seja
0,1 para uma pistola Talvez seja para pistolas Se você não quiser
fazê-las disparar automaticamente, nós realmente não precisamos desse cronômetro Mas para armas automáticas, AK 47 e as informações que elas precisam estão disparando
por meio de um cronômetro. Porque ele
repetirá o código
nessa velocidade , já que essa
é a velocidade da arma. Lembre-se de que, na estrutura, se eu voltar e
abrir a estrutura, adicionamos essa variável de velocidade de
disparo. Na verdade, podemos usar
isso para nos conectar aqui. Dependendo da velocidade com que
sua arma está disparando, esse cronômetro mudará a hora Dependendo disso, precisamos uma referência à
arma, então vamos fazer isso. Vamos clicar aqui e
criar uma nova variável. E escolha a base de armas aqui, entre os tipos variáveis. Vá em frente e selecione isso.
Vamos chamar isso de uma arma. Temos que ligar para
esse aqui. Chame isso de arma de tiro de servidor. Eu posso soletrar isso assim. Arma de choque do servidor. Agora temos que
definir a arma. Agora, se você compilar, verá que terá uma era. E diz novo parâmetro. Mesmo que esteja escrito
arma aqui em cima, às vezes isso acontece e você só precisa
deletá-la e fazê-la novamente. Ou você pode clicar no arquivo
e atualizar todas as notas. E isso também
resolverá isso. Ok, precisamos de uma definição
para a arma agora. Na verdade, não
temos uma variável ou a arma porque a
única coisa que temos é a arma equipada, mas também excluímos
que, posteriormente, temos uma arma
não equipada e também
temos muitas armas Aqui em cima temos
a arma saqueada. No entanto, também estamos liderando essa
variável de arma saqueada por aqui Na verdade, não
temos nenhuma variável para a arma que
permaneça consistente. Na verdade, vamos criar um. Vamos até a arma
equipada aqui. Quando equiparmos essa arma, vou clicar com o botão direito
do mouse na mesma variável e
transformá-la em uma variável Vamos chamar isso de arma
equipada. Esta é uma arma equipada. Estamos equipando a arma. E esta é a arma
equipada. E podemos usar essa variável. Nós não excluímos isso. Isso mudará toda
vez que estiver sendo definido. Lembre-se de clicar
nessa variável e configurá-la como replicada. Na verdade, não precisamos
notificar nada replicado. Significa apenas que
estamos apenas enviando essas informações para o cliente. O cliente também sabe
o que é essa variável. Vou apenas selecionar tudo
isso aqui e afastá-lo. E movendo essa
variável para cá. Agora temos essa variável com a qual
podemos trabalhar. Ok, podemos ir até aqui agora. E podemos pegar essa arma
equipada e conectá-la aqui.
Agora temos isso. Vamos compilar agora a partir deste. Podemos arrastar e dizer que podemos obter a variável de nome
e, em seguida, podemos obter as informações da arma, obtenha-as aqui. E então vamos afastar
isso e parar. E agora podemos usar a velocidade de disparo
daqui e conectá-la aqui. Está bem? Então clique nele e
esconda todos os pinos desconectados Ok, então sempre que
pressionarmos um botão do mouse, ele vai disparar
e disparar neste cronômetro. Agora também temos que parar esse cronômetro
em algum momento Então, vamos clicar com o botão direito do mouse
nessa alça promovida a uma variável e chamá-la
de alça de arma Shot. E podemos usar essa
alça para parar o cronômetro, então temos que saber quando
estamos filmando e quando não
estamos filmando Quando soltarmos um botão do
mouse, esse
gatilho completo será
acionado e não estaremos mais
disparando a arma. Na verdade, vamos adicionar uma
bala aqui. Vamos adicionar um. E vamos chamá-la de arma baleada. E vou adicionar um B na
frente para manter a consistência,
já que é um lingote E transforme-o em um
lingote como este. OK. Agora você pode arrastar
a partir daqui e dizer galho e
conectá-lo se for verdade Se a arma disparada for verdadeira, queremos ir em frente
e atirar na arma. No entanto, se não quisermos mais
disparar a arma, vamos pegar essa alça
e dizer que é válida. Se esse identificador for válido, apenas certifique-se de que não
estamos recebendo nenhuma caixa, certificando-se de que seja válida. E vamos fazer outro galho. Se for válido, pegue este cronômetro
e diga claro
e
invalide o cronômetro pela alça Vamos parar esse
cronômetro aqui neste código. Agora podemos copiar e colar isso. E para completar, quando soltarmos um botão do
mouse, ele definirá a arma de
tiro como falsa. Quando disparamos a arma, ela precisa ser verdadeira,
quando é falsa, quando paramos de atirar, ele vai perguntar: esse cronômetro
é válido Se estiver, vá em frente
e pare o cronômetro. Eu só vou reorganizar
as coisas um pouco aqui. Agora que fizemos isso, vamos testar
e ver se tudo
está funcionando. E vamos clicar em jogar aqui para o
cliente, por exemplo, vou selecionar terroristas Vamos
pegar alguma coisa. Vamos pegar as
informações agora mesmo. Vamos tentar atirar. No momento, estou
tentando atirar com o mouse um e
nada está acontecendo. Nada está sendo impresso
na tela aqui em cima. Deixe-me cancelar,
aqui temos uma era. Esta era está dizendo acesso. Access none significa apenas que ele está tentando ler algo dessa variável
de arma, essa variável de arma aqui. No entanto, acesso não significa
que essa variável está
vazia, não tem
nada para ler. Na verdade, isso é verdade
porque
colocamos apenas a
arma equipada dentro do evento de
equipar armas E essa só é ativada
sempre que trocamos de arma. Se eu for até terroristas
e pegar alguma coisa, tenho que trocar para
outra arma e depois voltar antes que essa
variável seja definida agora, deixe-me atirar
agora e ver o que acontece e nada
está acontecendo Na verdade, isso ocorre porque estamos executando isso
várias vezes. Se eu desconectar esse falso, você pode ver aqui se eu
não paro o cronômetro, você pode ver mais claramente se eu simplesmente pegar outra
coisa novamente Agora, se eu disparar com a arma,
estou atirando agora. E se eu solto o mouse, sempre que
solto o mouse, ele está na verdade imprimindo.
Isso é o que nós queremos. Queremos que seja impresso sempre que
pressionamos o mouse, não quando o soltamos. Isso ocorre porque o cronômetro aqui está sendo executado muito
rapidamente no código Sempre que estou segurando meu
mouse com um botão , ele nunca tem a chance de
realmente reproduzir esse código. Essa parte aqui, na verdade,
precisamos fazer apenas uma vez. Deixe-me apenas reconectar
isso aqui do verdadeiro. Eu vou fazer um nodo único. Sempre que
eu pressiono um botão do mouse, ele faz esse código uma vez e, em seguida, podemos redefinir
esse código sempre que quisermos. Eu só vou afastar
tudo isso. E neste eu vou
fazer um novo evento personalizado. E vamos ligar para esse
e atirar novamente. Quando podemos filmar de novo?
Podemos atirar novamente. Sempre que pararmos de
filmar aqui, vou ligar
assim, podemos atirar novamente. E desse jeito, essa é a única
coisa que tivemos que fazer. Agora vamos tentar novamente. Vamos compilar e
testar. Deixe-me selecionar terroristas. Deixe-me pegar as armas. Agora vamos
corrigir esse problema. Novamente, isso é um problema com
as armas saqueadas aqui em cima. Então, na verdade, vou
fazer uma solução difícil daqui a pouco. Eu só quero ver se isso
aqui embaixo funciona e podemos
ir em frente e consertar isso. Então, se eu pegar a arma e
segurar um botão do mouse, agora
você pode
vê-la impressa na tela corretamente. E se eu soltar o mouse
, ele para de imprimir. E vamos realmente fazer isso
também com o rifle. Então, se eu, como um terrorista,
pegar o rifle, pegar a pistola e alternar para frente e para trás para
definir a variável, agora eu posso segurar o mouse com um botão
e ele está atirando, e se eu soltar, ele
não está mais atirando Ok, então esse código aqui embaixo
está realmente funcionando totalmente. Agora terminamos
com este, e eu também vou
excluir essa string de impressão. Vamos até aqui e consertar isso. Antes de terminarmos,
deixe-me removê-lo daqui. Vamos fazer uma solução
muito boa para este. Nunca mais se encaixa aqui embaixo
nas armas sobrepostas, é
isso que você está
tentando conseguir Vamos pegar
essa e dizer: isso
é igual à variável da arma
saqueada Estamos tentando verificar se o que estamos
saqueando atualmente está configurado com
a mesma variável que dissemos anteriormente Se for verdade, queremos excluir
a variável antiga. Deixe-me mover isso para cá. Queremos excluir a
antiga variável saqueada. Depois disso, queremos
executar a nova variável. Com isso bloqueado, estamos basicamente
verificando se o que estamos saqueando agora é o
mesmo que dissemos anteriormente Se for, excluiremos essa variável antes de
definir a nova. Isso, certifique-se de que não
definamos o mesmo duas vezes. Se não for a mesma coisa, se não for o mesmo
item, estamos saqueando Vá em frente e execute o
código sem excluí-lo. Ok, vou
organizar isso mais tarde, mas vamos ver se funciona. Antes de experimentar, vamos conectar isso
novamente. Aqui estamos. Removendo o item
do inventário. Vou clicar
e arrastá-lo de volta para aqui. Vá em frente e compile
agora, vamos tentar clicar
em Jogar e selecionar Terrorist
e ver se funciona Se eu entrar aqui, você pode ver que realmente funciona. Ok, é assim eu acho que é realmente um método
melhor para fazer isso. Como você vê, não está
mais funcionando. A próxima coisa é que,
na verdade, estou percebendo que
os ícones estão errados. Vamos apenas depurar isso. Vamos voltar ao widgit principal, vamos abri-lo e
vamos ao gráfico Só estou vendo o que está
aqui em cima, por que está fazendo isso. Para o rifle, temos o rifle de
imagem, rifle de imagem. Isso está correto aqui. Para a arma equipada. Para a pistola, estamos mostrando a pistola
e escondendo o E para o rifle, estamos mostrando o rifle e escondendo
a pistola, a opacidade Isso parece correto. Há algo errado definir o tipo de
arma equipada. Vamos voltar para o jogador. Deve haver algo errado com a arma
equipada. Para a
arma equipada. Vamos ver aqui, essa é a interface do usuário do inventário de atualização. Estamos configurando o tipo de arma
para o tipo de arma para equipar
o tipo de arma a ser equipada Nós o definimos aqui quando
pressionamos o botão. Quando pressionamos Primário, estamos configurando para rifle, o que está correto.
Esse é o nosso rifle secundário, estamos
configurando para uma pistola Isso também está correto. Na verdade, nada está errado aqui. Então, algo deve estar errado quando aludimos
à arma, quando aludimos à arma aqui, arma
de saque, estamos configurando isso também,
estamos definindo o
tipo de arma também o Ao que acabamos de aludir, que também está correto Na verdade, não há um
erro em nenhum lugar aqui. Eu suspeito que talvez haja um
erro na tabela de dados. Se você abrir a tabela de dados, vamos dar uma olhada, o tipo de tabela de
dados aqui. Então, temos que procurar
o tipo de arma. Se escrevemos
algo errado,
rifle, rifle e Na verdade, eles estão todos corretos. Eles estão configurados para o correto. OK. Na verdade, nada está errado. Não consigo ver nenhum erro. Talvez agora o problema seja que estejamos configurando o tipo de arma
equipada corretamente. No entanto, também estamos
executando esse código. E essa parte do código ainda não percebe que foi
definida com esse valor. Se fizermos um atraso e dermos a
chance de definir isso,
basta dar uma olhada
e ver se isso funciona, porque eu realmente não
gosto de atrasos aqui. Mas vamos dar
uma olhada e ver se isso realmente
resolve o problema. Se eu saquear as armas,
clico em uma. Se eu clicar em dois, agora isso também
funciona. Então você pode ver que realmente funciona.
Agora, se eu clicar em 1.2, os ícones estão funcionando. O problema aqui é
que isso está sendo configurado
corretamente, o tipo de arma. No entanto, você também está executando
esse código muito rapidamente. Então você está executando
esse código antes que ele tenha
a chance de realmente mudar. Ok, para corrigir esse problema, podemos tentar adicionar um atraso. No entanto, neste código, vamos realmente fazer isso
dentro do nosso WB main Dentro da função aqui
que criamos anteriormente. Aqui é quando definimos a
opacidade do rifle. Antes de definirmos a opacidade, você pode tentar adicionar um atraso e o atraso. Comece
tornando-o muito pequeno, 0,01 e compile. E
vamos clicar em play. E se isso funcionar, então
é realmente muito bom. Agora eu posso pegar tudo e ver que a pistola está pegada. E eu vou apenas
maximizar meu ponto de vista. A pistola agora está levantada. Eu posso clicar em 14. Clique em dois para pegar a pistola, você vê que às vezes ganhamos um dólar Eu mudo para o meu rifle, vamos configurá-lo para 0,03
Em vez disso, compilar Clique em jogar. Vamos tentar novamente. Vamos pegar tudo.
Clique em rifle, pistola Fuzil, pistola. Agora tudo
parece estar funcionando bem. Ok, então isso funciona. Portanto, 0,03 corrige o
problema normalmente. E isso seria uma solução muito, muito boa e fácil. Ok, então eu sei que tem sido
muito confuso aqui, mas nós realmente tivemos que fazer isso porque isso estava funcionando
o tempo todo Então, se a arma equipada
alguma vez aparecer aqui, ela não está realmente
funcionando no momento. Então, eu vou deixar pra lá. No entanto, se alguma vez
falhar, como aqui em cima, você pode usar o mesmo método
verificando se a arma está
equipada aqui Você sempre pode
verificar se é
igual ao anterior que definimos. Em seguida, você pode remover a variável e
definir a nova. Então, em vez de fazer isso
no método antigo, no entanto, acho que isso não vai funcionar porque aqui
estamos verificando se já estamos
usando um rifle, mas no futuro
podemos pegar um bug Eu não tenho ideia agora. Temos que nos desenvolver e ver. Mas é assim que acontece
no desenvolvimento de jogos. Você tem bugs durante a programação e
precisa corrigi-los. O bom para
um programador é saber
como
resolver esses problemas E aqui você vê que
acabamos de adicionar um agressor e verificar se
era o mesmo ou não, e resolvemos esse
problema dessa maneira Você sempre verá
quando desenvolve jogos, mesmo em grandes estúdios. Mas você só precisa saber como corrigi-los e como
superar o problema. Vamos agora experimentá-lo. Vamos clicar em play
antes de
terminarmos isso para ver se
tudo está funcionando. E se eu selecionar o terrorista, eu pego tudo aqui e
posso alternar entre eles. Se eu deixar cair os quatro, estou apenas tentando
soltar agora, o soltar, você pode ver
que também está desaparecendo Portanto, temos que adicionar
um pequeno atraso aqui porque ele não está percebendo
que excluímos isso Se eu dissesse o atraso para
0,05 e eu clicasse em jogar. E clique em jogar aqui. E vamos pegar uma arma. Vamos deixar isso de lado. Vamos pegar, soltar, soltar, soltar. Veja, agora está funcionando perfeitamente e eu posso
alternar entre eles. Só estou tentando testar o jogo para ver se ele falha. Agora parece funcionar bem. Tivemos que ter esse
pequeno atraso imperceptível porque, caso contrário, o programa não
sabia o que
estávamos fazendo aqui É bom saber
ter isso aqui também. Isso corrige todos
os problemas que tivemos com a
exclusão dessa variável sem que
quiséssemos que ela fosse excluída
antes de executar o código. Então, tudo está funcionando agora. Eu vou reorganizar isso. Vou
colocá-lo aqui dentro e vamos
para o próximo.
135. Traço de linha 10.06 por canal: Nesta lição,
vamos criar uma função linha por canal. Dessa forma, vamos
disparar a bala
da arma Vamos
clicar no player e abrir a
base de jogadores aqui. Vamos ver o
código que escrevemos antes. Na arma, aqui é onde queremos adicionar o traçado
de linha por canal. Mas antes disso,
ganhamos um pequeno dinheiro com a arma equipada, quando
sempre que eu saqueio uma arma,
se eu clicar em terrorista, eu perco alguma coisa. Se
eu atirar agora, não me dá um dólar
porque eu troco a arma No entanto, se eu não
trocar a arma, então se eu
pegar essa diretamente e
começar a atirar, vou me dar um erro aqui, porque só estamos configurando
a arma equipada sempre que, na verdade, estamos trocando
com as teclas do teclado. Vamos copiar essa arma equipada. E vamos subir onde quer que carreguemos a arma aqui
na arma saqueada E vamos configurar
a arma equipada sempre que lermos
esse código aqui, sempre que estivermos desarmados, vamos colocar a arma
equipada aqui Depois desse atraso aqui. Vamos continuar e colar. E vamos conectá-lo. E eu também vou afastar tudo isso para
que eu possa ver aqui. E eu vou
conectá-lo aqui. E então arraste da arma
saqueada para esta. Novamente, você
pode ler notas aqui, fazer algumas e
organizá-las. Então, isso deve estar
funcionando bem agora. Agora também estamos configurando a arma equipada sempre que
estivermos saqueando aqui Ok. Então, eu vou afastar isso também. Aumente o tamanho do
comentário, algo assim. Ok, então isso agora está corrigido. A próxima coisa que eu quero
fazer é aqui com as armas. Então, vamos até as armas
e abrir a base de armas. Vamos agora esconder essas esferas. Nós realmente não
precisamos mais deles. Vou clicar na
esfera de colisão e selecioná-la novamente.
Aqui, escondido no jogo. E eu vou fazer isso
na base de armas. Então, isso acontece com todos eles. Se eu salvar agora, tento jogar o jogo apenas para verificar
se isso foi corrigido. E você pode ver aqui
que está corrigido agora. Está bem? Então, nós realmente não precisamos mais
dessas esferas, ok? Então, vamos seguir em frente e fazer
o traçado da linha por canal. Então, vamos ver o código
que escrevemos antes aqui. Vamos começar a fazer isso a partir daqui. Sempre que repetirmos o código, vamos arrastar a partir daqui e
escrever o traçado de linha por canal. Vamos selecionar essa função. Agora, parece complexo, mas na verdade é muito,
muito fácil entender o traçado de linha por canal. Ele precisa de um local inicial e
de um local final. O local inicial é
onde você estiver agora, e o local final é
onde eu estou mirando agora Com micros, é isso
que temos que dizer. A forma como obtemos essas
informações é se você escrever clique e primeiro precisamos
acessar o controlador do player. Agora tente fazer isso sozinho. Se você se lembrar de como acessar o controlador do player,
podemos fazer isso juntos. Agora você pode escrever
get controller, você pode obter o
controlador desta reprodução exatamente como antes, temos essa referência do
controle get player a partir da face. Agora você pode
arrastar a partir disso Se você apenas escrever câmera, queremos obter algo
chamado gerenciador de câmeras. Se você simplesmente
percorrer tudo isso, tente ler o que temos. Este, pegue o gerenciador de
câmera do player. Com este,
somos capazes de chegar exatamente onde
pretendemos com nossa venda cruzada Obtendo este gerenciador de câmeras, vamos
arrastar a partir disso e dizer obter a localização da câmera. Esta é a nossa posição inicial. A posição inicial agora
é onde quer que eu esteja agora, aqui,
aqui, como o jogador no meio da minha tela. Agora temos que dizer
que a localização final é onde eu esteja mirando
com microsa A maneira de fazer isso primeiro
é arrastar a partir disso e dizer chegar
ao vetor de avanço. Então, estamos obtendo a direção
direta desse gerenciador de câmeras. Então, estamos pegando isso
e multiplicando. A razão pela qual
estamos multiplicando, vamos primeiro aqui
e vamos mudar esse Não precisamos que seja um vetor. Vamos transformá-lo em um flutuador. Vamos multiplicá-lo por
algo muito grande. Por exemplo, 20.000
algo assim. A razão pela qual fazemos isso é estamos obtendo o vetor
para frente, ou
seja, a direção para frente
desta câmera. E então estamos
multiplicando isso por muito porque queremos que ele
alcance a distância
ali na parede Estamos multiplicando isso. Então temos que dizer mais. Aqui estamos adicionando
o local inicial. Estamos adicionando o local inicial junto com essa linha
para o local final. Dessa forma, obtemos
a localização final. Você pode imaginar aqui
que estou como jogador e estamos obtendo
o local de partida. É aqui que
estou agora. E estamos basicamente criando uma linha e a
adicionando com o início. E isso fará com que esteja lá no final, onde estou
buscando agora Agora, é muito confuso
entender como iniciante ou na primeira vez
que você faz isso Mas tente pensar em
como isso faz sentido. Agora, quando somarmos isso, vamos adicioná-lo aqui até o final. E isso deve
bastar. Portanto, lembre-se também de conectar
esse pino de execução. E vá em frente e
faça anotações de redirecionamento. Ok, agora isso deve
funcionar aqui. Agora temos algo
chamado hits, e você pode ver que é um alfinete azul. E se você já percebeu, já
usamos
pinos azuis antes porque informações de
nossa arma também são, na verdade,
um alfinete azul Um pino azul significa que esta é uma estrutura com
estruturas como antes, podemos arrastar e dizer quebrar, podemos quebrar estruturas, você tem todas essas
informações que pode usar. Você pode pegar esse
traçado de linha por canal. Assim, você pode pegar a linha
que criou aqui e obter o local em
que realmente atingiu essa linha. Você pode obter o ator que atingiu com esse
traçado de linha por canal. Você pode saber o
tempo, a distância, e muitas coisas aqui, nós realmente não precisamos de
muita coisa agora. A única coisa antes de
fazermos isso é que queremos nos arrastar desse lingote
e fazer um galho Porque não
queremos continuar nosso código se isso não for válido. Sempre que
realmente
encontramos algo, queremos continuar com
o código. É sempre bom ter isso caso contrário,
às vezes você terá uma era. A próxima coisa que temos
é esse bloqueio. Sempre que realmente atingimos
algo com essa linha, queremos continuar
o código também, criar uma ramificação aqui também. Além disso, queremos ter
certeza de que
o jogador que estamos atingindo
causará algum dano Porque não queremos
bater em nenhum ator aleatório com uma atuação de sucesso, como antes.
Já fizemos isso antes. Digamos que o ator tenha uma etiqueta, então
você pode escrever o player. Lembre-se de que adicionamos
o tag player. Se você não se lembra,
pode clicar em, acredito que seja o padrão da
classe E se você pesquisar por tag, lembre-se de que adicionamos o reprodutor de
tags ao ator. O ator tem tag player. Temos isso para todos
os jogadores porque o
adicionamos à base de jogadores. Agora podemos arrastar
a partir disso e dizer puxe se estivermos
batendo em alguma coisa Então, temos um golpe bloqueador, o ator que atingimos é um jogador. Então, queremos seguir em frente e aplicar alguns danos.
Ok, com esse. Primeiro, podemos simplesmente escrever
uma string de impressão para ver se ela está realmente
funcionando aqui. Para a depuração, você pode realmente alterar
isso para persistente, porque então você pode ver
a linha que está fotografando E você pode ver
se ele está realmente fazendo algo errado
ou correto. Também para os atores ignorarem. Você não quer se
matar aqui. Ignorar a si mesmo já está ativado, mas às vezes, quando me
desenvolvo em meu próprio tempo, gosto de me afastar
disso e dizer faça. Agora você pode criar uma matriz e depois arrastar
a partir daqui e dizer self. Agora, na verdade,
ignorará esse jogador aqui, os atores ignorarão a si mesmos. E já está
fazendo isso aqui. Talvez isso seja desnecessário, mas eu só gosto de tê-lo aqui. Segurança. Se você quiser
bloquear outros atores. Então você não ignora
outros atores. Então você não pode atingi-los.
Você sempre pode clicar no sinal de adição e adicionar
outro ator aqui. Mas, por enquanto, deixe-me clicar com
o botão direito aqui e remover esse elemento da matriz. Ok, isso foi tudo para o
rastreamento de linha. E vamos compilar E deixe-me clicar em
jogar e ver o que acontece se eu jogar como servidor
e selecionar terroristas E eu seleciono, por exemplo, uma arma aqui e atiro. E nada está
acontecendo agora. Deixe-me sair daqui e ver por que
isso não está funcionando. Na verdade, está jogando,
mas está jogando. Um pouco atrasado. Se eu tentar novamente e segurar o mouse,
ele está realmente jogando. Você pode ver que agora está
criando as linhas. Onde quer que eu fotografe, na verdade, está atirando a essa
distância ali. Qualquer coisa que eu esteja mirando, mas é uma
resposta tardia E a razão pela qual isso acontece é que precisamos de uma foto inicial aqui. Porque sempre que
estivermos filmando, lembre-se da hora que você
definiu aqui para um cronômetro; na
verdade, levará
esse tempo até que seja reproduzida Por exemplo, se, digamos que
eu escrevi três aqui para meu cronômetro, compilo
e clico em reproduzir, faltam 3 segundos para que ele realmente seja
gravado Agora estou segurando meu
mouse e você pode ver depois de 3 segundos ele vai tirar
a foto aqui, a hora que você
definiu aqui. Na verdade, vai esperar esse tempo antes de começar
a circular. Para corrigir isso, precisamos de um evento inicial, como o de filmagem,
que executará esse código uma vez antes de
executarmos o código aqui. E é assim que
resolvemos esse problema. Vamos fazer algo chamado tiro
inicial de arma. Deixe-me apenas arrastar isso
e criar um evento personalizado. Provavelmente preciso afastar tudo
isso para que tenhamos espaço para trabalhar
com esse evento aqui. Vou chamar
isso de tiros iniciais de arma. Este está sendo executado apenas uma vez para garantir
que esteja sendo executado antes que esse cronômetro por evento seja executado aqui após o Isso só vai
ser executado uma vez. Então, podemos dizer tiro de arma
inicial. Então, ele vai
filmar apenas uma vez antes de realmente
começarmos a filmar. Portanto, não temos nenhum
atraso no tiroteio. Vamos clicar em jogar agora. E se eu
pegar alguma coisa e atirar, você pode ver que ela dispara. Ele dispara imediatamente. Não precisamos esperar
por nada agora. Está funcionando. E
vamos encerrar isso. Acredito que recebemos um
erro agora. Se eu não tenho nada
e tento atirar, você pode ver que consigo fotografar alguma coisa e
também recebo um erro. Se eu clicar nele, ele diz que
há uma seta com esta. Para isso, podemos
fazer algo aqui. Sempre que disparamos a arma, podemos ter certeza de que
realmente temos uma arma. Da maneira como fazemos isso, podemos clicar com
o botão direito do mouse
aqui e
converter isso em um get validado e seguir em frente e fazer
algo assim Também podemos fazer outra coisa. Vamos manter isso e pegar
esse tipo de arma equipada e, a partir daí dizer que se isso não for
igual ao estado desarmado, podemos atirar
porque realmente não faz sentido atirar sempre que estamos desarmados porque
não temos uma Vamos conectar isso. Mais tarde, provavelmente o faremos
se não tivermos MO. Quando adicionamos MO, se não
temos MO, também não
queremos filmar. Vamos adicionar isso mais tarde sempre que adicionarmos o
MO ao jogo. Tudo bem, agora
estamos disparando a arma. No entanto, não estamos
atingindo o jogador. Se você ver aqui, se
eu clicar em jogar, eu pego o terrorista aqui, pego meu outro cliente e seleciono terroristas, como
pegue uma arma aqui, deixe-me
tomá-la como servidor Se eu atirar como
servidor no jogador, ele está atingindo o jogador No entanto, nada está acontecendo. Você pode ver o que quer que
eu bata em alguma coisa, a linha atrás
dela fica verde. E isso significa que ele sabe
que atinge alguma coisa. No entanto, dissemos que só
queremos reagir sempre que for
o jogador que estamos atacando Sempre que não é
o jogador, ele realmente
não fará nada, mas sabe que
acerta alguma coisa. No entanto, para o jogador,
não está realmente atingindo nada Vamos ajustar
as configurações de colisão para o
jogador na próxima lição
136. 10.07 Ajustando as configurações de colisão do jogador: Tudo bem, bem-vindo de volta.
Vamos ajustar as configurações do player
aqui. Configurações de colisão. Então, deixe-me clicar no Mesh. E deixe-me ir até
as configurações de colisão. Sempre que estamos
atingindo algo, precisamos gerar um evento de sucesso Vou ativar o evento de acerto
gerado porque também
precisamos gerar um evento de acerto quando causamos
danos, saúde
e coisas assim causamos
danos, saúde
e coisas assim. E para a colisão aqui, se você der uma
olhada no traçado da linha, estamos usando o canal de
visibilidade Agora, para traços de linha, você pode mudar isso. Se você acessar as
configurações do projeto agora, não
vamos alterá-las porque realmente não temos
problemas com isso. Mas, no futuro, se tivermos um problema e
precisarmos mudá-lo, vamos mudá-lo. Mas, por enquanto, vamos manter
a visibilidade. Mas vou mostrar onde
você pode
alterá-lo , por precaução, nas configurações
do projeto. Se você encontrar uma colisão, se eu apenas
percorrer e tivermos
algo chamado colisão, temos algo
chamado canais de rastreamento Isso é um traçado de linha. Na verdade, você pode adicionar um
novo canal ao traçado de linha e, em seguida, selecionar o
canal que você criou. Na verdade, você também pode usar um
canal personalizado para isso,
mas, por enquanto, vamos usar
o canal de visibilidade. E se você clicar na malha aqui para ver as predefinições de colisão, vou
alterá-la para personalizada Então vamos,
para a visibilidade, dizer bloquear porque estamos usando o canal de
visibilidade. Agora vamos continuar assim. Se tivermos um problema mais
tarde, podemos alterá-lo. Vamos compilar tudo. No momento, estamos
usando uma colisão precisa porque não
estamos usando esse cápsula do componente de
colisão, na verdade
estamos usando essa
malha para criar os eventos de impacto Vamos agora clicar
em jogar e ver se ele diz olá quando
eu atiro no jogador. Se eu pegar essa arma
aqui como a outra, vou selecionar terroristas Eu vou
pegar esse. Agora esse é o cliente. Eu vou atirar
no jogador. No momento, nada está acontecendo. Deixe-me tentar fazer isso
no servidor. Se eu clicar no servidor, você pode ver que diz olá. No entanto, no momento, o
cliente não está dizendo
nada para corrigir isso. Como se trata de um modo multijogador, o cliente realmente não sabe qual é o local inicial
e o local final. Como você pode ver aqui,
o servidor sabe o que é. No entanto, para o
cliente aqui, se eu tentar jogar novamente e mostrar a você
antes de consertarmos, se eu pegar alguma coisa e para o cliente terrorista
como cliente, se eu apenas, digamos que eu
atire aqui nesta parede. A corrida de linha é automática. Na verdade, não vai aparecer no cliente porque lembre-se de que a corrida de linha que você
está fazendo é jogar no servidor. A linha persistente aqui, a linha de depuração nunca será
exibida no cliente O que é normal porque você está executando isso
no servidor. Quando damos uma
olhada no servidor também aqui, você pode ver que eu
atirei nesta parede. No entanto, para o cliente, parece que
você atirou lá. , isso realmente não
faz nenhum sentido No entanto, isso realmente não
faz nenhum sentido no servidor. E eu atiro aqui,
eu deveria corretamente. Você pode ver aqui, eu clico aqui. No entanto, para o cliente,
nem está lá.
A maneira de corrigir isso. Agora, isso é multijogador, então ele realmente não sabe disso. Na verdade, temos que arrastar
isso ainda mais para o evento. Vamos começar assim. Vamos chegar ao
fim aqui também. Precisamos mover esse código. Vou desconectar
esse código aqui. E vamos afastar isso. Temos que voltar
ao início aqui. A razão pela qual
fazemos isso é quando também
executamos esse código
no cliente. Porque na verdade não estamos
definindo nada. Isso é bom. Se não estivermos configurando nada
, não há problema em jogar
no cliente. Estamos executando isso no
cliente que também sabe qual o local inicial e final e
é assim que
você corrige esse código. Vamos
conectá-los aqui. Agora, deixe-me afastar isso. Deixe-me organizar isso. Deixe-me
aproximar tudo isso desta. Agora é só esse código aqui. Deixe-me criar alguns
nós de redirecionamento para esses vetores. Está bem? Algo parecido com isso. Agora que isso está
resolvendo, deixe-me ir embora, deixe-me pegar esse
código e movê-lo para baixo. Temos algum espaço lá em cima. Agora, para esse código, depois que isso for válido, descobrimos que essa arma
equipada é válida. Em seguida, podemos inserir esse código. Vamos continuar e conectá-lo. E vamos deixar isso de lado novamente. Vamos conectar o início a isso
e o fim a este. Você também pode simplesmente mover isso para baixo para ver
o que está acontecendo. E você pode ir em frente e
conectar isso se quiser. Você pode simplesmente pegar tudo isso. Você pode clicar com o botão direito
do mouse e reduzi-la a uma função. E você pode chamar essa função ou simplesmente
torná-la mais descritiva Obtenha localizações de
rastreamento de marcadores ,
algo assim Como você está recebendo informações e não está configurando nada, você pode clicar em Pure porque você realmente não
precisa passar por isso. E você pode clicar duas vezes nele. Vá em frente e organize
essa função também. Certifique-se de que tudo
esteja logado. E deveria ser bom
fazer algo assim. Você já fez isso. Agora vamos voltar
ao gráfico e deixar
tudo um pouco mais perto. Você pode ver que é muito mais limpo simplesmente
transformá-lo em uma função. E vamos renomear a
localização inicial desses
dois marcadores e essa localização
final Agora que fizemos isso, podemos compilar para este Nós realmente não precisamos
fazer nada porque estamos parando esse tiroteio.
Nós realmente não precisamos disso. Essa é a
coisa mais importante aqui. Ok, nós temos isso conectado, e acho que isso vai funcionar Agora, deixe-me
mudar isso para cá. E vamos clicar em Play. Vamos experimentá-lo. Agora vamos
experimentá-lo como cliente. E deixe-me pegar uma coisa. Deixe-me experimentá-lo também como servidor. Pegando o, como servidor. Agora eu posso atirar nesse jogador. E diz olá,
assim como o cliente. Deveria dizer olá se
eu atirar no jogador e se eu atirar no jogador,
na verdade está dizendo olá. Você também pode ver no servidor que
a linha está realmente
desenhada corretamente. Na verdade, também me irritou. Digamos que no servidor, eu também esteja filmando aqui como
cliente. Estou filmando aqui. Você vê que, na verdade, está
atirando com precisão. Agora isso está corrigido. Agora ele sabe onde eu estou
realmente filmando. Agora, se eu bater no player,
você pode ver que diz olá. Como você pode ver como é
preciso, se eu bater no player aqui, não diz nada porque eu
não estou atingindo a malha do jogador Se eu bater no jogador, por exemplo,
deixe-me atirar no jogador. Você pode ver que diz olá. Deixe-me atirar no
jogador. Por exemplo, aqui diz olá. Se eu atirar no jogador
aqui, ele diz olá. Eu atiro no jogador aqui em cima. Não diz nada. Também é muito bom. Este está atingindo o
jogador aqui porque a malha em si não
é muito boa Ela se curva, mas você
pode ver, por exemplo, se eu jogo como
contraterrorista, é assim
que as
malhas estão agora Se eu apenas jogar como contra-terrorista
e maximizar isso, ele deveria dizer olá
como servidor. Se eu filmar aqui,
você pode ver olá. O rastreamento da linha não está sendo exibido porque
estamos no cliente. Lembre-se, se eu simplesmente
fotografar aqui, por exemplo, você pode
ver dizendo olá. Se eu atirar
aqui, ele diz olá. Você pode ver que essa
é mais precisa, essa malha aqui, em
comparação com a outra. É também como você faz a malha e quão precisa
ela é, e assim por diante. Então você pode ver a diferença. Eu posso filmar aqui e diz olá, porque
eu estou atirando nele. No entanto, se eu atirar aqui,
ele não está dizendo olá. Também é muito preciso com
essa colisão.
137. 10.08 Criando os soquetes de flash do focinho: Antes de adicionarmos
o efeito visual e os efeitos sonoros
para a filmagem, precisamos adicionar um soquete para o efeito visual do focinho.
Vamos fazer isso. Vamos até a
arma que estamos usando. Preciso encontrar o
esqueleto para a arma. A maneira mais fácil de encontrá-lo, em vez de apenas consultar
as pastas do mercado. Você pode abrir as armas, abrir o K para o AK. Clique na arma e
clique neste pequeno ícone. Isso o
levará automaticamente no
navegador de conteúdo até essa arma. Agora vá em frente e abra o
esqueleto da arma. E dentro daqui,
assim como antes, precisamos adicionar um soquete Já vi que
há um soquete aqui. Deixe-me realmente renomeá-lo. Vou renomeá-lo
e chamá-lo como prefixo. E focinho, podemos
chamá-lo de focinho. Isso é bom. Ou podemos chamá-lo, basta chamá-lo de focinho E vamos para
os outros e fazer isso também. Deixe-me ir até a arma
novamente, abra as quatro, abra a pistola, clique
no clique na arma, clique neste pequeno ícone,
ele o levará até lá E então abra o esqueleto. E para o esqueleto aqui, para o flash do focinho, agora
podemos clicar com o botão direito do mouse e dizer adicione meia para este
novamente, chame-o Basta chamar da
mesma forma em todos eles. Focinho para este também. Não tenho certeza se
precisamos girá-lo. Este, você pode ver, X é o eixo
dianteiro deste. Acho que precisa
ser girado dessa maneira. Vamos tentar fazer isso. Deixe-me clicar nele novamente. E eu vou tirar uma foto
aqui para a rotação. E eu vou
girar 90 graus. Dessa forma, o X está realmente
apontando para frente. Ok, vamos guardar isso e
vamos até a pistola. Agora vamos abrir o editor de plantas
completo. Vá até a arma e clique neste
pequeno ícone da pistola. Agora, para a pistola, abra
o esqueleto aqui para ver
o flash do cano Na verdade, tem
um aqui também. Sem ejetar, tem o flash
do focinho. Este pacote aqui está mais
avançado do que antes, mas para este,
deixe-me renomeá-lo novamente. Deixe-me chamá-lo de focinho. Agora temos um soquete
para todos eles e vamos
usá-lo dentro do nosso personagem para anexar efeitos
visuais à arma
138. 10.09 Fotografando VFX e SFX: Tudo bem, vamos
voltar para o jogador e abrir a
base de jogadores mais uma vez. E agora estamos prontos para adicionar os efeitos visuais e os efeitos
sonoros aqui. Dentro daqui,
o que precisamos fazer executar
um multicast Novamente, como precisamos mostrar os efeitos visuais para todos bem
como os efeitos sonoros, precisamos executar
um multicast Primeiro, vamos
criar o multicast. Vamos clicar com o botão direito do mouse e
dizer Evento personalizado. Para esse evento personalizado, vamos
chamá-lo de arma multicast. Agora, para este,
vamos colocá-lo. Não é executado no servidor, mas é
multicast e confiável. Para isso, a
coisa mais simples que queremos fazer é gerar o emissor no local Ou, na verdade, vamos
conectar o emissor
de spawn porque vamos conectá-lo
ao Vá em frente e veja o emissor
conectado e então
temos que selecionar de qual emissor
estamos falando? Aquele. Se formos até a estrutura e abrirmos a estrutura da
arma, teremos esse sistema de partículas
intermitentes que adicionamos anteriormente
à nossa tabela de dados Podemos ir em frente e simplesmente conectar isso. Nós
vamos usar isso. Vou renomear isso
para Shooting Visual
Effects ou apenas VFX Vou chamá-lo apenas de VFX. E o conector ao componente, na verdade, vou simplesmente
conectá-lo aqui também. Vou mover
este até o topo. E precisamos
anexá-lo à arma. Vou chamá-la de arma agora, este é o osso ao qual
precisamos prendê-la. O osso que chamamos de focinho. Basta escrever o
nome aqui, Muzzle. O nome do
soquete que você criou. Em seguida, a localização
desse efeito que precisamos
reproduzir agora para esse emissor Se usássemos o
emissor de spawn no local
, na verdade precisaríamos
do local para No entanto, esse é apenas o
local dentro do soquete e deve ser apenas 000 Isso é bom. Agora também
precisamos reproduzir um efeito sonoro, arraste a partir daqui e diga
reproduzir som no local. Agora, para esse efeito sonoro, lembre-se também na estrutura que fizemos esse efeito
sonoro de filmagem. Só precisamos conectá-lo aqui e adicionaremos mais tarde. Vamos chamar isso
de efeito sonoro, a localização do
efeito sonoro, daquele que precisamos. Vamos arrastar isso até aqui. Podemos apenas dizer a
localização. Isso é bom. Vamos compilar e
salvar tudo. Vamos tentar jogar isso aqui. Antes de fazermos a corrida de linha, vamos tentar reproduzir o efeito. Se eu arrastar isso para longe, chamo essa arma multicast de
chute aqui Arma Mc Chute. Isso precisa ser
conectado a ele, assim como a este. Então, esses dois eventos. Agora precisamos inserir
todas essas informações. A arma que estamos usando
é essa arma aqui. Se eu arrastar a partir disso
e realmente precisar
obter a variável da arma, se eu apenas pesquisar a variável da
arma e obter aquela malha estática
ou malha esquelética em vez da que estamos usando aqui, podemos clicar e
arrastá-la até aqui E agora isso está conectado. Agora, o efeito visual
depende do que temos dentro
dessa estrutura. Você pode simplesmente usá-lo aqui,
já chamamos de estrutura. Você pode clicar nele e clicar no pino do flash
do focinho E você pode conectá-lo
e também clicar no pino para obter o efeito sonoro da
gravação. E você também pode conectar
isso. Agora, para a localização, precisamos apenas obter a localização do soquete para
o flash do focinho, que é onde queremos
reproduzir o efeito sonoro Você também pode simplesmente obter a localização do personagem
ou representar uma localização. Ninguém notará que
você pode simplesmente dizer obter localização do
ator e
simplesmente usá-la. E será exibido onde quer que
seu ator ou personagem esteja e ninguém realmente
perceberá que não está
vindo da arma. No entanto, se você quiser que ele
venha exatamente da arma, basta pegar isso e
dizer obter a localização do soquete Você pode fazer isso
e escrever o cano do soquete e
pegá-lo e conectá-lo aqui Isso também é mais
preciso para este. Tudo bem, então eu criei os nós do
Smyroute, então isso está um pouco
mais organizado Se eu compilar e salvar tudo, isso
deve fazer com que funcione Agora, neste início e fim, também
podemos mudar o nome dele. Então, em vez de fazer isso
da lição anterior, localização do
marcador, vou chamá-lo apenas de localização inicial do
marcador E marque a localização, parece que está melhor e podemos
entendê-la com mais facilidade Vamos agora clicar
em play e ver se isso vai funcionar. Lembre-se de que, se você ainda não definiu as informações da tabela de dados, fizemos isso nas lições
anteriores. Se você não o configurou
, você deve
colocar o focinho aqui
dentro, fora da tabela de dados Ele sabe qual
efeito sonoro tocar e também qual F tocar. Ok, vamos salvar tudo
e vamos fechá-lo. E vamos clicar
em jogar aqui como servidor, vou selecionar Terrorist. Selecione a arma. Agora você
pode ir em frente e atirar. Você deve ouvir
o efeito sonoro. Você também pode ver que o
flash do focinho também está tocando. OK. Incrível como cliente. Vamos tentar isso também. Deixe-me ir em frente
e pegar alguma coisa. Vamos pegar o K. Se
eu for em frente e atirar, isso também está funcionando Ambos estão trabalhando. Tanto
o cliente quanto o servidor. Se eu for na
frente dele, você joga. Eu posso ver o focinho
piscar em ambos. Se eu fizer isso como cliente, só para ter certeza de
que está funcionando bem, eu vou até a frente
e filmo,
e isso também está funcionando. Ok, incrível. Então
, isso funciona, e agora terminamos
com o código. Então, se você voltar
para a base de jogadores, simplesmente
criamos esse multicast e o adicionamos ao servidor Lembre-se de que um multicast
só pode ser executado por meio de um evento de servidor Nós o executamos por meio
do evento do servidor. Conectamos todas essas informações e
agora as temos funcionando Então vá em frente e salve
tudo, e vamos seguir em frente.
139. 10.10 Prevenindo o disparo durante o Equip Anim: O problema que temos
agora é que o jogador pode atirar enquanto
equipa a arma Se eu equipar esta arma, você pode ver que eu posso atirar enquanto
estou equipando a A propósito, para este
curso, vou apenas desativar o som
da arma para que você
possa me ouvir quando eu estiver atirando e
não me distrair Eu só vou
desativá-lo do meu lado. Quando você equipa a arma, queremos desativar o disparo Vamos seguir em frente e fazer isso. Vamos primeiro adicionar um lingote. Vamos chamar isso de
arma de equipamento. Vamos compilar agora. Temos que definir isso
por meio de um evento. Vamos criar um novo evento
personalizado. Evento personalizado. E vamos chamar isso de um
conjunto de armas equipadas. Vamos
copiar esse nome porque vou criar
outro evento personalizado. Temos que executar isso
pelo servidor. Vou chamá-lo de
servidor no início. E execute este
no servidor e também seja
confiável. Ok, você pode executar
o servidor
no conjunto normal de servidores de eventos. Este conjunto é uma arma
de equipamento, assim como esta aqui O que simplesmente queremos
que essa variável seja,
seja verdadeira ou falsa,
dependendo de como a definimos. Vamos apenas arrastar isso até aqui. E vamos arrastar isso para aqui
também. Ok, esse. Lembre-se de configurá-lo
para replicá-lo para que o cliente também saiba
qual é essa variável Para este, temos que
chamá-lo por meio do código em algum lugar para que
seja verdadeiro ou falso. Vamos começar por aqui. Temos essa montagem de jogo
sempre que equipamos a arma. Deixe-me arrastar
esse aqui. Sempre que colocamos a arma, sempre que isso é verdade, eu estou fazendo um galho
sempre que isso é verdade. Vamos chamar essa
arma de equipamento de equipamento MC equip. E então também podemos definir essa
animação de equipamento Então,
o que fizemos aqui foi executar o multicast e, na verdade chamá-lo no servidor Então, o que podemos fazer é copiar e colar isso. Só estou pensando se
deveríamos arrastar isso para aqui e depois
arrastar isso para aqui, para que possamos chamá-lo aqui. E eu acredito que
realmente não precisamos fazer isso, vamos copiar isso aqui. E deixe-me mudar isso para baixo. Vamos colar esse aqui embaixo. E vamos colar a
animação do equipamento como antes. E vamos esconder os pinos
desconectados. Então, agora, sempre que
equiparmos a arma, vamos jogar
esse multicast Ok, agora que temos isso, vamos compilar. Agora, o que podemos fazer é usar este conjunto de armas equipadas
em vez desta Sempre que equipamos uma arma, isso será definido como verdade Deixe-me excluir isso por enquanto
e ocultar os pinos desconectados. Deixe-me ligar para o aparelho que está equipando a arma e
vamos conectá-la E ele será executado
no servidor e, em seguida, chamará o multicast sempre que
isso for verdadeiro Aqui queremos
equipar a arma. Você precisa configurá-lo como
falso em algum momento,
caso contrário, será verdadeiro o
tempo todo e você não poderá
disparar sua arma. Sempre que terminarmos de jogar
essa montagem de animação, vamos dizer que o conjunto está
chicoteando a arma Nós o removemos aqui. Está bem? E então, quando dispararmos a
arma aqui, atire com a arma. Queremos filmar sempre que não
estivermos nos equipando. Vamos pegar isso aqui.
É uma arma de equipamento. E certo, não lingotes, então arraste daqui
e escreva lingotes. Vamos conectá-lo aqui. Ok, então não podemos atirar
quando estamos desarmados e não
podemos atirar quando
ainda estamos equipando a arma aqui Tudo bem, vamos compilar. E eu vou
subir aqui também. Quando saqueamos a arma, também
somos a arma do equipamento. Vamos excluir o
multicast daqui. Eu vou fazer a mesma coisa. Você pode simplesmente ir até aqui.
Se você quiser copiar isso, cole aqui,
assim mesmo. E isso também deve reproduzir
a animação. Isso deve resolver o problema. E eu posso deletar isso aqui. Eu posso esconder os
pinos desconectados em vez de usar a arma equipada com
este equipamento Porque essa
arma de equipamento só está sendo chamada aqui na arma
de equipamento. No entanto, nós realmente não temos a arma equipada aqui
quando usamos a arma. Talvez seja melhor usar
essa arma equipada. É melhor usar esse. Então, deixe-me ver aqui.
Armas equipadas. Sim, nós já
definimos isso antes. Chamamos isso, talvez você
possa simplesmente deletar isso, e me deixar ver a arma equipada, usando esta em vez disso. Isso deve funcionar muito melhor. Vamos compilar e salvar. Vamos realmente tentar jogar e ver se
temos alguma caixa aqui. Deixe-me jogar aqui, o Terrist. E tento atirar sempre que eu
saqueio a arma, não consigo. E você pode ver que
só consigo atirar quando termino de equipar a arma Se eu soltá-lo novamente e tentar
saqueá-lo e atirar, não consigo. Agora eu posso, sempre
que parar aqui. Ok, vamos tentar
jogar como cliente. Porque também é muito importante ver se
funciona como cliente. Vou escrever apenas um
jogador e jogar como cliente. Vou jogar
aqui e testá-lo. Tomar isso e aquilo
é a mesma coisa. Eu realmente não consigo atirar sempre que
estou equipando minha arma. É assim que
funciona e só reproduzirá a animação sempre que
a arma de
equipamento estiver configurada como verdadeira E ele vai
configurá-lo como defeituoso sempre que a
montagem da animação for concluída
140. 10.11 Criando a interface do usuário de munição: Agora é hora de criar a interface
do usuário do MO para que possamos adicionar
um pouco de MO ao jogo. E para fazer isso,
vamos até a interface do usuário. E vamos projetá-lo
dentro da nossa interface principal. Porque faz parte da interface
principal daqui. Eu quero desenhá-lo logo
abaixo da arma aqui. Por exemplo, vamos pegar
essa caixa vertical, vamos empurrá-la para cima em Y. Então eu tenho algum espaço aqui
embaixo para fazer isso Eu quero criar
algo assim. Gosto de mostrar o que
quero criar e você
precisa detalhá-lo. Você precisa dar uma
olhada nisso e depois
tentar detalhá-lo e ver o que
você precisa adicionar como interface do usuário. Por exemplo, você precisa
adicionar uma caixa horizontal? Uma caixa vertical? E o
que você precisa adicionar aqui? Primeiro, precisamos de uma sobreposição, porque eu posso ver que
temos algum texto em cima de uma imagem
no fundo E, portanto,
precisamos de algo chamado sobreposição. Vamos começar aqui. Vamos procurar uma sobreposição e colá-la aqui no painel
da tela,
na caixa vertical Nós terminamos com este. É uma sobreposição aqui por si só. E eu vou colocar a
âncora no botão, certo? E então, se escrevermos
00 como a posição, podemos ver que ela se alinha
aqui para o alinhamento Temos que escrever 11. Agora, na posição 00
, está dentro da tela. Ok, primeiro precisamos de uma imagem. Vamos procurar uma imagem e
colá-la na sobreposição. Clique na imagem
e vamos preencher toda
a sobreposição até o preenchimento de alinhamento
horizontal E o alinhamento vertical também
preenche. Ok, clicando na imagem, vamos selecionar a imagem. Acho que o
chamei de painel. Sim. Se você pesquisar por painel e
pegar esse membro do painel de imagem, se ele estiver esticado assim, você poderá deixá-lo solto Se você ouvir nas portas, mude para uma caixa e altere
a margem para 0,5.
Ok, lembre-se também de
diminuir o zoom para uma a uma. Você pode realmente ver o tamanho
real dessa caixa. Você pode simplesmente redimensioná-lo. No momento, não é
muito importante. O que eu quero fazer é clicar
na sobreposição e, na verdade,
clicar em Tamanho para conteúdo Na verdade, ele será dimensionado para qualquer conteúdo que esteja
dentro dessa sobreposição Quando clico na imagem
e aumento o tamanho, agora você pode ver que posso
aumentar o tamanho nos dois sentidos. Você pode simplesmente
aumentá-lo por enquanto. Precisamos
primeiro projetar o interior antes de realmente
sabermos o tamanho dele. Primeiro, precisamos de uma caixa horizontal
porque temos algum texto
e, ao lado dela, temos uma imagem. Vamos procurar
uma caixa horizontal e colocá-la
na sobreposição Vamos pegar a
caixa horizontal e alinhá-la
no meio da imagem
aqui da sobreposição Agora vamos pesquisar um texto. Pegue o texto e coloque-o
dentro da caixa horizontal. E também tire uma imagem e coloque-a dentro
da caixa horizontal. Ok, agora podemos clicar
no texto. Vamos escrever alguma coisa. Por exemplo, 30 por 90. Você tem 30 balas
agora no carregador, e então você tem
90 balas extras Agora, isso vai mudar
dinamicamente no jogo, então isso realmente não
importa no momento Na verdade, vou
escrever algo como 100, 200, então sei que é um texto falso e podemos configurá-lo
corretamente mais tarde. Ok, para este, esta é a imagem do marcador e ainda não a
importamos Vamos até
Assets at Assets. Vamos ver a interface do usuário e
os ícones aqui. Eu forneci a você,
dentro da pasta de
materiais da caixa nos ícones da interface do usuário, este marcador aqui, clique
e arraste-o até aqui E lembre-se de abri-lo primeiro e alterar o grupo de
texturas para UI. E altere as configurações de
compressão para a função da interface do usuário. Vamos em frente e economizemos.
Vamos voltar para nossa Nui Vamos procurar a bala
e selecioná-la. OK. Agora eu posso
clicar no meu texto. E deixe-me ampliar para que
eu possa ver o que estou fazendo. Vou mudar este
para rubic, semi negrito. Quanto ao texto, agora vou diminuir o zoom
para um para que eu possa realmente ver
o tamanho desse texto. E vou deixar que
seja 24 aqui de acordo com o tamanho. Ok, vou clicar
no ícone aqui em cima, então removo as
linhas de traço desse marcador Vou
alinhá-lo no meio e vou
torná-lo menor, talvez 30 por 30 Em vez disso, é isso
que parece. Ok, eu preciso de algum espaço
entre esses dois. E isso pode ser feito procurando
por um espaçador e colocando-o entre
o texto e a imagem Vamos transformar o texto, ou o espaço aqui, em
dez pixels no x. Ok, aqui está. Você pode compilar agora. E o que você pode fazer agora é
clicar na imagem e tentar
redimensioná-la melhor Agora, agora você tem o
conteúdo dentro dele e tenta redimensioná-lo da maneira que quiser Ok, quando você estiver satisfeito, vou afastar essa sobreposição um pouco da tela, das bordas aqui
da tela Talvez -30 por -30 e
agora está perfeito. Então, vamos compilar
e salvar tudo. E também vou selecionar
o texto,
a imagem e a imagem
em segundo plano. E definir a
visibilidade como
testável sem acerto para que o
cursor de milhas também não possa interagir
com eles. Ok, vamos compilar
e salvar tudo. E agora que isso acabou, vamos clicar na caixa
vertical aqui em cima. E agora podemos movê-lo para baixo. Você pode mover isso para baixo, talvez algo assim. E estou satisfeito com isso. Temos a munição e
também temos as armas aqui em cima. Ok, você pode ir
em frente e
compilar, salvar tudo e
passar para a próxima
141. 10.12 Definindo a quantidade inicial de munição para arma: Vamos agora definir
quanto MO você tem
em cada arma. Novamente, precisamos
voltar à estrutura. Vamos ver a estrutura, informações sobre
armas que criamos. Vamos criar duas novas variáveis. A primeira, precisamos saber quanto MO você
tem em uma revista, aquela arma contém o máximo de MO Precisamos saber quanto MO
você tem como balas extras. Então você pode ver aqui na interface
do usuário se eu a abro. Quanto MO você
tem aqui na revista? E quanto MO você tem? Sobras que você pode
recarregar a partir desta. Vou chamar Max extra MO. Qual é o máximo que você pode
ter dentro dessa arma? Como é apenas um número, é um número inteiro, não
é um número decimal Precisamos selecionar um número inteiro, apenas um número comum Sem decimais, temos o máximo em ma e
o máximo de MO extra. Vou movê-los até
aqui e acho que vou
movê-los acima da
velocidade de tiro, algo assim. Agora, realmente não
importa para onde você os move. Eu só gostaria de ficar
limpo assim. Depois de
concluí-los, agora podemos fechá-lo e lembrar atualizá-lo dentro
da tabela de dados. Se eu abrir a tabela de dados e dentro da minha tabela de
dados aqui, teremos que escrevê-la da
mesma forma que fizemos aqui na estrutura. Se eu voltar para a estrutura, eu abro a estrutura aqui
dentro da estrutura. Agora, se eu apenas
compará-lo com minha tabela de dados, preciso agora desse MO em mim e de Max extra MO após a
variável de classe. Depois dessa. Depois da aula,
vou escrever clique e diga Inserir
coluna à direita. E eu vou fazer
isso mais uma vez. Deixe-me maximizar isso para que eu possa realmente ver o que estou fazendo. Podemos simplesmente diminuí-lo e escrever Max MO em Mag Você pode até copiar
isso, colar aqui. E copie isso. E
cole aqui. Ok, então temos isso agora. E então você tem que definir
quanto MO você tem. Então, para o AK 47, por exemplo, posso ter 30 na minha Meg e posso ter no
máximo 90 balas extras Minhas informações poderiam ter,
por exemplo,
2060 e minha pistola, por exemplo,
12 balas e no máximo
24 balas como MO extra,
algo 2060 e minha pistola, por exemplo, 12 balas e no máximo 24 balas como MO extra, Vá em frente novamente e
clique no arquivo para baixá-lo e baixá-lo como um arquivo CS para que possamos
carregá-lo no mecanismo. E, novamente, assim como
antes, vou
excluir o antigo que criamos. E eu vou colá-lo aqui,
renomeá-lo novamente como
DT Weapon Info E então, dentro do motor, vamos às tabelas de dados. E deixe-me clicar e arrastar isso até aqui para
que ele seja atualizado. E se você
abri-lo novamente, verá que
todos os valores aqui estão atualizados. Ok, incrível. Então, agora definimos
o valor do MO. No entanto, agora, quando
jogamos
o jogo, o motor não sabe o valor inicial porque realmente não
usamos esses números. Está tudo bem. Nós os escrevemos dentro da estrutura
e da tabela de dados. No entanto, nós realmente não os
configuramos para nada no momento. Vamos até as armas e vamos fazer isso dentro
da base de armas. A razão pela qual eu faço isso
na base de armas no
momento, e não
no jogador, é porque sempre que a arma aparecer, ela define
a quantidade de MO que ela tem na
revista e o MO extra, ela faz
isso automaticamente Dentro daqui, dentro daqui. Vamos clicar com o botão direito do mouse e
criar um novo evento personalizado. Vamos chamar isso de servidor. Então, vamos
executá-lo por meio do servidor. E vamos chamá-la de arma
inicializada. É apenas um evento para iniciantes que acontecerá
aqui no início do jogo Se você simplesmente chamar a arma
inicializada pelo servidor e executá-la no servidor, de forma
confiável, compile. Agora, aqui o que queremos fazer
é definir o MO extra atual e também o MO no carregador da Vamos criar duas novas
variáveis e também
precisaremos delas mais tarde.
Vamos chamar esse. Preciso mudar o
nome aqui, MO em mag. Vamos chamar o outro de
M extra aqui na estrutura. Se eu voltar e abrir a estrutura, dentro
da estrutura, esse é o máximo de M, esse é o máximo
que podemos ter. Esse é o atual. Poderíamos ter fechado
nossa arma e usado nosso MO quando a
jogamos no chão. Não
terá o
MO máximo que o MO na revista Terá
esse MO atual porque o jogador
usou parte do MO. Vamos transformar isso em
um interior também. Deixe-me arrastá-los até
aqui para que possamos configurá-los. E lembre-se de que você
pode segurar Alts no teclado para
configurá-los diretamente dessa forma Vamos conectá-los
aqui, conectar este. E agora precisamos
defini-los primeiro. Precisamos obter a variável
aqui, a estrutura. você provavelmente já sabe
agora o que precisamos fazer, porque já fizemos
isso 1.000 vezes. Então você obtém o nome da arma, obtém as informações da arma e depois quebra
essa estrutura. E agora você tem o Max MO
e Meg e o Max Extra MO. O Max M e o Mag, vou configurar
para o M
e Meg atuais e o M extra, configurando-o para o MO extra
atual E vou clicar em Ocultar
pinos não selecionados. E, assim, o que acontece
é que sempre que essa arma aparece neste
início, o jogo continua Sempre que gerarmos
isso no mundo, sempre que tivermos colocado
isso no mundo, clicaremos em jogar E esse início de jogo
será reproduzido imediatamente. E sempre que estiver aqui, ele
definirá automaticamente o MO atual e o Mac um Mo extra do que
definimos de fato na tabela de dados. Tudo bem, então foi isso. Isso foi muito, muito simples. E com essas variáveis,
você precisa
clicar nelas e clicar em replicado E também para este,
clique em replicado. Porque lembre-se de que estamos
rodando no servidor. E se não os replicarmos, o cliente não tem ideia
de quanto MO você tem O cliente verá 00 MO se você não os tiver
replicado. Portanto, lembre-se de
replicá-los também. Os dois. E vamos
passar para a próxima.
142. 10.13 Criando a lógica da interface do usuário da munição: Agora vamos prosseguir com a interface do usuário e fazer a
lógica aqui dentro. Dentro do nosso B main, criamos essa interface de usuário
para os marcadores Agora vamos clicar nesse texto. E vou
renomeá-lo para T bullets ou MO. Vamos chamá-lo de MO.
E vamos compilar Vamos também configurá-lo como uma variável. Como precisamos
definir esse texto, dependendo da
quantidade de MO que temos, precisamos
transformá-lo em uma variável. Assim, podemos modificá-lo com o
código dentro do gráfico. Dentro daqui. Vamos criar um novo evento personalizado.
Vamos clicar com o botão direito do mouse em Eventos
personalizados. Vamos chamar essa atualização
de MOI com isso Inicialmente, o que
queremos com isso é definir esse texto para a
quantidade de MO que temos. Vamos atacar aqui
e dizer texto definido. É sempre bom pensar: o que você realmente quer? O que você está tentando fazer? Isso é o que eu geralmente
me pergunto quando tento
codificar algo. Por exemplo, este aqui, o que você está tentando fazer? Você está tentando
definir esse texto para
a quantidade de MO que você tem
agora no Meg, você vai até o gráfico e
pega isso, por exemplo Você pode escrever Definir
texto porque, em última análise,
queremos definir o texto. Como configuramos o texto? Precisamos de duas variáveis diferentes. Isso é algo
que já fizemos. Precisamos do MO atual no Mac. Precisamos saber disso,
porque precisamos configurá-lo aqui e também
precisamos do
MO extra atual. Vamos ligar para isso. Clique aqui e
chame-o de Current extra MO. Vamos transformar os dois em um número inteiro. Essas são as duas
variáveis que precisamos
conhecer e com as quais precisamos
definir esse texto. Agora você pode ver que temos
duas coisas que precisamos definir. Não temos apenas um
número, temos duas coisas. Sempre que houver várias
coisas dentro de
uma linha de texto que você
precise alterar separadamente, você usará algo
chamado de formato de texto. Se você arrastar daqui
e disser formatar texto, isso é algo em que
você precisa
pensar imediatamente quando tiver duas coisas que
deseja modificar dentro de uma linha de texto,
duas coisas separadas. Queremos modificar esse número e queremos
modificar esse número. Sempre que recarregamos a arma, precisamos formatar o texto Porque agora precisamos inserir essas duas variáveis
com formato de texto. Se você escrever um colchete para começar, vamos chamá-lo Você pode chamá-lo do
que quiser. Vou chamá-lo do mesmo nome que
aqui. MO atual em maio. E então você tem que
fechar os colchetes Lembre-se de que é um suporte encaracolado. Você precisa
formatá-lo da mesma forma que aqui. Porque eu quero o espaço
aqui e o e o espaço. Vou clicar aqui
e escrever espaço no espaço. Porque eu só
queria ficar assim. Você pode escolher
como quiser que
pareça que eu
quero ficar assim. Então você tem que abrir
os colchetes novamente, porque agora eu tenho que definir
minha segunda variável Este é, por exemplo, MO extra
atual,
assim como este. Está bem? Agora temos
essas duas e agora registramos essas duas variáveis. Ele
os conectará automaticamente aqui e aqui, o que significa que atualizará isso e isso separadamente um
do outro. É assim que você usa um
formato de formato de texto. Se eu fizer isso de novo, por exemplo, outro exemplo, você pode usá-lo, por exemplo, em um jogo de RPG, você poderia dizer, por
exemplo, olá E então você pode
dizer o nome do jogador. Porque talvez diga olá
John, ou algo parecido. Eu não sei. Seja qual for
o nome do
seu jogador , ele diz olá. E o
nome do seu jogador, como você está saindo a essa hora do dia, por exemplo, Olá, por exemplo, John, como você está fazendo isso
esta noite? Talvez você tenha um sistema
diurno e noturno. E no jogo você sabe
automaticamente se é noite ou manhã
ou algo parecido, e você pode conectar
isso às variáveis. É assim que você
usa um formato de texto. Você pode criar várias variáveis, e elas realmente não
precisam ser números inteiros Pode ser uma linha de texto, pode
ser outra coisa, uma enumeração e assim por diante É muito, muito útil
usar esse formato. Ok, agora terminamos isso, e podemos realmente usar isso
para conectar essas variáveis. Vamos
compilar e salvar tudo e passar
para a próxima
143. Atualização da interface do usuário do Ammo: Agora é hora de
atualizar a interface para a quantidade real que
temos dentro das armas. Vamos até a base de jogadores. Agora, dentro daqui, vamos criar um novo evento. E vamos dar uma olhada aqui
e criar um novo evento personalizado. Chame isso de CL porque estamos trabalhando com UI e
UI, do lado do cliente. Vamos chamar isso de atualização, MOU. O que precisamos fazer,
assim como este,
é pegar o
controlador e assim por diante. Agora você pode ver que
estamos tentando obter esse controlador repetidamente. Na verdade, é bom
criá-lo em uma variável, em vez de copiar e colar
isso o tempo todo Vamos até aqui para ver a
jogabilidade do Player aqui, onde realmente
pegamos o controle. Vamos clicar com o botão direito do
mouse e transformar esse controlador uma variável e
chamá-lo de controlador de player. Vou mover isso um pouco cá e depois
vou colocá-lo aqui. Sempre que esse
controlador de player for válido, vamos
defini-lo como uma variável. Sim, isso é bom. E você pode até mesmo clicar
duas vezes aqui para fazer anotações de redirecionamento
assim Ok, vá em frente e compile. Agora,
o que podemos fazer aqui remover isso, pegar o controle, jogar o controle, porque já o temos
como uma variável agora. Agora fica muito mais fácil de fazer. Podemos até
aproximar isso, algo assim. Agora você pode realmente
fazer o mesmo aqui. Podemos pegar o controlador. Vamos executar isso no cliente
antes de esquecermos de
executar o cliente proprietário, pegar o controlador de exibição,
obter o WB principal. Então você pode chamar o que
chamamos de atualização MO Ui. Ok, precisamos de duas
variáveis aqui. Podemos simplesmente conectá-los a esse cliente. No cliente um. Deixe-me diminuir
um pouco, sem mais nem menos. Ok, e agora
temos esse aqui. Então, vamos compilar e
salvar tudo. E precisamos ligar para essa
sempre que saquearmos a arma. Então, deixe-me subir até aqui. Sempre que saquearmos a arma que está aqui, saqueie a E se formos para o lado, precisamos atualizar as balas
somente se estivermos desarmados Porque se eu tiver um AK, ele vai passar por
esse código aqui em cima. Eu só quero atualizar
sempre que eu realmente saquear a arma pela primeira vez Porque não precisamos alterar
a quantidade de MO
da outra arma. Isso vai cair nas
minhas costas porque eu não o equipo
quando estou desarmado Quero atualizar
meu MO aqui. Precisamos estender
o código novamente. Na verdade, vou
afastar isso
um pouco porque continuamos
estendendo esse código Eu tenho algum espaço para trabalhar. Eu posso levar tudo isso para cá
comigo. Exatamente desse jeito. Podemos chamar de update MY este
cliente que acabamos de criar. Então você tem que definir qual é o seu MO atual e extra aqui. Já fabricamos essa arma equipada com
variáveis. Neste,
vou clicar nele e ocultar os pinos desconectados Clique sobre isso. Então você tem
essa arma equipada, podemos usá-la. A arma
equipada. Lembre-se de que não é
uma arma equipada, é a arma equipada. Talvez você possa mudar o nome
delas para não se confundir muito com a arma equipada. E podemos obter o MO
atual em mag. Também podemos obter o MO extra
atual. E podemos conectá-los aqui. Na verdade, posso copiar tudo isso porque podemos
copiar e colar isso por toda
parte . Podemos copiar e colar isso. Vamos compilar, vamos colar. Sempre que trocamos as armas. Sempre que eu troco as armas aqui na lógica da arma de equipamento,
novamente, estamos atualizando a interface do usuário Então eu vou
tirar isso e vou
colar aqui. Cole depois dessa lógica. E vamos prosseguir e
conectá-lo. Exatamente desse jeito. Ok, vamos compilar
tudo agora. Vamos tentar ver o que acontece
se clicarmos em jogar agora. E agora interpreta o cliente. Eu seleciono Terrorist e
deixo eu pegar alguma coisa. Então você pode ver que meu MO está
realmente sendo atualizado, agora diz 20,60 Se eu pegar a pistola,
ela não diz nada, a menos que
eu mude para a Em seguida, ele também atualiza o MO. Se eu deixar isso agora, agora precisamos esconder
a seção MO porque eu não
tenho nenhuma arma. Mas vamos fazer
isso nas próximas aulas. Agora podemos ver aqui que,
quando eu pego o AK, ele será atualizado corretamente. Quando eu troco de arma, ele também é atualizado
corretamente. Ok, então tudo está
sendo atualizado corretamente. E foi isso para esta lição. Muito simples. E vamos salvar tudo
e seguir em frente.
144. 10.15 Hide Ammo UI: Ok, bem-vindo de volta.
Então, agora precisamos ocultar a M UI sempre que não
precisarmos dela. Deixe-me
abrir a interface do usuário novamente. Abra o WB principal
e entre no gráfico abaixo,
o MOU de atualização. Vou criar
outro evento personalizado e vou chamar
essa tela desse jeito. Para este, o que
estamos tentando fazer,
novamente, pergunte a si mesmo: o que você
está tentando fazer? Estou tentando esconder toda
essa seção. Sempre que não tenho uma arma, clico nessa sobreposição Isso se sobrepõe a
tudo aqui. Este é o pai
de todos eles aqui. Vou renomear
este para V M ou sobreposição. Deixe-me defini-lo como uma variável para que eu possa editar essa codificação Deixe-me ir ao gráfico, pegar isso e
dizer definir visibilidade. Quero controlar a
visibilidade dessa interface do usuário. Podemos arrastar a partir disso e dizer selecionar, dependendo se
queremos mostrar ou ocultar a interface do usuário. Eu preciso de um touro aqui. Eu preciso de um lingote chamado display. Se quisermos exibir
ou ocultar a interface do usuário, podemos
conectá-la aqui. Esse bullying é falso, o que significa que não queremos exibir a interface
do usuário. Eu quero esconder isso. Sempre que isso for verdade aqui, quero exibir a interface do usuário. Vou configurá-lo
para não ser testável. Novamente, isso significa
que você significa que está visível, mas o cursor do mouse não pode
interagir com essa interface aqui. E, de qualquer forma, não
precisamos interagir com ele. Vamos compilar E agora isso aqui está terminado. Agora, o que podemos fazer é
voltar para o jogador. E em vez da base de
jogadores,
como antes aqui,
vamos clicar com o botão direito do mouse e
criar uma nova ventilação personalizada, tudo
isso exibido novamente. Vamos pegar esse copiar e
colar e procurar por display MI.
Vamos conectá-lo. Lembre-se de executar isso
no cliente proprietário e também
confiável Deixe-me clicar e
arrastar essa variável até aqui. Ok, foi isso. Vamos compilar agora. Vamos escolher quando queremos exibir e ocultar
a interface do usuário. Quero exibir minha interface sempre que eu equipar a arma
ou saqueá-la aqui Exibir MOU. Se eu for
até minha arma de lote e simplesmente for até aqui e quiser exibi-la logo
após atualizar meu MO. Não quero exibir antes atualizar
meu MO porque, caso contrário
, ele parecerá cheio de bugs Quero atualizar o MO
antes de exibir a interface do usuário. Mais uma vez, deixe-me arrastar
tudo isso para longe. Novamente, assim,
continuamos arrastando isso para longe. Temos muitas coisas para
fazer aqui dentro, podemos escrever o display CL
aqui e conectá-lo. Novamente, vou afastar
isso um pouco desse jeito. Algo parecido com isso. É sempre
bom dizer, organizado. Ok, então vamos
exibir a interface do usuário aqui. Essa de novo, sempre que
estivermos desarmados, porque agora temos uma arma Quero exibir minha interface de usuário. Lembre-se de marcar isso aqui. Vamos compilar novamente. Também precisamos disso sempre que
equipamos a arma. Se eu for até minha arma de equipamento, se eu puder encontrá-la aqui,
equipe a arma Novamente, sempre que eu atualizo meu MO, quero exibir minha interface de usuário
ou meu MO desse jeito. Ok, lembre-se também de
marcá-la aqui. Agora precisamos esconder a
interface do usuário sempre que soltamos a arma aqui na
minha arma lógica de lançamento. Lembremos que criamos essa função
anteriormente, soltar arma. Vamos entrar aqui. Vamos esconder a interface do usuário
logo antes desta. Se eu arrastar isso para longe,
posso colar isso. A tela MO UI
vai ser, cai aqui, se apaixona
pela tela. E podemos esconder a interface
sempre que soltarmos a arma. Ok, vamos compilar
e salvar tudo. Vamos testá-lo e ver
se ele realmente funciona. Vamos selecionar terroristas. Na verdade, precisamos
ocultá-lo por padrão. Você pode ver que está agora
e não queremos isso. Então esse é o primeiro bug. Vamos até o principal aqui. Vamos clicar na sobreposição
aqui na visibilidade. Vamos configurá-lo como oculto
por padrão e compilar. E vamos clicar em jogar novamente aqui no cliente,
selecione Terraço. No momento, não podemos vê-la,
mas quando pegamos uma arma, ela aparece com a quantidade
correta de balas Se eu soltá-lo agora, ele não
será mais exibido. Eu pego a pistola,
ela vai aparecer, eu pego a AK Não
atualizará os marcadores a menos que mudemos para o AK Se eu soltar o AK, ele não
exibirá nada. Você pode ver agora que
está funcionando corretamente. Sempre que estivermos
segurando uma arma, a veremos
sempre que trocarmos a arma. Sempre que soltamos a arma, escondemos a interface do usuário e assim por diante. E, na verdade, também vamos
tentar isso no servidor, então não sei se estou jogando
como servidor também. Então, clicando aqui,
jogando como servidor, eu vou jogar
com dois números ou dois jogadores e vamos
selecionar terroristas Vamos também testá-lo
aqui no servidor. Lembre-se de que você precisa
testá-lo no cliente e
no servidor para saber se ele realmente funciona
nos dois. Aqui eu
também tenho o cliente e você pode
selecionar terroristas E nós já
o testamos no cliente. Tudo está funcionando perfeitamente. Sim. Tudo está funcionando, tudo está bem,
incrível. Tudo funciona. Não temos dinheiro, não temos erros, e é assim que fazemos Vamos passar para a próxima.
145. 10.16 Munição de contagem: Então, agora vamos calcular o MO,
porque agora, sempre que
estamos atirando com a arma, então se eu pegar isso
e tentar atirar, não
estamos realmente
calculando o MO Ainda são 20. Então, vamos
seguir em frente e fazer isso. Vamos até a base de jogadores
mais uma vez para calcular as balas Lembre-se, fizemos
esse cronômetro aqui embaixo. Se pudermos encontrá-lo
aqui embaixo com o
traçado de linha por canal e reproduzindo o efeito visual
e o efeito sonoro aqui, queremos subtrair uma bala
toda vez que você Deixe-me afastar esse traçado de
linha, porque vamos usá-lo mais tarde, quando aplicarmos o dano do jogador. Mas, por enquanto, vamos trabalhar aqui. O que eu simplesmente quero
fazer é pegar minha arma equipada
que tenho
agora e quero colocar meu MO
atual na minha revista Então eu só quero subtrair
um, menos um. E então você pode ir em frente e
definir esse MO atual em mag. MO atual em maio. E precisamos configurá-lo.
Defina o MO atual em mag. E com apenas menos um,
estamos subtraindo uma bala
toda vez que disparamos Agora, em vez de ficar assim, precisamos arrastar a partir
disso e dizer pinça O que o grampo faz é
evitar que nosso valor fique abaixo
de zero porque não queremos
ter menos uma bala, menos duas balas, menos
três balas Estamos definindo nosso valor
mínimo como zero quando subtraímos aqui Estamos evitando
atingir menos uma,
menos duas balas e Isso não faria nenhum sentido. Agora, o máximo para este, podemos simplesmente pegar isso
e dizer que podemos obter as balas atuais e
então podemos configurá-las aqui Agora, esse não importa. Podemos até mesmo configurá-lo para 999. Realmente não importa agora. Mas eu vou usar uma boa
prática, uma boa prática de codificação Pegue as balas extras atuais
e defina-as como máximas. Ok, nós temos esse conjunto agora. Deixe-me criar
notas reescritas em torno desta também. Vamos conectar
esse pino de execução aqui. E vamos conectar o pino de
execução aqui também. O que você pode fazer é até clicar com o botão direito do mouse
e promovê-la para uma função ou
reduzi-la a uma função. Vamos chamar essa função de
trato MO de mag assim. Está bem? Agora estamos subtraindo e podemos deixar que fique Agora, em vez de
ter apenas uma bala, você pode até mesmo torná-la
dinâmica no futuro. Se você quiser disparar
uma bala e
realmente quiser subtrair
duas em vez de uma Você pode até mesmo
conectá-lo aqui e escrever MO para subtrair assim Deixe-me afastar
tudo isso,
isso, e vá em frente
e compile agora Se voltarmos agora, você
pode ver que pode escrever quantas balas você quer
subtrair para o meu jogo agora, eu só quero subtrair
uma bala. Isso é bom. Então, vamos fazer uma anotação da sequência, porque
vamos recarregar mais tarde Na verdade, vou desconectar esse traçado de linha e
vou afastá-lo um pouco aqui Vamos rastrear a partir daqui
e fazer a sequência. E escolha o nó da sequência. Agora, com a nota de sequência, vamos conectar os dois aqui, do pino aqui,
do zero. Vamos conectar isso aqui. O que é uma nota de sequência, ela é usada apenas para
organizar seu código. Não está fazendo
nada além
disso, está apenas organizando seu código. Primeiro vamos fazer o efeito aqui e vamos
subtrair a bala Em seguida, vamos
estabelecer esse traçado de linha. Eu posso mover esse
traçado de linha até aqui. Vou mover tudo
isso para cá também, porque parece um
pouco confuso agora. Você pode até mesmo excluí-los e conectá-los diretamente aqui. E eu vou aumentar
isso assim. Está bem? Agora parece muito melhor. E agora podemos conectar
isso a isso aqui. Um nó de sequência serve apenas
para organizar seu código. Ele fará o
efeito sonoro e tudo mais,
subtrairá a bala e, em seguida, criaremos o traçado da linha Depois disso, vamos fazer o recarregamento
porque precisamos verificar se estamos sem balas Se estivermos, precisamos
ir em frente e recarregar. Vamos continuar e fazer
isso na próxima lição. Isso não será muito difícil, mas você tem que
estar acordado para isso Por enquanto terminamos, estamos calculando as balas Podemos até clicar na placa
apenas para testá-la por um bom motivo aqui e
ver se está fora da caixa. No momento, precisamos realmente atualizar
a interface do usuário e vamos fazer isso dentro da função subtrair
amo da função mag Vamos entrar aqui
e entrar aqui. Vamos atacar a partir daqui e
chamar a atualização CL de MO I. Isso é o que criamos anteriormente. E então podemos pegar
esse MO em mag, este é apenas este aqui e o
outro, o MO extra Na verdade, podemos simplesmente
pegar este e criar um nó de redirecionamento ou simplesmente torná-lo mais baixo aqui e
podemos levá-lo até aqui. Ok, agora isso está feito. Vamos compilar. Vamos
clicar em jogar. Vamos testar como
cliente. Vamos agora jogar. Vou atirar com minha arma. Está funcionando agora. Também vou jogar como
servidor, pegando a arma e atirando
também. E isso funciona. Tanto o cliente quanto o servidor estão funcionando perfeitamente. OK. Agora está calculando. E vamos seguir
em frente nas próximas lições. E você pode ver,
podemos disparar a arma. Você pode ver que se eu continuar
atirando com a arma, eu posso continuar atirando sempre que
estou com zero balas E a razão para
isso é porque realmente
não dissemos ao motor que parasse de
disparar sempre que
estivéssemos com zero balas E faremos isso
nas próximas aulas. Mas primeiro temos que calcular o MO e fazer o recarregamento E depois disso, podemos adicionar
todas essas condições. Mas, por enquanto,
vamos salvar tudo isso. Tudo está funcionando. E
vamos passar para a próxima.
146. Animação de arma de recarga 10.17: Olá e bem-vindo de volta. Agora estamos prontos para executar a funcionalidade de
recarga. Agora você precisa
estar bem acordado para esta lição
, porque talvez ela também seja longa Temos muita matemática para fazer, então você realmente precisa
prestar atenção aqui. Ok, vamos fazer a
recarga primeiro. Vamos
criar um evento personalizado. Então, deixe-me clicar com o botão direito aqui e criar um
novo evento personalizado. Vamos chamá-la de arma de
recarga definida. Então, vamos configurar
um touro para fazer com que ele recarregue ou não execute, na verdade,
para ser executado no servidor. faça isso. Não funciona no servidor, isso foi um erro, basta
configurar a arma de recarga Evento normal, vamos
criar um servidor
aqui chamado set is
reloading weapon Vamos executar este no servidor,
de forma confiável. Vamos fazer um novo bulling aqui chamado reloading e
clicar em Vamos pegar isso e colocar o touro de
recarga aqui. Lembre-se de configurá-lo para
replicá-lo, pois estamos rodando no servidor e o cliente precisa saber se estamos
recarregando ou Por aqui, precisamos executar o conjunto de eventos
do servidor que está
recarregando a arma Vamos continuar e conectar
isso aqui também. Ok, então sempre que estivermos
recarregando, queremos realmente reproduzir a montagem
para Deixe-me sair
daqui e fazer um galho. E vamos fazer uma filial aqui. E digamos que, se estivermos recarregando, queremos
fazer uma montagem E lembre-se da montagem N
que precisamos reproduzir por meio um multicast porque
todos os clientes precisam ver essa mudança visual O conjunto multicast está
recarregando a arma. Agora eu gostaria de chamá-lo do mesmo nome
das funções principais. Você pode nomeá-lo como
quiser e executá-lo por meio um multicast confiável aqui Precisamos pegar
a malha, então não os dois, mas
apenas essa malha aqui. E você pode escrever uma
montagem e jogar essa montagem como
antes Esta montagem para jogar, você pode simplesmente conectá-la aqui Vamos chamá-lo de reload M. Vamos jogar esse
multicast aqui em cima. O conjunto está recarregando a arma.
Essa é a correta. Então, precisamos dizer qual
montagem precisamos tocar. Agora, acho que não
temos animações. Porque se formos até aqui, vamos pegar um deles.
Essa estrutura aqui. Estou apenas colando para
não ter que escrever tudo de novo. Posso pegar minha arma equipada
e conectá-la aqui. Ok, então aqui na estrutura temos apenas a animação do
equipamento. Não temos uma animação de recarga
para cada arma porque realisticamente,
cada arma tem
sua própria Então, vamos adicionar
isso à estrutura. Na estrutura,
abra-a e vá em frente
e adicione a animação de recarga Vamos configurar,
vá em frente, pesquise
e selecione-o, assim como o mostrado acima Vamos em frente e
salve tudo. Eu quero que você vá em frente e
abra sua tabela de dados. Porque aqui na
tabela de dados agora você pode escrever uma animação de
recarga Posso copiar todas as
animações do meu equipamento aqui. Porque, como eu disse antes, não
tenho uma animação de
equipamento separada. Mas, como você pode ver em
seu próprio jogo agora, você pode ter uma animação de equipamento, uma
separada e uma animação de recarga separada Tudo isso pode ser
personalizado muito bem. Agora você pode sair e
clicar em Arquivo e fazer o download, Baixar como CSV e, em seguida
, minimizar isso aqui, vá para a pasta de tabelas de dados E aqui, assim como antes, vou deletar o meu
antigo e renomear esse novo, e depois arrastá-lo até
aqui para atualizá-lo Agora eu posso voltar
para minha base de jogadores dentro desta montagem para jogar Agora diz zero sem motivo. Você só precisa
clicar em Arquivo e atualizar todos os nós
assim Agora eu posso realmente ter minha animação de recarga aqui
e você pode conectá-la Ok, agora
resolvemos isso e
também precisamos definir que o
recarregamento é falso em algum momento Vamos definir que isso é
recarregamento como falso. E da maneira como fazemos
isso, podemos simplesmente chamar isso de novo no servidor. Lembre-se de que, quando
estiver em um multicast, você pode voltar
ao servidor aqui Quando concluímos o recarregamento, podemos dizer que o conjunto de servidores
está recarregando Estamos voltando para
o servidor e
configurando o recarregamento
como falso Na verdade, podemos
experimentar e vamos compilar E foi isso
agora, não
podemos realmente testá-lo
agora porque não
temos nenhuma
funcionalidade de recarga Mas vamos fazer
isso e vamos
calcular a recarga
e assim por diante aqui Mas, por enquanto,
terminamos a animação de
recarga e
vamos
compilar, salvar tudo e
passar para a próxima
147. Funcionalidade da arma de recarga 10.18: Tudo bem, agora
estamos prontos para calcular as balas
quando estivermos recarregando E antes de fazermos
isso, vamos adicionar esse conjunto está sendo
recarregado aqui no código Antes de continuarmos, lembre-se de
que fizemos essa sequência. Então, como você pode ver aqui, e estamos atirando as balas, estamos subtraindo uma bala
toda vez No entanto, no final,
precisamos verificar se temos mais balas Se não o fizermos, precisamos
ir em frente e recarregar. O que precisamos fazer é pegar essa arma equipada e lembrar que temos
esse MO atual em mim. Podemos perguntar se isso
é igual a zero. Se isso for igual a zero, deixe-me fazer uma ramificação aqui. Se isso for igual a zero, vamos pegar isso
e conectá-lo aqui. Se isso for igual a zero, vamos
dizer que set é reload Definido como recarregar, queremos recarregar sempre que
não tivermos mais balas Vamos compilar. Vamos
clicar em jogar. E vamos ver se
isso realmente funciona. Estou indo em frente aqui e vou atirar com
todas as minhas armas. Preciso ter cuidado porque não
quero atirar porque não
criei condições para isso. Se eu atirar para zero, você pode ver que está indo em frente e recarregando, e isso está correto Ok, então está reproduzindo
a animação agora. Precisamos calcular as balas sempre que estivermos recarregando Então, vamos seguir em frente e fazer
isso. Deixe-me afastar
esse multicast porque
precisamos do código aqui Agora você tem que estar
realmente acordado porque há muita matemática
acontecendo quando calculamos
as balas Ok, primeiro o que precisamos fazer, precisamos pegar a arma
equipada, precisamos descobrir as balas
extras que temos Porque se não
tivermos balas extras, realmente
não faz
sentido recarregar Agora, a primeira coisa que
quero perguntar
é se esse MO extra que
temos nesta arma é maior ou
igual a? Agora deixe-me colar isso aqui embaixo.
É maior ou igual ao MO máximo na revista Agora, o motivo pelo qual perguntamos sobre isso é porque
digamos que esse seja o AK, e o AK tenha 30
aqui no máximo M da revista, se tivermos
mais do que isso como MO extra Agora vamos fazer um galho. E deixe-me conectar
isso aqui embaixo. Se isso for verdade, podemos simplesmente seguir em frente e pegar
essa arma equipada e obter o MO e o carregador atuais E defina esse MO atual, e podemos simplesmente configurá-lo para o que está aqui
como o M no, se isso fizer sentido. aqui descobrimos
que nosso MO extra é maior ou igual ao que
podemos ter dentro do mag Isso significa que a revista pode estar cheia. Estamos apenas enchendo a
revista inteira aqui, sem mais nem menos. Mas antes de fazermos isso, eu também preciso calcular
o que nos resta em nosso MO atual, porque
precisamos subtrair daqui Vamos pegar esse MO extra
e digamos menos. O que precisamos
subtrair daqui? Precisamos subtrair o quanto temos
agora em nossa revista Se eu apenas pesquisar
o MO atual em mag neste ano, precisamos subtrair o MO máximo em mag
do M max atual Vamos dar
um exemplo para que
não fique muito confuso Pode parecer muito confuso. Por exemplo, digamos que meu MO máximo agora
no AK seja 30. Agora eu subtraio. Digamos que eu tenha 27 MO restantes. Na minha revista atual, eu só
atirei três balas. Agora eu tenho 27 aqui. 30 que é o
máximo -27 que é 33. Vou
subtrair três do meu MO extra se eu tivesse
90 como meu MO extra, agora tenho 87 porque eu
só atirei três balas Agora, a matemática faz sentido
aqui para este. Agora, esse valor, preciso
definir meu M extra atual aqui. Em vez de copiar e colar isso. Na verdade, vou desenhar
a partir daqui e dizer M
extra. Podemos definir
isso para esse valor. Vamos seguir em frente e fazer isso. E vamos
conectar isso também. Vou fazer algumas anotações de
redirecionamento e, novamente,
explicar isso para você, apenas
para ter certeza de que
estamos na mesma página Tudo bem. Então, agora eu criei notas
traseiras e as
organizei. Na verdade,
precisamos estendê-lo um pouco, porque posso
ver que estamos ganhando um dinheiro mais tarde,
porque estamos perguntando se o MO extra atual é
maior ou igual ao MO E se for esse o
caso, estamos configurando isso, estamos configurando o MO atual para o MO máximo porque
podemos pagar, temos balas suficientes No entanto, quando tivermos algo como, digamos que ainda temos
cinco balas Então, se eu simplesmente abrir a interface do usuário para que possamos
entender muito melhor. Digamos que eu tenha mais cinco
balas aqui. Eu tenho algo como,
digamos, dez balas sobrando. Não vai configurá-lo para 15, na verdade vai
estar errado aqui. O que precisamos fazer
é perguntar se o
MO extra atual que temos, precisamos realmente adicionar
isso aqui mais o atual. Precisamos adicionar os dois. Juntamos o M atual
mais aqueles. Se forem maiores ou
iguais ao máximo M no máximo, agora está correto e não
ganhamos dinheiro com este Eu sei que talvez você precise entender isso da mesma forma
que você pode simplesmente postar este vídeo e
tentar entender a
lógica por trás disso. É pura matemática. Você
pode até mesmo escrevê-lo no papel. É muito melhor.
Às vezes, quando eu crio uma lógica como essa, eu a escrevo no papel , está na minha frente, é
muito mais fácil de entender. Basicamente, estamos perguntando: o MO extra atual que você tem mais o MO atual em mag é maior ou
igual ao MO máximo Se for esse o caso,
isso seria falso porque
o total seria apenas 15 e o máximo no Mac
seria 30. Então, seria falso. E faríamos algo
assim aqui. Tudo bem, então agora
está correto. E também vamos
lembrar aqui que, quando
subtraímos aqui e ajustamos o MO extra
atual novamente, vamos pegar uma pinça e garantir que ela
não fique abaixo E vamos
conectá-lo aqui. O máximo é apenas
esse MO extra. Na verdade, podemos
simplesmente pegar este ou você pode simplesmente copiar e
colar para que fique muito melhor e mais
legível, como este aqui Agora, quando é falso, vou
afastar essa parte, então parece muito melhor. Agora, quando é falso,
o que precisamos fazer pegar essa arma e obter o MO
atual em Meg, e precisamos definir esse valor O que precisamos definir
é digamos que foi o
caso deste ano. Ainda temos cinco balas aqui,
temos dez balas aqui. Precisamos dizer cinco
mais dez, ou seja, 15. E precisamos definir isso para a quantidade
atual de balas. Na verdade,
precisamos levar isso até aqui. Precisamos dizer o MO
extra atual que temos, que é dez, por exemplo, mais o cinco que é 15. E precisamos colocá-lo aqui. E isso é feito sempre que
não temos mais balas. O M extra mais o MO
atual no mag, eles não são ainda maiores
do que o MO máximo no mag Depois, só precisamos
pegar todas as balas, juntá-las
e
colocá-las dentro do nosso carregador atual Algo parecido com isso aqui. Ok, agora isso está resolvido. Também precisamos garantir que a quantidade extra
de balas
aqui seja zerada Agora, como colocamos
todas as balas no carregador, precisamos pegar isso,
precisamos dizer Precisamos dizer que defina o MO extra
atual como zero. Agora também precisamos nos
lembrar de atualizar a interface do usuário. Deixe-me salvar tudo
e digamos que atualize o CL I. Vamos conectar este aqui e vamos conectar este aqui. Precisamos atualizar a
interface após esses eventos. Deixe-me
clicar duas vezes neste. Faça com que pareça muito
melhor assim aqui. Agora podemos pegar, não, vou apenas copiar
isso do passado aqui. Agora podemos conectá-los, vamos conectá-los de forma
diferente aqui. Primeiro, o MO atual,
em mag e MO extra. Apenas preste atenção ao que
você está conectando aqui. Vamos compilar agora e salvar, e agora vamos testá-lo. A razão pela qual escrevi a lógica aqui nas cataratas
é porque estou
esperando que essa animação
termine antes de
permitirmos que o jogador
defina a quantidade de
balas corretamente Porque, na verdade, não
quero dar balas ao jogador
durante a animação Quero esperar que a
animação termine. Quando cair,
reproduzirá esse código aqui embaixo. Ok, então você pode ver que precisa estar um pouco acordado para
esse código aqui Novamente, fique à vontade para fazer uma
pausa, dar uma olhada, pegar papel e caneta e
anotar os valores Tente fazer as contas e veja
se isso faz sentido para você. Vamos continuar e
clicar em Jogar. Jogue como terrorista. E deixe-me pegar o
M quatro, por exemplo. Deixe-me maximizar
a janela de visualização. Agora, se eu
disparar todas as minhas balas, quando eu bater, ainda posso atirar Você pode ver que ainda está incomodando. Eu posso atirar sempre que
continuo segurando meu mouse. Ainda não fizemos essa condição . Nós vamos fazer isso mais tarde. Mas se eu soltar meu mouse agora, vou recarregar e ele
realmente calculará as balas corretamente se
eu continuar fazendo isso E vai recarregar novamente. Eu vou fazer
o último aqui. Vou recarregar novamente, e isso é o que parece Você pode ver
os insetos aqui no final. Isso é porque nós
realmente não fizemos nenhuma condição aqui. Se eu voltar aqui e me deixar pegar o código que escrevemos
com a sequência. Se eu encontrar a
sequência aqui em cima, essa é a sequência
que estamos filmando. E então estamos perguntando aqui se o Mo atual em mag
é igual a zero Essa é a única condição que
estamos pedindo. Precisamos adicionar algumas condições para que não
surja dessa forma. Mas, por enquanto, salve tudo, agora está correto, é
assim que o
código se parece. Novamente, fique à vontade para
dar uma olhada novamente, eu sei que é confuso Essa é a matemática mais difícil que
fizemos para o jogo até agora, mas na verdade não é
tão difícil quando você a coloca no papel Então, vamos salvar tudo e passar para a próxima.
148. 10.19 Condições de filmagem: Tudo bem, bem-vindo de volta. Agora vamos fazer as condições de filmagem para que não fotografemos aleatoriamente quando estamos recarregando
e coisas assim Então, vamos começar
aqui com a arma de tiro. Não quero disparar minha
arma sempre que estou recarregando. No momento, não podemos disparar
a arma quando estamos desarmados ou quando
ainda estamos equipando a Além disso, não quero disparar minha arma sempre
que estiver recarregando Sempre que a recarga
aqui for falsa. Portanto, sem recarregar, podemos adicionar um alfinete
e adicioná-lo aqui Vá em frente e compile, ok, então isso está resolvido Agora, vamos descer para esta parte aqui
na sequência aqui. Não quero atirar
sempre que tenho zero balas. Eu tenho que escrevê-lo aqui antes de tocar o efeito e assim por diante. Preciso dizer que, se eu
tiver zero balas, não
estou interessado em
jogar tudo isso Na verdade, é exatamente
o mesmo que este. Na verdade, vou
transformar isso em uma função, já que
estamos reutilizando isso
, reduzi-la a uma
função e vou
chamar essa de fora do MO, torná-la pura porque estamos
apenas obtendo informações Não estamos configurando nada quando o M Mac atual é zero, isso significa que estamos sem balas Se for para recarregar, se você estiver sem MO, então você pode ir
em frente e recarregar Isso faz sentido. Agora, para este aqui em cima,
vamos colá-lo. Vamos escrever em lingotes
e selecioná-lo. Quando não estamos fora do MO, queremos ir em frente e atirar. Se estivermos fora do MO, não
queremos filmar também para recarregar Vamos pegar a recarga e dizer que, se
não estivermos recarregando, queremos
ir em frente e Se estivermos recarregando, não
queremos ir em frente e atirar. Isso é o que está
dizendo agora. Deixe-me ir em frente e
afastar tudo isso. Acho que em breve limparei todo
o projeto
porque está ficando confuso novamente porque estamos escrevendo muito código no momento Mas, como você pode ver
aqui, se
não estivermos fora do MO e se não
estivermos recarregando
, podemos ir em frente e
atirar com as armas aqui embaixo Quando estamos recarregando
a arma, não
quero recarregar o
dobro dessa, na verdade, já que é uma sequência, ela só leva isso em consideração E quando chega até aqui, não leva
isso em conta. Você realmente tem que adicionar
isso aqui também. Quando você não está recarregando, você precisa recarregar aqui Não queremos
recarregar
repetidamente quando
já estamos recarregando E também há
outra condição agora, quando eu disparo minha arma. Também quero ter
certeza de que realmente
tenho MO extra ao recarregar Porque você pode imaginar
aqui, por exemplo, digamos que eu tenha 15 balas e eu tenha zero
como balas extras Na verdade,
também funciona se eu recarregar, se eu disparar com as armas ou atirar no MO e
ele chegar a zero, ele realmente recarregará Eu tenho que perguntar aqui
se eu tenho MO extra. Do jeito que fazemos isso de novo, vamos pegar a arma rápida e dizer: pegue o MO extra de
corrente. Se isso não for igual a zero, igual a isso não é igual a zero, então queremos seguir em frente
e fazer tudo isso. Deixe-me conectar isso
aqui e conectá-lo. Estamos apenas nos certificando de que realmente
temos MO extra. Antes de recarregarmos,
deixe-me levar esse colapso para uma
função novamente e
chamá-la MO extra
novamente, tornando-a pura Vá em frente, vamos colocá-lo aqui. E leve isso aqui também. Tudo bem, vamos
continuar e compilar. Eu acredito que foi isso. Vamos clicar em jogar. E talvez estejamos
perdendo alguma coisa. Temos que experimentar o
jogo clicando em jogar. Agora vou saquear meus quatro e vou
atirar com minha arma Como você pode ver aqui, se
eu segurar meu mouse, na verdade
ele não vai mais
atirar, vai parar de atirar. Então, estou segurando meu mouse. Ele vai parar de
fotografar automaticamente. Eu continuo atirando
aqui, sem balas. Também está fazendo isso agora. Por algum motivo, na verdade,
não está calculando corretamente. Quando eu tiro minha arma
com menos de 20 balas, na verdade
ela está se apagando. Acho que também aconteceu na lição
anterior. Deixe-me dar uma olhada no
que está errado aqui. Deve ser algo aqui
em cima quando subtraímos a bala Porque sempre que
filmamos, estamos fazendo isso. Não está aqui porque
estamos entrando e
disparando a arma. Acho que é algo
dentro daqui. Estamos considerando o MO
com menos um, porque escrevemos um
aqui que está sendo definido aqui E defina o
MO atual em sua configuração para a
variável correta aqui. Essa é a errada. Estamos definindo o máximo
para o MO extra atual. Se o seu MO extra atual for um, este na verdade será definido como um automaticamente. Há um erro aqui. O que precisamos fazer, vamos fazer isso, sim, vamos pegar isso aqui, digamos variável de nome. Vamos trazê-lo aqui.
Vamos obter informações sobre armas. Obtenha as informações da arma
como antes. Divida e este
é o MO atual. E vamos pegar o Max MO e a
revista e colocá-los aqui em vez disso Não vamos usar esse, vamos usar esse
ali em vez disso. Deixe-me clicar aqui e
ocultar os pinos desconectados. E isso deve funcionar perfeitamente. Agora, o bug deve ser corrigido. Acredito que isso também tenha acontecido na lição
anterior. Então, clicando em Play,
vamos fazer isso agora. Eu só vou atirar em
todas as balas. E mostre agora que estou filmando as balas finais,
recarrego e Você pode ver que agora está correto. Não consigo
mais atirar quando estou com zero balas e tudo
está funcionando perfeitamente Agora eu tenho que verificar isso
para o cliente também. Lembre-se de que você
precisa verificar o cliente, mesmo que ele funcione no
servidor, pode estar errado. Quando eu largo essa arma
agora e a pego, você pode ver que ela realmente tem a
quantidade correta de balas Quando eu tiver dez balas sobrando, nove, eu posso soltá-las Eu posso pegá-lo. Tem a quantidade
correta de balas Se outra pessoa
vai saqueá-lo
agora, eu também tenho que testá-lo
com o servidor Se eu simplesmente abrir
o servidor aqui e minimizar os dois aqui como servidor, posso soltar a arma
quando o cliente for embora. Aqui, como servidor, eu
vou buscá-lo. E se eu maximizar isso, na verdade
é a
quantidade correta de balas Se eu atirar como servidor, agora faltam quatro balas Aqui, como cliente, eu posso ir buscá-la e faltam quatro balas.
OK. Isso está correto. Tudo
parece funcionar perfeitamente. E
também faz isso para o AK. Vamos tentar disparar algumas das
balas aqui também. Tudo está funcionando bem. Ok, consertamos toda a caixa. No momento, tudo
está funcionando corretamente. Vamos fazer o recarregamento com a tecla do teclado
na próxima lição
149. 10.20 Recarregar arma com chave do teclado: Tudo bem, então vamos continuar e recarregar com o teclado Então, vamos seguir em
frente, como antes, vamos ao
player e ao Input. E clique com o botão direito
aqui, vá para a entrada, faça uma nova ação de entrada. Vamos chamar isso de arma
de recarga. E vamos abrir este,
na verdade, apenas o contexto de
mapeamento. Vamos adicionar um novo mapeamento. Vá até o final, selecione a arma de recarga e pressione a tecla R. Vou recarregar
com minha tecla R
no teclado e
depois pressionar aqui, só
tocamos isso uma vez e será
muito mais otimizado Ok, aqui com o
conjunto está a arma de recarga. Eu só vou
chegar aqui em cima. Eu recarrego a arma e
vou fazer com que essa seja minha ação de entrada simplesmente
quando pressionamos a tecla R, só
queremos dizer que o set
está recarregando para ser verdade Só queremos recarregar
sempre que pressionamos o botão. No entanto, lembre-se
de que você precisa de algumas condições porque não
quer apenas recarregar Porque agora,
se eu apenas jogar, posso simplesmente pressionar
R. Agora, por exemplo, vamos pegar isso. Eu posso simplesmente pressionar R, mesmo
que eu tenha balas cheias. Eu posso pressionar um R.
Isso não faz nenhum sentido. Na verdade, posso pressionar um Re. Sempre que não temos
nenhuma arma equipada, eu também posso pressionar R
e isso nos dará Bucky. Nós não queremos fazer isso. Primeiro, precisamos pegar
esse tipo de arma equipada e queremos ter certeza de que não
é igual a um braço. Vamos arrastar a partir daqui
e dizer que não é igual a M e garantir que não
seja igual a D. Ok, então essa é a primeira coisa. Vamos arrastar
a partir daqui e dizer ouro, porque precisamos
adicionar alguns deles. A próxima coisa é que, se já
estamos recarregando, não
queremos pressionar recarregar, então vamos encontrar
nosso lingote de recarga
e dizer N valentão Se não estivermos recarregando,
podemos prosseguir e recarregar aqui. Ok, então vamos adicionar
um novo pin novamente. A última coisa que eu quero perguntar é se eu tenho balas cheias Se, por exemplo, digamos que
eu tenha 30 de 90, por exemplo, aqui, como o AK, não
quero recarregar porque tenho balas cheias no meu Mac Basta dizer, vamos pegar essa arma equipada e
pegar a atual M. Vamos, na verdade,
copiar e colar a estrutura. Eu não quero escrever isso de novo. Vamos colar essa estrutura aqui
embaixo para a arma. Deixe-me conectar a arma
equipada a ela. Agora vamos perguntar,
esse MO atual é em mag, isso
é igual ao MO em Ma Porque se eles forem
iguais, significa que temos MO
total em nosso Mac e realmente
não precisamos recarregar Eu digo que é igual. Se o MO atual não
for igual ao MO
máximo e eu,
podemos prosseguir e recarregar Caso contrário, não recarregaremos. Ok, deixe-me
colocá-lo por trás de
tudo isso e
vamos conectar isso a uma ramificação e vamos
conectá-los juntos. Agora estamos perguntando, estamos
dizendo que se não estamos,
se não estamos recarregando e se ainda não
temos a quantidade total de balas no MO atual e em mim, podemos
prosseguir e Vamos tentar fazer
isso. Vamos compilar, salvar tudo
e clicar em Plate Se eu clicar em R no meu teclado, podemos ver
que realmente estou recebendo um erro. Deixe-me dar uma
olhada no que está acontecendo aqui agora. Só está dizendo
que a era é essa. Se eu escrever spam
R aqui e sair, isso realmente me
mostrará em que época
a arma equipada não
é válida. Na verdade, preciso que
isso seja válido primeiro, deixe-me arrastar tudo isso. Deixe-me pegar a arma equipada, clicar com o botão
direito do mouse e
converter em uma obtenção validada Deixe-me conectar isso. Garantimos que a arma
seja válida antes de fazer tudo isso, porque quando
não saqueamos nada antes, se pressionarmos R, ela não
será válida Agora não estamos mais pegando
esse bug. Vamos pegar uma
das armas agora. Se eu pressionar R, agora vou recarregar porque
tenho MO completo Mas se eu atirar em um e recarregar
, posso continuar e
recarregar desse jeito E vai calcular
o MO corretamente. Agora você pode ver que deveria
dizer 39, isso é correto. E se eu fotografar quatro
delas e recarregar, devo dizer 35 como o MO
extra correto Agora, sempre que eu atiro
todas as minhas balas, digamos que ela seja
calculada Agora deixe-me atirar em
três deles e recarregar. Deveria dizer 12,
isso é correto. Agora, digamos que eu recarregue aqui sempre que tiver
cinco, digamos 170 Isso também está correto.
Agora, se eu atirar em todos eles, ele não vai recarregar E se eu clicar em R, agora ele será recarregado Existe essa última condição
que precisamos verificar. Precisamos verificar
se temos mãe extra. Isso também tem memória extra
antes de podermos recarregar. Agora, todas as caixas estão consertadas. Agora, também não podemos
recarregar sempre que
tivermos zero
balas nos carregadores extras Eu vou mover isso um pouco para baixo. Vou reorganizar isso um pouco mais tarde, quando
terminarmos a seção Então, vamos salvar tudo e passar
para a próxima.
150. 10.21 Recarregar arma na troca de armas: Ok, então o problema é que agora também
queremos recarregar, sempre que estivermos trocando
de armas Agora você pode ver
aqui se eu tenho zero balas e
troco minha arma, deixe-me
pegar rapidamente uma pistola e trocá-la Agora você pode ver
se eu voltar, esta é a animação de captação. Não é a recarga no momento. Estou tentando atirar
e não consigo atirar. Estou tentando recarregar
e não consigo recarregar. Isso ocorre porque aqui, quando
recarregamos a arma, na verdade
estamos
configurando a recarga para ser verdadeira sempre que recarregamos No entanto, se cancelarmos
a animação, reproduzimos a montagem da animação No entanto, na verdade
não o estamos concluindo. Isso nunca será definido como falso. É por isso que, na verdade, está
funcionando de alguma forma. Quando trocamos a arma, precisamos configurá-la como falsa
e recarregá-la automaticamente Na verdade, podemos fazer isso
com a arma equipada. Sempre que saqueamos uma arma, configuramos esse conjunto como arma
de equipamento como verdadeiro Também fazemos isso sempre que o
equipamos manualmente. Além de
pegá-lo, também estamos configurando este conjunto como arma
equipada Lembre-se de que fizemos
isso aqui embaixo. Deixe-me clicar aqui, Ocultar pinos desconectados.
Estamos fazendo isso aqui. Sempre que configuramos a arma
equipada e terminamos de
equipar a arma Vamos continuar e
fazer essa
recarga automática sempre que estivermos sem mais automaticamente Digamos que a recarga
é falsa porque precisamos configurá-la como falsa sempre que o jogador estiver realmente
trocando a arma durante
a animação de
recarga Sempre que terminarmos
de equipar a arma, automaticamente
definiremos a recarga Também vamos
recarregar a arma. O aparelho está recarregando. Sempre que não
temos mais MO, precisamos verificar se
o jogador está fora
do MO e se
o jogador tem MO extra? Porque se você não
tiver MO extra, não
faz sentido recarregar Precisamos desses dois e precisamos
fazer um galho também. Depois disso, podemos ir
em frente e recarregar. Antes disso, não podemos recarregar, precisamos definir o
recarregamento como verdadeiro Se não tivermos isso, não
vamos recarregar nem fazer nada, apenas certifique-se de que a
recarga esteja configurada para cair Porque quando você o interrompe
aqui durante o recarregamento, quando interrompe a montagem, você nunca vai configurar isso
para cair e seu código
vai sair Agora que isso foi corrigido,
vamos experimentar. Vamos tentar jogar aqui
como terrorista. Eu vou pegar os quatro
e vou atirar se eu trocar
a arma agora. Agora, lembre-se de que a
primeira animação que ele reproduzirá é
a animação do equipamento. Não é a recarga, então ela
precisa ser recarregada desse jeito. Agora recarrega
automaticamente sempre que não
tenho mais balas quando eu
o troco Ok, como você pode
ver, agora eu recarrego. Eu troco a arma
e a troco de volta. Agora eu posso pressionar R e
ele realmente recarrega. Não falha,
assim como antes. Vamos experimentá-lo.
Vamos tentar novamente. Se tivermos, temos zero
balas e eu troco de arma, ela não deve recarregar
e não recarrega Agora tudo está
funcionando perfeitamente.
151. 10.22 Adicionando tiro de pistola: Até agora, trabalhamos
com o rifle e agora vamos atirar com
a pistola Isso é muito fácil porque já
fizemos a configuração. Vamos até a
base de jogadores daqui. O que estamos fazendo agora
aqui na arma de tiro, quando estamos atirando com a arma, estamos apenas indo em frente
e jogando,
o cronômetro está repetindo o código
e estamos disparando o Agora, quando temos uma pistola
que queremos atirar, não
queremos usar esse cronômetro porque não queremos
repetir tudo Só queremos disparar um
tiro porque é uma pistola. Obviamente, se você tiver
uma pistola automática, poderá usar esse sistema novamente porque é
uma pistola automática No entanto, é apenas uma pistola e eu só quero
disparar uma bala Eu não quero executar esse cronômetro. O que podemos fazer aqui
é que podemos, na verdade, partir desta,
pegar o tipo de arma aqui. Já temos o tipo de arma. O que você pode fazer é arrastar a partir daqui e dizer ativar a enumeração Podemos ver com qual tipo de arma estamos atirando atualmente Você pode sair e
se conectar. Quando estamos atirando com um rifle, queremos jogar esse cronômetro Quando estamos atirando
com uma pistola, não
queremos fazer
nada porque lembre-se de que já estamos
disparando uma bala Já estamos executando
todo esse código aqui. Já estamos
executando tudo isso aqui com esse tiro
inicial de arma, porque o chamamos aqui. Na verdade,
acho que você acabou . Vamos clicar em jogar. Então, foi muito fácil
, basta clicarmos, vamos experimentá-la para
o cliente aqui. Agora eu posso ver aqui, eu não consigo mais atirar. Só estou atirando uma
bala. Eu acredito que sim. Porque aqui estamos configurando
isso, podemos atirar novamente. Estamos fechando este. Estamos fazendo esse código uma vez e sempre que
disparamos uma bala, na verdade não
estamos fazendo mais Isso ocorre porque aqui,
quando é falso, lembre-se de que já configuramos
a arma de tiro como falsa. Por que ele faz essa foto de novo? Tente responder
você mesmo, se puder. Sem minha ajuda. Agora, eu
posso te dar a resposta. O problema agora é
que nunca entramos nesse cronômetro. Este nunca será válido. Aqui. Estamos perguntando, isso
é válido? Isso será falso porque nunca
executamos esse cronômetro. Agora, levando a pistola até aqui
das cataratas, você precisa conectá-la
para poder atirar novamente. E vou fazer algumas anotações sobre Mirarte e
agora deve funcionar. Se eu compilar agora e
clicar em reproduzir selecionar terrorista novamente
e pegar minha Agora você pode ver que eu posso realmente
disparar minha pistola sem nenhum problema e tudo está funcionando como deveria
152. 10.23 Parando de filmar VFX na troca de armas: Mas agora temos um problema. Se eu jogar como servidor, por exemplo, na verdade
vamos jogar como cliente. Se eu jogo como cliente, você pode ver, tente dar uma olhada em mim aqui
no servidor. Você pode ver aqui, você pode ver quando eu atiro
e troco de arma. Se eu simplesmente atirar
e trocar de arma, eu posso realmente atirar com a
arma ainda no chão. E o flash do focinho
está ao lado da minha perna. E veja, parece muito estranho. Cat, atire na minha arma e troque, e fica
assim e está tudo
como se estivesse grampeado. Na verdade, temos que
parar de atirar sempre que trocamos a arma porque não
queremos fazer isso. Vamos prosseguir e
fechá-lo. A primeira coisa
que quero fazer aqui a arma quente agora é cancelar a arma quente sempre que soltamos o botão
do mouse No entanto, também quero
cancelá-lo sempre que isso não for verdade. Sempre que estamos recarregando
ou equipando uma nova arma, ou vamos para o estado desarmado, eu realmente quero parar de
atirar Vamos copiar esse. Cole isso. Vamos conectá-lo a este. Aqui, deixe-me afastar isso
um pouco. E aqui está. Estamos cancelando a arma de tiro sempre que uma
delas não for verdade. Na verdade, podemos clicar em jogar e
ver como ela é Novamente, vou
jogar como cliente e vou
dar uma olhada aqui na minha tela grande para
ver como é. Então, se eu simplesmente atirar e trocar, agora ele para. No entanto, você pode ver que
ainda há um flash de focinho tocando Quando eu troco, você pode
vê-lo no chão. Ele não é registrado muito rápido. Se eu atirar e trocar, você
pode ver que ainda está tocando, aquele focinho
pisca no chão que ainda parece cheio de
bugs no Então, precisamos corrigir isso. Ok, vamos fazer isso aqui. Se encontrarmos o flash do cano, vou limpar tudo
isso depois desta seção Precisamos
limpar isso antes de
continuarmos , para que seja mais fácil
trabalhar com o flash do focinho aqui
embaixo, onde eu também toco
o efeito sonoro Aqui, para o flash do focinho, na verdade
vou
escrever clique e promover esse emissor
que criamos uma variável e vamos
chamá-lo de emissor do focinho Vamos conectá-lo aqui. Novamente, vou tocar
o som só para ver como é
com o som também. Vamos compilar, ok, agora temos esse flash de focinho Agora precisamos parar esse flash de
focinho em algum momento. Precisamos encontrar uma parte
inicial aqui no código. Quando podemos cancelar esse flash de focinho logo no início do código
para torná-lo maluco? Talvez quando estivermos
equipando a arma. Se eu simplesmente subir aqui e tentarmos encontrar uma arma
equipada aqui, quando estamos trocando
a arma aqui, verdade não
fazemos isso Porque aqui, para a arma
equipada, você está tentando procurar
a arma no inventário. Se você não o tem
no inventário, se isso for falso,
na verdade você não está fazendo nada. Realmente não
faz sentido parar o flash do cano se você
não tem nada no inventário e
não está trocando a arma aqui na arma
do Quip. Acho que vou fazer isso
aqui sempre que eu realmente encontrar a
arma no meu inventário porque agora meu
personagem está trocando para outra arma aqui. Quero pegar meu emissor de
flash de focinho e clicar com o botão direito do mouse e dizer
converter em um get validado Então eu vou
conectá-lo aqui. Se for válido, deixe-me afastar um pouco todo esse código
para que eu possa trabalhar aqui. Sempre que for válido, vou arrastar e
dizer destruir componentes, destruir um componente e
depois continuar. No entanto, se não for válido, eu só quero continuar. Eu não quero
destruir nada. Se não for válido,
vá em frente e continue o que
você fez antes. Vamos dar uma olhada
aqui na carne do focinho. O que eu vou fazer é levar isso aqui. Antes de fazer isso, na verdade,
aqui também podemos dizer que você não pode fazer isso sempre que estiver
equipando a arma Sempre que você o estiver
equipando aqui. Quando dizemos que configurar
uma arma é equipar uma arma, precisamos parar de
atirar Se eu pegar essa arma, se eu puder encontrá-la aqui, essa. E eu posso pegá-lo
e colocá-lo aqui. E novamente, certo, não puxe
e eu posso conectá-lo. Se você também não estiver
equipando
a arma , pode atirar Vou copiar tudo
isso e colar logo antes do local
do emissor Na verdade,
antes de fazer tudo isso, vou verificar se você
ainda pode fazer isso. Tudo bem. O que também precisamos
fazer aqui, eu acredito. Vamos até aqui com a
arma encontrada no inventário. Porque quando você encontra uma
arma no inventário, não quer mais jogar
muzzle flash aqui. Também podemos verificar antes de tocar o emissor e evitá-lo Podemos pegar essa arma encontrada no inventário e colocá-la
aqui, pegá-la aqui. Além disso, eu o configurei para replicá-lo. Não foi replicado. Eu o configurei para replicá-lo porque lembre-se de que agora
estamos no cliente, estamos no multicast, e isso também é
usado pelo Você precisa replicar
a variável para que o cliente
saiba do que estamos falando Deixe-me escrever lingotes, sempre que não for
encontrado no inventário, podemos atirar
ou jogar esse emissor, seja como for encontrado
no Acho que isso é um salva-vidas
para nós, porque
é jogado logo no início, sempre que
trocamos a arma Essa é a primeira variável
que está sendo alterada. Ele está detectando isso logo no início e não toca
o flash do focinho Espero que precisemos testar
constantemente, porque na
verdade não sabemos antes de testar Vamos jogar como
servidor agora, na verdade, vamos
jogar como cliente Como cliente
aqui em cima, deixe-me jogar. Agora vou dar uma olhada
aqui no meu servidor novamente. Se eu fotografasse como
cliente e trocasse, tentei fazer isso algumas
vezes, só isso. Há muitas verificações
que estamos fazendo. Isso é necessário para não
reproduzir esse efeito de bug. Agora, isso não está realmente
afetando o jogo, no entanto, ainda o está
afetando visualmente. Não afeta o
dano nem nada porque,
na verdade, isso não é jogado. Isso é interrompido logo no início. Na verdade, não estamos
prejudicando o jogador. Lembre-se de que estamos causando dano
ao jogador após a corrida em linha. É apenas um bug visual do
qual nos livramos. Tudo bem, vamos continuar
e compilar tudo. Vamos salvar tudo e
passar para a próxima.
153. 10.24 Animação de tiro: Agora precisamos de uma animação de filmagem porque, no momento, o
player está estático. Sempre que filmarmos,
vamos adicionar uma animação. Vamos aos recursos
e animações. E aqui estão todas as
animações que criamos antes. Se você apenas procurar por tiros acho que na verdade
isso se chama fogo. Se apenas procurar fogo, você poderá ver a
pistola de fogo e o rifle de fogo Essas são as animações
que podemos usar para adicionar sempre que o jogador
estiver atirando com a arma Para esses dois, vou
pegar os dois. Acho que não precisamos do C, talvez precisemos mais tarde. Não tenho certeza
agora. Mas vamos usar esses por enquanto. E vamos voltar a
eles se precisarmos deles. Vamos clicar com o botão direito aqui, ir para Criar e criar uma
montagem de animação como antes Para esses dois aqui, agora criamos duas montagens de
animação Vou renomeá-los, remover a montagem do final No início,
vou chamá-lo prefixo apenas para
manter a consistência com nosso código
atual no momento Deixe isso e chame
esses outros 11 também. Se eu apenas pesquisar para
ver as montagens da animação. Eu posso clicar na pistola primeiro. Isso é uma recarga.
Estou clicando no fogo
da pistola,
é esse aqui E o que podemos fazer aqui novamente é mudar a
ranhura para a parte superior do corpo, assim como fizemos antes. Nome do slot, parte superior do corpo como esta. E vamos fechá-lo. E vamos abrir
o rifle também. Mude para a parte superior
do corpo, assim. Ok, e salve tudo agora. Vamos fechá-lo. Ok, o que precisamos
fazer agora reproduzir essa animação. Sempre que disparamos a arma, precisamos
adicioná-la novamente à nossa estrutura. Vamos voltar às plantas. Vou remover essa palavra de
pesquisa para que possamos ver. Vou até as estruturas e abrir as informações da arma. O que podemos fazer aqui é adicionar uma variável chamada animação de
filmagem para esta. Agora você pode ter uma animação de
tiro diferente para cada arma.
Isso é muito legal. Tudo é personalizado
nesta animação de filmagem. E eu vou tê-lo logo após a recarga ou
logo antes da recarga Equipe, atire, recarregue. Ok, vamos
compilar ou simplesmente salvar aqui. Vamos abrir nossa tabela de dados. Mais uma vez, aqui dentro
da nossa tabela de dados. Mais uma vez, vamos ver
aqui a animação do equipamento. Deixe-me adicionar uma nova
à direita e chamar isso de animação de filmagem
única. Agora podemos minimizar
isso aqui no jogo. E vamos encontrar nossa
montagem novamente. Se eu procurar um e pegar esse rifle de fogo,
copie a referência E deixe-me voltar
para a tabela de dados. Cole para os
quatro AK e M, esses são os dois primeiros. Então eu volto e
copio a referência para a primeira montagem da animação Copie a referência, eu
volto aqui e colo para
o tiro com pistola.
Ok, foi isso. Vamos clicar no
arquivo, baixar o arquivo CSV. Vamos abri-lo aqui. Vou renomeá-lo novamente como
antes. Renomeie-o para Informações sobre a arma E eu já tenho um aqui,
então, na verdade, vou
copiar esse. Exclua-o aqui e
renomeie este. Agora vamos voltar ao nosso jogo. Vamos ver plantas, tabelas de
dados aqui dentro Novamente, vou
fechar isso aqui. Você pode arrastar essa tabela de
dados até aqui. E agora está atualizado. Ok, vamos ver o código
agora e codificá-lo
na base
de jogadores daqui sempre que filmarmos. Na verdade, também está aqui se
simplesmente arrastarmos tudo isso para longe. Então, vamos reproduzir a animação junto
com
o flash do focinho e o efeito sonoro porque ainda é
apenas uma animação E precisamos jogar
em um multicast porque todos os jogadores
precisam ver essa animação Vamos pegar a malha novamente. Mais uma vez, digamos montagem. E podemos tocar essa montagem, e vamos
conectar tudo E agora o que
também podemos fazer aqui para que a
montagem seja reproduzida Agora, temos isso
da tabela de dados. Deixe-me copiar tudo isso. Cole-o aqui
e deixe-me esconder pinos
desconectados da arma Agora não temos realmente uma
referência para a arma. Esta não é a classe de armas, na verdade é apenas
a malha de armas. Você pode ver aqui.
Se você se lembra, se voltarmos para a arma quente, vamos dar uma olhada aqui na rampa
do servidor, arma Essa é a malha de armas. Essa é a malha esquelética. Lembre-se de que essa não é a classe
blueprint em si. Essa é a classe blueprint. Essa é a malha esquelética. E a malha esquelética é aquela que estamos conectando
à arma Na verdade, essa é
a malha esquelética. Não é a
classe blueprint em si. Precisamos da cláusula de projeto
porque não é realmente a malha esquelética que colocamos aqui
. É esse. Então você pode ver se eu arrastar até aqui
e conectá-lo aqui, você pode ver que se encaixa. O que precisamos fazer aqui
para otimizá-lo melhor. Na verdade, vou
trocá-lo se clicarmos
no multicast e
se clicarmos no Plus e
procurarmos a base de armas E escolhemos a base de armas, vamos
chamá-la de antiga, que eu possa
renomeá-la para arma Lembramos de compilar primeiro
antes que você possa fazer isso. Agora se chama Arma, e agora podemos conectá-la aqui. Agora podemos ver que funciona, ok. Agora, tudo isso
realmente precisa estar aqui porque eu já tenho
essa referência de arma. Agora você pode realmente obter
todas essas informações aqui para esse efeito V que
você conectou aqui. Lembre-se de que este é o tiro, você tem o efeito
sonoro do disparo e o flash do focinho E você pode conectar o
flash do focinho a este aqui. E você pode conectar o efeito
sonoro de gravação a este aqui. Você também pode conectar a animação de filmagem
que acabamos de fazer aqui. Você realmente não precisa também da arma, podemos
obtê-la daqui. Se você simplesmente arrastar a partir daqui e pesquisar a variável de arma, essa é a malha esquelética Você também pode conectá-lo aqui. Então eu posso ver que tudo
isso é realmente inútil. Então, podemos remover este, e este, e este
e sair e compilar Recebemos muitos erros porque
agora não os estamos usando. Vamos prosseguir e
excluir tudo isso. Na verdade, vamos
remover isso clicando no
botão Alt no teclado. E clicando aqui, clicando
aqui, clicando aqui. E vou remover
esse nó de redirecionamento,
removê-los, clicar aqui,
ocultar os pinos removê-los, clicar aqui,
ocultar Agora precisamos de uma referência
à arma. É essa arma aqui em cima. Eu posso simplesmente clicar
e arrastar por enquanto. Vou deixá-lo
muito mais limpo mais tarde. Então, vamos compilar por enquanto. Agora, essa
arma de tiro está correta. Ok, nós realmente não
temos mais referências agora para ter certeza se eu tenho mais
referências a isso ou não. Só para ter certeza de que não
estou desistindo, posso escrever, clicar
e encontrar referências E você pode ver que está aqui
ou aqui. Não tenho mais
referências do que isso. Ok, então está tudo bem agora. E agora também conectamos
a animação de filmagem. E eu não quero jogar
quando estiver completo, como fizemos antes. Lembre-se das outras montagens que criamos anteriormente.
Por exemplo, esse. Reproduzimos esse evento aqui sempre que concluímos
a montagem da animação Agora, para a arma de tiro, eu só quero jogá-la e
depois continuar meu código. Não quero esperar
que seja concluído antes de
jogar meu efeito
aqui. Isso é bom. Vamos compilar e
salvar tudo agora. Ele deve reproduzir a animação. Se clicarmos em jogar, deixe-me jogar
no servidor agora mesmo, e eu seleciono terrorista. Eu vou aqui e só
atiro uma bala. Você pode ver que ele está realmente
reproduzindo a animação. Agora temos um bug. Agora, se eu olhar para baixo,
você pode ver que está reproduzindo a animação aqui
no centro da tela. Você pode ver que ele vai para o centro da tela
sempre que eu fotografo, o que é muito estranho
e precisamos
mudar isso. Além disso, a
animação é muito lenta Vou até os ativos e procurarei por Anim novamente. Vou abrir a pistola
aqui para a animação
de filmagem da escala de taxas Então, quão rápido essa animação
será executada. Vou mudar para três. Acho que quero
atirar muito mais rápido. Também para o rifle, vou alterá-lo
para uma escala de três taxas Ele atira muito mais rápido. Ok, agora vamos consertar isso. Na verdade, isso também está afetando a recarga e não sei por que não percebi isso antes Acho que estava ocupado apenas conversando, gravando
e mostrando para você. Mas se você acabou de recarregar, verá que esta é a
animação de recarga que temos até agora No entanto, ele não está recarregando corretamente porque, se eu
olhar para baixo e recarregar, na verdade
ele está olhando para
o meio novamente e recarregando, exatamente como esse problema de
filmagem que
temos Ok, precisamos corrigir isso agora. Deixe-me
desconectar o som novamente, para
que não seja irritante
neste curso Deixe-me desconectar o som da gravação
e compilar Vamos abrir o plano de
animação. Porque o problema
está aí agora. O problema é que o plano de
animação é essa animação
da parte superior do corpo em camadas por osso Na verdade, precisamos jogar
isso antes do deslocamento do Aim. O desvio de mira, lembre-se, é o deslocamento em que
aqui, como jogador, eu olho para cima e para baixo com minha arma e um
movimento como esse Precisamos reproduzir essa animação da parte superior do corpo antes do deslocamento da mira para que ela
possa se misturar Esse é o problema agora, o que eu posso fazer aqui,
vamos até aqui. Vamos começar com uma
pistola agora para
esta
máquina de estado em cache Deixe-me deletar esse movimento da
pistola por enquanto. Deixe-me pegar essa camada por
osso e colar aqui. Agora lembre-se de usar o cache da máquina de estado da
pistola. Temos a
máquina de estado em cache. Se eu conseguir encontrá-lo,
temos essa máquina de estado em cache e também temos
o próprio movimento. Temos a
máquina de estado em cache e movimento em cache aqui Estamos usando a
máquina do estado agora. Deixe-me copiar e colar
aqui também. Isso é só para a pistola e vamos fazer isso também para
o rifle Deixe-me deletar isso, recortar e colar aqui. Deixe-me usar essa
máquina de estado para o rifle, lembre-se de que é a máquina do estado E copie e cole
aqui também. E vá em frente e
conecte-o aqui. Ok, então foi isso, na verdade, vamos copiar e colar isso.
Vamos copiar tudo isso. Vou deletar
isso aqui embaixo. Eu vou colá-lo. E eu vou
conectá-lo aqui também. Vamos fazer isso aqui também. Vamos copiar a pistola One
Pistol State Machine. Deixe-me deletá-lo aqui embaixo. Deixe-me copiar ou apenas
conectar isso aqui. Cole conectado aqui também. Agora estamos jogando a mistura
em camadas por osso. Antes de jogarmos o desvio de mira, essa será a solução
correta Agora estamos salvando
tudo isso no movimento
da pistola em cache e no movimento
do rifle em cache Podemos prosseguir aqui como antes,
clicar botão
direito do mouse e
pesquisar o cache. Você pode conectar o
movimento da pistola, clicar com o botão
direito do mouse e procurar o cache Pegue o movimento do rifle em cache
e conecte-o Também está muito mais
limpo do que antes e pode ser montado assim. E vamos compilar e
verificar se isso funciona ou se temos alguma caixa
que precisamos cuidar Vamos clicar em jogar aqui
como terrorista. Agora, quando eu mostro, se eu olhar para baixo, você
pode ver que está funcionando. Eu atiro para cima também. Eu
atiro no meio. Também está funcionando
para a recarga. Agora podemos realmente recarregar
enquanto olhamos para baixo. Não precisa ir
aqui para o meio. Se eu atirar, eu
recarrego, eu posso fazer isso. Se eu pegar um, se eu
abrir esse outro cara, eu dou uma olhada naquele cara aqui. Então eu posso ver a animação. Eu pego o K, como
você pode ver aqui, fotografando. Eu posso recarregar
até mesmo olhando aqui. Ou se eu olhar para baixo, também
posso recarregar. Eu posso atirar. E você pode ver minha animação de
filmagem. Se eu chegar perto daqui, você pode ver minha animação de
filmagem. E o mesmo aqui, se
eu jogar como servidor. Você dá uma olhada
aqui como cliente. Se eu maximizar isso. Então você pode ver que eu
minimizo isso um pouco. Aqui, estou dando uma
olhada no servidor e o
servidor agora está filmando. Além disso, você pode ver
a animação de filmagem. Eu posso recarregar daqui de
cima também. Também posso recarregar enquanto
olho para baixo. Agora está funcionando bem e
eles estão se misturando.
154. 10.25 Fora da munição SFX: Para esta lição, quero
mostrar como você pode reproduzir um efeito sonoro sempre que
estiver fora do MO. Sempre que você está fora do MO, você ouve esse
som de clique do rifle Você pode tentar
implementá-lo sozinho, eu acredito que você pode,
se você der uma boa olhada nisso. No entanto, se você não tiver certeza, vamos
fazer isso juntos. Vamos abrir
o player sempre que
ele for salvo aqui. Vamos abrir a
base de jogadores aqui dentro. Novamente, precisamos
usar esse multicast. No entanto, vou adicionar um valentão
aqui dizendo que não tem. Sempre que
tivermos MO, podemos jogar tudo isso. Se eu simplesmente arrastar e escrever
uma ramificação como essa aqui, sempre que
tivermos MO, tocaremos tudo
isso da mesma forma que
fizemos antes. No entanto, se não tivermos Mo, quero tocar
outro efeito sonoro. Eu quero pegar essa lata de som
daqui e dizer a localização. Que som você
quer tocar agora? Precisamos adicioná-lo à
estrutura mais uma vez. Quanto à localização,
já temos a localização. Podemos simplesmente conectá-lo aqui e compilar agora para a estrutura Vamos
abrir a estrutura e criar uma nova variável. Podemos simplesmente chamar isso
de efeito sonoro M. Vamos mudar isso para um som,
vá em frente e selecione-o. E vá em frente e economize. Acho que vou movê-lo para cima até onde está sob o efeito sonoro da
filmagem. Todos os
efeitos sonoros estão juntos. Vamos salvar tudo mais
uma vez, vamos abrir a tabela de dados. Vamos para a direita aqui no final, depois
do efeito sonoro de
filmagem. Vou clicar com o botão direito do mouse
e adicionar um à direita. Então, podemos dizer que fora do
MSX e dentro daqui, vamos apenas copiar a referência No momento, não
temos nenhuma referência porque ainda não
importamos nada. Vamos para a pasta
de áudio aqui. Abra os efeitos sonoros. Se você acessar os materiais da
causa, incluí para
você alguns áudios. Se você abrir este áudio e
eu incluí-lo a partir do MO, basta
aumentá-lo com M K 47, de MO para um e
de uma pistola MO E selecione todos os três.
Clique e arraste-os para o navegador de conteúdo. Dentro daqui, selecione
os três,
clique com o botão direito do mouse e crie várias dicas. Mais uma vez, vou
renomear todos eles apenas
para manter a consistência, nós os renomeamos para S C como
prefixo Eu também vou fazer isso com
a pistola aqui. Vamos fazer isso para o último. O último é o K 47. Vamos chamá-lo de Som no começo, desse
jeito. Ok. Vou
abrir o AK 4071. Eu também vou
abrir a pistola e vou
abrir as quatro Quero reduzir o som
porque provavelmente está muito alto para mim. Também vou colocá-lo em 0,2
para não torná-lo irritante para você
neste curso. Então
agora eu posso ouvir isso. Este é o fim dos efeitos sonoros do
MO. Agora vamos fechá-lo e
copiar as referências. Vamos clicar com o botão direito do mouse na referência de cópia do
AK. Vou voltar à minha tabela de dados para o K,
esta é a primeira. Vou colar para os quatro, clique com o botão
direito do mouse na referência
após a pistola, clique com o botão
direito na referência p
e cole aqui também Download de arquivo, download,
CSV, como antes. Abra a pasta de downloads. E dentro daqui, mais
uma vez vou
deletar o antigo,
colar no novo,
renomeá-lo e ir até as tabelas de dados e arrastá-lo até
aqui, ele é atualizado, e vamos salvar tudo Ok, vamos voltar para o jogador e
abrir a base de jogadores. Agora, para este, agora
temos isso aqui. O que podemos fazer é usar
isso a partir dos efeitos sonoros M. Vou arrastar isso aqui de volta porque realmente
não precisamos copiar e colar isso. Mais uma vez, vou
fazer anotações
reescritas sobre tudo isso. Na verdade, é melhor
dar uma a
duas aulas aqui. O que podemos fazer é tirar o efeito sonoro
do MO arrastá-lo até aqui. Agora ele
reproduzirá o efeito sonoro sempre que não tivermos MO. Agora não terminamos totalmente
porque, na verdade também precisamos definir
quando temos MO ou não. Aqui no MC, atire com a arma. Precisamos aceitar isso,
lembrar de tornar isso realidade. Esse é o
código normal que temos. E já temos MO aqui
sempre que estamos filmando. Porque estamos basicamente dando uma olhada aqui se estamos fora do MO ou não e todas essas coisas aqui aqui. E isso
será correto. Agora, sempre que não tivermos MO, sempre que isso for realmente falso, vamos tentar fazer algum código aqui. Deixe-me aumentar
um pouco. Deixe-me copiar e colar isso. Deixe-me reduzir isso
um pouco também, só para que tenhamos algum
espaço para trabalhar. Agora, para este,
vamos nos conectar aqui. Precisamos fazer o código
da arma. Novamente, vou quebrar
a mesma arma daqui de cima
e arrastá-la até aqui. E para o local,
é o mesmo local. E para o Mo, agora precisamos
ter certeza de que temos Mo, porque não
queremos jogar isso sempre que vamos aqui. Basicamente, o que você
deseja verificar que
queremos reproduzir esse som. Sempre que você tem zero balas, zero balas no Mac e zero balas nas
balas extras,
podemos realmente usar as balas extras Aqui eu acredito que já temos
uma função. Este tem Mo extra, podemos realmente usar este. Podemos dizer que
se você tem X Ramo, você vai jogar normalmente. Se você não tem Ramo, você pode reproduzir efeitos
sonoros sempre que o MO
extra for falso, então
podemos reproduzir esse efeito sonoro de
disparo. Onde estamos fora disso
deve resolver tudo. Vamos compilar e
clicar em reproduzir. Aqui eu quero jogar enquanto os terroristas continuam
atirando minhas armas Vou continuar filmando
e pular o vídeo. Ok, agora estou com
as balas finais. E se eu continuar
atirando e alcançar, se eu chegar a zero balas, vou tocar isso
sem efeito sonoro E você pode ouvir, eu
não tenho nenhuma bala. Se eu simplesmente mudar para cá e tocar os outros efeitos sonoros,
vejo que é normal. Porque lembre-se, eu desconectei
o efeito
sonoro da filmagem agora Se eu chegar a zero balas, você pode ouvir que eu
tenho zero balas Então é assim que podemos fazer isso. Vamos compilar e salvar tudo
como antes de continuar. Agora, na verdade, vou
limpar tudo isso
antes de continuarmos, porque
parece uma bagunça E também é como
seguir esse curso. Deixe-me compilar
no meu tempo livre. Vou apenas
organizar tudo isso, então é muito melhor dar uma olhada. Vá em frente e crie, redirecione notas, crie
comentários e tudo Te vejo na próxima.
155. 10.26 VFX e SFX do Bullet Impact: Tudo bem, então tudo
está indo bem até agora. Acho que faltam
alguns efeitos visuais e sonoros para quando a
bala atinge alguma coisa Agora, quando estamos
jogando e eu pego, por exemplo, os quatro
e tento filmar aqui, agora estou tocando nessa parte aqui, mas na verdade não vemos nenhum efeito visual
na parte que estamos batendo, e acho que
ficará muito Vamos adicionar isso. Você pode tentar se editar
porque eu acho que você pode, se você tentar pensar
bem , vamos fazer isso juntos. Vamos aqui na base
de jogadores. Assim como antes, precisamos
criar um multicast. Agora podemos integrá-lo
aqui e adicionar mais variáveis, mas acho que vai
ficar um pouco confuso. Então, precisamos criar um novo. Como você pode ver, eu
organizei isso aqui, como você pode ver, e vou
te ensinar um pouco sobre isso. Aqui temos o gráfico de eventos. Temos o movimento básico do
personagem que fizemos e finalizamos. E nós realmente não tocamos nele há muito tempo. A propósito, adicionei as funções a gráficos
diferentes Isso ocorre porque se você cria muito código dentro de um gráfico, ele realmente começa
a funcionar, talvez você
já consiga senti-lo no seu
computador. Começa a acontecer. Quando você olha aqui dentro
, o que você pode fazer, por exemplo, digamos que eu queria esse agachamento especificamente
em outro gráfico Eu só controlo x para virar aqui
, controle x. Então eu crio um novo gráfico
chamado, por exemplo, agachamento É porque um evento é chamado de agachamento.
Então eu não posso fazer isso. Vamos chamá-lo de
gráfico de eventos crouch ou algo parecido Então, dentro daqui, agora eu estou. Dentro do
gráfico de agachamento, eu posso controlar V, e aí está, eu
tenho o Agora, por alguns motivos, você pode ter funções
que não estão sendo coladas Deixe-me clicar
no controle Z aqui, controle Z, no controle do controle
Z até que esteja aqui. Às vezes, o que acontece
é que, se você copia algo, digamos que eu queira copiar
essa parte, controlar X, criar um novo gráfico, chamá-lo de algo aleatório e depois copiar e colar. Agora eu posso ver quando você cola,
isso aparece e diz que algumas referências de funções
não puderam ser resolvidas
no novo contexto. Você gostaria de consertá-los aqui? Então você pode escolher algo. No entanto, você não
quer fazer nada aqui, basta clicar em Confirmar. Ao clicar em Confirmar, você pode ver que
há muitos erros aqui que precisam ser corrigidos. No entanto, não
pressione em nada. Você pode simplesmente clicar em Arquivo e,
em seguida, clicar em Atualizar todos os nós E isso resolverá
tudo para você. É assim que você copia e cola o código de um
gráfico para outro. Vou clicar nos
controles apenas para
voltar ao que eu tinha
antes, assim. Isso é o que eu
fiz. Acabei de copiar daqui e fiz um novo gráfico Eu fiz um chamado Lot
Equip and Drop Weapon. Aqui está minha lógica de Lot and
Dropping Weapon. E minha arma Equip Logic. Eu também adicionei alguns
comentários para você. Quando eu lhe
apresento o projeto final, você pode tentar dar uma
olhada nele e é muito melhor vê-lo
do que ficar confuso. Como você pode ver aqui, essa é
a arma do lote e assim por diante. Sim, isso é
tudo. O último gráfico que fiz foi a arma de tiro
e recarga Essa em que temos
a lógica da arma de tiro. E eu tento
organizá-lo da melhor maneira possível. Aqui está a transmissão múltipla da
arma de tiro, então eu também tenho a
arma de recarga E aqui está a lógica para isso. Muitas barreiras para se
manter organizado, com vários gráficos de eventos Temos o
gráfico de eventos normais apenas com o movimento. Você não pode renomear este, este é o padrão,
você não pode renomeá-lo No entanto, eu criei os outros
e os renomeei para Saquear, Equipar e entrar e atirar
com a arma aqui. Recarregue também. É muito melhor se manter
organizado e podemos encontrá-los muito melhor mais tarde. Também criarei
categorias para todas elas, como mostrei
na lição anterior. Você pode criar categorias
e adicioná-las aqui. Provavelmente é bom
fazer isso para todas essas e também para todas
as suas funções. Fora isso,
vamos para a filmagem e recarregar. Na filmagem e recarga, aqui
temos esse multicast tocamos o emissor aqui
com o flash do focinho No entanto, vamos criar um
novo para o impacto. Clique com o botão direito do mouse e crie novos eventos personalizados
como antes. Vamos chamar isso de
MC bullet Impact. Vamos executá-lo também por meio de um
multicast e confiável. Agora, o que precisamos
saber é, claro, que precisamos da arma da qual
estamos atirando. Também precisamos do local do ataque. Onde é que queremos
gerar nosso emissor? Este é o lugar em que estamos atingindo o local de ataque da arma É a base de armas. Vá em frente,
selecione-o e compile. Ok, onde você
quer jogar isso? Queremos jogar isso
sempre que filmarmos. Essa é a lógica do tiro. Estamos atirando na arma primeiro, interpretando o efeito e depois reproduzindo
o traçado de linha. Lembre-se do traçado de linha, se eu selecionar o tipo de depuração para ser persistente para
que você possa ver a linha, essa é a linha quando estamos filmando, esse é
o traçado de linha Está filmando essa linha. Agora sabemos onde
estamos atingindo com esse traçado de linha depois de realmente
atingirmos alguma coisa Isso é o que significa: Bloquear golpe depois de realmente
atingirmos alguma coisa. Queremos reproduzir esse efeito. Então, vou
deletar esse olá por enquanto. Vamos reproduzir esse MC Bullet
Impact que acabamos de criar. No momento, temos
um pequeno problema porque é um golpe de bloqueio. E aqui também diz que o ator de sucesso tem
o técnico. No momento, é
só jogando isso para os jogadores que
precisamos corrigir isso. Em vez de
combiná-los, vou deletar isso. Vamos pegar o bloqueio
aqui e conectá-lo. Vamos fazer um galho e
ir em frente e fazer isso. Se for o jogador,
você pode fazer alguma coisa. Se não for o jogador,
você pode fazer outra coisa. Então, em vez de apenas adicionar aqui, temos que reproduzir esse efeito. Nós realmente não nos importamos se é o jogador que
foi atingido ou não Nós apenas jogamos esse efeito de qualquer maneira. Porque se você bater em uma parede, você vai
reproduzir esse efeito. Se você bater no jogador, você
vai jogar esse efeito. Mas realmente não precisamos
conectá-lo depois
do player aqui. Assim, podemos conectá-lo
antes do player. Eu só vou dar um
pouco de espaço aqui. Podemos adicioná-lo antes do jogador. Acho que também precisamos
saber quem atacamos. Porque se atingirmos o jogador, queremos jogar sangue em vez de apenas um decalque ou
pedra que atingimos aqui Para este, vou
adicionar um novo. Vamos chamá-lo de hit Actor. Para o ator de sucesso,
você pode ver aqui. Agora, se você está confuso o tipo de variável precisa adicionar, basta ir até aqui. E esse ator de sucesso. Se você
segurar o mouse sobre ele, ele diz Actor Object Reference. Vamos até aqui, clicar
nele e mudar isso para uma referência de objeto ator aqui. Este, podemos simplesmente colocá-lo
acima disso aqui e compilar. Ok, agora também temos essa
informação. Agora, para a arma, você
precisa conectá-la. A arma está
aqui em cima, então você pode simplesmente clicar e arrastá-la até aqui. E deixe-me criar
algumas
notas de rota traseira para me manter organizado.
Ok, vamos lá. Agora nós criamos isso.
Isso está fora do caminho. A próxima coisa é o sucesso. O ator de acerto é apenas
esse local de acerto se você clicar na seta, para que você possa ver todos
os valores, esse é o local que
atingimos. Depois de termos um hit de bloqueio, pegamos esse local de hit aplicamos
a esse multicast Vamos minimizar
isso um pouco novamente, e aqui está. Vou conectar
isso mais uma vez. E depois de atingirmos o jogador, podemos aplicar algum dano. Agora o que podemos fazer, sim,
podemos ir até aqui. Agora. Nós realmente não temos
nada para fazer lá fora. Vamos gerar o emissor
no local. Vamos gerar o
emissor em um local. Também tocaremos
som no local. Agora, se você quer ter decalques, se já jogou
Counter Strike antes, sabe que os decalques aparecem na parede. Se
você atirar na parede. Eu realmente não tenho
decalques neste curso. No entanto, se
quiser, você pode novamente arrastar a partir daqui e dizer
desova o decalque no local Isso vai gerar decalques. Os decalques são
basicamente imagens. Você pode gerá-los na parede. Por exemplo, se uma
bala atinge uma imagem, você pode gerá-la por meio de
um decalque de desova Já temos a localização
aqui para a localização, o tamanho
do decalque, você pode fazer 111, por exemplo, ou qualquer outra coisa Aqui você pode
selecionar novamente o decalque dependendo do que
está na estrutura Você pode adicionar os decalques
à estrutura da arma específica e assim por diante, mas eu realmente não tenho um decalque, então vamos excluí-lo Isso será fácil para você
fazer depois de termos feito tudo isso 100
vezes. Vamos excluí-lo. Agora, aqui para esse emissor de spawn, agora precisamos do emissor, também
precisamos do Vamos fazer isso. Vamos salvar tudo,
vamos minimizar isso. Vamos para a estrutura agora. Abra-o e aqui
vamos adicionar duas variáveis. Vamos adicionar um chamado
Bullet Impact VFX. Vou abrir
um espaço aqui, verdade não
precisamos
juntá-los ,
Bullet Impact VFX E eu também vou adicionar
outro, Bullet impact. X, um para o efeito sonoro e outro para o efeito visual. Para o efeito visual,
é um sistema de partículas. E vá em frente e selecione isso. Para o próximo, o
efeito sonoro é uma sugestão sonora. E Deus, e selecione isso
também para o efeito sonoro. Eu vou sim,
logo após o efeito sonoro da
filmagem. Então, só para me manter organizado
e para obter o efeito visual, vou movê-lo
logo após o flash do focinho Vá em frente e salve tudo. E lembre-se de
que agora precisamos adicioná-lo ao que é
chamado de tabela de dados. Vá em frente e
abra sua tabela de dados. Tudo bem, então aqui estou eu,
dentro da minha tabela de dados. E agora, para esses efeitos de impacto de
bala, é depois do flash do
cano Vou adicionar uma
coluna à direita. Vou chamá-lo
do mesmo nome aqui. Eu posso simplesmente copiar e colar isso. Vamos para o lado
e colamos aqui. O próximo também mostra os efeitos do impacto da
bala
após os efeitos de tiro aqui Adicione uma coluna à
direita e adicione-a aqui. Agora precisamos de referências a. Agora, para eles, estou
usando apenas os
do mercado. Em vez de
procurá-lo na pasta, porque não tenho
ideia de onde ele está, basta clicar na pasta
Marketplace e pesquisar por Impact. E então você pode vê-los aqui. O que eu vou usar
talvez seja esse chamado
Stone Medium para o efeito de partículas de
impacto Clique com o botão direito e
copie a referência. Se eu puder encontrá-lo aqui,
copie a referência e eu posso colá-la para
os efeitos de marcador Vou apenas
colá-lo para todos eles. Eu só quero ter o mesmo efeito visual de
impacto de bala
para o efeito sonoro Agora acredito que temos
algo chamado impacto
do rifle aqui Vou
clicar duas vezes nele e reduzir o volume para 0,2 porque
acho que está muito alto. Na verdade, é o corpo, é quando atingimos o jogador. Na verdade, também vamos adicionar
isso enquanto somos adicionados. Vamos adicionar um para o jogador. Vamos
abrir a estrutura novamente e adicionar uma nova variável. Vamos chamar isso de impacto de bala, impacto bala,
efeitos de jogador para o outro Vamos adicionar este
para o efeito sonoro. Vamos adicionar um novo. Chame isso efeito
sonoro do
Bullet Impact Player Acho que vai ser muito mais interessante
ter os dois. Vamos pesquisar novamente o sistema de
partículas. Vá em frente e
selecione-o para o outro. Som E basta movê-los para cima
novamente para ver o impacto da bala, efeito
visual e
o efeito sonoro Ok, agora eles estão nisso. Vamos adicioná-los
novamente à tabela de dados. Abra-o e faça
uma coluna aqui à direita. Faça uma coluna aqui
à direita também. Este copia e cola o nome, o outro também, copaame Aqui estamos. Agora podemos adicionar um novo efeito visual
e efeito sonoro. Vamos voltar para a pasta do
Marketplace novamente, pesquisar calor. Vamos copiar este Body one, apenas
reduzimos o
ruído do botão direito do mouse. Copie a referência e
podemos colá-la para o efeito sonoro do bullet impact
player aqui Agora precisamos daquele em que não
atingimos o jogador. Acho que essa superfície de impacto de um
rifle. Vá em frente e reduza o ruído para 0,2. Vamos jogar e ver o que
é. Ok, parece bom. Vamos clicar com o botão direito do mouse, copiar a
referência e colar aqui. Agora precisamos de um efeito visual de impacto de bala. O efeito visual
do player realmente precisa de um pouco de sangue Quando atingimos o jogador, não
tenho certeza se
eles têm um aqui. Talvez você possa procurar sangue. Nós realmente não temos um aqui. Você pode ver que só temos
aqueles metálicos. Só temos o impacto
na pedra e na madeira. No entanto, vamos apenas copiar
o metálico por enquanto. Demora um
pouco para entrar
no sistema de partículas aqui e isso não faz
parte do curso Isso será um pouco avançado demais, levará algum tempo para ser feito. Vamos copiar a faísca
aqui. Meio de ignição Vamos clicar com o botão direito do mouse e
copiar a referência. E você também pode colá-los aqui no
efeito visual deste. Agora, se você realmente
quiser entrar aqui e mudar alguma coisa,
você pode abri-la. Talvez você possa clicar em
Color over Live. Você pode clicar aqui,
aqui , nessa seta
e nessa constante. E você pode tentar
brincar com as cores. Você sempre pode tentar
brincar com isso. Torne-o mais vermelho,
para que a cor aqui, ao longo da vida, você possa
brincar com a cor. E com as setas
aqui, torne-o mais vermelho, para que pareça sangue Você sempre pode fazer
isso, ou também pode acessar o mercado da Epic
Games e baixar alguns sistemas de artigos de
sangue. Há muitos deles
dentro do mercado. Tudo bem, agora
nós os adicionamos. E vamos voltar
para a tabela de dados. E agora podemos clicar em Arquivo e
baixar e baixar
o arquivo CSV, mais
uma vez aqui na
minha pasta de download Deixe-me renomear essa tabela de
dados mais uma vez. E deixe-me ir para a pasta
de tabelas de dados. Deixe-me fechar isso por enquanto. Deixe-me arrastar a tabela de dados até aqui e atualizar tudo. Ok, agora temos
isso trancado. Vamos até o
jogador, a base de jogadores. E agora vamos
copiar tudo isso. Cole para que eu não
precise escrevê-lo novamente. Isso é exatamente o que
fizemos antes. Vamos arrastar a arma,
obter o nome da arma e as informações da
arma a partir daqui. Eu só vou esconder
os pinos desconectados. O que eu preciso deste
é o impacto de bala, o impacto de bala de efeito, o reprodutor de efeitos e
os efeitos de impacto de
bala e o reprodutor de efeitos Eu preciso deles aqui e
então eu posso ir em frente e fazer o efeito de partícula
em vez de apenas rei, por exemplo, o
impacto da bala, os efeitos Sempre podemos perguntar se é o
jogador que batemos ou não. Porque se for o
jogador que
atingimos, queremos jogar este. O que podemos fazer é
pegar esse ator de sucesso e dizer ou não entender, mas apenas o
ator tem etiqueta um pouco antes. Assim como fizemos
aqui quando atingimos
o jogador aqui. Estamos perguntando se o ator
tem o tag player, então sabemos que é o jogador. Podemos fazer a mesma
coisa aqui, dependendo se o ator
tem o tag player ou não, então sabemos que é o
jogador que atingimos ou não. Então, o que podemos fazer é
pegar isso e dizer selecionar. E podemos pegar o nó de seleção e conectá-lo aqui. Falso, não é o jogador,
então só queremos reproduzir esse efeito se
for o jogador, se for verdade, o ator
tem o tag player. Queremos reproduzir
esse efeito de jogador. Agora, ele
reproduzirá um efeito visual dependendo de atingirmos
o jogador ou não. Ok, legal. Para o local, é o local do hit Para a escala de rotação,
tudo é o mesmo. Nada realmente
precisa ser mudado. Agora, para o efeito sonoro, estou
fazendo o mesmo a partir daqui. E diga selecionar dependendo
se é o jogador ou não. Aqui, esse. Vá em frente
e conecte-o novamente. Se não for o efeito sonoro
normal do player, se for o player, o
efeito sonoro do player é igual ao do local
em
que foi atingido. Vou apenas adicionar
algumas notas de redirecionamento e organizar esse Eu adicionei algumas
notas de redirecionamento e vou salvar
tudo agora Deixe-me ir até aqui e verificar novamente se não
esqueci nada Agora, adicionamos
isso, adicionamos o efeito visual e
o efeito sonoro aqui no código Sempre que fotografamos e
realmente
atingimos alguma coisa, tocamos o efeito sonoro e também o efeito visual. E o ator de sucesso está bloqueado. A arma também está
bloqueada e o local do ataque também
está bloqueado. Vamos salvar tudo
aqui e experimentar. Vamos selecionar terroristas. Vou selecionar os quatro. Vá em frente e atire. Eu posso ouvir o som, se você
puder ouvir o som. Incrível. Ok, deixe-me desconectar essa
parte do código aqui para a arma de tiro Vou apenas desconectar a parte
do código da arma de choque Só consigo ouvir os impactos
da bala para ver se
funciona corretamente Eu só vou tirar a foto
do AK aqui. Agora você pode ver que eu estou
realmente filmando. Eu posso ver o impacto. Eu também posso
ouvir o som. Se estiver longe, não
consigo ouvir o som. Se estiver perto, você pode
ver que está se aproximando. Parece muito melhor. Se você quiser aumentar
o impacto, você sempre pode entrar aqui
e aumentar a escala. Algo como uma loucura. Você pode realmente
ver a diferença. A escala agora é dez. Eu posso
jogar, eu posso atirar em alguma coisa. E agora você pode ver o quão
louco isso realmente fica. Agora você pode ver que
o efeito parece ruim
porque é muito ampliado No entanto, acho que
um a um está bem. Se desejar, você sempre
pode torná-lo 1,5 para que seja um pouco
maior, se desejar. Mas acho que está tudo bem por enquanto. Isso é o que parece. Agora vamos remover essa linha. Nós realmente não precisamos ver essa linha de depuração para que
eu possa pressionar nenhuma Também quero experimentá-lo
no cliente, apenas
para ter certeza de que está funcionando no cliente para prosseguir e
experimentá-lo no cliente. Ok, bom. Novamente, se você quiser mudar a
cor do impacto, você sempre pode entrar
no sistema de partículas e clicar na cor E você também pode mudar a cor para isso. Mas agora você pode ver que
está funcionando muito bem
e também está
funcionando lá. No entanto, não podemos realmente
vê-lo lá porque
é muito pequeno. Aqui está. Você pode tentar, você pode ver aqui está aqui. Incrível. Parece muito bom. Bom. Ok, isso foi concluído e
eu vou conectar essa parte novamente, compilar
e salvar tudo Agora também temos o efeito de disparo, o efeito
visual e o efeito
sonoro. Novamente, se você quiser adicionar um
decalque como Counterstrike,
você também pode atacar
aqui e dizer Cal você também pode atacar
aqui e dizer E você pode gerar o decalque no
local, como antes. Você sempre pode selecionar aqui, criar um nó de seleção e
conectar o player. Se for o jogador que você atingiu, você não quer
gerar nada, você pode fazer isso se for o jogador ou se não for
o jogador que você atingiu Você sempre pode gerar uma
bala na parede. Você sempre pode fazer
isso. Vamos compilar e salvar tudo e
passar para a próxima
156. 10.27 Espalhe de bala: Agora, em vez de ter
todas as balas atingidas no meio do cursor, agora você pode ver se
eu atiro em alguma coisa, ela sempre atinge
o mesmo lugar Em vez de fazer isso, você pode realmente adicionar um marcador espalhado Podemos fazer isso exatamente como
em Quinzena, por exemplo. Se você pressionar o cursor, ele não está realmente atingindo
o mesmo ponto, 2047 Se você continuar atirando. Fazer isso, é muito,
muito simples na localização final do
marcador Você pode ver aqui que estamos
criando esse traçado de linha. Antes de fazer isso
, vamos pegar tudo isso, copiar e
colar aqui. Acho que vou provar isso mais tarde, porque aqui eu
não quero traçar uma linha se eu estiver
fora do MO e assim por diante. Talvez eu queira melhorar isso
removendo a sequência, porque então não precisamos
copiar e colar esse código. Podemos simplesmente adicionar essa
parte logo depois disso. Mas vamos manter isso por enquanto,
assim, e ver
aonde vamos com isso. A localização final, o que
eu quero fazer com ela, quero randomizá-la um pouco Local inicial e final. O local inicial é adequado
para o traçado da linha. No entanto, a localização final,
vamos randomizá-la. A corrida de linha não acontece sempre
no mesmo lugar. A maneira de fazer isso
é muito, muito simples. Podemos pegar essa localização
final
agora e podemos pegá-la
e dizer vetor de quebra. Agora, a partir desta,
o que podemos fazer é
desconectá-la daqui Por enquanto, exclua este, que só temos isso aqui. E você pode simplesmente clicar,
arrastar e colar aqui. Na verdade, nesta localização final,
estamos quebrando o vetor. Então eu posso ver o x, y e z, e eu posso
randomizar o valor aqui O que eu quero fazer
é usar esse chamado random float in range Agora, não temos realmente
um vetor aleatório no intervalo,
caso contrário, eu teria usado isso. Mas temos uma função chamada
random float in range. Então, ele escolherá um flutuador aleatório
dependendo de um número aleatório, dependendo do que você fornecer como valor mínimo e
valor máximo A propósito, também é
assim que você joga um dado. Você lança um dado escrevendo aqui, o valor mínimo
dos dados deve ser um, o valor máximo
dos dados deve ser seis. E então ele lança um
valor aleatório de 1 a 6 para lançar os dados. E você ganha como um número aqui. Vamos fazer isso aqui
pelo valor mínimo. Só queremos pegar
esse x e dizer, vamos escrever menos
primeiro, digamos 200 Vamos tentar 200. Então, a flutuação
máxima aqui, digamos mais 200 Ele vai pegar
a localização x, vai encontrar
um número aleatório. Damos isso x -200
Pegue isso x mais 200. Entre esse intervalo,
você encontrará um número aleatório com esse número aleatório
que queremos tornar vetor. Vamos pegar essa extremidade aqui e dizer vetor para que possamos
juntá-la novamente e
selecionar esse vetor make. Então, podemos
conectá-lo novamente ao x aqui. Basicamente, estamos apenas modificando o valor x e conectando novamente
ao vetor Vamos fazer a mesma coisa
com o outro. Vou copiar e colar isso. Talvez você também possa realmente criar uma função a partir desta, mas acho que
será desnecessário. Vamos apenas adicioná-lo aqui. E adicione o x ou o
y e o Z também. Vamos conectar o Y. Vamos conectar o
Z desse jeito Ok, agora terminamos
isso e agora ele vai encontrar uma carga e um alcance
aleatórios. E ele vai randomizar
nosso vetor
dependendo do valor que ele encontra
aqui como aleatório E deixe-me adicionar algumas notas de redirecionamento para
melhorar a aparência Ok, então aqui está. Na verdade, foi isso. Então, terminamos. Isso foi muito, muito fácil. Vamos fazer a depuração novamente e jogar só
para ver como fica Agora, aqui como terrorista, eu posso disparar minha
bala e você pode ver quando eu atirei várias vezes Não vai atirar no meio
do cursor, vai encontrar
uma localização aleatória, às vezes no meio,
às vezes fora do cursor. O que você pode ver é que não é atirar no mesmo
lugar repetidamente, é
assim que você pode
randomizar a propagação da bala Você não está filmando
no mesmo lugar. O que você pode fazer se
quiser um spread maior sempre aumentar
esses números novamente Se quiser melhorá-lo, você sempre
pode promover isso uma variável e conectar essa
variável a todas elas. E você pode simplesmente
editar uma variável e ela editará todas
elas ao mesmo tempo. Isso vai te poupar
muito tempo, mas acho que vou
mantê-lo em 200, se você quiser. Você pode aumentar a extensão da
bala e ela
será atingida no meio Mas, como você pode ver,
se eu chegar perto, será
muito mais fácil acertar. No entanto, se eu acertar longe, será mais difícil
acertar o alvo. Nem sempre estou
no meio aqui. Método muito fácil de fazer isso. E vamos salvar tudo, vamos passar para a próxima.
157. 10.28 Colocando as armas corretamente: momento, acho que estamos
no momento em que podemos simplesmente
colocar ao redor das armas, aquelas armas
que temos por aqui. Eu só vou
deletar todos eles. Você pode fazer isso rapidamente. Você pode clicar
aqui, no turno antigo, clicar no último, excluir, e eu também vou
excluir este. O que você pode fazer agora é
ver as plantas das armas. Agora você pode simplesmente
arrastá-los e colocá-los ao redor do
nível, por exemplo. Você pode colocar um AK
aqui se quiser. Você pode ativar
o snapshot aqui. Acho que vai ser
muito difícil
colocar o AK e simplesmente arrastá-lo um pouco para
cima para que não fique assim
no chão. O que você pode fazer é que eu só
queria tê-lo na parte de trás. Só estou dando uma
olhada no quão longe
estamos dessa parede. Talvez
possamos adicioná-lo aqui. Na verdade, deixe-me
arrastá-lo até aqui atrás da capa, segurar alt
e arrastar para copiá-lo. Acho que vou aumentar
esse para 500 em vez de segurar Alt
e arrastar assim. Acho que vou copiá-lo
assim algumas vezes. Aqui, aqui e aqui. Basta fazer o que
quiser para o seu nível. Você realmente não
precisa seguir aqui. Só estou fazendo isso
aleatoriamente. Agora nós temos isso. Talvez possamos adicionar um aqui
também. Agora nós temos isso. E o que você pode
fazer é adicionar um quatro no meio aqui. Talvez eu só precise
diminuir meu snapping para 100 mais uma vez aqui, acho que vou
adicioná-lo no meio Eu preciso diminuir isso
para 50 em vez disso aqui. E então aumente, vamos
pegar aqui, aumentar para 100 novamente, aumentar isso para o outro. Coloque em 500 novamente,
assim como antes. Continue arrastando assim. Agora está entre o K
aqui, aqui e aqui. E vá em frente e
continue assim. Ok, agora temos isso e se você der uma olhada, parece
bom o que você pode fazer. Você também pode colocar a pistola para arrastá-la
até o nível Deixe-me diminuir
isso para 100 novamente. E coloque a pistola, empurre-a para cima como antes, assim se quiser, você pode adicionar a pistola para
curtir todo o espaço Se eu aumentar para 50, você pode adicionar a pistola
assim a todos os espaços Deixe-me ir
em frente e fazer isso. OK. Agora, eu
coloquei as pistolas Agora você pode ver
pistolas até aqui, a K e quatro
até aqui, se quiser Na verdade, eu não quero
colocar armas na frente daqui
porque é aqui que
o jogador está surgindo Eu posso até movê-los um
pouco mais para a frente. Portanto, eles não estão surgindo
em cima das armas. Estou apenas movendo
alguma coisa para cá. Também temos que lembrar os
pontos de desova deste Basta ir em frente e
selecionar todos eles. Mova-os um passo para
a frente, assim. Além disso, para essas armas, quero selecionar todas elas. Clique no primeiro, role para cima Hold Shift e
clique no último. Além disso, tenho que selecionar
o estojo Hold Control. E eu vou apenas
selecionar todos eles aqui. E vamos clicar na ferramenta
de movimentação, segurar Alt e arrastar para
copiar todos eles. Clique em para girar 180 graus. Deixe-me
mantê-los aqui e tentar fazê-los
no mesmo nível. Portanto, é justo que os dois lados verifiquem se estão
no mesmo nível e estão agora, o que eu quero fazer agora
é arrastá-los para o outro lado e
colocá-los em algum lugar como aqui. Acho que é aqui que está
do outro lado também. Eles estão muito perto da parede. Eles também estão muito
perto da parede. Talvez mais um como esse, precisemos arrastá-los
para o outro lado. É algo aqui.
É mais um, acho que atrás de uma cobertura como essa. Agora, os dois lados são iguais. Se você clicar em jogar agora,
podemos vender antiterroristas. Agora, por exemplo, você pode
ver que eles estão no chão. Podemos pegar uma
pistola e
também podemos escolher uma
das outras armas E sim, agora
tudo está funcionando. O que você pode fazer
em vez de
pegar uma pistola primeiro
porque é irritante, talvez trocar para o rifle, você possa Então você tem o rifle primeiro e depois as pistolas atrás deles Ok, agora que você
tiver colocado as armas, você também pode
colocá-las aqui, se desejar. Você pode colocar, se você
fizer outra arma, como uma arma especial,
você pode colocá-la aqui em cima. Então você tem que subir essa
rampa para pegar essa arma. Isso também vai ser legal. Ok, então sempre que você
tiver colocado suas armas, vamos passar para
a próxima lição.
158. 11.01 Projetando a interface do usuário de saúde e armadura: Tudo bem, agora estamos na
armadura de saúde e danos,
e estamos prontos para criar
a interface de usuário de saúde e armadura Então, vamos seguir em frente
e acessar a interface do usuário. E já temos nossa interface principal, então vamos abri-la
aqui à esquerda, quero criar uma interface de
armadura e saúde Ok, então o que eu quero projetar, eu quero mostrar para você primeiro , para que você possa realmente vê-lo. Quero criar uma interface de usuário como essa. Gosto de
mostrar isso para você. Então você pode, na verdade, estamos
na mesma página aqui e você
sabe o que está fazendo. Nós estamos fazendo isso. E era assim que eu
queria ser. Novamente, o que eu disse antes, tente dar uma olhada, tente detalhá-lo. Então, você sabe, se
você quiser criar caixas
horizontais, caixas
verticais ,
sobreposições, exatamente como
fizemos antes, isso é o que
vamos criar Ok, primeiro precisamos de
uma sobreposição porque temos um plano de fundo e algo em cima dele Vamos arrastar isso para o painel da tela aqui.
E agora está adicionado. Agora clique nele. E
para o ponto de ancoragem, vou mudá-lo para o
canto inferior esquerdo e escrever 00
na posição para
colocá-lo aqui na tela para o
alinhamento do y, escrever um, agora está
aqui na posição Ok, para este,
queremos ter uma imagem, queremos ter um
lugar de fundo, a imagem aqui. Eu quero fazer com que seja
o mesmo que aqui. Em vez de apenas fazer
a mesma coisa. O que posso fazer aqui
é segurar a tecla Shift e clicar com o botão direito para copiar isso. Ou você pode simplesmente
clicar com o botão direito e copiar. Você pode ir até esta
imagem e segurar a tecla Shift e
clicar com o botão esquerdo para colá-la. Assim para
o alinhamento, basta preencher
tudo para a sobreposição Agora eu quero que ele seja dimensionado
para um conteúdo como esse. Qualquer que seja o tamanho da imagem que
temos aqui , na verdade, será automaticamente
dimensionado com esta. Para o espaço na tela. Eu quero afastá-lo um pouco, 30 no X e -30 no Y. Temos um pouco de espaço aqui Não está aqui no limite. Ok, vamos compilar agora. Isso é o que parece.
Agora vamos adicionar a barra de saúde. Vamos adicionar uma
caixa horizontal porque queremos um ícone e uma
barra de progresso ao lado dela. Então, vamos adicionar uma
caixa horizontal a essa sobreposição. Para esta caixa horizontal. Vamos primeiro adicionar uma
imagem porque queremos um ícone. E então vamos adicionar
a barra de progresso. No entanto, lembre-se de que a
Barra de Progresso tem texto em cima dela. Na verdade, precisamos de uma sobreposição. Primeiro, vamos procurar uma sobreposição e colocá-la
aqui para essa sobreposição Vamos encontrar a barra de progresso. Para a barra de saúde, estamos
usando uma barra de progresso e, em seguida, temos um texto
em cima dela para mostrar quanta
saúde o jogador tem. Ok, agora parece um pouco
confuso para essa sobreposição. Vamos ver aqui que temos
essa caixa horizontal para essa barra de progresso. Basicamente, quero preencher
tudo nessa sobreposição. Vamos colocar
isso no meio. Ao clicar na caixa horizontal, vou alinhá-la ao meio
da imagem Vamos selecionar o ícone. Agora não temos um ícone no
momento. Vamos aos ícones. Eu quero que você acesse
os materiais do curso. Se você simplesmente acessar os materiais do
curso aqui, eu vou para a interface de usuário dos ícones e importo a saúde no ícone do coração e no
ícone do escudo. Clique e arraste-os até
aqui. Agora eles são importados. Lembre-se de clicar nele, alterar o grupo de texturas para a
interface do usuário, como antes. E as configurações de compressão interface
do usuário
têm a mesma coisa ou o coração Mude-a para UI e mude-a. Vamos ver aqui, a interface do
usuário para T. Agora podemos entrar na interface do usuário. Podemos clicar na imagem, pesquisar CO ou ícone. Vamos apenas procurar
o coração, um a um. Selecione-o. Agora você
pode ver as exposições E isso é por causa
do alinhamento. Eu só queria tê-lo
no centro assim. E eu vou mudar o
tamanho dele para 45, 45 talvez. Na verdade, vamos
mudar para 40 por 40. Agora, para essa
barra de progresso, vamos clicar nela. Para a barra de progresso,
você pode ver aqui, eu posso aumentar e
diminuir a porcentagem. E isso aumentará e
diminuirá a barra de progresso. Agora, para o estilo,
precisamos de uma imagem de fundo e precisamos de uma
imagem preenchimento e
uma imagem de letreiro. Agora, para o plano de fundo, eu só quero clicar aqui. E acho que podemos
procurar a caixa de entrada. Eu tenho algumas caixas de entrada aqui
que podemos usar como plano de fundo. E podemos usar
apenas essa imagem, barra de entrada escura. Vá em frente e selecione-o.
Lembra o que eu disse antes? Mude-o para uma caixa e também
selecione 0,5 como margem. Portanto, ele se estende corretamente
para a imagem de Phil. Se você apenas pesquisar por Phil, eu tenho a
barra de progresso, Phil, para Deixe-me importar o outro porque ainda não o
importei. Você provavelmente já o
importou aqui. Deixe-me ver meus materiais de
custo mais antigos, imagens. E deixe-me importar esse
vermelho, vermelho, Phil. Deixe-me importá-lo aqui.
Clique nele, altere
I e altere essa interface de
usuário para salvar. E deixe-me voltar aqui. Vamos selecionar o preenchimento vermelho. Vá em frente e selecione este, também para a imagem da marca. Você pode simplesmente copiar isso. Cole aqui. Lembre-se para a margem do que eu disse antes, 0,5 para a margem. Este novamente muda para
caixa e 0,5 para a margem. Agora isso foi corrigido e você pode ver que a cor não
está correta. Está mostrando essa estranha cor
azulada, cor verde-azulado. Isso não é o que queremos. Isso ocorre porque o
preenchimento e a opacidade da cor são dessa cor azul clara Você mudou para branco.
Você pode ver o correto em tudo o que você
selecionou aqui. Vamos compilar agora. Vamos aumentá-lo um pouco para ver melhor a imagem
do letreiro. É aqui que você
controla o tamanho. Se você tentar alterar o tamanho da imagem nesses,
não funcionará. Deixe-me ir aqui para o tamanho da imagem do letreiro
e você pode alterá-lo Vamos apenas ampliá-lo. Por exemplo, 350
Lee, por exemplo, 60 aqui na altura. É o que parece agora, 350,60 Você pode copiar novamente o tamanho da imagem e colá-la
em cima das outras Você pode clicar no
texto aqui e alinhá-lo no meio
dessa barra de progresso Vamos mudar o texto
para rubic semi negrito, o que temos usado até agora Além disso, vamos mudar
esse tamanho para 20. Eu o diminuo,
vamos escrever um
número aleatório por enquanto. Vamos escrever 76. Eu só quero escrever um número para que possamos ver o que estamos fazendo. Vamos mudar isso posteriormente de
forma dinâmica dentro do jogo, mas é assim que
parece agora Vamos adicionar um esboço. Vou adicionar dois ao tamanho
do contorno e depois alterar a cor
do contorno Por exemplo, você escolhe
esse seletor de cores. Você pode escolher uma cor aqui. Acho que vou escolher a cor de
fundo dessa barra de
progresso. Ok.
Clique nele novamente e eu também adicionarei um
pouco de sombra se você escrever 66 aqui para
a sombra, por exemplo. Assim, você pode ver claramente
e clicar nessa cor de sombra e
alterar o alfa para um. Essa é a sombra do texto. Agora, para a sombra, vou usar o deslocamento
de três por três E vou mudar a
opacidade para 0,5.
Não é muito visível quando você
olha daqui, parece muito melhor Ok, isso parece bom. Agora podemos desativar
o contorno tracejado que
possamos ver sua
aparência agora Acho que o que podemos fazer agora clicar, vamos ver aqui, na caixa
horizontal. E podemos dar a ele algum espaço. O que podemos fazer aqui
para o preenchimento para a esquerda e para a direita, vou dar, por exemplo,
30,30 . Isso é o
que parece. Agora estamos empurrando-o para
longe dos lados. Na verdade, eu quero dar mais. Clicando na
horizontal novamente, 35 por 35, e de cima para baixo. Acho que vou
dar até 30 por 30. Agora, isso é o que parece. Ok, vamos dar um pouco de
espaço entre o ícone. E isso é feito se
procurarmos um espaçador e o
colocarmos entre o ícone e
a caixa horizontal Na verdade, não aqui. Vamos arrastá-lo até aqui. Entre a imagem
do coração e a
barra de progresso. O espaçador está aqui. Vamos no x,
dê a ele um espaço de 15, talvez. Na verdade, vamos
dar mais espaço. Acho que podemos dar
mais espaço para o espaçador, talvez 20 em vez disso Também acho que vou dar mais espaço aqui para a caixa
horizontal aqui em cima. Em vez de 35, vou
dar para 40. esquerda e a direita serão 40, e a parte superior e inferior serão 30. Isso é o que parece agora, parece bom, podemos compilar agora Vamos copiar e colar isso e editar como uma armadura para a caixa
horizontal Vamos clicar aqui
e clicar em Controle. Você pode ver agora que eles estão um em
cima do outro porque na verdade, precisamos de uma caixa vertical para colocá-los um em
cima do outro. Esquecemos de fazer isso. Vamos
procurar uma caixa vertical. Vamos ver aqui
abaixo a imagem de fundo. Lembre-se de que essa é a sobreposição, essa é a imagem de fundo E então podemos ter
a caixa vertical onde temos a
saúde e a armadura Vamos colocá-los
nessa caixa vertical. Agora, para a caixa horizontal, em vez de ter o
preenchimento dentro daqui, você pode ver que ela foi adicionada
duas vezes porque está adicionando um preenchimento para ambas.
Vamos apenas copiar isso. Vou clicar nessa
seta para removê-la. Clique na
caixa horizontal aqui também. Remova, adicione-o para a caixa
vertical em vez disso, o pai desses dois. Clicando aqui, cole o preenchimento que
você tinha antes, e
agora você o tem aqui Vamos adicionar um espaçador
novamente entre esses dois porque eles estão muito
próximos aqui para o espaçamento Este é o Y. Vou
adicionar 15 para o ícone. Vamos alterá-lo para escudo de ícones. Vamos mudá-lo para aquele
para a cor do preenchimento. Vamos mudar para
o roxo. Deixe-me copiar e colar
aqui também. Acho que, sim, tudo
deve ficar bem por enquanto. Agora, se desejar, você também
pode clicar neles. Por exemplo, essa imagem de
imagem. Essa imagem. Vamos mudar isso para a
visibilidade do Hit Testing. Não podemos interagir com
ele, com o mouse, acredito nesse e nesse. E também podemos alterar a
visibilidade para clicar em Testável. Sim, isso deve ser tudo, só para que o mouse não
interaja com eles. Se você precisar interagir
no futuro, alteraremos
os nomes deles posteriormente, quando
precisarmos deles como variáveis. Então, podemos mudar
os nomes aqui, mas por enquanto isso acabou. Essa é a aparência da nossa
parte da saúde. Se você clicar em Placa para ver sua aparência, aumente a tela. Isso é o que
parece. Parece bom. Então, agora temos a saúde e a armadura e podemos adicionar
funcionalidade a elas
159. 11.02 Aplicando dano: Agora que temos o saudável, vamos
aplicar alguns danos. Se formos para a base de jogadores,
agora temos esse projétil, esse traçado de linha que
estamos filmando aqui O que estamos dizendo é que, se o
ator tem o técnico, queremos causar dano a ele. Para aplicar dano,
você basicamente arrasta daqui e
diz aplicar dano. Você tem essa função
e é muito fácil de usar, ela vai afastá-la. Temos um pouco mais de espaço para trabalhar. Aqui estamos aplicando
alguns danos. Agora você precisa especificar quanto dano
deseja aplicar? Agora, digamos, por
exemplo, que temos um número estático. Digamos 20. Agora também temos que
especificar quem é o ator danificado.
É o jogador. Estamos atacando o ator de
sucesso aqui. Do ator de sucesso, você pode clicar, arrastar e conectá-lo. Ok, agora temos
o ator danificado. Vamos experimentar
e ver se funciona para testar e ver se
está realmente funcionando. Vamos em frente e aqui embaixo, vamos causar qualquer evento de dano. Agora, antes de fazer
o evento de dano, eu realmente quero
fazer um novo gráfico, para não colocarmos muitas coisas aqui
dentro. Tudo
isso está bem. Mas quando aplicamos danos, quero ir para outro
evento aqui ou outro gráfico. Vamos chamar isso de Saúde
e Saúde, Armadura e Dano. Vamos chamá-lo assim. Dentro daqui, se você clicar com o botão direito do mouse
e dizer Qualquer dano. Agora, esse evento é jogado sempre que um jogador
recebe dano. Podemos simplesmente tentar imprimir uma string na tela
para ver se funciona. E arraste esse dano
para essa corda, ela imprime quanto dano
estamos causando ao jogador. Agora, se clicarmos em Jogar
e selecionarmos Terrorist aqui, e selecionarmos Terris aqui Se eu simplesmente pegar uma arma
e tentar atirar no jogador, você pode ver que ela imprime
20 na tela, porque agora estou aplicando
20 pontos de dano a esse jogador. Ok, esse código funciona. Agora, se eu voltar, em vez de aplicar cerca de 20 de
dano, como um número estático, vamos entrar em
uma estrutura mais uma vez, vamos abrir a
estrutura dentro daqui. Vamos adicionar duas variáveis. Eles são tanto um
flutuador quanto um flutuador. Agora, para o primeiro,
como queremos chamá-lo, vamos chamá-lo de dano na cabeça. Agora, o que você
pode fazer é torná-lo muito específico, como quanto dano
você deve causar ao bater nas pernas? Quanto dano você deve causar ao bater nos braços e assim por diante? Mas para manter
esse curso mais curto, complexo ou mais curto
e simples, seja, ele está ficando muito
longo, basta mantê-lo um pouco mais simples. Vou causar um dano na cabeça e outro
no corpo. Danos corporais, dois
tipos de danos. No entanto, vou
mostrar como você pode fazer o resto disso. Demora um pouco mais
, mas é o mesmo processo. Ok, agora nós o temos
dentro da nossa estrutura. Agora, o que precisamos fazer é também
adicioná-lo à tabela de dados. Então vá em frente e abra a tabela de
dados aqui. Agora, antes de fazer isso, vou
realmente mover o dano até aqui só para
ficar um pouco mais organizado. Depois do MO, vou fazer os danos na cabeça e
no corpo aqui. Vamos maximizá-lo após o MO máximo. Deixe-me adicionar
duas colunas à direita. O primeiro é
chamado de dano na cabeça, o próximo é
chamado de dano corporal. Em seguida, você precisa especificar
quanto dano você causa. Agora, deixe-me dizer, por
exemplo, que pelo dano na cabeça, estou causando 20 de dano, estou subtraindo 20 Pelo dano corporal, estou causando
apenas dez danos. Eu vou fazer o mesmo. Na verdade, vamos
mudar isso para ver se há uma diferença entre
os quatro. Digamos que estamos causando 15 de
dano e cinco de dano, talvez isso seja até oito de dano Para a pistola,
isso é muito menos Dez danos, por exemplo. E digamos que cinco danos aqui. Ok, então você pode ajustar isso o quanto quiser. Agora vamos baixá-lo como
um arquivo CSV e
vou para minha
pasta de download aqui Vou renomeá-lo
novamente para T Weapon Info. Agora, dentro daqui, novamente, vamos às tabelas de dados. E deixe-me fechar isso e importar a tabela de dados aqui. Ok, agora que temos
essa informação, vamos salvar tudo. Agora, às vezes, ele
trava sempre que você tenta salvar e editar algo
dentro de uma estrutura. Isso é normal, como acontece muitas vezes. Quando você
edita essa estrutura e adiciona novos valores
e coisas assim, ela geralmente trava Lembre-se de salvar seu trabalho. Certifique-se de que aqui, deixe-me
abrir a tabela
de dados
para garantir que todos os meus valores estejam conectados, assim como antes e não estão Você pode ver que está
aqui embaixo. Às vezes, ele trava e você
precisa refazê-lo aqui. Mas, felizmente, não
temos muito o que fazer, basta arrastar isso
até aqui e, em seguida, posso arrastar novamente a
tabela de dados até aqui Ok, agora vamos
salvar tudo e espero que não falhe.
Agora funcionou. Vamos agora abrir
a base de jogadores. No player,
abra a base de jogadores. Agora vamos tentar causar
danos na cabeça e no corpo. Agora, o que
você geralmente procura é acessar os ativos
que importou para o player. Aqui temos o esqueleto do
jogador,
a malha esquelética do jogador. Mas também temos algo
chamado ativo de física. Na verdade, é
aqui que você está batendo. Esse recurso físico é onde
você está atingindo o jogador. Você pode tentar ajustar
esse ativo físico. Você pode tornar essas formas
maiores e menores. Na verdade, esta é sua caixa de sucesso. Você pode desenvolver o jogador da
mesma forma que cria formas, basicamente matando-o,
destruindo-o e assim por diante. Mas agora , devido aos danos na cabeça, estamos
acertando este Deixe-me minimizar
a velocidade da câmera. Você está atingindo essa forma aqui e essa
é chamada de golpe Eles são basicamente chamados de
corpo em forma de corpo. Se eu voltar aqui
para a base de jogadores. Agora, aqui estão
os resultados da ocorrência, se você clicar na seta novamente. Vamos aqui depois
do dano aplicado. Eu só quero imprimir
isso para que você possa ver. Quero imprimir
o nome do hit bone, o nome do
Hit bone e
arrastá-lo até aqui. E vou
minimizar isso mais uma vez. Agora estamos imprimindo
o nome Hit bone. Podemos ver o que acontece
se clicar em Play Terrorist e eu também clicar como
terrorista para o céu. Vamos apenas atirar nesse jogador. Se eu atirar na
cabeça, ele diz isso. Se eu atirar na
perna, diz coxa. Isso é, esse é o pé, certo? Essa é a coxa E esta é a mão, mão direita, mão
esquerda e assim por diante. Você pode ver que estamos fotografando
diferentes partes do corpo. Agora, só para torná-lo um pouco
mais interessante para nós, vamos usar
esse nome de sucesso. O que podemos fazer é
como as enumerações, onde você pode
ativar a enumeração,
você pode ativar o nome aqui, ativar o nome, porque lembre-se
de que
essa é uma variável de nome Ative o nome e você pode
simplesmente conectá-lo antes aplicar o dano e clicar
no sinal positivo para girar. Agora você precisa especificar
qual é o nome. Meu nome é Head. Se você voltar aqui, verá que se chama Cabeça. Você pode escrever Cabeça e depois conectá-la
aqui por padrão Vou aplicar
dano corporal por padrão, mas se for cabeça, aplicaremos o dano na cabeça. Vou apenas
copiar e colar isso. E, por padrão, vou
aplicar o dano corporal. Agora vamos obter as
informações aqui. Se eu copiar tudo isso, as informações de nossa arma aqui embaixo
e nossa variável de arma, acredito que está
nesta longa aqui. Na verdade, esse é o
ator de sucesso. Essa é a arma. Acabei de conectá-lo aqui. Esconda os pinos não conectados. Eu só quero ver o
dano corporal, o dano na cabeça aqui, e conectar o dano na cabeça, conectar o dano corporal e também o dano ao ator danificado. Lembre-se de conectar isso
novamente assim, ok? Sempre que estamos
batendo na cabeça, estamos causando danos na cabeça Sempre que estamos
batendo no corpo, estamos causando danos ao corpo Vamos clicar em jogar
e ver o que acontece. Agora, se eu jogar novamente como terrorista e
atirar na cabeça, você pode ver que isso causa 20 de dano. Se eu atirar no corpo,
ele causa dez de dano. Ok, então agora temos
um dano de tiro na cabeça. Ok, incrível. Então
isso está funcionando. Eu só vou minimizar isso. E também vou remover
a depuração aqui da bandeja de linha para não ver as linhas vermelhas E foi isso por isso. Novamente, você pode criar um sistema
mais complexo, mas só para fazer com que esse curso não muito complexo, é
assim que podemos fazer isso. Estamos causando alguns danos na cabeça e alguns danos no corpo também. Lembre-se de definir
os valores da tabela de dados. Você pode ajustar esses números. Sim, vamos seguir em frente e
passar para a próxima.
160. Estrutura de informação do jogador 11.03: Tudo bem, agora
vamos adicionar a saúde do jogador e
a armadura e a quantidade
e assim por diante Mas antes de fazermos isso, vamos realmente criar uma estrutura de
jogadores. Agora vamos às plantas
e às Estruturas. E agora, em vez
das informações da arma, clique
com o botão direito do mouse agora, vá para Blueprint e
adicione uma nova estrutura E deixe-me chamar isso de informação de
uma camada. Vamos abri-lo. Agora,
para as informações do jogador, o que eu quero acrescentar é qual é a saúde máxima que
o jogador pode ter? Isso é um número flutuante, não um número inteiro, porque às vezes é
calculado como uma E então você aumenta a saúde. Então você tem o Max Armor. Lembre-se de que também temos
a armadura no jogo. Eu posso acrescentar mais a isso. Lembre-se de que, se você for até o
jogador e a base de jogadores, também
temos algumas propriedades de
execução. Temos a velocidade de caminhada, velocidade de
corrida, velocidade de agachamento. Você também pode realmente
tê-lo aqui dentro. Não precisamos ter variáveis
separadas aqui. Basta adicionar a velocidade de execução. Eu adiciono a velocidade de caminhada, também
posso adicionar a velocidade de agachamento. Assim. Ok,
agora temos isso. O que podemos fazer, podemos
excluí-los mais tarde. Portanto, precisamos terminar isso primeiro antes de excluí-lo. Tudo o que você tem, como um valor
estático que não
mudará. Por exemplo, qual
é a velocidade de corrida,
caminhada, velocidade, velocidade de agachamento. E eles não mudarão
durante o jogo. Se você tem números estáticos, é muito bom
adicioná-los dentro de uma estrutura. Acho que foi
isso aqui dentro. O que podemos fazer é
ir em frente e salvá-lo. Salve tudo. Vamos passar para
a próxima e
criar a tabela de dados.
161. Tabela de dados de informações do jogador 11.04: Tudo bem, então aqui estou eu de
volta às tabelas de dados. Agora, para esta, a
antiga, vou
ligar aqui para informações sobre armas da DT. Na verdade, vamos criar um novo. Na verdade, vou apenas
duplicar
isso para não precisar reorganizar
todas essas E eu vou
chamá-lo apenas de informações do jogador de DT. Vamos clicar no controle A e depois excluir tudo. Ok, coisa boa aqui. Vamos voltar,
voltar para a estrutura
e ver o que temos. Não são as informações da arma,
as informações do jogador aqui
dentro.
O que temos primeiro. Agora, antes de adicionar qualquer coisa, você precisa ter uma coluna de ID. Temos isso nas informações da arma. Lembre-se, temos
esse chamado ID. Precisamos de uma identificação para este, verdade não
precisamos da identificação. Você pode simplesmente chamar o nome, por exemplo, você
pode chamá-lo de um. Vamos chamá-la de uma,
porque teremos apenas uma linha para o jogador com
todas as informações. Não precisamos de
várias linhas aqui. Ok, para o primeiro,
temos a saúde máxima. Então temos a armadura
e, em seguida, temos a velocidade de corrida Então temos a velocidade de caminhada
e, em seguida, temos
a velocidade de agachamento. Ok, nós temos esses valores. E deixe-me fazer
isso um pouco menor. O que você pode fazer agora
é obter o ID Nós o configuramos como um
para a saúde máxima. Vou configurá-lo para 100 para
a armadura máxima 100,
bem como para a velocidade de corrida Agora, já definimos
esses dois como valor padrão. Se eu for até o player, clico na velocidade de execução, ela está configurada para 750. Agora eu vou
configurá-lo para 750. Para a velocidade de caminhada,
ajustei para 400, e para a velocidade de agachamento, configurei para Então, vamos escrever isso.
Agora estamos prontos. Vamos clicar no
TSV de download de arquivos como antes. Vamos abri-lo
aqui e vamos chamar
isso de informação de um jogador. Vamos fechar isso. Agora, nas tabelas de dados. Agora, antes de importá-lo, vou criar um novo. Vá para Diversos
e selecione Tabela de dados. Agora vamos selecionar
as Informações do jogador. Clique. OK. Vamos
chamá-lo de T Layer Info. Está aqui. Agora podemos importá-lo se você clicar em arrastar
agora mesmo para isso. Agora, ele carregou
todos os valores. Além disso, agora está funcionando e
podemos salvar tudo. Agora, lembre-se de que, quando precisamos
usar essa tabela de dados, precisamos criar uma função dentro da biblioteca,
como antes. Vamos criar uma nova
função na biblioteca. Nova função, vamos
chamar essa, obter informações do jogador, porque
precisamos fazer isso. Vamos copiar e colar
a coisa aqui. Vamos copiar e colar tudo isso. Cole-o aqui dentro. Conecte isso como aqui. E vamos conectá-lo aqui. Em vez das informações da arma do DT, precisamos das
informações do jogador do DT e devolvemos. Arraste-o até aqui
e chame-o de info. Vamos compilar e
salvar tudo. Além disso, lembre-se de transformá-la em uma função
pura como esta. Porque estamos apenas
obtendo informações, não
estamos configurando informações. Vamos tentar usá-lo apenas para
ver se algo está errado. Vamos, por exemplo,
ao jogador, sua base. Digamos que eu quisesse usá-lo. Aqui posso dizer com razão para obter informações
do jogador, e aqui está. Agora você pode obter as
informações do jogador a partir deste. Ok, no momento não temos
realmente uma identificação. Assim como quando usamos
com as armas. Como se tivéssemos um nome de arma. Do nome da arma,
estamos extraindo valores para a base de jogadores Na verdade,
temos apenas uma linha de código ou uma linha
na tabela de dados, só
temos essa linha aqui. Realmente não faz sentido
escrever um a cada vez para extrair
dessa linha desse ID, porque ele permanecerá
o mesmo o tempo todo. Para melhorar,
o que podemos fazer é simplesmente voltar aqui nas informações do jogador aqui e
, na verdade
, desconectar isso Na verdade, também podemos
simplesmente excluir tudo isso aqui e remover essa
variável daqui. Agora, o que você pode fazer é apenas o nome da linha,
é sempre um. Basta definir o nome da linha como um. É isso aí, se eu compilar
agora na base de jogadores, quando digo informações do jogador, agora ele sempre obtém
essas informações do jogador Então, nós realmente não precisamos
escrever nada aqui e isso realmente não faz sentido quando temos uma linha. De qualquer forma, estamos apenas obtendo as informações
da tabela de
dados da primeira linha. Está bem? Agora temos essa
informação e podemos usá-la. Vamos salvar tudo
e passar para a próxima.
162. 11.05 Definindo a saúde e armadura base: Tudo bem, agora estamos prontos
para definir a saúde básica. No momento, quando
entramos no nível, nossa saúde está basicamente dizendo 76, porque é isso que
definimos na interface do Este é apenas um número estático que definimos aqui por meio
dessa porcentagem. Realmente não
faz nenhum sentido. Vamos
definir a saúde
e a armadura básicas sempre que aparecermos Para isso, vamos
abrir a base de jogadores, ela está fora daqui. Deixe-me ver o gráfico de
Armadura e Danos de Saúde. Eu quero fazer dois eventos. Eu quero fazer o primeiro
chamado Set Layer Health. Eu quero fazer o
outro chamado Set Layer Armor. Nós temos esses dois. Também queremos executá-lo por meio
do servidor. Vamos executá-lo no servidor. A camada de configuração também
executa esta no servidor. Defina uma camada de armadura. Vamos executá-los no servidor e
de forma confiável. Vamos rodar o
servidor aqui em cima, arrastando e dizendo definir
camada para o de armadura Vamos atacar a partir daqui
e dizer que na camada do servidor, defina a armadura do jogador assim Ok, agora vou
mover isso para baixo para que
tenhamos mais espaço para trabalhar. O que queremos fazer é
simplesmente definir a variável de saúde. Agora precisamos de duas variáveis aqui. Precisamos de uma chamada saúde
atual, porque na estrutura
criamos uma chamada saúde máxima. Essa é a saúde máxima
que o jogador pode ter. Mas também precisamos de um
para a saúde atual. No momento, temos a
saúde atual e a armadura atual, ambas para a saúde aqui.
Vamos levar isso até aqui. Vamos definir a integridade
no servidor. Arraste esse pino para o
evento em que ele cria um. E também arraste esse pino ainda mais
para o evento. Essa. Lembre-se de que você está definindo
a variável no servidor. Você precisa ter
isso replicado. O cliente também pode ver qual é
a saúde dos outros jogadores. Você também precisa fazer isso por aqui. Vamos atacar pela armadura. Conecte-o e conecte-o
aqui. Conecte-o aqui. Vamos configurar este para
replicá-lo também. Agora temos isso. O que podemos fazer com isso agora é
deixar-me movê-los juntos. Agora eu posso voltar
ao início do jogo. É aqui que eu quero definir
a saúde básica dos jogadores. Sempre que o jogador
aparecer instantaneamente, você colocará
a saúde aqui Eu quero dirigir
daqui e dizer Set Health. Nosso Set Player Health é o que chamamos de Set Player Health. Também queremos
usar o outro chamado Set Player Armor Em seguida, temos que especificar qual é a saúde
e a armadura atuais Está cheio quando você desova. Quando você desova, eu quero dizer
para obter informações do jogador. Podemos quebrá-lo aqui. Então, podemos definir aqui o máximo
de saúde para a armadura. Nós podemos fazer isso assim.
Mas, na verdade, acho que vou criar duas funções
diferentes. Mas neste eu vou clicar com o botão
direito do mouse e dizer promover uma função ou
reduzir para uma função. Vamos chamar isso de, obter a saúde máxima do jogador e
transformá-la em uma função pura. Em vez desse nome insano e insano,
vou dizer Max Health Vamos entrar aqui.
Vamos organizar um pouco. Vamos fazer isso com o
outro também. Deixe-me copiar e colar isso. Excelente. Copie e cole isso. Deixe-me duplicar
esse aqui. Duplicado. Vamos chamar isso
de Get armor em vez de Eu vou remover esse. Chame isso de armadura Max. Para obter o máximo de saúde,
vamos desconectá-lo, colocá-lo na armadura máxima
e conectá-lo aqui Agora podemos pegar isso,
pegar o player Max Armor e
conectá-lo aqui também Ok, só temos essa
aparência um pouco mais limpa. E agora estamos
definindo a saúde
máxima e a armadura
máxima dos jogadores saúde
máxima e a armadura
máxima Agora, se clicarmos em play, agora nada
vai aparecer. E talvez você
já tenha adivinhado Isso ocorre porque realmente
não estamos atualizando a interface do usuário no momento Estamos apenas definindo
essas variáveis e agora elas estão corretas. No entanto, nunca
acessaremos a interface do usuário no
momento e, na verdade, atualizaremos
esses valores aqui. Isso é o que vamos
fazer no próximo.
163. 11.06 Funcionalidade da interface do usuário de Health & Armor: Então, aqui estou eu dentro
do projeto principal do Uji. E agora vamos
atualizar a saúde e a armadura Então, a primeira coisa que
precisamos fazer usá-los dentro
do gráfico de eventos. Para fazer isso, lembre-se de
que precisamos deles como variáveis. Clique no primeiro. Essa é a parte do
progresso da saúde. Vou chamar isso de saúde
apenas para barra de progresso. Na próxima, vou
chamá-la de Armadura. Lembre-se também de considerar que
isso é variável. Então, podemos vê-los como variáveis
aqui dentro do gráfico. E eu posso usá-los e
podemos modificá-los. Vamos clicar no texto também. O texto também
precisamos modificar. O primeiro é chamado de Saúde
do Texto, também variável. A próxima é chamada armadura fixa de
braço e
também é variável Agora, não precisamos realmente de mais
nada para ser uma variável Essa é a única coisa que
precisamos editar. Vamos compilar e
passar para o gráfico. Vou criar
duas novas funções, a primeira chamada
atualização, atualização, saúde I. Eu também vou
fazer a outra
chamada atualização, ou elas estão quase, ou na verdade vão
fazer a mesma lógica. Mas essa é para a saúde,
essa é para a Ama. OK. O que
realmente precisamos fazer? Isso é sempre o que você deve se perguntar sobre sua codificação. O que estamos
tentando fazer agora? Definimos essa porcentagem
aqui para a barra de progresso. Ok, vamos ao gráfico. Vamos fazer esse progresso,
vamos colocá-lo aqui. Agora, vamos atacar e dizer
porcentagem, porque é isso que estamos interessados
em editar aqui. É uma porcentagem definida, vamos fazer isso. Isso é fácil. Vamos conectá-lo.
Há algo que você precisa saber sobre a
porcentagem de uma barra de progresso. Você pode ver aqui,
vai 0-1 Não vai
0-100%, vai 0-11 é O que precisamos fazer agora obter a saúde
atual
usando uma saúde de corrente flutuante Vamos fazer essa variável,
essa saúde atual. Digamos, por exemplo, que eu tenha 100 pontos de vida e tenha sido
danificado cerca de dez, e agora tenho 90 pontos de vida. Se você conectar isso agora, o valor será 90. Isso não faz sentido porque
o valor máximo é um. Mesmo que você tenha cerca de 100 pontos de vida restantes, ele ainda
mostrará a barra completa porque, na verdade, uma é
a barra completa aqui. Precisamos dividi-lo de alguma forma. Na verdade,
também precisamos
da saúde máxima , saúde atual, saúde. Quando os dividimos, se você arrastar da saúde
atual e dividir a saúde máxima, por exemplo, digamos que
você tenha 90 em saúde. Podemos dizer 90/100 porque
essa é a sua saúde máxima. Isso será 0,9 Então o
0,9 que inserimos aqui, isso estará correto porque
agora a barra de porcentagem
será algo assim
sempre que você perder dez, ok? Por exemplo, digamos que
eu tenha 40 pontos de vida restantes, 40/100 é 0,4 e isso se
encaixará aqui E a barra de progresso
estará em 0,4. Assim, ela estará correta agora. Ok, isso está fora do caminho. Vamos fazer a mesma
coisa aqui. Temos a armadura atual
e a armadura máxima. Então, estamos dividindo
esses dois juntos aqui. Vamos pegar a barra
de progresso da armadura e
dizer definir uma porcentagem Vá em frente e
conecte-os. Agora vamos conectar isso aqui. Agora também estamos configurando
a armadura corretamente. A próxima coisa que precisamos fazer
é também definir o texto aqui. Vamos clicar no texto. Esse é o texto Saúde. Vamos pegar aqui
e dizer Definir texto. Vamos ver aqui. Defina o
texto, é este. E vamos
conectá-lo agora. Defina o texto. Vamos fazer a mesma coisa com
o conjunto de armaduras. Precisamos atualizar os dois. O que precisa estar no texto? O que você precisa exibir
aqui? Isso é muito simples. Apenas essa variável,
a saúde atual. Se minha saúde atual for 40, quero exibir o
número 40 aqui. Muito fácil. Vamos começar
a partir da saúde atual, faça o login aqui. E, por exemplo, o Unreal Engine
converterá automaticamente a variável flutuante em uma variável de texto e
simplesmente a conectará aqui Ok, muito bom, muito fácil. Vamos fazer a mesma
coisa aqui. Vamos quebrar essa
armadura atual. Conecte-o. E, sem mais nem
menos, isso acabou. Ok, então foi isso. Isso está atualizando agora a armadura e este
está atualizando a saúde Vamos continuar na próxima.
164. 11.07 Atualizando a interface do usuário de Health & Armor: Ok, agora o que
precisamos fazer é atualizar a saúde do
jogador. Agora vamos começar com a
saúde agora. Lembre-se de que, na base de jogadores
no gráfico da van, definimos
a saúde e a armadura do jogador quando ele aparece,
que devem ser atualizadas Agora podemos atualizá-lo
em outro evento. Mas acho melhor
fazer isso como continuar
o código aqui. E a saúde, quando
definimos a saúde, definimos a variável
e a replicamos Vamos continuar
o código aqui. Deixe-me arrastar essa para baixo. Eu tenho mais espaço.
Deixe-me criar um novo evento. Lembre-se de que, quando você atualiza a interface do usuário, ela é
executada no cliente. A interface do usuário está
passando pelo cliente. Você chuta isso, faça isso aqui. Temos que criar um evento para o cliente chamado Set Player Health. Então você tem que executar isso
possuindo um cliente confiável. Agora, o que você precisa
fazer com este é, deixe-me tirar tudo
isso aqui. Já temos a referência principal do
WB. Lembre-se de que temos o controlador
do player aqui. E podemos dizer assim. Então podemos arrastar
daqui e dizer atualização, acredito que chamamos isso de
atualização de saúde, essa. Agora podemos conectá-lo
ao evento desta forma. Agora podemos conectar a
saúde agora aqui, vamos chamar o
evento do cliente de atualização de CL ou conjunto de CL de saúde do jogador. Este para a saúde atual. Vamos apenas
conectar este aqui para obter o máximo de saúde. Já criamos uma
função que
definimos a saúde máxima do jogador. Assim aqui. Ok,
isso é totalmente funcional. Agora vamos fazer a mesma
coisa com a armadura. Temos a armadura de jogador definida. Deixe-me
reduzir isso um pouco assim. E vamos criar um novo
evento chamado L, Set armor. Execute-o através do
cliente, de forma confiável. Em seguida, execute o cliente
aqui em cima, defina a armadura do jogador. Este para este, pouco antes de precisar da referência do controlador do
player, você precisa do B main. Em seguida, precisamos chamar a armadura de
atualização y conectar, conectar as variáveis
ao evento exatamente como antes Vamos conectar a armadura
atual aqui. Para obter a armadura máxima, vou conectar
a função,
obter a armadura máxima do jogador. Lembre-se de que a função é
basicamente obter as informações do jogador e
retirá-las daqui. Ok, vamos voltar
ao gráfico de eventos, Saúde e Armadura aqui E agora deve estar funcionando. Estamos chamando o evento,
ele atualizará a interface do usuário, o que quer que chamemos de
Set Player Armor
ou Set Player Health.
Vamos clicar em Jogar. Agora, se eu selecionar Terris, você pode ver que está configurado
corretamente para 100.100. O que está acontecendo
é que, no Begin Play, estamos definindo a saúde do
jogador Lembre-se da
saúde do jogador que você definiu em sua tabela de dados,
essa saúde máxima. Está definindo a saúde do jogador. Ele vai
até este evento
passando pelo servidor. O servidor definirá essa variável para qualquer coisa que
você tenha conectado aqui Em seguida, ele atualizará
a interface do usuário, esses valores,
porque
o cliente atualizará a interface do usuário. Está passando por
aqui, atualize a interface de saúde. Está pegando os números
que você fez login. Está lhe dando a porcentagem porque você as dividiu. E então você também está exibindo o texto corretamente na
tela por meio deste. Era isso para atualizar
a saúde e a interface do usuário, na verdade, nossa saúde e armadura E agora também podemos usar esse conjunto de saúde e armadura
do jogador quando estamos causando dano
ao jogador
165. 11.08 Causando danos à saúde: Agora que terminamos com o conjunto de saúde e armadura, vamos continuar e causar
o dano ao jogador Aqui temos qualquer evento de
dano que usamos antes e o usamos apenas para ver se realmente causamos
dano ao jogador. Verificamos que
nas aulas anteriores quando você bate na cabeça,
você causa algum dano. Se você bater no corpo,
você causa outro dano. E podemos ver que está imprimindo,
então está realmente funcionando. Qualquer dano está funcionando
aqui. Ok, tudo bem. Então, agora queremos causar
o dano real aqui
sempre que você causar dano, e isso vem
do dano aplicado. Então, se você voltar
à lógica de tiro aqui para a linha de
rastreamento, trace, ao atingir o jogador, você está causando esse dano. Se você aplicar dano a um ator, ele automaticamente
disparará este, qualquer evento de dano, se você
receber o dano. Agora, qualquer dano que você receba, esse é o dano que você aplicou aqui dentro
do dano aplicado. E dissemos que dentro
da nossa tabela de dados, estamos aplicando dano
ao jogador aqui em
qualquer dano. O que podemos fazer agora tirar a
saúde atual do jogador. Podemos dizer, por exemplo, que
agora minha saúde está 100. Então, podemos dizer 100 menos. Estamos subtraindo 100 de menos, digamos que o dano foi
dez, que será 90 Temos que ajustar a saúde novamente. Antes de fazer isso, gosto de
ter esse nó de fixação. Só estou me certificando de que
não vamos abaixo de zero. Não queremos ter uma saúde
de menos dez, por exemplo. Estamos definindo esse valor como sendo zero, então não
pode mais ficar abaixo de zero. E, no máximo,
vou arrastar este, obter a saúde máxima do jogador
e conectá-lo aqui. Agora está preso. E então
podemos definir a saúde novamente. Vamos definir a saúde para
esse valor que temos. Está bem? O que está acontecendo é basicamente que você está
causando dez de dano. Por exemplo, ele vai dizer que
a saúde atual é
100 menos dez, ou seja, 90 Vamos passar
por aqui para
garantir que não fiquemos abaixo de zero. E o valor de 90
será inserido aqui. Agora, a nova saúde que
temos é, na verdade, 90. Agora, em vez de definir
essa integridade dessa forma, isso funcionaria porque
se você tiver esse ícone, isso significa que
ele é executado no servidor. Se você segurar o mouse sobre ele, e na parte inferior, ele
dirá apenas autoridade. Esse evento só é
acionado no servidor. Novamente, não há problema em definir
variáveis ou é correto definir variáveis no servidor
e depois replicá-las. Isso funcionará perfeitamente. No entanto, lembre-se de que já
criamos esse evento de definir a
saúde do jogador, e isso também
atualiza a interface para nós, em vez de apenas
chamá-la novamente, e precisamos atualizar a interface. Se tivéssemos que fazer dessa maneira, teríamos que copiar isso, colar aqui e
fazer assim. Em vez de fazer
isso, já
fizemos uma função ou um evento aqui. Digamos que defina a saúde do jogador. E podemos simplesmente chamar
isso do que acabamos de fazer. E podemos conectá-lo aqui. Ele passará automaticamente
por isso e também atualizará a interface do usuário, porque a chamamos aqui, tudo bem. Tudo bem, incrível. Agora,
também aqui para a morte, se a saúde atual for igual a zero e
pudermos fazer uma ramificação, se isso for verdade, queremos
chamar de evento de morte. É quando o jogador morre, quando a saúde atual é zero. Faremos isso
mais tarde. Mas, por enquanto, temos isso conectado. Ok, vamos
clicar em Play e ver se realmente funciona aqui. Se eu pegar uma arma
e atirar no jogador, agora você vê que o jogador
tem 90 incríveis. Se eu atirar na cabeça,
ele atirou -20 Agora eu tenho
70 pontos de vida que
estão funcionando corretamente. Vamos
experimentá-lo no servidor. Se o servidor atirar no cliente, deixe-me minimizar isso aqui. Se o servidor filmar o cliente, isso
também está funcionando, incrível. Se eu saquear como
outra arma aqui, ela também está funcionando Tudo bem, essa
lógica está funcionando. Agora vamos fazer a
armadura na próxima lição.
166. 11.09 Causando dano à armadura: Ok, para distribuir a armadura, basicamente
vamos
usar o mesmo método No entanto, para a armadura, eu realmente quero
causar menos saúde ao jogador se você
já tiver uma armadura Então, eu não vou causar a mesma quantidade de danos à saúde, apenas afastando tudo
isso, desse jeito. E eu quero fazer a armadura
primeiro, apenas afastando-a. Ok, então vamos pegar a armadura
atual agora, é 100 como um começo O que eu quero dizer é, vamos pegar essa armadura e subtraí-la
do dano Não quero
subtraí-lo apenas um por um. Na verdade, quero subtrair esse valor, o dano, se eu multiplicar por,
digamos, 1,5 e depois quero aplicar o
dano na armadura A armadura será danificada muito mais rápido do que
a saúde atual Não será danificado
como a saúde atual. Ele será danificado muito mais rápido porque o
multiplicamos por 1,5. Também posso simplesmente
arrastar deste, ele permanece organizado
assim aqui Incrível. Agora, com
essa subtração, o que podemos fazer é, novamente, como
antes,
fixar a bóia Garantimos que
não fique abaixo de zero. O máximo é pegar a armadura máxima
desse jogador
e conectá-la E agora vamos definir
a armadura atual. Novamente, temos a função
chamada set, set player armor. E vamos ajustar
a armadura assim. E agora está implementado, ok. Se você jogar aqui e
pudermos experimentar. Você pode ver aqui, eu sou o
cliente atirando no servidor. Estamos perdendo a armadura. Agora, não adianta
ter uma armadura se você
vai perder
aquela saúde pela qual está sendo
danificado de qualquer maneira Então, no momento, isso realmente
não faz sentido porque você ainda está
perdendo saúde e morrendo. O que eu quero dizer é que,
se você tiver uma armadura, perderá mais saúde, uma quantidade menor de O que eu posso fazer aqui, em vez de subtrair o dano
da saúde,
este aqui, em vez de
subtrair o dano
que eu quero arrastar daqui e
dizer selecione flutuar aqui Agora queremos perguntar:
a armadura é igual a zero? Vamos pegar a armadura e dizer: é igual a zero Quando diz escolha a, se essa intimidação for verdadeira,
vá em frente e escolha a. Se a armadura for zero, isso significa que na verdade queremos
apenas aplicar dano que tínhamos
antes,
desse jeito No entanto, a armadura
no momento não é zero. Isso significará que é
o valor B aqui. Então, na verdade, isso
significa que temos uma armadura e quero causar
danos mais lentos ao jogador Se eu apenas arrastar isso aqui, quero direcionar a partir daqui e dizer dividir esse dano por,
digamos, por exemplo, 2,2 0,5 Vamos então causar o dano. Na verdade, estamos
reduzindo o dano antes de causá-lo ao jogador. Ok, agora faz sentido
que tenhamos armadura, porque quando temos armadura, na verdade
vamos sofrer menos
danos E vamos clicar em play. E vamos experimentar
essa mecânica aqui. Se eu for até o servidor, se eu simplesmente atirar no jogador aqui, você pode ver que estamos
sofrendo danos agora. O valor aqui, precisamos
remover as casas decimais. Isso é bom por enquanto. Mas você pode ver que a armadura está funcionando Sempre que
perdermos a armadura, sofreremos muitos danos Vamos sofrer o dano que existe sem a armadura Ok, essa funcionalidade funciona. Você sempre pode
controlar esses valores, quanta armadura você perde aqui quanto ele você está perdendo Mas agora está
funcionando para a interface do usuário. Na verdade, precisamos remover
as casas decimais. Vamos voltar aqui
no B principal aqui. O que eu quero fazer é basicamente
arredondar o valor. Se eu pegar esse flutuador, posso usar esse chamado round e estamos
arredondando o valor Se o dano está no
momento , não estamos realmente
no negativo, mas digamos que no positivo Se tivermos 1,6 pontos de vida,
ela se torna dois. Podemos usar esse e
arredondar o valor. E agora podemos arrastar isso para
o texto e conectá-lo. Vamos excluir
o antigo aqui. Em vez disso, vamos configurar isso e fazer a mesma coisa aqui. Vamos usar o round e
excluir esse antigo. Conecte-o aqui.
Vamos organizar isso. Agora vamos testar isso
e ver se funciona. Basta criar alguns
nós de rota para melhorar a aparência. Agora vamos compilar,
clicar em Play e ver se realmente
funciona Se eu mostrar ao player, você
pode ver que ele está arredondando o valor agora que tudo está
funcionando como deveria
167. 11.10 Prevenindo o saque de vários rifles: O problema que estamos
enfrentando agora é se
eu clicar em jogar aqui
e maximizar minha janela. Você pode ver aqui que eu
saqueei um quatro. No entanto, se eu clicar
aqui para saquear uma arma, posso realmente saquear esse AK E eu posso até mesmo saquear esses quatro. Eu posso até saquear este, e eles estão todos nas minhas costas Isso não deveria acontecer. E há um disco dentro
do código aqui na base
de jogadores Eu acredito que é uma solução simples. Vamos até o estacionamento. Equipe e descarte a lógica aqui. Aqui na arma do lote, algo está errado
porque dissemos para ela não saquear a arma se
for a mesma arma
que equipamos É essa arma de
saque de um único pedido, porque aqui estamos tentando encontrar
a arma no inventário Estamos tentando comparar a
arma com o inventário, com a que
estamos saqueando
agora . Estamos passando por isso. Estamos retirando a arma
do inventário. Estamos tentando verificar se
já temos essa arma. Se já a tivermos,
soltaremos a arma. Se for falsa. Se não a
tivermos, carregamos a arma. Por alguma razão,
acredito que está
passando por aqui em vez de aqui. Não é deixar cair a arma. É como se não conseguisse
encontrar a arma. Se eu apenas imprimir uma string
aqui e dizer duas aqui em cima, eu imprimo outra
string e escrevo uma. A propósito,
é assim que você depura. Agora vou ver onde
o código está sendo executado. Está subindo
aqui ou descendo aqui? Vamos compilar e clicar em play. Vamos agora
carregar essa arma. Agora, se eu clicar em, ele diz, se eu aludir a
este, ele diz dois, o código está realmente
indo para cá Está acontecendo
aqui no falso. É como se dissesse: não, eu não tenho esse item no meu
inventário e isso é falso. Na verdade, tenho esse
item no meu inventário. Vamos ver o código aqui.
Vamos até aqui. Está tentando encontrar, está tentando
comparar o item no inventário com o
que estamos tentando lotar. O que está acontecendo aqui
é que ele primeiro pesquisa aqui
no índice zero. Ele pesquisa no primeiro
índice da arma. Se eu voltar aqui,
basta fechar isso. Se eu voltar aqui
para a lógica aqui, quando ele não encontra a
primeira arma, por exemplo, se a primeira arma for uma pistola, então essa
será falsa, na verdade, porque você está
comparando a pistola com
a que queremos
saquear E não é um rifle, o que significa que, na verdade
, é falso E então ele adiciona essa
arma aqui. Precisamos ajustar
o código aqui embaixo. O que precisamos fazer
é garantir que ele tenha percorrido todo
o inventário antes de continuar com
o código Se ele receber apenas o
primeiro item do inventário, que é a pistola
, isso realmente não
faz nenhum sentido
, porque nos dará
um dólar, como agora O que eu quero fazer é ter certeza de
que esse índice aqui, esse índice você pode ver aqui. Se eu clicar com o botão direito do mouse e imprimir uma string,
posso mostrar a você. E você pode conectar o índice para ver o que
ele imprime. E eu posso compilar com
play quando eu saqueio este. Agora diz zero. Ele continua dizendo zero
porque só olha para
o primeiro índice. Agora, o rifle é, se eu clicar em mais aqui, o primeiro pode
ser a pistola, o indicador pode
ser o E continua verificando apenas o
índice zero. Agora, deixe-me deletar tudo
isso e deletar isso. Deixe-me conectar o
índice de raios aqui. Deixe-me mudar isso para cima. Vamos movê-lo para
cá e chamá-lo de índice de raios. Vamos compilar, vamos voltar. Agora, quero verificar se esse é o último índice
antes de continuar. Se eu pegar o
inventário e
nos deixar encontrar a variável
aqui, inventário de armas. Vamos pegar isso. Digamos último índice desse inventário de armas
que temos agora, esse número
é igual
a esse índice de área? Vamos
torná-lo mais bonito aqui. Agora vamos fazer um galho. E estamos perguntando: estamos
no último índice do inventário? Vamos apenas deletar isso. Deixe-me conectar isso.
Se isso for verdade, queremos continuar com o código. No entanto, se não estivermos
no último índice, se ainda precisarmos verificar
algumas coisas no inventário, precisamos voltar atrás. E, na verdade, não precisamos fazer nada porque, se não
for o último índice, simplesmente
analisaremos isso. Na verdade, não estamos
quebrando o ciclo, estamos apenas quebrando
o ciclo aqui. Quando encontramos um item, na verdade não preciso
fazer nada. Deixe-me organizar isso um pouco, deixe-me afastar isso, e isso deve resolver nosso problema. Ok, aqui eu criei alguns nós de rota e
está mais bonito Vamos agora clicar em Play
e ver se funciona. Se eu simplesmente saquear essa
arma, por exemplo, e clicar em, você pode ver que ela realmente a
derruba em quatro E se eu clicar aqui, também solto esse. Você pode ver aqui que está funcionando. Não consigo saquear dois rifles
ao mesmo tempo e ele
também está funcionando com uma pistola
provavelmente Agora vejo que não consigo saquear
duas armas ao mesmo tempo.
168. 12.01 Morte: Tudo bem, então agora vamos
criar a morte do jogador. Lembre-se de que aqui causamos
qualquer evento de dano e calculamos a saúde, a
armadura e a quantidade de
dano que você sofreu Agora dissemos isso
aqui no final, se a saúde atual
for igual a zero, queremos jogar o evento da morte. Ok, muito simples. Vamos criar novamente um novo
evento rápido chamado morte, vamos executá-lo no servidor porque estamos no modo multijogador Vamos executá-lo através deste
servidor, evento de morte confiável. E vamos executar a morte
do servidor aqui em um evento normal. Então, funciona assim. Para a morte, você pode imaginar que, na verdade, vamos
fazer uma morte como uma boneca de pano, em que o jogador simplesmente
cai no chão Agora podemos dizer que reproduza uma montagem de
animação. No entanto, eu só quero
tornar isso um pouco mais divertido e realmente criar uma
morte de boneca de pano em vez de uma animação Porque já
fizemos isso antes. Sabemos como fazer isso
em vez de fazer multicast. Eu quero te mostrar como
matar uma boneca de pano. Para fazer isso, agora
precisamos que um representante notifique porque você mudará
o visual do jogo Lembre-se de que, se você
quiser alterar o visual de um
representante, notifique aqui Vamos criar um novo evento
ou uma nova variável. E esse vai
se chamar Dead Bullion. Vamos definir que isso está
morto para ser alguma coisa. Vamos apenas arrastá-lo
para o evento. E este também o arrasta
para o evento. Na verdade, podemos chamar isso de. Agora vamos até aqui. Se a saúde atual
for igual a zero, vamos chamar esse evento de morte. Vamos fazer com que o
jogador morra. Lembre-se de tornar isso realidade. Agora precisamos representar e notificar isso. O representante notifica que
cria uma função. Então, vamos clicar duas vezes nele. Dentro daqui, o que
queremos fazer é simplesmente perguntar se o
jogador está morto ou não? Esse lingote é verdadeiro ou falso? Ok, o que
queremos fazer para causar a morte por
desemprego regular quando a variável de
morte é verdadeira Queremos simular a
física com essa malha. Porque se eu simplesmente for
ao mercado e
abrir a era, apenas uma delas realmente não
importa. E você acabou de abrir
o ativo de física. Você abre o
ativo físico, como pode ver aqui. Se você clicar em Simular, poderá ver o jogador
morrendo assim Na verdade, isso é morte regular,
se você apenas simulá-la. E você pode ver, isso
é o que eu quero fazer. Para fazer isso, precisamos
simular a física. Vamos pegar essa malha
e dizer que simula. Defina a física simulada como verdadeira. Também quero desativar o
movimento do jogador. Portanto, você não pode pressionar
o teclado e se mover. O jogador pega o movimento do
personagem e diz desabilitar o movimento. Agora, o jogador não pode
pressionar o teclado para se movimentar. Vamos compilar e ver o que acontece se eu clicar em play Agora eu também gero o outro
jogador. Deixe-me atirar nesse
jogador e ver o que acontece. Eu vou atirar nesse jogador. O jogador morre, mas cai
no chão. Na verdade, vamos corrigir isso também. Precisamos mexer
com algumas colisões. E isso ocorre porque a malha agora
está simulando a física. Se dermos uma
olhada na malha aqui, se descermos até as configurações de
colisão, podemos ver que ela realmente não
tem colisão física, o que significa que vai
cair no Só tem sobreposição. física se sobrepõe quando eu bato em minhas
bandejas de linha para causar danos, mas ela não tem colisão
física, precisamos Vamos pegar essa malha agora. Deixe-me arrastar a partir daqui
e dizer definir colisão. Vamos descer até aqui. Defina a colisão ativada. Vou permitir a colisão. Eu vou colidir
aqui. Colisão ativada Eu tenho uma consulta e uma física. Vá em frente
e selecione isso. Na verdade, vou fazer
isso antes da física caso contrário, o jogador
cairá no chão. Eu vou habilitar
a física primeiro. Vamos tentar isso. Agora
temos física. Ok, esse bug foi corrigido. Você tem que tentar ver
que outra caixa temos. Agora, novamente, eu vou
matar esse jogador aqui. Ok, agora o jogador está
morto. O jogador está aqui. Incrível. Um problema com esse player no
momento é que, na verdade, ele tem a animação ociosa ativada Porque eu posso ver o
jogador respirando agora. Você pode ver que os ombros estão se movendo e temos uma
animação sendo reproduzida. Precisamos parar com essa animação
porque ela parece boba. Deixe-nos fazer isso.
Vamos ficar aqui. Na verdade, você pode
dizer reproduzir animação. Você pode selecionar essa animação de
reprodução. Você simplesmente não define nada aqui que
realmente exclua todas as animações
e o player não
terá nenhuma
animação aplicada Agora, novamente, basta
clicar duas vezes aqui para fazer uma anotação de redirecionamento para que você possa ver
o que estou fazendo Portanto, não é difícil
assim. Ok, agora vamos compilar. Acho que também notei
um bug na sombra. Se eu simplesmente gerar o jogador novamente. E eu mostrei ao jogador. Ok. Incrível. Agora há
um bug aqui com a sombra, porque aqui, como jogador, você pode ver que eu posso me mover. Isso ocorre porque, lembre-se de
que temos uma
malha de terceira pessoa . Malha em terceira pessoa. O que fizemos antes foi que, se
você procurar por uma sombra, fizemos com que essa
mostrasse uma sombra oculta. Fizemos isso, lembre-se, há muito tempo, neste curso porque queríamos mostrar
a cabeça do jogador. Estamos usando essa
malha de terceira pessoa para mostrar a sombra correta. Vamos conversar em terceira pessoa, vamos fazer isso aqui. Por exemplo, digamos que set hidden, acredito que seja chamado de
conjunto oculto no conjunto de jogos
cast hidden shadow. Essa,
não digamos mais nada, porque eu não
quero mais mostrar minha sombra. Também há uma
última coisa que eu esqueci. E esse é o componente da
cápsula. Não
quero que esse componente da cápsula colida com armas
e coisas assim Na verdade, vou desativar a colisão para este também Vou fazer isso antes ativar a colisão
para a malha, porque talvez às vezes essa
cápsula colida com essa malha e crie uma bagunça Vamos afastá-lo e
dizer que a colisão definida está ativada. Digamos que não haja uma
colisão como essa. E espero que seja isso. Vamos afastar isso. Ou, na verdade, basta
movê-lo para cá. E não precisamos
movê-lo até lá. Agora deve funcionar. Vamos compilar agora.
Clique em Jogar. Se eu for até aqui, deixe-me criar esse jogador Agora eu posso atirar no jogador. Agora destruímos
todas as mortes, incrível. Eu não colido com o jogador. O jogador ainda não está se movendo. E se eu me mudar para cá
com o outro cliente, você pode ver que eu posso mover
minha câmera da maneira que eu fizer, como se a sombra
tivesse sumido, eu estivesse morto aqui. Claro, você pode
torná-lo mais complexo. Como se você pudesse criar
uma câmera para espectadores. Em vez de fazer isso, você pode até mesmo desativar a câmera. Você não pode, você é
assim e não consegue
mover a câmera. Mas acho que está tudo bem
por enquanto. Eu adoro isso. Sim, tudo está
funcionando corretamente. O problema que temos
agora é que o jogador não deixa cair as armas depois que você a
tem Você pode ver aqui, uma vez que você
tem armas e eu atiro em você, você ainda está segurando
aquela arma. Quero que o jogador solte
a arma, porque imagine que se
todos os jogadores estivessem segurando
as
armas quando morrerem, todas essas armas
desaparecerão cerca de 2 minutos após
o início da partida. Eu quero que o jogador solte
a arma, e nós também podemos fazer isso. Vamos seguir em frente e
passar para a próxima lição.
169. 12.02 Drop Weapon When Dead: Tudo bem, então vamos fazer
o jogador largar todas as armas quando
o jogador morrer aqui. Sempre que definimos isso como verdade. Então, deixe-me arrastar
isso e fazer um galho e perguntar se está
morto está definido como verdadeiro. Porque mais tarde
vamos configurá-lo como falso quando o jogador
estiver respondendo Mas, por enquanto, o jogador está morto e queremos
soltar a arma. Ok, vamos voltar como um lembrete e ver o que
fizemos com a arma de lançamento Se eu voltar ao evento da arma
lutqudrop, ou a um gráfico, e para soltar a arma, na verdade
ela está E apertamos o botão e
depois soltamos a arma. Na verdade, só precisamos
convocar esse evento aqui. Na verdade, não estamos
apertando um botão, estamos apenas forçando o jogador
a soltar todas as armas Então, na verdade,
vamos fazer isso. Este evento procurou o tipo de arma
equipada. E acho que precisamos
modificar
isso porque não é apenas a
arma equipada que precisamos soltar, também
precisamos soltar
a outra arma que está nas nossas costas
ou na nossa coxa Na verdade, precisamos modificar um pouco
esse código. Vamos voltar apenas para
anotar e ver o que
acontece por aqui. Vamos ligar para o servidor. Acredito que se chame arma de
solicitação de entrega. Solte a arma. Essa. E vá em frente e
ligue agora mesmo. Quando ligarmos novamente, ela soltará
a arma equipada, mas na verdade
queremos descartar todas
as armas do inventário. Deixe-me modificar
isso para este evento. Vou adicionar uma nova variável. Vamos adicionar a base de armas. Porque vamos
dar a informação que queremos aqui, base de armas. E, em vez disso, vamos chamá-lo de nós. Aqui temos
que especificar qual arma queremos
soltar quando clicamos no
botão para soltar a arma, quando clicamos no K, eu
quero soltar minha arma. Essa aqui, arma equipada. Agora, isso é correto
para este. Agora vamos atacar a partir
daqui e dizer o nome. Obtenha a variável de nome
exatamente como antes. Obtenha informações sobre a arma e quebre isso e então
podemos obter o tipo. Em vez de fazer isso, podemos excluí-lo e conectar isso em um, deixe-me remover todo
esse código. Isso, e podemos ver
o que estamos fazendo agora. Organizamos tudo. Tudo está indo bem. Só estou expandindo isso aqui. Expandindo isso aqui também. Fantástico, temos essa configuração. Agora, se você acessar o gráfico de
saúde e armadura, agora podemos especificar de qual
arma você está falando Nós simplesmente queremos colocar todas
as armas no inventário. Em vez de fazer quatro voltas, eu poderia fazer quatro voltas em cada volta, novamente com o inventário aqui. E poderíamos inserir o
inventário de cada um deles, poderíamos soltar a arma. No entanto, lembre-se de que, com
um loop de quatro em cada, ele não espera que
esse código seja reproduzido. Ele reproduzirá duas vezes esse código
de lançamento de arma. Na verdade, vai bugar seu código aqui porque
vai mudar a arma aqui. Isso mudará esse
valor aqui antes que você tenha a chance de terminar
esse ciclo de código. Em vez de fazer isso,
o que vou fazer é
fazer um loop manual. O que podemos fazer aqui é fazer o inventário. Apenas certifique-se de que
este não esteja vazio, porque não queremos
soltar armas. Se isso não tiver nada, vamos pegar o tamanho
desse inventário e garantir
que seja maior que zero, porque não queremos fazer nada se for
maior que zero. Exatamente desse jeito. Se for
maior que zero, também
solte a arma. Se for maior que zero, isso significa que temos
algo no inventário. Deixe-me pegar o primeiro item
que temos no inventário. Isso estará no índice zero. Eu quero ir em frente
e largar isso. Vamos atacar a partir daqui. Assim, eu acredito. Não precisamos fazer mais aqui. Porque se você voltar
para a arma de soltar, lembre-se de que, dentro dessa função de
soltar arma, você já removeu esse
item do inventário. Porque é muito importante removê-lo do inventário. Agora, caso contrário, você terá
um loop infinito aqui. Vamos atrasar esse código. Vamos atrasar em algo como 0.1. Então, podemos voltar
e reproduzir esse código novamente. Então, diremos novamente: vou
fazer algumas anotações
espelhadas para que possamos
realmente ver o que estou fazendo por esta aqui, assim como também do
outro lado. O que estamos vendo
aqui basicamente é soltar essa arma, atrasar o código e
tentar executá-lo novamente. Tente verificar se esse
comprimento ainda está acima de zero. Lembre-se, nós o removemos
aqui na arma de lançamento. Tecnicamente, deveria ser zero
se tivéssemos apenas uma arma. No entanto, se tivermos duas armas, o comprimento disso ainda
será um. Porque o comprimento
era de dois antes. Porque tínhamos duas armas. Agora é uma arma.
Vou verificar novamente. O comprimento é maior que
zero Se for. E pegue de novo. Pegue
essa arma. Largue isso. Então, ele continua caindo
até que você não tenha mais
nada para arrastar
daqui e dizer que não há mais
ou nenhuma arma para soltar Ele imprimirá a sequência se você tiver zero armas para
começar ou se tiver retirado todas as armas
do inventário Agora você pode diminuí-las, acredito que 0,05, talvez até Mas deixe-me escolher 0.1 Realmente não
importa que
o jogador não perceba. De qualquer forma, deixe-me
clicar em Play. E vamos experimentar
e ver se temos problemas. Se eu tiver essa arma aqui, esse jogador saqueia
todas essas armas Na verdade, deixe-me mover
esse jogador para cá. Assim, podemos ver as
armas sendo lançadas. Deixe-me atirar nesse jogador. Agora podemos ver o jogador
realmente soltar as armas aqui. Essa pistola e o K. Se
eu largar isso e
for até a pistola, eu mesmo tenho uma pistola
, então deixe-me Eu posso saquear essa pistola. Eu posso até mesmo saquear o K que
esse jogador deixou cair. Eu posso perdê-lo como antes. Não há nada realmente errado
com isso. Incrível. Vamos experimentá-lo no
cliente também. Esse era o servidor. Deixe-me minimizar isso e
ir até o cliente. O jogo para o servidor. Eu vou querer que o servidor
tenha muitas armas. Agora que os íons vão atirar nos jogadores, aqui estão eles. Vou deixar isso em quatro. Eu quero o K, eu aguento. Incrível. Tudo
está funcionando agora. No momento, temos um problema não conseguir saquear
duas armas no momento Às vezes, temos
um problema em
que deixamos cair a arma e não
podemos realmente saqueá-la porque ela tenta
compará-la com a arma caída Na verdade, vamos resolver isso também. É como fizemos
com o conserto da arma. Se voltarmos, se eu
voltar aqui no meu gráfico,
alaúde e equipamento, e este é
o código de arma que criamos Lembre-se de que comparamos a
variável da arma
do lote com a que queremos lotar
agora. Se for a mesma, apagamos a notificação e a executamos aqui Porque lembre-se de que, se você executar
o mesmo valor duas vezes, ele não será executado. Simples assim. Vamos voltar. Deixe-me
abrir o depósito aqui. Vamos até a arma de
lançamento aqui. A maneira como eu quero fazer isso
é porque dentro de uma função você não pode
realmente fazer um atraso como
fizemos antes aqui na arma
do lote, onde atrasamos aqui antes de
executarmos o código. Nas funções, você não
pode atrasar. Isso é outra coisa. Esse não é o atraso normal
que costumamos fazer. Precisamos realmente fazer isso
fora da função. Precisamos fazer isso
aqui em vez disso, aqui, quando quisermos
soltar a arma. Vamos criar o código aqui. Quero fazer com que a arma caia aqui e não
a coloque em nada assim. Então eu quero arrastar a partir daqui e dizer atraso, como antes. Configure 20.05 e então eu quero largar
a arma Antes de fazer isso, não
quero fazer isso o tempo todo. Quero verificar se isso
é o mesmo de antes. Vou pegar essa
arma para soltar e dizer: é igual à arma aqui no
inventário que acabei de encontrar? Deixe-me fazer um galho.
Se isso for verdade, eu quero fazer isso aqui,
deixe-me voltar atrás. Se isso for verdade, eu
quero fazer isso aqui. Se for falso, eu só quero
executar o código como antes. Deixe-me reorganizar isso para que você possa realmente ver
o que está acontecendo Ok, assim, estamos tentando comparar a arma a ser soltada com a que estamos
tentando soltar aqui. E se for o mesmo, vamos esclarecer isso
e fazer tudo isso. Ok, ótimo aqui,
na verdade não precisamos disso. Podemos simplesmente deletar
este daqui. Além disso,
às vezes, novamente, a arma se torna invisível porque esse ator não consegue
reconhecer esse ator, mesmo que eles sejam iguais. Em vez de fazer isso,
vamos simplesmente deletar isso. Exclua isso e
vamos colocá-lo aqui. Em vez disso, excluímos constantemente essa arma para soltá-la
antes de usá-la novamente. E isso é bom. Não há realmente nenhum problema com isso. Na verdade, vamos fazer isso
também para o saque. Em vez de verificar se é a mesma coisa,
vamos excluir isso. Vamos fazer isso
porque
realmente não dói muito ou não
dói de verdade. Na verdade, isso
realmente não importa. Vá em frente e
conecte-o assim. Vá em frente e compile. clicar em
jogar
agora, verifique novamente. É principalmente para o
cliente, pois é
aqui que os
problemas de replicação ocorrerão Aqui. Como cliente,
como servidor. Vou saquear algumas
armas e me
destacar aqui e
matar esse jogador Agora o jogador está morto. Agora vou largar minha arma
para saquear essa Estou largando a pistola agora,
carregando a pistola. Funciona para que possamos
saquear as duas pistolas. Vamos carregar essa arma. Continue saqueando a arma
e veja se você sai, se tem algum problema
ou se está tudo bem Podemos ver que nada está
ficando invisível, tudo parece bom. Só estou tentando ver se
há um bug no momento. Acho que vi um bug em que,
na verdade, deixei cair os quatro. Você pode ver agora que deixei cair o quando pressionei em vez disso. No momento, o bug
é que, se escolhermos um jogador aqui e
equiparmos duas armas, e se eu clicar em G
para soltar a arma, você verá que a arma nas
minhas costas está caindo E isso é depois das novas
edições que acabamos de fazer. Vamos verificar o que está acontecendo. O problema talvez
seja escapar
da arma ou soltá-la
aqui Para soltar a arma, estamos soltando a arma
equipada Vamos primeiro verificar
se isso é verdade. Qual é a arma equipada? Vamos realmente fazer isso aqui embaixo. Vamos fazer isso aqui embaixo para que possamos imprimir o nome da arma. Basta conectá-lo aqui, compilar
e salvar. Agora deveria dizer pistola. Quando tento soltar minha arma
e ela diz pistola, a arma equipada está correta Não há nada de errado
quando saqueamos a arma. Agora conhecemos a
arma de saque. A lógica está correta. Estamos tentando soltar a pistola, mas por algum motivo o
rifle está caindo Agora vamos imprimir isso. Deixe-me também tentar ver
se estou desarmado ou não. Na verdade, não faz sentido porque estamos
soltando a arma Então, sabemos que não estamos desarmados, estamos soltando a Algo está errado aqui. E eu acredito que esse loop, mais uma vez, eu te disse antes, loops não esperam pelo
que você está tentando fazer Esse é um problema com os loops. Às vezes, eles
simplesmente executam o código. Se eu voltar aqui, acredito que está tentando
soltar a segunda
arma que você saqueou Porque não vai
esperar pela sua demora. Na verdade, ele
percorrerá e eliminará o último índice. Eu acredito que isso é
o que está acontecendo. Em vez disso, vamos
desconectar isso. Deixe-me deletar isso. Aqui,
deixe-me afastar isso. Agora, quando encontrarmos uma arma, vamos criar uma nova variável. Vamos fazer uma nova chamada arma
encontrada para soltar. É essa, uma
arma encontrada para soltar. Vamos fazer com que essa
arma encontrada seja verdadeira. Então, vamos quebrar o ciclo. Agora encontramos uma arma e fazemos anotações
como antes. O que podemos fazer com
isso agora é deixar
eu desconectar isso
e afastar isso. Agora vamos pegar isso e
fazer um galho e perguntar, temos uma arma? Ele encontrou uma arma para soltar. Se isso for verdade,
primeiro queremos definir isso como falso. Porque da próxima
vez que
fizermos isso, queremos ter certeza de
que não está funcionando. A próxima coisa é que queremos
largar essa arma. Só estou movendo isso para cá, e está tudo bem. Vamos soltar a
arma como antes. Mas vamos fazer isso aqui
embaixo quando o loop estiver realmente concluído aqui. E a arma a ser solta pode
ser apenas a arma que
você tem agora. Porque lembre-se de
que você quebrou o laço, então ele ainda está na
arma que você encontrou. Não precisamos fazer
nada dentro daqui. Então vamos atrasar. E então vamos
configurar isso
para interagir novamente.
Ok, vamos compilar A próxima coisa que queremos fazer
é que tudo isso esteja correto. Não há nada de errado aqui. A próxima coisa que eu quero fazer voltar à minha armadura de saúde e lógica de
danos aqui Apenas certifique-se de que você
tenha esse atraso de talvez até 0,2. Acho que tive que
0,1. Se ele falhar, às vezes é porque você está soltando as
armas muito rápido. Acho que vou chegar a 0,2 e vamos compilar
e salvar tudo Essa é a lógica
que temos até agora. Se você perdeu alguma coisa, verifique se
está assim, assim como a lógica para
soltar a arma Se eu voltar
ao meu gráfico aqui,
saqueando, certifique-se de que o
saque seja assim Removemos a comparação. Também posso remover esse nó de
redirecionamento. Isso é o que temos até agora. Nós simplesmente deletamos essa variável, deitamos
instantaneamente um pouco e depois saqueamos a arma Ok, isso está parecendo bom. Além da arma de soltar, fizemos essa arma equipada para ser conectada a este servidor. E então usamos o tipo de
arma aqui e nos
certificamos de quebrar o circuito
dessa forma para que ele não se solte. Ok, essa é a nossa lógica até agora. Se precisarmos, podemos
tentar consertar as coisas novamente, mas acho que isso deve resolver o problema. Vamos testar
e ter certeza de que
nada está funcionando. Vou
minimizar o servidor. Vou jogar no
cliente porque é principalmente aqui que a
replicação está dando errado Vamos pegar uma arma
aqui como servidor. Agora, se eu for até o cliente. Aqui com o cliente e eu atiro no servidor, aqui
eu solto a arma. Eu tento saquear. Eu posso saqueá-lo. Eu tento saquear a pistola. Não posso porque tenho um. Se eu a deixar cair, vou até lá e tento saquear
a pistola aqui No momento, tenho um
problema de replicação com a pistola. Se eu simplesmente fechá-lo e dar uma olhada novamente aqui
para ver os atrasos, tenho 0,05 após queda
da arma e, em seguida,
atrasamos em 0,1 para
ter certeza de que podemos gostar dessa interação depois de
executarmos essa função Além disso, se você
voltar para a saúde, esta é 0,3 Agora podemos
tentar fazer com que seja 0,2 novamente, mas vamos mantê-la em 0,34 Agora, antes de testarmos as coisas, vamos ver a
morte que causamos aqui Em vez de configurar a
malha para ativar a colisão. Porque, para a malha, se você
descer até a colisão, verá que ela também está interagindo com as
armas Está interagindo com a
estática mundial e a dinâmica mundial. Vamos tentar ativar apenas a física
da colisão, não a consulta, não estamos nos sobrepondo às armas
e Em vez de ativar a colisão, vou definir a física apenas porque estamos
interessados apenas em física Assim, podemos fazer aquele efeito de boneca de pano
e cair no chão A física só deveria
ser boa aqui. Vamos agora experimentar
e ver se funciona. Acredito que já tive um bug antes
com a interação do jogador. Quero lembrar esta
caixa para poder
consertá-la aqui como jogador ou cliente. Vamos
filmar o servidor. Agora eu posso largar isso, tentar muito e saquear a pistola K Agora eu também posso saquear a
pistola. Eu não tenho nenhum
problema se eu sair. Você pode ver aqui que
recebi um erro dizendo que eixo não está tentando ler a
propriedade interagindo com o player Se você simplesmente clicar no erro, aqui está. Só está recebendo um erro aqui. Eu acredito que é o
jogador que está morrendo. Na verdade, está configurando
esse jogador para isso quando diz eixo não. Você pode simplesmente corrigir isso
certificando-se de que seja válido. Se eu simplesmente afastar isso, posso pegar isso e clicar com o botão direito do mouse e convertê-lo em
um get validado E vamos nos certificar de que é
válido antes de continuarmos. Então, a próxima coisa
também é o bug aqui, porque me mostra que
a era também chegou. Agora eu fiz com que isso fosse válido porque também
vem daqui de cima. Você pode ver que ele vem
diretamente para esse loop. Mesmo que consertemos isso, isso vai funcionar por
causa deste Certifique-se de que isso seja válido. Isso nos deu uma era
por causa dessa. Estamos tentando verificar as coisas
quando isso não é válido. Vamos nos certificar aqui
depois do jogador, e acredito que estamos interagindo com o jogador
que está soltando a arma Vamos copiar isso
aqui, aqui embaixo. Certifique-se de que
não foi esse jogador que também deixou cair
a arma. Porque não queremos
saquear a arma, simplesmente
caímos. Isso não faz nenhum sentido. Vamos afastar tudo isso. Assim, na verdade, acho que podemos deletar este, porque já estamos
pedindo isso. Vamos fazer uma ramificação e
vamos conectá-la,
conectados aqui. Se isso for verdade,
vamos definir o player que interage,
vamos movê-lo para frente Acredito que podemos deletar isso, porque acabamos de verificar isso. Vamos deletar. Exclua isso. Isso deve funcionar bem. Neste caso, estamos configurando
e depois verificando se é válido.
Isso também é bom. Ok, agora vamos
fazer algumas anotações. O motivo pelo qual não estou excluindo isso e apenas
conectando-o aqui desta forma porque quero ter certeza de que isso é válido
antes de continuarmos Porque também estamos
vindo
daqui e, na verdade, nos
conectando diretamente a isso. Mesmo estando aqui, precisamos ter certeza
de que isso é válido antes de
continuarmos aqui. Também vou me certificar de
que o jogador seja válido. Arrastar aqui e
dizer que é válido, vá em frente e
também, certifique-se de que o
jogador seja válido e também que não foi
o jogador que
soltou a arma Agora vamos filmar
o servidor novamente. Agora vamos largar a
arma, carregar a arma. Deixe-me
aumentá-lo para que possamos realmente ver o que está acontecendo agora. Tudo está funcionando. Eu posso soltar a pistola. Se eu carregar duas coisas e eu
cair, soltamos a pistola, não
temos mais esse bug. Ok. Posso carregar tudo e não recebo
nenhuma caixa quando saio disso. Ok, tudo está funcionando agora. Sei que tem sido
confuso porque
tínhamos muitas caixas que
precisávamos cuidar Certifique-se de que, quando
o jogador estiver morto, você solte a arma Estamos recebendo essa primeira
arma no inventário. Se o tamanho do
inventário for maior que zero, o que significa que temos uma
arma no inventário, estamos soltando a
arma e também
atrasando em uma quantidade que não
faria com que a arma caísse 0,3
dólares neste momento No momento, talvez
possamos reduzi-lo para 0,2. Mas estou satisfeito
com isso agora, ninguém vai
saber disso de qualquer maneira. Então, dentro da queda da arma, fizemos esse loop aqui. Fizemos esse touro entrar,
para não sairmos. E não precisamos
replicar essa variável porque estamos apenas verificando
as coisas dentro do servidor Estamos usando essa variável
fora do servidor, então nunca
a usamos no cliente. Nós realmente não
precisamos replicá-lo. Estamos
examinando isso, estamos limpando essa variável primeiro Antes de soltarmos a arma. Soltamos a arma, a atrasamos para garantir que
ela seja executada e que os jogadores
possam interagir com ela. Mais uma vez, o atraso
é de 0,1 para este. Finalmente, para a arma do
lote, novamente, apenas
removemos diretamente a variável
da arma do lote. O Notify o limpou e
depois o colocamos aqui. Ok, então isso é tudo que eu sei, é um pouco confuso, mas tivemos
que nos livrar de todos esses problemas Agora, novamente, se você
tiver algum problema, fique
à vontade para visitar meu site, Pixel Helmet.com, ou você também
pode falar comigo
no Discord Você pode ver minha discórdia no meu perfil e também é apenas
o capacete Pixel Tudo bem, obrigado por assistir e vamos
para a próxima lição.
170. 12.03 Respawn: Agora que terminamos
com a morte, vamos garantir que o
jogador também responda Dentro da
base de jogadores. Novamente, dentro da saúde, da armadura e dos danos Deixe-me clicar aqui com o direito e
com o botão direito do mouse. Em seguida, feche
as guias à direita. Ok, dentro daqui, vamos clicar com o botão direito agora e criar um novo evento personalizado.
Ligue para esse. Vamos clicar com o botão direito do mouse
novamente e torná-lo um evento personalizado e chamá-lo de Re. Então, este será executado no servidor exatamente como antes. Vamos executar isso, o
servidor é confiável. Esse aqui em cima, vamos
chamar o servidor de respawn. Agora estamos prontos para
responder. Agora, para o respawn, o que simplesmente queremos fazer é mudar a localização do
jogador Porque imagine que o jogador
tenha morrido aqui no chão. Basicamente, vamos mover esse jogador de volta
ao ponto de desova. Isso é o que estamos
tentando fazer agora. Já temos os
pontos de desova no modo de jogo. Se você se lembra, se você
voltar às plantas, abrir o modo de jogo e,
dentro do modo de jogo, temos uma
solicitação: spawn player Agora não queremos
gerar o jogador, lembre-se de que só matamos o
jogador por não nos movermos Tecnicamente, você
já foi gerado. Nunca removemos
você do jogo. Não queremos
ligar para isso de novo. O que queremos fazer é fazer essa
lógica mais uma vez. O que podemos fazer é
precisar do modo de jogo
para capturar os pontos de origem do antiterrorista
e do terrorista Vamos voltar à
base de jogadores e dizer: comece o modo de jogo. Esta é apenas a referência, digamos que um modo de jogo
como este. Em seguida, conectado a isso, obtenha referência do modo de
jogo em
nossa interface de blueprint Agora vamos pegar os pontos de desova do
Darorist, vamos pegar os pontos terroristas,
este ganha pontos problemáticos este ganha Agora, o que queremos
fazer, assim como antes, vamos voltar ao modo de jogo. Na verdade, podemos simplesmente pegar um ponto de spa aleatório e copiar essa transformação
como antes. Também podemos copiar isso aqui, controlar C. Vamos voltar ao controle
da base de jogadores
V. Vamos conectar o terrorista do condomínio
e o terrorista a eles e agora
vamos notificar o representante também, lembre-se de conectar este Precisamos da equipe que
você selecionou. Precisamos saber se o jogador é antiterrorista
ou terrorista. Lembre-se de que fizemos isso na interface do usuário. Voltamos à interface de usuário em que
você seleciona a equipe. Você acessa o gráfico aqui e seleciona em qual
equipe está. Isso leva você ao modo de jogo. O modo de jogo aqui, selecione a equipe. Na verdade, vamos criá-la como
uma variável para que possamos usá-la, porque no momento não
há como usá-la. Vamos criar uma nova equipe variável. Se eu apenas segurar o
mouse sobre ela, você pode ver que é uma
referência de classe de ator, se você ator e é essa. E você pode selecionar a referência
da classe. Vamos compilar agora, lembre-se que só precisamos definir
coisas assim dentro do servidor,
não no cliente Aqui no servidor,
vou configurá-lo como equipe e depois conectar este aqui para
torná-lo mais limpo. Agora, não precisamos
replicar isso porque nunca
vamos
usá-lo no cliente Só precisamos usar isso no servidor para encontrar
o ponto de desova correto Essa variável em si não
é necessária, não
precisamos realmente
replicá-la Agora, definimos essa
variável aqui. Precisamos ter o controle do
jogador. Vamos clicar com o botão direito do mouse e dizer get controller e encontrar
a função aqui. E então vamos atacar e dizer referência ao controlador
do jogador. Vamos conectá-lo agora como
o controlador do player. Vamos pegar a variável de equipe
que acabamos de criar. E vamos agora
conectá-lo aqui embaixo. Ok, agora estamos perguntando se o jogador
é terrorista
ou contra-terrorista? Se o jogador for um
antiterrorista, que significa que isso
é verdade, vamos encontrar os
pontos antiterroristas. Porém, quando o
jogador for terrorista, isso será falso,
então ele escolherá B, que são os pontos terroristas. Ok, vamos clicar com o botão direito do mouse
e promover isso para nossos pontos de
resposta variáveis do jogador. Ou, na verdade, deixe-me
chamá-lo de responder transformar.
Isso é mais correto. Novamente, precisamos nos
tornar um representante notificar porque estamos mudando
a localização do jogador Essa é uma
mudança visual para clicar nela. Vamos compilar,
vamos entrar aqui. Simplesmente o que precisamos
fazer aqui é mudar a transformação do
ato. Vamos clicar com o botão direito do mouse e
dizer definido e selecionado. É só eu. o jogador que acabou de
morrer. Isso é bom. Agora, para a nova transformação, vamos pegar essa
que acabamos de dizer. Agora, o problema com
este, certo? Agora, o jogador, se você
clicar na malha, lembra que fizemos antes de eu dizer que a escala é
1,6 na escala. Se eu conectar isso
diretamente aqui, ele será redefinido para 11.1.
Isso
ocorre porque esse ponto da Espanha
aqui é na verdade 111 O que você pode fazer é que, na verdade,
estamos realizando essa transformação
a partir dos pontos da Espanha. Se você destacar esse
ponto para a versão 1.6, deixe-me voltar
aqui para a base de camadas. Você conecta isso diretamente e
tem isso em 1,61 0,61
0,6 , então na verdade será 1,6, mesmo
que você tenha definido como um Na verdade, está
transformando esse ponto de desova. No entanto, para o meu exemplo
aqui agora para o seu jogo, se
você tiver 111, você realmente não
precisa fazer isso aqui, mas para mim,
vou explicar isso aqui. Eu vou transformar,
quebrar, transformar aqui,
fazer transformar aqui. Pois a localização está boa,
a rotação está boa. No entanto, para a escala,
quero mantê-la 1,6. Vamos
conectá-la assim. Agora vamos compilar
e voltar. E também queremos ter
certeza de que está morto seja definido como falso, porque
agora não estamos mais mortos. Nós apenas respondemos,
saímos daqui e dizemos morte e definimos isso
como falso. Agora precisamos trabalhar nisso
na próxima lição porque ainda
temos física simulada e ainda não temos nenhuma
colisão e tudo E vamos trabalhar
nisso aqui na próxima lição. Mas, por enquanto,
vamos clicar em play. Na verdade, antes de clicarmos em jogar, precisamos responder aqui. Nunca convocamos esse evento. Nada vai acontecer. Vamos ligar para
cá quando o jogador não
estiver mais morto. Sempre que definimos isso como falso. E vamos realmente fazer isso aqui. Sempre que você terminar de
largar todas as suas armas, deixe-me atrasar o
código em 3 segundos. Vamos melhorar
isso mais tarde,
mas, por enquanto, vamos
responder e ver se funciona. Vamos atrasar 3 segundos e depois responderemos
. Deixe-me clicar em Play. Eleja terrorista aqui, selecione
terrorista, por exemplo. Agora vou colocar
algumas armas neste jogador. Vá até aqui no cliente. Agora, deixe-me abrir
os dois no cliente. Eu sou o jogador aqui. O jogador deve
responder em um
dos pontos de desova após 3
segundos, como você pode ver aqui No momento, nada está acontecendo. Isso ocorre porque
ainda simulamos a física. E esse é o problema. Se apenas tentarmos clicar
na malha da cápsula. Deixe-me dizer que aqui, escondido no jogo, vou
desligá-lo para que eu possa ver as cápsulas e realmente
ver o que está acontecendo. E se eu tocar
a arma novamente, saia aqui como terrorista. Eu vou sair aqui. Agora. Vamos tentar novamente. Vamos
atirar no jogador e ver. Porque se a cápsula se mover,
não é um bug que temos. Se você der uma olhada
agora, depois de 3 segundos, você pode ver que a cápsula
desapareceu do player. E isso é porque a
cápsula está aqui agora. Agora, o jogador está realmente aqui. No entanto, o jogador
ainda está deitado novamente. Isso ocorre porque
simulamos física. E tudo isso
precisamos trabalhar
na próxima lição aqui
nesta parte e fazer com que funcione.
171. 12.04 Não está morto RepNotify: Tudo bem, agora estamos de volta e vamos
trabalhar nisso. É quando é falso. Então, esse representante notifica e para que possamos responder ao
jogador corretamente. O que você quer fazer primeiro,
vamos remover a física. Esse é o primeiro
passo. Vamos pegar a malha e eu vou
dizer que simule a física. A próxima coisa que queremos
fazer é
projetar sombra novamente a partir
dessa malha de terceira pessoa. Então vá em frente e faça isso. O que vou fazer
é colocar a malha novamente. Vou arrastá-lo para baixo. Defina a colisão ativada. Se você simplesmente clicar na malha, ela será configurada para somente consulta. Vou clicar aqui
e configurá-lo para consulta somente. Eu posso redefini-lo para
o que era antes. Vamos criar um
nó de redirecionamento aqui e movê-lo para baixo. A próxima coisa
que queremos fazer é
olhar aqui e ver
o que precisamos fazer. Agora. Precisamos pegar
esse componente da cápsula e clicar nele. E precisamos configurá-lo como habilitado para colisão,
arraste a partir daqui E diga definir colisão
ativada e selecione-a. Em seguida, defina a colisão ativada aqui. Para este, porém, agora este está correto. Além disso, lembre-se de que
desativamos a animação, precisamos executá-la novamente. A animação para o jogador
é esse plano de animação. Neste aqui em cima, o modo de animação está configurado como modelo de animação Na verdade, precisamos fazer isso de
novo a partir daqui. Da malha. E lembre-se de que essa é
a malha aqui a partir dela. E digamos que defina o modo de animação. E vá em frente e selecione
esse modo de animação definido. E você precisa configurá-lo novamente
para usar o esquema de animação. No momento, quando o configuramos
como plano de animação, na verdade também precisamos definir
qual plano de animação Como redefinimos
as configurações aqui, o que podemos fazer é arrastar a partir dessa
malha novamente e dizer que classe é essa instância de animação
definida e conectá-la É o que chamamos
de player MBP aqui, o modelo de animação
que criamos Agora,
o que precisamos fazer é que ainda vamos reservar,
porque vou mostrar para porque vou mostrar você e você poderá ver
o que está acontecendo. Se abrirmos isso de novo, interpreta o terrorista aqui. Agora vamos atirar nesse jogador. Agora esse jogador é baleado. E você pode ver aqui que o
player ainda está portando, mas não há nada aqui. E eu também estou deitado no
chão nesta tela, ainda
há um bug. Isso porque, lembre-se de que,
com a física simulada, tivemos esse problema no
início do curso Se você segurar o mouse sobre ele,
ele dirá que se esse componente está atualmente conectado
a algo, é a malha conectada ao componente da cápsula.
Então,
ao iniciar a simulação, ele
será desconectado Na verdade, está separado do componente
da cápsula. Precisamos recolocá-lo novamente. Vamos pegar a malha aqui. Opa, não os dois. Vamos pegar a malha e,
digamos , anexar componente
a componente. Se você não se lembra do
que fizemos, você sempre pode clicar
na arma saqueada Notifique se você encontrar
a arma saqueada desembrulhada.
Isso é o que fizemos. Desativamos a física e recolocamos
a arma na cena raiz Aqui está a mesma coisa
que estamos fazendo. Vamos voltar para aqui. Agora vamos nos
conectar novamente ou
conectar a malha ao componente da
cápsula. Lembre-se de que está conectado
a, na verdade, não é nada. O soquete não é nenhum.
Para a regra de localização. Digamos que vá direto ao alvo. Encaixe no alvo. Encaixe no alvo. Ok, vamos ver o que acontece se você
clicar em Jogar novamente. E teste
aqui como jogador. Eu vou atirar
no jogador novamente. Agora vamos dar uma
olhada no que acontece. O jogador é gerado aqui. No entanto,
ainda há um problema. O player está aqui embaixo, também na minha tela, o
player tem uma câmera estranha A razão para isso é porque se você clicar
na malha novamente, ao simular a física, você redefine todas as suas configurações Para mim, a localização é essa
e a rotação é essa. Para o jogador, inicialmente
isso também é redefinido. Na verdade, preciso
colocá-lo novamente. Se eu pegar a malha e disser definir definir localização
e rotação relativas ,
preciso conectá-la. Vou apenas
clicar na minha malha e copiar minha localização. Cole-o. Este é o valor z
e a rotação é -90 Vamos agora compilar,
salvar tudo Vamos ver se
tudo está funcionando. Vamos clicar em Jogar. Como
terrorista de novo, como esse cara. Deixe-me atirar no jogador agora
e ver o que está acontecendo. Agora o jogador está
surgindo no chão. Por algum motivo, a
pesquisa foi reconsiderada. Agora estamos parecendo normais. O único problema que
temos agora é que o jogador está
surgindo no chão Para corrigir o problema em que o
jogador está embaixo do solo. O que podemos fazer agora, quando
clicamos em jogar e o jogador está realmente aparecendo corretamente, há nada de errado com
os pontos de St. Nós realmente não precisamos
fazer nada com eles. O problema agora
está aqui, sempre que conectamos esse player, vamos realmente fazer
isso de forma relativa. Vamos manter o jogador relativo. Dimensionamento. Relativo significa exatamente o que
escrevemos aqui. Uma vez que, na verdade
, manterá nossa escala. Vamos voltar ao representante
do jogador aqui
para ver a transformação que fizemos Em vez de fazer 1.6,
na verdade vou excluí-lo e colocá-lo aqui. Porque, novamente, se eu
configurá-lo para ser relativo, ele manterá minha escala. Eu compilo e vamos
clicar em jogar e ver o que acontece se
eu selecionar terrorista aqui Vamos atirar no jogador. Vou filmar mais. Vamos ver
onde o jogador responde. Agora o jogador está
respondendo ali. Se eu maximizar meu ponto de vista aqui, você
verá que o jogador tem um peão No entanto, o jogador está flutuando. Isso porque eu esqueci de
habilitar a caminhada. Se eu voltar
para cá em vez disso. Lembre-se de que aqui configuramos a animação para isso e
desativamos o movimento. Ao desativar o movimento, você precisa ativá-lo novamente. A maneira de fazer isso é deixar que
façamos isso logo antes
do plano de animação Vamos adiar isso. Vamos pegar o componente de
movimento do personagem e dizer definir o
modo de movimento como este. Defina o modo de movimento conectado. Agora você pode configurar
este para andar, o andar é o padrão
que você tem por padrão, deixe-me mover isso para baixo. E agora deve funcionar. Se você compilar e
salvar tudo, talvez eu queira mover esses pontos de
desova mais para Então, eles estão realmente
alcançando o chão. O jogador não está
caindo no chão. Se eu simplesmente movê-los para baixo, ou se eles realmente estiverem
aqui no chão, isso deve funcionar se
eu os mover também. Essa. Essa.
Essa, e essa. E eu os movo
para baixo para ficarem no chão. Ok, vamos jogar agora
selecione terrist, aqui estou eu. Vamos aparecer como
o outro jogador. Agora vou
atirar no jogador. Vamos ver o que os jogadores, o jogador, está
gerando lá E eu posso andar
normalmente como antes, se eu fotografar como cliente. Se eu apenas maximizá-lo para
ver se está funcionando, agora o servidor está morto. O jogador responde ali, isso está funcionando nos dois sentidos Se eu tentar novamente, agora o jogador morre
rapidamente porque não
definimos a saúde máxima. E podemos fazer isso
na próxima lição. Mas você pode ver que o
jogador está morrendo corretamente e nada
está saindo. Incrível, vamos passar
para a próxima lição.
172. 12.05 Redefinindo a saúde no Respawn: Vamos agora redefinir
a saúde do jogador quando ele responder. E isso é muito fácil porque já
fizemos todo o trabalho se você
voltar para a saúde aqui. E o que podemos fazer é aqui, sempre que o jogador responder, sempre que fizermos com que o jogador
não morra mais, isso aqui vai disparar daqui O que podemos fazer é
arrastar e dizer Set player he, acredito que chamamos isso
de Set player health. Basicamente, esse
é o que fizemos antes. Então, defina a saúde do jogador. E também temos um
chamado set Player Armor. Chame aquelas que já
criamos de funções. Aquele que vamos ver aqui. Obtenha o máximo de saúde do jogador. E também temos armadura máxima para o
jogador. Vamos reabastecer o
jogador com saúde e armadura. Agora podemos jogar e
deve funcionar. Isso foi tudo o que tivemos que fazer. Ok, deixe-me filmar aqui e ter certeza de
que está correto. Se eu minimizar isso para que eu possa realmente ver a saúde, esta e também a do
cliente. Vamos filmar como o
Klein para ver se funciona, o jogador deve recomprar Aqui. Você pode ver que o
jogador está saudável novamente. Podemos ver que o jogador está recuperando 100 pontos de
vida e armadura E eu tenho que atirar no jogador novamente antes que ele morra. Fantástico, vou experimentar aqui no servidor
e ver se funciona. E o cliente
também
deve responder com a
máxima saúde correta a
máxima saúde correta e com tudo
funcionando como deveria.
173. 12.06 Prevenindo danos à equipe: Agora podemos
atirar no colega de equipe. Se você é terrorista,
não deveria ser capaz de atirar em seu
colega de equipe terrorista Alguns modos de jogo também
podem ser usados, mas se quiser
não causar danos à equipe, vamos até
a base de jogadores. O dano é feito
aqui no lote. Equipe aqui a filmagem e recarregue. É aqui que filmamos. Esse é o traçado de linha que estamos criando. Simplesmente o que queremos fazer é não causar danos. Se você está atirando em seu companheiro
de equipe. O que queremos verificar é se o ator de sucesso está
na mesma equipe que você, você pode pegar esse ator de sucesso
e dizer obter referência. Vamos conectá-lo depois daqui. Se eu tirar isso um
pouco daqui, vamos expandir isso para que
tenhamos espaço para trabalhar. E eu também vou
abrir espaço aqui. Vamos adicionar o código no meio. Vamos pegar a referência do jogador. Digamos que obtenha o
controlador porque
temos essa variável de equipe
dentro do controlador. Obtenha a
referência do controlador
do jogador . Aqui, podemos acessar a variável de
equipe que acabamos de criar. Fizemos isso nas aulas
anteriores. Podemos usar isso para
ver se a equipe aqui é a mesma
que temos contra nós. Se pegarmos o controle do
jogador e pegarmos essa variável de equipe, nós as compararemos. Estamos pegando essa variável
de equipe do jogador que acabamos de bater. Estamos usando nossa
própria variável de equipe. Se isso não for igual a isso, podemos causar danos
se você apenas fizer um galho. E podemos aplicar o dano Se não estivermos na mesma equipe, eu quero aplicar o dano. No entanto, se estivermos
na mesma equipe, na verdade não faremos nada. Deixe-me reorganizar
isso um pouco aqui. Ok, agora que
está reorganizado, se não estivermos na mesma
equipe que o outro cara, vamos aplicar dano E essa era, na verdade,
a única coisa que precisávamos fazer se eu selecionasse terroristas agora E se eu selecionar um terrorista aqui, eu não deveria ser capaz de
prejudicar esse colega de equipe Se eu atirar nesse colega de equipe, você verá que nada
está acontecendo Não estamos perdendo nenhuma saúde. Eu tento com este. Se tentarmos aqui como servidor e
também fotografar o cliente, nada vai acontecer. Ok, então é assim que você
evita danos à equipe.
174. 13.01 Criando a interface do usuário da pontuação: Agora que terminamos
o jogo base, vamos
adicionar algumas pontuações da equipe. Pontuação para
contraterroristas e terroristas. Assim, você pode ver o quanto
ganhou em rodadas. Vamos seguir em frente e
ir até a interface do usuário. Vá para a interface do usuário na interface principal, vamos fazer
as rondas aqui O que eu quero fazer é basicamente mostrar a vocês o que
estamos tentando fazer para que seja mais fácil entender que é
isso que estamos tentando fazer. Ter uma pontuação para
contra-terrorista e ter uma pontuação
para terrorista. Mais uma vez, detalhe isso. Veja quais elementos você precisa usar e tente fazer isso
sozinho, se quiser, sem minha ajuda, porque
você deve poder comprar. Agora, se você ainda precisar de ajuda, se não tiver certeza, se não tiver certeza, vamos
fazer isso juntos. Primeiro, precisamos de uma caixa horizontal porque há dois
elementos lado a lado. Vamos prosseguir e
procurar a caixa horizontal. Deixe-me garantir que eu não os
coloque aqui dentro. Basta colocar a
caixa horizontal no painel da tela. Está aqui dentro. Verifique se o ponto de ancoragem está
no meio da tela Se você escrever zero
na exposição, este deve estar no
meio. Precisamos ajustar o alinhamento x para 0,5 na posição do
x. Vou apenas dizer 30, na verdade, o xy 30, então não está na
borda da tela Novamente, tamanho de acordo com o conteúdo. Ok, agora vai ser dimensionado para qualquer conteúdo que eu
tenha aqui dentro. Primeiro, deixe-me adicionar uma sobreposição. Dentro dessa sobreposição, precisamos de uma imagem porque
precisamos de um plano de fundo Eu adiciono essa imagem à
sobreposição dessa imagem. Vamos apenas pesquisar o painel, o mesmo painel
que usamos até agora. Então, neste documento de um painel, novamente, altere o desenho quanto à margem da
caixa para 0,50 0,5 e agora podemos esticá-lo Agora, às 11 no zoom, posso ver o quão grande é. Acho que não vou
fazer o tamanho aqui. Acho que vou realmente
controlar isso mais tarde. Então, deixe-me escrever
32 por 32. Mais uma vez, vou controlá-lo aqui embaixo. Primeiro, vamos ter
uma caixa vertical. Como precisamos de dois textos um
em cima do outro, precisamos do primeiro. Vamos apenas pesquisar por texto. Coloque-o dentro
da caixa vertical. Duplique este. Vou clicar
nos dois. Na verdade, vamos copiar
o estilo deste. Deixe-me clicar nele, segure a
tecla Shift e clique com o botão direito do mouse. Clique nos dois.
Segure a tecla Shift e clique com o botão esquerdo Colamos o estilo. Eu também vou,
vamos ver aqui. Para a sombra,
não
aplicamos nenhuma sombra e tudo bem. Também não temos um esboço. Ok, esse está bem. Vamos agora selecionar os dois que precisamos fazer. Na verdade,
vamos editar o primeiro. Digamos que seja antiterrorista. Vamos apenas escrever um aqui. Deixe-me talvez escrever um
aqui para este. Eu vou colocá-lo
aqui no meio. Na verdade, esse também.
Coloque isso no meio. Coloque isso no meio também. Também aqui na justificativa, vou
colocá-la no meio Agora clique nas linhas
para remover os traços. Agora precisamos de algum
espaço entre eles. Antes de fazer isso, também
vou mudar o tamanho da frente. Acho que é um pouco grande demais. Vou configurá-lo para 20. Clicando nessa sobreposição, temos a imagem, depois
temos a caixa vertical Na verdade, vou colocar alguma margem
nessa caixa vertical. Deixe-me apenas escrever, ou preencher. Então, deixe-me escrever 30 e isso é o que
parece agora. Eu acho que está bem. 30 é
bom para esta caixa vertical. Nós empurramos a caixa vertical longe
das bordas desta imagem. Eu vou mudar
a cor dessa. Apenas tente encontrar a
cor que você quiser aqui. Para o
antiterrorista, vou
reduzir um pouco a saturação Talvez algo
assim esteja bem. Ok, eu tenho o
contra-terrorista, deixe-me adicionar um
espaço entre esses dois. Basta pesquisar por espaço, adicioná-los entre
esses dois textos. Para o Y, vamos escrever dez. Talvez isso seja um pouco demais. Vamos escrever cinco e
dar uma olhada novamente, acho que precisamos de mais. Digamos 88 para o espaçamento. Vamos apenas duplicar isso. Vou
duplicar a sobreposição porque estamos
na caixa horizontal Ele vai adicionar
outro ao lado dele. Deixe-me mudar
este para terrorista. Deixe-me mudar a cor aqui, o tom para algo vermelho Apenas zero aqui. É vermelho. Vou reduzir
um pouco
a saturação porque
acho que é demais. A saturação é 0,8 E eu vou fazer isso
para a outra também, mudando para 0,8,
ela permanece a mesma Vamos adicionar um espaçador
entre esses dois. Se eu pegar o espaçador novamente, adicione-o entre as sobreposições Então, para o tamanho e o x, vamos escrever algo como 50, talvez algo menos, talvez
não 50. Vamos escrever 30. Eu acho que está tudo bem. Ok, se você compilar agora, vamos apenas alterar essas
variáveis porque
vamos usá-las
mais tarde. Este é o número, chame isso de pontuação terrorista T. Vou copiar
isso e garantir que seja variável, pois
precisamos modificá-lo posteriormente. Clique na outra, chame
de pontuação terrorista de texto. Faça essa variável também. Vou clicar em todos
eles e garantir que a visibilidade aqui não
seja
testável porque não quero que testável porque não quero o mouse interaja com eles. Ok, se você simplesmente
clicar em Play para dar uma
olhada na aparência,
é assim que fica. Acho que tudo
está indo bem. Então, vamos passar
para o próximo.
175. 13.02 Projetando a interface do Team Win: Antes de continuarmos, vamos criar a equipe win I dentro da interface do usuário. Vamos voltar para
o principal por aqui. Eu quero que diga
que conte vitória terrorista ou
uma
vitória terrorista sempre que uma equipe vencer. Na verdade, vamos
adicioná-lo abaixo disso. O que precisamos é disso
dentro de uma caixa vertical. Como temos isso e
o texto abaixo, vamos procurar uma caixa vertical Deixe-me minimizar
tudo isso para que eu possa ver onde posso soltá-lo. Ele precisa entrar
nessa caixa vertical. Eu só vou
deixá-lo no meio daqui. E então arrastando
essa caixa horizontal para a caixa vertical E agora clique
na caixa vertical. Coloque a âncora no meio. Defina essa posição como zero. Vou definir o alinhamento. Na verdade, primeiro clique no
tamanho do conteúdo e defina o alinhamento
para 0,5. E para a posição em Y, vou defini-la como
30, assim como antes Agora nós o temos dentro
de uma caixa vertical. E o que podemos fazer
é pesquisar um texto e adicionar esse texto
à caixa vertical. Esse texto pode estar no meio e a justificativa também pode
estar no meio Vamos dar um pouco de espaço, pesquisar por espaçador,
adicioná-lo no meio, clicar nele, digamos, por exemplo, 15 ou
20, ou 25 talvez Digamos que 25, e isso é o que parece. Agora vamos clicar nesse texto. Vamos clicar com o botão direito do mouse para copiar esse estilo frontal, clique neste clique com o botão esquerdo para colá-lo. Para o deslocamento da sombra, vou apenas dar
uma sombra de dois a dois No momento, você não consegue ver nada porque, dentro da cor da sombra, você precisa aumentar o
alfa em zero, é transparente. Mas se você escrever 0,3,
por exemplo, vamos ver, há um leve efeito
sombrio, 0,4 talvez fique mais claro
e é isso que temos Por exemplo, podemos
escrever Terrorist Win. É assim que vai ficar. Ok, para se divertir, vamos torná-lo um pouco
maior porque é importante. Agora parece bom. Vamos compilar tudo e passar
para a próxima
176. Funcionalidade de interface do usuário do Score e do Team Win: Agora vamos continuar e codificar
a funcionalidade da interface do usuário. Vamos abri-lo novamente e
clicar em Contra o Terrorista. Vou configurá-lo para ficar oculto para começar,
configurá-lo como oculto. Não queremos
ver isso por padrão. Além disso, se você acabou de chegar
aqui, mude o nome. Vamos alterá-lo para uma mensagem de texto com o anúncio
da vitória da equipe,
por exemplo. Você pode chamá-lo do que
quiser e configurá-lo como variável
para que possamos
alterá-lo no blueprint E esta é a pontuação
antiterrorista que já temos, bem como a pontuação
terrorista. E ambas são variáveis.
Ok, então isso está feito. Vamos ver o
gráfico aqui dentro. O que fizemos
até agora foi a armadura, como
podemos ver aqui, e o MO,
agora vamos até aqui, vamos criar um novo evento personalizado Vamos chamar isso de uma atualização de interface de pontuação
terrorista. Vou copiar
esse nome porque vou escrevê-lo
novamente aqui. Digamos que agora a pontuação do
codterrorista. O que precisamos fazer é, para o
terrorista, pegar a pontuação
do terrorista definir o texto e nos deixar conectá-lo. E vamos
fazer a mesma coisa aqui
embaixo para a pontuação
antiterrorista. Defina o texto e
vamos definir o texto. Para o texto,
precisamos basicamente da partitura. Vamos clicar nesse evento
e criar uma nova variável valor inteiro
e numérico Vamos chamar isso de uma pontuação. A mesma coisa para este. Vamos criar um novo
número inteiro variável. Chame isso de pontuação. Agora podemos simplesmente inserir esse número de
pontuação aqui. mecanismo neural transformará
automaticamente sua variável inteira em uma variável de texto para que possa
imprimi-la na tela Vamos fazer a mesma coisa aqui. Vamos afastar isso
apenas para organizar isso. Agora terminamos com eles. Na verdade, vamos compilar
e salvar tudo. A última coisa é essa, e essa é um pouco maior. Vamos clicar com o botão direito do mouse e
criar um novo evento personalizado. Vamos chamar essa atualização de anúncio
da vitória da equipe I. Ok, para esta, o que precisamos fazer
é simplesmente definir esse texto também.
Vamos pegar esse. Lembre-se de que este está
oculto por padrão. Mesmo que alteremos o texto, precisamos mostrar a visibilidade
antes de eu fazer qualquer coisa, vamos atacar aqui e dizer definir visibilidade para a visibilidade. Vamos configurá-lo
para não ser testável, não
possamos interagir
com ele com o mouse Então, queremos definir esse texto. Deixe-me mover isso para baixo
e arrastar a partir daqui e dizer definir texto como este. Defina o texto, vá em frente
e conecte-o. Agora vamos definir o texto, dependendo se
é o terrorista
ou o
contra-terrorista que vence. Na verdade, precisamos
saber o que é a equipe. Lembre-se de que, dentro
do controle do jogador, se eu voltar ao controle
do jogador do blueprints, definimos essa equipe variável E podemos realmente
usar isso para saber se estamos falando sobre o
terrorista ou o contraterrorista. Deixe-me adicionar uma
nova variável aqui. Lembre-se de que essa variável de equipe
é um tipo de classe de ator. Se eu mudar isso para ator ator aqui e
for uma referência de classe, vamos chamar isso de uma
equipe, apenas soletrando Neste momento, temos
essa equipe aqui. Posso me arrastar daqui e dizer que essa equipe é
igual
a uma equipe antiterrorista. Se estiver, podemos arrastar
a partir daqui e dizer selecionar. Podemos selecionar o texto que
queremos escolher. Podemos conectá-lo aqui. Estamos perguntando se essa equipe está
agora e, mais tarde,
inseriremos as informações aqui,
mas no momento
não temos nada. Mas se esse valor for
antiterrorista, se for falso, queremos mostrar, por exemplo, a vitória
terrorista. Se for verdade, se
for antiterrorista, então queremos
significar vitória terrorista Ele selecionará o
texto dependendo de qual equipe venceu e forneceremos
essas informações posteriormente. Agora, vamos clicar duas vezes aqui, criar um nó de redirecionamento. Tudo bem, agora estamos exibindo
isso na tela, mas depois de alguns segundos
eu quero escondê-lo novamente. Se eu voltar e a quantidade de segundos for, na verdade, o tempo que as pessoas levam para responder. Imagine que se todo mundo morresse, isso resultaria na vitória do serviço de
contador de tela após, digamos, por
exemplo, 5 segundos. Ele se afasta porque inicia uma nova rodada e todo mundo
vai responder. O que vou fazer
é chamar isso,
por exemplo, de hora de exibição. E podemos conectar
o cronômetro de resposta mais tarde no horário de exibição Vou atrasar isso com a quantidade desse tempo
de atraso, que é o
cronômetro de resposta no futuro E podemos clicar duas vezes aqui
e organizar isso. Vamos atrasar isso. Após esse atraso, queremos
ocultar isso mais uma vez, basta copiar e colar isso,
adicionar conectado ,
movê-lo aqui e eu vou configurá-lo como oculto novamente. Ok, então isso acabou. Então essa foi a interface do usuário da pontuação
e essa foi a interface do usuário da pontuação. E essa é a
interface de anúncio que vamos atualizar. Então, agora podemos usar
esses eventos mais tarde. Vá em frente, salve tudo
e passe para a próxima.
177. 13.04 Mantendo o controle dos jogadores vivos: Agora, o que precisamos
fazer é
rastrear quem está vivo
no mapa e quem está morto. Porque não podemos realmente mostrar
aqui na interface quem venceu. Se não
sabemos realmente quem está
no mapa e em qual
equipe eles estão, também
precisamos saber em
qual equipe eles estão. Por exemplo, pode haver cinco pessoas vivas e elas
estão todas na mesma equipe. Por exemplo, contra-terrorista e todo o terrorista está morto. Portanto, precisamos mostrar a vitória
antiterrorista,
mesmo tendo cinco vivos, porque eles podem ser
da mesma equipe.
Precisamos saber disso. Vamos fazer isso dentro
do modo de jogo porque dentro
do modo
de jogo nós realmente decidimos todas essas regras. O que podemos fazer aqui
é adicionar duas variáveis. Primeiro, vamos adicionar um
chamado Players Alive. Antes de adicioná-lo,
vamos realmente alterar o tipo de variável
para a variável. Eu quero mudar
isso para a base de jogadores. Vá em frente e selecione o jogador agora. Acho que acredito que
isso está errado. Vamos novamente
procurar a base de armas, mas a base de jogadores é essa. Essa. Esse
aqui. Base de jogadores. Agora, em vez de apenas uma variável
original aqui, vamos transformá-la em um mapa. O que é um mapa, como você pode ver aqui, ele
pode conter dois valores. Se você simplesmente selecioná-lo
aqui, nós apenas compilamos. Agora você pode ver
que temos essa base de jogadores, mas também temos a
segunda variável ao lado dela. Na verdade, você pode atribuir coisas
diferentes a esse jogador. Agora, se eu clicar no
sinal de mais, por exemplo, se eu adicionar um jogador aqui, também
posso adicionar um número aqui. Essa variável de mapa,
você pode realmente
usá-la como em diferentes cenários. Você pode ter duas variáveis. Por exemplo, você pode ter cada jogador e também
quantas mortes eles têm. Cada jogador está
dentro dessa lista e ela também tem quantas
mortes eles têm, por exemplo. Mas o que queremos fazer é ter esse jogador e também saber em
qual time ele está. Porque isso é algo
que precisamos aqui para ver se todos da mesma equipe estão vivos ou se estão
mortos e tudo mais. Vamos mudar isso
novamente para um ator, última referência, porque
essa é a nossa equipe. E eu vou
mudar esse tipo de variável. Aqui está. Agora temos essa variável,
temos o jogador. Se eu apenas compilar, isso
desaparecerá se eu compilar. Agora podemos ter o jogador, podemos aqui, em qual
equipe ele está. Agora podemos ter cada jogador
e em qual equipe eles estão. Ok, então temos
os jogadores vivos. Vou fazer
um novo chamado players. É o último mais tarde, e trabalharemos com isso
mais tarde. Mas vamos fazer isso agora. Jogadores aparecem. Vamos usar isso mais tarde. E essa vai
ser apenas uma matriz normal. Só sabemos quantos jogadores surgiram dentro do mapa Vamos começar aqui. Vamos
criar um novo evento personalizado. E este vamos
adicionar ao mapa vivo dos jogadores. E esse é chamado
de mapa, a propósito. Essa é uma única variável, uma matriz, um conjunto. E agora estamos
trabalhando com um mapa. Adicione o mapa vivo de dois jogadores. O que vamos fazer
é pegar isso e dizer adicione aqui. Podemos adicionar o jogador, na verdade, precisamos ter essa referência
do jogador. Podemos simplesmente arrastá-lo e
conectá-lo aqui. E essa é a base de jogadores. Vou apenas
renomeá-lo para Player. Antes de eu fazer isso, o
jogador pode estar morto. O jogador pode
ser adicionado a isso. Jogadores mortos, porque quando responderem,
serão adicionados a isso. Aqui, o que precisamos fazer primeiro na verdade, é pegar
isso e dizer encontrar. Nós podemos usar isso.
A propósito, para mapas, você pode simplesmente arrastar aqui, ir
para utilitários, ir para o mapa Aqui estão as funções
que você pode usar com ele. Você pode ver que não há realmente
muito que você possa fazer com isso. Você pode adicionar, encontrar algo, perguntar se está vazio e assim por diante. Na verdade, não tem muito a ver com isso. O que queremos fazer é tentar encontrar esse jogador e ver se ele está dentro desse mapa. Vamos apenas
conectá-lo aqui, encontre aqui. Vamos fazer essa ramificação para perguntar se ela encontrou o
jogador aqui dentro. Deixe-me
diminuir um pouco isso. Se encontrarmos o player,
queremos pegar isso e dizer remover e selecionar
a função de remoção. Vá em frente e remova esse
jogador dos mortos do jogador. Deixe-me clicar duas vezes aqui e fazer uma
anotação da rota traseira para que ela seja organizada. Agora vou arrastar
deste player, vá em frente e conecte-o novamente. Clique, vou mover tudo isso para baixo para ter mais
espaço para trabalhar. E podemos mover isso para baixo
assim. E agora está. Aqui vamos encontrar esse jogador dentro do mapa morto
do jogador. E vamos
remover o jogador se ele for encontrado. No entanto, se o player
não for encontrado, basta continuar com o código. O que queremos fazer aqui
é adicionar o jogador aos jogadores vivos. Agora removemos o jogador
dos mortos do jogador e agora vamos adicionar esse jogador ao mapa.
Este é o jogador novamente. Podemos simplesmente desconectar
isso porque
agora temos esse nó de redirecionamento Vou clicar duas vezes
aqui e conectá-lo aqui. Novamente, clique duas vezes aqui e adicione-o aqui embaixo. Agora, o que precisamos
fazer é que, na verdade também precisamos disso aqui. Precisamos saber qual
equipe está contratada para fazer isso, precisamos obter uma referência
ao controlador do jogador. Porque lembre-se de que, dentro do controlador do player,
temos essa variável
e precisamos dela. Vamos até aqui,
deixe-me afastar isso. O que podemos fazer é
clicar duas vezes aqui para criar
um nó de redirecionamento Podemos arrastar aqui e dizer get
controller and select. Lembre-se de que esse é o jogador. Estamos tentando obter
esse controle de jogo. Então, a partir da interface do
blueprint,
criamos a referência do
controlador get player Agora temos o controlador
do player. Agora podemos acessar tudo dentro desse controlador de
player. E queremos essa variável de equipe. Vamos atacar aqui. Equipe
obtenha essa variável de equipe. E agora podemos clicar, arrastar
e inserir isso aqui. Vamos apenas conectá-lo aqui. E vou
mover tudo isso baixo para ter mais
espaço assim. E vamos
aproximá-lo e conectá-lo. Agora, na verdade, estamos adicionando
esse jogador ao mapa e removendo o jogador
do lugar desse jogador Ok, agora isso acabou. Vamos compilar tudo e passar
para a próxima
178. 13.05 Mantendo o controle dos jogadores mortos: O que precisamos fazer agora
é
acompanhar os jogadores aqui. O que precisamos fazer, exatamente
como antes, é clicar com o botão direito do mouse, criar um novo evento personalizado
e chamá-lo de
adicionar ao mapa dos jogadores. Assim como antes, precisamos
da referência do jogador. Então, se você
procurar uma base de jogadores, selecione-a aqui
e chame isso de um jogador. Vamos pegar o mapa morto desse
jogador. Na verdade, vamos pegar o
que está vivo primeiro. Precisamos remover o jogador se estiver dentro daqui antes
de adicioná-lo ao mapa morto
aqui, assim como antes. Vamos pegar isso, vamos ver se podemos encontrar o
jogador aqui dentro. Vamos fazer um galho.
Vamos conectar isso aqui. A propósito, para este, esqueci de realmente
conectar isso, como posso ver aqui aqui para remover,
se for falso, se não
conseguirmos encontrar o player aqui
dentro, vá em frente e continue o código Não remova nada. Na verdade, vamos clicar duas vezes aqui e clicar duas vezes aqui. Ok, isso está corrigido. Precisamos fazer a
mesma coisa aqui. Se conseguirmos encontrar o jogador, vá em frente, pegue
isso e diga remova. E vamos conectá-lo. Vá em frente e remova o
player, como antes. Eu só vou
reorganizar isso. Tudo bem, agora
que removermos o jogador, vamos adicionar o jogador
aos mortos do jogador. Vamos pegar isso, digamos adicionar, vá em frente e adicione o
player exatamente como antes. Clique duas vezes aqui para ver o
jogador, crie um nó de rota traseira. Vamos colocar isso aqui e criar um nó de
rota traseiro novamente. Aqui vamos nós. Agora
adicionamos o player aqui. E vou
afastar isso um pouco para ter mais
espaço para trabalhar. Precisamos fazer com que o
controlador saiba qual equipe esse jogador está. Vamos arrastar isso para longe. Vamos clicar duas vezes aqui. Digamos que obtenha o controle,
obtenha o controle, na verdade,
obtenha o controle do jogador. Vá em frente e conecte-o.
Agora precisamos pegar essa variável de
equipe como antes
e conectá-la aqui embaixo. Vamos movê-lo para cá. E deixe-me mover isso
um pouco assim. Vou mover este um
pouco para cima, assim como este. E vá em frente e aproxime-o. Ok, agora estamos adicionando
o player aqui. E, assim como antes, se não
conseguirmos encontrar o jogador, vá em frente e
encontre o controlador e podemos adicionar o
jogador a este mapa. Ok, esse era o código. Agora estamos
acompanhando os jogadores que estão vivos e também os
que estão mortos. O que precisamos fazer agora é
acompanhar os jogadores
que estão vivos, todos os jogadores vivos. Vamos continuar e fazer
isso na próxima lição.
179. 13.06 Mantendo o controle de todos os jogadores spawned: Para acompanhar todos os jogadores que realmente são
gerados no nível Isso é muito fácil em
comparação com os outros. Vamos criar um
evento personalizado chamado add to players spawn
array aqui Novamente, precisamos do player, vamos mudar isso
e chamá-lo de player. E o tipo é base de jogadores. Nós simplesmente queremos pegar a matriz de geração
desse jogador
e, digamos, definir os elementos da matriz e queremos adicionar os
jogadores aqui Vamos agora
escolher o índice. E o índice está apenas pegando
isso e dizendo o comprimento. E vamos
conectá-lo aqui. Ele encontrará automaticamente o comprimento
dessa matriz e adicionará os
jogadores dentro dela. O item que queremos adicionar
é simplesmente esse player. Lembre-se também de usar
esse tamanho para caber, porque se você não o
usar inicialmente, o que precisávamos fazer é realmente pegar isso
e dizer redimensionar. Em seguida, vamos
dar o
quanto essa matriz
pode conter em tamanho. Mas, em vez de
fazer isso
, podemos simplesmente dizer tamanho adequado. Dimensione-o automaticamente. Isso é bom. E podemos clicar
duas vezes aqui para
criar um nó de rota traseiro, e podemos aproximá-lo. Isso está realmente feito. Isso
é tudo o que precisamos fazer. Agora podemos usar todos
esses eventos. Agora é muito mais fácil para
nós, porque já fizemos tudo isso e
podemos usá-los no futuro. Vamos salvar tudo e passar para
a próxima lição.
180. 13.07 Verificando a quantidade de jogadores vivos: Ok, então
agora precisamos verificar se os jogadores estão todos mortos
ou se estão todos vivos. Porque precisamos ir até
essa Nui e mostrar isso. Precisamos verificar a quantidade de jogadores que estão vivos. Ainda assim, a melhor maneira de
fazer isso é aqui. Quando adicionamos o jogador
ao mapa morto
, sabemos que esse
jogador acabou de morrer. E a partir daqui podemos verificar
quantos jogadores estão vivos. Toda vez que um jogador morre, vamos
verificar se precisamos
jogar esse
pára-brisa antiterrorista, por exemplo. Vamos fazer isso,
deixe-me fazer uma macro aqui. Vamos clicar nesse plus. Para a macro, deixe-me chamar isso de verificação Quantidade
de camadas vivas. A razão pela qual eu o transformo em uma macro em vez de uma função é porque estou fazendo
um loop for aqui. Ou para cada loop, na verdade, para cada loop eu
vou usar este. O bom de uma
macro é esse retorno. Se eu simplesmente adicionar duas
variáveis aqui, ambos os pinos de execução, essa é chamada de executar,
essa é chamada Então, a razão pela qual
eles são chamados é que o texto desaparece se você realmente escrever
execute aqui E se você escrever, então
também desaparece aqui embaixo. A saída, em vez de
fazê-la aqui como uma função, quando você começa
com a
caneta de execução e termina aqui, podemos, com uma macro, adicionar a saída ao completo. Na verdade, esperamos que o loop
aconteça antes de
continuarmos o código aqui. Se eu adicionar essa macro aqui, ela só continuará quando meu loop terminar. É por isso que, na verdade, estou
criando uma macro. Nesse caso, o que eu quero fazer, vamos agora adicionar duas variáveis. O primeiro que podemos chamar de
terroristas terroristas vivos. Vamos transformar isso em uma variável normal
inteira. Vamos criar um novo chamado
alive e compilar.
Ok, para este, vamos primeiro colocar os
contra-terroristas em zero, os que estão vivos e
este em zero também Porque vamos repetir
isso e
aumentar a quantidade
dependendo de quantos estão vivos. Ok, vamos pegar
esses jogadores vivos. É aqui que podemos
verificar quantos estão vivos. Ainda é um. Deixe-me deletar
isso para este. Para corrida, você pode
simplesmente pegar isso e dizer que para cada loop você
pode realmente usar isso. No entanto, para um mapa, você não
pode dizer que para cada loop não
é uma matriz, isso é apenas para raios. O que você pode fazer é arrastar, basta acessar o mapa de utilitários e ver essa função Você tem algo chamado chaves. Você também tem algo
chamado valores. Se você clicar nas teclas, poderá obter
todas as chaves aqui. Como toda essa parte, você pode pegar todos os jogadores. , se você arrastar e disser No entanto, se você arrastar e disser valores,
poderá obter
todos os valores, poderá obter toda
essa seção, esta seção aqui, temos chaves e valores. E você pode vê-los aqui. Se você simplesmente arrastar a partir
daqui e disser adicionar, verá que está
adicionando a esta, quais são as chaves, e está adicionando a esta,
quais são os valores. Isso é o que fizemos antes. Vamos pegar todos os valores. Deixe-me deletar isso aqui. Deixe-me pegar todos os
valores e dizer que para cada loop agora podemos repeti-lo
porque isso é uma matriz. Agora, para cada loop, deixe-me deletar
este e movê-lo para baixo. Vamos
verificar qual equipe está
viva que eu posso tirar disso e dizer que,
na verdade, precisamos pegar
isso primeiro e dizer o mesmo
e perguntar se isso é igual a
desfazer um terrorista, por exemplo E selecione este
antiterrorista da BP , faça uma filial aqui Agora estamos pegando os valores
aqui e perguntando: isso
é um valor
antiterrorista agora? Isso significa que um
contra-terrorista está vivo. Se isso for verdade, podemos pegar esse contra-terrorista
vivo e dizer mais. O que significa mais, mais? É a
mesma coisa que dizer mais um e depois definir
essa variável assim,
assim, fazer isso
é muito mais curto. Na verdade, é a mesma
coisa que adicionar um. Você pode segurar o mouse
sobre ele e dizer adicionar um ao
valor especificado e, em seguida, defini-lo. Em vez de fazer tudo
isso, podemos simplesmente fazer isso. Estamos pegando o
antiterrorista vivo e adicionando um a ele porque acabamos de descobrir que esse valor específico é
um antiterrorista. Ok, se for falso,
significa que é um terrorista. Podemos pegar esse
terrorista vivo e dizer mais e adicioná-lo
aqui ao falso. Se for falso, é um
terrorista que está vivo. Quando terminar o ciclo, o que precisamos fazer agora
aqui na volta dizer quantos terroristas estão vivos e quantos
antiterroristas estão Precisamos adicionar duas variáveis e ambas são números inteiros aqui Saídas, chame isso de
contar terroristas vivos e chame isso de
terroristas vivos e sem espaço Agora podemos adicionar
essas duas variáveis aqui e enviá-las
para o player no. Quando concluirmos o
loop, continuaremos o código. Portanto, se
eu voltar ao
gráfico de ventilação e compilar aqui, continuaremos
após o loop e agora
sabemos quantos
antiterroristas estão vivos e também
sabemos quantos
terroristas
181. Comunicado de vitória da equipe 13.08: Agora que sabemos
quantos jogadores estão vivos, vamos pegar esses terroristas vivos e perguntar se isso
é igual a zero Podemos fazer a mesma coisa com
o terrorista. Pergunte se isso é igual a zero, a partir
daqui e diga e
use este ou ouro Se o terrorista ou os contra-terroristas forem zero Isso significa que precisamos escrever este texto aqui porque
não há mais
contraterroristas ou terroristas no mapa e precisamos dizer ou dizer quem
venceu o jogo ou a
rodada aqui Estamos perguntando, isso é igual a zero ou é igual a zero Se um deles for verdadeiro, vamos fazer uma ramificação e
conectá-la. Se uma delas for verdadeira, precisamos reproduzir
o anúncio. Então, vamos voltar aqui como um lembrete e ver o que
chamamos de anúncio Então, aqui chamamos isso de atualizar o anúncio
da vitória da equipe. Agora, para jogar isso, não
podemos fazer isso diretamente
no modo de jogo porque lembre-se de que o modo de jogo
sempre roda no servidor. E é por isso que aqui nunca estamos replicando para o servidor,
porque isso não faz sentido Ele já está sendo
executado no servidor. O cliente não pode acessar o código dentro
do modo de jogo. Além disso, lembre-se de que a interface do usuário está
sendo executada no cliente. Cliente e servidor não conseguem se comunicar
assim, como você não consegue. O cliente não pode simplesmente
entrar no modo de jogo
porque o modo de jogo
só existe
no servidor e não pode se comunicar com o
cliente. Coisas aqui na interface do usuário; na verdade, precisamos de um
meio para executá-lo. Ou precisamos executá-lo
pela base de jogadores ou precisamos executá-lo pelo controle
do jogador. Como estamos controlando a interface dentro do
controle do jogador, estamos criando a interface dentro
do controle do jogador. Dentro do controle de jogo. Faz mais sentido fazer coisas aqui com
a interface do usuário. Vamos fazer isso. Vamos clicar com o botão direito do mouse. O que realmente
precisamos fazer é
simplesmente pegar o WB principal Precisamos chamar isso de uma
atualização de anúncio da vitória da equipe. Vamos voltar ao anúncio da vitória
da equipe de
atualização do controlador de jogo . Isso é o que estamos tentando fazer. Vamos criar uma função
ou um evento para isso. Vamos criar um evento personalizado chamado anúncio do
update win. Deixe-me copiar
isso para que eu não
precise escrevê-lo novamente,
porque agora temos que
criar um novo
evento para criar um novo
evento clientes,
pois precisamos executar algumas coisas de interface de usuário e clicar em
Owning Client reliable Vamos executar o
cliente aqui em cima. Ok, vamos reduzir isso. Vamos conectá-lo aqui. Na verdade, não é o M,
esse é o errado. Atualize o anúncio da equipe I. Vamos excluir isso e, em vez disso,
conectar isso. Agora precisamos passar isso por aqui e também precisamos
executar o tempo de exibição. Faça a mesma coisa aqui em cima, apenas continuando com o fluxo. E agora precisamos chamá-lo
aqui através do modo de jogo. Agora funciona. Podemos simplesmente
chamá-lo um porque ele é executado
no servidor. Lembre-se de que você só pode chamar eventos
do cliente se estivermos
atualmente no servidor. Estamos no servidor
porque se esse evento estiver aqui, se eu voltar, se você chamar esse evento aqui
pelo modo de jogo, ainda
estamos no servidor. Isso quer dizer que você
só pode executar este servidor, você só pode executar eventos do Cliente
se estiver no servidor. Estamos fazendo isso. Vamos
voltar ao modo de jogo. Agora, aqui, depois de verificarmos
que um deles é zero, agora precisamos jogar isso. Precisamos pegar o controle
ou todos os jogadores, porque precisamos exibir
para todos os jogadores, precisamos exibir esse texto
aqui para todos os jogadores. O que precisamos fazer é
precisar de um loop for. É por isso que fizemos esses
jogadores surgirem. Vamos pegar isso
e dizer que, para cada um, porque realmente não nos
importamos com quem está
vivo e quem não está, na verdade, só queremos jogar
para todos os jogadores gerados. aqui para cada um
dos jogadores de spawn, vamos pegar o controlador
It Então, podemos dizer novamente que
obter
referência ao controlador do jogador é a mesma coisa
que temos feito até agora. E agora podemos chamar isso anúncio da
vitória da equipe de atualização. Vamos chamar isso de
anúncio da equipe de atualização. Esse aqui. Agora precisamos saber
o que é a equipe. Também precisamos saber qual é
o tempo de exibição. O tempo de exibição, novamente, eu já disse antes, é na verdade apenas o cronômetro de resposta Enquanto estamos respondendo, queremos mostrar
isso na tela Deixe-me criar uma nova variável aqui no modo de jogo e dizer. Temporizador de resposta. E
podemos simplesmente transformar isso em um flutuador e nos deixar
conectá-lo aqui Agora também precisamos conhecer
a equipe dessa equipe. Precisamos mostrar
quem venceu o jogo. Para isso, só precisamos
pegar esses jogadores vivos, porque quem está vivo
é o time que venceu Podemos pegar isso e dizer valores. Vá em frente e selecione isso. Basta atacar a partir
daqui e dizer recebe. Porque agora é como uma matriz. Podemos obter esse valor. Vamos obtê-lo
do primeiro jogador que
encontrarmos aqui. Não é muito
importante saber quem é
o jogador porque
eles estão todos vivos, o mesmo time que venceu. Então, vamos pegar
o primeiro jogador
que pudermos encontrar. E então podemos conectar
isso aqui. O jogador vivo é
aquele que venceu. Vá em frente e conecte tudo. E eu vou apenas fazer anotações da rota
traseira aqui.
E aqui está. Então, agora estamos realmente terminados. Então, estamos trazendo
todos os jogadores que foram gerados
para o jogo Estamos adotando todas as leis de controle de jogo
deles. E estamos exibindo
para todos eles
essa equipe de atualização
que anunciamos. E o que estamos mostrando
é que quem está vivo, esse é o time que venceu Então, agora clicamos
no cronômetro de resposta. E vou definir
esse cronômetro de resposta para talvez algo em torno de 3 segundos,
por enquanto, para compilar E agora vamos clicar em
Play e testar. E vamos jogar o jogo aqui. Vou selecionar terroristas
aqui, ou contraterroristas aqui, ou contraterroristas E eu vou
selecionar terroristas, vou me mover na frente
do contraterrorista Agora eu sou o contra-terrorista, vou atirar
no terrorista. Agora deveria dizer
antiterrorista, mas agora nada
é exibido. Então, deixe-me fechar isso
e ver o que está acontecendo. Tudo bem, antes de continuarmos, lembre-se de definir
esse cronômetro de resposta para algo que não seja zero, talvez algo como 3 segundos. Além disso, precisamos configurar os jogadores para estarem
vivos quando eles aparecerem, porque no momento
nada está acontecendo Nunca chamamos
esses eventos de Aqui, vamos compilar tudo,
salvar tudo e ir para a base de jogadores sempre que esse jogador aparecer E isso está dentro
desse gráfico de eventos. Comece a jogar sempre que esse
jogador aparecer e definimos a
saúde desse jogador Eu também quero configurá-los
para este mapa vivo. Lembre-se de que, agora,
no cliente, esse início de jogo é executado tanto
no cliente quanto no servidor. Vai nos dar um dinheirinho se
ligarmos diretamente para isso. Como o modo de jogo só pode ser acessado
pelo servidor, não
podemos acessá-lo
pelo cliente. Na verdade, precisamos
criar um evento de servidor. Vamos criar um novo
evento personalizado por meio do servidor. No primeiro, preciso adicionar duas camadas de mapa ativo e executá-lo
por meio do servidor. Confiável. Precisamos criar
o outro também, chamado servidor de duas
camadas spon array porque também temos
esse E precisamos executar isso
no servidor também. Ok, aqui precisamos obter a referência
do modo de jogo. Não acredito que criamos
uma variável para isso,
como criamos para a lei de controle do
jogador. Na verdade, vamos fazer isso também no modo de jogo. Eu vou afastar isso. Digamos que obtenha o modo de jogo. Na verdade, essa é a referência. Vamos colocar o
modo de jogo aqui embaixo. Esta função, execute-a por meio desta referência de obtenção
do modo de jogo. Vamos reduzir isso. Vamos em
frente e conecte-o. Vamos promover isso para nossa
variável e chamá-la de modo de jogo. Ok, vamos conectá-lo. Não precisamos replicar isso porque, de qualquer forma, isso só
é executado no servidor Vamos agora aqui, pegar essa variável do modo de jogo. Vamos chamar a adição aos
jogadores de mapa ao vivo. Vamos conectar isso a este. Digamos que
modo de jogo. Novamente, vamos pegar essa
variável de modo de jogo que temos. Digamos que adicione à matriz de spawn
dos jogadores. Vamos entrar e nos
conectar como antes. Agora, o que podemos fazer
com isso é chamá-lo aqui
no jogo Begin. Podemos chamar o servidor de adicionar
camadas a um mapa ativo. E também podemos chamar
o adypawnarray. Precisamos definir o jogador. Lembre-se de que já estamos
dentro da base de jogadores, então podemos simplesmente dizer self e nos arrastar novamente
à distância. Agora nós os adicionamos
sempre que aparecem. Estamos adicionando o jogador
ao mapa ao vivo, mas também estamos adicionando o jogador aos jogadores que surgiram Então, acompanhamos quantos jogadores estão
realmente dentro do mapa. Sempre que o jogador morre, precisamos adicioná-lo
à morte também. Se eu simplesmente for até aqui, vá até a
armadura de saúde e danos Se simplesmente morrermos, lembre-se de que reaparecemos aqui depois dessa, onde
diz que não há armas para soltar E nós respondemos, o jogador. Vamos agora desconectar isso
e afastar isso. O jogador, sempre que o jogador morre e deixa cair
todas as armas. Vamos adicionar o jogador a
esse evento do modo de jogo. Isso já está
sendo executado no servidor, então não precisamos
criar um evento de servidor. Essa
referência de modo de jogo que fizemos, digamos, Adicionar jogador, ou deixe-me ver como eu a chamo. Se eu for para o modo de jogo,
adicione o mapa morto de dois jogadores. Vamos atacar a partir
daqui e dizer que adicione dois jogadores mortos e conectados. Agora precisamos dizer
quem é o jogador? É eu mesmo,
ainda estamos no jogador. Agora vamos
adicionar esse jogador ao mapa morto sempre que
o jogador morrer. A razão pela qual não está sendo impresso para mim é que, na verdade, eu adicionei esse código aqui
no mapa vivo de dois jogadores. E eu preciso ligar
aqui porque preciso
verificar toda vez que um jogador morre. Deixe-me desconectar
esse código aqui. Deixe-me copiar tudo
isso que
escrevi e , em vez disso, vou movê-lo para este e conectá-lo. Um pequeno erro, apenas certifique-se de que isso não
aconteça com você também. Adicione-o ao deadmp do jogador, porque precisamos verificar
toda vez que um jogador morre Vamos compilar e
clicar em jogar agora. E eu vou
maximizar isso. Selecione Contraterrorista
aqui, terrorista aqui. E então eu vou
ficar aqui
ao ar livre como
contra-terrorista. Agora vou
atirar no terrorista. Só vou me
aproximar um pouco mais. Se eu atirar no terrorista, agora aparece a
vitória antiterrorista em ambas as telas. Agora ele vai
desaparecer após 3 segundos porque é isso que eu
coloquei no meu cronômetro. E vamos tentar
testá-lo com mais jogadores. Se eu escolher quatro jogadores e jogar o jogo, aqui estão eles. Vou selecionar terrorista,
terrorista e
este contra-terrorista. No meu outro monitor, eu acredito ou está por trás deste. Há mais um. Aqui está. E eu vou selecionar um
antiterrorista para este também. Agora temos dois
contra-terroristas e também
temos dois terroristas Deixe-me ficar aqui
ao ar livre para todos eles e, como o
contraterrorista, fique aqui. Agora, como terrorista
desta vez, eu vou
até o spawn, vamos tentar matar aqui
e ver o que diz Agora, se eu matar esse
contraterrorista, nada será
exibido porque nem todos os jogadores estão mortos aqui. Como contra-terroristas
que estão vivos, vou atirar
nesse terrorista. Agora esse terrorista está
morto e ainda somos dois jogadores vivos aqui
como contraterroristas. Se eu agora for até
o terrorista e
atirar nesse terrorista, agora diz que o
contra-terrorista venceu. Em todas as telas, tudo está funcionando perfeitamente. Agora podemos ir em frente e somar as pontuações da equipe antes de
respondermos aos jogadores.
182. 13.09 Adicionando a pontuação da equipe: O que precisamos fazer agora
é somar a pontuação da equipe. Se voltarmos para a interface principal, lembre-se de que marcamos a pontuação
da equipe aqui. Fizemos com que esses dois eventos
atualizassem a interface de pontuação terrorista. E fizemos essa única atualização na interface de pontuação
antiterrorista. Vamos adicioná-los também à
lei negra de controle porque, novamente não
podemos acessar o
modo de jogo como cliente aqui. Vamos para o controle do
player quando este for exibido,
sempre que for reproduzido. Sempre que mostramos
o anúncio da vitória da equipe, geralmente queremos
incrementar um deles Na verdade, deixe-me
editar aqui após o anúncio da
vitória da equipe de atualização. O que podemos fazer aqui é
perguntar qual equipe tem uma. Podemos arrastar isso
e dizer igual a isso. Se isso for igual a
contraterrorismo, vamos criar uma filial
aqui, vamos conectá-la. Vamos pegar essa página principal do WB
mais uma vez e colá-la Sempre que for o
contra-terrorista, queremos atualizar a interface do usuário
da pontuação antiterrorista sempre que for o terrorista Sempre que isso for falso, queremos atualizar a interface do usuário da pontuação do
terrorista. Vá em frente e conecte
isso ao falso. Agora também precisamos
conectar a pontuação. Vamos fazer um alfinete
aqui. Porque precisamos disso. Vamos transformá-lo em um
número inteiro, chamá-lo de pontuação. Eu só vou
colocá-lo abaixo da equipe aqui. Mova isso para baixo. Então eu vou arrastar
isso para a partitura. Vamos apenas
afastar isso para que fique melhor. E vou clicar aqui para criar um nó de redirecionamento e
torná-lo assim. E vá em frente e
conecte isso também. Ok, agora temos
a pontuação também. E vamos compilar. E também aqui em cima, lembre-se de
arrastar a partitura até aqui. Vou subir
um aqui abaixo da equipe. A última coisa está
dentro do modo de jogo. Dentro do modo de jogo, agora
temos esse pino de pontuação. E precisamos somar a
pontuação para a pontuação. É a pontuação
antiterrorista ou terrorista que
precisamos inserir aqui. Novamente, precisamos
partir disso e dizer: isso
é igual ao terrorista? E vamos
afastar tudo isso para que tenhamos mais
espaço para trabalhar. Estamos perguntando se isso é
igual a terrorista ou é igual a contraterrorista?
Dependendo disso. Vamos selecionar
arrastar e dizer selecionar Integer e
inserir esse touro Já fizemos isso antes,
vamos selecionar A. Se isso for verdade, vamos criar novas variáveis. Vamos fazer duas variáveis, uma chamada Da, pontuação terrorista e
terrorista. Vamos transformar isso em um número inteiro. Vamos fazer um novo. Vou chamar
isso de pontuação terrorista. E isso
também é um número inteiro para essas duas pontuações, sempre que for o
contraterrorista Então, ele vai
escolher um, vamos colocar
a pontuação
antiterrorista aqui. Sempre que for o terrorista, vamos
pegar a
pontuação terrorista e colocá-la aqui. E então ele vai selecioná-lo dependendo do que é
essa pesquisa e inserir esse
número de pontuação aqui OK. Vamos agora resolver
isso juntos. O que precisamos fazer agora é
defini-las porque,
no momento , a pontuação terrorista e
antiterrorista é apenas zero. Nós realmente não estamos fazendo
nada agora. Vamos criar uma nova função, e eu vou criar
uma nova função aqui em cima. Vamos chamar isso
de pontuação da equipe. Na verdade, podemos usar isso vivo se os contra-terroristas
estiverem vivos aqui. Podemos pegar essa e
dizer se é igual a zero, fazer uma ramificação e
conectá-la. Se a quantidade de
antiterroristas vivos for igual a zero, isso significa que precisamos atribuir um ponto à pontuação
antiterrorista. Podemos considerar isso novamente, digamos mais, mais ou
incrementado em um No entanto, se isso
for verdadeiro ou falso, significa que o
contraterrorista está realmente vivo e não
é igual a zero. Isso significa que podemos pegar essa
pontuação antiterrorista e dizer mais,
mais, porque
provavelmente é a contagem de terroristas que estão vivos
e não o terrorista Como gostamos de ter
chegado a esse ponto
do código, vamos
apenas conectá-lo. Agora vamos voltar
ao gráfico de van e vamos
adicioná-lo depois deste, porque depois de verificar
que um deles é
realmente igual a zero, podemos então atribuir um ponto a um
deles. Podemos pegar essa função e
conectá-la aqui. Agora faz sentido,
porque agora estamos perguntando quem é que é zero? Se o contra-terrorista
vivo é igual a zero, então precisamos dar um ponto
ao terrorista. No entanto, se isso for falso, isso significa que o terrorista
é na verdade igual a zero. Então, precisamos conceder um ponto
aos contraterroristas e agora
concedemos um ponto e ele
será bloqueado aqui Ok, isso deve
funcionar perfeitamente. Agora vamos salvar tudo
e clicar em Play. E verifique se isso está funcionando. Na verdade, vou reduzir a quantidade de jogadores para
talvez algo como três. Vou selecionar terroristas
neste caso, terroristas neste
e contraterroristas neste aqui Agora, como contra-terrorista, vou até
a base terrorista Na verdade, vou
minimizar isso. Então eu posso ver aqui em cima
e detalhar. Não sei por que ele continua
aparecendo na parte superior da minha tela, então deixe-me matar
um deles Ok, nada aconteceu
porque um
ainda está vivo e eu vou
matar esse cara aqui. Você pode ver que o terrorista
agora ganha um ponto. Isso não é verdade, porque
agora eu sou na verdade um
contra-terrorista. Se você der uma olhada aqui embaixo, a pontuação antiterrorista
está inserida incorretamente A pontuação terrorista está
inserida incorretamente. Se eu voltar à
pontuação do prêmio e der uma olhada, esse é o contra-terrorista, e se for igual a zero, vamos atribuir um ponto
à pontuação terrorista. Tudo parece correto. A outra coisa é
porque isso foi desconectado porque
escrevemos esse pull aqui Vamos reconectar
isso porque,
na verdade, é o
antiterrorista que tem um, mas está selecionando
terrorista por padrão Deixe-me arrastar isso
aqui novamente, assim como antes, e você
pode criar um nó de rota. Agora está conectado. Vamos verificar para ter certeza. Aqui no controlador Apple,
ele também está conectado. Este aqui está desconectado porque, novamente,
fizemos isso aqui embaixo Vamos conectá-lo. Agora deve funcionar. Certifique-se de que
tudo esteja conectado. E vamos clicar em jogar
novamente e selecionar Terrorista, Terrorista, Contra-terrorista mais uma vez. E eu
vou até o spawn novamente. Ok, aqui eu matei os primeiros terroristas
e
vou até o segundo terrorista
e mato esse jogador E se eu maximizar
a tela para que você possa ver agora diz que o combate ao
terrorismo venceu. E isso adiciona um ponto para
todos os jogadores. Além disso, acrescenta pontos para
o terrorista. Isso acrescenta um ponto ao
contraterrorista. Isso está funcionando corretamente agora.
183. 13.10 Respawning the Players: Certo? Então, o que nos falta agora é responder aos jogadores, vamos fazer isso aqui embaixo O que podemos fazer
aqui é atrasar porque não queremos
responder aos jogadores imediatamente. Na verdade, queremos responder
após esse cronômetro de resposta. No
momento, esse cronômetro de resposta está configurado para 3 segundos, então ele atrasará
o código em 3 segundos. Depois disso,
responderemos a todos os jogadores mais uma vez. Vamos dar a esses jogadores
o caminho de cada loop, com este que
chamaremos de respawn que criamos no jogador com essa armadura de
saúde Lembre-se, fizemos esse
renascimento, vamos chamar assim. Vamos até o
jogador e reapareça. Agora, na verdade, estamos
respondendo
a todos os jogadores e podemos nos
comunicar com Porque este está sendo executado
no servidor. Vai passar por aqui. Percorrendo o servidor
e fazendo tudo isso que
fizemos antes, respondendo
aos jogadores Lembre-se de que também
temos essas variáveis, os dados dos jogadores
e os jogadores vivos. E precisamos
atualizá-los também. Antes que eu demore,
vou seguir em frente. Vou pegar esses jogadores
vivos e os jogadores mortos, e vou
eliminá-los aqui. Vou eliminar
os jogadores vivos e vou afastar isso. Também vou limpar o mapa
para os jogadores mortos. Ambos estão redefinidos. Então, vamos
atrasar o código. Assim aqui. Vou mover isso para
baixo conectado aqui. Agora vamos
atrasar o código. Sempre que
adiamos, precisamos adicionar os jogadores
novamente aos jogadores vivos,
caso contrário, ninguém estará vivo aqui. E ele reservará aqui
para responder. Antes de respondermos aos jogadores, quero adicioná-los. Lembre-se, dentro do player, acabamos de criar esse gráfico de eventos. Acabamos de criar este recentemente, para adicionar
aos jogadores um mapa ao vivo, precisamos chamar esse
no servidor de list rake
e, digamos, o servidor adiciona aos
jogadores um mapa ao vivo Precisamos especificar
quem é o jogador, é só esse aqui. Então, podemos seguir
em frente e responder. Vou apenas arrastá-lo para baixo. E, novamente,
clique duas vezes aqui para fazer uma anotação da rota para que você possa ver a diferença
entre as duas. Aqui vamos nós. Agora
vamos limpar esses mapas, garantir que não estejam grampeados Então, podemos atrasar
no cronômetro de resposta. Então, vamos esperar um
pouco e depois
responderemos aos jogadores e
os adicionaremos a esse mapa vivo. Mais uma vez, vá em frente e compile agora dentro
do player o que
fizemos antes aqui na resposta
a este código
aqui, podemos simplesmente deletar Na verdade, não estamos realmente
usando isso, este, vou
excluí-lo porque
não uso mais
essa string de impressão. Isso é o que temos. Vamos compilar, salvar tudo e clicar em reproduzir novamente. Selecione Terrorist.
Selecione Terrorista, Contra-terrorista, por exemplo. Agora eu só vou
para a base. Deixe-me pegar esse AK e eu vou atirar
nesse jogador agora. Agora diz que o terrorista venceu e
eu vou ter razão. Então, todos nós responderemos. Aqui estou eu como o terrorista nasce com o outro
terrorista aqui Esse também é o terrorista. Aqui está o contra-terrorista. Responda aqui como terrorista. Agora, se eu for até
o contraterrorista e
atirar no contra-terrorista, então ele deveria dizer que o
terrorista venceu. Vamos conseguir
o segundo ponto e todos responderemos novamente. Ok, então isso está
funcionando perfeitamente e esse é o
contra-terrorista e agora eu vou
matar esse cara aqui. Agora você vê o
contra-terrorista vencer. Tudo bem, então tudo está funcionando corretamente
e também estamos respondendo aqui no spawn terrorista e
no aterroristpaon,
estamos concedendo a quantidade
correta de pontos
ou, na rodada aqui, pontos redondos sempre que vencemos a rodada
184. 14.01 Adicionando o Impulse on Weapon Drop: Ok, então agora
estamos quase terminando. E o que eu quero fazer
nesta seção é melhorar o jogo com alguns
pequenos elementos que precisam de alguns ajustes. Por exemplo, agora,
quando soltamos a arma, ela cai logo abaixo Além disso, esta arma está
caindo logo abaixo de nós. Em vez de fazer isso,
quero soltar a arma na nossa
frente, como se a estivéssemos
jogando na nossa frente Para fazer isso, vamos até
a base de jogadores novamente
e dar uma olhada
na lógica de lançamento de armas aqui. Criamos a arma de soltar, se eu apenas estender isso e
incluir isso também, essa é a
lógica da arma de soltar que criamos. Esta é a arma a
ser notificada se clicar
nela, ela nos leva a essa função. Vamos adicionar o código aqui. Sempre que lançamos a arma, estamos retirando a
arma do jogador Definindo a colisão como
física somente para a arma, e então estamos
simulando Depois de simularmos a física, podemos adicionar um impulso porque, se
você não tem física, pode adicionar um Não podemos adicioná-lo
antes dessa etapa. Ls, você receberá um erro. Bem, basta adicioná-lo depois disso. Basicamente, pegando essa arma
para desenhar e depois pegando variável de arma
que estamos usando. É o mesmo que este. Basicamente, vamos
partir disso e dizer impulso. Em seguida, adicione esse impulso
que é a física. Você pode ver aqui
se você conectá-lo, clique
duas vezes aqui para
criar um nó de redirecionamento O que podemos fazer agora
é adicionar física. Se você escrever algo, digamos uma ou 5.000
coisas muito extremas, podemos pegar essa mudança de
velocidade O que isso faz é remover
a massa do ator. Não estamos dando uma
olhada na massa, estamos ignorando a massa,
definindo essa
mudança de velocidade Se você jogar
alguma coisa agora, você pode ver que ela voou lá e
até voltou para mim Você pode ver que eu posso
jogar isso agora. E até me lembrei, é um mecânico muito legal Essa é a mudança de velocidade
que criamos aqui para fazer com que, na verdade,
estejamos jogando para o lado Olhamos aqui e,
na verdade, estamos jogando para
lá para fazer com que ele jogue na nossa frente,
onde estamos olhando Podemos clicar com o botão direito do mouse e dizer
get actor forward vector. Lembre-se de que
estamos usando isso. Se você voltar ao gráfico
da van e
ao movimento,
nós o usamos aqui. Obtenha o vetor de avanço do ator para obter o vetor de avanço do
jogador para que possamos avançar. Vamos voltar ao drop repoify e pegar esse vetor de avanço do
ator get E vamos agora quebrá-lo. Então eu posso usar o X, Y e Z novamente. Você pode simplesmente
clicar com o botão direito do mouse se
quiser e dizer split struct pin. Isso é a mesma coisa, eu
só estou fazendo isso dessa maneira. Então eu vou
fazer direto daqui
e dizer fazer vetor. E faça esse vetor,
você também tem XY e Z porque a única coisa que eu
quero modificar é o x. Andy, vou deixar z ser
o que quer que seja agora. Eu não quero jogar para cima. Vamos modificar o xy x
agora mesmo. Vamos pegar isso. Agora precisamos impulsionar. No momento, é zero.
Vamos pegar isso. E é zero. É um. Vamos multiplicar esse por 600. Vamos multiplicar esse por,
digamos, 600
também, assim E então podemos
conectá-los de volta ao x. O que fizemos aqui foi
pegar o x, multiplicá-lo por 600 e colocar de volta o valor
aqui Agora adicionamos um pouco de impulso, mas para o valor Z,
permanecemos os mesmos Ok, vamos organizar
isso aqui e afastar isso. Ok, vamos compilar. Vamos clicar em jogar agora, vamos ver o que acontece se eu pegar algo e
jogá-lo na minha frente. Veja, agora estamos realmente jogando a arma
na nossa frente Seja qual for a direção para a qual
estamos olhando, estamos jogando a arma
à nossa frente. Ok, legal. É muito melhor do que
jogá-lo aqui embaixo de nós É um mecânico legal de se ter. Ok, foi isso.
Vamos salvar tudo. Muito simples, correção ou melhoria. Mas isso faz muito pelo jogo. Vamos passar para a próxima.
185. 14.02 Melhorando o peso da arma: Então, aqui estou eu de volta
ao jogo agora. Você pode ver quando eu
jogo alguma coisa, se eu jogo essa arma, quando ela cai no
chão, ela salta E esse também. Parece que a
arma não é realista. É muito leve. Isso não deveria saltar
tanto no chão. Talvez devesse ficar
parado muito mais rápido. Como se o peso
dessa arma fosse muito baixo e muito leve. Também é um pouco irreal. A segunda coisa é que eu
posso ver a cápsula. Eu acho que aqui é um jogo escondido. Eu também quero fazer isso no jogo
escondido da
cápsula base de armas. Então, eu não acho que a
arma seja leve. O que você pode fazer é algo novo com o qual
nunca trabalhamos antes. Se você abrir a arma
aqui, base de armas. Na base da arma,
você pode clicar
na arma e rolar para
baixo até a colisão Você tem algo
chamado material físico. Com o material físico, você também pode ajustar as configurações
de atrito e de ressalto O que queremos fazer é, na verdade, criá-lo dentro
dessa pasta porque não
temos nenhuma pasta para isso. Poderíamos criar uma nova pasta, mas vamos fazer isso
dentro da base de armas. Podemos escrever, clicar em Ir para
Física e depois adicionar este chamado
Material Físico e Criado. Vá em frente e selecione este. Vou chamá-la de
PM para material físico, podemos chamá-la de base de armas ou algo parecido.
Basta dar um nome a ele. Abra agora, você pode ver aqui que podemos ajustar o atrito e podemos ajustar
o atrito estático Também podemos ajustar
a restituição. E você pode ver que
a restituição
também é chamada de elasticidade da superfície Se eu simplesmente
colocar isso em zero e salvar, e eu for para a base de armas
em vez da base de armas. Se você clicar na arma e na colisão, seleciona esse novo material físico.
Nós o chamamos de Pm. Essa única base de armas. Você vai em frente, compila
e clica em jogar. Agora você pode ver que se eu deixei cair
essa arma no chão, ela está quicando muito
menos do que A outra coisa que quero
fazer é que, em vez de
zerar, vou
colocá-lo em algo como 0,15. Inicialmente, era
0,3, talvez metade Então, para o atrito, vou colocá-lo em
25,25. Então, quanto maior for, maior será
o
atrito e também
não vai saltar e
se mover Ok, vamos
clicar em jogar e
ver o que acontece. Se soltar essa AK, agora
é isso que acontece, ok. Parece que tem muito mais peso em
uma arma como essa. Parece muito
melhor do que antes. Se você quiser, você pode até mesmo
aumentar esse atrito, atrito estático, você pode
brincar com ele E acho que
está tudo bem por enquanto. Vamos fechá-lo e
passar para o próximo.
186. 14.03 Removendo o Reload SFX no Weapon Drop: Tudo bem, então uma
coisa aqui agora, um dólar é se tentarmos
atirar em algo,
recarregarmos e soltarmos a
arma, por exemplo Você pode ver que consigo
ouvir o som de recarga Mesmo quando eu o equipo e deixo cair, consigo ouvir o
som de recarga assim Eu posso ouvir isso quando eu até mesmo
deixo a arma cair no chão.
Precisamos corrigir isso. Se formos até a base de jogadores, vamos dar uma olhada no que acontece quando eu equipo uma arma Está tocando um som.
Se você for ao saque, equipe e solte a arma e siga sua lógica de equipamento Aqui estamos reproduzindo essa montagem de
animação. Lembre-se de que os efeitos sonoros estão , na verdade, dentro das montagens da
animação Se eu for até as
animações de ativos aqui dentro, se pesquisarmos, podemos
pegar o
rifle de recarga, por pegar o
rifle de recarga Lembre-se de que os efeitos
sonoros estão aqui dentro. Na verdade, não podemos parar
o efeito
sonoro aqui porque ele está dentro
da montagem da animação
quando soltamos uma arma Na verdade, quero impedir essa montagem de animação reproduzida porque não quero reproduzir todos esses efeitos sonoros Se eu for para a base de jogadores. Agora vamos para a lógica de
lançamento da arma. Aqui estamos soltando
a arma e procurando por uma
arma no inventário Sempre que encontrarmos uma
arma no inventário, vamos colocá-la aqui. Na verdade, quero adicionar
aqui o código que fará
sentido sempre que encontrarmos uma arma
no inventário e estivermos
prontos para soltá-la. Deixe-me afastar tudo
isso um pouco e deixe-me
organizar isso aqui. Agora, o que queremos fazer é fazer uma transmissão múltipla para
essa arma de lançamento Ainda não temos um,
então, na verdade, posso simplesmente
criar um se eu mover essa parte para baixo e
clicar com o botão direito do mouse e criar uma transmissão múltipla de
eventos personalizada Porque eu quero parar com isso
para todos eles e dizer solte a arma para este multicast O que eu quero fazer é primeiro
configurá-lo para multicast
e confiável Então, vamos usar essa malha para
encontrar a montagem de animação
que está sendo reproduzida no momento Precisamos encontrar a classe de
animação primeiro. Se você pesquisar, acredito que instância de
animação,
obtenha uma instância. Portanto, você precisa primeiro obter a instância de
animação. Então você pode dizer montagem. Então você pode ver que tem muitas funções que podem ser
usadas com a montagem Mas o que queremos fazer
é parar a montagem. Montagem, pare e
vá e conecte. Para este, precisamos
conectá-lo novamente aqui. Então, não podemos fazer isso agora. Para o alvo,
é a instância, podemos chamá-la apenas de
instância para a montagem Podemos simplesmente conectá-lo e
eu vou chamá-lo de equip,
Equip montage, Equip montage, Equipe a montagem de armas. Podemos até chamar isso de arma
aqui, então faz sentido. Ok, agora que temos esse, podemos chamá-lo aqui. Vamos chamar MC Drop Weapon. E vamos
movê-lo para cá. Agora podemos nos conectar
a partir do servidor. Podemos conectar a instância
de animação. Também podemos obter a montagem. Se sairmos daqui e
dissermos montagem, vamos ver aqui. Podemos dizer que obtenha a montagem
ativa atual. E vamos pegar essa
montagem que está sendo
reproduzida atualmente e podemos
colocá-la aqui Deixe-me apenas fazer
anotações de rota para este. Ok, agora que está conectado
, vamos salvar tudo. Agora mesmo. Isso dá a você uma
era dizendo algo aqui. Vamos clicar em Arquivo e atualizar todas as notas.
Acho que algo está errado. Só precisamos atualizar todas as notas,
desconectá-las e conectá-las aqui, compilar o box. Às vezes
, não faz sentido, não tenho ideia do porquê,
mas certifique-se atualizar todas as notas
e poderemos Ok, vamos jogar agora. Porque agora isso deveria acontecer. Se eu jogo, pego uma arma, veja isso por exemplo. Vamos agora trocar de
arma e soltar. Agora você pode ver que a animação de recarga ou equipamento está parando Isso é bom. E se eu recarregar
agora se eu recarregar e Isso está corrigido agora. Ok,
isso está corrigido agora. Não faz nenhum
sentido tocar o som. Se estivermos soltando
a arma agora, adicionaremos mais tarde algumas coisas que
podem incomodar isso O que eu quero que você faça é,
antes de fazermos essa lógica, eu quero que você tire desse
conjunto a montagem ativa atual, certifique-se de que ela é válida Antes de realmente fazermos isso,
pergunte: isso é válido? Vamos simplesmente afastar
tudo isso. Deixe-me
, na verdade, recuar
também e perguntar primeiro
se isso é válido? Se for válido, vá
em frente e pare com theta, ou pare esta montagem aqui E se não for válido, vá em frente e
faça o que você fez antes. Deixe-me criar
algumas notas de redirecionamento para esta e
aproximá-la, assim E agora isso acabou. Vamos ignorar
essa arma MC Drop. Se isso não for válido,
não temos nada aqui. Vamos compilar, vamos
salvar tudo. E agora isso acabou. Podemos passar para a próxima.
187. 14.04 Adicionando anúncio da equipe Win SFX: Então, agora, o que eu quero
fazer é sempre que
jogarmos aqui e quando matarmos
alguém e vencermos a rodada, quando diz
vitória antiterrorista ou vitória terrorista, eu quero reproduzir um efeito sonoro. Seria mais legal do que agora, onde
não temos nada O que eu quero que você faça é
ir ao mercado e acessar o
conteúdo gratuito da Epic Games aqui. Acho que estava na página sete, há algo
chamado Peagon Mail on Você também pode procurá-lo
se quiser. Neste Perregon Ono, você pode pegar isso e
adicionar isso ao projeto Vou dizer mostrar todos os projetos porque,
no momento, não é compatível com o motor N 5.2, vou mostrar
todos os projetos Selecione o projeto Cada strike e selecione a versão
mais recente aqui. Vá em frente e
clique em dois projetos. Deixe-me minimizar isso ou apenas esperar
até que termine Depois de terminar,
vamos minimizar isso. Vamos entrar em nosso próprio projeto. Eu só vou descer até aqui. E aqui está, o
Paragon mail Anons. Vamos apenas adicionar isso à
pasta Marketplace. Nós nos mantemos organizados
como antes. Agora podemos abrir a pasta
Marketplace e acessar
esse e-mail do Paragon Sons Vamos ao Sound. Agora que temos o
som para este, podemos fazer
algo legal primeiro. Antes de fazer isso, eu posso simplesmente selecionar tudo
dentro daqui. Clique com o botão direito em Ações de ativos e edite em massa por meio
da matriz de propriedades. Como quero reduzir
o volume do som de
todos eles para que não fique muito
alto neste curso, vou
reduzi-lo para um
multiplicador de volume 20.1 Feche-o e salve
tudo aqui. Só
precisamos de dois sons no momento. Precisamos da derrota. Temos essa chamada derrota. Você está derrotado. É quando você perde. E também temos
algo chamado vitória. Eu acredito que é esse,
você é vitorioso. Eu quero jogar esses dois. Vamos fazer isso.
Vamos ver as plantas E a melhor coisa está
aqui no modo, porque dentro do modo de
jogo jogamos isso. Lembre-se de que acabamos de fazer isso. E isso atualizará o anúncio
da vitória da equipe. Vamos clicar duas vezes nele e ir até o controle do player. Agora, dentro do controlador do
player, estamos executando este
cliente avistado Queremos reproduzir o som no
local do cliente , porque sempre que você perder, ele tocará um som Sempre que você ganhar, ele tocará outro som. Não queremos tocar o
mesmo som para todos. Isso é o que você fez
com um multicast. Você tocou o mesmo som para todos por meio de
um multicast Mas, para isso, queremos reproduzir
um efeito sonoro de
vitória quando vencermos e queremos
perder o efeito sonoro para
o jogador que perdeu. É do lado do cliente. Para isso, podemos realmente fazer isso aqui porque
sabemos quem venceu. Aqui conhecemos a
equipe vencedora. O que queremos fazer
simplesmente é reproduzir som. Em vez de reproduzir um
som em um local, vamos tocar um som dois D, apenas para o jogador que está ouvindo esse
som agora. Que som estamos tocando? Vamos arrastar a partir disso
e dizer Selecionar, então vamos fazer com que, quando
você perder, você ouça um som. Quando você ganha, você
ouve outra coisa. Agora podemos usar isso,
na verdade, podemos arrastar a partir disso e dizer
igual assim. Lembre-se de reconectar isso. Sempre que a seiva é vendida. Isso vai incomodar. Reconecte-o. Agora queremos comparar
essa equipe vencedora. Essa equipe vencedora é igual
à equipe em que estou atualmente? Agora estamos comparando
essa equipe vencedora com qualquer equipe em que
eu esteja agora. Se for o mesmo,
vá em frente e conecte-o
agora mesmo ao select. Estamos comparando a equipe vencedora com a equipe em que estou agora. Se forem iguais, se eu tiver, vamos jogar isso. Som. A
equipe vencedora é minha equipe. Eu quero jogar a vitória. Som. E eu acredito que é
esse único congresso. Essa. Talvez você seja Victoria. Sim. Então, desta vez eu
quero jogar a vitória. Som. Porque a equipe
vencedora é na verdade a equipe em
que estou agora. No entanto, se não for o caso, quero jogar a
derrota da equipe derrotada. Som E é esse. Ok, agora estamos tocando
o som correto. Vá em frente e compile.
E deveria ser isso. Vamos jogar. E, na verdade, vou
colocar dois jogadores. Agora eu vou jogar e vou
minimizar isso à frente. Na verdade,
eu posso fazer isso aqui. Talvez assim e assim. E vamos seguir em frente e selecionar terrorista, contra-terrorista. Agora, como contra-terrorista, vou até lá, vamos atirar no terrorista. Você é vitorioso. Diz que você é vitorioso. Sempre que você ganhar, agora
vou atirar no terrorista. E sempre que eu atiro
no terrorista e morro, vou mudar rapidamente
para a janela terrorista. Então eu posso ouvir se o terrorista
está dizendo derrotado. Então você pode ouvir dizer que foi derrotado aqui do lado terrorista. Sempre que eu mudo para ele
rapidamente, agora ele está funcionando. É dizer derrotado
sempre que você perde e dizer vitória para
o jogador vencedor. Vamos para o próximo.
188. 14.05 Adicionando indicador de sucesso do inimigo: No momento, é um pouco
difícil saber se você atingiu o jogador
de longe. Se eu atirar nesse jogador, posso ver o pequeno efeito. Mas se houver muitos jogadores e você estiver
atirando por aí, é um pouco difícil saber
se você acertou o jogador. Precisamos de um indicador para
saber se realmente atingimos o jogador ou se
batemos atrás do jogador. Vamos acrescentar
isso. Vamos encerrar isso. E o que eu quero que você
faça é abrir os materiais da causa aqui
dentro. Quero que você acesse a pasta
UI em ícones e incluí esta
para você, a faísca de ícones Vamos para a pasta UI
e para dentro de seus ícones, e vamos
colocar isso na pasta. Abra-o, vá para
o grupo de texturas, altere-o para UI e
altere as configurações de compressão
para a interface do usuário. Vamos fechá-lo. Agora
vamos abrir a cruz, essa, o widget, planta que
fizemos aqui dentro Vamos adicionar essa imagem. Vou apenas
pesquisar a imagem adicionada
ao painel da tela e
vou clicar nela agora. Coloque-o no centro,
assim como a cruz. Coloque o ponto
de ancoragem no centro. E o alinhamento deve ser 0,50 0,5, então está no E defina a posição para 0,0. Em seguida, clique também no conteúdo
Tamanho Dois. E agora está totalmente correto. Você pode clicar
na outra imagem, a cruz aqui, para
ver a diferença. Se você quiser
torná-lo mais organizado, você pode chamar essa imagem, você pode clicar na outra. Vou
chamá-la de imagem Spark. Vá em frente e compile
no Image Spark. Vou mudar a imagem para esse ícone de faísca
que acabamos de importar E eu vou fazer
o tamanho dele ser algo como 70
por 70, eu acho. O Crosier. 60 por 60. Então, vou
torná-lo um pouco maior e vou
colocá-lo atrás do báculo Eu não vou colocá-lo
na frente da cruz. É assim que
parece sempre que filmamos. Vamos fazer com que
os marcadores apareçam. Vamos clicar no Spark.
Por padrão, ele está oculto. Torne-o oculto por padrão. Vamos aqui,
defina como variável, certifique-se de que podemos editá-la. Agora vamos ao gráfico. Vou deletar tudo isso. Isso é muito, muito simples. Vamos criar um
evento personalizado e chamá-lo de Show. É que eu gosto disso. Agora vamos pegar essa faísca de imagem. Vamos definir a visibilidade. Defina a visibilidade
para que não seja testável, para que fique visível e o mouse
não possa interagir com ela Agora, depois de um pequeno
atraso após 0,1 segundos, quero fazê-lo desaparecer. Ele vai aparecer
na tela por 0,1 segundo e depois
vai desaparecer. Isso só vai nos
indicar que
atingimos o inimigo. Essa é a única
coisa que queremos fazer. Vamos encerrar isso. Agora vamos abrir o
jogador e ir para
onde quer que atinjamos outros
jogadores do inimigo. Mas vamos atirar
e recarregar a arma aqui. Sempre que filmamos, traçamos a linha e, na verdade, atingimos
o jogador aqui. Lembramos que verificamos se
não é o companheiro de equipe
que estamos atirando Se não for o companheiro de equipe
, estamos atirando em alguém Neste momento, queremos jogar este site do cliente
porque eu só quero mostrá-lo para o jogador
que está realmente filmando. Este é chamado de Shoot Weapon. Na verdade, vou
fazer um cliente se sentar. Eu só quero adicioná-lo
aqui, clique com o botão direito. Crie uma nova arma de
tiro CL para eventos personalizados, com o lado cego. Execute-o possuindo um
cliente confiável. Vou simplesmente descer até aqui e pegar a referência ao
controlador do player que fizemos. Vamos ver se consigo encontrá-lo. Este controlador de um jogador. Vamos pegar o controlador do player, vamos
cruzar o B, uma referência que fizemos anteriormente para que
possamos obter a planta do widget Agora, a partir do modelo do widgit,
chame o que você acabou chamado show enemy I
ahead e E essa é a única
coisa que ele vai fazer. Também quero reproduzir um efeito sonoro porque
podemos mostrar a interface do usuário, mas também quero
indicá-lo com um efeito sonoro. Jogue. Lembre-se, dentro
disso, temos esse chamado Bullet Impact Player Na verdade, vou tocar
esse único efeito sonoro. O que queremos fazer é primeiro
precisar da arma. A referência da arma.
Vou apenas escrever Base de
armas, selecione a referência de classe
baseada em armas. Vou chamá-la de
arma como antes, só
quero o efeito sonoro. Vou copiar e colar tudo isso. Vá em frente e conecte-o. Vamos esconder os pinos desconectados. E eu só vou mostrar o efeito sonoro do Bullet Impact
Player Quero reproduzir um efeito
sonoro somente para o jogador que
está fotografando novamente. Toque Sound Two D, somente para o jogador
que está filmando. E vá em frente e toque
esse efeito sonoro. Agora, isso deve
funcionar se eu mover isso para dentro e precisarmos
tocar o som aqui Se você simplesmente arrastar daqui
e disser CL, atire com a arma. Assim, podemos convocar esse
evento sempre que filmarmos. Você pode ver que essa entrada é chamada de algo
diferente desta. Novamente, preciso clicar em Arquivo e atualizar todos os nós,
ele é exibido corretamente. Vou afastar
isso um pouco, para que eu possa afastar isso também
assim. E eu tenho mais espaço para
registrar isso aqui. Ok, tudo
está indo bem. Tirando isso,
conectando-o. E temos que conectar
a arma também. Acho que temos a
referência da arma. Sim, é esse. Vai até aqui. Até aqui. E eu
posso clicar duas vezes aqui. Agora eu posso conectar, na verdade, um, eu acredito que é esse. Clique duas vezes nele e conecte-o. Vamos compilar e
agora deve funcionar. Agora, antes de jogar, também
vou aumentar
o volume, para que eu
possa ouvi-la claramente e
encontrá-la rapidamente, acessar a tabela de dados,
abrir as informações da arma, e é essa. O impacto da bala, efeito sonoro
claro. Clique no pequeno ícone aqui. Isso me leva até lá automaticamente. Isso é o que
parece agora. Na verdade, vou
aumentar o som talvez 0,5, talvez seja muito alto. 0.4 Agora eu posso ouvir isso claramente,
então vamos salvar tudo. Vamos agora jogar o jogo e
ver como ele soa. Como servidor,
vou apenas criar um
contra-terrorista E agora, como terrorista, vamos ouvir como
contraterrorista. Deixe-me passar na frente de tudo para que eu
possa ver o jogador. Agora, quando eu atirei no player, você pode ver esse efeito sonoro. E você também pode ver esse
marcador que aparece na minha tela sempre que
eu atiro no jogador,
ele dá a ele um marcador sempre que
há uma bala espalhada, como se estivesse atingindo
logo atrás dele Lembre-se de que adicionamos uma distribuição de
marcadores mais cedo, então ela não
atingirá 100% todas as vezes Sempre que atinge o
jogador, quem é Victoria? Sempre que atingir, o jogador realmente
mostrará esse marcador. Se eu ficar na
frente do jogador, mais
uma vez desse jeito
e atirar no jogador, ele vai
me mostrar o indicador sempre que
eu bater no jogador, sempre que eu não bater, ele não
vai me mostrar nada. Eu também posso ouvir isso
no efeito sonoro. Você também pode ouvir a
diferença aqui. É muito melhor
acrescentar um vencedor do que não ter nada, porque então o
jogador realmente sabe se acertou
o jogador ou não Foi isso mesmo. Vamos
salvar tudo e passar
para a próxima.
189. 14.06 Adicionando Ambience SFX: No momento, é um pouco
silencioso demais dentro
do ambiente. Você pode ouvir. Está tudo bem. Temos os efeitos
sonoros de caminhada, temos a filmagem
e tudo mais, e vai soar muito bem. Imagine se você tem cinco contra cinco aqui,
tipo cinco jogadores, e todo mundo está atirando,
carregando e coisas assim, vai soar bem. No entanto, não há
efeitos sonoros para o meio ambiente. Precisamos de um efeito sonoro
ambiente se você abrir
as configurações do projeto novamente. Aqui vamos voltar ao áudio. Eu incluí isso para
você. O ambiente dos pássaros Você pode adicionar o
ambiente que quiser, mas para este,
vamos usar isso Vamos voltar ao áudio
aqui, efeitos sonoros. Se você arrastar
isso até aqui e eu
clicar com o botão direito do mouse, transforme-o em um. Então eu vou chamá-lo, então ambiente, vá em frente
e abra Deixe-me reduzir o volume. Algo muito baixo, como
0,01, eu tentei e
acho que 0,03 é bom.
Deixe-me salvá-lo. E eu vou clicar e arrastar esse ambiente
para o nível Ele é reproduzido instantaneamente para
todos que estão se conectando. Agora, se eu clicar em Play, você poderá ouvir o efeito sonoro dos
pássaros. Se eu selecionar
terris agora, é muito bom porque tenho
algum ruído de fundo Você pode até mesmo reduzi-lo
ainda mais, se desejar. Agora, tudo está
soando muito bem. Eu posso andar por aí, eu posso
atirar e nós podemos jogar. Mas eu também tenho alguns efeitos
sonoros aqui para o meio ambiente.
Não é silencioso. É uma sensação boa. É uma sensação boa. Não é um
silêncio constrangedor que você tem
no nível . Isso é bom. OK. Portanto, é uma ótima adição. Adição muito rápida, mas
faz com que todo o ambiente
pareça mais vivo. Ok, então foi isso. Vamos salvar tudo de novo. Você pode adicionar qualquer ambiente que
desejar para o seu nível, e vamos passar
para o próximo
190. 14.07 Removendo o Mag ao recarregar: Tudo bem, então a última
coisa que falta
agora é se você selecionar
Terrace, por exemplo, e pegarmos uma arma. Agora, sempre que eu fotografo e recarrego, você pode ver que o carregador não
está sendo removido Parece um pouco
estranho porque estamos recarregando e o carregador não
está sendo removido Então, precisamos fazer
algo sobre isso. O que podemos fazer é
abrir a montagem da animação. Se você voltar
às animações do player e
pesquisar montagens de animação
que você criou anteriormente Vamos ao rifle. Vamos começar com esse. Agora, o que você pode
fazer aqui é adicionar uma notificação.
Vamos começar a fazer isso. Quero adicionar uma notificação
sempre que eu estiver recarregando, sempre que eu levar
esta revista aqui. Vamos tentar adicionar essa
revista que removemos. Não consigo clicar com o
botão direito do mouse em cima disso, então vou clicar com o botão
direito aqui. O que você pode fazer é também
adicionar outra faixa de notificação, para que você não a adicione em
cima dos efeitos sonoros, você pode adicionar outra faixa. E eu vou chamar isso de recarregar, talvez,
algo assim O que você preferir aqui. Vou escrever
Clique e depois Adicionar. Notifique e adicione uma montagem. Notifique este. Podemos usar o código para fazer o que
quisermos com este. Vou
chamar isso de lip in. Vamos adicionar um para
clip-out, ou isso é clip out. Na verdade, isso não é um clipe. Vamos chamá-lo de Lip out. Vamos adicionar um para inserir o clip. Talvez aqui, vamos
clicar com o botão direito do mouse em Montage Notify, clicar nele e
chamá-lo de Lip in Ok, agora temos essas
montagens ou notificações. Vamos minimizar isso. Vamos ver as plantas.
Remova essa pesquisa. Vamos abrir a base da camada de
jogadores. E vamos ao código em que
estamos realmente recarregando. Vá em frente e
clique neste aqui. Esse é o código de recarga. Lembre-se de que comentamos
isso, Recarregue a arma. Essas são todas as coisas que
fizemos calculando balas Aqui no multicast, estamos tocando a montagem,
a montagem de recarga Agora, o que podemos fazer é
realmente usar esse chamado unnotifiedgin Esse gin não notificado
começará a ser reproduzido
sempre que receber uma notificação
dentro de uma montagem de animação Sempre que chegar a
essa notificação aqui, esse código será acionado. Agora você pode ter
várias notificações
para coisas diferentes
na mesma área, e é por isso que está aqui Podemos pegar isso e dizer: isso
é igual a, por exemplo, você o chamou de clip in ou clip out para começar. E vamos fazer um galho, vamos atacar a partir daqui. Se isso for igual a um recorte, então podemos fazer
algo com ele. O que queremos fazer é,
deixe-me abordar isso aqui. O que queremos fazer é esconder o osso da meg Se eu voltar e encontrar a
arma no mercado,
abro a arma FPS,
empacoto as armas,
as malhas e
volto para o meu Deixe-me abrir
o esqueleto aqui agora, assim como antes, onde
escondemos a cabeça do jogador Agora, idealmente, como se você
tivesse um projeto sério, talvez
seja melhor
fazer uma animação, como uma animação de recarga, em que o
Mac entra e sai Você pode realmente ver
isso no outro pacote. Baixamos o documento sobre armas
militares. Se eu voltar para uma
das armas aqui, elas realmente têm
animações aqui Por exemplo, eles têm uma animação para
recarregar esse rifle E você pode ver aqui
que eles têm essa animação baixa, então vou
fechá-la rapidamente. Mas eles têm essa animação de
recarga que você pode usar e
será mais ideal, mas nesse caso não
temos nenhuma animação e ainda
podemos
fazer isso Queremos esconder o osso, assim como o jogador
em que batemos na cabeça. Para este, vamos
esconder o carregador de armas. Ok, é chamado de revista de armas. O que vamos fazer é primeiro
precisar da referência da arma. Esta é a arma equipada. Vamos pegar a arma equipada
que temos agora. Vamos arrastar a partir daqui.
Precisamos das variáveis da arma. Precisamos da
malha esquelética dentro daqui. Novamente, basta escrever osso. Se você não sabe como
se chama, escreva osso e então você poderá
ver através dele e fazer com que este esconda osso pelo
nome, assim como antes. Se isso for verdade, vá em frente
e esconda esse osso. Agora, qualquer que seja o nome desse
osso, mag, se você quiser, você pode escrevê-lo
estaticamente Mas a melhor coisa, novamente, é adicioná-lo
à sua estrutura. Se eu voltar para duas
estruturas, informações sobre a arma. Basta
adicionar uma nova variável e eu a chamo de nome. Digamos nome aqui, nome,
variável, salve e
salve tudo. Vá em frente e
abra sua tabela de dados. Vou apenas abrir espaço entre isso aqui e
abrir minha tabela de dados. Vamos para a direita aqui. Vou chamá-lo de Mag Name. Então podemos dar
a ele o nome do meu AK. É chamado de Mag. A mesma coisa para minhas informações. Acho que essa é minha pistola. Para minha pistola. Não tenho certeza se precisamos fazer alguma coisa
porque, com a pistola, acho que você não consegue ver Mac Se eu simplesmente usar armas, armas
escuras e
abrir minha pistola, ela está aqui, mas
não tenho certeza se você
consegue ver a revista completamente Então, eu vou deixar
este de fora para este. Você pode simplesmente
não escrever nenhum, por exemplo, e não precisa de
nada aqui dentro. Novamente, é melhor fazer animações como as
feitas aqui para essas armas E é muito mais limpo. Parece muito melhor.
Vamos salvar tudo agora. Vamos voltar aqui e
fazer o download como um arquivo CSV. Deixe-me ir em frente e
ir até as tabelas de dados. E deixe-me importar isso. Agora eu importei o
arquivo CSV e ele está atualizado. E deixe-me salvar tudo Agora posso voltar
para minha base de jogadores. E o que podemos fazer aqui agora
é usar essa referência. Podemos simplesmente adicionar uma variável
aqui chamada nome. E podemos
alterá-lo para um nome aqui. Podemos voltar para onde quer que
toquemos o multicast. Vou clicar
neles e ocultar os pinos
desconectados para que não
precisemos ver tudo Deixe-me ver onde
tocamos o multicast. Deixe-me esconder esse também. O multicast é reproduzido
aqui no evento do servidor. O que podemos fazer é
clicar aqui, clicar no nome da revista e conectar o nome da revista Ok, agora vamos descer até aqui. O que podemos fazer agora é pegar nome
dessa revista e
conectá-la ao Bone Name Vamos clicar duas vezes aqui, fazer algumas anotações traseiras
para que também permaneça limpo. Aqui vamos nós. Sempre que
for recortado, ocultaremos o
nome da revista sempre que for recortado Então, podemos pegar isso aqui. Agora, neste caso, temos apenas duas notificações. Só temos isso e isso. Tecnicamente, podemos simplesmente inserir
o código a partir daqui. No entanto, se você tiver
várias notificações, lembre-se de arrastar
novamente, dizer igual
e dizer o que quer que seja chamado, depois criar uma nova ramificação
e, em seguida, conectá-la e dizer que, se for verdade,
você pode fazer isso No entanto, no nosso caso, temos apenas duas notificações. De qualquer forma, na verdade
vou
arrastá-lo daqui.
Só estou afastando isso. Se for falso, vamos
pegar essa arma novamente. E se você simplesmente arrastar o osso direito
e ver que
há algo chamado osso
desoculto pelo nome, vamos usar este Vamos conectar esse nome ósseo mais
uma vez. Vamos nos conectar. aqui e clique
duas vezes para criar
um nó traseiro. Agora deve estar funcionando se eu compilar e salvar tudo Agora vamos
experimentar e ver como fica
se eu clicar em play. Agora lembre-se de que só
funciona na recarga. Essa é a animação do equipamento. Essa não é a animação de
recarga. Agora, se recarregarmos, você
pode ver que o mag está
sendo removido . Ok, incrível. Vamos experimentar
com um M 4 aqui, se eu quiser, e recarregar Incrível, isso também funciona. Parece muito
melhor. E, novamente, é muito melhor
ter apenas animações para isso, mas você também pode ocultar nomes de
ossos ao
recarregar a arma
191. 14.08 Fixing Reload Bug on Weapon Switching: Passo uma hora testando meu
jogo para ver se há algum bug ou algo que precisamos corrigir antes de
terminarmos com isso. Houve apenas um pequeno
problema agora. Você vê se eu clico em jogar agora
e saqueio alguma coisa Agora, se eu estiver atirando com
essa arma, por exemplo, se eu trocar e recarregar ao mesmo tempo que você vê que eu
troco e depois recarrego, na verdade
ela está falhando Agora estou tentando atirar, mas não está atirando, a recarga está falhando. Vamos resolver isso. Antes de terminarmos, vamos até a base de jogadores daqui. Vamos ver nossa lógica de recarga aqui e esta é a arma de recarga
dentro daqui O que está errado é que podemos recarregar mesmo
estando equipando a arma Essa é uma solução muito
rápida por aqui. Quando você tenta pressionar
o botão de recarga, as coisas que estamos verificando Também precisamos verificar se
estamos equipando a arma. Lembre-se de que, se eu
clicar com o botão direito do mouse e disser equipar, fabricamos esse lingote mais cedo Quando equipamos a arma, obtemos sua arma de equipamento E depois lingotes, quando
não estamos equipando a arma, podemos prosseguir e No entanto, se ainda estivermos
equipando a arma, realmente não
faz sentido recarregá-la Vou
copiar e colar isso que
fizemos antes para que
pareça melhor Estou copiando e colando esse código
onde escondemos a revista. Na verdade, vou assistir à animação do
lutequip aqui. A arma MC Equip. Vou colar aqui. Acho que vai ser muito melhor. Talvez você não
precise fazer isso se tiver outra animação
de equipamento. Mas a animação do meu equipamento é
a mesma da recarga. Na verdade, vou apenas
conectá-los aqui para
que pareçam melhores. E também vou colocar
isso aqui e
chamá-lo de mag name, assim como antes Então eu vou, vamos ver aqui, é esse, então vou
conectá-lo aqui. E isso também deve
ser corrigido. Ok, a última
coisa está bem aqui, dentro da arma de lançamento. Ao soltar a arma
e parar a montagem, lembre-se de não fazer a
recarga soar Paramos a montagem aqui, obtivemos a
instância de animação e assim por diante No entanto, às vezes fica confuso com a instância de
animação Vamos atacar
daqui
porque diz acesso N.
Às vezes, podemos simplesmente atacar a partir daqui e dizer que é válido e
adicionar esse nó é válido Estamos nos certificando de que é
válido antes de continuarmos. Se não for, não faça nada. E, novamente, basta fazer algumas anotações
traseiras aqui para torná-lo mais limpo e isso
deve resolver todos os nossos problemas. Experimentei o jogo
por cerca de uma
hora, hora e meia e,
naturalmente, havia mais
problemas para jogar. Estou confiante em dizer que
removemos todas as
caixas do jogo. Também não temos nenhuma caixa quando
jogamos o jogo. Vou limpar
esse projeto para você, criar comentários e
coisas assim. E então eu fornecerei
esse projeto para você. Talvez você já
tenha baixado. Isso está no futuro.
Vamos salvar tudo. E Leah, vamos
para a próxima.
192. 14.09 What Now: Então, parabéns
por ter chegado até aqui. Foi um
longo caminho até o que estou acostumado, mas foi muito
divertido criar isso para você e criar todos
esses elementos para você. Então, agora temos um bom
começo para um jogo de tiro da FBS. E temos as
armas caindo. Temos o inventário,
podemos recarregar,
podemos trocar armas, rifle de
pistola, temos as balas,
temos a saúde e a armadura e
temos os pontuação Então, adicionamos muitas
coisas a esse ambiente. Agora terminamos
com isso atualmente, mas no futuro eu
quero adicionar mais itens. Por exemplo,
podemos adicionar um menu Bi. Podemos adicionar mais armas,
como um lançador de foguetes. Podemos adicionar um lançador de granadas. Podemos adicionar granadas. adicionar um placar para o jogador Podemos adicionar um menu principal
e coisas assim. E o que você pode
continuar
agora é acessar
meu canal no Youtube, e dentro dele, na verdade, você pode lançar
este jogo no Steam. Então, eu vou te ensinar gratuitamente como você pode converter este jogo
agora que você tem. Você pode salvá-lo, você pode converter qualquer jogo que você tenha
agora para o Steam. Assim, você pode adicionar um
menu principal, um navegador de servidor. Você pode adicionar uma barra de pesquisa
e coisas do tipo. E você pode realmente
fazer com que hospede um jogo no Steam para que outros
jogadores participem. Então, eu vou te ensinar isso dentro do meu canal no Youtube. Portanto, certifique-se de ir em frente
e visitar isso também. E você sempre pode visitar meu site e
meu servidor Discord Eu vou ajudar todos vocês em 2047. Portanto, certifique-se de ir
em frente e fazer isso. Também é muito
bom conversar com a comunidade. E sim, estamos apenas nos
divertindo com o desenvolvimento de jogos, então é bom ter você aqui. Obrigado por assistir. E fique
atento para mais atualizações. E também não deixe de assistir meus outros tutoriais e outros cursos sobre
motor real e Vá em frente e salve seu progresso e espero vê-lo em breve.