Transcrições
1. 1.01 Introdução: Neste curso, aprenderemos como chegar
ao Idle Clicker usando plantas
no Honorable Engine five,
recriando um
jogo semelhante aos heróis do Clicker e ao Cookie
Clicker A.
Este curso contém tudo o que
você precisa saber para
começar a desenvolver
dois
jogos D idle clicker Este curso contém tudo você precisa saber para
começar desenvolver
dois
jogos D idle clicker no Honorable jogo Idle Clicker usando plantas
no Honorable Engine five,
recriando um
jogo semelhante aos heróis do Clicker e ao
Cookie
Clicker A.
Este curso contém tudo o que
você precisa saber para
começar a desenvolver
dois
jogos D idle clicker
no Honorable Engine five, incluindo como criar conjuntos de peças e mapas de peças. Como adicionar dois ativos D estáticos e animados. Como gerar danos e matar inimigos usando
o cursor do mouse Como criar uma loja de itens
com itens que podem ser gerados. Como criar uma
mecânica de clique automático para causar
dano automaticamente ao comprar
itens na loja de itens Como adicionar vários
níveis ao jogo, entre os quais você pode alternar. Como exibir texto de combate
flutuante, como criar dois DUI
e uma interface de geração de mundos. Dicas de como criar ferramentas de interface de usuário. E, finalmente, como adicionar
a mecânica de ascensão para rejogabilidade e
causar mais danos à medida que você sobe 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 dois cliques em D do zero usando o
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 instalar o Unreal Engine five, primeiro
você precisa
acessar epic games.com Então vá até lá
e você encontrará um botão azul de download no
canto superior direito. Vá em frente e pressione
o botão de download. E aqui você obterá o instalador do lançador da
Epic Games Então vá em frente e
execute o instalador. E depois de instalar o slauncher da Epic Games,
vá em frente e faça o login Então, vou digitar
meu e-mail e minha senha e fazer login no
lançador Depois de fazer login
no inicializador, é
assim que ele ficará Então vá em frente e pressione
a guia Unreal Engine. E dentro dessa guia, você provavelmente estará
na nova seção. Vá em frente e clique em Biblioteca. E dentro da biblioteca, você pode ver todas as versões reais do motor que
você tem atualmente. Mas se você é novo aqui, provavelmente não tem nada aqui e pode ver uma caixa cinza onde você pode
baixar o motor real. E se você não vê, você
sempre pode clicar
no sinal positivo aqui em cima, e ele exibirá essa caixa
cinza e você poderá clicar
no número para selecionar qual versão do
motor Unreal deseja instalar Agora, vou usar o
mais recente Unreal Engine 5.3. Mas se você estiver assistindo a
este curso no futuro, se tiver 5,4 ou
5,35 ou qualquer outra coisa, ainda
poderá
seguir este Não há uma grande mudança. Então, vamos seguir em frente e
entrar no Unreal Engine 5.3. Vou
prosseguir e atualizar, e vou lançar o motor.
3. 1.03 Criando um novo projeto: Quando você inicia o Unreal Engine, essa janela é exibida para que você possa ver seus projetos
recentes e também ver
algumas outras guias Esta guia ficará vazia se você não tiver nenhum
projeto anteriormente, mas você pode abri-los aqui
se estiver trabalhando em um projeto. No momento,
queremos criar um jogo. Então, vou até
a guia Jogos. Mas, como você pode ver
no Unreal Engine, não
se trata apenas de jogos Você também pode, por exemplo, arquitetura
automotiva
e assim por diante. Vamos até a guia
Jogos por enquanto. E dentro da guia do jogo, você vê muitos modelos com
os quais você pode começar. Por exemplo, se quiser
criar um jogo de tiro em primeira pessoa, você pode escolher o modelo em
primeira pessoa Se você quiser criar um jogo de cima
para baixo como Diablo, por exemplo, você pode
começar com este modelo No entanto, gostaria de começar
com um projeto em branco. Como você sabe, se você já
fez meus cursos anteriores, porque eu quero te ensinar
tudo do zero. Agora, todos esses modelos podem ser criados a
partir de um projeto em branco. E eles não são difíceis de criar se você sabe
o que está fazendo. Gostamos de começar com um projeto em branco e construir
tudo sozinhos Eu realmente não gosto de começar
com o modelo. com um projeto em branco, ensinar tudo
aqui à direita,
selecione o Blueprint como a linguagem de
programação para a plataforma de destino.
É desktop. Por enquanto, sempre podemos nos concentrar
no celular em outro momento. Mas esse curso
é sobre desktop. Provavelmente farei um curso sobre celular
no futuro. Mas mesmo se você selecionar desktop, você ainda pode fazer
isso para celular; mais tarde, você pode fazer isso
para PC e celular. Vamos selecionar a predefinição de qualidade como máxima para o conteúdo dos dados Se você tiver isso
marcado, vá em frente e marque para que não
tenhamos nada Novamente, eu gostaria de começar com um projeto em branco sem
nada aqui embaixo. Você pode selecionar onde
deseja salvar o projeto e, em seguida, dar
o nome ao projeto. Agora vou chamar
isso de Gin Clicker. E você sempre pode chamá-lo que quiser, isso realmente não
importa. E vá em frente e
clique em Criar. Depois de iniciar o motor cinco
real, é
assim que ficará. Agora estou gravando em resolução de
quatro K e
tenho um monitor de quatro K. A interface do usuário pode parecer um pouco
pequena para você quando estou gravando este vídeo
para todo o curso. Na verdade, vou aprimorar
minha interface para que você possa
ver o que estou fazendo Se você quiser saber como
eu posso fazer isso também, você pode clicar em Ferramentas
e ir para Depurar Vá para o Widget Reflector
aqui. Vou apenas aumentar a escala
da minha interface de usuário. Talvez não 21,3,
talvez este seja um. Acho que vou
mantê-lo em 1.3 e sempre
posso alterá-lo
nas aulas posteriores se achar que
é muito grande ou muito pequeno. Na verdade, vamos mantê-lo em 1,25
e eu vou fechá-lo. Ok, então, na próxima lição, daremos
uma visão geral rápida do Unreal Engine Five, para que possamos ter certeza
disso antes de criarmos nosso jogo Agora, se você já fez meus cursos anteriores e já
conhece o
Unreal Engine five, pode pular a próxima lição Mas vamos para a
próxima lição e começar.
4. 1.04 Visão geral do Unreal Engine 5: Tudo bem, então antes de
começarmos nosso jogo, vamos dar
uma rápida visão geral do Unreal Engine Five Agora, se você já usou o motor antes e fez meus cursos
anteriores, vá em frente e pule esta
lição para a próxima Agora, aqui no meio do motor está
a janela de visualização. Dentro da janela de exibição
está o mundo. Este é o seu jogo que
você pode ver visualmente. Como você pode ver aqui,
temos paisagens e assim por diante. Mas se você clicar com o
botão direito do mouse na janela de exibição, verá que pode controlar sua visualização pressionando o
botão direito do mouse Agora, se você segurar o
botão direito do mouse e clicar em também, verá que pode
se mover segurando o
botão direito do mouse e
clicando em W, você pode se mover. Agora você pode ver que estou me movendo muito lentamente porque este
é um mundo grande. Se você quiser se mover mais rápido, basta
clicar aqui na velocidade da câmera, vou aumentar a
velocidade para algo como 16. Em vez disso, se eu segurar o
botão direito do mouse e
clicar em W. Agora você pode ver que eu posso me mover muito mais rápido no meu mundo,
como você pode ver aqui. Ok, você também pode
clicar em D para mover para a direita, clicar em A para mover para a esquerda e clicar em para voltar. Mas lembre-se de que você precisa segurar o botão direito do mouse e
clicar em W, D e A. Na verdade, é
assim que eu
navego , geralmente no motor honual, basta segurar o botão direito
do mouse e
sei viajar pelo mundo e ver o que estou
fazendo desenvolvendo o jogo E, claro, se você
quiser aumentar e diminuir o zoom, você pode ampliar com a roda
do mouse, assim. E você
também pode diminuir o zoom com a roda do mouse. E você pode simplesmente voar
pelo mundo, tentar ficar confiante
com o movimento. Agora, se você está acostumado a jogar jogos de
tiro em primeira pessoa e assim por diante, isso é natural para Se você ainda não jogou
isso, tente correr e ver se consegue
entender Tudo bem, então temos alguns botões aqui
na janela
de exibição, podemos clicar neste E aqui você pode, por exemplo, mostrar seus quadros de FPS por segundo E quando você clica nele, você pode ver que ele aparece
aqui à direita. Agora, isso realmente não importa, por enquanto, você pode alterar o
campo de visão e assim por diante. Mas o bom do Unreal Engine é
que você não precisa
saber o que
cada botão faz Não sei, talvez
metade dos botões, porque eu não faço cinema. Normalmente, eu não faço
filmes cinematográficos. Por exemplo, automotivo,
eu não desenho carros. existem alguns
botões que você Na verdade, existem alguns
botões que você não precisa quando
está desenvolvendo seu jogo. Tente não se lembrar de tudo, mas tente apenas lembrar o que é realmente
necessário no momento. O que é realmente necessário
agora é a visão do jogo. Com a visão do jogo, você esconde os ícones dentro do nível. Por exemplo, se eu clicar em
con G, essa é a visualização do jogo. Veja, eu escondo essa seleção
laranja. Agora, se eu clicar novamente no meu teclado, eu
desativo a visualização do jogo. Como você pode ver
aqui, o atalho é quando eu clico
na visualização do jogo, você remove todos os ícones Agora, se eu adicionar uma
luz, por exemplo, uma luz pontual, e aqui eu tenho
o ícone de uma luz pontual. Agora você realmente não precisa
adicionar uma luz pontual no momento. Estou apenas mostrando que,
se você clicar em agora, ele oculta o ícone da luz pontual.
E eu não consigo ver isso. Se eu clicar novamente, ele mostra o ícone
da luz pontual. A linha de pontos está um
pouco pequena no momento. Se eu clicar
aqui, você pode ver que
na verdade está aqui embaixo. É um mundo grande. Geralmente
desaparece, mas aqui está E se eu clicar em G e G novamente, parece que a
visualização do jogo é muito, muito boa para visualizar seu jogo sem
nenhum desses ícones Se eu construo um mundo, e você pode imaginar
que tem muitos ícones, se você tem muita iluminação, você tem muitos objetos
dentro do seu nível. Você pode clicar em G para
remover todos esses ícones e ver seu mundo
sem nenhum desses ícones. Agora, o próximo passo é
o modo imersivo. Se você clicar em 11, maximizará a
janela de visualização e poderá visualizar seu mundo
com a máxima Isso é muito, muito bom se você quiser ver a aparência do
seu jogo. Agora, novamente, você pode clicar
em G para mostrar ícones, G para ocultar ícones. Clique em 11 para minimizá-lo. Novamente, dois botões importantes, o modo imersivo
e a visualização do jogo Agora, aqui temos a visão em
perspectiva e
também temos outras visões,
as visões ortográficas Agora, o
mais importante é a visão correta. Isso é o que vamos usar porque
vamos trabalhar com dois D. Na verdade, não
vamos entrar em um mundo
de três D. Não precisamos muito da
perspectiva. Mas, por enquanto, vamos
para a visão correta, e isso é chamado de visão
ortográfica Se você diminuir o zoom com a roda do
mouse, poderá ver que esse é
realmente o mundo, o mundo aberto
na visão certa. Olhando para uma vista em dois D, você pode vê-la de cima. O que parece,
obviamente, não consigo ver muita coisa porque você não consegue ver
as colinas do topo. Se você vê de baixo, é
assim que
parece, não consigo ver muita coisa. Se você olhar da esquerda, isso é o que
parece. E assim por diante. Você pode ver as diferentes
visões do mundo. Obviamente, essa é a visão em
perspectiva novamente. Aqui temos diferentes modos
de iluminação. Nós realmente não
precisamos deles porque não
vamos
trabalhar em três D. Realmente
não se concentre
nisso agora no programa. Você pode mostrar e ocultar coisas
diferentes. Nós o usaremos mais tarde. Por exemplo, você pode
mostrar a colisão, esconder a névoa e assim por diante Não é realmente necessário agora, não
vamos entrar nisso agora. Essas ferramentas são muito importantes. Aqui temos
a ferramenta de seleção e isso basicamente seleciona
itens em seu mundo Agora, para usá-los, vamos realmente adicionar
algo ao mundo. Vamos até isso, toque rapidamente no botão
Adicionar ao projeto. Muito importante
aqui. Você pode adicionar, por exemplo, uma forma básica. Vamos adicionar um cubo. Aqui está o cubo que adicionamos. Vou diminuir a velocidade
da câmera. Estamos nos movendo muito rapidamente no mundo,
colocando-o de volta em um. Se você clicar neste, verá que esta é
a ferramenta Selecionar. E lembre-se de que você tem atalhos
para essas ferramentas, você pode. Esta é, a próxima
é a ferramenta de movimentação, você clica nela, você pode ver
esses pontos de pivô aparecerem. Agora, se você clicar no vermelho, poderá se mover para esse eixo. Você clica no azul, você pode se mover para cima e para baixo. Se você clicar no
eixo verde, poderá se mover dessa maneira. Agora, as cores delas
são na verdade X, Y e Z. E você pode ver isso aqui
no painel de detalhes Você pode ver a
localização dele, o X. Se você segurar o mouse sobre ele, também
poderá ver
o valor na verdade antes que ele normalmente informe
que esse é o eixo X. Mas eu posso ver agora que
não está mais fazendo isso. Mas, basicamente, o
vermelho é o eixo x, o verde é o eixo y, azul é o eixo z, o eixo x, o eixo y e o eixo z. Está bem? Você pode movê-lo assim. Você também pode segurá-lo aqui
no quadrado no meio. Você pode movê-lo em duas
direções ao mesmo tempo. Ou você pode segurá-la sobre essa pequena
esfera branca no meio e movê-la nas
três direções ao mesmo tempo. Você também pode aqui
no painel de detalhes, talvez tenha notado que esses são os detalhes ou o que
você selecionou aqui. Se eu selecionar isso aqui, aqueles planos terrestres
deste mundo aberto, ou se eu selecionar meu cubo, veja detalhes diferentes sobre o item que você
selecionou em seu mundo Por exemplo, posso ver
a localização do meu item, posso ver a rotação dele. Eu posso ver a malha estática que é basicamente
o modelo de três D. Eu posso ver o material fornecido. Eu também posso ver coisas
sobre a física. E eu posso ver, por exemplo, física
simulada não é aplicada Eu posso ver a
gravidade aplicada, eu posso ver as opções de colisão, opções iluminação
e assim por diante e assim por diante E você pode ver que tem
muitas coisas que você pode ver. Não se preocupe com isso por enquanto. Vamos trabalhar
muito no painel de detalhes. Vai ficar cada vez mais fácil para você. Muitas dessas coisas não
vamos usar porque estamos ,
novamente, trabalhando em dois D, então não se preocupe com isso, mas basicamente aqui
para o local, você pode movê-lo assim e
também pode fazer
isso em tod, ou pode
movê-lo assim clicando aqui e
arrastando com o mouse, clicando e arrastando com o
mouse nos números E você pode movê-lo
assim. Ou, se você tiver locais
específicos,
poderá digitá-los. Se você clicar aqui
, eu posso escrever 1.450, por exemplo E eu posso clicar em Inter. Você pode ver meu cubo se mover para o local preciso.
Você pode fazer isso assim. Você pode movê-lo
manualmente, mova-o aqui. Ou você pode digitar
o número novamente. Agora, a rotação, que é a próxima, se você
clicar em, no teclado. Então, o primeiro foi, o
próximo foi para a ferramenta de movimentação. A ferramenta de rotação é E no teclado com a
ferramenta de rotação, autoexplicativa, você pode girar o item
em eixos diferentes.
Novamente, em dois D, temos
apenas dois Não se preocupe com o terceiro, mas ainda é o mesmo processo. Então, vou ensinar
isso a você dessa maneira. Novamente, para a rotação. Você também pode alterá-lo aqui. Se você quiser
redefinir a rotação, talvez não esteja
satisfeito com isso. Você pode clicar
nessa pequena seta e ela redefinirá
tudo para o padrão. Então essa é a ferramenta de rotação. A última coisa é
a ferramenta de escala. Se você clicar em R
no teclado, clique em Q para
a ferramenta de seleção,
para a ferramenta de movimentação, para
a ferramenta de rotação e R para a ferramenta de escala. Agora, novamente, para a ferramenta de escala, você pode escalá-la em direções
diferentes. Ou se eu clicar no
controle Z para voltar, você também pode escalá-lo uniformemente
nas três direções Se você clicar aqui no meio, assim novamente, se não estiver satisfeito, sempre
poderá
clicar nessa seta. Você também pode
escalá-lo novamente se
clicar com o
mouse e arrastar. Ou se você quiser
escalá-lo uniformemente, você pode clicar nesse cadeado Sempre que você escalar, um deles, todos eles também serão escalados. Essa é a
coisa boa da fechadura. Se você quiser escalar
apenas um deles, você pode abrir a fechadura e
escalar em um lado de cada vez,
ok? Muito importante. Lembre-se desses. usá-los durante todo
o curso, nos próximos cursos e, provavelmente, em todos os
cursos que fizermos. Basta lembrar o Q
para a ferramenta de movimentação, para a ferramenta de rotação
e R para a ferramenta de escala. Também temos algumas opções de
captura de fotos aqui. Como você pode ver, quando
eu movo alguma coisa, ela se encaixa em uma grade Não está se movendo suavemente
por causa disso. Você pode clicar aqui e
aumentar o número. Isso vai estourar ainda
mais do que antes. Isso é bom se você está
tentando construir algo
com uma estrutura. Agora você pode copiar e colar isso. Se você segurar a tecla Alt no teclado
e clicar e arrastar, esse item será copiado. Vou tentar copiá-lo novamente. Segure, clique e arraste. Você está segurando Alt e
pode ver que eu copiei novamente. Agora, o encaixe é
muito, muito bom se você está tentando construir algo
assim com uma estrutura Agora, se você não
quiser tirar fotos, você sempre pode clicar nesse botão e isso o
desativará Você pode, você pode
movê-lo suavemente. Você pode fazer a mesma
coisa com o dimensionamento, a rotação e o dimensionamento Você pode aumentar a rotação, encaixe e também
a escala pode desativar o ajuste de escala
ou aumentar o encaixe ou aumentar o Vou colocá-lo novamente
e voltar para dez, que é o padrão de antes. Você pode diminuir e aumentar
a velocidade da câmera. Agora, o bom disso é se você estiver
focando em objetos pequenos, talvez queira que a
velocidade da câmera seja menor, para você
possa se mover mais devagar e
se concentrar no que está fazendo Se você estiver se movendo em um mundo
muito grande, você pode ver que eu posso me mover muito mais rápido aumentando a velocidade da
minha câmera. É assim que costumamos usá-lo. Acabei de voltar para um aqui. Ok. A última coisa
muito
importante aqui também são as configurações. Você pode acessar a escalabilidade do
motor. E agora você
pode ver que estou operando o motor com uma qualidade épica. Você também pode
configurá-lo em baixa qualidade. Por exemplo, se você está atrasado, se você tem um computador de baixo custo, você pode ver que agora meu motor não
está realmente usando
muita memória Se você tem um bom
computador, por exemplo, você sempre pode aumentar
a escalabilidade Normalmente, faço filmes
quando faço algo como arquitetura ou se faço
uma cena em um jogo É muito bom rodar
filmes e vai demorar. Então, agora eu
não vou fazer isso porque também estou
gravando o curso. Estou apenas administrando isso na
Epic por enquanto. Tudo bem Então, vamos dar uma olhada aqui em cima, você tem os botões básicos do arquivo. Como você sabe de todos os softwares, você pode salvar o jogo
ou salvar o nível. Você também pode criar um novo
nível, o que faremos mais tarde. Você pode exportar
tudo e assim por diante. Você também tem as preferências do editor e dentro das referências do editor, pode editar coisas
sobre esse editor. Por exemplo, essa
seleção é laranja. Talvez eu queira que seja
algo como vermelho em vez disso. Eu posso fazer isso O, você pode editar coisas sobre isso. Agora vou clicar no controle Z porque estou
satisfeito com a cor. Mas, basicamente, você pode
mudar coisas sobre esse editor nas configurações do
projeto, você pode editar coisas
sobre esse projeto. Por exemplo, você pode
dar
um nome ao projeto , o nome da sua empresa. Mais tarde, talvez você
lance o jogo. As pessoas podem ver seu e-mail de contato de
suporte e podem entrar em contato com
você se houver bugs. Você também pode adicionar filmes. Por exemplo, quando
você abre um jogo, há um pequeno filme sobre o logotipo por 5 segundos
e, em seguida, o jogo começa. Você pode adicionar filmes
aqui, iniciar filmes, empacotar o jogo
em diferentes consoles. Você tem muitas coisas que
você pode fazer dentro daqui. Agora vamos entrar
aqui porque você tem algumas coisas com as quais você pode trabalhar aqui e nós também
faremos isso. Assim, podemos ver que você tem muito que fazer nas configurações
do projeto. Novamente, como eu
disse antes, não se concentre em todos eles. Você vai usar
até 20% ou vai
usar 20% deles,
talvez 15% 10%.
Realmente, não se concentre
nisso, será muito confuso
se você começar a fazer coisas que
realmente não usará mais tarde Por enquanto, não vamos nos concentrar
nas configurações do projeto, vamos apenas encerrá-lo. Vamos passar por
isso sempre que precisarmos, mas
basicamente você não precisará da maioria dessas coisas. Vamos nos concentrar em tudo isso. Vamos fazer
este curso e eu vou
te ensinar tudo o
que você precisa saber. Aqui à direita, você pode ver o Outliner Se você clicar nos
objetos do mundo, poderá ver que eles também estão
no World Outliner O World Outliner
basicamente mostra quais itens você tem
dentro do Você tem os três
cubos que acabamos de adicionar. Temos alguma iluminação
que você pode ver aqui. Temos um céu e temos
a luz, e assim por diante. Na verdade, eles estão aqui e você pode realmente
vê-los aqui. Você pode clicar na luz
direcional,
por exemplo, essa
é a luz do sol Se você clicar em,
no teclado, isso o levará aonde
você selecionou. Se eu clicar em, você será
levado até aqui. Agora, se eu clicar em,
porque escondi meus ícones, pressione G. Então você pode ver os ícones e aqui você pode realmente ver todas as luzes Eles estão escondendo isso aqui. Novamente, clique em se
quiser ir até lá rapidamente. Então, por exemplo, eu posso
clicar no cubo. Se eu posso realmente encontrar o cubo, não
consigo encontrar o cubo O bom do
delineador é que você pode encontrar o cubo aqui e
clicar no Você pode realmente ver
os cubos aqui. Você também pode selecionar
itens aqui. Clique no teclado para
levá-lo até lá, se quiser
ir até lá rapidamente. Basicamente, o
World Outliner está mostrando o que você tem
dentro deste mundo, dentro do seu jogo agora Todas essas são apenas as partes da
paisagem aqui. Como você pode ver,
não há muita coisa
no delineador Você pode criar pastas se
quiser se manter organizado. Clicar no ícone dessa pasta
criará uma nova pasta. Você pode simplesmente renomear a
pasta aqui que criamos. Você pode renomeá-lo e
adicionar coisas a ele. Se você clicar e arrastar
o item até ele, poderá se manter organizado dessa forma. Você pode ocultar itens
clicando aqui e clicar nele
novamente para mostrá-los novamente. Sim, esse é basicamente o esboço sobre o qual
já falamos, o painel de detalhes
e, aqui, não há muito o que fazer O mais importante
por enquanto é que você pode adicionar coisas ao mundo
clicando aqui, por exemplo. Você pode adicionar luzes. Nós realmente não precisamos disso. Vamos trabalhar com dois D. Você pode adicionar formas novamente, não
precisamos disso. Vamos trabalhar com dois D. Na verdade, não
vamos
nos concentrar muito nisso, mas basicamente podemos adicionar
coisas como volumes. Vamos adicioná-lo mais tarde. Então, precisamos de algo dentro
deste botão muito, muito
importante. Você também pode jogar o jogo e ver como é
o jogo. Agora, nós
realmente não temos muita coisa
no jogo, não está acontecendo
muita coisa. Vou clicar em Escape no meu teclado e
vamos sair daqui. Tudo bem, antes de terminarmos com isso, a última coisa dentro desse motor é
a gaveta de conteúdo Se você clicar nela, essa
janela será exibida. O que é a gaveta de conteúdo é basicamente onde você pode
adicionar todos os arquivos do jogo Se você tiver as duas artes em D que criou
em seu software, por exemplo, os personagens,
o ambiente, conjuntos de blocos, todos esses
arquivos estarão aqui. A música, os
efeitos sonoros, o que você tiver. Se você está fazendo um jogo em três D, você tem os três
modelos em D, texturas e assim por diante Então, todos os arquivos
estarão dentro daqui. E você pode clicar e arrastar
coisas para o mundo, e podemos usá-las dentro
da gaveta de conteúdo Eu realmente não gosto de ter uma
gaveta de conteúdo assim, porque se eu clicar em algo
no meu mundo, ela a minimizará Novamente, acho que
também será confuso para você. Enquanto você
segue o curso, o que você pode fazer é clicar
na gaveta de conteúdo E eu vou clicar
em Duck in Layout. E isso fará com que a gaveta de conteúdo agora seja
chamada de navegador de conteúdo Ele ficará aqui na
janela de exibição ou na minha opinião, e eu posso
redimensioná-lo se você quiser Você pode redimensionar todos
os painéis, se quiser. É muito melhor,
ao seguir este curso, poder
ver isso o tempo todo. E eu geralmente também faço isso assim. Era assim no
furo do motor quatro. Sim. Então, basicamente, você
pode ver seus arquivos, criar novas pastas. Se você escrever, clique
nessa pasta de conteúdo, por exemplo, você pode
clicar em uma nova pasta. Você pode chamá-lo de, digamos ativos ou o que
você quiser adicionar. Mais tarde, você pode
até clicar com o botão direito nessa pasta e ir para Definir cor. Você pode dar
uma cor a essa pasta se quiser. Assim, você
pode se manter organizado. quer que você queira fazer, você sempre
pode clicar com o botão direito do mouse novamente e
limpar a cor se não
quiser. Agora, todos os arquivos estarão aqui
novamente. Você também pode
clicar no botão Adicionar e adicionar uma nova
pasta, se quiser. Você também pode ver que você pode adicionar
outras coisas, como
a classe Blueprint, essa é a programação
que faremos Você pode adicionar um novo nível, você pode adicionar um material. Você pode adicionar muitas coisas sobre folhagem
de animação se estiver fazendo grama, árvores e assim por diante. Você pode adicionar algo
sobre o papel em T, que é
a imagem com a qual
trabalharemos Nós estaremos adicionando todos eles. Aprenderemos tudo aqui. Você pode adicionar física e assim por diante. Você também pode fazer isso, em vez
de fazer isso daqui, que eu nunca uso, você pode
clicar na pasta e
escrever clicando aqui. E você pode adicionar as mesmas
coisas que eu costumo escrever. Clique aqui e adicione coisas. Mas você também pode fazer isso aqui em cima, ok? Isso era tudo. Agora, se você quiser minimizar ou tornar esses ícones
cada vez maiores, mantenha o controle do teclado e
diminua o zoom. Isso aumentará ou
diminuirá o tamanho do ícone. Você também pode manter
o controle e ampliar para aumentar o
tamanho dos ícones. Agora você também pode clicar em
Configurações, Eu acertei em Tamanho. E isso é basicamente a mesma coisa que aconteceu o Nal Engine five
e a visão geral. Espero que você esteja um
pouco mais confiante no que está dentro daqui. Novamente, vamos fazer um curso inteiro aqui dentro, então você vai ficar
confiante com ele por enquanto. Vamos passar
para a próxima lição.
5. 2.01 Introdução ao jogo: Olá e bem-vindo. E muito obrigado por
se juntar a mim neste curso aqui. Esta é apenas uma introdução
ao jogo que estamos criando. Gostaria de mostrar o que estamos criando antes de começarmos, para que você tenha uma ideia do que estamos
fazendo neste curso. Então, basicamente, estamos
criando um jogo de dois cliques. E aqui está, dentro
do Unreal Engine Five. E estamos
usando apenas plantas para criar esse projeto,
então não temos C plus Agora eu só quero
te mostrar o que é o projeto. Se eu clicar em reproduzir aqui, você verá que a música já
está tocando. Este é basicamente um jogo de
clicker como Cookie Clicker ou
Clicker Heroes, se Então eu posso falar livremente
se eu clicar aqui. Então, aperte o volume 20 e
clique em reproduzir novamente. Basicamente, é
como Clicker Heroes, onde você tem um
inimigo no meio Você tem itens da loja aqui ao lado, você
tem moedas aqui em cima. Acabei de me dar
muitas moedas para poder comprar tudo isso e mostrar
o jogo para vocês. Eu também tenho alguns níveis
aqui ao lado. E eu tenho um cronômetro em que preciso
matar o inimigo antes. Porque se eu não
matar o inimigo, o cronômetro será reiniciado e o
inimigo se curará completamente Mais uma vez, tenho que matar esse inimigo antes
que o tempo acabe Se eu matar o inimigo, você pode
ver que um novo nível foi desbloqueado e eu posso ir para o próximo nível para
gerar o próximo inimigo, e eu posso matar esse Agora, toda vez que eu mato um inimigo, ganho moedas e posso ir
mais longe nos níveis, e os níveis continuam
assim que eu tenho dinheiro, agora
posso desbloquear itens
que posso comprar aqui. Por exemplo, você
pode ver que meu mouse está causando 15 de dano por clique. Também posso ver aqui, se eu segurar o mouse sobre ele,
ele diz que está causando
15 de dano por clique. E eu posso clicar
nele e comprar um. E agora eu faço 40 de dano por clique e posso
clicar no inimigo. E agora eu posso ver
que eu faço mais danos. Esses itens aqui embaixo são
mecânicos de clique automático. Basicamente, se eu comprar este, ele diz que me causa
cinco de dano por segundo. Cinco por um. Agora você pode
ver que ele causa dano automaticamente ao inimigo e
causa cinco de dano por segundo. Obviamente, isso não
vai matar o inimigo, e o inimigo continua
reiniciando a saúde Mas se eu comprar algo mais forte, você pode ver que ele pode chegar
à morte aqui e ser desbloqueado. Agora eu tornei isso
muito fácil por enquanto, porque eu só quero mostrar a
vocês como é o jogo. Mas, obviamente, a saúde
precisa ser muito maior e o custo também. Agora, nas plantas, se
eu simplesmente remover minhas moedas, se eu for até o jogador, clico na quantidade de
moedas e a coloco em zero E se eu clicar em Jogar, você pode ver aqui os itens
que ainda não consigo comprar. Os botões foram
desativados e o botão muda de cor
assim que eu tenho dinheiro. Você pode ver agora que eu
posso comprar este item. E assim que eu compro uma, agora tenho 15 moedas, posso comprar uma e gasto
as moedas aqui ao lado. Você pode ver quantos eu
comprei assim que compro. Tudo o que você pode ver, aliás, toda vez que compra um item, está
aqui para o mundo Então, se você comprar um
item, ele aparece aqui. E se eu comprar mais, você pode ver que continua
surgindo aqui. Assim, todos os itens que você comprar também
aparecerão
no mundo Assim que eu comprar todos
os itens e uma quantidade específica
, aparecerá um
botão de subida Quando clico nele, posso
subir para o próximo estágio. Este é basicamente
o jogo que estamos criando e
também há mecânicas de ônibus aqui, então inimigos de ônibus
aparecerão mais tarde nas etapas Este é basicamente o
jogo clicker que estamos criando. Espero que você se junte a mim
nas próximas aulas. Será muito divertido
criar tudo isso com você, e prometo que será
fácil e facilitarei as coisas
para você também. Vamos continuar.
6. 2.02 Criando um novo nível: Tudo bem, vamos
começar com o projeto. Vamos continuar e
criar um novo mapa dentro das pastas
no navegador de conteúdo.
Eu vou escrever. Clique primeiro e crie uma nova
pasta e chame-a de mapas. Basta se manter organizado
com o projeto. Agora, dentro daqui,
vou clicar agora. Você pode criar um nível
com dois métodos. Você pode clicar com o botão direito
aqui e criar um novo nível. Ou você pode ir até Arquivo e clicar em Novo nível. Agora, a diferença é que
se você clicar
aqui a partir daqui e
clicar em Novo Nível aqui, você pode ver que você pode criar um
nível de mundo aberto. Você pode criar um nível
vazio de mundo aberto e assim por diante. Então você tem alguns
modelos aqui embaixo. Se você clicar com o botão direito do mouse
e clicar no nível, você não terá essas opções, apenas
obterá automaticamente um nível vazio. Eu só quero criar um nível
vazio porque, novamente, vamos criar
tudo sozinhos. Clique com o botão direito aqui,
crie um novo nível. Vamos chamar isso de um mapa. Eu costumo chamá-lo de mapa, vamos chamar isso de masmorra Não acho que
teremos vários mapas, este é o
único que teremos. Vamos
clicar duas vezes neste. Eu ia te dizer,
você quer salvar este mapa? Na verdade,
isso é o que significa quando você tem estrelas em seus ícones. Se você tem
estrelas pequenas, significa
que ainda não as salvou. Vamos seguir em frente e
clicar em Salvar selecionado. E agora estamos
dentro desse mapa. Agora você pode ver que está muito
escuro, não podemos ver nada. E também aqui no Outliner, você pode ver que não
consegue ver nenhum item Isso ocorre porque seu
nível está vazio. Você não tem
nada, você não tem iluminação, nada. Vamos adicionar
muitas coisas aqui, mas por enquanto só queríamos
criar um novo mapa. Vamos continuar e
clicar em Arquivo Salvar tudo. Tecla muito boa para pressionar com frequência, porque às vezes
o motor trava Mas vamos salvar tudo e passar
para a próxima lição.
7. 2.03 Importando os ativos do ambiente: Agora vamos prosseguir e importar
os ativos do ambiente. Agora eu incluí isso
para você no curso. Temos alguns materiais do curso
que você pode baixar. Agora, dentro desses
materiais, novamente, vou adicionar mais itens à
medida que desenvolvo este curso. Às vezes, se eu for ver
os efeitos sonoros, você poderá ver muito
mais efeitos sonoros quando eu estiver aqui. Então você pode ver que eu os tenho, mas na sua pasta você pode ter muito
mais efeitos sonoros. Novamente, vou
adicionar mais e mais materiais ao meu curso à medida
que desenvolvo este curso. Não se confunda se eu
não tiver tantos, tantos itens dentro daqui. Tudo bem, para o meio ambiente, vamos até o
meio ambiente aqui, e vamos pegar esses dois. Então, eu tenho os ambientes da
prisão de masmorras. Agora, se eu puder
clicar duas vezes nele e ampliar, isso é o que parece. A mesma coisa aqui
para os adereços. Eu tenho alguns adereços que posso usar. Agora vamos fechá-lo
e importá-los. Para importá-lo, vamos
criar uma nova pasta. Vou clicar com o botão direito
aqui, criar uma nova pasta. Vou chamá-lo de
ativos aqui dentro, vou clicar com o botão direito do mouse e
criar uma nova pasta novamente. E vamos chamar isso
de ambiente. Ok, vou
tornar meus ícones um pouco menores porque eles estão
ocupando muito espaço. Então, vou clicar em Controlar e diminuir o zoom com
a roda do mouse. Ok, agora vou entrar na pasta
do ambiente. E está fora daqui. Agora
podemos clicar e arrastar. Deixe-me abrir
a pasta novamente. Eu posso clicar e
arrastá-los até aqui. Lá vamos nós. Agora lembre-se, se você não consegue
clicar e arrastá-los, você tem esse ícone aqui e ele diz que você não
pode realmente
arrastá-los até aqui. Isso ocorre porque
talvez sua pasta seja uma pasta Ip ou uma pasta bruta. Lembre-se de clicar com o botão direito na
pasta e
extrair o conteúdo. Se for uma pasta Ip
, precisa ser uma pasta normal. Extraia o conteúdo.
Depois de extrair, você pode
importar coisas daqui. Agora, ao importar
coisas daqui, você pode clicar nela e realmente ver que
está embaçada Na verdade, não pega muito
e, veja, está muito embaçado. E nós não queremos isso. Isso ocorre porque o motor real
é um motor de três D. Ele desfoca coisas que
ficam bem em três D, mas não ficam
bem em dois D. Uma
coisa simples de fazer é selecionar os dois e você pode simplesmente clicar em Control e
clicar no próximo. Com o botão
direito do mouse,
acesse as ações do Sprite
e clique em Aplicar as configurações do Paper
two D Texture Isso garantirá que os itens aqui dentro não
fiquem desfocados Na verdade, escolha
muito, como você pode ver aqui, agora é escolher muito, tudo está bem Vamos
clicar em Arquivo e salvar tudo, as texturas Agora, na verdade, vou criar uma nova pasta chamada Texturas e vamos importá-la Dentro daqui, temos
a pasta Assets. Dentro dele, temos
o ambiente
e, dentro dele, temos
a pasta Texturas Isso ocorre porque, quando
criarmos um mapa de
blocos e um conjunto de blocos posteriormente, vou
colocá-los aqui. Realmente não precisamos mais desses. Mais tarde, vou colocá-los dentro
da pasta Texturas Mas, por enquanto, foi isso. Vamos passar para
a próxima lição.
8. 2.04 Criando um conjunto de azulejos: Agora que
importamos os ativos, agora
podemos criar um
mapa de blocos e um conjunto de blocos. Agora, para saber a
diferença, você pode escrever clique aqui e entrar no papel para ver
que existe
algo chamado mapa de blocos. Há algo
chamado conjunto de ladrilhos. Agora, a diferença entre
eles é que, no conjunto de peças, existem as peças com as quais precisamos
pintar nosso mapa. O mapa de blocos é o mapa em si. Você pode imaginar isso
se for pintor. Você tem o pellet, que é o conjunto de ladrilhos, que são nossos ladrilhos, e a tela, que
é o mapa de ladrilhos, onde pintamos nosso próprio mapa Vamos
criar um conjunto de peças. Não vou criá-lo a partir daqui,
mas podemos
criá-lo clicando com o botão direito do mouse no prisma da masmorra Você pode ver que esse
é o ambiente que importamos ou
basicamente os blocos. Vamos clicar com o botão direito do mouse
neste e acessar as ações do
sprite e
criar um conjunto de blocos A partir dessa textura, você
pode ver que ela foi criada. Vou apenas clicar
duas vezes aqui. E você também pode, a propósito, clicar nele e clicar em
dois no teclado. Às vezes, isso é mais fácil. Vou apenas dizer S
como um prefixo para o conjunto de blocos. Vou clicar duas vezes
nele e abri-lo aqui. Você pode segurar o
botão direito do mouse e pode escrever ao redor, aumentar e diminuir o zoom
e ver os blocos. Clique neles para selecioná-los.
Isso é o que estamos fazendo. Posteriormente, vamos selecionar
os ladrilhos e depois pintá-los
dentro do mapa de ladrilhos. Agora podemos ver aqui, se eu selecionar um ladrilho, ele não é realmente adequado Está selecionando demais. E isso porque
aqui no tamanho dos ladrilhos, temos que definir o
tamanho dos ladrilhos. Agora, esses blocos, especificamente,
eu os encontrei em dois, acho que se chamam
blocos
Dungeon Pixel ou algo parecido, mas basicamente sobre como você
pode encontrar três blocos, duas artes 3D aqui, eram 16 por 16, foi o
que o artista escreveu Além disso, se você escrever 16 por 16 pixels, então esses são
pixels, você pode ver agora que
os está selecionando corretamente. Agora, se eu clicar nos blocos, eles estão sendo
selecionados corretamente Agora eles estão preparados. Mais tarde, precisamos adicionar a
colisão aqui, dentro daqui. Talvez precisemos,
talvez não. Porque é um
jogo de clicker e ninguém está se movendo. Na verdade,
acho que não precisamos
adicionar nenhuma colisão ao jogo Foi isso por enquanto. Agora podemos ir em frente salvar tudo
e fechá-lo. Agora, se precisarmos dos
adereços mais tarde, vamos realmente fazer isso
agora. Talvez os usemos. Vamos clicar com o botão direito aqui.
Vá para Sprite Actions, crie também um conjunto de blocos a partir
deste Vá em frente e renomeie para S
no conjunto de blocos inicial. Vamos abri-lo aqui dentro. Novamente, você pode ver
que quando eu seleciono algo, ele está selecionando demais. Isso ocorre porque o tamanho do bloco
é de 16 pixels por 16 pixels. Agora, quando eu seleciono os itens, está mais correto e
também não está selecionando o item ao lado. Foi isso por enquanto. Vá em frente e salve
este também. Agora, se você decidir
ir para Cho no futuro, basta acessar aqui os jogos e ativos de sobrancelhas, e aqui você pode
encontrar ativos gratuitos e baixá-los. Mas você também pode fazer isso aqui. Este é basicamente o
que eu baixei, esta especificação aqui. Mas, basicamente se você quiser mais peças posteriormente para o seu jogo ou precisar de
mais adereços para o seu jogo, você sempre pode entrar
aqui, baixá-las e importá-las novamente Lembre-se de clicar com o botão direito do
mouse e
aplicar papel nas configurações de textura para que não fiquem embaçadas Em seguida, clique com o botão direito do mouse, vá em frente e crie
um conjunto de blocos novamente. E aí estão
seus novos azulejos. Ok, agora podemos
usá-los para criar nosso mapa de blocos. Então, vamos prosseguir na próxima lição e
criar um mapa de blocos.
9. 2.05 Criando um mapa de azulejos: Agora que
criamos o conjunto de blocos, vou
pegá-los aqui e movê-los para a pasta
Ambiente, fora da pasta Texturas Porque basicamente aqueles que não
precisamos mais, mas você não precisa
excluí-los porque esses conjuntos de blocos ainda
precisam dessas texturas Mas não vamos realmente
usá-los no jogo, vamos usar isso aqui. Agora vamos criar um mapa de blocos. Se você clicar com o botão direito no conjunto de
blocos que criamos aqui, o prisma da masmorra, você pode
criar um mapa de blocos Vá em frente e crie um mapa de blocos, e eu vou chamá-lo
novamente de Dungeon Prison Vamos parar, clicar, abrir
e ver o que é. Como eu disse antes, um mapa de
blocos é a tela. Você pinta os ladrilhos
no conjunto de ladrilhos, que você pode ver aqui
à esquerda sua tela. Você pode selecionar blocos aqui,
aumentar e diminuir o zoom, segurar o botão direito do mouse e escrever
ao redor, por exemplo. Você pode tomar a palavra
aqui clicando aqui. Se você mover o
mouse para a tela no mapa de blocos e clicar aqui, agora poderá ver que
pintou um ladrilho. Você pode simplesmente
clicar com o botão esquerdo e pintar. Agora você pode ver que
preencheu tudo. Agora, se você quiser apagar, você pode clicar
no Erasor aqui em cima, ou você pode clicar em
E no teclado Ao clicar em, selecionaremos a navalha novamente,
clicaremos em tudo Ou você pode continuar, e isso
preencherá tudo. Ou você pode clicar nele
aqui em cima, no balde de tinta. E você pode clicar
aqui e ele preencherá toda
a tela com o
ladrilho que você selecionou. Você também pode selecionar
outro ladrilho e clicar em B
para a ferramenta pintar aqui também. Agora eu posso ver que podemos
pintar aqui dentro. À direita, temos camadas. Se você já trabalhou com um
software como o Photoshop, sabe o que são camadas Por exemplo, digamos que eu
pintei esse chão aqui. Clicando nesse
azulejo, eu pintei aqui. Se eu clicar aqui, você pode basicamente
alternar os conjuntos de blocos. Posso trocar meu conjunto de peças da prisão de masmorra para
os adereços que criei Digamos que eu queira
pintar isso aqui. Você vê aqui. Se eu clicar aqui, não
é suficiente
porque a caixa é composta por
essa e essa Na verdade, posso simplesmente clicar e arrastar e selecionar
os dois. Agora, se eu os pegar
aqui e pintar, você pode ver que meu chão
está sendo deletado. Isso é porque você está
pintando aqui também. Vou clicar no controle Z. Então, em vez de aqui, vamos adicionar uma nova camada Agora eu posso pintar meu balde
nessa nova camada. Agora você pode ver que nada acontece. Isso ocorre porque essa camada
não está afetando a
camada abaixo dela Se eu clicar no olho para diminuir a
visibilidade, agora você pode ver que eu bati na minha caixa E se eu clicar
novamente, eu mostro. E eu posso fazer a mesma
coisa com outros itens. Basicamente, posso clicar na
segunda camada e adicioná-la, e tudo ficará bem. Agora você pode ver que se eu clicar
na primeira camada e
pintá-la, ela excluirá o
ladrilho abaixo dela Muito, muito bom
ter essas camadas. Se você precisar de algo em cima
da camada abaixo, eu preciso de algo em
cima do solo e tenho que fazer uma nova camada Digamos que tivéssemos um jogo em que
tínhamos céu e nuvens. Digamos que fosse uma plataforma
ou jogo e tivéssemos a nuvem. Deixe-me deletar
todos aqueles aqui. Digamos que tivéssemos nuvens aqui. E por trás desses ladrilhos também, poderíamos ter criado uma camada. E, na verdade, poderíamos
clicar nessa seta para colocar a camada atrás
desses ladrilhos aqui. E poderíamos pintar por trás dela
sem que ela fosse afetada. E você pode ver que se
eu os escondo aqui,
eles estão na verdade
atrás dos ladrilhos do chão. Ok, então é assim que as camadas
funcionam, assim como no Photoshop, se você já trabalhou
com o Photoshop antes, vamos excluir essa camada aqui. E
essa camada também, basta manter essa.
Agora, aqui embaixo, temos que definir a largura e a altura do
ladrilho. Agora, isso está correto porque lembre-se de que, dentro do conjunto de blocos, tínhamos
16 pixels por 16 pixels. E aqui também está 16
pixels por 16 pixels. Então, este está correto. Ok, vamos em frente
e exclua isso. Vou clicar
em E para usar a navalha. Basta ir e apagar tudo. Agora, o que podemos fazer é
que tudo esteja bem. A largura e a altura do mapa. Vamos apenas tornar o
mapa um pouco maior. Vou fazer com que
seja de 15 por 15 peças, tamanho 15 peças por 15 peças. Isso é apenas temporário. Você criará um mapa temporário que alteraremos posteriormente. Não se preocupe com isso por enquanto. Só queremos que o jogo tenha algo para que
possamos codificá-lo. Por enquanto, está
tudo bem. Vamos clicar em Arquivo e salvar tudo. E vamos
para a próxima lição.
10. 2.06 Como criar um mapa de azulejos temporário: Tudo bem, vamos desenhar
um mapa temporário. Antes de podermos codificar nosso jogo, precisamos ter algo aqui. Basicamente, vamos clicar no bloco configurado aqui e
selecionar
o prisma da masmorra Você pode selecionar
o que quiser. Você pode até mesmo pegar este e clicar na ferramenta
de preenchimento. E você pode clicar aqui
e pronto. Mas, basicamente,
criar aqui não
precisa ser algo bom, porque vamos mudar isso
de qualquer maneira. Vou clicar e
preenchê-lo aqui com esses blocos. Nesta primeira camada, você
pode até clicar nela. Clique em duas no teclado
e chame-as de camada base. Talvez seja o chão. Agora também precisamos talvez de algumas
paredes. Essas são as paredes. Vou selecionar
esse canto aqui novamente. Você pode clicar e arrastar,
selecionar os três. Você pode clicar neste plus
aqui, criar uma nova camada. E eu vou
chamá-la de camada frontal. Talvez clique na ferramenta de alfinetes
para pintar, pinte aqui. Vou selecionar paredes agora, basta clicar e arrastar o mouse para pintar
todas elas aqui. Novamente, selecione este
e pinte-o aqui. Ok. Agora, às vezes, quando você tem novos blocos, precisa
descobrir quais vão para onde, porque eles são muito específicos. Por exemplo, aqui embaixo
está, eu acho que esse. Você pode selecionar isso
aqui embaixo, pintar aqui. Então você tem que selecionar, vamos ver, acho que é
esse. Essa. Pinte aqui embaixo também. Você precisa selecionar
um deles aqui. Temos que ver, deixe-me ver aqui. Se conseguirmos encontrar um que
se encaixe, talvez esse. Sim, esse serve. Você pode pintá-lo aqui. Você pode selecionar isso clicando
aqui, pinte para cima. Agora basta
conectá-lo e conectá-lo com este aqui. Agora temos uma pequena
sala com a qual podemos trabalhar. Você pode até tentar praticar essas peças. É
bom praticar. Agora, antes de
fazer o mapa final, talvez adicione algo
assim aqui. Mas, como você pode ver,
na verdade estamos nas laterais aqui. Deixe-me ver se podemos resolver isso. Talvez você possa pintar
com este. Para o outro lado,
preciso selecionar as que estão neste lado, deixe-me ver deixe-me ver
melhor as que estão
nelas. E agora está parecendo correto. Ok. Também para os azulejos. Vamos ver se precisamos
pintá-los agora. Acho que não
precisamos realmente deles. Tudo bem, então o que
podemos adicionar também, você pode tentar adicionar
este se quiser. Basicamente, podemos clicar e secar e selecionar todos
eles assim, e agora podemos
adicioná-los novamente aqui. Você pode tentar adicioná-los
à camada base,
mas, como você pode ver, você pintará em cima daqui. Clique em Controle, você também pode
ver que está atrás da parede. Clique na camada frontal, você
pode tentar pintá-la aqui. Como você pode ver, novamente, está
pintando em cima das paredes, porque estamos pintando em cima
dessas camadas ou azulejos
clicando aqui e adicionando uma nova camada e talvez chamando-a de decoração
frontal ou qualquer outra coisa. Não é muito importante, não
importa o que você chame. Vamos, vamos
adicioná-lo aqui, por exemplo. Agora você pode ver
que adicionamos isso. Como posso ver, os blocos que acabei de selecionar. Os ladrilhos
aqui em cima não são adequados, então precisamos ir
para a camada base E eu vou
até os azulejos aqui. E eu preciso pintar com esses azulejos. Pintando
com esses azulejos. E o ladrilho do canto está aqui, o outro canto está aqui. Vamos tentar pintá-lo corretamente. Acho que esse está aqui. Vamos pintar esse aqui. Novamente, esse canto é assim. E eu vou
pintar assim. Está bem? Eu posso fazer isso muito rapidamente. No momento, isso não é
muito importante. Este é apenas um mapa de teste
que alteraremos mais tarde. Agora, o lado ruim do
Honoral Engine for Picks até agora é que, se você
pintar coisas erradas, se clicar no controle Z, ele removerá apenas
um ladrilho por vez Se você fizer isso demais,
pode ser uma dor. Tudo bem, esse azulejo aqui, talvez precisemos pintar
este em vez disso. E está ficando muito
melhor aqui também. Agora está parecendo bom.
Acredito que também temos algum destaque
para os pilares Podemos ver que o pilar
também tem algum destaque. Na verdade, posso selecionar este, voltar para a camada frontal e pintar
este como pilar Temos alguma luz
desta sala aqui, a luz vermelha, e
parece mais realista. Agora, se você também quiser
adicionar alguns adereços, novamente, isso realmente não
importa agora Mas você pode adicionar alguns adereços
aqui. Por exemplo, crie. Você pode ir até a frente da
decoração. Vamos colocar um aqui. Talvez coloque isso de um
lado, é assim. E talvez no
canto, vamos ver aqui. Podemos colocar esse baú talvez aqui no
canto assim. Novamente, isso
realmente não importa por enquanto. Vamos deixar
que seja assim. Se você quiser adicionar um pouco de grama, eu pude ver que
havia um pouco de grama. Talvez você possa selecionar
algumas delas aqui. Adicione a grama aqui embaixo. Então você pode acabar com isso, acredito que insinuando
com este Você também pode pintá-lo aqui. Vou clicar em Controles. Não é muito importante agora. Vamos salvar tudo. E esse é o
mapa que temos. Vamos fechá-lo e
passar para a próxima lição.
11. 2.07 Colocando o mapa de azulejos no nível: Agora que
criamos o mapa de blocos, vamos clicar e arrastá-lo
para o nível. Muito fácil. É assim que você coloca o mapa de blocos no nível. Novamente, como eu
disse antes,
você pode segurar o
botão direito do mouse e clicar em W D S e A para se movimentar. Basicamente, isso é realmente
o que parece. São dois D dentro
de um motor manual. Como é um
software tridimensional ou motor tridimensional, é
assim que se parece. Estamos trabalhando com
três D, mas se você for para a vista ortográfica
e visualizá-la da vista direita em vez do modo wireframe,
basta selecionar
o modo basta selecionar
o Você pode ampliar aqui e ver
que é assim que parece. E agora estamos vendo isso em dois D. Vou voltar
ao modo de
perspectiva por enquanto. O que eu costumo fazer
para o local, eu disse aos 20, vamos escrever 000. Está aqui no
zero do mundo. Vou remover todas essas linhas aqui porque
eu realmente não preciso delas. Se você clicar no mapa de blocos, desça até aqui,
poderá remover este, Mostrar por grade de ladrilhos
quando selecionado. Agora ele foi removido. Agora é
assim que você o coloca. Muito fácil. Podemos
clicar em Arquivo e salvar tudo.
Mas, como você pode ver, está muito ruim porque as cores não
estão corretas, e isso ocorre porque
a iluminação no Unreal Engine está
afetando esse mapa de blocos Então, vamos corrigir
isso na próxima lição.
12. 2.08 Volume de processo de pós-venda: Agora, para ajustar a iluminação, precisamos usar algo
chamado volume de pós-processamento. Se você clicar aqui
e acessar os volumes, poderá encontrar algo chamado volume
de pós-processamento aqui embaixo. Você também pode encontrá-lo
dentro dos efeitos visuais. Esse
volume de pós-processamento é o mesmo. Você pode clicar nele e
criar um. O que é um volume de pós-processamento, se você já trabalhou
com o Photoshop antes, ele basicamente muda as cores, assim como no Photoshop Você altera a
saturação da imagem, altera a iluminação
e o brilho, e assim por diante É a mesma coisa com o volume de pós-processamento.
Você clica nele. Dentro de um volume pós-processamento, você pode alterar a quantidade de exposição
do Bloom se
quiser um reflexo da lente O efeito de imagem, que é a vinheta ao redor da imagem
em que você cria a imagem, também conhecida como nos cantos, também conhecida como nos cantos,
e funciona como um efeito
cinematográfico E você pode mudar a
temperatura da luz. Você pode mudar muitas coisas ao mudar
a aparência do jogo. O volume pós-processamento é usado para mudar a
aparência do jogo. Ok, dentro daqui, se você apenas aumentar
e diminuir o valor. Por exemplo, se eu for até Bloom e clicar na
intensidade e aumentar,
diminuir, você verá que
nada acontece. Isso ocorre porque você precisa entrar em um volume de
pós-processamento. E, como você pode ver,
se eu estiver dentro dela, agora
posso aumentar e diminuir e isso muda os valores. Agora, em vez de estar aqui dentro
, você pode descer e encontrar esse chamado Infinite Extension Unbound Se você clicar nele, isso significa que isso afetará todo
o nível. E não importa se você está dentro ou
fora dela,
isso afetará todo
o nível. Agora você pode ver que se eu
aumentar e diminuir, a intensidade
vai mudar. Agora, o bom de
estar dentro disso é que, digamos que você tenha
um jogo de três D ou até mesmo um jogo de dois D, como se você quisesse criar
um estilo especial. Se você entrar em uma caverna
em um jogo de três D, por exemplo, um jogo de RPG, isso muda a aparência do jogo porque agora você está
dentro da caverna A caverna tem uma aparência
específica. Se você sair da
caverna, isso muda a aparência. Mas aqui não precisamos realmente alterar os efeitos
dependendo de onde estamos. Queremos que
tudo seja o mesmo. Normalmente, na maioria dos jogos
, basta clicar em infinite extension unbound e
afetamos o jogo inteiro Ok, agora para o Bloom, eu preciso configurá-lo para zero
porque realmente não temos Bloom ou em dois D novamente com dois D dentro de um motor de três
D é muito legal porque você pode usar a
iluminação D e adicioná-la a dois D, o que dá efeitos realmente
especiais que você não obtém
de dois motores. Você pode obter três luzes D, você pode obter três
efeitos D dentro daqui, o que você não pode obter
em dois motores D. É muito legal
experimentar isso também. Provavelmente criarei um curso mais tarde, se ainda não
tiver criado um, sobre como adicionar
três efeitos D especiais a dois D. Mas, por enquanto, vamos definir o Bloom para zero. Vamos à exposição e,
basicamente, a exposição mínima
e máxima,
geralmente eu a defino para 1,1 A exposição é simplesmente
se eu a desabilitar. Você pode ver que a iluminação
aumenta com o tempo. Isso é bom para ambientes cinematográficos em
três D, mas na verdade não precisamos mudar
a iluminação dependendo se estamos perto
ou longe. Então, vamos
defini-lo como uma constante, mesmo estando perto ou longe, isso realmente não
importa. Mas, por enquanto,
vou configurá-lo para dois, porque vou
apenas
fornecer minhas configurações de
volume de pós-processamento que criei para
dois D aqui. A iluminação é muito, muito boa porque, como
você pode ver aqui, temos que ajustar
a iluminação e queremos que
pareça apagada Se você for para o apagado, é
assim que fica sem iluminação Na verdade, esse é o conjunto de
pixels ou blocos que eu tenho. Isso é o que
parece de verdade. Você também pode vê-lo
dentro da vista direita, na visualização autográfica Se você aumentar o zoom,
é assim que
ficará quando tivermos
a iluminação correta. Se voltarmos para o modo de
perspectiva e eu voltar para o modo iluminado, o problema é que quando você
clica em reproduzir aqui, você só o vê no modo iluminado. Na verdade, precisamos
alterar a iluminação
no modo iluminado para ser a
mesma do modo apagado Isso é o que estamos tentando fazer com o volume de pós-processamento. Estamos tentando
fazer com que o modo iluminado tenha a mesma aparência do modo
apagado. Assim. Ok, vamos para
o modo iluminado aqui. Eu tentei por três a 4 horas. Eu estava apenas jogando com várias configurações aqui para fazer com que
parecesse o modo apagado Descobri que a exposição mínima
e máxima deveriam ser definidas para duas. O efeito de imagem, que é
basicamente a vinheta, você pode ver, adiciona um efeito cinematográfico nas
bordas Acabamos de colocar isso de um a zero, realmente não
precisamos disso. Na verdade, temos aqui os destaques e
a diversidade
dentro da gradação de cores.
Para obter o mínimo de destaques, precisamos definir Vamos ver aqui a quantidade da curva de
tons, precisamos defini-la como zero. Você pode ver muita diferença quando
definimos esse como zero. Quase parece com
o original. Agora, se você for para o modo Lit. Quando você vai para o modo Iluminado, você pode ver que ele parece
muito melhor do que antes. No entanto, ainda precisamos ajustar algumas coisas porque você pode
ver que não é a mesma coisa. Você também pode
clicar nos atalhos, os quatro
antigos e os três antigos Se eu clicar nos três antigos, vou para o modo Iluminado. Quatro antigos, eu vou para
o modo Lit, aí, posso clicar no antigo 3.4 muito rapidamente, e você pode ver a
diferença entre eles. Ainda há alguma diferença se eu voltar para o modo Lit. E vamos alterar algumas
configurações aqui também. Agora, aqui em cima, na verdade
aqui embaixo, vamos continuar. Antes de mudar as
cores aqui embaixo, vamos mudar a intensidade de
oclusão do ambiente Além disso, vamos alterar a quantidade de
desfoque de movimento para zero Realmente preciso disso. Vamos clicar em Arquivo e salvar tudo. Agora, se eu for até aqui, temos algo
chamado temperatura, sombras
globais e tons médios
sob a gradação de cores Agora estamos prontos para
mudar as cores, talvez reduzir a saturação. Porque, como você pode ver aqui, se eu for para o modo apagado, ele parecerá um pouco mais
insaturado do que o modo iluminado Agora, eu lhe dei as configurações
corretas para este. Este tem que ser 1.0. Tudo isso foi definido como zero porque
realmente não precisamos deles. E a exposição está definida para duas. Mas agora você precisa
ir sozinho, porque precisa configurá-los de acordo com a aparência
dos ladrilhos. Lembre-se do global aqui, se eu apenas abrisse o global,
na verdade não tudo isso. Se eu abrir o global e
você abrir a saturação, o contraste, a gama e também abrir
o ganho aqui Vamos trabalhar com eles e
corrigir sua aparência aqui. Vamos começar com a saturação. Isso ocorre porque eu olho para esse
vermelho aqui no modo Iluminado e clico em Apagado Eu posso ver que é mais
fácil no gelo, o que significa que está menos saturado. Se eu for para o modo Lit e for para a saturação
e pegar aqui, agora você pode aumentar e
diminuir a saturação E você pode ver que
pode mudar a aparência. No entanto, realmente não
precisamos diminuí-lo tanto. Eu vou voltar
para um, como antes. E o que você precisa fazer
é segurar novamente a tecla Alt e clicar em 3.4. Você pode alternar
entre o aceso
e o aceso, e você pode ver
como fica se eu clicar em Aqui No modo Iluminado, eu o diminuo um pouco assim e
clico nos três antigos. Agora você pode
ver como é. Só estou
vendo esse vermelho aqui. Talvez, em vez de
ficar assim, eu vá fazer com que seja 95. Ok. Clique no antigo interruptor 3.4
entre eles muito rapidamente Você pode ver isso,
o que parece. Acho que a saturação
está boa agora, mas posso ver que está mais,
está mais branca aqui Acho que é a
gama e o ganho. Vamos tentar ir até a gama aqui e
aumentá-la um pouco, porque
você pode ver a gama Se você aumentar demais, eu volto ao modo iluminado
e aumento a gama Você pode ver que esse é o efeito. O que você pode fazer é um
truque que eu uso às vezes. Quando clico no antigo 3.4,
continuo clicando nele enquanto eu realmente ajusto aqui. Você pode ver se você o ajusta de
forma errada, demais. Você pode ver isso
longe um do outro. Se você aumentar demais, também estará
longe um do outro. O que eu geralmente faço é
segurar e pressionar 3.4 muito rapidamente Eu apenas tento
mantê-los o mais próximo
possível um do outro. Agora você pode ver
se eu clicar em todos os 3.4 para alternar entre Lit e Let, eles são
quase iguais 1,05 é o valor correto aqui. Agora, para o contraste,
posso tentar clicar aqui e tentar aumentar um pouco
o contraste. Vou aumentá-lo novamente. Todos os três gostam disso. 1.02 Eu acho que é o correto. Agora, para ganhar,
acho que podemos
dar um pouco para ganhar.
Vamos tentar isso também. Algo assim
aqui para as sombras. Agora, se você quiser
dar às sombras um pouco mais de contraste
ou remover o contraste, você pode realmente fazer isso clicando nas sombras Se eu for contrastar, porque se eu olhar minhas sombras, estou apenas olhando
minhas sombras Eu acho que é também. Contraste no modo iluminado, você pode ver que é
mais claro no modo iluminado. Mas se você for para
o modo iluminado, podemos diminuir um pouco
o contraste das sombras Se eu clicar novamente no antigo 3.4 continuo clicando neles
para ver como é Isso é demais,
talvez algo assim. Apenas 0,97 Novamente, como você
pode ver pelos meus valores, não
os
estou mudando muito. Talvez 0,020 0,05 e assim por diante. Então, não mude muito, só um pouco, para que eu
possa ter essa aparência. Agora, se eu passar do modo apagado para o
modo iluminado, você pode ver que está muito próximo Agora, você pode passar mais
tempo do que o que eu tenho aqui. Talvez você possa passar 15
ou 30 minutos tentando se ajustar
aqui e obter valores melhores. Mas, por enquanto, tudo
está indo bem. No entanto, ainda precisamos ajustar algumas configurações dentro das configurações
do projeto. E vamos fazer isso
na próxima lição.
13. 2.09 Ajuste as configurações do projeto: A última coisa que precisamos
fazer com o meio ambiente
agora é
desativar a atribuição de tarefas. Agora, como você pode ver aqui, talvez não seja
muito visível, mas há um anti-eliasing que desfoca um pouco as coisas e
não parece Isso é feito novamente
porque em três D T eliminação é muito boa e faz com que seu
jogo pareça melhor,
mas no Pixelot nós realmente
não precisamos dela mas no Pixelot nós realmente
não precisamos Vamos para Editar e
ir para Configurações do projeto. Dentro daqui,
precisamos descer e encontrar a guia Renderização Clicando em Renderização, vamos
tentar alterar algumas configurações aqui para o
anti-eliacing móvel realmente
não importa Não estamos criando
um jogo para celular, mas é bom saber
que ele está lá. E você sempre pode clicar
aqui e definir como nenhum, porque realmente não
precisamos de antielicantes Se eu for até aqui e der uma olhada nas configurações, está
tudo bem aqui. Realmente não preciso dele
agora para a iluminação. Vamos apenas configurá-lo
para nenhum em vez de lúmen. Vamos configurá-lo como nenhum. Nós realmente não precisamos de uma ou
duas
reflexões . Vamos dar
uma olhada aqui embaixo. Tudo está indo bem. Você pode desativar o Nanite
se quiser, que são os três modelos D, o novo sistema
sem religião cinco, vamos reiniciar mais tarde Por enquanto, vamos
dar uma olhada aqui. Tudo está ótimo. Agora, o mais importante está aqui nas
configurações padrão, agora
já desativamos nossa oclusão de ambiente Nós realmente não precisamos nos
preocupar com eles. Fizemos isso dentro
do volume pós-processamento, no desfoque de movimento,
mas você também pode desativá-lo
aqui se desejar florescer e na
oclusão do ambiente, se Mas isso realmente não
importa aqui
no anti-eliasing, esse
é o mais importante Este que você deseja definir como não, você pode ver a diferença. Se eu der uma olhada aqui, agora posso configurá-lo como não, você pode ver a diferença. Você pode ver que
apresenta linhas irregulares. Se eu configurá-lo para
este, por exemplo, ou este super
for o padrão, você pode ver
que é assim que parece. Você pode configurá-lo como nenhum ou
pode configurá-lo para um desses, mas nenhum é o melhor. Para pixel, parece
muito melhor com pixel. Ok, incrível. Agora parece bom. E esse também. Você pode configurá-lo para nada aqui. Sem AA, tudo está bem. Vamos um. E eu vou
clicar em Reiniciar agora. Depois de reiniciado, você pode ver que estamos aqui
dentro Agora, ele abre esse nível de mundo
aberto por padrão e você
pode alterar isso
acessando Editar e Configurações
do projeto. E você acessa os
mapas e modos aqui. E você pode alterar o mapa de
inicialização do editor para ser seu mapa, Dungeon the Editor,
jogo, mapa padrão Você também pode mudar para
mapear Dungeon. Agora você pode fechá-lo
e salvar tudo. Da próxima vez que você
abrir o motor, ele
abrirá automaticamente o mapa da masmorra Agora vamos clicar
nele. Clique duas vezes no mapa para inseri-lo novamente. Agora tudo
está bem novamente. Você pode clicar em, você pode
clicar em Vamos aqui neste. E você pode
clicar na visualização correta. Você pode voltar
à perspectiva. Clique no modo Iluminado. Modo iluminado. Há uma pequena diferença
aqui nas bordas, mas acho que está tudo bem por enquanto. Você não vê quase nenhuma
diferença. Está parecendo bom. Agora podemos clicar em
Jogar e podemos jogar este jogo aqui e ter
a iluminação correta. Ok, está tudo bem. Como você pode ver,
novamente no Picsalot, você tem camadas em motor
real porque
é um motor de três D. Se eu reduzir a
velocidade da câmera, fica assim. Parece estranho porque a camada frontal está na
frente desta Basicamente. É
quando você cria as camadas dentro do mapa de
mosaico, essas camadas. Isso é o que você vê aqui. Esta é a camada
frontal da decoração. Essa é a camada de decoração, ou a camada frontal, e essa é a camada base. Você pode
vê-los assim. Parece estranho. Mas quando você clica em reproduzir e não assim, mas quando você clica
em reproduzir, criamos uma câmera real.
Vai ficar assim. Parecem todos os dois D porque estamos olhando
de frente, tudo está bem. Vamos clicar em Arquivo
e salvar tudo. Vamos começar
na próxima lição.
14. Modo de jogo 3.01 e controlador de jogador: Tudo bem, agora que
terminamos de projetar
o ambiente, vamos
programar o jogo. Agora, a primeira coisa
aqui é que vejo uma mensagem dizendo que nanite está habilitado,
mas não pode ser renderizado E isso porque desativamos nant aqui nas configurações do
projeto Se você pesquisar por nanite, lembre-se de que a desativamos aqui, diz
que ainda está ativada Aqui embaixo no ícone, você vê aqui
embaixo que você escreve nitro e eu vou entrar e ele vai desativar
a nanite E essa mensagem também desapareceu. Vamos até aqui na pasta
de conteúdo. Vamos clicar com o botão direito do mouse e
criar uma nova pasta. Vamos chamar isso de plantas
dentro dessa pasta. Agora, clique com o botão direito do e agora estamos prontos
para programar o jogo. A programação é um
projeto em motores reais. Vá em frente e clique
na classe blueprint. Vamos fazer um. Agora você tem essas opções
que você pode fazer. Agora, pode ser um
pouco confuso no início se você nunca
usou plantas antes, mas só para examiná-las
rapidamente, a classe de ator que
podemos criar aqui é um objeto que pode ser colocado
ou gerado no mundo É basicamente apenas
um item estático. Por exemplo, uma mesa, um frasco, qualquer coisa que não esteja
se movendo no jogo, por exemplo, essa caixa aqui não
é um objeto em movimento Esse é um ator. Um peão e um personagem são duas classes nas
quais você pode criá-los. Se você precisar de movimento, verá que uma pata é um ator que pode ser possuído e receber informações de um controlador Digamos, por exemplo, que
em seu jogo, esse seja o jogador. E o jogador pode se
mover com esta caixa aqui, você pode rolar
com esta caixa. Então você realmente precisa
criar um peão e um ator. Porque se você criar um ator, não
poderá controlá-lo
com o teclado. Se você precisar
controlá-lo com o teclado, se for um jogador,
precisará criar um peão No entanto, se você
tem um personagem, algo com dois braços e duas pernas e
precisa andar por aí, você precisa criar
um personagem e não um peão, por exemplo, se o seu jogo for, se você for
como uma caixa rolando Ou se você é como uma
bola rolando, então você não tem
dois braços, duas pernas. Como personagem, você
pode criar um peão. No entanto, se você tem esse personagem humanóide
típico, é um personagem que
você precisa criar Agora vamos criar um controle de jogador e um modo de
jogo nesta lição. E um controlador de jogador
é um Acta responsável por controlar
o uso pelo jogador Agora, pode ser um pouco confuso Este não é o seu controle, controle
Xbox ou controle
Playstation Você pode pensar nisso
como o cérebro do personagem quando você
entra no jogo Cada personagem que
você cria como controlador de jogador não
é apenas o personagem
quando você entra no jogo Se o jogador entrar no jogo, o controle
do jogador será
criado automaticamente para você
antes que o personagem seja criado. É muito, muito
importante saber. Normalmente, o que fazemos nos controladores de
jogadores é codificar as
interfaces do usuário, a interface do Também fazemos a desova. Por exemplo, se eu gerar
uma arma no jogo, se eu gerar uma moeda,
eu gero qualquer coisa no Eu costumo fazer isso
no Player Controller. Agora, algumas pessoas também fazem movimentos no
controle do jogador. No entanto, sugiro que o movimento
seja feito no personagem, porque no modo multijogador agora não
estamos codificando o modo multijogador Mas, no futuro, se você quiser programar o modo multijogador, é sempre bom
se acostumar com uma coisa. No modo multijogador, o
movimento
deve estar na classe blueprint Se você fizer o código
de movimento dentro do controle preto, no modo multijogador, ele
não funcionará. Eu sempre faço movimentos
em personagens porque isso também funciona como um
multiplicador no futuro Se você quiser fazer alguma coisa
com o modo multijogador, este é o controle preto e o modo de jogo define
o jogo que está sendo jogado, suas regras, pontuação e
outras facetas do Por exemplo,
digamos que no Counterstrike você tenha um cronômetro redondo E quantos pontos você ganha quando mata um
jogador e coisas assim. As regras do jogo
geralmente são definidas no modo de jogo. Agora vamos clicar no modo de jogo e criar um. Normalmente, eu lhes dou BP como
prefixo para plantas. No entanto, para o modo de jogo,
geralmente escrevo o modo de jogo GM. E eu chamo isso de
nome do jogo, que é Dungeon Clicker Vamos chamá-lo de Dungeon Liquor. Vamos escrever, clique novamente, crie uma nova classe de blueprint
e crie um Player Controller, vamos chamá-lo de PC para
Player Controller Vamos chamá-lo novamente de
nome do jogo, Liquor. Agora você pode ter
vários modos de jogo. Não é porque você
pode ter um modo de jogo,
por exemplo, novamente
no Counter Strike. Em outros jogos como Halo, você tem um modo de jogo em
que você tem três para todos, todos podem se matar Você tem um modo de jogo em
que captura a bandeira, cada equipe captura a
bandeira até sua base Diferentes modos de jogo. Você pode
ter vários modos de jogo. No entanto, estamos
fazendo um jogo simples. Mas só precisamos de um. Eu normalmente chamo isso de
nome do jogo aqui. Vamos em frente e
salve tudo. Agora que terminamos isso, na verdade não precisamos
fazer nada dentro deles. No entanto, precisamos atribuir o modo de jogo a ser usado
dentro do Unreal Engine, porque agora ele está usando o modo de jogo padrão que ele cria quando
eu abro o motor Vamos clicar em
Editar e abrir as configurações do
projeto. Dentro daqui,
vamos para Mapas e Modos. Em Mapas e modos, você pode ver o
modo de jogo padrão sendo usado. É o modo de jogo padrão
no Unreal Engine. Eu vou dizer que não, eu quero usar o meu. Eu quero usar esse
único clicker GM. Vamos minimizar isso por enquanto. Em vez de aqui, deixe-me
abrir meu modo de jogo. Ele abriu aqui no meu segundo monitor no modo de
jogo nos padrões da classe, precisamos alterar o
Player Controller
que também criamos porque
agora ele está usando o controlador Player padrão no Unreal No entanto, quero usar o
meu personalizado que criei, que é o PC Dung clicker Vamos continuar e compilar. A propósito,
significa apenas que você está verificando se seu código
tem alguma caixa ou não. Se você clicar nele, ele
dirá que está pronto, está
tudo bem. Clique em Arquivo e Salvar
tudo. Vamos encerrar isso. Agora. Deixe-me
abrir as configurações do meu projeto novamente e garantir que clicar no modo de
jogo selecionado aqui embaixo, controle do meu jogador
também esteja atribuído nas configurações
do meu projeto. E geralmente é quando você faz
isso no controle do jogador. Ok, vamos fechá-lo aqui. A última coisa que precisamos fazer está aqui nas Configurações Mundiais. A propósito, se você não
tiver uma guia Configurações mundiais, vá em frente e clique em, vamos ver aqui, a
janela aqui em cima. E abra
as Configurações do Mundo A partir daqui, vamos clicar nas Configurações do Mundo e também
nas Configurações do Mundo
no modo de jogo Override,
clique aqui e
atribua seu clicker de masmorra GM, que é E você também pode
garantir que, ao clicar
aqui , o
controle do player também esteja atribuído. Tudo bem, então
vamos em frente e economizemos. E agora nosso modo de jogo personalizado está atribuído ao
mapa ou ao jogo. Na verdade, não podemos fazer muita coisa
porque
realmente não fizemos nenhuma codificação. Portanto, não podemos ver se
realmente funciona ou não, mas faremos
isso em breve. Agora terminamos de
adicionar o modo de jogo e o controle do jogador e estamos prontos para adicionar a câmera do jogador.
15. 3.02 Adicionando a câmera do player: Para adicionar a câmera do player. Vamos clicar com o botão direito do mouse novamente
dentro das plantas e criar uma
planta em vidro novamente Agora, para a câmera do jogador, você pode criá-la como um peão Como na verdade não temos
um personagem com dois braços duas pernas para andar, você pode tecnicamente
criá-lo como um peão No entanto, gosto de criar as câmeras dos jogadores também
para meus outros jogos como personagem de jogador, porque elas vêm com um componente de
movimento do personagem. Dessa forma, você pode controlar
a gravidade da câmera, a velocidade de movimento
da câmera e assim por diante. Você vai ver o que quero dizer, mas este me dá mais opções. Normalmente eu só
crio um personagem. Vamos chamar isso de jogador P. Eu chamo isso de câmera, mas vou
chamá-lo apenas de player. Vamos abrir isso. E aqui
geralmente estamos em plantas. Ao abri-lo, você tem o ponto de vista aqui onde
você pode ver o personagem Se você importar, poderá ver aqui à direita
no painel de detalhes. Quase parece o painel de
detalhes aqui. É a mesma coisa quando você clica nas coisas e depois
pode ver opções diferentes
aqui para a malha. Você importa um personagem, você pode ver o personagem
aqui na janela de exibição, assim como você tem um
ponto de vista Ok, dentro desse player BP, precisamos criar uma câmera A propósito, o componente de
movimento do personagem está aqui. Se você clicar nele, verá que pode controlar coisas como a
aceleração do player, que neste caso
é a câmera. Você pode controlar o atrito do
solo, a
velocidade máxima de movimento da câmera e muitas coisas, o controle aéreo e assim por diante Gosto de criar um personagem em vez de
uma pata ou a câmera porque tenho esse componente de movimento do
personagem e posso controlar minha
câmera muito mais Precisamos criar uma câmera. Vamos clicar em Adicionar aqui e nos componentes primeiro
antes da câmera. Vamos criar algo
chamado mola. Se você criar uma mola aqui, esse é o suporte
para a câmera. Agora, clicando no braço da mola, vou clicar em D procurar a câmera
e criar uma câmera. Temos o braço de mola,
que é o suporte, e depois temos a
câmera aqui. Vamos clicar em Compilar
e clicar em Salvar tudo.
Deixe-me minimizar isso. Deixe-me arrastar
esse jogador para mundo assim.
Aqui está a câmera. Se você pode ver ao fundo, mas está escuro, então não
podemos ver muita coisa. Vou escrever a
localização para ele como 000. Também gire minha câmera, você pode ver que
está desse jeito Vou
voltar para o meu jogador. Vou clicar na minha mola,
não na minha câmera, mas na minha mola. Vou girá-lo quando
clicar na ferramenta de rotação. Lembre-se de que as ferramentas aqui em cima
são para a ferramenta de movimento, para a ferramenta de rotação e R no teclado
para a ferramenta de escala. Ao clicar na ferramenta de rotação, vou girá-la dessa maneira Agora vou compilar
novamente se você minimizá-lo. Agora sua câmera está com a
aparência correta. Você também pode
vê-lo no visualizador. Quando você clica na câmera, agora ela está escondida aqui
porque está tudo escuro. Eu clico em Lit, você
pode ver que está aqui. Se eu clicar nele, você
também verá o visualizador. Para a câmera aqui embaixo, você pode simplesmente mover
a câmera que desejar Você pode vê-la
no visualizador aqui. Agora, antes de alinharmos, você pode ver na câmera, se eu clicar com o botão direito na câmera
e clicar em Pilot, o
que significa entrar na
câmera e ver o que ela vê Você pode ver que os ladrilhos
estão cortados aqui. Não parece dois D, na verdade
parece três D. Eu clico neste botão
aqui em cima para sair da minha câmera. Eu abri o player novamente. Isso ocorre porque, ao
clicar na câmera, você realmente precisa alterar o modo de projeção de
perspectiva para autoral Perspectiva é o modo de três D, ortográfico é a visão de dois D. Precisamos da visão em dois D aqui. Vamos compilar e
dar uma olhada. Mais uma vez, você pode ver
agora que parece correto. Se eu clicar com o botão direito na minha câmera
e clicar em empilhá-la, acho que você pode fazer
isso aqui também Você também pode clicar com o botão direito aqui
no Outliner
e clicar em pilhar Agora você pode ver que
parece mais correto. Seus dois D também parecem bons. Vamos sair daqui.
Vamos abrir o player. A última coisa que
quero dizer aqui é que não temos mais
muito o que fazer. Mas aqui na câmera, você pode alterar a largura
ortográfica E você pode ver o que isso
faz se você clicar na sua câmera aqui
no player BP aumentar
e diminuir
a largura ortográfica Se eu aumentar, aumentar, você
pode ver que você aumenta e diminui o zoom. Pixel Ot, parece mais
ou mais pixelizado. Quanto mais baixa a madeira
autográfica, talvez seja
assim que você
quer que seu jogo seja Você pode torná-la mais
alta ao diminuir o zoom desta forma. Agora, para o meu jogo, tentei
apenas jogar com ele quando estava testando e acho que vou ficar com
algo como 640 Se eu clicar com o botão direito na minha
câmera e pilotá-la, é
assim que ela ficará. Posso levar meu player
aqui e ajustar a localização. Lembre-se de que podemos
ajustar a localização
clicando nos números aqui na localização
do jogador. E podemos clicar e arrastar com o mouse para ver
como fica. Eu posso fazer algo assim. Na verdade, para o
Y, é apenas zero. Para este, é assim. Incrível. Agora está censurado Na verdade, não
é muito importante no momento. Vamos corrigir o
posicionamento mais tarde. Mas para o jogador, novamente, apenas para ter certeza de que
tudo está funcionando corretamente na mola, vou desativar
o teste de colisão O teste de precisão é simplesmente quando um jogador está
atrás da parede Ele vai empurrar a câmera, para que a câmera não
entre na parede. Nós realmente não precisamos disso
porque isso pode estragar o jogo. Agora, vou
desativá-lo. A segunda coisa é a cápsula. Quero remover
todas as colisões, porque não quero que
essa cápsula colida com meus inimigos ou personagens dentro
deste mundo Nós realmente não precisamos desse. Vou
até aqui e me
certificar de que na seção de
colisão da cápsula gere eventos de sobreposição
desativados ou as predefinições de colisão Em vez de peão, vou dizer que nenhuma colisão foi corrigida Agora, na própria malha aqui. Só estou me
certificando de que,
na colisão, seja para que o personagem também possa enfrentar nenhuma nenhuma colisão.
Vá em frente e compile Agora, para o braço de mola, removemos o teste de
colisão A última coisa aqui
no componente de
movimento do personagem do
jogador é
zerar a gravidade, porque
não precisamos que essa câmera
caia ou se mova. A
aceleração máxima é zero. Vamos ver se precisamos
fazer mais aqui. Acho que não
precisamos fazer mais. Tudo está indo bem. A velocidade máxima realmente
não importa. Você não vai andar por aí. Mas você pode simplesmente defini-lo como
zero para não se movimentar tão bem, se desejar.
Vamos apenas compilar, salvar tudo. E
foi isso para o jogador. Agora está configurado. Você pode controlar a distância de sua câmera de sua preferência Então, se você quiser que a câmera fique muito mais próxima, você pode fazer isso. Por exemplo, você pode
clicar na câmera e definir a
visualização autográfica para 512 E você pode ver que está
muito mais perto aqui. Não é muito importante agora. Sempre podemos testar o jogo sempre que tivermos um
personagem se movendo.
16. 3.03 Extraindo os sprites do inimigo: Vamos agora importar esses preços para os inimigos. Novamente, vamos voltar para
a pasta de materiais de custo
que eu dei a você. Dentro daqui,
vá para os personagens. Aqui estão todos os inimigos
que temos no jogo. Agora, no futuro,
podemos adicionar mais inimigos, porque nos jogos de clicker você tem toneladas e toneladas de Mas esses são muito
bons para começar. Vamos continuar e
clicar no primeiro. Segure a tecla Shift e clique na
última para selecionar todas elas. Vamos até os Ativos. E aqui eu vou escrever Clique e crie uma nova
pasta chamada Personagens. aqui,
vou clicar com o botão direito do mouse em criar uma nova pasta mais uma vez e
vamos chamá-la de Texturas Vamos entrar nessa pasta. E agora vamos clicar e
arrastar isso para a pasta
Texturas E aqui
importamos todos eles. Tudo bem, clicando no
primeiro novamente, segure Shift,
clique no
último, clique com o botão direito, vá para as ações do Sprite E lembre-se de aplicar o
papel nas configurações,
caso contrário, será uma textura embaçada para aplicar nas Quando você faz isso, a arte é muito fixa,
fica ótima. Ok, vamos fechar
tudo aqui embaixo. Vamos clicar em Arquivo
e salvar tudo. Agora que
importamos tudo, o que você precisa fazer, você pode ver aqui que eles estão todos
em uma textura. Se eu abrisse o primeiro, o Night Death, você pode ver
que eles estão em uma textura. Precisamos tê-los
como sprites separados. Vamos
encerrar isso. Posso clicar com o botão direito nesta
Morte Noturna. Aqui eu posso ir. Ações de Sprite, você tem
algo chamado criar sprite ou pode
extrair os Criar um sprite é
simplesmente, por exemplo, digamos que você tivesse
um personagem aqui e não os tivesse
todos juntos dessa forma Você pode clicar com o botão direito do mouse
nas ações do sprite e criar um sprite. Quando você faz isso, ele
cria esse sprite aqui. Quando você cria um sprite, você pode realmente usá-lo no jogo Você pode clicar e
arrastá-lo para o mundo. Se eu apenas movê-lo
aqui para a frente, eu posso vê-lo assim. Agora veja, eu posso usá-lo no meu jogo, por exemplo, se você tivesse uma
caixa ou coisas assim. Se você tiver um objeto singular, você pode clicar com o botão direito do mouse e
criá-lo como um sprite E então é
basicamente como criar
um objeto de três D, que você pode usar no mundo
porque essa textura aqui, você não pode usá-la aqui. Você pode ver que ele substitui
isso e cria algum material para nós e coisas assim,
tudo está confuso Vou clicar no
controle Z para revertê-lo. Eu só vou atrasar
este que ele criou. Você não pode usar texturas
no jogo dessa forma. Você precisa clicar, transformá-los em um sprite, por exemplo, se você tiver uma caixa ou algo estático
que queira no jogo E você pode arrastá-lo até aqui e usá-lo como um sprite No entanto, deixe-me excluir este, e deixe-me também excluir este. Agora eles estão todos juntos. Em vez de criar um sprite,
precisamos extraí-lo. Clique com o botão direito, vá
para as ações dos sprites e extraia os sprites E você pode
vê-los aqui assim. O que precisamos fazer é
aqui nas configurações, precisamos transformá-lo em uma grade. Agora temos que
descobrir no solo, largura e altura,
qual é o tamanho. Normalmente, o artista que faz isso escreve
para você o que é. Mas vamos tentar fazer com que 32 se sobressaiam, como é para
a altura 32 aqui Agora você pode ver que não é adequado porque cada caixa precisa
estar ao redor desse personagem Em vez de 32,
digamos mais 16 pixels. O bom do
Unreal Engine que você pode escrever
mais 16 e pressionar Enter, e ele fará isso
automaticamente para você Ok, 16 pixels funcionaram porque agora você pode ver
que tudo está correto. Cada sprite
está em sua própria caixa. Essa é a largura e a altura corretas da
célula. E vamos continuar
e clicar em Extrair. Agora você pode ver que as
extraiu aqui, e agora elas estão em imagens
singulares Agora, se eu clicar e arrastar
isso para o mundo, é um único personagem que está aqui em vez
da coisa toda. Na verdade, precisamos fazer isso
para cada um deles. Por exemplo, na hora da noite, você pode clicar com o botão direito do mouse e ir para as ações dos sprites, extrair os sprites novamente e
clicar na grade em vez disso clicar na grade em Então você pode clicar aqui. Acho que é o mesmo,
talvez 48 de antes. Mas se você escrever 48, verá que
na verdade não está correto. Se eu voltar para 32, como a altura, você pode ver que
32 é a correta aqui. E você precisa
clicar em extrair aqui. Ok, vamos tentar
com o último. Vamos clicar com o botão direito do mouse no modo
inativo noturno para extrair a destruição dos sprites Vá para a grade. Acho que é
32 novamente, assim como antes. Agora vá em frente e
clique em Extrair. Eu vou te mostrar este também. Depois disso, vou fazer cada um deles rapidamente.
Você pode ver que isso leva tempo. Eu tenho que fazer isso para
cada um. Mas vamos clicar com o botão direito neste. Vá para Spart, as ações
extraem sprites. Agora, para este,
vamos clicar na grade. Vamos escrever 64, assim
como a altura lá. É um bom ponto de partida simplesmente
escrever o número
da altura e você pode ver que ele já está funcionando corretamente. E extraia tudo certo. Clique em Extrair
sprites, vá para a grade. Você pode ver que vai ficar muito bom nisso porque
faz isso 100 vezes. Às vezes, mesmo com sono, você pode fazer isso sem nem
pensar no que está fazendo Fazer isso muitas
vezes é uma boa prática. Agora nós os extraímos. Acredito que se eu simplesmente
voltar para a pasta, essa, clicar nessa, ociosa,
base inativa, extrair os sprites
para a grade 32, isso funciona, ok Isso é o que você precisa fazer
para cada um deles. Tente encaixá-los na caixa
e extrair todos eles. Ok, eu vou fazer isso no
meu próprio tempo e eu estarei de volta com você agora. Eu extraí todos eles. Agora você pode ver que todos
eles foram extraídos. Às vezes, é um pouco complicado
saber o tamanho deles
ao extraí-los. Mas basicamente, novamente, se você abrir um deles, por
exemplo, este, esse foi o mais
complicado. Se você escrever, clicar e extrair esse preço para este, você
pode vê-lo aqui Se você for para a grade 64 novamente, certo, 64 é um bom ponto de
partida. Você pode ver que não está correto
porque isso aqui está vazio. Não precisamos de vazios. Se você escrever mais 16, geralmente são 16 pixels toda vez que você
aumenta ou diminui. E este também não é
adequado. Mais 16. Novamente, agora podemos ver que
combina com todos eles. Ok, vá em frente e
faça isso por todos eles. Eu fiz isso por todos eles. Agora vamos para a próxima
lição e criar flip-books.
17. 3.04 Criando flipbooks: Tudo bem, agora que
temos os sprites prontos, vamos
criar flip-books. E os flip books são simplesmente a versão
animada deles. Estamos
reunindo todos
esses sprites em uma peça animada O personagem está se movendo.
Este é um flip book Um flip book é simplesmente quando
você precisa de uma animação em dois D. Vamos experimentá-lo
com esta noite de Death Primeiro clique no primeiro
sprite e você pode ver, aliás, as texturas, elas têm uma linha vermelha E se eu aumentar o zoom,
você pode ver. Eles têm uma linha vermelha
aqui nas texturas, enquanto os sprites têm uma linha azul
clara aqui ou Esse é o sprite. Você também pode ver a
diferença entre eles assim. Clicando no primeiro,
vou para Old Shift e clico no último
sprite desta seção, vou clicar com o botão direito do mouse, vou para Criar flip book. Deixe-me chamar isso de
B para flip book. Vamos chamar isso, vamos
chamar isso de morte. Temos esse flip-book, a morte. E você pode ver que já está animado. Eu clico duas vezes nele. Esta é a
animação da morte da noite. Um flip book é
simplesmente os sprites
reunidos em uma animação Você pode ver, eu posso simplesmente
parar com isso aqui. Esta é a animação e
esses são todos os sprites para os quais selecionamos e criamos um
flip book. Tudo bem. Você também pode ver se
eu reproduzo novamente, você pode controlar a velocidade
da animação aqui nos
quadros por segundo, eu posso, por exemplo, configurá-la
para 50 muito rápido. Se eu dissesse que os quadros
por segundo voltam para 15, esse é o padrão,
é o que parece. Agora, há realmente uma regra
para o que isso deveria ser. Às vezes, o pixilatista escreve para você o que
deveria estar aqui Mas às vezes eu estou
apenas brincando, vendo o quão rápido a
animação é reproduzida, e então eu
transformo isso em meu jogo para mim. Eu tentei dez em
quadros por segundo e acho que é isso que
eu quero que a velocidade seja. Agora, não há uma regra. Você pode ir com 12,
você pode ir com 15, o que você achar que é
bom para o seu jogo. Eu vou com dez para mim. Eu vou fechá-lo aqui. E agora temos esse flipbook. Agora podemos clicar e arrastar
isso para o personagem e selecionar Mover aqui, e agora temos o
flip book aqui A razão pela qual, novamente, criamos essa pasta de texturas é
porque realmente
não precisamos
ver tudo isso mais tarde, quando criarmos todos os
flip-books aqui para os personagens Não precisamos de tudo isso
dentro da pasta Texturas. Novamente, você não pode excluí-lo porque isso está usando
dados das texturas Portanto, você realmente não pode excluí-los. Estou apenas colocando-os em uma pasta de texturas para não
precisar vê-los novamente. Mas vamos entrar aqui. Vamos
fazer isso por todos eles. Para o hit, clique
no primeiro,
segure a tecla Shift, clique
no último, clique com o botão
direito, vire o livro Ligue de novo. Abra, mas você pode fazer isso mais tarde. Como se você pudesse alterar os
quadros por segundo depois. Eu não vou
fazer isso por enquanto. Vá em frente na próxima, clique com
o botão direito, flip book. Chame isso de ocioso. Vá para a próxima
aqui, clique com o botão direito. Ligue ou eu vou
ligar ou, em vez de base, ou vá para a próxima aqui, clique com o botão
direito, flip book Chame isso de B.
Vou fazer algumas delas você
possa ver o fluxo de trabalho. E então eu vou fazer
isso de novo no meu próprio tempo. Clique com o botão direito neste.
Flip book, ligue para ele. Ou ocioso. Vamos descer novamente
o próximo aqui. Eu só vou fazer
isso como o último. Clique com o botão direito, flip book. Chame isso de B ou ladino. Esse é um trapaceiro, como esse. Você pode ver que eles estão
todos animados aqui. OK. Eu vou fazer
isso no meu próprio tempo. Vou
criar flip-books e estarei com você mais uma vez. Agora, eu criei flip-books para todos eles, como
você pode ver aqui E vou clicar em
Arquivo e salvar todos eles. Agora vamos clicar
no primeiro, Hold Shift, e clicar no último
flip-book dentro daqui E eu vou transferi-los
para os personagens. Aqui temos todos
os flip-books. Agora deixe-me ajustar os
quadros por segundo. Agora, em vez de fazer
isso um por um, o que leva muito tempo, você pode clicar no
primeiro e segurar a tecla Shift. Clique no último
para selecionar todos eles. Clique com o botão direito do mouse e acesse Ações de
ativos e
selecione esta. Edite a seleção na
matriz de propriedades, selecione isso. Geralmente, isso ocorre sempre que você deseja editar uma configuração
para cada um deles. É sempre bom escrever, clicar e usar a matriz de
propriedades para alterar as mesmas
configurações para todas elas. Aqui no sprite, eu posso mudar os quadros por
segundo e fazer com que sejam dez Ele entra e faz
isso por todos eles. Vá em frente e clique em
Salvar tudo, feche-o. E você pode ver agora
que eles são, na verdade todos dez em quadros por segundo. Isso se aplica não apenas aos
flip-books, mas a tudo. Por exemplo,
textura normal em que digamos que eu queira alterar o brilho
de todas as texturas Você pode selecionar todas
as texturas, por
exemplo, esta Se eu mantiver o controle, seleciono a próxima textura, essa textura e essa
textura que eu possa escrever. Clique em Ir para ações do ativo, Editar seleção por meio da
matriz de propriedades aqui nas configurações, por exemplo, nos ajustes. Eu poderia editar o brilho
de todos eles de uma vez. É sempre bom saber que
essa opção existe. Ok, aqui estão todos os
flip-books que criamos. Todos eles estão ótimos. Se você esqueceu um
deles, não tem problema. Sempre podemos voltar e criá-lo como um flip book mais tarde, mas acho que tenho
todos eles agora. Tudo está ótimo. Vá em frente e salve tudo, e vamos
para a próxima lição.
18. 3.05 Aula de projeto de pais e filhos: Agora que
criamos os flip-books, vamos criar
as classes de blueprint Vamos para a pasta de plantas. Vamos clicar com o botão direito
aqui. E vamos criar uma nova pasta chamada inimigos. Primeiro, vamos
entrar nessa pasta. Clique com o botão direito do mouse e agora podemos
criar uma nova classe de blueprint. Vamos continuar e
criá-lo aqui. Agora, em vez de criar esse
personagem para o inimigo, esse é um personagem de três D. O que precisamos fazer é criar dois caracteres D e
clicar nesta pequena seta com todas as classes. Aqui
você pode realmente ver mais classes que você pode
criar com o blueprint up Aqui estão as classes normais que você quase sempre
cria. E você quase nunca vem
aqui , a menos que haja
algumas coisas específicas. Por exemplo, quando você salva e carrega
um
jogo para o seu jogo, ele também está aqui embaixo. Aqui embaixo, podemos
pesquisar papel, que são os dois D
no motor Unreal Podemos ver esse
chamado personagem papai. Este é um caractere de três D, e este, o
caractere de papel, é um caractere de dois D. Você também pode ver que temos outras
coisas que podemos criar, como flip books que
acabamos de criar Você pode criar
mapas de blocos, sprites e assim por diante, mas queremos
criar um personagem Agora vamos clicar nele e
clicar em Selecionar. Agora, para esta, vou
chamá-la de base inimiga da BP. A razão pela qual eu
a chamo de base inimiga é porque agora é
uma classe principal. Vou explicar a você aqui
nesta lição o que uma classe para pais e
o que é uma classe para crianças. Vamos, por enquanto, clicar com o botão direito do mouse
aqui e você pode ver aqui em cima, que se chama Create
child print class. Vamos continuar e criar isso. Por enquanto, vamos chamá-lo de BP Knight. Basicamente, estou chamando isso
de personagens que tenho. Se eu for à minha
pasta de personagens, teremos a noite. Vamos criar o
próximo também. Ou vou explicar o que é
uma criança modelo. Clique com o botão direito na base inimiga, Crie uma criança, classe de planta Vamos chamar isso de P Orc. Ok, vamos em frente
e salve tudo. Agora eu tenho esse aqui. A base inimiga, se você segurar
o mouse durante a noite, poderá ver que a classe principal é base inimiga
da BP. A
mesma coisa com o Or. A classe principal
é a base inimiga da BP ou a base inimiga aqui Agora podemos abrir
a base inimiga. Digamos que dentro
dessa classe de blueprint, eu queira clicar no componente de movimento do meu
personagem Então, temos esse
componente porque é um personagem aqui. Digamos que eu quisesse mudar o quão alto meu personagem pode pular. Você pode ver no painel de
detalhes que há coisas que
você pode
mudar sobre o movimento, a gravidade, a
velocidade máxima e assim por diante. Digamos que a
altura do salto, digamos que meu personagem, eu queria pular muito mais alto. Se eu, por exemplo, clicar aqui e
escrever 800 em vez disso. Agora eu posso pular mais alto
se eu clicar em Compilar. Agora, se eu minimizar
isso e frequentar as aulas de plantas para meus filhos, esses dois são filhos
da base inimiga,
porque clicamos com o botão direito do mouse e os
criamos quando O que isso significa? Agora,
se eu passar a noite der uma olhada aqui e clicar no componente de
movimento do personagem. Se eu descer até a velocidade de
salto que acabei de mudar
na base inimiga, você pode ver que também é 800 aqui Agora, por padrão, se eu for até o Or e clicar
no componente de movimentação do personagem e descer, posso ver que ele também está definido como
800 no Awesome. Interessante. Toda vez que eu altero uma configuração
na base inimiga, que é a classe principal do
projeto, essa configuração que
eu altero aqui é aplicada a todas as crianças
que eu crio para ela E esse é um método muito rápido trabalhar e também o
melhor para trabalhar, porque eu o uso muito. Imagine que você tem quinzena e muitas
skins Digamos que também aqui
neste clicker você tenha 100 inimigos Você cria 100
dessas crianças aqui. Em vez de inserir
cada uma dessas
crianças e mudar, digamos que você queira alterar
a escala de gravidade, 1.2 Em vez de entrar em
cada criança e alterar o valor para 1,2,
você pode simplesmente alterar o valor dentro da
classe principal e ele será aplicado automaticamente a todos os
filhos que você criar. Essa é uma maneira rápida de trabalhar
se eu clicar na minha base inimiga e
clicar nessa seta para redefini-la para 420, compilar
e
salvar Agora, se eu for à minha noite, você pode ver que ela também está configurada para
420, o mesmo com o Orc Essa é uma ótima maneira de trabalhar porque você pode imaginar que,
se tiver 100 inimigos, é muito trabalhoso clicar em cada uma dessas
cem e mudanças de valor. Você pode simplesmente trocá-la uma vez
dentro da base inimiga. Isso é para as aulas de pais
e filhos. Vamos criar o resto deles. Nós temos o e
temos a noite. Vamos criar o Shaman. Clique com o botão direito do mouse no inimigo Criar classe de planta
infantil. Vamos chamar isso de BP, Roku. Vamos clicar com o botão direito na base
inimiga novamente. Crie uma turma infantil de blueprint. Chame isso de BP ou Shaman. Vamos voltar novamente.
Temos que criar todos eles. Temos o Warrior e
temos o Roque P Warrior. Agora estou apenas criando-os muito mais rápido do que antes
, porque é a mesma coisa. Estamos fazendo isso de novo e de novo. A revista Skeleton e
a base do esqueleto, apenas chamando-a Assim. Skeleton
e a revista Skeleton. Revista Skeleton. Vamos ver o que estamos perdendo. Temos o Skeleton Rogue
e o Skeleton Warrior. P Skeleton Rogue, BP
Skeleton Warrior. Apenas certifique-se de
clicar com
o botão direito do mouse na base inimiga
e criá-la. Para ter certeza de que você sempre pode
segurar o mouse sobre
ela , sua classe é a
base inimiga correta. Clique com o botão direito aqui, faça o
último chamado BP wizard. Só para verificar se
perdi alguma coisa. O mago é o
último e pronto. Eu sei que tenho 11 personagens. Basta clicar aqui, segurar a tecla Shift,
clicar na última. Você pode ver que tem 11
selecionados e isso está correto. Eu tenho 11 personagens aqui. Ok, vamos clicar em
Arquivo e Salvar tudo. Agora criamos todos eles. E isso parece bom, então estamos prontos para continuar
na próxima lição.
19. 3.06 Finalizando a configuração do curso do inimigo: Vamos acabar com o inimigo. Agora vamos passar a noite. Temos que abri-los um por um. Vamos abrir a noite
primeiro, aqui dentro. Se você é novato em cláusulas de
blueprint, basicamente o que você
tem são componentes Você tem componentes diferentes. Por exemplo, o sprite. Vamos até o
ponto de vista por enquanto. Aqui na janela de exibição, assim como a janela de exibição
aqui no jogo Na janela de exibição da cláusula
do blueprint, você pode ver Por exemplo, o sprite, não
aplicamos nada E é isso que faremos.
Agora, vamos realmente fazer isso. Então você pode ver que ao
clicar neste sprite, você pode ver que ele
precisa de um flip book. É uma animação porque é um personagem que criamos aqui. Ele precisa de um personagem animado
clicando no flip book. Deixa, esta é a noite. Temos que selecionar o modo
noturno ocioso. Vamos selecioná-lo. Você pode selecioná-lo
assim ou
clicar no sprite Você pode clicar e arrastar
aqui nos personagens, você pode clicar e arrastar isso e soltá-lo em cima
daqui. Isso também funciona. Agora você pode ver visualmente, pode se movimentar, exatamente como na
janela de exibição normalmente Você pode ver agora que
temos esse personagem. Se você clicar duas vezes nele, o quadro por segundo. Eu não o
troquei por este. Acho que esqueci de mudar isso. Deixe-me selecionar todos eles. Acho que mudei isso antes. De qualquer forma, selecione todos eles. Se você tiver a mesma
coisa, clique com o botão direito do mouse e vá para Ações do ativo. Sua seleção na Property Matrix. Vou até o Sprite
e alterarei a taxa de quadros por segundo para dez
quadros por segundo Vamos sair e
vamos fechá-lo. Em vez de entrar em
cada um deles e alterar os quadros
por segundo para dez, vou fazer isso
selecionando todos eles. Clique com o botão direito na matriz de propriedades
e faça desta forma aqui. Você pode alterar os quadros
brilhantes por segundo. Um rápido, não sei. Acho que já fiz isso antes. Talvez a
crista do meu motor, não tenho certeza. Mas agora temos isso. Vamos voltar ao vidro da planta Vamos abri-lo novamente.
Eu vou ver plantas Os inimigos se abrem na noite em
que estávamos trabalhando. Vamos até as janelas de exibição. Aqui, você pode ver minha noite. Tudo parece
muito melhor. Está bem? Na janela de exibição, você pode ver as coisas visualmente E dentro do gráfico de eventos
é onde você adiciona o código, por exemplo, em
movimento e assim por diante. Por enquanto, não vamos nos concentrar aqui, vamos para a janela de exibição
dentro daqui Temos que fazer isso para
cada um deles. Temos que atribuir o flip book. Vamos clicar aqui. Abra o editor de diagramas completo. Essa exibição aparece porque você ainda não trabalhou nesse
blueprint. Vamos abri-lo, clicar no
sprite, atribuir o Or. Se você apenas pesquisar por Orc, por exemplo, e puder
selecionar este ou inativo Se você acessar a janela de exibição, verá que ela está
correta Aqui está, ok, incrível. Você tem que fazer isso para
cada um deles. Eu só vou te
mostrar este e depois vou
fazer isso sozinho. O Orc Rogue, clique em Sprite ou vá até o Rogue
e selecione o Apenas certifique-se de selecionar o ídolo para
cada um deles. Eu só vou fazer isso
para o resto deles. OK. Esse foi o último. Em cada um deles, eu atribuí
o personagem exatamente assim e ele já
parece um jogo. Incrível. Mesmo que ainda não tenhamos
feito muita coisa, vou
clicar e compilar em cada um deles. É uma boa prática. Não mudaria muito agora
clicar e compilar Mas é sempre bom
lembrar desse jeito. E, a propósito,
é bom saber também você pode clicar nesses três
pontos e salvar e compilar,
e você pode clicar
neste, Sem sucesso O único que isso faz é que toda
vez que eu clico em Compilar, ele é salvo automaticamente
aqui, em vez de, digamos que eu alterei um
valor aqui assim Em vez de compilar e depois salvar, você
pode simplesmente compilar Você pode ver a estrela, isso
significa que ela não está salva. Se você clicar em compilar, ele também será salvo automaticamente Isso é muito bom. Eu costumo fazer
essa configuração apenas para não ter sucesso. Você também pode salvar
tudo, se desejar. Não é realmente necessário no
momento. Ok, aqui estamos. Vamos fazer outra coisa agora. Esta cápsula aqui é a
colisão desse personagem. Nós realmente não precisamos de
uma colisão porque os personagens estão apenas parados
no ambiente O que podemos fazer é
fechar tudo. Vamos abrir a
base inimiga para esta cápsula. Só para não ser tão grande. Na verdade, é saber
que é tão grande e que o personagem
é tão pequeno. Normalmente, ele se encaixa no personagem. Em vez de clicar nesse componente da cápsula e
alterar o valor aqui na altura
da cápsula e no raio da cápsula para ajustá-la ao
caractere desta forma Em vez de fazer isso para
cada personagem, lembre-se de que vou clicar nessa seta para reiniciá-la. Por padrão, lembre-se de
que temos a base inimiga, que é a classe principal. Vá para a janela de exibição. Vou clicar aqui
e tentar configurá-lo
para 12 por 12
assim e compilar E agora você pode
ver
como fica à noite
, porque agora o muda
automaticamente para cada um deles. Eles têm toda essa
configuração aplicada. Deixe-me dar uma olhada e
isso é o que parece. Este é o que usamos para quando você clica com o mouse
e danifica o inimigo. Vou torná-lo
um pouco maior para que
possamos atingir o inimigo com muito mais facilidade. Talvez em vez de 12 por 12, vamos fazer com que seja 16 por 16. Vamos tentar isso.
Sempre podemos aumentá-la se a caixa de acerto for muito
pequena, 16 por 16. Parece bom para o componente da
cápsula. Vou clicar nele. Na verdade, vou
até aqui
nas configurações de colisão
e vou dizer
gerar eventos de sobreposição Não, não aqui para a colisão, precisamos adicionar alguma
colisão Mas, por enquanto, vamos clicar
aqui e dizer que não há colisão, e podemos
personalizá-la mais tarde Vá, compile e
salve tudo. Agora, cada uma
dessas classes de blueprint também tem a colisão
definida como não Para o sprite, apenas
certifique-se de que não haja
nenhuma colisão na base inimiga Novamente, lembre-se dos
sprites da base inimiga na colisão. Vou me sentar aqui, sem colisão e tudo
está ótimo Também no componente de
movimento do personagem, certifique-se de que a gravidade seja
zero para que não caiamos. Essa aceleração máxima é zero. Podemos fazer com que a velocidade máxima de
caminhada seja zero. Tudo está indo bem. Eu acredito que realmente não
precisamos mudar muita coisa. Vamos compilar aqui.
Vamos salvar tudo. E isso foi tudo para os inimigos. Você sempre pode arrastar um deles. Por exemplo, o esqueleto. Você pode escrever
no Y como zero. Nós o trazemos para a
frente e aqui está. Isso é o que
parece se você clicar em, lembre-se de que é a visualização do jogo. Assim, você pode clicar para ocultar os ícones e
ver sua aparência. Você pode clicar no botão
direito do jogador e
pilotar a câmera. Você pode clicar em F 11 aqui
para maximizar a janela de visualização. Lembre-se de que 11 é que se eu clicar aqui, é o modo imersivo 11, maximizaremos a janela de visualização Se desejar alterar a
posição da câmera, você sempre pode clicar
aqui e alterar a localização da
câmera para ser centralizada Eu posso ver o ponto de articulação
aqui para a câmera. Você pode alterá-lo para
que esteja no personagem. Por exemplo, você pode
clicar em 11 para maximizar. Eu posso até ir
mais abaixo assim. 11 aqui está meu personagem animado e tudo
está ótimo. No entanto, quero clicar na câmera do meu personagem
ou do meu jogador. Na câmera,
vou escrever 640 aqui. Em vez disso, vou
diminuir um pouco o zoom. Acho que está um pouco ampliado
demais. Acho que estava muito
ampliado. Deixe-me, na verdade, tentar clicar com o botão
direito do mouse e empilhá-lo. E clique em 11. E isso é o que parece, parece muito melhor do que antes. E estou feliz com os resultados. Deixe-me clicar nesse botão para sair da câmera novamente. Vou clicar aqui.
Exclua isso por enquanto. Sim, tudo
está indo bem. Agora temos os inimigos configurados em classes de plantas. Agora vamos salvar
tudo. Vamos passar para a próxima.
20. 3.07 Aplicando a câmera do player como padrão: O que precisamos fazer agora, antes de
continuarmos , é
garantir que a câmera do jogador esteja olhando para o jogo
enquanto jogamos. Como você pode ver
quando eu clico em jogar, ele vê o jogo de onde estou agora
na janela de exibição E não é realmente usando nossa
câmera que configuramos aqui. Vamos seguir em frente e fazer isso. Clique neste player BP e
vá em frente e exclua-o, porque o que você precisa
fazer agora é clicar aqui Em vez disso, vá para Basic e selecione este
chamado Player
Start Component. Agora, se eu
arrastá-lo até a frente, você pode ver que tem uma seta. Eu tenho que girá-lo aqui. Clicar na ferramenta de
rotação e girá-la para que a
seta aponte para o mapa O início do jogador permitirá
que o jogador
apareça aqui onde eu o coloquei Agora, o que você precisa fazer é garantir que, dentro
do modo de jogo, se você entrar no modo de jogo e salvar tudo dentro
do modo de jogo nos padrões da
classe,
certifique-se de que, na classe P padrão,
você a altere do ponto
padrão, porque
queremos usar o jogador BP para
desovar como nosso jogador A
classe de pontos padrão é o BP player e compile e salve
tudo se quiser Você também pode garantir que,
clicando aqui nas Configurações do Projeto,
Editar Configurações do Projeto e acessando os mapas
e modos aqui, verifique se a
cláusula de pontos padrão também é o BP player Deve ser automaticamente
quando você se inscreve no modo de jogo, bem
como nas configurações do mundo. Novamente, se você não tiver
as configurações mundiais abertas, você pode clicar em Janela aqui em cima, abrir as configurações mundiais, mas dentro daqui
no modo de jogo, você pode clicar aqui nesta seta e ver que o jogador BP é
a cláusula padrão Novamente, tudo isso deve ser aplicado
automaticamente quando
você o altera aqui Não se preocupe muito com isso. Mas é sempre
bom saber que isso precisa estar correto aqui e também
nas configurações do projeto. Agora, se eu clicar em Jogar, ele usará
o player BP como padrão
na classe para
aparecer no mundo Se eu clicar em 11, isso é o que parece. O que você pode fazer é
sempre clicar nas
largadas dos jogadores e alterar o X, Y e Z. Posso dizer
que não está realmente mudando aqui porque acho que é porque estou jogando lá Se eu apenas movê-lo para baixo
e clicar em Play, você pode ver que ele
muda de posição. Você sempre pode tentar
centralizá-lo aqui, seja o que for. Porque o inimigo
vai aparecer talvez deste lado. E vou movê-lo
um pouco mais para o lado. Vamos clicar em Jogar. Na verdade,
não é muito importante. Acho que está tudo bem por enquanto. Também vamos
consertá-lo mais tarde, mas isso é bom para mim. Vamos clicar em Arquivo
e salvar tudo. E agora, toda vez
que clicamos em Play, estamos usando esse gerador para gerar
a câmera E jogamos a partir dessa visão. Vá em frente e salve tudo, e vamos
para a próxima.
21. 4.01 Criando o ponto de surgimento do inimigo: O que podemos fazer agora é começar a adicionar o ponto
de desova do inimigo, porque agora é
hora de fazer com que o inimigo
apareça no mundo Para fazer isso, vamos criar
um ponto de desova. A forma como podemos criar
um ponto de desova. Agora você pode pensar que poderia adicionar outro jogador
inicial e tentar fazer com que esse jogador inicie o
local para gerar o inimigo Mas isso é só para
o jogador e ele
ficará confuso quando
eu clicar em jogar. Agora ele está realmente
usando este, e quando eu clico em jogar
novamente, ele está usando este. Ele continua alternando entre
eles e fica confuso. Vamos excluir este segundo agora para os
pontos de desova. Em vez disso, vamos clicar nas plantas E deixe-me clicar com o botão direito do mouse
e criar uma nova pasta. Vamos chamar isso de
pontos de desova. Vamos abri-lo. Vamos clicar com o botão direito do mouse e criar uma nova classe de blueprint
como ponto de geração. Vamos fazer uma pergunta muito
simples chamada base de atores ou apenas
ator e clicar nela. Vamos chamar isso de uma base de pontos de spa da
BP. Novamente, eu costumo fazer aulas de
blueprint
porque gosto de criar classes de blueprint para
crianças
que podemos usar mais tarde Se precisarmos alterar um
valor específico para todos eles, podemos fazer isso dentro do
principal, aqui dos pais. Mas talvez não precisemos criar mais de um
ponto na Espanha, não tenho certeza. Mas é sempre bom criar
uma base, clique com o botão direito aqui. Esse também é o caso quando
você desenvolve um jogo maior. Você não tem certeza se precisa de
mais de um ponto na Espanha. Mas é sempre bom criar
um para pais, porque você pode se
arrepender mais tarde se
não criar um e precisar criá-lo
novamente. Vamos clicar com o botão direito do mouse aqui e
criar uma aula de plantas para crianças. Vamos chamá-lo de EP
Enemy spa Point. Agora eu posso clicar e arrastar
isso para o mundo. Vamos definir o Y como zero. Está aqui na frente. Você pode gerar o inimigo
onde quiser. Por exemplo, você pode
gerar o inimigo aqui. não for muito
importante agora, se eu clicar em Jogar, o
inimigo aparecerá aqui Ok, agora
criamos o ponto de desova. Vamos guardar tudo por enquanto. Vamos clicar nesse ponto de desova do
inimigo. Certifique-se de que não precisamos
alterar nenhuma configuração. Nós realmente não
temos muito. Você pode ver aqui nos componentes só
temos o ícone que não temos e que podemos fazer dentro daqui porque
não adicionamos nada. Nós não precisamos. Eu
só estou usando esse ator. Encontre a localização
e a rotação
no mundo para que
possamos gerar o inimigo Ok, acabou
para o ponto de desova. E vamos
continuar com a próxima.
22. 4.02 Spawn ator de class: O objetivo de tudo isso agora é que precisamos gerar o inimigo E como geramos
coisas no mundo? No Unreal Engine, vamos fazer isso dentro
do Player Controller Então, o que eu geralmente faço
no Player Controller é
gerar coisas no mundo Se for personagem, preciso
desovar se for uma arma, preciso desovar se for uma
moeda de ouro, preciso Tudo é feito dentro
do controle do jogador. Vamos abri-lo e
ver o gráfico de eventos. Porque eu quero programar agora. A propósito, você pode
clicar com o botão direito do mouse e navegar por aqui. Deixe-me selecionar os dois. Clique em Excluir no meu teclado. E vamos começar aqui. Quando você começa a
programar, você basicamente precisa pensar:
o que eu preciso fazer? Ok, eu preciso detalhá-lo. Ok, eu preciso
gerar um inimigo aqui. Isso é o que eu quero.
O que eu preciso fazer? Preciso usar a função
principal usada para gerar coisas Eu clico com o botão direito. Se você não
sabe como se chama, você sempre pode, por
exemplo, desovar Você pode tentar dar
uma olhada e ver qual combina melhor com o seu. Não são todas essas transmissões, as funções pararam aqui, você pode ver que são chamadas, essas são as funções que você pode usar. Se você não
sabe como se chama, basta pesquisar a palavra. Por exemplo, eu preciso gerar alguma coisa. Só estou
procurando por spawn. Na verdade, esse
ator de spawn da turma, vou clicar nele aqui Essa é a função que vai gerar coisas para nós. Agora, para
executar o código dentro de mecanismo
vulnerável,
você precisa de um evento. Sem um evento, você não pode
executar código se escrever clicar e ir até aqui
e pesquisar eventos. Se eu puder encontrá-lo aqui. Despachantes de eventos, não
está aqui. Se eu subir, posso,
na verdade, este, é um evento no evento publicitário. Você pode ver que esses são os
ícones dos eventos. E você tem muitos eventos que você pode usar para iniciar seu código. Por exemplo, começar a jogar
é o mais simples. Se você clicar nele, poderá ver que os eventos estão marcados em vermelho, as funções estão marcadas em azul. O vermelho aqui, Beginplay está simplesmente dizendo que este
é um evento simples O que deve acontecer quando eu
começar a jogar? Se você clicar aqui
e conectá-lo. Agora, se você clicar em Play
, essa função será executada aqui. Sem um evento, você não pode
executar a codificação no motor real. Precisamos usar esse
único ator de spawn em vez de usar um evento normal Vamos clicar com o botão direito do mouse e
criar um evento personalizado. Vamos criar um evento personalizado. A diferença é que, com o evento personalizado, você pode
simplesmente dar a ele um nome personalizado. Vou chamá-lo de spawn M. Isso é
o que queremos fazer Vou conectá-lo
aqui, e vamos lá. Para essa função de geração, precisamos definir o que
precisamos para gerar Por exemplo, precisamos
gerar o ladino, precisamos gerar o
guerreiro Agora, realmente
depende do nível em que você está, porque nos
heróis do Clicker, por exemplo, depende muito do meu nível em
que você está No nível um, talvez você queira gerar o guerreiro e no nível dois, talvez você queira gerar o Ok Shaman Portanto, não podemos realmente especificar
qual deles queremos
gerar em vez de apenas especificar aqui o que queremos gerar depende do nível Vou clicar e
arrastar esse pino para a função aqui e
podemos decidir mais tarde. Em vez de chamá-lo de classe, vou chamá-lo de inimigo
que queremos criar aqui Essa é a variável que adicionamos. Coisa muito legal, essa transformação de
spawn também. Podemos arrastá-lo até aqui. Mas em vez de
criar uma variável, você pode
clicar no evento aqui, clicar no sinal de adição
e criar a variável. Por exemplo, posso clicar aqui
no tipo de variável e selecionar transformar,
assim como esta. E eu posso conectá-los. Eu posso fazer isso assim, ou se eu simplesmente excluir este novamente, posso simplesmente clicar e
arrastar como fizemos antes, soltá-lo no evento e ele o cria automaticamente para
mim. Método muito legal de fazer isso , pois vou gerar o inimigo Agora, para a transformação de desova, isso realmente depende de onde está
esse ponto de desova. Vou apenas colocar os dois
no evento. Quando usarmos esse evento posteriormente, podemos especificar onde está o ponto
de desova e também
podemos especificar qual
inimigo queremos gerar Mas, por enquanto, não podemos
realmente decidir aqui. Para a desova,
vou clicar aqui e dizer tente ajustar a localização, mas sempre apareça
para garantir que meu inimigo
apareça aqui aqui É sempre bom ter uma variável de qual
inimigo Vou clicar com o botão direito do mouse nessa e
promovê-la para uma variável. Vou chamar
esse de spawn. Inimigo. Ok, o que estamos simplesmente fazendo é
gerar um inimigo e armazenar essas
informações em uma variável, que podemos usar Como esse é
muito bom de usar se precisarmos fazer algo
com esse inimigo gerado, temos esses dados
dentro de uma variável Ok. Essa é a função
simples, o ator de geração da classe Você pode ver aqui se
eu chamo esse evento mais tarde, porque você não
pode executar esse código. Então, se eu clicar em play, não
espere que o código seja executado, porque no Unreal Engine, você precisa especificar no mecanismo quando
deseja executar esse evento Por exemplo, posso clicar com
o botão direito do mouse aqui e pesquisar meu inimigo de desova Evento, gera inimigo. E você pode ver isso aqui
e diz função de chamada. Então, eu posso clicar nele e
chamar meu código de spawn enemy. Eu posso chamá-lo aqui
sempre que eu ligar, eu posso então executar esse código. Se eu apenas escrever o início, Jogue apenas para mostrar que você começa, jogar é o evento mais simples.
Eu posso conectá-lo aqui. Sempre que eu começar a
jogar o jogo, ele chamará esse evento, que então
executará esse código aqui. É assim que acontece.
Digamos, por exemplo, que eu queira gerar o mago Por enquanto, deixe-me pegar este, em vez de escrever um valor, deixe-me pegar e dizer que
vou fazer uma transformação
sozinho, apenas manualmente. Não vamos
fazer isso assim, mas vou
mostrar, por exemplo, que vamos copiar a localização desse ponto
de desova Eu vou dizer 170 por
zero por -120 Aqui
no local 1700 -120
eu vou compilar Agora, quando eu clico em jogar, você pode ver que meu inimigo apareceu neste
determinado local É o assistente
que gerou todas
essas funções ou
a forma como chamamos os eventos Você tem que ter um evento. Você executa esse código,
avisa o motor, executa meus eventos de spawn enemy E ele
executará seus eventos com as coisas especificadas
que você especificou aqui Quero gerar o assistente, por exemplo, neste local Ele vai conectar essas
informações aqui, aqui. E vai gerar
o inimigo e
armazená-lo em uma variável Agora vamos deletar isso.
Nós não precisamos disso. Eu só ia te mostrar. Vamos compilar e
salvar tudo. Agora vamos para o modo de jogo. Sempre podemos gerá-lo
daqui, desde o início do jogo. Mas só para criar um código um
pouco mais limpo, vamos criar o inimigo
dentro do modo de jogo Agora que temos esse código
em que geramos o inimigo, vamos executar o código
dentro do modo de jogo Como o modo de jogo está
decidindo as regras do jogo, é mais fácil fazer
isso aqui Mas, na verdade, isso não
importa no modo single player. Se você gerar o inimigo
daqui ou daqui ,
isso realmente não importa Mas só para criar um código mais limpo, vamos fazer isso no modo de jogo. Eu vou fazer isso
no início do Play. Vou apenas
selecionar este e excluí-lo aqui. Vamos arrastar e
procurar o inimigo gerado. Você pode ver aqui
quando você faz isso, você não consegue ver nada. Isso ocorre porque agora esse modo de
jogo não percebe o que você criou dentro
dessa outra classe de blueprint Lembre-se de que essas são duas classes de blueprint
diferentes. Agora você realmente precisa entrar em algo chamado comunicação de
plano Precisa se comunicar com
outra classe de blueprint, porque esse modo de jogo
precisa usar isso no controlador de
jogo Precisamos usar algo chamado casting para nos comunicarmos
com esse outro plano E vamos fazer
isso na próxima lição.
23. 4.03 Comunicação de blueprint - fundição: Agora entramos na comunicação do
plano. E agora precisamos nos
comunicar com o controle do jogador dentro
do modo de jogo para dizer ao controlador
do jogador, ou aqui no modo de jogo, use e chame
esse spawn de inimigo Para fazer isso, vamos aqui embaixo, clique com o botão
direito do mouse e diga agora que o que você precisa pensar é com
o que você precisa
se comunicar? Preciso me comunicar com
o controlador do player. Vamos procurar o controlador
do player. Precisamos obter essa função chamada get player controller. Estamos recebendo esse controlador de camada
padrão do Unreal Engine Agora precisamos dizer
aqui que precisamos
usar esse
controlador específico que criamos. Não precisamos usar esse controlador de player
padrão. O que precisamos fazer é
partir daqui e dizer o segundo elenco. Isso é o que é o casting. Você está dizendo ao
motor que
deseja usar esse
controlador personalizado especificamente Você deve escrever
o nome dele como PC Dungeon Clicker Vá em frente e conecte-o. Agora, o que estamos fazendo aqui é pegar o controle de jogador
padrão transmitir para este clicker de masmorra para
PC Então, basicamente, estamos dizendo
que queremos usar coisas dentro do nosso próprio controle de jogador personalizado em vez deste aqui. Agora podemos chamar tudo o que
criamos aqui de inimigo gerado Então, por exemplo, agora posso arrastar daqui e dizer gerar inimigo Agora eu posso usá-lo, lembre-se de que você não pode
simplesmente escrever, clicar e dizer gerar inimigo
porque ele não vai aparecer Só vai aparecer se
você se arrastar daqui e
disser que gera inimigo porque
ele está dentro daqui E agora você pode realmente usá-lo. Agora você está se comunicando
com esse plano. Mas o problema com isso
com o casting é que você cria referências concretas
no Unreal Engine Ao criar um jogo e
criar um jogo grande, você pode imaginar o quanto
está usando o casting
porque está se comunicando com vários projetos ao mesmo tempo Você tem muitos
desses. Agora, isso é um problema porque
cria referências rígidas. E o que são referências difíceis é que você precisa carregar
essas referências sempre que iniciar o
jogo. Às vezes, você vê
se abre um jogo antigo
e ele carrega por 15 segundos antes de
mostrar o menu principal. Isso ocorre porque
ele está carregando todas
as referências físicas antes mesmo de começar.
Isso é muito ruim. Não estou dizendo que você não
deva usar o casting em qualquer lugar, mas use-o com facilidade,
não em todos os lugares. Use-o onde quer que você o encontre. É bom usá-lo para chegar lá. Com a experiência, você
saberá quando deseja
usar o casting. E por que não tentar evitar o
elenco o máximo possível. Então, deixe-me deletar
esse elenco agora,
ou, na verdade, deixe-o
ficar aqui. Deixe-me apenas Alt e desconecte isso Aqui. Deixe-me
movê-lo para baixo por enquanto. Agora, em vez de usar o casting, vamos usar algo chamado interfaces de
blueprint Vamos passar para a próxima lição e
ver
o que são
interfaces de blueprint
24. 4.04 Comunicação de blueprint - interfaces: Tudo bem, vamos entrar nas interfaces do
blueprint. Agora, esse assunto é
difícil para muitos iniciantes, mas vou tentar explicar, como sempre, o melhor que posso
para explicar isso para você. Para evitar referências altas
com o casting, vamos usar interfaces de blueprint Primeiro, clique com o botão direito aqui, crie uma nova pasta
chamada interfaces. Vamos nos manter organizados aqui
dentro. Vamos clicar com o botão direito agora. Dentro do blueprint, você vê algo chamado interface de
blueprint Vamos continuar e criá-lo. Normalmente eu o chamo de iniciante as pessoas o chamam de BPI para interface projeto.
Vamos realmente fazer isso. Vamos chamá-la de BPI, interface de
projeto. Vamos chamar esse. O nome deste é
o que você está tentando
se referir, o que quer que você esteja
tentando se comunicar. Nesse caso, estou tentando usar uma função do controle do meu
player. Vou chamar isso de
controlador PI .
É a isso que eu quero me referir. Vamos abri-lo. Dentro de uma interface de blueprint, você pode ver que tem uma janela de visualização Você realmente não pode fazer nada. Diz somente leitura, você não pode arrastar nem nada aqui. A única coisa que você pode fazer é criar funções
aqui ao lado. Vamos clicar na
primeira função aqui. Deixe-me clicar em
dois para renomeá-lo. Deixe-me chamar isso Obter referência de controle de jogo”. Obtenha a referência de controle do jogador. Isso é o que estou tentando fazer. Estou tentando obter
a referência do controlador
do player para controlador
do player poder usar o que está nele. Assim como
fizemos com o casting, posso usar essa função dentro dela aqui. Vamos voltar para a interface. Obtenha a
referência do controlador do player aqui. Eu quero criar uma variável
de saída aqui. Agora, o tipo de variável é o que você está
tentando referenciar. Estou tentando fazer referência
ao meu controlador de player. Preciso
procurá-lo aqui embaixo, pesquisar o controlador de PC, na verdade o
chamamos de PC, controlador
net Player. Chamamos PC Dung Clicker. Vamos clicar nele.
Vamos renomear isso para Play Controller
assim Vamos compilar e
tudo terminará aqui. A única coisa que
criamos foi essa função de
referência do controlador
get player. E adicionamos uma variável à saída aqui chamada controlador
do player. Vamos usar isso para
definir esse controlador de jogador aqui. Agora que criamos a interface
do blueprint, vamos entrar no controlador
do Player e,
dentro das configurações da classe, precisamos adicionar essa
interface aqui Vamos clicar nas configurações
da classe, pesquisar o BPI e adicionar o controlador
Player Agora, observe que quando você adiciona o controlador do
Player aqui
na interface, na verdade você obtém uma barra aqui
chamada interfaces. E você pode ver esta
função de referência
do controlador do player que você acabou de criar, a lista, clique duas vezes nela. E aqui está aqui,
você pode editá-lo. O que você precisa fazer aqui
dentro é simplesmente arrastar e dizer “faça você mesmo” aqui. Agora temos uma autorreferência. O que uma autorreferência
significa, basicamente, é que estamos definindo essa variável de controle
do jogador. Porque eu clico em
Alt e clico aqui para desconectá-lo. Se não
fizemos isso, saiba o que
é essa variável, está vazia, não tem nenhuma informação, mas realmente não sabe que é esse controlador de jogador em
que estamos agora. Isso é o que significa
autorreferência. Se conectarmos isso,
atribuímos um valor
a essa variável. Basicamente, estamos dizendo a
essa variável que o controlador do player de que
estamos
falando tem um significado próprio. Seja qual for o plano em
que estamos agora, isso é uma referência pessoal Agora vamos continuar para que
não fique confuso. E explicarei todo o
processo quando terminarmos. Agora que fizemos
isso, vamos fechá-lo. Vamos abrir o modo de jogo. Agora, assim como antes, digamos que pegue o controle do player e obtenha o controle do
player padrão. Agora, em vez de lançar, agora
podemos arrastar e dizer a referência
do controlador. Agora você pode ver que isso
vem da interface do blueprint. Também é uma função de
interface de projeto. Quando você vir essa mensagem
no final, vamos clicar nela. Isso também é o que
esse ícone significa. Isso significa que vem de
uma interface de blueprint. Vamos em frente e conecte-o. Agora, a partir daqui,
vamos arrastar e dizer que gera um inimigo, como antes E agora podemos chamar
o que está dentro dela. Agora você vê quando eu vou para
o controle do player agora. E se eu adicionar uma nova
variável chamada, por exemplo, inimigo, salvamos. Pilha. Então, agora dentro
do modo de jogo, eu posso dirigir daqui
e dizer mate o inimigo. E agora você pode ver, eu posso ver essa variável que acabei de criar. O que quer que eu crie
aqui, posso me comunicar agora com o controle do player e
usar tudo o que está nele. Ok, deixe-me explicar todo
o processo antes de
terminar este vídeo. Se você já
entendeu, pode ir para a próxima lição. Eu só vou
deletar este. Então, vou
explicar todo o processo. Portanto, é fácil de entender. Para começar, o que fizemos foi criar essa
interface de blueprint clicando com o botão direito E no blueprint, criamos
a interface do blueprint. Agora, dentro dessa interface, acabamos de criar uma função chamada get player
controller reference. Porque queremos obter a referência dos controladores
do player. Tudo o que você
precisa fazer referência, você precisa criar uma variável
e definir o tipo de variável. Aqui está tudo o que você está
tentando se referir. Estamos tentando fazer referência a esse controlador de jogador
chamado PC dungeon Clicker É por isso que aqui
no tipo de variável,
eu a configurei para PC dungeon clicker Basicamente, basta
procurá-lo aqui, PC dungeon Clicker, e
você o encontrará assim Ok, dê um nome a ele. Acabei de chamá-lo de
Player Controller. E lembre-se de compilar. Se você não compilar, ele não
aparecerá aqui. Portanto, lembre-se de compilar,
salvar tudo. Agora você precisa adicionar essa interface de
diagrama ao controlador do player, porque é a isso que
você está tentando se referir aqui Entramos nas configurações da nuvem, adicionamos a interface do
blueprint Quando você fizer isso, a função aparecerá aqui à esquerda. Você abre essa
função aqui dentro. Basicamente, fizemos
uma autorreferência porque se você desconectar isso e compilar e tentar fazer isso aqui no
modo de jogo, se clicar em jogar, não
tenho certeza se isso vai me dar um
erro agora Será porque
estamos fazendo isso no início do jogo e
isso me dará uma era. Ele dirá acesso não. Tentando ler a propriedade, obtenha a referência do controlador do jogador dentro do inimigo gerado Se eu clicar aqui,
clique neste. Deixe-me
minimizá-lo para mostrar se eu rolar até aqui e
clicar nesse inimigo de geração A era chegou. Diz Access. Tentando ler a propriedade, obtenha a referência do controlador do player. Diz Acesso não, o que significa que não tenho nenhuma informação do que
você está tentando me dar. Estou tentando dar a ele esse controlador
do Player
como referência. Mas não diz nada. Isso significa que não há nenhuma
informação aqui. E eu não posso fazer nada com isso porque
no controle do player, nas interfaces do blueprint, não conectamos esse eu Porque se estiver vazio, o motor não sabe
realmente o que é
esse controlador de jogo. Temos que contar isso. O controlador do player de que estou
falando sou eu aqui. O controle do player.
Essa aula de planta em
que eu já estou agora Agora que a
definimos no modo de jogo, agora
podemos chamar essa interface de
blueprint Mas primeiro temos que obter o
controlador de player padrão a partir disso, esta referência do
controlador get play. Mas, a partir da interface
do blueprint , agora podemos
acessar tudo a partir dela Porque lembre-se de que
, no controle de jogo fizemos essa
autorreferência aqui. Ele sabe do que estamos falando
o controle de
jogo . Ok, eu sei que é um pouco
confuso para iniciantes, mas confie em mim, um conceito muito,
muito simples Se você apenas praticar
com ele 23 vezes, tente novamente assistir ao
final do vídeo. Talvez apenas
tente entender isso. Vamos fazer isso pelo
menos cinco vezes
neste curso, então você também
verá outros exemplos, não apenas o controle de jogo, mas também veremos outros
exemplos. Também vou deixar você
fazer isso antes de mim, para que você também possa
praticar aqui. Mas, por enquanto, terminamos. Nós conectamos
isso. No entanto, você pode ver aqui que precisamos
do local do spawn Precisamos gerar o inimigo neste
local aqui. Em vez de criar
um valor estático, como arrastar e dizer transformar e criar um valor
estático, por exemplo, podemos simplesmente escrever um valor aqui Queremos saber onde está
esse ponto de desova. Precisamos gerar esse inimigo. Dependendo de onde está
o ponto de desova, isso é o que faremos
na próxima lição
25. 4.05 Obtendo os valores de ponto de spawn: Aqui eu abri
o projeto
mais uma vez e agora ele está
novamente me dizendo que o Nenite está ativado,
mas não pode renderizar porque o projeto tem o
Nani desativado em um I. E eu lembro que desativamos Nanite nas
configurações do projeto agora, em vez de escrever anite aqui
no console 2047 Toda vez
que você fechar o projeto e
abri-lo novamente, ele exibirá
essa mensagem. Em vez disso, o que eu quero que você faça é
entrar na pasta do seu projeto e encontrá-la nos documentos. E entrando nos Projetos
Unreal, é
aqui que seus projetos do Unreal
Engine são salvos Então, entrando no
Dungeon Clicker, eu quero que você abra a configuração e abra esta
chamada Default Engine I. Dentro daqui, o que eu quero que
você encontre é que eu quero que você
encontre uma Projeto ativado é igual a
falso aqui embaixo. Vou escrever
meu código personalizado aqui em vez do
comando do console. Vamos escrever isso aqui. Não é igual a zero. Isso é o que eu quero que você
escreva, R é igual a zero. Vamos salvá-lo. A propósito, estou usando o Notepad plus plus Você pode usar seu editor de texto
normal. Realmente importa o que você usa, basta escrever R n é igual
a zero. Vamos fechá-lo. Vamos fechar esse
projeto também. Deixe-me tentar novamente
executar meu projeto e ver se a mensagem
desapareceu. E deveria ter sumido. Não deveria estar
lá. Lá vamos nós. A mensagem não vai mais
aparecer. Ok, incrível. Em vez de aqui, o que
queremos fazer agora é obter o valor do ponto
de desova Porque lembre-se de onde
paramos no modo,
criamos a interface do blueprint Chamamos isso de função ou
evento de geração de
inimigos , em vez de chamarmos esse evento de estar dentro do controle
do jogador Essa. A propósito, deixe-me aumentar novamente minha escala de interface de usuário, porque toda
vez que eu fecho o motor, eu realmente tenho que
aumentá-la aqui para 1,25 para que você possa ver melhor Espero não esquecer. Vamos abrir novamente. Aqui, e aqui você vê o inimigo gerado Este é o evento que
chamamos do modo de jogo. Agora, o que precisamos
fazer é dizer a ele onde queremos
gerar esse inimigo Essa é a transformação do spawn.
Como fazemos isso? Precisamos chegar onde
isso está no mundo. Agora, há uma função
que você precisa usar e ela é chamada de ator da classe. Ator de classe é
uma função que obtém algo que já foi
gerado no mundo Por exemplo, existe esse ponto de desova
inimigo que podemos obter. Se você abrir esta opção,
obtenha o ator da classe, se clicar aqui e
pesquisar por spawn, verá que pode
obter
o ponto de spawpoint inimigo da BP Ou você pode obter a base de
spawpoint da BP e assim por diante. Então você pode obter
essas plantas. Se você obtiver uma planta que
não é gerada, por exemplo, digamos que eu chame BP de noite,
esta é a noite que criamos Digamos que eu escolha o ator da noite de aula e eu jogue o jogo. Isso vai te dar um erro. Isso ocorre porque a noite
é uma lagoa no nível. Essas são todas as coisas
que temos em nosso nível. Os jogadores iniciam o volume
pós-processamento, o mapa de blocos e o ponto de spawpoint
do inimigo O que podemos fazer é
procurar um ponto de spa inimigo. Este é um ponto de spa inimigo. Estamos contratando esse ator. O que podemos fazer com esse? Na verdade, vamos colocá-lo
dentro do início do jogo. Antes de fazermos tudo isso aqui, deixe-me arrastar até aqui
e vou colocar esse aqui embaixo assim
e vou conectá-lo. O que queremos fazer aqui é clicar
com o botão direito do mouse e promover isso para uma variável. Vamos chamá-lo de ponto de desova do inimigo. Agora nós o armazenamos em uma variável e
vamos conectá-lo. Agora podemos usar essa
variável aqui. Vamos pegar essa variável, arrastá-la até aqui
e clicar em Obter. Ou você pode segurar o controle
e arrastá-lo e soltá-lo. Ele o receberá automaticamente. Você também pode segurar Alt, segurar Alt e arrastar. E ele definirá essa variável em vez de apenas
arrastar e clicar em obter. E defina ou segure o
controle e arraste ou mantenha pressionada a tecla alt e arraste. Agora temos esse ponto de rotação do
inimigo. E digamos novamente, se você não sabe como
a função é chamada, basta pesquisar a palavra
que eu quero para obter a transformação. Ou você obtém a
localização dessa variável, desse ator, obtém a localização do
ator. Você pode usar isso, você
pode direcionar a partir daqui, você pode ver que não consegue
realmente conectá-los. Mas ele vai converter isso para você no motor real
vai converter isso para você. Agora, não está totalmente
correto assim. Você pode direcionar a partir
daqui e dizer transformar. E quando você faz uma transformação, você decompõe essa transformação. Porque se você não sabe
o que é uma transformação, isso é o que é uma transformação. Na verdade, você pode ver isso
aqui no painel de detalhes. Quando você clica em algo, você vê a localização, rotação e a escala de um item. Essa é a transformação. A transformação pode ser
dividida em localização,
rotação e escala. Essa cor laranja
é a transformação. Você pode dividi-lo assim. E você pode conectar a localização do
Acta aqui. E funcionará muito bem. No entanto, apenas para
torná-lo mais curto, você pode
realmente excluí-lo. E você pode arrastar aqui e
pesquisar por transformação, e você também pode obter a transformação
Acta Agora, às vezes você precisa
ter cuidado porque ele está obtendo a localização, a rotação e a escala, e está afetando o
inimigo com esses valores. Se você clicar nesse objeto, ele obterá a localização, o que é bom. Eu quero desovar aqui. Também está obtendo a rotação que é 000, o que é bom. Imagine se esse ato
tivesse essa rotação, digamos que tivesse essa rotação
aleatória. Isso será
aplicado ao seu personagem. Tenha cuidado ao usar
get actor transform. Às vezes, você tem
um conjunto de rotação como esse para esse ativo que não
deseja que seja
aplicado ao seu personagem. Nesse caso, você deve
obter um local sozinho. Você pode usar a rotação
sozinha se não quiser a rotação a
partir daqui e, digamos make transform, e você pode
usar a localização em vez disso. E então você pode simplesmente deixar
a rotação em 000. Mas, no nosso caso, a escala
é boa. A escala de caracteres também é uma. A rotação é
000, o que é bom. E este é o
local que
queremos que usar o get act para
transformar esteja perfeitamente correto, neste caso aqui.
Agora nós entendemos. Vamos compilar e
dar a ele um inimigo, por exemplo, o Vamos ver se o Orc realmente
aparece,
isso é aqui, no jogo Fc Você pode ver que o Orc
está realmente desovando. Incrível. Está funcionando. Agora podemos desovar aqui. Vamos, por exemplo, escolher
a revista Skeleton. Se eu clicar em jogar, acho que, na verdade, em vez
de clicar em Jogar e sempre minimizar
assim para ver se funciona, eu gosto de jogar aqui Vamos ver o jogo como
uma nova janela do editor, ela aparece para mim e
aparece no meu segundo monitor Mas basicamente isso está aqui, esse é o esqueleto, e está funcionando muito bem Ok, a desova está funcionando. Agora, o que precisamos definir, qual inimigo
queremos gerar. Agora, esse é um pouco mais complexo
porque, como eu disse antes, cada nível do jogo
clicker tem seu próprio nível um tem, por exemplo, esse cara aqui, o nível
dois tem esse cara. Temos que definir qual
nível tem qual inimigo. Na verdade, não podemos simplesmente especificar
um inimigo específico aqui. Para fazer isso, precisamos
aprender algumas coisas. Estruturas, dados,
tabelas, bibliotecas. Mas será muito divertido e também poderá
ser aplicado
aos seus jogos futuros. Mantenha-se focado
nas próximas aulas. Coisas muito, muito importantes estão chegando. Vamos passar para a próxima.
26. 4.06 Introdução às estruturas: Tudo bem, bem-vindo.
E agora vamos ter uma
introdução às estruturas. Agora, se você já
sabe o que é uma estrutura, pode pular para a próxima lição E se você não sabe
o que é uma estrutura, vamos começar aqui. Vamos até os inimigos. Agora, para os inimigos, vamos para a base inimiga. Lembre-se, na base inimiga, se eu criar algo, se eu criar uma variável
e dizer saúde do inimigo,
por exemplo, o
tipo de variável que definimos é um flutuador Como um float é
um valor numérico com uma
casa decimal se eu compilar, você pode vê-lo
aqui Quando eu clico na
variável saúde do inimigo. E eu posso configurá-lo
para, por exemplo, 25,6 seja o que for,
a saúde do inimigo Agora eu também posso fazer um novo. Vamos, por exemplo,
chamá-lo de tipo inimigo. O tipo de inimigo
que temos que lidar com esse. Podemos simplesmente
defini-lo com um nome, qualquer que seja. Podemos ter muitas variáveis. Podemos ter a
saúde do inimigo, o tipo de inimigo, o nome do inimigo, a animação de inatividade do
inimigo,
a animação da morte do inimigo Você pode ver que podemos ter
muitas variáveis aqui embaixo para o inimigo que
define esse inimigo. No entanto, para mantê-lo mais
limpo, usamos estruturas. Em vez de preencher
tudo isso com variáveis, vamos
tentar usar estruturas. Deixe-me deletar esse. E
exclua este também. Compile, deixe-me minimizar isso. Vamos até a pasta de
plantas. Clique com o botão direito do mouse e
crie uma nova pasta. Vamos chamar isso de Estruturas. Vamos até aqui, clique com o botão direito, vá para a planta e você verá
essa chamada estrutura Vá em frente e crie,
vou
chamá-lo de ST ou estrutura. Vamos chamá-la de informação do inimigo. Essa estrutura contém dados sobre esse inimigo.
Vamos abri-lo. Ok, aqui estamos
dentro de uma estrutura. A única coisa que fazemos é criar variáveis dentro daqui. Aqui nas informações do inimigo, podemos especificar o nome do inimigo, podemos especificar a
saúde do inimigo, podemos especificar em que nível
ele aparece e assim por diante Podemos criar muitas
variáveis que definem esse inimigo aqui. Em vez de ter todas
as variáveis aqui embaixo, podemos realmente
tê-las aqui. E é muito melhor
usar assim, está mais organizado agora. Na verdade, isso é exatamente o que é uma variável ou
estrutura e você pode ver os valores padrão ou as variáveis que
você criou. Você pode vê-los aqui. Muito simples. Tudo isso é estrutura de dados , contém algumas variáveis
que você pode usar. Nesse caso, estamos definindo os dados do inimigo,
as informações do inimigo. Vamos passar para
a próxima lição e preencher as informações do inimigo.
27. 4.07 Informações de nível e estruturas de informação de inimigos: Tudo bem, então, para obter informações sobre
o inimigo, vamos definir algumas variáveis que usaremos para os inimigos. O primeiro é o
nome do inimigo. Para este, vou
configurá-lo como uma string. Agora, se você não
sabe a diferença entre uma string e um texto, se você selecionar uma string e clicar em Salvar e acessar
os valores padrão, verá que uma string é
basicamente uma linha de texto. Assim, podemos escrever o
nome do inimigo. Mas um texto também é uma linha de texto em que você pode
escrever o nome do inimigo. Então, qual
é a diferença? A diferença é que um texto é localizável e você também pode ver que, ao passar
o mouse sobre ele,
ele diz uma sequência de
texto localizável A localização significa que você
pode traduzir isso para diferentes idiomas se
quiser que seu jogo seja em alemão ou em chinês,
japonês, russo, qualquer coisa Você pode traduzir
seu jogo se tiver seu diálogo ou
nome de personagem feito com uma variável de texto. Agora, se o nome do personagem for feito com uma variável de string, ele não poderá ser traduzido. Talvez você diga: por que não
usamos texto como para tudo, já que podemos traduzi-lo e
tudo ficará bem. Isso ocorre porque usa mais
memória do que uma string. Usamos string se você
realmente não precisa localizar
o que está fazendo Não preciso traduzir
o nome do personagem. Vou apenas mantê-lo como uma corda. Também não quero traduzir
meu jogo. Se você quiser traduzi-lo,
por exemplo, se o nome do seu
personagem for Skeleton O Skeleton pode ser traduzido
para vários idiomas. Se você quiser traduzir isso, você deve selecionar o texto em vez disso. Apenas tenha isso em mente. O que quer que você esteja fazendo como texto, você quer traduzi-lo para outro idioma
ou
quer mantê-lo no mesmo idioma em
que você está codificando este jogo Eu só vou escolher uma corda. Eu não quero
traduzir nada. O que também queremos
adicionar é a classe. A classe inimiga é a base P M. Então vá em frente e pesquise a base
PPN M e selecione
a referência da classe Agora, se você realmente não sabe
o que é uma referência de classe, se você abrir o modo de
jogo, mais uma vez, isso é o que
geramos é uma referência de classe de
ator Você pode ver isso se
passar o mouse sobre ele. Então essa é a referência da classe, precisamos dela para que possamos definir a
referência da classe dos inimigos e inserir essas
informações aqui. A próxima coisa que precisamos
é do tipo de inimigo. Com que tipo de inimigo
estamos lidando? É um
inimigo normal? É um chefe? Podemos adicionar um
mecânico de ônibus ao jogo. Em vez de ter
todos como inimigos normais, também
podemos ter um inimigo de ônibus. Vamos criar um tipo de inimigo. Agora, para o tipo de inimigo, preciso usar algo
chamado enumerador, que não sabemos
o que é Vamos deixar isso
assim por enquanto, e eu posso te ensinar na
próxima lição. Vamos continuar. Por enquanto, vamos melhorar
a saúde do inimigo. E este é simplesmente um carro alegórico. E um flutuador novamente é um
número com uma casa decimal. Vamos clicar no sinal de mais novamente. E queremos a animação ociosa. Animação inativa para
esse personagem. Isso é simplesmente um flip book. Lembre-se de que um flip book é uma versão animada
desse personagem aqui, escolhendo o flip book de papel Vamos fazer um novo. Novamente,
queremos a animação de sucesso. É novamente um flip book. Vamos adicionar um novo. Também queremos a animação da morte. Este é um flip book. Ok, esses são todos os dados
que precisamos para o inimigo. E, na verdade,
terminamos aqui. Agora, antes de terminarmos, vamos também fazer a outra
estrutura chamada informação de nível. Se eu for até a estrutura, clicar com o botão direito do mouse e criar uma nova estrutura no
blueprint em uma nova estrutura Vamos chamar isso de Informações de Nível. Ok, vamos abrir as informações
desse nível. Agora, o que eu precisava
fazer nas informações do nível definir basicamente qual inimigo aparece
em qual nível Básico, aqui precisamos do nível
, que é apenas um número. É um número inteiro, agora não
é um número flutuante, não
é um número
com casa decimal Como o nível é o
nível um, o nível dois, nível três, não
precisamos realmente de uma casa decimal aqui Em vez disso, você pode usar
um número inteiro que é um número sem
casa decimal, como você pode ver aqui Usando um número inteiro como nível
e, em seguida, crie um novo. E precisamos do nome do inimigo. O nome do inimigo é
novamente uma string. Em que nível ou qual inimigo
aparece em qual nível, temos que escrever o nível Por exemplo, o nível um é
o nível dois é o orcam, nível três é o
guerreiro e assim por diante Temos que definir isso mais tarde. Agora temos a
estrutura para isso. Temos a estrutura
para as informações do nível. Temos a estrutura
para as informações do inimigo. Agora, na próxima lição,
vamos aprender algo sobre enumeração para que possamos acabar com
esse tipo de inimigo aqui
28. 4.08 Criando o tipo de inimigo Enum: Tudo bem, então vamos dar
uma olhada nas enumerações. Porque aqui na estrutura. Então, se eu voltar às estruturas
e abrir as informações do inimigo, criamos uma
chamada tipo de inimigo. Precisamos definir o que é e criar
uma enumeração Agora podemos clicar aqui para o tipo de inimigo e fazer uma sequência de caracteres. Agora, aqui dentro, podemos
definir se esse inimigo é um inimigo normal ou se esse
inimigo é um inimigo no jogo. Eu quero ter inimigos que sejam normais e inimigos
que sejam chefes. Está bem? Em vez de fazer uma
string e escrevê-la aqui, melhor criar uma enumeração.
Vamos ver o que é. Vamos para Blueprints. Clique com o botão direito, crie uma nova
pasta, chame-a de Oms. Vamos abri-lo aqui. Vamos clicar com o botão direito do mouse para
acessar Blueprints. E você tem essa chamada enumeração. Vá
em frente e clique nele. Vamos chamá-lo de
tipo inimigo. Vamos abri-lo. O Enumeration, muito simples, é apenas uma lista de qualquer coisa
que você queira fazer Pode ser uma lista de mantimentos,
por exemplo, tomates, por
exemplo, tomates ,
cola, ketch up, qualquer coisa Pode ser uma lista de qualquer coisa
adicionando um item da lista e você pode escrever qualquer coisa
dentro daqui. Também pode ser uma lista de armas que você está fazendo em um jogo de tiro em
primeira pessoa Pode ser AK 47, 41,
pode ser Deagle
e tudo o que você quiser fazer em uma enumeração é
simplesmente uma Nesse caso, quero
fazer uma lista do inimigo ou
do
tipo de inimigo para nossos inimigos. Temos inimigos normais. Se eu clicar aqui novamente e
tivermos inimigos chefes, você também poderá criar outros tipos se
tiver um jogo maior, se já tiver uma
ideia para o jogo. Por exemplo, você pode ter inimigos
lendários,
loops, lendários Você também pode ter
inimigos épicos e assim por diante. Então você pode ter mais
inimigos, mas para mim, estou apenas tendo inimigos
normais e inimigos chefes que podemos salvar. Agora vamos fechar essa lista. Agora, aqui eu posso
procurá-lo no tipo. Se eu clicar no tipo de inimigo, pesquisar pelo tipo de inimigo, esta é minha enumeração e
posso clicar nela
e pesquisar pelo tipo de inimigo,
esta é minha enumeração e
posso clicar nela
e salvar.
Agora temos
esse tipo de inimigo e, se você clicar
nos valores padrão, pode ver aqui que é melhor do
que uma string, porque agora você tem uma lista
da
qual pode selecionar, o que é muito legal. É muito melhor do que
digitar a coisa o tempo todo Agora podemos selecioná-lo
na lista se for um chefe
ou se for um chefe normal. Ok, nós realmente não precisamos definir
nada aqui, porque para cada inimigo, todos
eles terão seu
próprio conjunto de informações. Para tudo isso, não
precisamos
nos concentrar nos
valores padrão por enquanto. Vá em frente e salve tudo. E isso foi tudo para
as enumerações. Vamos passar para
a próxima lição.
29. 4.09 Introdução às tabelas de dados: Tudo bem, então
antes de continuarmos, quero apresentar a
vocês as tabelas de dados. Agora que criamos nossas estruturas, também precisamos
criar tabelas de dados. Se eu for para a pasta de
plantas, botão direito do mouse em criar uma nova pasta e chamo essa pasta de dados de tabelas Eu clico aqui, clique com o botão direito. Agora, as tabelas de dados
não estão nas plantas. Na verdade, está aqui embaixo nos diversos e você pode
encontrá-lo aqui, tabela de dados Você clica nele e seleciona de
qual estrutura está falando. Eu só quero criar
um para as informações do meu inimigo, também
precisamos criar
um para as informações do nível. Mas vamos criar um
para as informações do inimigo. Por enquanto, clique em.
Ok, vamos chamá-lo, por exemplo, de DT, minha tabela de dados de
informações. Minhas informações. E vamos abri-lo. Ok, então o que é uma tabela de dados? Uma tabela de dados é
aquela que realmente define
cada inimigo. Por exemplo, a animação inativa,
a animação de sucesso e assim por diante Então, criamos uma estrutura, mas cada inimigo tem seus próprios valores dessas
variáveis na tabela de dados. Eu posso clicar em D
aqui na linha. Você pode ver que esta é
a nova linha aqui. E você pode até mesmo alterar o nome da linha, por exemplo, o nome da linha, você
pode simplesmente chamá-la uma ou do que quiser. Por exemplo, para o
primeiro personagem, se eu for para personagens ativos, o primeiro será a noite. O que eu posso fazer, por
exemplo, é escrever selecionar a turma
da noite aqui. E eu posso selecionar qual tipo
de inimigo é a noite. É um inimigo normal. Quanto ele tem? Digamos que tenha 100% de saúde. Agora eu tenho que selecionar o
Edlin Imation para isso. Eu tenho que selecionar a animação
Hid para ela, e também tenho que selecionar a animação
da morte para ela Agora eu tenho todas
essas informações e posso clicar no sinal
de mais novamente. Para o próximo, quero, por exemplo, definir meu Or. Eu posso escrever que esse
cara se chama Orc. É a classe BP Or. Por exemplo, um chefe tem
500 pontos de vida e essas são todas as animações
para ele e assim por diante Portanto, cada inimigo tem seus próprios valores e você pode usá-los agora para
torná-lo muito mais rápido. Em vez de fazer
isso no motor, podemos fazer isso dentro
do Google Sheets. Dentro de uma planilha do Google, podemos fazer isso muito mais rápido. E também pessoas que não são desenvolvedoras de
jogos
também podem trabalhar lá, por exemplo, designers de jogos. Vamos passar para a
próxima lição e dar uma olhada em como podemos fazer
isso no Google Sheets.
30. 4.10 Tabelas de dados de informações de nível e de inimigos: Tudo bem, vamos abrir o Google
dentro do Google, logo dentro do seu drive. E você pode encontrá-lo
aqui no drive. Basta entrar no seu drive, clicar com o botão
direito do mouse em qualquer lugar, fazer
novas dobras ou qualquer outra coisa Mas crie um Google Sheets
aqui e crie um. Vou chamar isso de
uma mesa iluminada ou qualquer outra coisa. Você pode chamá-lo do
que quiser. Ok, aqui eu gosto de
clicar em Controle para selecionar tudo. Basta arrastar as colunas até aqui que eu tenha mais espaço
para trabalhar e controlar uma.
Selecione tudo e faça com
que seja outra fonte na qual Selecione tudo e faça eu
possa clicar aqui, linha
horizontal, meio,
esta e esta. Eu só gostaria de
começar com isso selecionar a parte superior
e clicar em Negrito. Agora estou pronto para
usar meu documento. Agora, tudo isso é opcional. Você realmente não
precisa fazer tudo isso. O que eu preciso fazer aqui primeiro
é escrever um documento de identidade. Precisamos de um ID porque
no Unreal Engine, você precisa ter um ID Você realmente não pode, este
é o ID, o nome de Ron, você realmente não pode usar esta planilha do Google. Se
você não tiver um documento de identidade. Isso é necessário. Precisamos escrever todas as variáveis
da nossa estrutura. Se eu voltar e
abrir as informações do meu inimigo, é
isso que preciso escrever. Preciso escrever o nome, tipo de
inimigo. Vamos voltar aqui. Tipo de inimigo, você tem
que escrevê-lo especificamente assim. Você não pode escrever isso de forma diferente. Você tem que
escrevê-lo especificamente como você
o escreveu. Dentro daqui. Ocioso, bata nela. Isso é errado, saúde ociosa
e a última é a morte. OK. Agora temos isso. Agora podemos definir as
informações aqui embaixo. O primeiro que eu tenho, eu só pensei isso em minha mente. O primeiro que eu quero
escrever aqui é o Or. O segundo é o ladino. Agora, você pode ter esses inimigos em qualquer sequência que desejar. Você não precisa ter
a sequência como eu, mas eu quero
tê-los assim ou Sam, nós temos o Mago. Então temos o Skeleton. Então temos o Skeleton, Roe, Skeleton Warrior como
este e Skeleton Mag Então temos o
Roe and the Night. Temos 11 personagens que
estão todos aqui. Você não precisa tê-lo
na mesma sequência. Mas pensei que seria uma sequência, talvez para o ID. Eu apenas copio e colo isso aqui assim porque
não é muito importante. O ID é simplesmente que ele
precisa estar lá para funcionar. Precisamos apenas
copiar e colar qualquer que seja o nome da classe. Temos que definir
o que é a classe. Agora, como obtemos essa classe base
inimiga? Porque precisamos,
você clica nisso. Novamente, temos que
definir essa classe aqui. O que você pode fazer é usar essa
tabela de dados de informações do inimigo aqui. Basta criar uma nova linha aqui. E o que você pode fazer
é clicar, o primeiro é o Orc Para mim, posso selecionar o Orc, posso escrever, clicar aqui e
escrever uma cópia. Ou clique em Copiar. Agora posso abrir
minha tabela de dados e clicar no controle V no meu
teclado para colar. E aqui está. Vou apenas torná-lo um pouco maior para que você possa ver assim. Então, agora nós o temos aqui
dentro. Agora, o que você pode fazer é o
próximo é o Or Roe. Posso selecionar a Roe novamente, clicar com o botão
direito do mouse em copiar ou
o que você pode fazer é pressionar a tecla Shift e clicar com
o botão direito do mouse para copiá-la. Então eu posso colar
aqui, sem mais nem menos. Ou o que você
pode fazer é simplesmente copiar este. Cole aqui
e mude isso. Ou para Shaman, para este também lembre-se de
mudar aqui ou Shaman, você pode fazer as duas coisas Agora, é muito mais rápido selecionar Aria, por exemplo,
segurar a selecionar Aria, por exemplo, tecla Shift e clicar com o botão direito do mouse para copiar o controle V e colar aqui. E faça isso para o mago
também, assim e assim por diante. Eu só vou
fazer isso por eles. Você pode fazer tudo isso
sozinho enquanto pratica. Agora, para o tipo de inimigo, temos inimigos normais
ou de ônibus. Isso é normal e
vou copiar e colar isso aqui. E acho que o feiticeiro, podemos fazer um chefe assim. Eles podem selecionar quais são inimigos
normais e os
inimigos chefes lhes dão saúde. Para a saúde, eu
gostaria de fazer com que uma fórmula escrita,
por exemplo, fosse igual. Vamos começar com
100 para este. Na verdade, basta escrever
100 para este. Não precisamos de uma fórmula
para a primeira, mas se a segunda for igual essa, você pode clicar aqui Multiplicado por 1,2, ele calculará isso automaticamente E eu posso clicar
nele e
arrastá-lo até o final. Posso
selecioná-lo aqui e clicar neste
botão para remover
as casas decimais Assim, você
também pode aumentar a saúde. Você pode multiplicar
por 1,5, por exemplo, você pode arrastar para baixo aqui, temos muito mais
saúde, assim Por exemplo, para a
animação, como antes, para a máquina Adline, você pode selecionar a máquina de
contorno Ou vamos realmente fazer
isso aqui em vez disso,
para o Adline Vamos ver, o
primeiro foi o, se eu fechar isso e
encontrar aquele,
você pode clicar com o botão direito do mouse e
copiar a referência. Nesta referência de cópia, eu
volto e clico no controle
V e colo aqui. Para esses,
talvez você possa
torná-los um pouco maiores assim. Aqui está. Agora, para ver a animação de
sucesso novamente, posso clicar com o botão direito do mouse na minha referência de
sucesso e copiar. Posso colá-lo aqui
para a morte,
posso clicar com o botão direito do mouse em
copiar referência. Então eu posso colá-lo aqui. Agora eu vou mostrar
para você também aqui. E eu vou fazer tudo
isso sozinho. Aqui, Rogue, posso
clicar em copiar referências. Clique com o botão direito do mouse em, clique em
um, cole aqui. E clique com o botão direito no Rogue. Copie a referência e
cole-a na última. É assim que você adiciona
tudo isso e novamente, ou a classe vai até
a tabela de dados e
copia a classe. Ou você pode basicamente mudar essa parte
aqui para o nome
do personagem e definir
se ele é um inimigo normal ou chefe. Tudo bem, então aqui eu
terminei minha tabela de dados. Todas as informações
estão aqui, aqui embaixo. Eu só gostaria de dar um nome a ele. Vamos chamá-lo de DT me info. Vamos também criar uma nova tabela de
dados. Eu clico no sinal positivo
aqui embaixo nas planilhas e faço uma nova tabela de dados. Na verdade, vamos
deletar esse. Deixe-me
duplicá-lo para que eu não
precise formatá-lo novamente
com a fonte e assim por diante Clique com o botão direito,
este é duplicado e vamos dar uma informação de nível de DT Para isso, vou
deletar tudo, controlar um clique em deletar. Para este, precisamos do ID, também
precisamos do nível. Lembre-se de que você
sempre pode voltar à sua estrutura e
abrir as informações do nível. Precisamos do nível
e do nome do inimigo. Se abrirmos aqui, precisamos
do nível e do nome do inimigo. Eu só vou
torná-lo menor aqui, não preciso de todo esse espaço. E tornando-o menor dessa
forma também para o ID. Agora vou copiar e
colar os níveis aqui. Nível 1234, temos 11 inimigos. Vou clicar e
arrastar isso para baixo até 11. Vou apenas
copiar e colar isso aqui para o nome do inimigo. Basicamente, podemos
acessar as informações do inimigo, copiar tudo isso e colar aqui também. Temos que encontrar no nível um a extensão no nível
dois, a geração do rolo. Quando o E aparece, temos que encontrar a saúde
do bandido, o tipo de inimigo destruído, a animação de Adle e
todas essas Aqui, estamos usando isso para escolher qual inimigo
gerar em um nível Quando o inimigo aparece, temos as informações sobre esse inimigo
que podemos usar Vá em frente e simplesmente o salvamento automático não
pode realmente salvar aqui. Vamos continuar e
clicar em Download. E
faça o download como um arquivo CSV, baixe as informações do inimigo e acesse também
as informações do nível Clique no arquivo e
baixe-o como um arquivo CSV. Agora, quando você abre sua pasta de downloads,
aqui estão elas. Vou renomeá-los, chama-se apenas T Level Info e também renomear este
para T Enemy Info Antes de fazermos isso,
certifique-se de que dentro do motor, se eu voltar e
fechar tudo isso,
certifique-se de que nas tabelas de
dados você tenha as informações
do inimigo e que elas estejam vazias. Vou deletar
esse. Clique em salvar. Também preciso criar um para
as informações do nível. Clique com o botão direito. Vá para a tabela de dados diversos,
selecione as informações do nível, clique em OK e
chame-as de Informações clique em OK e
chame-as Eu os tenho, e o que
você precisa fazer é clicar e arrastar os dois
até aqui e soltá-los, e ele deve
importá-los com sucesso. Agora, se você criou uma era um dos
nomes, por exemplo, se você fez uma era o nome do inimigo
aqui, por exemplo, digamos que você escreveu o nome do
inimigo sem um E. Isso
lhe dirá que há uma
era na sua tabela de dados. E não se preocupe, você pode
basicamente corrigi-lo aqui, baixá-lo novamente e simplesmente clicar e
arrastá-lo até aqui. Agora, ao abrir a tabela de dados de informações do
inimigo, você tem todas as informações sobre cada personagem, quanta saúde eles têm, o tipo de inimigo e todas as
suas animações aqui também
31. 4.11 Introdução às bibliotecas: Tudo bem, agora
terminamos as tabelas de dados. E vamos dar uma
olhada nas bibliotecas. Esta é a etapa final antes de terminarmos tudo
e gerarmos o inimigo Então, vamos dar uma olhada agora
e criar uma nova pasta. Vamos chamar isso de bibliotecas. Se eu conseguir soletrar bibliotecas
novamente assim, vamos entrar nessa pasta agora Vamos clicar com o botão direito do mouse
e acessar o Blueprint. E você vê essa chamada funções
de blueprint
e biblioteca de macros de blueprint Agora estamos trabalhando
com funções. Vamos apenas criar uma biblioteca de funções de
blueprint. E vou
chamá-la de biblioteca de funções BP, porque geralmente
tenho apenas uma no meu jogo Então, vou
chamá-la de biblioteca de funções. Agora, abra-o dentro
desta biblioteca. Você pode ver que basicamente, como o nome diz,
é uma biblioteca de funções. Assim, você pode criar muitas
funções aqui. A vantagem de
uma biblioteca de funções são as funções
que você cria aqui. Você pode usá-lo globalmente
em todos os projetos. Vamos criar um para nos divertir. Por exemplo, vamos
chamar, por exemplo, função
get health test. Não vamos usá-lo, mas se eu clicar em Compilar Agora, se eu minimizar isso e
abrir outro plano, por exemplo, vamos
abrir o modo de jogo Dentro daqui, eu posso escrever, clicar e dizer Get Health. Aqui você pode ver que é
da minha biblioteca de funções. Não precisamos criar
interfaces de blueprint e qualquer outra coisa. Podemos simplesmente escrever,
clicar em Obter saúde, podemos usar essa função. Agora, você pode ficar tentado a criar todas as suas
funções aqui Porque talvez você esteja pensando: por que estou criando interfaces de
blueprint
e as chamando Por que eu não os
crio dentro de uma biblioteca de funções? Isso ocorre porque o jogo
ficará mais lento. Conforme pesquisei,
seu jogo ficará mais lento
se sua
biblioteca de funções for muito grande. Use-o sempre que fizer sentido. Não basta adicionar funções aqui, porque se for muito grande, seu jogo também ficará
um pouco mais lento Basta usá-lo sempre
que fizer sentido. O que eu
costumo fazer é usá-lo sempre que faço tabelas de dados, porque preciso usá-lo em muitos projetos Talvez você possa pensar
nisso assim. Quando você tem uma função
que precisa ser usada em quase
todos os esquemas. Por exemplo, obter
as informações dos inimigos aqui. Então, é melhor
criá-lo dentro de
uma biblioteca de funções para que você possa acessá-lo
facilmente em
cada blueprint Eu geralmente o uso sempre
que crio estruturas
e tabelas de dados, e preciso obter essas informações,
eu
as crio dentro
das bibliotecas de funções. Vamos continuar e excluir isso. Vamos compilar e
salvar tudo. E agora estamos prontos para
passar para a próxima lição.
32. 4.12 Criando as funções de biblioteca: Vamos continuar e criar
as bibliotecas de funções. Vamos clicar em Anúncio e criar
uma função aqui. O primeiro que vamos criar é para as informações do inimigo. Para esta, vou dizer na verdade, antes que eu esqueça novamente, deixe-me clicar
aqui na ferramenta depuração que é refletora,
torne-a Podemos ver melhor
assim aqui dentro. Como vou
chamá-lo, vou
chamá-lo de obter informações sobre o inimigo. E eu vou criar
uma nova também, uma nova função chamada get level
info. Precisamos desses dois. Vamos começar com o primeiro. O que precisamos fazer é
clicar com o botão direito do mouse e dizer pegue uma mesa. Você vê esse aqui embaixo. Obtenha a linha da tabela de dados. Essa é a função que
estamos tentando usar. Estamos tentando obter uma linha da tabela de dados a partir de um nome aqui para que
possamos usar as informações. Vamos
criá-lo e será muito melhor entendê-lo
quando terminarmos. Agora vamos ver a tabela de dados, estamos falando sobre essa, neste caso, são
as informações do inimigo. Vamos selecionar as
informações de NM para o nome dessa linha. Agora, antes de conectá-lo aqui, geralmente
gosto de clicar com o botão direito do mouse e dizer: na verdade, vamos
adicionar uma string primeiro aqui. Adicionando uma entrada e uma string.
Vá em frente e faça isso. Aqui, precisamos inserir o nome
do inimigo. Porque se você voltar
para sua tabela de dados, esta, esses são
os nomes dos inimigos. Precisamos inserir o nome
de um inimigo. A partir desse nome, ele vai
extrair essa informação,
essa linha aqui. Vamos voltar daqui. O que eu gosto
de fazer antes de conectá-lo é usar a
função de substituição . Com uma função de
substituição, o que isso faz está
aqui no
formulário, você escreverá
um espaço como este. Você tem um pequeno espaço aqui, como você pode ver nos dois. Você não faz nada. Você tem um espaço aqui em cima
e não tem nada aqui. O que isso faz é levar esse nome aqui
se você tiver um espaço,
porque, como você pode
ver no nome da linha, você não pode ter um espaço. Nal Engine não
aceitará que você tenha um espaço no nome da linha.
E isso é o que é. Esse é o nome da linha. Você precisa
extrair informações se
der um nome de inimigo e
o nome do inimigo tiver um espaço posteriormente. Vou
mostrar como fazer isso mais tarde. Se tiver um espaço
, não vai ler, vai ceder O que eu gosto de fazer
é o nome do inimigo, gostaria de remover o espaço
antes de fazer qualquer coisa. Então eu posso simplesmente arrastar
isso para aqui e ele converterá essa string
em uma variável de nome. Podemos conectar isso,
então podemos arrastar aqui e dizer return
porque precisamos um nó de retorno para essa função. Para o nó de retorno, ele
produzirá esses dados de informações do inimigo. Vamos chamar isso de
informação do inimigo e compilar. E agora terminamos
com este. Isso é o que parece.
Pegamos o nome do inimigo e extraímos essa informação. Por exemplo, digamos que o nome do
inimigo seja Skeleton Rogue, que removerá o espaço para que ele realmente
possa ser
lido a partir Em seguida, ele obterá todas
essas informações para você e as conectará
aqui para que você possa usá-las. Vamos fazer isso também para obter informações sobre o
nível. Agora, para obter as informações do nível, você pode fazer isso
sozinho se quiser praticar mais. Vamos fazer isso juntos se
você precisar de mais prática. Ok, aqui, vamos clicar com o botão direito do mouse, obter uma linha da tabela apenas
para as informações do nível. Se você voltar às informações do nível, as
informações do nível serão números. Precisamos de um número
em vez de uma string. Por aqui eu vou dizer mais. E vamos pegar um número inteiro aqui. Para o número inteiro,
digamos que um nível. Vamos conectá-lo. Agora, para este,
não precisamos realmente substituir tudo isso
porque é apenas um número. E podemos simplesmente arrastar
isso para o nome. Agora, ele não o converte
automaticamente para nós, porque ele
converte apenas a string Vamos fazer duas cordas e
selecionar isso. E então vá
em frente e arraste-o para dentro e ele o
converterá para você.
Novamente, crie um nó de retorno. Antes de fazermos qualquer coisa,
você pode ver que é cinza. Isso ocorre porque não
selecionamos nada aqui. Vamos selecionar as informações do nível e inseri-las aqui. E vamos chamar isso de informação de nível. Vamos compilar e
salvar tudo. Agora, se tentarmos
usá-los no modo de jogo, por exemplo, vamos
excluir get health. Este era antigo para as informações do inimigo que podemos
escrever para obter informações sobre o inimigo. E aqui você pode ver isso. Agora temos essa
função que
podemos usar e temos
as informações do inimigo. Basicamente, você pode arrastar
a partir daqui e dizer pausa. Você está dividindo essa
estrutura em vários pinos, que você pode ver aqui Essas são todas as variáveis que você criou dentro da
sua estrutura aqui. Essas são todas as
variáveis que você criou agora, agora elas podem ser usadas por você. Você pode ter o
nome do inimigo, a classe, o tipo de inimigo, a saúde do
inimigo e assim por diante. Aqui, basicamente, você está
obtendo informações, não precisa desses pinos de
execução Como você pode ver, algumas
das funções são verdes. Eles não são azuis. Eles são verdes. Isso ocorre porque eles estão basicamente
obtendo informações. Este está fazendo com que os
atores se transformem. Se você clicar aqui, você pode ver a Acta mais próxima Na verdade, não está definindo
nenhuma informação
, está apenas obtendo
informações para você. Quando você obtém informações, não precisa desses pinos
de execução Vamos voltar para a biblioteca de
funções. Vamos clicar nas informações do inimigo e definir essa como pura. Vamos clicar também nas informações do nível e configurá-las
como puras. Agora vamos voltar,
e aqui você pode ver como transformamos em
uma função verde. Basicamente, estamos apenas
obtendo informações. Estamos recebendo as informações do inimigo e elas precisam do nome do inimigo. Então, quando inserimos o nome do
inimigo, por exemplo, mago
esqueleto, como você pode ver, eu escrevo um espaço aqui Eu posso escrevê-lo normalmente, Skeleton Mage aqui dentro Isso removerá o espaço automaticamente, pois
adicionamos um substituto. Se você simplesmente escrever assim sem um espaço, isso realmente não
importa. Ele não encontra nenhum espaço. Isso simplesmente vai continuar. É uma preferência,
mas eu gostaria de
escrever os nomes totalmente
assim normalmente. Então você pode escrever a partir daqui, escrever um intervalo e agora você tem as
informações sobre esses inimigos. É assim que você o usa. A mesma coisa com
as informações do nível. Se você disser obter informações de nível, é você que insere um
nível, por exemplo, nível três, e quebra
essas informações. E agora você sabe que, a partir do nível três, você sabe qual
inimigo vai aparecer Porque em sua
tabela de dados no nível três, você disse que o
autômano deveria aparecer Agora você sabe que o
auctoman deve aparecer. E você pode basicamente
conectá-lo aqui, agora você pode ver como conectá-los. Mas, por enquanto, vamos deletar isso. Vamos compilar e
continuar com a próxima lição.
33. 4.13 Adicionando os nomes dos inimigos: Tudo bem, agora precisamos
adicionar os nomes dos inimigos,
porque precisamos desses nomes para extrair informações da tabela de dados de informações
do inimigo dentro das bibliotecas
que acabamos de criar aqui. Mas precisamos inserir
os nomes dos inimigos, precisamos adicionar os
nomes de cada inimigo. A maneira de fazer isso
é voltando para os inimigos e aqui
na base inimiga. Vamos abrir isso. Abra o
editor de plantas completo aqui. Vamos criar uma variável
chamada nome, por exemplo, ou você pode chamá-la de
nome do inimigo. Isso é bom. Eu vou fazer disso uma
corda. Vá em frente e compile E lembre-se, quando você cria uma variável dentro
da base inimiga, todos
eles são filhos
da base inimiga. Quando você cria uma
variável dentro daqui, elas também serão
criadas para todas elas. Vamos abrir o primeiro. Abra o editor de
blueprint completo e, dentro dos padrões da
classe Vamos ver aqui os padrões das classes. Se rolarmos até aqui, você poderá ver a
variável de nome que criamos. Agora você pode dar um nome a esse
personagem. Por exemplo, vamos
ligar para isso uma noite. Agora vamos abrir o próximo. É o Orc. Em vez de abrir o editor de
plantas completo, você também pode fazer isso
aqui embaixo, mostrando
o painel de detalhes Este é o Orc, o
próximo é o Ladino, o próximo é
o Xamã, e então temos Então temos o feitiço de ladino. Correto. Agora, se você
soletrar de forma errada, não será possível extrair as informações da tabela
de dados Às vezes, quando algo não
está funcionando
, não está extraindo informações Apenas certifique-se de ter
escrito esse nome corretamente. Como esse nome
tem
que coincidir com o que você escreveu aqui, ele extrairá essas
informações daqui. Agora, novamente, como eu
disse antes, podemos criar um espaço porque
substituímos
isso, não importa se
você criar um espaço, ele removerá
o espaço para você. É por isso que adicionei
o substituto aqui. Este é um mago esqueleto. Eu volto para os inimigos e abro o
próximo, Skeleton Rogue Então temos o
esqueleto assim. Então temos o feiticeiro. Agora temos todos
eles
e clicamos em Compilar
em cada um deles. Então você terminou aqui. Agora todos eles têm nomes. forma como funciona agora
é que vai
levar o nome do inimigo. Por exemplo, esse cara
aqui é chamado de guerreiro. Isso é um guerreiro,
vai levar o
nome aqui, um guerreiro E ele pegará
essa informação e então saberá quais informações
o guerreiro tem É por isso que adicionamos o nome. Nós vamos
usá-lo. Vamos encerrar
tudo e
passar para a próxima lição.
34. 4.14 Gerando o inimigo: Agora vamos em frente
e criemos o inimigo. Vamos voltar ao modo de jogo. Foi aqui que
paramos da última vez. Lembre-se de que obtivemos a transformação do
ator para o ponto de desova Basicamente, sabemos onde
gerar o inimigo. Agora vamos
dizer qual inimigo criar
em qual nível Agora temos essas informações
porque criamos as bibliotecas de
funções
agora dentro daqui, vamos clicar com o botão direito do mouse e
digamos que, na verdade , precisamos do nível atual e não o temos como variável. Vou criá-lo
no modo de jogo porque
faz mais sentido. Lembre-se de que o modo de jogo controla as regras do jogo. Ele sabe qual é o nível
atual. Vamos criar uma nova variável. É um número inteiro porque
é apenas um número. Vamos chamá-lo de nível atual. Vamos compilar porque precisamos
ver o valor padrão. Vamos compilar para
o valor padrão. Começamos no nível um. Vou mudar
isso para o nível um. Vamos abordar isso aqui. OK.
Queremos trabalhar com isso para obter informações sobre
o inimigo, porque
precisamos da classe inimiga aqui. E conecte T e diga break. Agora, para a aula,
podemos conectá-la aqui. Se você não quiser ver
todos esses outros pinos, clique neles e
diga ocultar pinos desconectados Agora, para o nome do inimigo, lembre-se de que temos
a outra função chamada get level info. A partir daqui, você pode
ver qual inimigo deve aparecer em qual nível A partir daqui, novamente,
você pode dizer pausa. Agora você pode usar esse nome de inimigo. Temos que dar a ele
o nível atual. Agora está tudo bem. Podemos clicar aqui,
ocultar pinos não conectados e arrastar isso Você pode selecionar todos
eles e pressionar Q no teclado para
endireitá-los assim. Ok, vamos colocar isso aqui. E coloque isso aqui.
Agora vai funcionar. Como você pode ver, temos
o nível atual, estamos obtendo as
informações para o nível um. Ele entrará na tabela de dados,
nas informações do nível, examinará o nível um
e depois saberá que é o Orc que ele
produzirá e o nome do inimigo E isso será
conectado às informações do inimigo que então extrai informações
das informações do inimigo Ou agora temos todas as informações sobre
o Orc, incluindo
o último a ser gerado Porque lembre-se de que, na planilha
do Google, dissemos que
a classe que ela precisa
gerar com ela é BP Isso vai gerar o projeto
do BP Orc. E aqui estamos
gerando o inimigo. Agora, se eu clicar duas vezes aqui, ele me levará
ao Player Controller onde fizemos esse evento. Isso gerará o Orc e também gerará o
Or no ponto de desova que criamos. Vamos compilar
e salvar tudo. Vamos clicar em Jogar.
E agora você pode ver que é o Or, podemos testar isso. Se eu clicar no nível atual, alterei o nível atual para, por exemplo, o nível três. No nível três, ele
deve gerar o xamã. Se eu compilar,
clicar e jogar, você verá que é o Xamã
que ele está Isso está funcionando corretamente. Agora, para torná-lo um pouco mais limpo, o que podemos fazer é pegar
tudo isso e eu clicar com o botão
direito do mouse
e voltar para uma função. Vou
criar uma função isso apenas para
torná-la mais limpa. Vamos chamar isso de inimigo
para desovar ou nível atual. Vamos transformá-la em uma
função pura porque lembre-se de que estamos apenas obtendo informações
para uma função pura. Vamos renomear, vamos clicar
duas vezes aqui. Eu vou mover
isso para baixo assim. Agora, para o
primeiro, é o inimigo. Então, estamos descobrindo
qual inimigo gerar. A segunda aqui é a transformação de spawn,
assim como esta Vamos compilar e
salvar tudo. Agora, aqui fora, é
muito mais limpo e não temos
essa linha aqui. Tudo está indo bem. Ok, é assim que
você gera inimigos. Vamos clicar no nível
atual e
redefini-lo para um padrão. Então, agora está funcionando. E vamos para a próxima lição.
35. 5.01 Criando a interface do nome do inimigo: Agora que os inimigos estão
aparecendo corretamente no mapa, vamos continuar
trabalhando com a interface do usuário Ainda não temos uma pasta. Se eu for para a pasta de conteúdo e clicar com o botão direito do mouse e
criar uma nova pasta, vamos chamar essa interface de usuário
dentro dessa pasta. Vamos clicar com o botão direito do mouse e acessar a Interface
do usuário e criar
um modelo de widget Agora aqui, basta ir em frente e
selecionar o widget do usuário aqui. Vamos chamar esse nome de inimigo. Nesta lição, vamos transformar o nome do inimigo uma interface de usuário muito simples.
Aqui está. Dentro de uma planta ampla, você tem a janela de visualização na
qual pode clicar, clicar com o botão
direito do mouse, pressionar o botão direito do mouse e clicar com a caneta, quase como E aqui você pode
ver o que você adicionou aos seus elementos de interface do usuário. Aqui estão todos os
elementos que você pode adicionar. Além disso, você tem um
painel de detalhes como aqui, onde você clica em coisas,
por exemplo, o texto, e ele mostra
detalhes sobre a coisa dentro de um esquema de widget Você tem o designer
onde você cria a interface do usuário. E você tem o gráfico onde você programa coisas na interface do usuário. Por exemplo, o que acontece
quando você pressiona o botão? Se eu voltar para o
designer agora, vamos apenas criar o texto. É só o nome do inimigo, então é só um texto. Mas antes de projetarmos,
precisamos adicionar uma tela. Antes de fazer qualquer coisa na interface do usuário, no Unreal Engine, você
precisa adicionar um painel de tela Clique aqui, arraste-o e solte-o aqui em cima Agora você tem essa tela. Agora podemos adicionar coisas a ele. Por exemplo, nesse caso, só
precisaremos de um texto se você apenas
pesquisar por texto. Ou você também pode simplesmente ir até
aqui, você pode encontrá-lo aqui. Esses são os elementos mais
comuns aqui. Você também pode simplesmente clicar
e ver o que há. Se quiser, apenas para praticar, você sempre pode clicar e
arrastar até aqui. Você pode ver o que ele faz. Você pode tentar jogar com
algumas configurações, não faz mal. Quando terminar o treinamento, basta clicar aqui e clicar em Excluir no teclado
e ele será excluído. Temos o painel de tela, vamos adicionar um pouco de
texto em cima dele. Você pode
adicioná-lo em cima dele aqui ou pode
adicioná-lo aqui. Isso é a mesma coisa.
Normalmente, prefiro apenas arrastá-lo
e soltá-lo aqui,
mas isso realmente não
importa por enquanto. Para este texto, realmente não
precisamos de todo esse espaço. O que vou fazer é clicar em Tela cheia. E então
desejou que só
preenchesse esse texto. Agora você pode ver que
está descentralizado. Você pode ver que isso ocorre porque
temos algo chamado ponto
de ancoragem ancorado E o que isso significa,
o Anchor Point, o que é, é digamos que esta é a sua janela de jogo,
você está jogando o jogo Agora, quando você
redimensiona a janela do jogo, o texto não ficará aqui
embaixo. Era sua intenção que o texto
ficasse aqui embaixo. Quando você redimensiona a janela, o texto se move
em direção a esse ponto de ancoragem Se sua intenção é que o texto fique
aqui embaixo na tela
, você está fazendo isso errado,
pois ele se moverá lentamente nessa direção
quando você redimensionar a tela É muito importante definir os pontos de
ancoragem corretamente. Agora, para esse ponto de ancoragem, eu só queria
centralizá-lo no texto Vou clicar no
centro da minha tela.
Essa é a sua tela. Vou centralizá-lo na
minha tela e vou
escrever 00 na posição
de x e y. Agora, quando você escreve 00, o ponto de ancoragem se encaixa
no canto superior esquerdo Para corrigir isso, você pode
brincar com o alinhamento. Aqui você pode ver 0,5 no meio e
um no outro lado. Geralmente é 0-1
no alinhamento. A mesma coisa para o Y. 0,5 está no meio e um
está do outro lado, 0,5 e 0,5 Isso o
adicionará ao sensor Agora você pode ver meu texto, e é assim que eu
gosto de tê-lo. Ok, clique em Compilar
e salve tudo. Agora vamos seguir em frente
e estilizar isso. Mas antes de fazermos isso, ao projetar a interface do usuário dentro
do Neural Engine, você precisa garantir que ela
fique bem em laptops.
Ela fica bem em monitores Noble, monitores 24 polegadas e monitores de
27 polegadas. Também precisa, por exemplo, ficar bem no meu monitor de quatro K. Se você não o projetar bem no meu monitor de quatro K,
pode ser assim. E vou me
divertir jogando seu jogo. Como podemos garantir
que a interface permaneça boa em todas as telas?
A maneira de fazer isso é clicando aqui no tamanho
da tela. Eu costumo criar meus jogos para
um notebook genérico de 14 polegadas. Vá em frente e clique aqui, e é
assim que ficará. Agora, preste
atenção no zoom
aqui em cima para que você não tenha
ampliado, mais oito Se eu diminuir o zoom, agora você pode
ver que também é menos dez. Se você apenas ampliar até 11, isso é o que realmente
parece em um laptop. Qual é a aparência
dos meus quatro monitores? Bem, se você
clicar aqui neste botão de configurações, poderá ver o
quanto ele escala. No momento, estamos
projetando-o para um laptop de 14 polegadas, mas na minha tela, em um monitor de quatro K, ele escalará a
interface do usuário em 3,8 vezes Será escalado
3,8 vezes. Agora é demais. Vamos reduzir isso. E eu posso te mostrar que se eu clicar
aqui na escala oito, você pode clicar nela e então
você pode reduzi-la aqui. Normalmente acho que é
bom no meu monitor de quatro K. Se eu configurá-lo para 2,5, ele
escalará bem em todas as telas. Não ficará
ruim na minha tela, porque para um laptop ou
meu monitor de quatro K, ele escalará 1,6 vezes e ficará
bem na minha tela. Isso é o que eu achei
que vai ficar bem. Normalmente, três é muito grande. Do meu monitor de quatro K, os EUA são muito grandes. 2.5 é muito bom. Ok, agora está dimensionado
corretamente em todas as telas. Vamos
compilar e salvar. Agora vamos clicar
no texto aqui. E vamos
estilizá-lo um pouco, certo? A forma como o
estilizamos é que temos que selecionar um fundo. Você pode ver
que agora não temos fundos, temos o
fundo normal e precisamos baixar um fundo
personalizado para estilizar Então, vamos continuar na próxima lição e
estilizar esse texto Podemos baixar um fundo personalizado
e adicioná-lo ao motor real.
36. 5.02 Adicionando uma fonte personalizada: Tudo bem. Então, se você for ao Google e
pesquisar fundos do Google, verá este site chamado Funds.google.com.
E aqui,
você pode baixar
o fundo que quiser Agora, você também pode simplesmente
pesquisar fundos e até mesmo baixar fundos
gratuitos.
Há também um site chamado
The Fund, The Fund. Esse também é bom. Tem muitos fundos dos quais
você pode fazer o download. Também existem os pagos. Agora eu amo os fundos do Google, eles têm muitos estilos legais. A partir daqui, encontrei
um chamado Playpen. Pesquise por Playpen, e este
é o que eu quero usar. Agora você pode escolher
o fundo que quiser, não precisa ser
o mesmo que eu. E você sempre pode
testar o fundo. Se você escrever algo
aqui, por exemplo, podemos dizer, Skeleton
Mage para o nosso jogo E você pode reduzi-lo para
ver como ficaria se fosse assim e
estivesse em negrito e assim por diante. Então, eu gosto desse fundo. Vou clicar em Baixar e vou
abri-lo aqui, aqui está. Agora, para esse fundo, eu
tenho que extraí-lo. Vou pegar essa pasta estática e
extraí-la para minha pasta de downloads. E vou entrar na
minha pasta Downloads clicar duas vezes nela. Esse, esse que eu
extraí aqui, eu
tenho todos os fundos Agora eu não vou
precisar do fino. Normalmente, eles são
muito finos dentro de motor
vulnerável
para jogos que eu gosto, talvez também tenham o
normal. Meio ousado, extra ousado,
ousado . É isso mesmo. Se eu voltar para o meu motor, eu minimizo isso aqui, e eu minimizo isso também. Agora, aqui, vamos
minimizar isso. Vamos abrir minha pasta. Agora, posso importar tudo
isso na pasta UI. Quero que você crie uma nova pasta e vou chamá-la de fundos. Se eu conseguir soletrar dentro
dessa pasta de fundos, vou clicar e arrastar
tudo isso até aqui Lembre-se de que você precisa primeiro
extrair os fundos. Antes de fazer isso como fizemos, você
gostaria de criar
um novo ativo de fundo? Eu só vou dizer que se aplica a todos os DS. E aqui está. Muito fácil de importar fundos. Vá em frente e salve tudo. Agora, se você voltar ao nome do
inimigo, clicamos nele. Agora podemos escolher esse fundo
personalizado para ele. Agora, para este,
acho que vou usar esse chamado Extra
Bolt Like this aqui Isso parece bom para mim. Aqui. Como justificativa, vou centralizá-la. Eu também vou clicar
neste texto aqui. Eu vou dizer
tamanho do conteúdo. Só vai dimensionar o tamanho do
texto. Não preciso me preocupar com
o tamanho do X e do Y. S. Você precisa
testá-lo em seu jogo Mas acho que, para mim,
vou
usar 28. E no tamanho da frente, também
podemos dar uma cor. Se você clicar aqui na cor e
na opacidade é uma cor.
Vou apenas dar uma cor levemente vermelha,
algo assim. E clicando em OK, vou
dar um esboço. Se eu clicar aqui no
esboço, posso escrever um. Por exemplo, você pode ver que
há um esboço no texto. Acho que vou escolher dois porque você
quase não consegue ver quando
está
com o zoom de Também vou
mudar a cor para que ela simplesmente copie a cor
da primeira. Na verdade, o que você
pode fazer segurar a tecla Shift e
clicar com o botão direito do mouse para copiar a tecla Shift e
clicar com o botão esquerdo para colá-la aqui. Eu vou fazer disso Daca e acho que isso é bom para mim. Agora, um
efeito muito legal que você pode fazer no Oral Engine está aqui
no deslocamento de sombras Se você copiar a mesma
cor, então eu copio isso, clique na
cor da sombra e eu também posso colá-la aqui na cor da sombra,
aqui no offset Vou escrever
zero no X. Vamos escrever algo
como três no Y. Você pode ver um efeito muito legal, você tem o texto e
depois tem um
fundo marrom frio por trás dele Sempre podemos testá-lo no jogo
para ver como é. Às vezes, eu realmente
espero
projetá-lo até tê-lo no jogo para que você possa ver como
fica no jogo. Mas, por enquanto, acho que
isso é muito bom. Só para ter certeza de que o texto não está bloqueando
nada no jogo. Você precisa descer e,
na visibilidade que
precisa definir, não clicar em testável O que isso significa é que se
você tentar clicar com mouse em algo o
mouse em algo
atrás do texto,
vai funcionar. Se você o tiver definido como visível
, o texto bloqueará os cliques do
mouse
e, se houver algo por trás
do texto, você
não poderá clicar nele Agora, evitamos
o bloqueio aqui. Vá em frente e clique em
Arquivo e salve tudo. E aqui está o nome do inimigo. Agora estamos prontos para
adicioná-lo na próxima lição.
37. 5.03 Adicionando a interface do nome do inimigo: Agora, vamos adicionar o nome do inimigo. Vamos ver as plantas. E vamos abrir os inimigos. E temos que adicioná-lo
na base inimiga. Lembre-se de que a base inimiga é a mãe de todas
essas plantas infantis Vamos para uma base inimiga. E se o adicionarmos aqui, ele
será adicionado a todos eles. Vou clicar em Adicionar
nos componentes. E se você pesquisar por
widget, aqui está. Vá em frente e adicione o
widget a esse inimigo. Podemos simplesmente chamá-lo de nome do inimigo. Talvez eu
realmente chame isso de widgets com nomes de
inimigos. Então, nós sabemos. E vamos em frente
e salve tudo. Agora, para esse widget inimigo, vá para a janela de exibição E agora também precisamos empurrá-lo um pouco para baixo
para que fique abaixo do inimigo O nome está abaixo do inimigo. Agora, para o widget inimigo
no painel de detalhes, vou configurá-lo na tela O texto pode ser mundo ou tela. Na verdade, vou
te mostrar um exemplo aqui, Sophie, basta clicar na classe do widget
e selecionar nosso
widget que acabamos de criar, que será o nome do inimigo.
Aqui está. Vá em frente e compile. Na verdade, vou
te mostrar como é. Só para você ver, se eu puxar o Roe, escrevo zero no Y. Aqui está o nome do inimigo Você pode ver se estou
olhando para o inimigo assim Não
podemos ver o texto porque
ele é exibido assim. O que acontece quando você clica
na tela é que você apenas exibe esse texto em direção
à tela, exatamente assim. Se eu clicar em jogar agora, você poderá ver que ele é
exibido na tela. Agora está parecendo
bom. Vamos abri-lo. Vamos clicar nele novamente. Vou clicar em
Desenhar um tamanho desejado. E agora estamos prontos
com este. Vamos clicar em Compilar. E você pode empurrá-lo
ainda mais para baixo assim. Você sempre pode clicar em
Jogar e ver o que é. Agora acho que, para o nome do inimigo, vou
aumentá-lo para talvez -22. Só um pouco mais. Aqui está. Parecendo bem. Deixe-me deletar este para que não tenhamos
dois inimigos surgindo Agora, esse é o nome do inimigo
que mostramos, e tudo está ótimo.
38. 5.04 Programando a IU de informações do inimigo: Tudo bem, em vez de
ter apenas o nome do inimigo, decidi adicionar o nível do
inimigo também. Vai parecer um pouco mais legal. Vamos abrir o inimigo
novamente, aqui dentro. Na verdade, vamos até a interface do usuário, abrir o nome do inimigo. Em vez disso, vou
renomeá-lo para informações do inimigo. Agora, dentro daqui,
se você clicar nele, na verdade não precisamos
fazer nada aqui porque vamos
programar o texto. Não precisamos
mudar nada aqui. Mas agora vamos
para a base inimiga. Em vez de um nome amplo do inimigo. Vou apenas
renomeá-lo como Info Widget. E isso ocorre porque
temos o nome e o nível exibidos. Decidido. Ok, nós
realmente não precisamos fazer muita coisa aqui. Mas o que precisamos
fazer agora para programá-lo é acessar o gráfico. Agora, vamos excluir
todos esses eventos. Vamos clicar com o botão direito do mouse em
criar um evento personalizado. Vamos chamar isso de atualização de informações do
inimigo I para este. Agora, quando você faz
algo em código, precisa pensar que está tentando fazer. Estou tentando atualizar esse
texto. Esse texto aqui. Ao clicar nela, tenho que
configurá-la como sua variável, caso contrário não
consigo vê-la como uma variável aqui e não
posso fazer nada com ela. Então, vou chamar esse texto de informação do inimigo
e defini-lo como variável. E depois vou para o gráfico. Agora eu posso ver e arrastar para dentro. O que estamos tentando fazer
é definir o texto, definir o texto. E você pode selecionar essa
função chamada definir texto. É assim que você define um texto aqui. Agora, isso é o que
você está tentando fazer. Estamos tentando definir esse texto para ser o nome do inimigo. Agora, obviamente, não temos
o nome do inimigo aqui. Lembre-se de que temos o
nome do inimigo. Dentro da
função de biblioteca que
criamos, também precisamos do nível do inimigo. Agora, quanto ao nível, temos isso dentro
do modo de jogo. Se você for ao Blueprint para
abrir o modo de jogo, lembre-se de que aqui também temos o nível
atual A melhor prática para fazer isso é atualizar o nome do inimigo
sempre que ele for gerado Acho que aqui
na base inimiga, sempre que o inimigo aparecer, o início do jogo
vai começar É bom adicionar esse
código aqui dentro. Precisamos fazer isso, em vez de
escrever o texto aqui. Agora precisamos de duas entradas. Nessa função,
precisamos do nome do inimigo, e isso é uma string. Vamos aumentá-lo um pouco para que
possamos ver que esse é
o nome do inimigo. Vamos chamar esse nome de inimigo. Então, precisamos que o nível do inimigo
olhe aqui, selecionando o número inteiro E esse é o nível do inimigo, assim como o
nome e o nível desse inimigo. Agora, para inserir isso aqui, como você pode ver,
temos apenas um bloco de texto. Para adicionar dois valores dinâmicos
em um bloco de texto, você precisa usar algo
chamado formato de texto. Isso permitirá que você
adicione várias entradas
ou várias entradas
ao texto se você arrastar aqui e disser formatar
texto como este Agora, como você usa isso, você
começa com um colchete. A primeira coisa é que
precisamos do nome do inimigo. Digamos o nome do inimigo. Isso não precisa ser preciso. Você pode escrever o que
quiser aqui. Vamos fechar os colchetes. Quando você faz isso e pressiona Enter, você pode ver que
há um ponto de entrada aqui ao qual você pode
conectá-lo assim. Agora também precisamos
do nível do inimigo, como queremos exibi-lo. Por exemplo, só
para visualizá-lo,
digamos, por exemplo, Orc, temos uma vírgula e ela diz nível um ou nível 12,
algo assim Aqui também temos que
formatá-lo. Assim, aqui
temos o nome do inimigo. Então temos A. Aqui eu
vou para a direita e para o nível. Então temos o nível. Vou abrir o suporte
encaracolado novamente e dizer o nível do inimigo E feche-o novamente assim. Agora eu posso adicionar essa entrada ,
agora ela será
exibida diretamente para mim. Tudo bem, este podemos
adicionar agora à base inimiga. Se eu compilar e
voltar para a base inimiga, vamos deletar
tudo isso por enquanto E como fazemos isso é
usar o widget de informações do inimigo. Primeiro você precisa escrever um widget, selecione este chamado
get user widget object Agora, aqui eu costumo
custar, digamos, dois. Normalmente, não uso um
plano de widget para a interface do usuário porque acho demais criar
um plano de widget
para cada interface Você só precisa custar a interface
que está dentro Por exemplo, na interface do usuário do menu principal, você não vai
custar dois. O menu que está recuado aqui
como um componente você custará para fazer com que
o usuário supere as duas E nós o chamamos de informações do inimigo. Vá em frente e selecione-o aqui, e vamos conectá-lo. Ok, então aqui está. Agora podemos chamar a
atualização das informações do inimigo, atualizar as informações do inimigo Ui. Agora temos que inserir
o nome do inimigo. E lembre-se de que já
temos isso aqui. Lembre-se de que clicamos em
cada inimigo e definimos o
nome do inimigo, todos eles aqui. E é aí que o usamos. Agora vamos atacar isso, conectá-lo, esse é
o nome do inimigo. Agora, para o nível de inimigos, temos esse como
o nível atual dentro do modo de jogo. Não me lembro que
nas interfaces criamos uma interface para o modo de
jogo, não fizemos isso. Então, vamos continuar e criar
a interface do blueprint. Vamos dar uma olhada aqui, vá para Blueprint e selecione a interface
Blueprint Vamos chamar isso de BPI. Agora, vou
chamá-lo de modo de jogo porque só
temos um no jogo.
Vamos abri-lo. Agora, dentro daqui,
vamos chamá-lo de referência do modo de
jogo get porque é
isso que
estamos tentando fazer. Para as saídas, você precisa
selecionar no tipo de variável o que você está
tentando referenciar Agora estou tentando fazer
referência ao meu modo de jogo. Vou procurar
o GM Dungeon Clicker. É assim que eu o chamei,
esse é o meu modo de jogo. E vou selecionar Referência de
objeto aqui. Vou
chamá-lo de modo de jogo. Vá em frente e compile, salve tudo. E agora terminamos aqui
dentro. Vamos
encerrar isso. Agora temos que adicionar essa
interface de projeto ao modo de jogo. Se eu voltar às plantas, abra meu modo de
jogo aqui Vamos ver as configurações da cláusula
nas interfaces implementadas Vamos adicionar a
interface do plano, o modo de jogo. Quando você faz isso, essa
função aparece. Vamos clicar duas vezes nele, sair daqui e dizer self. Agora estamos definindo
essa variável. Estamos dizendo que essa variável
do modo de jogo é própria. O que significa que, seja qual for o
plano em que estamos agora, dizendo ao motor que
essa variável do modo de jogo é GM, Dung Ok, agora terminamos.
Vamos fechá-lo. Vamos abrir o
inimigo mais uma vez. E vamos continuar o trabalho. Em vez de fazer isso primeiro, deixe-me mover tudo isso aqui. Vamos desconectá-lo
segurando Alt e clicando, vamos clicar com o botão direito do mouse e
dizer Obter modo de jogo Agora, para este modo de jogo, obtemos o modo de jogo
geral,
o modo de jogo padrão
e o Unreal Engine Em vez de dizer custo para a GM, em vez de fazer
isso, agora podemos dizer isso, referência ao modo de jogo E podemos usar a função de
interface blueprint. E você sabe disso
porque diz mensagem no final. Você sabe que vem de
uma interface de projeto. Vamos fechar o som. Vamos sair e conectá-lo agora. Agora, com isso,
podemos clicar com o botão direito do mouse e promover isso para nossa variável
e chamá-la de modo de jogo. Não precisamos fazer tudo isso de novo. É muito mais limpo. Agora, podemos apenas usar
a variável do modo de jogo. Vamos conectá-lo, vamos
fazer tudo juntos. Vamos em frente e
usá-la. Então, agora podemos usar o nível atual. Se você voltar ao modo de jogo, caso não se lembre, temos essa variável chamada nível
atual. É isso que estamos tentando
usar no modo break game aqui. Pesquise o nível atual e vá em frente e
obtenha o nível atual. E agora você pode conectá-lo e tudo deve
funcionar perfeitamente. O que está acontecendo
agora é que estamos recebendo a interface de atualização das informações do inimigo. Estamos inserindo
essas informações, o nome
e o nível do inimigo Ele vai levar
isso para a interface do usuário aqui. Eu vou até o gráfico. Vou
conectar isso aqui, deve exibi-lo corretamente. Se eu clicar em Jogar, agora aparece Orc nível um.
Isso está correto. Agora, se eu voltar
ao modo de jogo e mudar o nível atual
para algo como cinco,
por exemplo, e
clicar em Jogar,
aparece nível cinco do Mago. Tudo está funcionando perfeitamente, ok. Tudo está funcionando. Vamos em frente e economizemos.
E vamos seguir em frente.
39. 5.05 Aplicando dano ao inimigo: Agora vamos prosseguir e
aplicar dano ao inimigo. Agora, se clicarmos em Jogar, o que eu quero fazer é sempre que
eu clicar neste Orc, eu quero aplicar dano E, a propósito, lembre-se de
entrar no modo de jogo e definir o nível atual de
volta para um por padrão, porque nós o configuramos
para cinco na última
vez que o ajustamos de volta para um. Agora, o que eu quero fazer primeiro é que você possa ver nosso
mouse desaparecer Sempre que clico no
jogo, meu mouse desaparece. Então, vamos ao controlador do
player. E dentro daqui nos padrões
da classe, vamos clicar em mostrar o mouse Ursa Vamos compilar isso. Vamos
abrir a base inimiga. Antes de fazer qualquer coisa, vamos realmente acessar o refletor do widget Fuel
Debug, torná-lo 1,25. Então você
pode ver aqui, o que eu quero que você faça é
usar o componente da cápsula, o qual vamos com o qual vamos
interagir sempre que
clicarmos O que queremos fazer é
entrar no componente da
cápsula. E aqui você vê alguns
eventos que você pode usar. O que eu quero que você use é
esse chamado clique, porque vamos
clicar no inimigo sem clicar Vá em frente e selecione isso. E aqui o que eu quero que você faça, também arraste e diga print string. A sequência de caracteres de impressão é muito poderosa. Isso simplesmente imprime uma
string na tela, imprime uma mensagem na tela. Por exemplo, pode dizer que funcionou. E eu uso isso para
depurar meu código, quero ver se meu evento
está realmente funcionando Novamente, isso é super poderoso. É assim que eu depuro meu código. Se eu tiver um erro, por exemplo, digamos que algo não estava
funcionando aqui em algum lugar, eu pegaria isso e
colaria aqui, por exemplo. Eu o colocaria aqui ao lado
disso, ou entre esses dois. Se imprimir, isso
significa que esta peça está funcionando, então eu imprimiria
aqui e veria se essa peça
está funcionando e assim por diante. Continue imprimindo mensagens na tela e é assim
que você depura com eficiência Aqui embaixo, no clique,
vamos ver se isso funciona. Se eu clicar em play e
clicar no Orc, nada está realmente sendo
impresso na tela Isso significa que
esse evento não está realmente funcionando.
Algo está errado. Isso ocorre porque no componente da
cápsula, vamos verificar as
configurações de colisão aqui embaixo Nós o configuramos para que não houvesse colisão. Claro, não
vai funcionar sempre que eu clicar nele porque esse
cara não tem colisão Quando a colisão é predefinida
em vez de nenhuma colisão, vamos clicar nela e, digamos,
personalizada para a personalizada para a Vou configurá-lo para
consultar somente agora a física. Sempre que um personagem está andando no chão
e há física, ele não cai
no chão e assim por diante. Nós realmente não
precisamos de consultas físicas. Por exemplo, seu
mouse está interagindo com a consulta do inimigo ativada Não precisamos de física. Quanto aos
canais de resposta, ignore tudo. Não queremos interagir com outros objetos estáticos do mundo, peões e veículos e assim por diante A única coisa com a qual queremos ficar
intactos é a visibilidade. A visibilidade é o mouse, o qual queremos interagir. Agora, se você clicar em jogar, clicamos aqui. Você vê que
nada está acontecendo. Ainda assim, algo está errado. Agora vamos abrir o controle de
reprodução novamente. E aqui você vê
habilitar eventos de clique. Você tem que aceitar isso também. Compile, clique em reproduzir e agora você pode clicar nele Agora você vê que nossa mensagem
está sendo impressa no. Agora está funcionando novamente. Você pode testar a caixa de impacto, dependendo do tamanho sua esfera de
colisão, nossa cápsula Você pode ver quando eu clico
aqui, que está funcionando também. Acho que é uma caixa de acerto justa, mas se você quiser
consertar sua caixa de acerto, você sempre pode
ir até a base inimiga, clicar no componente da cápsula e aumentar e diminuir a meia altura
e o raio dela, dependendo do tamanho
que você deseja que o círculo tenha O que queremos
fazer é aplicar danos. Vamos aqui e diga Aplicar danos. Existe uma função para
isso: vá em frente e selecione Dano aplicado
para o ato danificado. Para nos machucar, queremos
danificar essa base inimiga, seja qual for o inimigo que
estamos atacando. O que queremos que seja
o dano? Podemos simplesmente adicionar um dano estático que podemos melhorar
posteriormente na loja. Pelo dano, eu realmente
quero adicioná-lo ao jogador. Isso faz mais sentido. Se eu for ver as plantas, vou para o jogador aqui Vamos adicionar uma nova variável
chamada dano. Vamos
transformar isso em uma compilação flutuante. Vamos
defini-lo como 15 por padrão, podemos alterá-lo mais tarde. Compilar. Se eu voltar
para a base inimiga, agora precisamos de uma referência
ao jogador. Veja aqui, se
temos uma interface, não
temos uma interface de
blueprint Se você quiser se
desafiar novamente com as interfaces do
blueprint, vá em frente e crie
uma para o jogador Mas agora vamos fazer isso juntos. Vamos clicar com o botão direito do mouse, ir para o
blueprint, interface do blueprint. Chame isso de camada PPI. Vamos abri-lo aqui. Digamos que obtenha uma referência de camada. Agora, aqui embaixo, o que quer que
estejamos nos referindo, estamos tentando nos referir ao BP Player. Vamos
pesquisar isso. Vá em frente e selecione-o. Vamos chamá-lo de Player. Agora vamos compilar. Lembre-se de compilar agora vamos voltar
ao player e adicionar essa interface de esquema dentro das configurações da nuvem aqui embaixo,
pesquisar por BPI, adicionar o
player, compilar Vamos abri-lo e
fazer uma autorreferência. Assim como antes, definimos que esse tipo de variável
é esse player. Agora que fizemos isso, vamos voltar para a base inimiga aqui. Vamos fazer isso depois do modo de jogo. Se eu simplesmente atacar aqui, deixe-me clicar com o botão direito do mouse e
dizer pegue o personagem do jogador. Vá em frente e selecione, então vamos atacar a partir daqui e
dizer obter a Referência de Jogo. Selecione isso, vá
em frente e conecte-se. Vamos clicar com o botão direito do mouse e promover
isso e chamá-lo de Player. Vou
chamá-lo de Play Upon. Vamos nos conectar aqui. Basta arrastar isso para cima. Agora temos essa
referência pronta e podemos usar
a variável s a partir dela. Vamos usar o dano do
cursor aqui embaixo. Vamos começar a jogar, vamos procurar danos no cursor, selecioná-lo e
conectá-lo aqui. Assim mesmo. Agora, não precisamos fazer
nada com eles para ver se isso está funcionando e
vamos usá-los mais tarde. Mas o que você pode fazer é
escrever, clicar e procurar qualquer dano. Nós vamos usá-lo mais tarde. Você pode imprimir uma
string a partir daqui. Você pode simplesmente imprimir a quantidade de dano que estamos causando. Vamos, vamos clicar.
E quando eu clico, você pode ver que estou aplicando 15 pontos de dano e tudo
está funcionando conforme o esperado. Vamos em frente e
exclua isso por enquanto. Na verdade, vamos deletar isso. Podemos fazer isso em
outra aula. Vamos compilar, salvar
tudo e seguir em frente.
40. 5.06 Como avaliar a saúde: Agora vamos trabalhar com
qualquer evento de dano. Se você clicar com o botão direito
aqui na base inimiga, você procura por qualquer dano.
Vamos usar esse. Isso é usado quando
você aplica dano, você vai aqui e depois
calcula o dano e depois aplica
qualquer dano que tenha causado. Deixe-nos fazer isso. Vamos criar uma nova variável. Precisamos de uma chamada saúde
atual. Agora, para este, vamos
transformá-lo em um flutuador. Vamos compilar. Agora, para
essa saúde atual, precisamos ter saúde. Porque não podemos realmente
começar do zero. O inimigo não tem zero, então precisamos colocá-lo em algum lugar. Lembre-se de que, antes, nas tabelas de dados que
criamos nas informações do inimigo, adicionamos saúde aos inimigos. Vamos
usar isso e
defini-lo por padrão
sempre que eles aparecerem A melhor maneira de fazer
isso é aqui no início
do jogo, sempre que
o inimigo aparecer. Vamos pegar essa
saúde atual e configurá-la. Você segura a tecla Alt e arrasta para configurá-la. Vamos configurá-lo para o que estava na tabela de dados.
Vamos clicar com o botão direito do mouse. Lembre-se de que criamos uma função de
biblioteca chamada get Enemy info. Agora ele precisa do
nome do inimigo. E nós temos isso. Lembre-se de que estamos dentro da base
inimiga e
temos o nome aqui. Vamos arrastá-lo e conectá-lo. Vamos atacar a partir
daqui e dizer “pare”. Quando quebramos, podemos ver todas
as variáveis dessa função de informações do
inimigo. Agora vamos configurá-lo
para a saúde aqui. Começamos com qualquer
saúde que escrevemos aqui. Vamos voltar para a base inimiga. Clique aqui, oculte os
pinos desconectados para torná-los mais limpos E vamos conectá-lo. Agora isso está funcionando aqui embaixo. Agora temos a
integridade atual definida corretamente. Sempre que causarmos danos, quero que você tire
a saúde atual, digamos que a
saúde atual seja 100. Para o primeiro aqui, vamos dizer 100 menos Se você apenas escrever
menos ou subtrair, subtraindo o
dano que causamos, diria 100 -15 Isso é igual ao
que é igual Temos que pegar isso de novo
e colocá-lo de volta aqui. Está atualizado, agora
dizemos que 100 -15 é 85. 85 vai estar aqui. Agora, só para garantir que não
fiquemos abaixo de zero. Porque você pode imaginar que
se eu continuar causando dano e ele chegar a zero e eu causar dano novamente, ele dirá zero,
-15, ou seja, -15. Em vez
de perder a saúde, usamos algo chamado Se você arrastar a partir
disso e disser clamp, selecione este
chamado clamp float, porque estamos trabalhando
com floats. Flutuador de braçadeira O que é um grampo é basicamente
você fixar o valor, então ele nunca pode ficar
abaixo de zero e nunca pode ultrapassar
algum valor
que você Vou apenas adicionar
essa saúde atual porque não estamos
realmente curando o jogador. Vou prendê-lo
entre o que é
agora e não podemos
ir abaixo Vou
conectá-lo assim. Vamos
conectá-lo aqui. Agora que está realmente concluído, agora
você pode clicar
duas vezes nele para melhorar a aparência. Vá em frente e faça isso.
Vamos usar uma string de impressão novamente e ver se estamos fazendo
isso corretamente. Se eu compilar, clique em
jogar e eu causo danos. Então agora é 85,
e então é 70, 505-402-0510, e E você pode ver
que sempre que eu clico, não pode estar abaixo de zero. Então, agora estamos calculando
isso corretamente.
41. 5.07 Criando o bar de saúde: Para criar a barra de saúde, vamos até a
pasta UI. Vamos escrever. Clique agora, vamos para a interface
do usuário e criar
um widgit, Novamente, um widgit de usuário. Vamos chamar isso de barra
de saúde WB. Vamos entrar aqui. Novamente, exatamente o que eu disse antes, tamanho da
tela. Vamos clicar aqui. Configure-o para um laptop genérico
que projetamos para todas as telas. Vamos criar esse painel de tela. Lembre-se de que sempre
precisamos adicionar uma tela. Agora, para a barra de saúde, incluí algo para você. Ainda não o importamos. Então, vamos aos materiais de
custo
aqui nos materiais de custo, quero que você acesse
a interface do usuário novamente. Você pode ter muito mais
interface do usuário do que eu tenho agora. Isso ocorre porque eu
continuo adicionando coisas
sempre que continuo
desenvolvendo este curso. Vamos agora pegar
essa e essa. É disso que precisamos até agora. Aqui, deixe-me clicar com o botão direito, criar uma nova pasta, chamá-la de
imagens. Vamos abri-lo. Agora vamos abrir os materiais de
custo
mais uma vez , vamos
arrastá-los para esta pasta. E agora eles estão carregados. Agora, isso é muito escolhido, então eu não quero que fique embaçado Lembre-se de que você pode simplesmente
selecionar os dois. Clique com o botão direito do mouse e vá para Spot Actions e aplique
papel nas configurações. Agora não está
mais embaçado, está com boa aparência. Vamos voltar para a barra de saúde. E dentro daqui,
vamos pesquisar por enquanto. Quero que o texto esteja no topo
e, em seguida, quero que a
Barra de Saúde fique abaixo dele Precisamos de uma caixa vertical para isso. Pegue uma caixa vertical nela. Dentro da
caixa vertical, preciso de algum texto. Na verdade, vou copiar
o texto que fizemos aqui. Eu acho que está parecendo bom. E podemos simplesmente
mudar a cor. Clique no
controle de texto C para copiar aqui. Clique no controle da caixa
vertical V. Agora, para a barra de saúde, basta pesquisar a barra de progresso
e é isso que é. Arraste-o para a caixa vertical. Agora, para a caixa vertical, vamos redimensioná-la para que possamos
realmente ver o que está acontecendo Agora, em vez de
preenchê-lo em toda a tela, queremos que as informações do inimigo sejam iguais às do tamanho que tiverem. Porque vamos apenas
usá-lo no jogo aqui. Não precisamos dele para preencher
tudo de novo. Clique em Tela cheia. Aqui até o desejado na tela. Em vez de o
ponto de ancoragem estar aqui em cima, vamos mudá-lo para o
meio da tela Vamos mudar o alinhamento
da caixa vertical para 0,5
por 0,5 e a posição
para zero por zero Agora está no meio aqui. Ok, está bem. Agora, para essa barra de progresso,
vou clicar nela. E para o estilo, vamos
mudar a imagem de fundo. A imagem de fundo
é essa barra de progresso. A imagem de preenchimento e a imagem de
letreiro, ambas
são esta
fatura que temos, esta e esta E vamos clicar em Compilar. E podemos ver que não parece muito bom quando olhamos para ele. E isso é porque aqui, eu acredito que é a marquise Eu sempre esqueço aqui na
marquise o tamanho da imagem em Y.
Podemos alterá-lo. E agora você pode ver que está realmente mudando. Podemos mudar o
tamanho que quisermos. Para este, acho que
vou chegar aos 45. Você também pode escalá-lo aqui
no X e y no X. Você também pode escalá-lo Agora, não podemos realmente
ver a diferença porque essa
caixa vertical a está bloqueando. Porque podemos escalá-lo aqui. Mas vou escalá-lo aqui de acordo com o tamanho do conteúdo.
Vou clicar aqui. Vou escalar
a caixa vertical, dependendo do
tamanho do conteúdo. Agora, para essa barra, vou
reduzir o tamanho para
algo como 250. Sempre podemos
aumentá-lo mais tarde, mas parece bom agora. Agora vamos ver se esse
preenchimento está funcionando. Vamos descer e você
verá essa porcentagem. Você pode clicar e arrastar para
preencher a porcentagem. Mas você pode ver que a
cor não está correta. Está aqui embaixo na cor
de preenchimento. Em vez de ser azul, vou apenas
configurá-lo para ser branco. E vá em frente e
clique. Ok. Agora você vê que está com boa aparência. Ok, agora nós projetamos isso. Vamos mudar a cor
do nome aqui em cima
ou não, é basicamente a quantidade de saúde pela
quantidade de saúde. Vamos mudar para
talvez uma cor mais vermelha. Eu escolhi essa cor aqui. Eu acho que está parecendo bom. Agora vamos copiar isso. Basicamente, basta segurar Shift, clicar com o botão
direito, Shift,
clicar com o botão esquerdo neste e neste. Em vez de ser dessa cor, vamos torná-la Daka Acho que essa cor fica
bem como o contorno. Deixe-me copiar
isso. Entre aqui e cole na cor linear
hexadecimal Clique. Ok, eu acho que essa
cor é boa para a saúde. Agora que terminamos com isso, você pode dar um pouco de espaço. Você pode ver que está muito perto,
talvez da barra de saúde. Você pode clicar
aqui, você pode ir para o preenchimento aqui
na parte inferior Podemos dar a ele um preenchimento de seis. Está um pouco afastado
da barra de saúde, agora
está com boa aparência. Novamente, vou clicar
na barra de saúde e no texto e alterar a visibilidade
para não testável Portanto, não podemos interagir
com ele, com o mouse. Eles não bloqueiam o
mouse no jogo. Eu vou bater. Ok.
Agora que isso acabou, então vamos seguir em frente e passar
para a próxima lição.
42. 5.08 Adicionando a barra de saúde: Para adicionar a barra de saúde. Vamos até Blueprints
e desvendar o inimigo. Mais uma vez, vamos
ao ponto de vista. Vamos clicar em,
basta clicar aqui. Vá para Componentes. Pesquise novamente por Widget, assim como
fizemos com o nome É o mesmo conceito. Você pode tentar fazer isso
sozinho para praticar. Vamos
clicar em Widgets. Aqui podemos apenas dizer Health Bar. Agora clique em, vou dizer apenas
widget de saúde. Talvez widgets de saúde. Porque se você continuar programando
no jogo e ele se tornar
um jogo muito grande, é sempre bom ter nomes
muito descritivos para que não
seja muito confuso. Clique no widget do Health Par. Vamos mudar o
espaço da tela. Ele sempre exibe
a interface do usuário na tela. Vamos mudar a cláusula
para a barra de saúde. Esse chamado Desenhar
um Tamanho Desejado. Tudo bem, vamos clicar em Play e ver
como fica. E aqui está. Vamos anotá-lo
abaixo do nome. Clique nele, Wrike. Reduza um pouco
aqui. Clique em jogar. E vamos acabar com
isso ainda mais. Clique em jogar. Isso talvez
seja demais. Em vez de -40,
digamos menos 37. Clique em jogar. Acho
que parece bom. Talvez menos 36, agora
é muito TOC. Clique em jogar. Isso
parece muito melhor. Talvez seja isso que
podemos fazer. Como você pode ver, ainda precisamos atualizar
a barra de saúde, tanto o texto quanto
a barra de saúde aqui. Vamos fazer isso
na próxima lição.
43. 5.09 Atualizando a barra de saúde: Tudo bem, para atualizar
a barra de saúde, vamos primeiro acessar a interface do usuário. E vamos abrir
a barra de saúde. Dentro daqui, vamos
clicar primeiro no texto. Para este, em vez
de enviar informações de texto sobre o inimigo, é chamado de saúde de texto. A segunda aqui,
a barra de progresso, vou
chamá-la de barra de progresso. Vamos também chamá-lo de
make it variable para que possamos. Vamos ao gráfico agora. Vamos deletar tudo
isso. Vamos escrever clicar e criar um
novo evento personalizado. Vamos chamar isso de atualização. Agora, para este, o que
estamos tentando fazer, novamente, sempre que programamos, pense no que você está
tentando fazer agora? Estou tentando atualizar
essa barra de saúde. OK. Como atualizamos
essa barra de saúde? A forma como o atualizamos é que
você está tentando
alterar essa porcentagem, você está tentando mudar isso. Sempre há uma
boa ação para analisar o que você está
tentando fazer com essa porcentagem. Vamos ao gráfico e
vamos pegar essa barra de progresso. Se você não sabe
como se chama,
tente pesquisar por porcentagem. Você já pode ver aqui, você pode usar isso na função de porcentagem
definida. Vamos
conectar esse percentual definido. Você tem que dar uma olhada aqui. A porcentagem não é 0-100
0-1 . Na verdade, temos que
fazer alguma divisão aqui Porque aqui
na atualização de saúde, esta será chamada
para a base inimiga a qualquer momento. Lembre-se de que aqui
calculamos a saúde após causarmos danos causados
por isso. A partir daqui, podemos chamar
essa interface de atualização de integridade. Aqui, podemos
nos conectar à saúde atual. Vou clicar aqui, criar uma nova variável,
apenas regular aqui, para que possamos ver, torná-la flutuante,
chamá-la de saúde atual Agora, como dividimos
isso se você não é
muito forte em matemática? Por exemplo, digamos que a
saúde é 100 dividido por, então podemos fazer esse
sinal ou dividir para a direita. Vamos dividir isso por um número que é
a saúde máxima. Porque, por exemplo,
você pode dizer,
digamos que eu cause dano a esse inimigo e o
inimigo tenha 100 pontos de vida. O dano no momento
para o cursor é 15, ele diz 100 -15, é 85 Então você pode dizer 85/100 e
obterá a porcentagem. Se você não é muito
bom em matemática, sempre
pode usar
aqui seu navegador. Você pode dizer,
digamos que temos 85/100 Enter. E então você pode ver que está
realmente exibido corretamente. Está bem? Então é assim que
queremos fazer, porque o máximo é
100, que é um. Essa porcentagem vai de 0 a 1
Digamos que a saúde atual é dividida pela saúde atual máxima
dividida pela saúde máxima. Essa é a porcentagem, agora vai ficar correta. Vamos compilar agora. Vamos até a base do NM
e tentar usar essa. Lembre-se de que você precisa calcular os custos agora porque está
dentro da barra de saúde Esse é o mesmo conceito
que fizemos com o nome. Vamos fazer isso. Obviamente, você pode seguir em frente e criar uma interface de
modelo para ele Não é uma má ideia. Você pode fazer isso, está bem. Mas acho que algo que só
vou
custar uma vez, como se eu só
usasse essa função em todo o meu jogo,
talvez duas delas. Não quero criar uma interface de modelo para
cada interface de usuário que eu crio Vamos
excluir esse nó de impressão. O que podemos fazer agora é criar um novo evento personalizado aqui. Vamos criar um evento personalizado
chamado update health. E este
chamará a interface de usuário de atualização de integridade. Vamos arrastar esse widget. Vamos nos dar um
objeto widget exatamente como antes. Digamos que
custe dois e o chamamos custo
da saúde para a saúde conectada. Aqui, queremos chamar a
atualização de integridade de arrasto de atualização. Eu vou em frente e
conecto tudo. Agora precisamos de
plug-ins para a saúde
atual e a saúde atuais, a saúde atual
que já temos aqui. Vamos conectá-lo. Como o colocamos
aqui para
que possamos fazer isso com o máximo de saúde, precisamos do máximo de
saúde do inimigo. Como fazemos isso? Lembre-se de
que criamos uma informação sobre um inimigo aqui, é basicamente essa. Você pode basicamente
copiar esse controle C, ir até aqui, controlar V ou reescrevê-lo se
quiser praticar Tente escrever isso de novo
e veja como você fez isso. Vamos conectá-lo aqui. Agora estamos
atualizando a saúde. Lembre-se, temos que realizar
esse evento antes que ele funcione. Vou executar
essa atualização de saúde toda vez que eu causar danos. Por aqui, podemos chamar de update
health e ligar para aqui. Agora, o que estamos fazendo
é causar danos com o mouse,
estamos aplicando danos. E o dano que
aplicamos, estamos calculando e atualizando a
saúde atual do inimigo Então, estamos atualizando o I aqui. Na verdade, aqui, atualize a saúde. Talvez possamos ter esse aqui embaixo
só para que faça mais sentido em termos de
programação, vou tirar
isso daqui. Vou fazer
uma entrada aqui embaixo, um flutuador chamado saúde
atual Em vez disso, vou conectá-lo assim. Podemos nos conectar aqui. Acho que faz mais sentido. Podemos fazer as duas coisas,
mas às vezes, quando você programa, você pode fazer as coisas de várias maneiras. Mas algumas formas são melhores
práticas do que outras. Acho que este é um pouco melhor porque estamos atualizando a
saúde atual aqui. Ok, a atualização de integridade
está sendo atualizada aqui
e, em seguida, estamos atualizando a interface do usuário que
atualiza a barra de saúde. No começo, serão 100, mas se clicarmos em Jogar, você verá que ainda é zero
na saúde. Isso ocorre porque ele
só será atualizado. Agora, sempre que você
clica no inimigo, como você vê aqui, se você não clicar no
inimigo, ainda é zero. Isso ocorre porque temos que executar esse código sempre que
geramos o inimigo Aqui em cima, quando atualizamos a interface do inimigo e atualizamos
a saúde atual, eu também quero dizer que
atualizamos a saúde. E faça isso em vez
de fazer isso aqui, lembre-se de que já
o configuramos dentro deste evento. Podemos excluir isso
e, em
vez disso, podemos simplesmente conectá-lo aqui e conectá-lo. Vamos compilar e clicar em play. E agora você vê que está cheio sempre que o inimigo aparece Sempre que eu
clico, ele vai cair. Agora está funcionando, agora
só precisamos da última coisa, que é atualizar o texto. Isso é muito mais
fácil de fazer neste texto. Vamos arrastá-lo para fora e arrastar
aqui e dizer definir texto. Vamos definir o texto aqui. Agora, para o texto,
precisamos configurá-lo para qualquer que seja a saúde
atual. Arraste-o até aqui. E arraste isso para baixo novamente. Clique duas vezes nele,
faça com que pareça melhor. Compile e clique em reproduzir. Agora veja que a saúde é 100. Se clicarmos, ele
vai cair. Agora podemos tentar novamente
em outra coisa. Se formos às plantas, abra o modo de jogo, o nível atual,
para algo como
o nível três Sempre que eu clico no inimigo, ele atualiza
a saúde corretamente. Novamente, agora tudo
está funcionando, e vamos definir o
nível atual de volta para um, compilar, salvar tudo
e seguir em frente
44. 5.10 Flipbook de sucesso do inimigo: Agora que o dano está funcionando, quando clicamos no inimigo, o inimigo é danificado. Para
melhorar um pouco, vamos reproduzir o efeito de golpe quando o
inimigo for atingido. Isso vai ficar muito melhor. Lembre-se
de que, na tabela de dados que já criamos
nas informações do inimigo, já
adicionamos os flip-books de
animação de sucesso aqui Vamos usá-los. Vamos encerrar isso.
Vamos voltar aos inimigos. Abra a base inimiga. Dentro da base inimiga. Vamos até aqui e
criar um novo evento personalizado. Vamos chamar isso de efeito de um golpe. Vamos fazer isso aqui. Nós simplesmente
queremos jogar o flip-book O inimigo apertou o flip book novamente, assim como antes de podermos
pegar o flip É basicamente esse sprite aqui. Pegue o sprite arrastando dos sprites e você
poderá escrever Você pode tentar ler. O que
você pode fazer com tudo isso. O que queremos usar é esse conjunto de
flip-book porque
queremos configurá-lo para o flip book, já
temos o flip book
dentro das informações do inimigo Na verdade, vou
copiar isso aqui. Cole-o e aqui vamos esconder os pinos
desconectados Vamos clicar aqui embaixo. E eu só vou
mostrar a animação de sucesso. E então eu vou
conectá-lo aqui. Agora ele vai reproduzir
a animação de sucesso. Agora, o efeito de sucesso.
Sempre que clicamos agora, você precisa
ver de onde
faz sentido chamar esse evento? Faz mais sentido sempre que
o inimigo sofre dano. Depois de atualizar a saúde, você também joga o evento de
efeito de sucesso aqui embaixo. E vai
reproduzi-lo. Eu clico em Jogar e clico no inimigo. Você pode ver que está jogando. No entanto, agora
está ligado para sempre. Temos que consertar isso. Temos que colocá-lo de volta no flip-book normal depois que
o inimigo for atingido O que vou fazer é
deixar esse flip book de sucesso, jogar uma vez e depois voltar para o normal A maneira de fazer isso é pegar esse sprite aqui, arrastar aqui
e dizer flip book. Você pode tentar ler
o que você pode usar aqui, o que vai
usar é este. Obtenha o tamanho do flipbook. Então eu vou atrasar
por esse período de tempo. Vou atrasá-lo pelo
tamanho do flip-book. Depois que isso terminar, podemos levá-lo aqui. Em vez de copiar e colar isso, vou usar
a animação ociosa Vamos recuar assim. Basta copiar isso, colocar o flip book aqui e você pode
colocá-lo novamente aqui Vou clicar para criar
um nó de rota traseiro e algo parecido. Isso deve funcionar muito bem. Podemos tentar jogar agora se
clicarmos no inimigo,
e aqui está, agora
vou aumentar
a quantidade de tempo que esse efeito de
golpe está sendo reproduzido,
porque ele está sendo reproduzido muito
devagar e parece estranho Vou voltar aos meus ativos e abrir os personagens. Agora, para esse hit, temos que
aumentar os quadros
por segundo aqui, para que ele seja reproduzido muito mais rápido. A maneira de fazer isso é
clicar em Controle Z aqui. Se eu selecionar todos os
hits um, basta manter o controle de
todos os flip books de sucesso O que você pode fazer é clicar com
o botão direito novamente, nas ações do
ativo, na seleção
por meio da matriz de propriedades. Assim, você pode editar todos eles
de uma vez. E então vamos definir os
quadros por segundo. Vou definir para
40 quadros por segundo. Deixe-me salvar todo o jogo
e ver como fica. Isso é o que
parece. Parece muito melhor que o
inimigo esteja sendo atingido. Isso foi tudo para o
efeito de sucesso. Muito, muito fácil. Agora vamos em frente e
trabalhemos com a morte do inimigo.
45. 5.11 Morte do inimigo: Agora, para a morte do inimigo,
obviamente, o inimigo morre
sempre que a saúde é zero. Faz mais
sentido fazer isso aqui. Sempre que danificamos o inimigo, verificamos se a saúde
atual está aqui; na verdade, não
estamos
verificando nada. Basicamente, estamos apenas calculando a saúde atual e
atualizando a saúde Antes mesmo de atualizar a saúde, quero verificar se meu
inimigo está morto ou não. Vamos fazer isso aqui. Sempre que a saúde estiver, o inimigo deve morrer aqui. Vou apenas arrastar
e dizer se a saúde é maior que zero
e fazer um galho ir em frente e conectar isso. Sempre que a saúde
é maior que zero, só
queremos continuar
o que fizemos antes. No entanto, se a saúde
não for maior que zero, isso significa que a saúde é zero porque
a fixamos em zero, então ela não pode ser negativa Se for zero, vamos fazer
o inimigo morrer. Vou
criar uma nova variável,
um lingote chamado B está morto Eu geralmente adiciono um B na frente
das minhas variáveis de ouro. E você pode ver que se você
arrastá-lo aqui, você não consegue ver o B. Isso geralmente é feito em
C plus plus e
também é muito mais fácil pesquisar se você
tiver um jogo maior. Agora vamos adicioná-lo e defini-lo como verdadeiro. Sempre que a saúde
não for maior que zero, significa que o inimigo está morto. Então, podemos definir isso como verdade. Além disso, continue atualizando a saúde,
pois também precisamos
atualizar a saúde
e fazer o efeito de golpe. Agora, para este, podemos
clicar duas vezes e criar nós de rota
traseiros, não
parece ruim,
assim. Agora, o que podemos fazer com
esse? Com esse. Obviamente, aqui
no efeito de golpe, sempre que atingimos o inimigo
que atingimos antes. Não quero reproduzir
a animação inativa sempre que o inimigo morre. Vamos levar esse valentão aqui. Depois de adiarmos esse tamanho, o tamanho do
livro de sprites , atrasamos Em vez de reproduzir a animação
inativa instantaneamente, precisamos verificar se o
inimigo está morto ou não Vamos atacar aqui, fazer um galho e perguntar: o inimigo
está morto? Sim, o inimigo está morto. Ok, então queremos
jogar um evento de morte. Ainda não
criamos um, então vamos até aqui, clique com o botão
direito e crie um novo evento
personalizado chamado morte. Podemos fazer algo
com isso mais tarde, mas aqui, se o
inimigo estiver morto, quero jogar o evento da
morte aqui embaixo. Se o inimigo não estiver morto, quero reproduzir a
animação inativa como fiz antes Vamos excluir este
e reconectá-lo aqui. E clique duas vezes mais uma vez. Ok, aqui
no evento da morte, o que queremos
fazer é simplesmente reproduzir
a animação da morte. Então, vamos novamente,
assim como antes, considerar tudo isso aqui
junto com o atraso. Eu vou copiá-lo. Vou colar aqui embaixo. E eu vou
conectá-lo assim. Em vez de reproduzir
a animação de sucesso, vou desconectá-la, esconder tudo e
exibir apenas a animação da morte Vá em frente e conecte esse. Em vez disso,
vamos atrasá-lo. Depois de atrasarmos,
quero destruir Acta. Quero remover esse
Acta do mapa. Vamos
clicar em Avião. Agora, sempre que eu
clico no inimigo, agora o inimigo morre. Você pode ver o inimigo
desaparecer. E isso parece bom. Basicamente, você também pode ver que
a animação da morte é estranha, o inimigo cai.
Temos que consertar isso. Antes de fazer isso,
também precisamos aumentar o nível, porque quando o inimigo morre, queremos que o próximo
inimigo esteja lá Também posso ver que
acabei de ver um dólar. Se você clicar muitas vezes, você pode continuar clicando e
eu não quero fazer isso. Também temos que fazer uma verificação
aqui no modo não clicado. Não queremos clicar no inimigo sempre que ele estiver morto. Vamos mover isso e
dizer se o inimigo está morto. E eu vou
escrever “not bully in” Isso significa que se o
inimigo não está morto, se está morto é falso, é
isso que significa aqui. Se o inimigo não estiver morto, podemos fazer
um galho aqui e perguntar se o inimigo não está morto. Podemos prosseguir
e causar danos. Se o inimigo estiver morto, não
queremos fazer nada. Vamos clicar em Planejar agora e
ver se esse bug foi corrigido. E eu posso enviar spam, você
pode ver a caixa lá, então tudo está funcionando novamente. A animação da morte é
estranha. Temos que consertar isso. Mas vamos continuar
na próxima lição e trabalhar na incrementação
do nível
46. 5.12 Incrementando o nível: Ok, para aumentar o nível, acho melhor fazer isso
no modo de jogo, porque é aqui que o
nível atual é controlado Vamos fazer isso aqui, aqui. Vamos criar um novo evento personalizado. Vamos chamar isso de nível
de corrente incremental aqui. Muito simples. Só queremos pegar
o nível atual que
queremos arrastar
aqui e dizer mais, mais, porque
mais mais significa que você incrementou em
um e depois o configura É a mesma coisa que
fazer isso e dizer mais um e depois
definir assim. É o mesmo método. Isso é muito mais curto. Novamente, lembre-se, mais
mais significa que você adiciona um. Se você precisar adicionar
dois no futuro, você não pode fazer assim, você tem que fazer assim. Mas isso
realmente não faz sentido. Nosso nível está apenas
aumentando em um. Vamos fazer isso dessa maneira. Agora aumentamos
o nível em um, mas precisamos ter certeza de
não ultrapassar o nível máximo. Vou criar uma
nova variável chamada nível
máximo e também vou
fazê-la como um número inteiro Aqui você pode escrever
qual é o nível máximo. Até agora, na tabela de dados, posso ver que meu
nível máximo é 11 aqui. Vou escrever 11
como meu nível máximo aqui. Vou me arrastar para baixo e
dizer que se o nível atual for menor ou igual
ao meu nível máximo, podemos
seguir em frente
e gerar o inimigo Porque quando você
aumenta o nível, você também precisa
gerar o próximo inimigo Vou perguntar aqui, meu nível atual é menor ou
igual ao nível máximo, não
ultrapassamos o nível máximo. Se isso for verdade, eu
quero gerar o próximo inimigo. Lembre-se de que, para o inimigo de desova, já
fizemos isso
no controle de jogo Se eu for para o controle de jogo, teremos esse inimigo de desova Vamos usar isso. Na verdade, nós usamos
isso aqui também. Então você pode copiar isso. Ou se você quiser se
lembrar de como você fez isso, você pode usar o controle do
player. E, na verdade, vejo que não
criamos uma variável para essa. Vamos aqui, promover isso para uma variável, chamá-la de controlador de jogador. E conectei e conectei
este com este em vez disso. Na verdade, vamos nos
desconectar porque agora os dois estão conectados Mantenha pressionada a tecla Alt e clique para desconectar e conectar apenas esta Vá em frente e
junte-os assim. Agora, aqui embaixo, vamos pegar
o controle de jogo e dizer gerar um inimigo conectado Lembre-se de que criamos essa
função aqui chamada fazer com que o inimigo apareça
no nível atual Basicamente,
acabamos de obter o nível atual, obtivemos o nome do inimigo
porque é um novo inimigo. Porque lembre-se de que
aumentamos o nível em um. O nível atual é
incrementado em um. Vai pegar
o próximo inimigo
na tabela de dados, se fosse o. Agora vai aumentar
o nível em um. Agora vai pegar o Roe, o ladino vai ficar
preso aqui e desovar Vamos em frente e aqui. Agora, isso deve funcionar muito bem. Vamos aumentar o nível. Temos que executá-lo em algum lugar. E vamos atropelá-lo
no inimigo. Se eu abrir o inimigo novamente, sempre que o inimigo morrer, pouco antes de destruirmos o Acta Vamos continuar e
aumentar o nível. O nível de incremento está
no modo de jogo. Já temos uma referência. Vamos pegar,
digamos, incrementar. Se eu puder soletrar aqui,
aumentar o nível atual, então destruiremos o ato Vamos clicar em reclamar. Veja o que acontece se eu clicar em jogar? Eu mato o inimigo,
o inimigo morre. Nos próximos períodos, eu posso
clicar novamente, o inimigo morre. Você pode ver que as
animações de morte precisam ser corrigidas. E podemos fazer isso de uma
maneira fácil,
mas, como você pode ver, tudo
está funcionando bem. E agora parece um jogo. Agora você pode clicar no
próximo inimigo que aparecerá
depois e assim por diante Incrível, agora essa é uma progressão
muito boa. Vamos
salvar tudo,
e vamos corrigir as
animações de morte na próxima
47. 5.13 Consertando as animações de morte do inimigo: Para corrigir as animações de morte. Vamos ver os ativos
e nos caracterizar aqui. Temos que consertá-los porque
há algo errado com essas animações de morte
se clicarmos nelas. Em vez de fazer isso aqui,
acredito que temos que
fazer isso no sprite, abrir as texturas e
abrir a noite,
por exemplo, e é
a Morte da Morte Abra, você pode
ver que o ponto O está aqui, por exemplo, vamos
verificar a noite, a noite, vamos ver que a noite está no nível 11
aqui durante a noite. Vou definir a
saúde como uma, na verdade, vou
deixar que esteja aqui. Vou definir meu dano. Isso é muito mais fácil se eu abrir o controle do player
ou preferir o player. E o dano do cursor. Vou apenas configurá-lo para
algo muito alto para que possamos fazer o modo de jogo instantâneo. Vamos para o modo de jogo aqui. Vamos definir o
nível atual para 11 jogadas. Eu posso clicar aqui, o inimigo
é empurrado para o lado. Isso ocorre porque o ponto de
articulação está em
um lugar errado no ponto de
articulação em vez
do centro central Você precisa alterar
este para personalizado. Agora você tem que jogar com
o ponto de pivô aqui. Você pode brincar com ele e
ver o que acontece. É por isso que não
precisamos brincar com isso. Um que queremos jogar é esse. Agora está às 24. Se eu dissesse isso para a
alfândega novamente, 24, o que eu quero que você
faça é dizer algo como menos oito
geralmente é um bom número Menos oito. Você pode
ver que está no meio. Agora tente incrementar em
oito ou, digamos, menos oito. Normalmente, para
o piloto, é mais oito. Menos oito, menos
oito parece funcionar. Temos que fazer isso em todos eles. Se eu abrir os ativos novamente, personagens, texturas, agora tenho que fazer isso
para todos eles. Em vez de fazer isso,
deixe-me clicar com o botão direito do mouse, vá para a seleção Asset Action
It na matriz de
propriedades do sprite Vamos definir o
ponto de articulação para ser personalizado. Agora eu não posso mudar, por algum motivo, o ponto de articulação
personalizado aqui. Eu tenho que fazer isso manualmente. Não acredito que possamos fazer isso. Temos que fazer isso manualmente. Mas definimos o
ponto de articulação como personalizado. Agora vamos
clicar no primeiro. Digamos que menos oito, assim como antes, temos que
fazer isso com todos eles. O próximo menos oito, o próximo menos oito, próximo menos oito e o último Agora vamos ver se
isso está funcionando. Vamos clicar em jogar. Agora, se matarmos esse inimigo, a
animação ficará boa. Também consigo ver um bug. Se você perceber que, se eu clicar em
jogar, o inimigo morre, o inimigo aparece
novamente, desaparecendo Assim, você pode ver o inimigo ou um quadro aparecer
antes de desaparecer Vamos continuar e
corrigir isso aqui também, enquanto vemos o bug. Vamos ao Blueprint.
Vamos para a base inimiga, inimiga. Está acontecendo aqui na
morte porque nós a atrasamos. Em seguida, aumentamos o nível e
depois destruímos o ator. Se você quiser, pode
pegar esse sprite aqui, deixe-me mover tudo isso Podemos dizer aqui e
dizer que é um loop,
ou melhor, definir um loop Defina o loop, podemos definir
o loop como falso. Então você pode tentar
ver aqui quando eu mato o inimigo para fazer isso. Mas talvez agora ele também defina o loop como
falso para o próximo Vamos realmente ver o que ele faz. Provavelmente acontecerá se eu
entrar no modo de jogo. Agora abra o modo de jogo. Defina o nível atual para
algo como nove jogadas. Agora, se eu matar esse cara, o
próximo, tudo bem. Agora tudo está funcionando bem. Isso resolve o problema. Vamos voltar para o nível 11. Você pode ver que fixa
o ponto de pivô, corrige a animação da morte desse
cara Aqui você tem que testar todos
eles para o nível um. Deixe-me mostrar alguns
deles e eu tenho que
fazer isso no meu tempo,
caso contrário, o vídeo será muito longo. Mas deixe-me
mostrar dois deles. É o próximo, esse aqui. Vamos para Texturas. Vamos encontrar a Morte
aqui embaixo. Vou selecionar todos eles. Clique com o botão direito do mouse. Seleção na Property Matrix, aqui
no sprite Vamos mudar o
ponto de articulação para personalizado. Vamos, vamos encerrar isso. Agora, abra cada um aqui. Agora, para este, você
pode ver que está aqui em cima. Talvez tenhamos que corrigir o y e o X. Vou
dizer menos oito Não é menos oito,
é mais oito. Mais oito, novamente para
voltar ao padrão. E mais oito, novamente,
talvez eu precise. Mais oito novamente,
assim, são 48. Vamos tentar fazer isso. Mais 16, basicamente, no total. Mais 16, mais 16. Eu tenho que adivinhar e ver
se está correto aqui. Mais 16. 16 para
este também. Vamos clicar em Jogar. Você pode ver que a
animação da morte está correta. Por enquanto, a morte está correta. Temos que fazer isso com
todos eles novamente. Mais oito menos oito pixels é sempre a melhor
opção O próximo é o Roe. Vamos experimentar o E. Você mesmo pode experimentar
o resto. Morte, clicamos
na seleção na Matriz de Propriedades. Aqui, vamos para Sprite. Altere o ponto de pivô
ou o modo de pivô para personalizado. Vamos abri-lo
no primeiro novamente, digamos mais oito. Acho que é mais
oito novamente. Mais 16. Vamos fazer isso para
o resto deles. Digamos que
mais 16 aqui também. Mais 16, acho que é
o mesmo número. Vamos copiar esse
número e, basicamente colar esse número em
todos eles assim. Apenas tenha cuidado, nem
sempre é o mesmo número no X. Preste atenção agora vamos jogar e ver Agora a
primeira morte está correta, a segunda morte está correta Ok, vamos fazer isso. Eu vou
fazer isso sozinho agora. Basicamente, basta editá-los
na matriz de propriedades
para personalizar e , em seguida,
dizer mais oito ou menos oito até que seja corrigido Tudo bem, agora eu terminei. Quando eu clico agora, você pode ver que sempre que
eu mato os inimigos, eles estão todos corrigidos em relação
à animação da morte. Então, tudo está indo bem. Eu só vou fechá-lo. Agora foi isso. Lembre-se de voltar ao controle
do jogador, controlar o modo de jogo e definir
o nível atual para um, se quiser. Além disso, configure os
controles do player para não jogar. Controle o
dano do cursor do jogador até cerca de 15. Novamente, compile e agora terminamos com isso e vamos passar para a próxima
48. 5.14 VFX de sucesso de clique: Tudo bem, então o que
podemos fazer agora é fazer um efeito de golpe sempre que
estivermos atingindo o inimigo Então, podemos ter algum tipo
de efeito que aparece. Então, efeito visual
sempre que estamos batendo. Vamos fazer isso. Agora, para o efeito de sucesso, eu lhe dei algo
dentro do material do curso. Se você abri-lo aqui
nos materiais do curso, eu quero que você abra a interface do usuário. Na interface do usuário, eu dei a
você um efeito de sucesso aqui. Vamos colocá-lo nas imagens. Então, deixe-me
arrastá-lo até aqui. Adicione agora que é pixel. Vou clicar com o botão
direito do mouse nas ações certas e aplicar
papel às configurações. Isso é o que vamos adicionar. Apenas um efeito simples para isso. Novamente, são alguns
sprites juntos. Vamos clicar com o botão direito do mouse, como
antes, e extrair os sprites. Vá em frente e selecione
Grade aqui. Para a grade, temos que
adivinhar o que é. Talvez 64 por 64. Você pode ver que
na verdade é menos do que isso. Mas o que podemos fazer é ver
que é dois a dois. Então, podemos realmente dividir isso, podemos dizer dividido por
dois, ou você pode escrever 32. Isso também é bom, dividido por dois e será
correto, 32 por 32. Vamos
extrair tudo isso. Deixe-me escrever, clique aqui para não ficar
cheio de tudo isso Deixe-me criar uma nova pasta, e vou
chamá-la de Texturas E vá em frente e
selecione tudo isso. E selecione isso também. E adicione-o aqui e aqui. Vamos fazer um
flip-book com este. Eu seleciono tudo isso
e posso escrever Clique em Eu posso fazer, sair do flip book. Vamos chamá-lo de flip
book. Efeito de sucesso. Vamos abri-lo. E isso é o que parece agora
para o efeito de impacto. Acho que os quadros por
segundo em 15 são bons para mim. Parece bom. Sempre podemos
ajustá-lo no jogo. Vamos fechá-lo por enquanto. E arraste isso para
a pasta de imagens. Está aqui, e
podemos usá-lo agora. Você pode fazer isso de duas maneiras. A primeira maneira de
fazer isso é
no blueprint, assim como antes Assim como os outros sprites, você pode realmente adicionar
o sprite aqui Sempre que você clica no inimigo, você pode jogar o sprite
para que ele cause algum dano No entanto, a desvantagem
é que você só pode jogar uma instância
do efeito de dano se clicar duas vezes uma
após a outra Ele cancelará
o último efeito e reproduzirá o
novo. Eu não gosto disso. Eu quero gerar
quantos efeitos eu quiser, dependendo da
velocidade do jogador Clicando disse, vamos
em frente com as plantas. E aqui, vamos
clicar com o botão direito do mouse em criar uma nova classe de blueprint e criar um ator simples que contenha esse flipbook. Crie um ator. Vamos chamar
isso de efeito de impacto da BP Vamos abri-lo aqui. Vamos adicionar um flip book. Se você pesquisar por flip book, poderá adicioná-lo Vou
chamá-lo de Hit Effect. Agora podemos adicionar o
flip book aqui. É esse único flip-book. Efeito de golpe. Vá em frente
e selecione-o. E aqui você pode ver isso. Agora, para esse efeito de impacto, vou
até a colisão e me
certificar de que não haja nenhuma colisão, porque não
quero,
para a colisão, remover
essa colisão, gerar
eventos de sobreposição Eu vou dizer não aqui
para as predefinições de colisão. Eu só vou
dizer que não há colisão
, não tem nenhuma
colisão. Eu e compilo e
vamos fechá-lo. Agora eu quero gerar isso
sempre que eu clicar no inimigo. E lembre-se de que a desova é sempre feita sob o controle do
jogador Então, eu vou
entrar aqui para fazer isso. Vou apenas criar
um novo evento personalizado. Vou chamar isso de
efeitos de geração, como antes, arrastar até aqui e dizer
gerar Acta Agora, qual cláusula
queremos gerar? Não precisamos
conectá-lo aqui porque é apenas um valor estático e
é o efeito de impacto, esquema que queremos gerar Eu vou dizer que sempre
apareça, ignore as colisões. Agora, para a transformação de spawn, depende de onde clicamos com o mouse para encontrar esse valor O que podemos fazer é clicar com o botão
direito do mouse e
usar essa função. Se você apenas pesquisar por mouse, se não souber como eles
são chamados, é isso que eu faço. Às vezes, você pode dar
uma olhada em tudo isso. O que podemos usar para esta
instância, podemos usar essa. Converta
a localização do mouse no espaço mundial. Onde quer que o mouse esteja, vamos gerar o efeito em
que o jogador clicou Vamos
fazer isso. conectá-lo aqui assim. Isso vai transformá-lo em uma transformação para nós
e conectá-lo. Vamos tentar fazer isso. Por enquanto, temos que gerar
o efeito de golpe em algum lugar. Vamos criá-la aqui dentro
do inimigo. Sempre que clicamos no inimigo
e ele não está morto, aplicamos o dano, mas também queremos
reproduzir o efeito de golpe. Vamos atacar aqui a partir
do controle do player. E nós realmente não temos uma referência ao controle do
player. Deixe-nos fazer isso. Agora deixe-me arrastar esse modo de
jogo até aqui. Deixe-me dizer controlador. E selecione-o. Já
fizemos isso antes. Podemos arrastar e dizer, obter a referência
do controlador do player. Já temos essa interface de
projeto. Vamos, com razão,
promover isso para uma variável chamada controlador de
jogador Vamos
conectá-lo aqui. Temos isso muito rapidamente. Agora podemos pegar esse
controle de player até aqui e dizer como o
chamamos. Se eu simplesmente voltar, não me
lembro, eu volto aqui. Chamamos isso de
efeito spawn hit, arraste aqui. E diga o efeito spawn hit, respondendo toda
vez que aplicamos dano à frente,
compilamos e salvamos Agora, se
clicarmos no inimigo, veremos que realmente o geramos aqui Mas agora você pode ver que
está girando para sempre. Temos que consertar isso também. Você também viu que o efeito está basicamente dentro
do inimigo. Eu
também não quero que isso resolva isso, pois o efeito está
dentro do inimigo. Isso ocorre porque, lembre-se de
que estamos trabalhando com dois D e basicamente
controlando esse valor verde. O valor verde,
lembre-se de que é o y, você move as coisas
para trás ou para frente, em vez de ser zero
na posição do mouse. Vamos pegar
isso e dizer mais, vamos tentar dizer
mais um em y. Vamos
converter isso de volta aqui. Jogue e veja se mais
está atrás do inimigo. Se você simplesmente excluir isso e
disser menos, menos um, vá em frente
e conecte-o Jogue. Agora você pode ver que
está na frente do inimigo. Ok, agora vamos em frente
e temos que destruir. Porque lembre-se de que é muito importante que
você destrua o ato. Porque se você continuar clicando, lembre-se de que estamos gerando atos. Basta dar uma olhada aqui,
quantos atores você está gerando. Toda vez que clico,
estou criando um ator. Imagine que se você continuar
clicando 2 horas depois, você
terá tantos atores que vai
travar seu próprio jogo. Certifique-se de que, sempre que
gerar algo, você também o remova quando
não precisar mais dele. Dentro desse efeito de golpe
no início do jogo, vou
usar esse efeito de golpe. Este é basicamente
esse flip-book aqui. Agora vou dizer que o
conjunto de loops é falso, não
quero que ele se não
quero que ele Além disso, assim como antes de
usarmos esse tamanho de flip book, obtenha o tamanho do flip book
e, em seguida,
criarei um nó de atraso Depois que o efeito for
reproduzido uma vez, vou destruir o ator. Para qual ator eu vou? Eu só vou me destruir,
ou seja, vou destruir
esse projeto aqui E quando eu clico em reproduzir agora, e também presto atenção
aos atores aqui em cima,
eu clico aqui, eu gero um ator,
mas ele volta para 15 e só toca uma
vez, como você pode ver aqui Mesmo que eu envie spam
aqui e clique, eu faço alguns danos. Parece bom. Sempre voltará para
15 porque destrói todos os efeitos que eu crio e
que estão funcionando perfeitamente Agora vamos passar
para a próxima.
49. 5.15 Criando a interface de usuário de texto flutuante: Vamos agora
criar a interface de usuário de texto flutuante, que aparece sempre que
você atinge o inimigo. E dirá
quanto dano você causou. Agora, antes de fazermos isso,
deixe-me adicionar HP por trás do nome de saúde. Sabemos que é saúde. Vamos fazer isso muito rapidamente
antes de continuarmos. Se você abrir o widget
da barra de saúde, modelo que criamos
anteriormente no gráfico, é
aqui que
adicionamos a Agora lembre-se de que, se você quiser texto
estático além de
algum texto dinâmico, precisará usar o
formato de texto com muita facilidade. Basta escrever
texto em formato a partir daqui. Vamos escrever
colchetes abertos e
vou chamá-los de saúde
e fechar colchetes. Agora isso aparece, então
podemos escrever no espaço HP. Temos a HP por trás disso. E eu vou
deletar tudo isso. E, na verdade, podemos simplesmente arrastar a
partir daqui
e conectá-la, e ela usará
essa variável inteira Agora isso está corrigido e é tudo o
que precisávamos fazer. Agora você pode ver se
eu clico em Jogar. Se eu simplesmente reorganizar
isso e clicar em jogar. Agora você vê que eu também
tenho HP no final das contas, e acho que
parece muito melhor. Ok, vamos fechá-lo. Vamos agora clicar com o botão direito aqui. Vá para a interface do usuário
e crie um novo widget, blueprint. Faça um novo. Vamos chamar isso
de texto flutuante. Agora, para este, vamos
abri-lo mais uma vez. Vamos adicionar uma tela primeiro.
Em seguida, vamos adicionar algumas para o texto. Na verdade, podemos simplesmente copiá-lo
das informações do inimigo. Podemos usar o mesmo aqui, controle para o texto. Vá aqui para o
painel de tela e controle V. E aqui está
para a tela cheia. Em vez disso, vou alterá-lo para
desejado na tela. Em seguida, o tamanho da tela novamente, alterando-o para um laptop
genérico como antes. Além disso, garantir que
o texto aqui
esteja, já é porque o
copiamos daqui Mas certifique-se de que
o alinhamento seja 0,50 0,5 e a posição seja 00 É perfeitamente
censurado aqui e também que o tamanho do
conteúdo esteja marcado Ok, então aqui está o texto
que precisamos ter. E isso foi, na verdade, quero dizer, não
há muita coisa nisso porque vamos
ter os danos aqui. Mas você pode simplesmente
escrever um texto de preenchimento se quiser, por exemplo Você pode escrever, por exemplo, esse é o dano
que o jogador causou. Obviamente, o
jogador não vai fazer muita coisa
no começo. Mas, novamente, isso
é apenas um preenchimento. Vamos fechá-lo
e continuar.
50. 5.16 Animação de texto flutuante: Agora é hora de fazer
alguma animação da interface do usuário. Se você abrir sua interface de texto
flutuante, mais
uma vez você terá a
animação aqui embaixo. Agora, se você não o tiver aberto, você sempre pode clicar
aqui e na guia Animação. E então você pode clicar
em Duck in Layout. E vai ficar ativo
o tempo todo. Agora, para criar uma animação de interface de usuário, você precisa primeiro criar a animação. Clicando aqui embaixo, vou
chamá-lo de texto flutuante aqui. Primeiro você precisa
clicar no que quiser para animar esse texto Por exemplo, neste texto, na verdade, vou
mudar o nome dele. Não é informação do inimigo, é um texto flutuante como este. Você precisa clicar na faixa
positiva ao fazer isso e selecionar o texto
flutuante. Você pode ver que ele
aparece aqui embaixo. Clicando no texto flutuante, clique aqui novamente. Então temos algo
chamado transformação. E é aqui que você altera
a posição na tela, assim
como a
rotação do texto. Se você apenas abrir a
transformação e a tradução, é
isso que queremos editar. O que eu quero fazer aqui
é muito, muito simples. Eu só quero fazer esse texto flutuante voar para cima
sempre que eu atingir o inimigo Então, vamos começar
aqui do zero, está
tudo bem, nada vai
acontecer. É zero. Agora, quando eu vou para,
digamos, 0,6 segundos, acho que vou fazer com que
seja algo como -100 E o y, está aqui em cima Agora você pode ver
quando você o arrasta, o texto voa para cima. Agora você tem que testá-lo
no jogo para ver o quão rápido ele realmente voa. Mas se você simplesmente clicar no espaço, se eu simplesmente remover essas linhas aqui para o texto de teste flutuante, você pode simplesmente clicar
no espaço para reproduzi-lo. Isso faz você ver o quão
rápido ele realmente é reproduzido. Eu acho que está tudo bem.
Sempre podemos ajustá-lo se não
estivermos satisfeitos. Agora, a próxima coisa que eu quero
fazer é que ele desapareça nesta
fase da animação. E então aparece, e depois
desaparece mais uma vez aqui
em cima. Vamos clicar aqui. Vamos encontrar a opacidade
aqui embaixo, a opacidade Rendo. Vamos continuar e clicar nele. Agora, no começo,
eu quero que seja zero. Começa sem opacidade e depois vai para
algo como 15 Aqui, aos 15 anos, quero que a opacidade seja uma.
Novamente, parece. Agora você pode ver que aparece, ou aparece aqui para nós, é invisível no começo. Então eu acho que com 0,45
eu quero que seja um. Novamente, basta
clicar neste pequeno ponto aqui para adicionar um ponto de animação. Então, no final,
quero que seja zero. Mais uma vez, você pode ver
que parece assim. E então desaparece aqui
novamente. Clique no espaço e
veja como é a animação. Uma animação muito simples, mas com aparência profissional. De alguma forma, muito rápido. Você pode passar muito tempo, às vezes
eu passo meia hora,
1 hora , 2 horas para fazer
algo muito complexo. Você sempre pode fazer com que o
texto não apenas voe para cima, mas ele possa voar assim em um arco para o lado, como este Você pode tentar brincar com a animação o
quanto quiser. Sempre parece profissional
quando um jogo é muito bom. Por exemplo, animação I, animação
de texto. Isso foi tudo o que precisávamos fazer agora que temos
a animação. Vamos continuar com a próxima.
51. 5.17 Gerando o texto flutuante: Tudo bem, para texto flutuante, precisamos
gerá-lo no nível Agora, não podemos
adicioná-lo ao inimigo, geralmente entramos no
inimigo e, dentro daqui,
adicionamos um widget como
a barra de saúde e assim por diante No entanto, para o texto, já que estamos enviando spam como se estivéssemos enviando spam o inimigo e estamos
clicando aqui, muitos textos
aparecerão como texto de combate Não podemos adicioná-lo ao inimigo porque, se o
adicionarmos ao inimigo, somente uma instância desse
texto aparecerá por vez. Parecerá um pouco estúpido se apenas um texto estiver voando aqui, assim como o efeito de impacto aqui. Quando clicamos no inimigo, temos que gerar o texto
exatamente como fizemos aqui Lembre-se de que, com o efeito de sucesso, na verdade, o
anexamos a um ator que aparece e depois se
exclui Temos que fazer o mesmo método. Vamos clicar com o botão direito do mouse aqui, criar uma nova classe de blueprint Basta selecionar um ator simples, vamos chamar isso de texto flutuante
BP Agora, dentro daqui,
vamos abrir esse. Para o texto flutuante, vamos clicar em um widget de
pesquisa Vá em frente e selecione o widget um. Vamos
chamá-lo de texto flutuante. Agora, clicando nele, vamos
mudar o espaço para a tela, porque queremos que ele o visualize em direção à tela da classe
de widget Vamos alterá-lo para
o texto flutuante. Desenhe o tamanho desejado e,
em seguida, tudo ficará bem. Vá em frente e compile a
próxima coisa que queremos fazer. Agora lembre-se de que precisamos
gerar isso sempre que
clicarmos no inimigo Vamos ver aqui, os inimigos e a base. Sempre que clicamos no
inimigo e
aplicamos dano, queremos gerar esse ator Agora lembre-se de desovar.
Estamos fazendo isso no
Player Controller Vamos até o controle do
Player, abra-o, aqui
estamos fazendo a desova aqui
dentro Vamos fazer
um novo evento para isso. Vamos clicar com o botão direito do mouse e criar um novo evento
personalizado para este. Vamos chamá-lo de gerar texto
flutuante. Novamente, vamos clicar com o botão
direito
do mouse aqui e usar aquele chamado spawn
actor from class Essa, a coisa que
queremos que surja como antes. Não precisamos que isso
seja dinâmico como
esse no evento porque é apenas uma classe de classe estética
que estamos criando. Assim como o efeito de impacto aqui. Vamos selecionar
o texto flutuante que
queremos gerar e, em
seguida, conectá-lo Agora, onde
queremos gerá-lo? Precisamos de um local de desova, verdade não
precisamos da transformação Em vez disso, vou pegar
isso e dizer faça transformação. Quando fazemos isso, estamos
quebrando a transformação. Lembre-se de uma trans: se você
olhar o painel de detalhes, se selecionar algo, ele consiste na
localização, rotação e escala do item
quando o dividimos. E é chamado para
fazer, lembre-se de que chama quebrar se
for dessa maneira, mas é chamado,
vai desse jeito. Sempre pode arrastar a partir daqui. Digamos, por exemplo, um vetor de quebra. Mas eu não posso dizer fazer
vetor dessa forma. Isso não faz sentido. Quebrando desse jeito,
fazendo desse jeito. Estamos fazendo a transformação. Assim, podemos ver a localização, rotação e a escala também. Agora que temos a localização, vamos arrastá-la até
aqui e ver o que acontece. Sempre podemos editá-lo mais tarde. Para isso, vou
chamá-lo de local de desova. Então, também precisamos do
texto que precisamos ter, qual deveria ser o texto? Vamos editar isso mais tarde. Não precisamos fazer isso agora,
mas agora estamos pelo menos gerando
o texto também aqui embaixo. Certifique-se de
selecionar sempre gerar ignorar colisões e
continuar compilando Vamos garantir que as
colisões não ocorram. Se eu for até o texto flutuante
e clicar no widget,
desça até o caractere inferior, aumente o número
não, remova, gere eventos de sobreposição E também para as predefinições de
colisão, defina-a como sem Não queremos nenhuma colisão
desse ator aqui. Vá em frente e salve tudo. Agora, aqui na base inimiga, vamos tentar criá-la aqui
para o controle de jogo Nós já temos isso aqui. Vamos atacar e dizer que
gera texto flutuante. Vá em frente e selecione
agora que temos que especificar um local
onde queremos gerá-lo Agora, onde queremos desová-lo, é exatamente onde esse
inimigo está atualmente E lembre-se de que
estamos no inimigo. Vou me arrastar
daqui e dizer pegue uma localização. Ou, para obter a localização do inimigo, eu vou apenas
gerá-lo, portanto Agora vamos clicar em Jogar
e ver o que acontece se eu clicar no ato aqui
ou no inimigo. Você pode ver que
está realmente desovando, mas também precisamos removê-lo Não parece cheio de bugs assim, mas vamos continuar com
isso em outra lição Pelo menos agora estamos gerando o texto quando
clicamos no inimigo Como você pode ver aqui, estamos basicamente reproduzindo esse texto flutuante de
spawn O que eu também quero fazer aqui
é que o efeito spawn hit é basicamente jogado
toda vez que atingimos o inimigo E estamos gerando
o texto flutuante porque estamos atingindo O que podemos fazer agora, já que não vejo nenhum
problema com isso no momento, sempre
podemos gerar o efeito de
impacto aqui Toda vez que causamos danos, temos que jogar isso e aquilo. Gosto de jogar o mínimo de funções possível para que você não
se confunda com o jogo. Mais tarde, vou
controlar o X para remover isso. Em seguida, vou conectar
esse texto flutuante de spawn. Só então eu vou
entrar aqui. Aqui podemos gerar
esse efeito de sucesso. Já temos esse
evento aqui dentro. Basta arrastar e dizer,
spawn hit effect. Agora, sempre podemos
gerar o efeito de acerto toda vez que geramos
o texto flutuante Se houver uma instância
posterior no jogo em
que tenhamos que gerar o
texto flutuante sem o efeito de acerto, sempre
podemos voltar
e adicioná-lo aqui Mas, por enquanto, não
precisamos adicionar dois
eventos o tempo todo. Sempre podemos jogar isso e
tudo ficará bem. Ok, isso foi por enquanto. Vamos continuar
com o próximo.
52. 5.18 Atualizando a exibição de texto flutuante: Ok, agora vamos
atualizar o
texto flutuante corretamente. Agora você pode tentar
fazer isso sozinho, porque na verdade é uma tarefa simples. Então, tente pensar em como posso atualizar esse
texto flutuante corretamente. Quando eu clico no inimigo, esse texto deve ser
exibido corretamente. É sempre bom fazer isso sozinho se você ainda não
tiver certeza de como fazer isso Vamos tentar continuar
juntos agora. Às vezes, gosto de
começar ao contrário. Em vez de
começar pelo controle do player e
tentar atualizar as coisas aqui. Eu gostaria de começar
com a última etapa, porque ela fará
mais sentido no final. Vamos para a interface do usuário. Vamos abrir o texto flutuante. Basicamente, o objetivo que queremos
fazer é atualizar esse texto aqui. Nós o chamamos de texto de texto
flutuante e, em seguida , o
tornamos variável
aqui no gráfico. Vamos simplesmente deletar tudo isso. O que queremos fazer
é
pegar esse texto e usar
aquele chamado texto definido. Esse é basicamente o nosso objetivo. Queremos definir o
texto com um valor
semelhante ao dano que causamos com o mouse. O que podemos fazer é
clicar com o botão direito do mouse e fazer um evento personalizado. E então podemos dizer
atualizar texto flutuante. Podemos simplesmente usar
esse evento personalizado. Vamos
conectá-lo agora texto com o qual queremos
atualizá-lo Sempre
podemos simplesmente
conectá-lo ao evento e atualizá-lo posteriormente de forma dinâmica Vamos chamá-lo apenas de texto, ou você também pode
chamá-lo de texto flutuante. Vou chamar isso de texto. Na verdade, não
precisamos chamá-lo texto
flutuante e compilar Agora precisamos usar essa
atualização, texto flutuante. Vou atualizá-lo por meio do meu ator, porque é isso que
faz mais sentido para mim. Vou ver as plantas. Indo para o texto flutuante. Abra-o aqui dentro, queremos usar essa
atualização, texto flutuante. Eu, eu vou usá-lo
sempre que gerarmos o ator. Toda vez que clico e
geramos esse ator, quero que ele seja
atualizado instantaneamente Eu só vou usar o início. Jogue aqui no ator de
texto flutuante aqui. Vamos usar esse texto flutuante. Adicionamos o widget,
vamos arrastá-lo até aqui. E digamos que obtenha dados do widget do usuário. Ou obtenha o
objeto do widget do usuário, em vez de dados. Agora, este, vamos
dizer, novamente, custou dois. Vamos falar do texto flutuante aqui. Vá em frente
e conecte-o. Agora, para este, vamos
arrastar e agora podemos usar a
atualização de texto flutuante, UI. Vamos arrastar e dizer
atualizar texto flutuante I. Temos que ter um valor
desse texto porque agora você pode ver se eu apenas
escrevo olá, por exemplo. E eu compilo e clico em Play. E eu clico aqui, você pode ver que agora ele está
sendo atualizado corretamente. No entanto, como faço
para obter o dano aqui? Porque na verdade não
temos uma variável de texto e eu realmente
não tenho plug-ins
para ela como qualquer entrada Agora, o que você
pode fazer é criar uma nova variável. Se eu criar uma nova variável
aqui e chamá-la apenas de texto, vou
transformá-la em uma string. O que podemos fazer agora é
descer e abrir o
Player Controller. Lembre-se de que esta é a próxima etapa
se retrocedermos, porque no controle de jogo
geramos esse texto flutuante Como você o transformou em
uma instância editável e expôs no spawn o que acontecerá
agora se você compilar,
às vezes não
aparece, então você precisa clicar em Arquivo e
atualizar todos Ao fazer isso, você pode
ver esse texto aparecer. Isso está acontecendo porque
você está configurando isso como uma instância editável
e exposta na geração, o que torna isso exposto aqui quando
geramos O que podemos fazer agora
é pegar esse texto e, novamente
, colocá-lo aqui. Vou colocá-lo acima desse local de desova e
podemos deixar que seja chamado de texto Isso é bom. Agora, se eu
voltar para o texto flutuante, deixe-me pegar esse texto
aqui e conectá-lo aqui. Isso mudará
automaticamente meu texto em uma string
como essa. Ok, agora estamos adicionando-o ao controle
do jogador aqui, então ele deve aparecer
na base inimiga. Então, vamos verificar se
os inimigos
abrem a base inimiga. E agora podemos ver que
temos uma entrada de texto. Agora, para a entrada de texto, o que simplesmente queremos exibir é o dano do mouse. E nós já
temos isso. isso no peão do jogador, temos o dano do cursor Você sempre pode controlar C, controlar V. Copie-o aqui e
vá em frente e conecte-o. Agora, ele converterá seu float em uma variável de texto Ok, isso
realmente deve funcionar perfeitamente agora, basta clicarmos em
Play e testarmos. Se eu clicar, meu dano
é 15 com o mouse, e isso está correto, tudo está funcionando corretamente. Mas, como você pode ver, ele ainda está preso aqui no meio porque temos que brincar
com a animação. E faremos isso
na próxima lição. Mas, só para
analisar isso rapidamente, você pode ver como
trabalhamos de trás para frente e às vezes
, fazemos mais sentido Começando com, você
realmente quer fazer, eu quero definir meu texto, e foi aqui que eu comecei. Então eu volto atrás
e tento fazer isso. E, na verdade,
às vezes faz mais sentido . Na base animada estamos inserindo o dano
do cursor Ele vai até o texto flutuante do
spawn, que está no controle de jogo
respondendo ao ator E estamos
inserindo
essas informações de texto aqui, que basicamente aparecem porque aqui
clicamos no texto e o expomos para gerar
essas informações de Agora que temos, estamos
conectando-o à interface de atualização de texto
flutuante E ele vai
atualizar a interface do usuário dessa forma. Ok, foi isso por enquanto. Vamos continuar
com o próximo.
53. 5.19 Jogando a animação de texto flutuante: Tudo bem, vamos continuar
e reproduzir a animação. Vamos voltar para a interface
do usuário e abrir a interface de texto flutuante dentro daqui.
Vamos ao gráfico. No gráfico, vemos
esse anim de texto flutuante, que criamos anteriormente,
como você pode ver aqui Agora, para essa animação, vamos ao gráfico.
Vamos arrastá-lo para dentro. Vamos começar com
essa animação e simplesmente dizer reproduzir animação. Agora podemos usar essa
função, reproduzir animação. Vá em frente e conecte-o. Agora,
para esta animação de jogo, esse tempo é zero. Isso é bom. A quantidade de vezes que
ele vai
repetir é adequada para
tudo. Aqui está bom. Nós realmente não
precisamos mudar nada. Agora, se eu clicar em
reproduzir e clicar nele, você pode ver que a
animação está sendo reproduzida. Tudo está realmente funcionando,
e deve ser isso. No entanto, lembre-se de que
não estamos destruindo o ator. E isso
será um grande problema
para o seu jogo, se você não fizer isso. Porque agora você pode
ver quando eu clico, você pode ver a quantidade
de atores que eu gero. Agora é 32, eu continuo clicando, agora é 42 porque estamos apenas
removendo o efeito de acerto. Lembre-se de que também geramos
esse efeito de golpe agora. E gerando e
gerando atores do texto flutuante e
nunca os
removemos Isso vai ser um problema
e travará seu jogo se você clicar
nele várias vezes. Vamos abrir o texto
flutuante. Como destruímos
esse texto flutuante? Eu, podemos realmente fazer
isso lá dentro de novo. Volte para as plantas, abra o texto flutuante Vamos fazer isso aqui dentro. Vamos, agora que temos
esse texto flutuante, podemos arrastar e
pesquisar o texto flutuante, o anim
flutuante que
criamos anteriormente Agora, o que podemos
fazer aqui é arrastar e dizer get end time. Podemos usar um atraso
como antes. Você pode até mesmo abrir o
efeito de impacto e ver o que fizemos aqui. Basicamente, fizemos a mesma coisa. No entanto, isso era um flip book. Temos o tamanho dos flip-books. Agora, para a animação, estamos chegando ao horário final. Sabemos quando isso acaba. Ao fazer isso,
você pode usar um atraso após a
reprodução da animação. Depois, você pode excluir esse
ator de texto flutuante diretamente daqui. E diga destrua o ator. E agora vai
ser destruído. Digamos tudo.
E clique em jogar. E eu vou apenas
minimizar isso. Novamente, posso ver a quantidade
de atores que estou criando. Agora que estou clicando,
clicando e clicando, devo voltar
às 15 mais uma vez, porque estou excluindo todo meu texto aqui,
meu texto flutuante Vou ajustar a localização
do texto porque não
quero que ele
apareça no meio
do inimigo Vou abrir
o Player Controller, e é aqui
que temos o local de spawn Vou arrastá-lo até aqui. Em vez disso, vou
pegar isso e dizer
vetor de quebra para que eu possa
dividi-lo em X, Y e Z. Também é a mesma coisa
para este Vou arrastar e dizer que o
vetor make também pode ver
x, y e z. Agora, ao fazer isso, você sempre pode olhar aqui
na janela de exibição e ver o eixo, a localização dele Agora, para o x aqui, não
precisamos realmente
modificá-lo porque ele
já está centralizado no ator do x. Vou apenas arrastá-lo diretamente
para Não quero ajustar
esse valor agora para o y, Y é esse, o verde. Y controla a quantidade de
idas e vindas. Eu só vou dizer um para o Y aqui porque um significa
apenas que
vou colocá-lo um pouco
na frente do inimigo. O texto não aparece
no inimigo e temos efeito visual
como um bug Em vez de dez, aqui
você pode ver que são dez. Agora, em vez de escrever
apenas um em Y, estou me certificando de que esse texto
esteja na frente do inimigo. Para o valor agora, esse
é o importante, o valor Z é esse. E eu queria aparecer
aqui acima do inimigo. O que eu posso fazer é
dizer talvez algo como pegar esse Z que já
temos e eu vou
dizer e adicioná-lo. Vou adicionar 22 e depois vou
conectá-lo novamente. Agora, o que
estamos fazendo é basicamente pegar o valor z , adicionar 22 e depois conectá-lo Indo em frente e jogando. Eu posso ver onde ela abrange as patas
aqui acima do personagem. Acho que está muito
melhor do que antes. Você sempre pode
ajustar a localização dependendo de onde você
quer que o texto esteja. Ok, foi isso por enquanto. Vamos
salvar tudo, e vamos continuar agora.
54. 6.01 Criando a interface do usuário do temporizador: Tudo bem, agora é
hora de adicionar o cronômetro. Quando jogamos e estamos tentando
causar danos a esse inimigo, quero ter um cronômetro de
rodada para que você não tenha uma eternidade
para preencher esse inimigo Se o cronômetro da rodada terminar, esse inimigo será real Se você fizer isso muito devagar, ele se curará novamente e talvez
você precise voltar um nível para derrotar o outro inimigo antes
de continuar. Vamos encerrar
isso por enquanto. Agora, o cronômetro
estará dentro da interface principal. Não é realmente uma interface de usuário por si só. Vamos continuar e criar a interface
principal. Vamos clicar com o botão direito do mouse, acessar as interfaces de usuário
com ele, Blueprint Vamos chamar isso de B principal. Essa é a
interface principal do jogo. Vamos abri-lo por cima
e por dentro, mais
uma vez em um painel de tela. Agora, dentro
desse painel de tela, quero que o cronômetro
esteja na horizontal Eu só vou encontrar
uma caixa horizontal. Vou adicioná-lo aqui. E então essa caixa horizontal, eu vou
alinhá-la ao meio, aqui em
cima, até o meio superior Clicando nos
pontos de ancoragem, tener, no meio superior. Se você escrever 00 no x e y, você pode ver que não está centralizado como costume eu tenho aqui no x, eu tenho que escrever 0,5 para
que esteja no centro agora Ok, então isso está concluído
agora para a imagem, ou para o ícone, vou pesquisar
a imagem, vá em frente e
adicione-a à caixa horizontal. Agora, para os ícones, ainda não
importamos nada, e eu incluí isso
para você aqui na interface do usuário. Eu tenho um relógio aqui, clique
rápido, crie uma nova
pasta chamada ícones. Vamos em frente e, saindo daqui, vamos arrastar esse ícone para dentro. Apenas certifique-se, novamente, de clicar
duas vezes nele, que o
grupo de texturas esteja definido como UI e
que
as configurações de compressão estejam definidas como interface de
usuário dois D.
Vá em frente e salve. Vamos voltar para dentro e procurar o relógio, ou ele está aqui
na nossa frente agora. Em vez de fazer isso esticado aqui para o alinhamento vertical, vou clicar
no Então, vamos adicionar algum texto. Agora, para o texto,
vou apenas
copiá-lo de nossas outras interfaces de usuário. Talvez esse aqui. Eu vou
controlar, volte aqui. Controle V na caixa horizontal. Centralize-o verticalmente.
Aqui está. Vamos dar um pouco de espaço, vamos procurar um espaçador. Adicione-o entre eles. O espaçador, talvez eu
dê algo como 12 D X. Acho que parece bom. Agora, o texto, sempre podemos
reduzir o tamanho. Agora, quanto ao texto, não
sei se devemos reduzir o tamanho ou não, porque
na verdade é um cronômetro importante Acho que o tamanho está bom. Vamos apenas aumentar o tamanho
dessa imagem aqui embaixo. Em vez de 32 por 32, vou escrever 40 por
40, algo assim. Você também pode colocar uma
almofada na parte inferior aqui. Não acho que seja muito centrado. Talvez se eu clicar aqui e colocar um preenchimento na
parte inferior, algo como dois E isso deve estar bem. Sempre podemos ajustá-lo mais tarde. Não estou muito
preocupado com a interface do usuário no momento. Você também pode clicar em Tamanho
para conteúdo aqui
na caixa horizontal
na parte superior, podemos empurrá-la. Então, vamos ver aqui
o que podemos fazer no Y. Eu geralmente escrevo 30, 35, está nas bordas aqui Agora, isso é o que
parece. Eu acho que parece bom. No entanto, para jogos com clicker, eu gosto que o relógio esteja aqui. Porque é muito
importante que você veja quanto tempo
resta ao clicar. E você não
precisa olhar
até aqui em vez de aqui. Agora, vou apenas
adicioná-lo aqui. Por enquanto,
sempre podemos mudar a interface do usuário. Depois de programar
tudo o
que você realmente pode imaginar, se
você tem um jogo grande, você pode realmente
mudar toda a interface do Talvez em um dia
não demore muito, e esse jogo obviamente
não tenha muita interface de usuário. Portanto, podemos
alterá-lo em uma hora. Mas, por enquanto, vamos deixar
o relógio aqui em cima. E vamos salvar tudo. Deixe-me clicar no texto para garantir que a visibilidade
esteja configurada para não ser testável. Esse também. Também podemos configurá-lo para ser
testável, que o mouse não
interaja com ele Foi isso mesmo. Vamos
salvar tudo e passar
para a próxima.
55. 6.02 Exibindo a interface do usuário principal: Agora vamos continuar exibindo
a interface principal na tela. Normalmente, quando trabalhamos com a interface do usuário, estamos fazendo isso dentro
do controle do player. Vamos abrir o controle do
player e fazer isso aqui dentro. Agora, não
fizemos nada com interface do usuário em
que a temos na tela. Normalmente, o que fizemos
até agora foi conectá-la a um ator, mas agora
precisamos criar uma interface de usuário e anexá-la à tela
em vez de ao ator. Vamos seguir em frente e fazer isso.
Eu só vou empurrar tudo isso até
aqui. Vamos começar. Agora, o que eu costumo fazer é clicar com o botão
direito aqui e
criar um evento personalizado. E vou
te mostrar um método inteligente se você ainda não o fez. Em um dos meus outros cursos, geralmente eu crio um
evento chamado show hide ou open close widget Abra e feche widgets, você pode
chamá-lo do que quiser. Mostrar widget de ocultar, abrir widgit de
fechamento. Isso está aqui. Agora precisamos ter uma entrada de qual widget
estamos falando E acho que ainda não
criamos uma enumeração para Se você chamar isso de Vem
plantas, enumerações. Agora, dentro daqui,
vou fazer uma lista de qual interface de usuário vou
ter no meu jogo. Vou
chamá-lo de widgets de jogos, porque mais tarde eu também tenho
um que pode ser chamado de widgets do menu
principal Então, esse é
chamado de widgets de jogos. Agora temos que
especificar aqui uma lista de quais widgets
você tem no jogo Por exemplo, eu posso
ter uma interface de usuário principal. Eu posso, por exemplo, fazer
uma loja de upgrades e assim por diante. Você pode ter isso mais tarde, mas por enquanto eu só preciso da interface principal. Vou chamá-lo apenas de principal. Agora, se você voltar para
o controle de jogo, podemos agora, aqui na
entrada, pesquisar aquela enumeração que
chamamos E podemos sair e selecioná-lo. Vou chamar
isso apenas de widgets. Se abrirmos e fecharmos um widget, precisamos especificar de qual
widget estamos falando Na verdade, posso chamar
essa função aqui, ou esse evento, para que você possa
ver como é. É assim que ficará
quando eu chamar essa função mais tarde. Agora podemos selecionar de qual
widgit estamos falando. Além disso, quero outra
contribuição, um touro. Um lingote é simplesmente,
novamente, apenas um sim ou não. Só uma falsa ou verdadeira. Para este,
vou dizer aberto, vou chamá-lo de show. Eu costumo
chamar isso de mostrar esconde-esconde. Eu não
me confundo com esse. Vou renomeá-lo
para Mostrar Ocultar Widgets. Temos que especificar de qual widget estamos falando por enquanto Nós apenas temos a interface principal e
, em seguida, podemos mostrá-la ou ocultá-la. Se eu tiver isso
desmarcado, é esconder. E se eu tiver
marcado isso, é show. É assim que eu costumo fazer. Neste, podemos fazer um galho. Agora, se for exibido, queremos mostrar o widget Porque isso é verdade. Vamos fazer duas funções. Deixe-me criar um widget chamado
show e criar outro widget Normalmente eu adiciono um para minhas
funções como prefixo. É muito mais fácil pesquisar porque, se você clicar com o botão direito do mouse
e realmente pesquisar, poderá ter todas as suas
funções no futuro. Para os widgets do show,
vou clicar, tenho uma entrada de widgets do jogo,
selecioná-la e chamá-la A mesma coisa aqui
para o widgit hyde, clique
nele, adicione
e chame O que queremos fazer aqui
agora no show Widgit, queremos arrastar daqui e
dizer ativar O que vamos fazer
aqui é basicamente dizer se a enumeração, ou se esse valor é principal,
o que queremos fazer? Imagine se tivéssemos
outro, por exemplo, se tivéssemos um menu Configurações
e saíssemos e salvássemos. Agora você pode ver aqui,
isso está sendo adicionado aqui. Se o valor que
vem por aqui, que é basicamente
selecionado daqui de cima, selecionamos qual deve
ser o valor se for
colocado aqui no widget show E o valor é
principal, por exemplo, ele vai ignorar
o código aqui embaixo e só vai
executar o código aqui em cima. É isso que ativa a enumeração. O código
aqui vai ser executado? E este não será
executado se o valor
for principal aqui. Deixe-me excluir
essas configurações por enquanto. O que queremos fazer
aqui é basicamente criar o widget e
adicioná-lo à tela Vamos clicar com o botão direito do mouse e dizer criar widgets que
selecionou qual widget
você deseja criar Quero criar a interface
principal e clicar com o botão direito do mouse, promovê-la para uma variável. Vamos chamá-lo basicamente
de widget principal. Então, o que queremos
fazer é arrastar a partir daqui e dizer Adicionar à janela de visualização É assim que adicionamos
a interface de usuário à tela, porque não basta
que você tenha criado, mas você também precisa adicioná-la
à janela de visualização antes
de poder vê-la, ok Agora podemos conectá-lo assim
e está tudo bem. No entanto, o que eu gosto de fazer é, apenas para fins de otimização, podemos pegar essa variável
que acabamos de criar, escrever, clicar e
converter em um get validado O que podemos fazer agora é desconectar isso mantendo pressionada tecla Alt e clicando, e
podemos conectar isso Agora, se isso não for válido, essa variável não é válida. Isso significa que isso ainda
não foi criado. Ainda não criamos a interface do usuário. Dirá que não é válido. Quando não é válido, queremos seguir em frente
e criar a interface do usuário. No entanto, se já criamos a interface do usuário uma vez antes
que ela seja válida, não
precisamos criar
isso o tempo todo e continuar configurando essa variável se já
tivermos feito
isso uma vez antes, ela será válida se
tivermos feito isso uma vez. E então vou adicioná-lo ao
ponto de vista. Em vez disso, não
precisamos
criá-lo o tempo todo Ok, vamos compilar agora
para o widget Hyde. Vamos voltar aqui do mesmo jeito. Digamos que ative a enumeração, ative Então aqui está o que eu quero que você faça, basta arrastar essa variável, clicar com o botão
direito do mouse novamente e converter um get validado,
assim como antes Então, vamos arrastar e dizer
remover dos pais. Removendo-o da tela. Isso foi removido dos pais, agora estamos removendo
da tela. Ok, como usamos essas
funções que acabamos de criar? Agora, se voltarmos
ao gráfico de eventos, podemos arrastar as funções,
o widget mostrar e ocultar Vamos em frente e conectá-los. Se o bullying for verdadeiro, queremos mostrar o widget, vamos em frente e
conectamos este Se isso for falso, queremos ocultar o widget, conectamos o outro Agora, o widget que
entra é simplesmente o que
selecionamos aqui Mas podemos simplesmente arrastar essa
entrada para essas funções, e os dados continuarão
para essas funções aqui. Agora está realmente terminado. O que podemos fazer é
chamar esse evento aqui sempre que quisermos mostrar
e ocultar um widget Então eu posso dizer mostrar, ocultar widget. Posso especificar de qual
widget estou falando. Também posso especificar se queremos mostrar ou ocultar esse widget Função super inteligente
que podemos usar. Basicamente
, não precisamos escrever todo
esse código aqui, é muito mais fácil usar
apenas este. Vamos continuar
exibindo a interface principal. Vamos fazer isso aqui
no Player Controller. Vamos escrever eventos, começar a jogar. O que deve acontecer quando eu
começar a jogar? Eu só quero mostrar
ocultar esse widget. Então, eu quero mostrar meu
menu principal ou minha interface principal. Basicamente. É isso aqui. Se compilarmos e
eu clicar em reproduzir, você pode ver que agora posso
ver meu cronômetro aqui Porque agora estamos
mostrando o widget. Se você quiser ocultar o widget, você sempre pode clicar
aqui . E você pode clicar em jogar. E você pode ver que o
widget sumiu, porque agora o estamos escondendo Mostrando o widget principal, e é assim que é feito Vamos fechar
tudo e continuar.
56. 6.03 Configurando o temporizador redondo: Agora é hora de
adicionar o cronômetro redondo. Agora, nos jogos para
um jogador, não
somos realmente
responsáveis por onde
queremos adicionar o código Eu poderia adicionar o
cronômetro de rodada ao jogador, eu poderia adicioná-lo ao controle do
jogador e eu poderia adicioná-lo
ao modo de jogo Basicamente, no modo multijogador,
você teria um problema, porque teria que
fazer as coisas corretamente. Mas no modo single player, podemos
realmente codificar tudo, por exemplo, dentro
do jogador, mesmo que devesse
estar no modo de jogo. E o jogo
funcionaria muito bem se ficasse e praticasse boas práticas
de programação. Vamos fazer o cronômetro da rodada
dentro do modo de jogo. Lembre-se de que o modo de jogo controla
as regras do jogo. Acho que algo
como um cronômetro redondo é uma
espécie de regra em um jogo Em vez de aqui, vamos
fazer o cronômetro redondo. O que eu quero fazer é tentar
fazer outro evento personalizado. Vamos clicar com o botão direito do mouse e
fazer um evento personalizado. Vamos chamar isso de cronômetro de
início de rodada. Queremos iniciar o cronômetro
da rodada. Eu quero usar aqui principalmente algo
chamado cronômetro por evento Clique com o botão direito do mouse e
pesquise o cronômetro por evento, selecione aquele Agora, o cronômetro por evento é simplesmente um cronômetro que se repete
repetidamente Em vez de usar o tick de evento, talvez você saiba o que já é um tick de
evento. Se você não fizer isso, este está
rodando 60 vezes por segundo. Se eu pudesse simplesmente arrastar aqui e imprimir uma string e
dizer olá. Você pode ver que, se eu clicar em Reproduzir, ele será
impresso 60 vezes por segundo. Aqui diz olá. Normalmente, isso é muito ruim de usar em um jogo. Se algum dia eu olhar seu jogo, nunca
quero ver um evento acontecer em seu jogo,
porque é muito ruim usá-lo, a menos que você realmente
precise usá-lo. Para o Fun Tail, eu
desenvolvi por dois anos, nunca usei esse. E eu também não acho que você deva
usá-lo porque ele é realmente otimizado para executar
esse código tantas vezes. Em vez disso, fazemos isso
configurando um cronômetro. Um cronômetro, você pode escolher quantas vezes
deseja repeti-lo segundo
em vez de
repeti-lo 60 vezes por O que eu posso escrever aqui
é, por exemplo, 0.1 Se você não é
muito bom em matemática, o que você pode fazer aqui é
basicamente dizer, o que é 1/0 0.1 Isso é dez Isso significa que ele é executado
dez vezes por segundo. E se eu configurá-lo para 0,03 Então você vai
executá-lo 33 vezes por segundo Agora, às vezes, você precisa fazer
isso muitas vezes
porque, por exemplo, em um jogo RTS em que você constrói edifícios como The Sims, por exemplo, nos Sims você
arrasta um prédio ou um item pode
colocá-lo Agora, para atualizar o fantasma de
construção
que você está arrastando, é muito importante
que tenha uma aparência suave Você precisa configurá-lo para algo
como 0,03, por exemplo. Mas você pode ver
que executá-lo 33 vezes por segundo é muito melhor do que
executá-lo 60 por 1 segundo. Você está rodando basicamente a
metade da velocidade deste. E já
vai ser muito otimizado só de você usar
um cronômetro e fazer isso aqui Por exemplo, para
o cronômetro por evento, não
precisamos realmente
atualizar o horário Por exemplo, 33 vezes por segundo. Podemos começar com
algo como 0.1. Basicamente,
podemos atualizar o
cronômetro dez vezes por segundo Vamos tentar fazer isso. Vamos deletar isso aqui embaixo. Vamos conectar esse aqui em cima. Para o evento aqui,
temos que ter um evento. Eu posso arrastar até aqui, criar um evento personalizado. Normalmente eu chamo
isso de loop no final, então vou
chamá-lo de round timer, loop Esse evento aqui
basicamente vai se repetir. Vamos
configurá-lo como está em loop. O que eu quero fazer é
basicamente definir um cronômetro. Vamos criar duas variáveis. Deixe-me criar um chamado cronômetro de rodada
inicial. Vamos configurá-lo para flutuar, compilar. Agora, esse será
nosso cronômetro de rodada inicial. Digamos, por exemplo, que tenhamos 5 segundos inicialmente
para matar esse inimigo. Vamos fazer um novo
chamado Current Round Tim. Esse é o que
será atualizado. O cronômetro
da rodada inicial não mudará, mas primeiro mudaremos nosso cronômetro de rodada
atual Antes de começarmos esse loop aqui, vamos garantir que
o cronômetro da rodada atual seja igual ao cronômetro da rodada
inicial,
caso contrário, será zero Você não quer
começar a rodar
com o tempo sendo zero Vamos ajustar o
cronômetro da rodada atual para o inicial. Assim, agora temos
algum tempo para começar. O tempo é de 5 segundos, porque definimos
este como cinco, agora este é 5 segundos. O que queremos fazer aqui usar o cronômetro de rodada
atual Eu quero dizer menos. Basicamente,
queremos subtraí-lo com 0,1. Se isso for
executado dez vezes por segundo, o que isso significa é que
vai dizer que basicamente removerá 1 segundo a
cada segundo , se
isso fizer sentido Porque isso vai ser executado dez vezes em vez de
ter um valor estático. Novamente, não gosto de valores
estáticos
porque é difícil mudar se
o jogo for alojado Em vez disso, você pode clicar com o botão direito do mouse nesse valor e
promovê-lo a uma variável, e pode chamá-lo de algo
como tempo de cronômetro redondo Espero que não fique muito confuso ou
me confunda no futuro,
porque este é o cronômetro de rodada, esse é basicamente o Vamos apenas arrastá-lo até aqui. Em vez de ter
esse valor estático, esse -0,1, vamos compilar
e garantir que o tempo do cronômetro da rodada
seja 0,1. Também Vamos clicar com o botão direito do mouse nesse cronômetro e promovê-lo a uma variável, porque mais tarde teremos que parar esse cronômetro se não
quisermos mais usá-lo E fazemos isso
tendo essa variável. Vamos chamar isso de Tim Handle. Se você segurar o mouse sobre ele,
é basicamente uma alça de cronômetro, uma
alça de cronômetro redonda Agora, o que podemos fazer é
dizer que tempo
atual é -0,1. Novamente, tenho que fixá-lo
porque quero ter
certeza de que não ficará abaixo
de Agora, o que estamos dizendo
é o cronômetro atual, cronômetro
redondo -0,1
Se repetirmos esse valor,
basicamente será menos um a cada Vou definir o cronômetro da rodada
atual novamente, estamos basicamente dizendo
menos um a cada Agora vamos imprimir uma sequência de caracteres. Você pode realmente
ver o que está acontecendo e vamos arrastar isso para aqui. Vamos compor a rodada. Tim pode basicamente começar aqui no evento começar a jogar. Vamos atacar a partir daqui
e dizer que comece com Tim. Vamos compilar e jogar. Agora você pode ver que o
cronômetro está funcionando agora. Vai ficar abaixo do
zero porque
ainda não o fixamos. Vamos realmente seguir
em frente e fazer isso. Vamos atacar aqui novamente. Arraste a partir daqui e
diga clamplamp float O valor mínimo é
zero abaixo de zero O valor máximo é basicamente
o que o
cronômetro de rodada atual é Agora vamos prosseguir
e conectar isso. Tudo deve ficar
bem se eu compilar
e clicar em Play E dê uma olhada aqui agora, não deve ficar abaixo de zero, e tudo está
funcionando bem Agora só precisamos atualizar essa interface aqui para
funcionar corretamente. Tudo bem, foi isso por enquanto. Temos um cronômetro funcionando, e podemos
deixar isso aqui, porque temos que
iniciar o cronômetro, tudo está funcionando E temos que continuar
na próxima lição.
57. 6.04 Atualizando o temporizador da interface do usuário principal: Tudo bem, aqui é de
onde paramos. Vamos voltar e atualizar
o cronômetro na interface principal. O que queremos fazer é voltar
para a interface principal. Queremos clicar nesse texto. Vamos chamá-lo de algo
como cronômetro redondo. Temporizador redondo. Vamos voltar ao gráfico aqui. Deixe-me deletar tudo isso. Agora, para este cronômetro, eu
basicamente quero, novamente, definir o texto, exatamente o que
temos feito até agora Vamos criar um evento personalizado para esse evento personalizado.
Vamos chamar isso de uma atualização, Tim. Deixe-nos
ir em frente e conectá-lo. Agora, vamos em frente e, em vez de apenas
conectá-lo diretamente, eu também queria dizer segundos
atrás dele. Quero usar um formato de texto, exatamente como o que temos
feito até agora. Para esse formato de texto,
eu quero uma variável. Vamos chamá-lo de
cronômetro redondo restante. Vamos fechar os colchetes. E se você pressionar inter,
essa entrada aparecerá, então eu só quero
escrever um segundo atrás dela Sabemos que são segundos. Agora, essa variável é um flutuador. Vou apenas adicionar
aqui uma entrada float e chamá-la
de
cronômetro redondo restante. Agora podemos inserir isso aqui e
basicamente terminamos. Agora vamos continuar
e atualizá-lo. Vamos usar essa interface de usuário do cronômetro de atualização. Agora você pode tentar fazer isso
sozinho apenas para praticar ,
porque na verdade é simples
se você pensar bem. Mas se você ainda tiver
dificuldades com isso, vamos
fazer isso juntos. Se voltarmos às plantas, abra o modo em
que criamos o código Agora, aqui, sempre
que estiver em loop, também
queremos atualizar a interface do usuário Depois de definir o cronômetro da rodada, queremos atualizar a interface do usuário Agora, como obtemos a interface do usuário? Lembre-se de que a interface do usuário está dentro do widget principal aqui,
o widget principal Esse é o evento que
queremos usar. Temos que obter uma
variável ou a interface principal. Lembre-se de que já temos isso dentro do controle do
player, porque aqui dentro
fizemos isso em uma variável. Vamos ligar para o controlador
do player. Temos uma variável no controlador de
jogo? Sim, nós temos. Fizemos isso anteriormente. Vamos prosseguir e arrastar
o controle do player. Vamos arrastar o WB
main e pegar isso. Em seguida, vamos obter os eventos de interface do usuário do cronômetro de
atualização Podemos chamar isso agora,
vamos conectá-lo. Agora esse é o cronômetro
restante, que é esse. Basicamente, vamos compilar. E se eu clicar em play, agora você pode ver que está
funcionando muito bem. Agora você pode ver que
há um problema porque eu não quero
remover essa casa decimal
sempre que ela for zero Assim, eu queria
dizer 0,0, por exemplo, ou 1,0, não quero
que ele o remova. Da maneira como você faz isso, em vez de conectar
diretamente o float, você pode
convertê-lo primeiro em uma string e ele não excluirá
o que você está escrevendo, basta escrever Vá em frente e selecione
duas cordas flutuantes. Agora, em vez de ter um
flutuador, vamos desconectar isso. E vamos conectar a corda. Vamos compilar. Vamos
clicar em Jogar. E agora você pode ver que
diz zero no final e não vai excluí-lo. Acho que parece
muito melhor para nós, só
isso para atualizar a interface do usuário. E vamos
para a próxima lição.
58. 6.05 Restaurar a saúde no final do temporizador: O objetivo principal aqui é restaurar a saúde do inimigo sempre que
o tempo acabar. Vamos fazer isso.
Isso é muito fácil. Já temos tudo o que
precisamos aqui no cronômetro da rodada
inicial Sempre que percorremos o
tempo e ele chega a zero. Vamos usar o cronômetro redondo
aqui e podemos basicamente pegar uma nova variável em vez de usá-la o tempo todo Só para torná-lo mais limpo,
podemos usar este. E agora podemos dizer se
isso é igual a zero,
então, basicamente, o
tempo acabou, vamos fazer uma ramificação,
vamos conectá-la. Sempre que for esse o caso, queremos restaurar a integridade, vamos continuar e
criar o evento personalizado para a restauração da integridade. E eu acho que é melhor fazer
isso dentro do inimigo. Vamos até o inimigo, abrir a
base inimiga dentro daqui. Vamos criar um
chamado restaurar a saúde. Vamos até aqui, criar
um novo evento personalizado. Vamos chamar isso de restaurar
a saúde assim. Agora, para restaurar a integridade, o que vamos simplesmente fazer, lembre-se de que anteriormente temos
essa chamada atualização de integridade. Basicamente, podemos usar aquele que eu arrasto aqui
e digo atualizar a saúde. Atualize a saúde, aqui está. Agora, qual é a saúde atual? Só queremos curar o
inimigo ao máximo. Novamente, novamente, temos que obter informações sobre
o inimigo e
já temos a saúde. Eu vou controlar C isso
e controlar V aqui embaixo. Vamos apenas
conectar isso aqui. Estamos basicamente
restaurando a saúde. Mais uma vez, deveria ser isso. Se eu voltar ao modo de jogo, agora precisamos de uma variável
para o inimigo. Não me lembro se
temos uma variável para o inimigo dentro
daqui, não temos. Temos que descobrir como
obtemos a variável para o inimigo? Porque precisamos chamar
isso de restaurar a saúde. Lembre-se, se
voltarmos, por exemplo, para o Player Controller, é
aqui que geramos o
inimigo, geramos o inimigo. E nós o transformamos em uma variável. Na verdade, sabemos qual
inimigo está sendo gerado atualmente. Se eu voltar aqui e pegar
o Player Controller,
posso procurar a variável inimiga
gerada, e eu posso pegar isso Agora, aqui podemos dizer que
restaure a saúde. Eu posso ver que não consigo encontrá-lo. Então, se eu voltar para o
Player Controller, é porque eu o
promovi
diretamente para a variável spawn
enemy O que não está errado. Basicamente,
posso entrar no modo de jogo e dizer à base
inimiga aqui
que posso dizer que restaure a saúde e
tudo ficará bem. Mas, novamente, eu não
gosto de usar o casting. E essa parte
também é desnecessária porque podemos fazer isso dentro do controle do player aqui antes de
promovê-la em uma variável. Vamos voltar às interfaces. E não fizemos um para o inimigo. Tente
fazer isso sozinho. Nós já fizemos isso
algumas vezes. Novamente, se você não
se lembra totalmente, vamos
fazer isso juntos. Mais uma vez, vou
passar por isso rapidamente. Clique com o botão direito do mouse no blueprint e
crie uma interface de blueprint. Chame isso de base inimiga. Vá em frente e abra. Digamos que obtenha a referência do inimigo. Então, aqui na saída, vamos procurar
a base inimiga da BP qual estamos tentando nos
referir Vamos chamá-la de compilação inimiga. Agora vamos voltar
para a base inimiga. E aqui nas configurações
da classe, queremos adicionar essa
interface que acabamos de criar,
chamada inimiga, mas compilar Agora podemos ver essa função aparecendo, clique duas vezes nela. Para o inimigo, vou fazer uma autorreferência
porque, novamente,
estamos dentro da base inimiga e estamos definindo o que é
essa variável. Agora, o que podemos fazer é
no controlador do player, em vez de promover isso
diretamente para uma variável, vou excluir isso por enquanto. Posso dizer que obtenha a referência do inimigo. Porque lembre-se de que, se você
segurar o mouse sobre ele, isso é apenas uma referência de ator. Mas se eu promover
isso para uma variável, essa é uma referência de base inimiga. E podemos usar isso
sem fazer isso o tempo todo em todos
os outros projetos Vou remover
esse inimigo gerado. Vamos realmente garantir que não o tenhamos usado antes. Porque se eu excluir agora, excluirei todas
as referências com ele. O que eu costumo fazer nos meus
jogos é clicar com o botão direito do mouse nele, encontrar referências, sem resultados
dentro desse plano Temos que pesquisar globalmente. Você pode fazer isso clicando
no pequeno ícone. Ele vai pesquisar
em todas as plantas. E você pode ver que nunca
usou essa variável antes. É seguro excluí-lo. Eu vou deletá-lo, sim. Agora vamos promovê-lo
a um inimigo gerado por variáveis. Agora podemos usar
esse. Vamos compilar Vamos voltar ao modo de jogo.
Vamos deletar tudo isso. Agora, aqui, do arrasto inimigo
gerado. Vamos criar um inimigo
a partir desta. Agora podemos arrastar e
dizer restaurar a saúde. Isso é muito mais fácil de fazer. Vamos agora arrastar a partir daqui. Se o cronômetro for igual a zero, queremos restaurar a saúde Também queremos reiniciar o cronômetro porque
precisamos começar de novo. Vou pegar o
cronômetro de rodada atual e configurá-lo para o cronômetro
de execução inicial. Assim mesmo. Vamos jogar
e ver o que acontece. Clique em Jogar Agora Para que possamos testar melhor, vou definir os cronômetros da
rodada inicial para 3 segundos, para que não demore uma eternidade Quando o cronômetro acabar, ele será reiniciado, curado O jogador agora clica
ou cura o inimigo. Pelo contrário, podemos ver que ele
curou o inimigo
sempre que fosse zero Se eu matar o inimigo, também curaria
esse inimigo. Então, o que basicamente
temos que dizer é que se eu matar o inimigo, tenho que dizer para parar o cronômetro, porque agora
matamos o inimigo Porque, como você pode ver aqui,
sempre que eu mato esse inimigo, ele não para
nem reinicializa o cronômetro Então, essa é a próxima coisa em que
queremos trabalhar.
59. 6.06 Redefinir o temporizador na morte do inimigo: Agora, o que queremos
fazer é
zerar esse cronômetro
sempre que o inimigo morrer Vamos continuar e
fazer isso de novo, isso é muito fácil agora
porque já
criamos essa variável
chamada round timer handle Se eu for à base inimiga e tentar descobrir onde
o inimigo morreu, aqui fizemos esse evento de morte e fizemos tudo isso aqui. Vamos parar o cronômetro
sempre que o jogador ou o inimigo fizerem tudo isso Se eu pudesse selecionar tudo e
pudéssemos arrastá-lo para cima. Agora vamos usar essa alça que está dentro
do modo de jogo. Eu posso ver que já temos
uma variável de modo de jogo aqui, então podemos dizer Tim handle. Podemos ir em frente e pegar
a alavanca do cronômetro de execução. Podemos dizer que o cronômetro é claro e
invalidado por alça. Este vai interromper a limpeza do cronômetro e
invalidar Vá em frente e conecte-o. Agora estamos parando o cronômetro
e fazendo todo esse evento de morte ou
essa lógica de morte Depois da lógica da morte, estamos aumentando o nível E então estamos
destruindo o Acta. Temos que iniciar
o cronômetro novamente, porque agora, quando
matarmos o inimigo, o cronômetro vai parar Mas temos que começar de novo. Acho que a melhor maneira de
começar de novo é fazer isso dentro do nível atual de
incremento Vamos fazer isso
dentro do modo de jogo porque toda vez que
aumentamos um nível, geramos um inimigo Vamos começar o cronômetro aqui. É o que faz mais sentido. O que podemos fazer é basicamente,
assim como antes,
podemos fazer isso, iniciar o
cronômetro, iniciar o cronômetro da rodada Vá em frente e ligue para
este evento que fizemos. E isso deve resolver tudo. Agora, toda vez que eu
não ligar para
o inimigo, o inimigo vai
se curar, como você pode ver aqui. Mas se eu matar o inimigo, o cronômetro parará
e
reiniciará novamente quando
eu matar o inimigo Então, se eu matar o inimigo,
ele voltará para três e tudo ficará ótimo. Ok, agora estamos reiniciando o cronômetro
quando o inimigo morre E também estamos parando
para que não faça a contagem regressiva. E vamos passar
para a próxima.
60. 7.01 Criando a interface do usuário de moeda: Agora é hora de
criar a interface de usuário da moeda. E antes de fazermos isso, acesse
os materiais do curso. E eu incluí
algumas coisas para você. Então, vamos para a
pasta UI aqui. Vou criar
uma pasta chamada buttons em vez dessa pasta. Podemos arrastar esses
botões até aqui. Botão pequeno pressionado
e botão pequeno. Vá em frente e arraste-os para dentro. Assim como antes. Lembre-se
de clicar com o botão direito ações do
sprite e aplicar papel dois T,
pois são muitas escolhas Além disso, para as
imagens na pasta de imagens que vou
arrastar até aqui
novamente, vou clicar com o botão direito do mouse e
aplicar papel às configurações. Agora, quanto ao relógio,
quero atualizá-lo também. Provavelmente parece
assim para você agora. Vou apenas
arrastar isso até aqui. Ou talvez clique com o botão direito do mouse
e diga reimportar. Ele já sabe
o que fica
se eu clicar em jogar,
agora fica assim. Vamos ver se precisamos de algo
mais, esta moeda aqui. Também precisamos arrastar isso para dentro dos
ícones. Clique com o botão direito do mouse, aplique papel às configurações e tudo
ficará bem. Agora, antes de continuar
verificando este relógio, clicando nele, vou
realmente
aumentar o tamanho
dele para 50, 50. Em vez disso, o preenchimento é zero. Vou configurá-lo para zero. Compile e, se eu clicar em Reproduzir, acho que fica muito melhor assim em comparação com antes Tudo bem, agora para
a interface do usuário Curren, vamos projetá-la
aqui dentro da interface principal E acho que vou
projetá-lo até o topo. Vamos começar com isso. Primeiro, precisamos de uma sobreposição. Vamos adicionar a sobreposição no painel
da tela aqui em cima, para que ela apareça aqui Agora, para essa sobreposição,
quero uma imagem, quero a
imagem de fundo para essa interface Vou alinhá-lo horizontal e
verticalmente, Agora temos que selecionar
a aparência da imagem para a imagem. Vamos ver as imagens e eu vou selecionar
essa moldura de um item. Vá em frente e deixe-o
aqui. E aqui está agora para que não fique embaçado
novamente, como antes, transforme-o em uma caixa, altere a margem para 0,5, agora parece muito melhor Agora, quando você altera
o tamanho da sobreposição, ela se ajusta ao tamanho Agora, aqui embaixo, eu também
quero um menu de atualização. Ou não é um menu de upgrade, é mais como uma loja. Na verdade, vamos fazer isso também. Aqui com isso, precisamos de uma caixa vertical.
Vou adicionar isso. Vou adicionar uma sobreposição. Lembre-se de que a caixa
vertical
não deve estar dentro
dessa caixa horizontal
, está fora dessa sobreposição Vou arrastá-lo para
a caixa vertical aqui. Basta redimensioná-lo. Novamente,
na sobreposição, vou clicar
na fatura por enquanto Não tenho certeza se
vou preenchê-lo. Na verdade, acho que não vou. Mas vamos
configurá-lo para ser preenchido por enquanto. Agora vamos adicionar o outro. Novamente, vou apenas duplicar isso,
Overlay control D. Agora, este é o menu de atualização, ou a loja aqui, a Clicando na
imagem, vou mudá-la para esta moldura
de papel. Vá em frente e arraste isso aqui. Tudo deve estar bem. Agora, para essa caixa vertical, eu queria preencher a tela
inteira para o lado. Clicando no ponto de ancoragem, alterando-o para este Quando você fizer isso,
no offset bottom, eu vou escrever 00 E o deslocamento para
a parte inferior e superior fará com
que todo o
lado da tela seja preenchido Agora vou dar a ele um
pouco de espaço a partir das bordas
da tela na posição do X. Vou
escrever
o deslocamento 30, o deslocamento superior 30 e o 30
inferior Agora não está na
borda da tela. Agora, o tamanho dos dois. Vou clicar
na sobreposição
da moeda e
vou configurá-la como automática Em vez disso, vou
usar as imagens e aumentar
o tamanho em Y. Agora, para o tamanho em Y, acho que algo como
105 deve ser suficiente Algo assim, e podemos escrever quantas moedas você tem. Além disso, vamos adicionar uma
busca por espaçador por um espaçador. Adicione-o entre essas duas
sobreposições para o espaço. Acho que vou escrever
algo como 20 em Y. E você pode
clicar nessas linhas de traço
para remover as linhas de traço E agora é isso
que parece. Você pode clicar em Play
e também assistir. Aqui você pode ver que esta é
uma tela para um laptop, mas ela se encaixa muito
bem no meu monitor de quatro K,
porque, novamente, nós a projetamos para
ser usada em vários monitores Agora, quanto ao tamanho aqui, decidiremos isso
mais tarde,
dependendo do conteúdo desse menu. Mas, por enquanto, vamos deixar que seja do tamanho
desta aqui em cima. Vamos com a moeda. Agora, podemos
trabalhar com a loja. Aqui em cima, com a moeda, precisamos de uma
caixa horizontal porque
precisamos de uma imagem e depois do texto. Vamos adicioná-lo à sobreposição dentro dessa caixa horizontal Vou adicionar uma imagem, depois vou adicionar um texto. Agora, para o texto,
vou copiar isso aqui. Controle C Controle dentro desta
caixa horizontal. Controle V aqui. Agora, para essa caixa horizontal, vou alinhá-la virtualmente horizontalmente no
meio desta imagem, vamos transformá-la
neste Arrastamos novamente, alinhamento
horizontal
e
alinhamento vertical no meio.
Ambos. Agora, para a moeda aqui, vamos
clicar na moeda e fazer o tamanho 50 por 50 para a imagem. Agora, para este texto,
vou
torná-lo um pouco maior porque
isso é muito importante. Acho que algo como 34 e talvez um pouco
menor, talvez 30. Sempre podemos decidir isso mais tarde. Agora, para a cor da frente, eu também vou
mudá-la para algo amarelo. Está exibindo moedas, mudando
a cor e a opacidade. Vou tentar escolher
uma cor amarela. Acho que vou escolher
algo assim. Agora, eu também preciso
mudar o contorno. Acho que vou copiar esse aqui.
Cole aqui embaixo. Eu só vou mudar para
uma cor mais escura. Eu vou usar esse. Clicando em ok,
vou copiar isso. Cole aqui embaixo.
Se eu diminuir o zoom, isso é o que parece. Parece muito bom. Agora, eu vou
te dar um espaço entre a moeda e isso, este texto Apenas certifique-se de que não há
acolchoamento aqui para esta moeda. Vou dar um preenchimento
aqui à direita de quatro. Portanto, temos algum
espaçamento do texto. Se eu clicar aqui e escrever zero para o texto, agora são 30. Se eu escrever 28, acho que é muito
pequeno. Vamos tentar 32. Talvez seja muito grande. Na verdade, vamos com 34. Agora, 30 era um bom número. Vamos compilar agora. Agora,
projetamos tudo aqui. Agora, para o texto,
vou
transformá-lo em uma montagem de moedas de texto. Para esse ícone, nós realmente não
precisamos fazer nada aqui. Vamos compilar
e salvar tudo. Agora estamos prontos para continuar.
61. 7.02 Animação de interface de moeda: Acho que seria legal
adicionar alguma animação a esse texto para deixar o jogo um pouco mais
único e melhor. E é sempre bom adicionar algumas animações ao seu jogo para
que ele não pareça plano São sempre esses
pequenos detalhes que fazem seu jogo parecer muito
melhor do que os outros. Então, vamos continuar e
clicar neste. Vamos criar
uma nova animação. Vamos
chamá-lo apenas de moedas. Clique nele, clique em Rastrear, adicione a quantidade de moedas no texto e clique nesse sinal de mais. E vamos selecionar a transformação. Porque eu quero mudar
a escala desse texto. Vou até a balança aqui embaixo. O que eu quero fazer aqui
é depois de 0,2 segundos, eu quero escalar isso para 1,5 A mesma coisa
aqui para o Y, 1,5 Agora é enorme. Em seguida, 0,4, vou ajustá-lo de
volta para 1,1 na escala. Agora você pode ver que quando eu
reproduzo a animação, ela realmente
não a configurou. Aqui vou eu, voltando para um, eu toco a animação. Agora você pode ver como
fica se você
simplesmente clicar no espaço. É assim que vai
ficar quando eu adicionar moedas a essa variável
ou a essa interface de usuário aqui. Parece bom que você
tenha alguma animação de interface do usuário. Mas então compile,
salve tudo e vamos continuar
62. 7,03 quantidade de moeda variável: Agora, para a quantidade de moedas,
precisamos adicioná-la ao jogador. Vamos voltar às plantas. E agora vamos abrir o
player porque agora precisamos
armazenar quantas moedas o
jogador tem em uma variável. Vamos fazer essa variável aqui
embaixo e vamos
transformá-la em quantidade de moedas,
vamos chamá-la assim. A quantidade de moedas não pode
ter casas decimais, então vamos
escolher um número inteiro Agora, se você sabe que seu jogo muitos números aqui, terá muitos números aqui,
você deve selecionar
um número inteiro 64 Na verdade, acho que vou
selecionar um inteiro 64 porque um inteiro ou um
inteiro 64 pode ter um valor muito,
muito maior
do que um valor muito,
muito maior
do No entanto, novamente, um inteiro
64 será mais pesado em
termos de otimização do que
usar apenas um Mas nós realmente precisamos disso porque novamente, estamos criando
um jogo de clicker. E é sabido em
um jogo de clicker que a quantidade de moedas pode
chegar a um valor intenso Em vez disso, selecione o
número inteiro 64. Vamos fazer isso assim. Agora vou excluir tudo
isso e vamos criar uma nova variável personalizada
ou eventos personalizados. Vamos chamar isso de uma quantidade
atualizada de moedas. Vamos atualizar
quantas moedas temos aqui. Vou arrastá-la
para o Set it here, a quantidade atualizada de moedas. Podemos atribuir duas variáveis. Podemos fornecer a
quantidade de moedas que queremos atualizar
com a quantidade de moedas. Esse pode ser um
número inteiro porque é apenas um número que precisamos adicionar ou
subtrair com nossa variável Não é tão grande. A outra coisa é adicionar outra variável e um lingote, vamos chamá-la de I normalmente
novamente, escrever B na frente O que queremos fazer
aqui é
adicionar moedas ou subtrair moedas É disso que trata este
evento. Vamos atacar este
e fazer um galho. Então vamos, você quer adicionar moedas ou quer
remover moedas? Então, essas são as cataratas. Quando
você quiser remover moedas, vamos definir essa variável. Se quisermos adicionar moedas,
podemos pegar isso. Podemos dizer perda desse valor, perda desse número inteiro,
posso arrastar isso agora, podemos pegar isso e
colocá-lo aqui O valor que
entra aqui perde o valor que já
temos na variável. Somamos esses
dois e os colocamos
dentro dessa variável. Agora, se for menos, novamente pegue isso e diga menos, subtraia,
vamos
subtrair novamente pegue isso e diga menos,
subtraia,
vamos
subtrair daqui. Assim como antes. Vamos definir
essa variável. Agora você pode tornar esse código um pouco mais limpo
removendo-o. E você pode fazer isso
de outra forma. Agora eu vou
te mostrar apenas outra maneira. Lembre-se de que já trabalhamos
com o Select antes, então podemos realmente fazer o Select. Agora, toda vez que você vê uma
cópia e colagem de um código como essa, você sempre tenta pensar posso usar um nó de seleção
aqui para limpar meu código? Na verdade, você pode fazer isso
aqui se eu arrastar aqui e disser Selecionar e eu posso
selecionar este, esse nó, dependendo se essa
intimidação é verdadeira ou falsa E eu posso simplesmente
remover isso por enquanto. Se for verdade, significa que eu quero adicionar moedas. Você pode ver aqui,
se isso for verdade, aqui significa que eu quero adicionar
a quantidade de moedas. Então isso é verdade, eu quero adicionar moedas. Podemos conectar isso aqui. Essa, se for falsa, eu quero subtrair moedas E então entra
aqui. Podemos deletar isso. Agora você pode ver o
quanto ficou melhor. Agora, pelo
ouro, ele sabe se queremos subtrair ou adicionar moedas
à nossa variável Tudo bem, vamos compilar e salvar tudo.
E foi isso. Agora temos essa
função simples na qual podemos atualizar a quantidade de moedas.
E vamos continuar.
63. 7.04 Adicione moedas a inimigos: Agora, obviamente, o que
estamos tentando fazer é quando eu clico nesse
inimigo e o inimigo morre, preciso pegar moedas pela
morte que matei aqui. O que precisamos fazer
é adicionar quantas moedas
esse inimigo deve soltar quando
eu o matar. Da maneira como fazemos isso,
lembre-se de que temos uma estrutura aqui nas estruturas do
projeto Já criamos
essa chamada informação do inimigo. Vamos adicionar algo
a isso, a este. Vou criar uma nova
variável e chamá-la de moedas para soltar”. Muito, muito autoexplicativo
e é apenas um número inteiro. E arraste-o, então eu vou apenas arrastá-lo
para baixo da saúde Vá em frente e salve,
salve tudo. Agora, o que eu quero que você faça é
voltar para a planilha de dados no Google que fizemos
anteriormente aqui. Agora, depois da saúde,
vou escrever Clique em Criar uma nova coluna
à direita aqui. Novamente, você deve chamá-lo
do mesmo nome que chama a quantidade variável
de moedas a serem descartadas. Podemos arrastar isso
um pouco assim. Temos que especificar quantas
moedas o inimigo deve soltar. Por exemplo, eu posso simplesmente
escrever números aleatórios. Por enquanto, honestamente, não nos
importamos no momento. Podemos clicar aqui
para criar fórmulas. Você sempre pode escrever de
forma igual. Clique aqui e vezes 1.5 Então eu
posso clicar aqui e arrastá-lo
para baixo e ele deve ser preenchido automaticamente. Isso deve estar bem
para mim agora. Vou clicar em Download de arquivo e
baixar CSV. Agora, com esse arquivo CSV
baixado, vou renomeá-lo
novamente para DT Enemy Info Dentro deste projeto,
vou
minimizá-lo um pouco para
poder ver os dois. Vou até as tabelas
de dados. Novamente, informações do inimigo, basta
clicar e arrastá-las até aqui. E ele deve
atualizar automaticamente todas essas
informações para você. Agora adicionamos quantas moedas cada inimigo deve soltar
ao matá-lo.
64. 7.05 Atualize a exibição de moedas: Agora estamos prontos para terminar
essa exibição de moedas. Vamos voltar para os inimigos. Agora, o que eu quero fazer
aqui nos inimigos, lembre-se de que queremos adicioná-lo
a quando o inimigo morrer. Se eu acessar esse código aqui, sempre que você adicionar entradas extras à sua estrutura,
elas aparecerão Então, vou clicar aqui e ocultar os pinos desconectados Mais uma vez, quando
eu mato o inimigo. Quero lembrar que
no jogador, se eu for até o jogador, fizemos essa única
atualização da quantidade de moedas dentro daqui
quando eu mato o inimigo. Antes de fazer esse atraso, vou apenas
adiar esse atraso. Eu quero chamar isso de
uma quantidade atualizada de moedas do jogador. E eu já tenho
a variável player. Vou arrastar e dizer
atualizar a quantidade de moedas. Vá em frente e
conecte-o aqui e aqui. Agora, a quantidade de moedas
com as quais
você deseja atualizá-lo está dentro
das informações ainda do inimigo. Porque fizemos isso
dentro da biblioteca. Agora temos que especificar as informações do
inimigo ou o nome do inimigo. Já temos isso
dessa variável. Então vá em frente e conecte-o. Faça isso, divida-o nas
variáveis para que possamos vê-las. Agora, a partir daqui, vou
arrastar a quantidade de
moedas para cá. Vá em frente e esconda isso, e agora está acabado. Lembre-se de clicar em Anúncio. Porque queremos adicionar
moedas e não removê-las. Tudo deve estar
bem. Vá em frente e compile Vá até o player agora. Agora,
essa informação vai
entrar aqui e vai
ser configurada corretamente. O que estamos perdendo
agora é que você pode ver se eu matar o inimigo,
nada está acontecendo. Porque lembre-se de que não
atualizamos a interface do usuário, então
precisamos fazer isso. Vamos voltar para a interface do usuário, abrir a interface principal. Vá em frente
e clique neste texto. Para este texto, queremos
apenas configurá-lo. Vou ver o gráfico aqui. Vamos fazer um novo evento. Vamos criar um novo evento personalizado. E vamos chamá-lo de quantidade de
atualizações I. Agora, para este evento,
vamos clicar nele. E vamos criar uma nova variável
para essa, novamente, número inteiro 64, porque
vamos
inserir essas informações aqui para que possamos atualizar a interface do usuário E vamos chamar isso de
quantidade de pontos um. Agora, o objetivo aqui é
definir esse texto, a quantidade de moedas arrastadas a
partir dele e, digamos, definir o texto. Isso é basicamente o que
estamos tentando fazer. Estamos tentando atualizar o texto e clicar e arrastá-lo até
aqui. E ele deve
converter automaticamente seu número inteiro em texto e
compilá-lo ou conectá-lo Agora lembre-se de que também
temos uma animação. Vamos arrastar essa animação de moedas. E digamos que reproduza animação. Vá em frente e conecte
isso também. Tudo deve estar bem. Agora vamos voltar para o player ou usar este.
Atualize a quantidade de moedas. Vou em frente aqui e só precisamos editar. Aqui está
dentro do WB principal, que está dentro do controlador do
player E, como posso ver aqui, não
temos uma variável para
o controle do player. Vamos começar aqui. Jogue mais uma vez. Obtenha o controlador do player
e compre este. Em seguida, podemos arrastar a partir
daqui e dizer obter referência do controlador do
player que fizemos na interface do
blueprint E clique com o botão direito do mouse
para promover essa variável e chame-a de controlador do player. Agora temos isso. Vamos
pegar essa variável. Só precisamos ligar para o WB main porque o
evento está dentro dele Quanto menos arrastar e
pesquisar por WB main, já
temos esse valor Lembre-se de que podemos arrastar aqui,
digamos, atualizar a quantidade de pontos. Eu seleciono isso e bloqueio essas
informações aqui. E tudo deve
funcionar bem. Agora vou aumentar
aqui no modo de jogo,
vou aumentar o cronômetro
da rodada inicial, porque às vezes é difícil matar o inimigo
em 3 segundos. Eu só vou
aumentá-lo para 5 segundos, na verdade. Sim, 5 segundos. Tudo bem, certo, e jogue. Agora você pode matar esse inimigo. Como você pode ver, a placa de
animação. E nos deu 15 moedas. Deixe-me tentar de novo. Aqui, eu vou
matar esse inimigo. Ele nos deu as moedas. Ele reproduziu a animação e tudo está
funcionando corretamente.
65. 8.01 Adicionando a caixa de rolagem da loja: Agora é hora de trabalhar
com a loja de itens. Se você clicar em Jogar, você se
lembra que aqui na Ui, depois de criarmos a
moeda ou antes,
na verdade, criamos
este artigo aqui embaixo, esta será nossa loja de itens. Só estou tentando misturar cookie
Clicker e Clicker heroes. Como você pode ver
aqui, por exemplo, apenas uma imagem do que estamos fazendo é
adicionar essa parte aqui, essa loja onde você pode comprar algumas coisas e elas aparecem
no mapa e assim por diante Então é isso que estamos
tentando fazer aqui. Vamos fechá-lo por enquanto. Vamos para a interface do usuário
e abrir o Maui. E aqui dentro, é
aqui que queremos que os itens sejam exibidos. Agora, para exibi-los, precisamos de uma caixa de rolagem. Vamos procurar uma caixa de
rolagem aqui em cima. Clique e arraste-o para a
sobreposição em que está aqui. Verifique também se ele está
alinhado
horizontal e verticalmente dentro da caixa de Antes de adicionarmos os itens, precisamos deles dentro
de uma caixa vertical. Porque eles
vão cair assim. Vou
pegar uma caixa vertical e
adicioná-la à caixa de rolagem. Para esta caixa vertical, vá em frente e clique em Preencher. Caso contrário, vai estar aqui em cima. Mas queremos
preenchê-lo até aqui. Agora este está pronto. Agora você pode ver aqui,
sempre que eu adiciono um item, agora ele vai ser um, o topo aqui. E precisamos dar um pouco de
espaçamento até as bordas Agora, não podemos realmente fazer isso porque eu posso simplesmente
entrar aqui e escrever 100 e posso
espaçá-lo entre as bordas, mas não consigo realmente
visualizá-lo sem os cortes do meu item Eu vou fazer isso
mais tarde. Eu vou escrever zero por enquanto. Foi isso por enquanto. Agora,
essa caixa vertical aqui, vou renomeá-la porque vamos
usá-la mais tarde Vou chamar o VB caixa
vertical e vamos
chamá-lo de algo como lista de itens Vamos defini-la como variável
porque precisamos adicionar algo ou adicionar os itens posteriormente a
essa lista de itens. Foi isso mesmo. Vamos encerrar isso e continuar
com o próximo.
66. 8.02 Criando o cartão de item de loja: Tudo bem, agora é hora de
criar os cartões de itens. Agora, não vamos adicionar os cartões de itens
a essa interface principal, porque os itens
que você pode imaginar, cada cartão de item tem
informações exclusivas. Então, eu não vou entrar
aqui e adicionar um texto e depois adicionar o
texto aqui e assim por diante, porque isso exigirá muito trabalho de copiar e colar e não
faz sentido Basicamente, o que fazemos para lojas em programação é
pegar o cartão do item, criar uma instância dele
, alterar dinamicamente todas as informações e o código do item com
o código, e simplesmente duplicar o código do item
e alterar as
informações e alterar as Vamos tentar fazer isso para que
possamos entender melhor. Vamos fechar isso aqui embaixo. Vamos clicar com o botão direito do mouse novamente, criar um novo esquema do Git Vamos chamar isso de código de
loja aqui. Vamos abri-lo.
Agora, aqui novamente, vamos adicionar uma tela. A propósito, o que estamos projetando
é algo assim. Mas, basicamente, é isso que
estamos tentando projetar. É sempre bom ver,
antes de começarmos, que é
isso que estamos
tentando criar. Você pode tentar fazer isso
sozinho, se desejar. Estamos fazendo o
desejado na tela. Tente fazer isso sozinho,
se desejar. Ou podemos fazer isso juntos aqui, adicionando primeiro uma tela e
depois
adicionando uma sobreposição,
porque precisamos de um plano de fundo
adicionando a sobreposição Clicando aqui, vamos
adicionar uma imagem também. Esse será o nosso plano de fundo. Agora, para esta imagem, eu sou, vamos ver aqui.
Vamos às imagens. Eu vou usar
esse. Arraste-o novamente, como antes. Mude para desenhar a caixa
logo na margem 0.5 Agora, essa sobreposição aqui, vou alinhá-la no
meio, o ponto de ancoragem E escrevendo 0,5 no
alinhamento exatamente como antes. Como queremos centralizá-lo, lembre-se de que queremos escrever 00 no x e y.
Vou clicar aqui. Ou tamanho para o conteúdo aqui, então está no meio
aqui, precisamente. Agora, para o tamanho da tela, vamos
selecionar novamente a tela desejada Ela permanece com a tela que
selecionamos. A diferença é
que se você selecionar desejado, você pode ver aqui, no entanto, se eu for para o
tamanho da tela como antes para escalá-lo para o meu laptop, clicando aqui, você pode ver que ele muda automaticamente
para desejado na tela. Aqui está. É
super, super pequeno. Precisamos aumentar o
tamanho dessa imagem. Agora, talvez eu não altere a imagem em si porque ela está
ajustada ao conteúdo aqui Vou apenas adicionar um
pouco de conteúdo a ele e ver se ficará bem. Para começar, precisamos de
uma caixa horizontal. Vamos arrastar isso
para o Overallay. Então, na
caixa horizontal, precisamos de algum texto. Agora, para o texto,
vou copiar e colar algo que já
fizemos para que não precisemos refazê-lo. Vou entrar
no texto flutuante e vou copiar esse
texto aqui. Vou colá-lo
na caixa horizontal. Para esta imagem, posso
ver que ela não está sendo dimensionada corretamente no alinhamento
horizontal
e no alinhamento vertical Vá em frente e preencha. Agora,
para o tamanho desse texto. Eu vou escolher um pouco
menor, talvez 26 em vez disso. E também vou mudar a cor
do contorno para
algo marrom escuro, algo com essa cor aqui Clicando em OK. Também vou copiar essa cor de contorno para
as cores das sombras Nós damos esse efeito aqui. Em seguida, vou pesquisar o espaçador pelo espaçador
adicionado à caixa horizontal Para esse espaçador, vou
escrever 15 no X. Então vamos adicionar uma caixa vertical, porque agora precisamos adicionar a caixa vertical
na caixa horizontal Então, vamos agora adicionar o nome. Basta copiar e colar este texto novamente, colar na
caixa vertical deste, esse é o nome, por
exemplo, podemos dizer que temos alguns itens mais tarde, mas vamos escrever algo
como Whizz Apenas algo
aleatório. No momento, não
importa para este texto. Este é o número de itens
que compramos até agora
deste item. Eu só vou escrever 999. Essa talvez seja a quantidade máxima de itens que você pode
comprar no jogo. Agora, abaixo do
nome desse item, precisamos do preço. Vou fazer
uma caixa horizontal, porque precisamos do ícone da
moeda e do preço. Adicionando a caixa
horizontal à caixa vertical dentro daqui, precisamos de uma imagem e, em seguida,
precisamos de algum texto. Agora, para o texto,
vou copiar colar isso aqui
na caixa horizontal. Pelo preço, podemos
escrever algo como 9457 ou algo
parecido Pode até adicionar mais um número. Eu gostaria de adicionar um número alto porque só quero ter
certeza de que meu cartão de item não será
sacado sempre que
tivermos números tão grandes para o jogo Você pode até escrever mais
um número se quiser curtir isso. Para ter certeza de que o cartão
parece adequado para esse ícone, vou até minha
pasta de ícones e adicionarei essa
moeda aqui. Arraste-o agora para ver a imagem. Não vou
desenhá-la como uma caixa,
porque a caixa é
exatamente quando queremos que a interface seja dimensionada
sempre que a arrastamos. Mas para a imagem,
vou até aqui, alinhando-a horizontalmente e alinhando-a verticalmente
no meio, porque você pode ver aqui,
se você fizer assim, você pode ver que ela se você pode Isso também é perceptível. Sempre que você tiver uma interface de usuário
que se estenda mais, a imagem não será
dimensionada adequadamente Basta alinhá-lo
no meio aqui. Vou colocar o
preenchimento à direita, para que haja algum espaço entre o texto e o
preenchimento do ícone à Dê algo como
três. Temos algum espaçamento. Agora, também precisamos
dar algum espaçamento à caixa horizontal aqui, porque ela está nas bordas Vou clicar
aqui para ver o preenchimento. Agora, para a esquerda, vou tentar
dar algo como 25. E à direita, vamos dar 25 também, algo assim. Agora, para o topo, vamos tentar
algo como 15 por 15. Podemos dar um pouco mais. Acho que se eu clicar novamente
na caixa horizontal, vamos dar cerca de 16. Acho que vou dar mais
no final de 16, 20. Isso parece bom. Agora, para
essa textura também, alinhe-a verticalmente
ao meio Isso parece ótimo. Ok, vamos continuar. Agora, para a sombra, acho que vou
escrever para, porque a sombra
é muito forte, escrevendo duas em vez de
três para esta. Por fim,
vamos adicionar o botão Por. Vamos procurar o botão. Na verdade, precisamos primeiro de uma
sobreposição porque
precisamos adicionar algum
texto em cima dela Se eu adicionar o botão, vamos
ver onde o adicionamos. Aqui, fizemos essa caixa
horizontal. É aqui que queremos adicioná-lo. Arrastando-o até aqui e, em
seguida, procurando pelo botão. Vá em frente e adicione-o. Agora, para esse botão, vou apenas alinhá-lo vertical
e horizontalmente, assim Vamos até os botões
e arrastemos este. Arraste-o até aqui. Agora, para
a tonalidade que vou ampliar para que não afete
nosso botão de sorteio, vou desenhá-la como
uma caixa, como antes Margem 0,5 Agora, para este botão, vamos dar a
ele um tamanho aqui no x. Vamos seguir em frente e
dar um pouco de espaçamento Você pode escolher o
tamanho do botão que
deseja que ele tenha,
mas, por enquanto, vamos fazer
assim, porque vamos
adicionar um pouco de texto primeiro. Se eu simplesmente copiar isso, copiar e colar na
sobreposição desse texto, vamos alinhá-lo no
centro do botão Vamos escrever algo como y. Isso é o que vai dizer. Agora vou
colocar um pouco de acolchoamento na parte inferior porque acho
que está muito perto da parte inferior O acolchoamento inferior é
algo como quatro. Agora que temos,
parece muito bom. O que eu quero que você faça aqui, eu quero que você mude a
cor das moedas. Podemos simplesmente usar o
mesmo que usamos antes. Se voltarmos
ao menu principal ou à interface principal e pudermos
usar essa cor aqui, podemos copiar e colar no cartão do item
da loja aqui,
que é de uma cor diferente. Também para o botão Por, quero que você o
altere para outra cor, talvez algo como verde. Você pode tentar escolher a cor
verde desejada. Eu vou
escolher essa cor verde. Vá em frente e clique em OK. Agora, isso é o que parece. O que você precisa fazer
agora é tentar estilizá-lo o máximo possível,
projetá-lo Aqui você pode aumentar o Y do botão,
se desejar. Você pode ver que este não está
alinhado no meio. Vou clicar
nessa caixa vertical e alinhá-la no meio Em vez disso, parece mais correto. Agora, para esse botão,
não vou exagerar. Só estou dando um pouco de
espaço. Então, parece bom. Acho que algo
como 150 por 75, e isso é o que parece. Agora, você pode dar um pouco mais de espaçamento se quiser aqui, mas acho que tudo
está bem agora Este é o nosso cartão e sempre
podemos ajustá-lo. Não é como se nós o projetássemos agora. E então podemos tocá-lo mais tarde. Sempre ajustamos o I
mais tarde, porque o jogo muda a
cada hora em que o desenvolvemos, talvez em dois dias. Acho que isso
não parece bom. Eu posso ir em frente e
mudar isso se eu quiser. Eu posso até mudar a
cor disso e assim por diante. Basta projetá-lo da melhor maneira
possível por enquanto. Agora, para este texto, eu só
quero testar uma coisa. Você pode ver aqui,
se eu escrever aqui, isso vai escalar toda
essa interface do usuário. E eu realmente não
quero fazer isso. A maneira de evitar isso é
basicamente dando a ela
uma largura mínima. Se eu conseguir encontrá-la aqui embaixo, largura
mínima desejada, você pode ir em frente
e aumentá-la. Como você pode ver, ele
aumenta essa largura aqui. Para este texto, vou
alinhá-lo aqui
à esquerda e também
aqui embaixo à esquerda Na justificativa,
fica
à esquerda para essa largura
mínima desejada, acho que vou escrever
algo como 50 Sempre que mudamos o
número aqui no código, você pode ver se eu escrevo zero. Eu escrevo, por exemplo, 51. Isso não vai mudar todo
esse layout. Acho que isso parece muito melhor. Talvez eu possa até diminuir
o tamanho desta, escrevendo 20 em vez desta. Se eu escrever 999 novamente, posso diminuir a largura mínima
desejada para 45 Assim mesmo. A mesma
coisa com o nome do item. Então eu escrevo algo
como torre ou faço isso. Isso aqui, você pode
ver que muda o layout e eu realmente não
quero fazer isso de novo. Vou dar a ele uma largura
mínima de design aqui. Apenas aumente
até ficar feliz. Agora, para este texto,
vou alinhá-lo novamente horizontalmente à esquerda
e a justificação
à Para a largura mínima do projeto, vou fazer
algo como 150. Na verdade, vamos
dar a ele um nome muito mais longo, podemos testá-lo. Por exemplo, se tivermos um
item com um nome longo,
por exemplo, Wizard
Tower Defender ou o que quisermos
escrever aqui, podemos atribuir a ele uma largura
mínima projetada, 200.235 seria Podemos simplesmente remover
isso com uma torre. Novamente, para este texto aqui, ele realmente não
afetará, porque não vai durar
tanto quanto afeta aqui. Vou deixar
isso pra lá por enquanto. Mas, novamente, você pode simplesmente fornecer um design mínimo, se desejar. Mas, por enquanto, eu simplesmente não vou fazer isso porque acho que não
vai demorar tanto aqui. O preço, tudo
está bem agora. Tudo bem, então isso era tudo
para o cartão de itens da loja. E vamos
mudar os nomes porque precisamos ajustar o slater Agora, para este texto, vou dizer
o texto do nome do item. Este aqui embaixo será chamado de texto Preço do item por botão aqui. Também vamos
alterá-lo mais tarde, porque
eu quero mudar
a cor e torná-lo vermelho
se não pudermos comprar o item. Vou mandar uma mensagem
para essa. Essa é uma mensagem de texto. Quantidade de pontos de itens, realmente não
precisamos mais
fazer aqui. Se você compilar e dar
uma olhada no gráfico, essas são as variáveis
que temos agora para o texto desta interface de usuário aqui, acho que está tudo bem Sempre podemos
ajustar as coisas mais tarde se quisermos mudar alguma coisa. Por enquanto, vamos salvar tudo
agora por meio de um botão Vou garantir
que a visibilidade esteja configurada para ser testável, para que também não bloqueie o botão desse botão Vou copiar e colar no Hoverdm pressionado
para o estado pressionado Acho que temos um
estado pressionado nos botões. Vou clicar nesse aqui
e arrastá-lo até aqui. Para o estado de Hoverd, não
temos um botão. Vou mudar
o tom para um pouco diferente sempre que clicarmos
no botão,
ok, vá em frente, compile
e salve Agora, se você
quiser testar isso, você sempre pode voltar para o
meio e sair daqui Você pode pesquisar o cartão de
itens da loja WB que criamos. E você pode arrastar isso para
a lista de itens que fizemos, ver como
fica se eu apenas controlar D e
duplicá-lo algumas vezes Isso é o que parece
se eu simplesmente os remover aqui. Agora, o que você pode fazer é dar a ele algum espaço. Agora, na caixa de rolagem, vá em frente e dê
espaço para o preenchimento Eu posso escrever 25, eu posso
escrever algo como 50. Acho que talvez 50
seja um bom número. Agora você pode ver que está
cortando para o lado. O que você pode fazer é
aumentar o tamanho deste. Lembre-se, esta é
toda a caixa vertical aqui. Você pode ir em frente e
aumentar um pouco o tamanho. Você pode ver tudo.
O que você também pode fazer é clicar
na caixa de rolagem. Vou clicar aqui
na barra de rolagem Always Show. É assim. Também
consuma a roda do mouse. Vou mudar para sempre para que possamos rolar sempre até aqui. Agora, vamos também projetar essa
alça para a barra de rolagem. Quero que você
volte aos materiais do curso aqui. E eu te dei
essa alça deslizante. Vamos importar isso. Se eu chegar aqui, arraste essa alça deslizante
para as imagens Eu só vou fazer
isso dentro daqui. Arraste-o aqui, certifique-se de adicionar
as configurações de pixels. Vamos clicar com o botão direito do mouse nas ações certas aplicar papel nas configurações. Agora vamos voltar para a interface do usuário, abrir a interface principal
e, dentro daqui, clicar
na caixa de rolagem. E desça e você encontrará esse
chamado estilo de bar. Clicando nela, tínhamos essa imagem entorpecida
normal aqui. Você pode alterá-lo para
a alça deslizante. Agora você pode ver isso mudar. Agora, novamente para a margem da caixa, vou escrever 0,5 em vez da espessura da barra de
rolagem. Você pode ver o quão largo ele deve ser. Acho que vou dar
algo como 18. Você também pode dar um
pouco de preenchimento, algum espaçamento entre
esses itens E esse identificador, eu vou escrever zero em todos
eles por enquanto. À esquerda, vou dar algo
como dez, então tem um pouco no topo. Vamos ver se eu
acho que deveria continuar o mesmo. Na verdade, zero no
topo, o direito é zero. A parte inferior também é zero. Vamos tentar assim. Eu só vou dobrar isso algumas
vezes Também posso ver a sombra
aqui embaixo, como ela se parece. Ok, tudo
está ótimo. Agora vamos clicar
nessa caixa vertical e
aumentar o tamanho dela. Então não está, acho
que está ótimo até agora.
Isso é o que parece. Você sempre pode reduzir o tamanho desse item se quiser, se o nome for muito
longo. Ou você pode diminuir o nome para
ter espaço no motor. Mas, novamente, podemos
ajustá-lo mais tarde, se quisermos. Mas, por enquanto, vamos voltar
ao item da loja, Cod. O que eu quero fazer aqui
é dar um
pouco de espaçamento, porque você pode ver que
não há espaçamento entre esses elementos dentro
dos códigos dos itens da loja Vou clicar
na imagem aqui. Vou apenas colocar um pouco
de acolchoamento na parte superior e inferior Para o topo, talvez seis e
para o fundo seis também. Vamos tentar ver o
que isso parece. Isso parece muito melhor. Na verdade, vamos dar cinco
em vez de 65 por cinco. Novamente, se desejar, você sempre pode aumentar
o tamanho do botão. Não é isso para o X, para o Y, na verdade, vou aumentá-lo novamente, um pouco, algo
como 80. Lembre-se de copiar esse tamanho de imagem para o cursor do mouse
e também para a prensa Compile, compile, salve tudo. Aqui está o que parece. Parece muito bom. Não acho que
mudaremos mais coisas se eu
apenas maximizá-las. Isso é o que
parece. Para mim Talvez eu torne o
texto um pouco maior. Na verdade, deixe-me fazer isso.
É um pouco pequeno demais. Na minha tela, posso fazer cerca de 20 para o texto aqui em cima, o preço também, e 22 ou 24 para os itens aqui compilados Espero que não precisemos ajustar
a largura mínima desejada, mas podemos fazer isso
mais tarde, se necessário. Acho que isso parece muito melhor. Ok, esses são
os itens que temos. Tudo está indo bem. Também para o botão de compra, vou
alterá-lo para 20. Agora terminamos.
Vamos salvar tudo e fechar
tudo. E agora estamos
prontos para continuar.
67. 8.03 Informação do item Estrutura e tabela de dados: Antes de
continuarmos com isso, obviamente
precisamos de alguns
itens com os quais trabalhar. Eu quero que você acesse seus materiais de
custo mais uma vez, e eu quero que você acesse a
pasta de objetos. Dentro daqui, eu te
dei alguns ícones e você pode usá-los
como itens no jogo. Então vá em frente e
vamos importá-los. Vamos até os ativos aqui
dentro, vou clicar com o botão direito do mouse
e criar uma nova pasta, vamos chamá-la de objetos. Vá em frente e importe tudo
isso aqui. Novamente, vou
clicar em todos eles. Clique com o botão direito do mouse e aplique papel nas configurações
novamente. Agora temos esses. Agora, para
usá-los de forma intuitiva, lembre-se de que precisamos
transformá-los em sprites Não podemos simplesmente arrastar
texturas como essa, então vamos selecionar todas elas. Clique com o botão direito e vá em frente e diga Create Sprite. Agora não precisamos extrair
porque lembre-se extrair somente quando temos vários sprites em uma imagem No momento, é apenas um
sprite em uma imagem. Então, podemos seguir em frente e
clicar em Criar Sprite. Aqui temos os sprites. Vou
clicar com o botão direito do mouse e criar uma nova pasta chamada Texturas, porque basicamente não
precisamos mais de todas elas. Vou clicar em todas essas texturas e arrastá-las para essa pasta Agora só podemos ver os sprites. Vá em frente e salve tudo isso. Em seguida, vamos
ver as plantas. E vamos seguir em frente e
fazer nossa estrutura. Vamos abrir a pasta de
estruturas. Crie uma nova estrutura de projeto, informações
do item, informações do item ST Vá em frente e abra. Agora podemos adicionar variáveis ao que quisermos
para as informações desse item. Agora, para as informações do item, obviamente
preciso do
nome do item. Basta digitar o nome correto, vá em frente e selecione a string Salvar. Vamos criar uma nova variável. Vamos chamar isso de uma classe. E essa
será a classe base do item. Eu posso ver aqui que ainda não
criamos uma base de itens. Vamos fazer isso
nas plantas. Aqui não
temos uma pasta para isso Vou escrever e clicar em criar
uma nova pasta chamada Itens. Dentro desta
pasta de itens. Vamos escrever uma nova
classe de blueprint para esta Agora, quanto aos itens, eu só quero que sejam sprites
normais que eu quero que
apareçam no mundo Na verdade, vou
pesquisar o sprite e selecionar o ator do sprite de papel Vá em frente e selecione este. Vou
chamá-la de base de itens da BP. Agora você pode imaginar quando já está
criando um jogo. Agora você precisa decidir o que seu item
conterá. Porque você pode ver aqui
se mais tarde eu decido que meus itens são flip-books
de papel animados E eu tenho que ir em frente e
criar um plano aqui, procurando por flip book em vez disso, e selecionando
este Crie sua base de itens
em um blueprint errado. Isso vai
ser uma dor para você porque você precisa
recriar tudo novamente quando já está
criando um jogo a partir de Agora, decida se seus
itens são animados? Se estiverem, você deve
selecionar um flipbook de papel,
obviamente, porque os
flipbooks obviamente, porque os
flipbooks No entanto, se você não tiver
nenhuma animação para os itens, sabe que pode
selecionar um sprite Apenas certifique-se de
saber tudo isso antes de
criar o blueprint Eu sei que meus itens aqui não
são animados,
são apenas imagens aqui. Sprites, eu crio sprites de
papel em vez disso. Agora temos essa base de itens. Agora, nós realmente não precisamos
fazer nada com isso. Então, vamos voltar
às informações do item. Eu só queria
criá-lo aqui na minha classe. Eu posso pesquisar a base de itens, posso prosseguir e
selecioná-la como uma referência de classe. A razão pela qual eu selecionei
como referência de classe é que
isso geralmente é o que você faz
quando deseja gerar itens Lembre-se
de que, dentro do projeto, eu abro o controlador do player, usamos essa classe,
essa é uma classe de ator de
referência de classe E usamos isso para gerar coisas. Eu quero gerar
o item mais tarde, então vou adicioná-lo a ele Então, queremos escrever sprites porque eu quero
saber qual sprite ele tem Vou pesquisar sprites
e selecionar a referência do
objeto Papa Sprites A última coisa que quero acrescentar é quanto custa esse item? Custo das moedas. Vá em frente e pesquise, vamos selecionar um número inteiro Só um número inteiro. Agora terminamos isso,
as informações do item. Vamos agora
adicionar uma tabela de dados para isso. Abra a tabela de dados. Clique com o botão direito na tabela
Micellaneouselta. Eu tenho que selecionar as informações do
item de estrutura, a Coca-Cola. Chame-o de informações do item T. Agora estou passando por
isso um pouco mais rápido do que antes, porque já
fizemos isso duas vezes antes. Agora, essas informações do item, precisamos de uma tabela de dados para ele
dentro do Google Sheets. Quero abrir o Google
Sheets mais uma vez aqui. Deixe-me duplicar isso, informações do nível
TT, certo? Duplique-o. Vamos chamar
esse aqui embaixo. Vamos mudar o nome
para base de itens do DT. Agora, dentro daqui, eu
vou deletar tudo isso. Exclua tudo isso novamente. Agora, para os itens, tenho que escrever o nome
de cada item. Por exemplo, eu posso
pegar o primeiro e você sempre pode copiar e
colar o método. Novamente, você precisa escrever os mesmos nomes de variáveis que você fez dentro da
estrutura aqui
para escrever o nome. E então
temos que escrever sprites, e então temos o custo das moedas, você tem que escrevê-las exatamente
como as escrevemos aqui,
caso contrário, não vai funcionar A segunda coisa é que você precisa anotar as
informações. Agora, se eu voltar para minha
mesa agora para obter o ID, você terá que escrever o nome do item. Se eu voltar para os objetos, encontro um dos itens. Por exemplo, digamos que o
primeiro item seja essa pena. Eu posso chamá-lo do que eu quiser. Por exemplo, eu quero
chamá-lo de pai da luz. Posso copiar e colar
no nome da classe. Ainda não o criamos. Eu vou até os itens da aula. Eu tenho que clicar com
o botão direito aqui. Crie uma turma infantil de blueprint. Agora eu tenho que criar
todos os itens. O primeiro é
chamado BP Light. Você pode tentar ajustá-los em qualquer sequência
que desejar. Por exemplo, a pena clara é o pior item do jogo Por exemplo, essa chamada ou esse arco-íris pode ser o
melhor item do jogo Você pode simplesmente ajustá-los em qualquer sequência que
desejar, mas você só precisa
criar todos eles. Por exemplo, eu posso
criá-los em uma sequência aleatória. Por enquanto, por exemplo, essa coroa do mal. Agora posso ir até os itens, clicar com o botão
direito do mouse na base do item e
criar um plano secundário Chame isso de BP Brown of Evil. Volte para os objetos, vou
copiar o chapéu do Grande Mago. E faça a mesma coisa
com todos os itens. E voltarei com você assim que tiver criado todos eles. Tudo bem, agora estou de volta. Eu criei todos os
itens aqui quando era criança. Então, basicamente, clico com o botão direito do mouse e crio um vidro de
planta infantil Só estou dando o nome
dos itens que eu tenho aqui, aqueles que
importamos para cá. Agora eu tenho todos eles. salvar tudo. Agora, o que você pode fazer
é voltar
à tabela de dados para obter
essas informações aqui. Para obter as informações da classe, geralmente
vou até
a tabela de dados A, adiciono uma
linha e seleciono-a aqui, por exemplo. Eu posso selecionar a
pena Lucky ou light, por exemplo E então eu posso segurar a tecla Shift, clicar com o botão
direito para copiar
e, em seguida, posso
abrir minha tabela de dados, controlar V para colá-la. É basicamente assim que você faz. Agora você pode ver que tem
essa pena clara colada. Agora, novamente, você precisa escrever
todos os itens aqui. Agora, muito importante,
essa
será a sequência de seus
itens, quão bons eles são. Apenas certifique-se de
escrever os piores itens primeiro e depois
ficar cada vez melhor escreva-os em qualquer
sequência que desejar. Eu vou fazer
isso aqui também. Agora, eu escrevi
todos eles em qualquer sequência que você desejar. Acabei de escrever uma sequência aleatória
aqui para todos os itens. Agora, para cada uma dessas classes, novamente, você tem que entrar aqui, abrir a tabela de dados para
as informações do item, selecionar, por exemplo, a
próxima, que é, vamos selecionar apenas em sequência. Por exemplo, Crown of Evil. Volte para a tabela de dados e cole aqui para
a Coroa do Mal. Agora volte novamente, selecione
as cabeças dos grandes magos. Cole-o nas cabeças
do mago aqui em diante. Basta fazer isso
por todos eles. Agora, para o sprite, é muito mais fácil porque
você pode simplesmente minimizar isso Vá até seu sprite
aqui nos objetos. Para cada sprite,
clique com o botão direito do mouse na referência
e, em seguida, você pode voltar aqui colá-la para a Coroa do Mal Agora, por exemplo, na próxima, o cabeçalho
do assistente, clique com o botão direito do mouse na referência. Volte para a tabela de dados, cole-a aqui e assim por diante. Faça isso com o sprite também. Agora, quanto ao custo das moedas, você pode fazer isso aleatoriamente. Agora você pode escrever algo como se o primeiro item estivesse
custando 15 moedas Vou escrever da mesma forma
clicando nesse número, multiplicamos 1,5. Depois,
vou clicar e arrastar
isso para todo esse campo. Então, ele
adiciona automaticamente o número para mim. Realmente não importa
qual é o preço por enquanto. Você sempre pode ajustá-lo mais tarde. Só vamos
programar por enquanto. Eu só vou preencher
tudo isso agora. Tudo bem, agora eu preenchi
todas as informações. Vá em frente e clique em
Arquivo e faça o download. Faça o download como um arquivo CSV. Agora vá em frente e renomeie
isso para DT base. Vamos voltar para a tabela de dados. Na verdade, a base DT chamou isso de
informação. Esse é o meu erro. Informações do item. Você também precisa corrigir isso dentro
da tabela de dados aqui. Em vez disso, chame-o de informação, isto. Agora podemos arrastar
isso até aqui e importar automaticamente todas
as informações para nós. Então, agora temos
tudo o que precisamos. Agora, a etapa final
que precisamos fazer, pouco antes de terminarmos com isso, sempre
podemos ir às bibliotecas. Agora, dentro das
bibliotecas anteriores, vamos adicionar uma nova função chamada get item info porque
precisaremos dela mais tarde. Vamos adicionar aqui a entrada, chamá-la de nome T, que é uma string. Agora, para o item,
vamos arrastar novamente. Assim como antes,
podemos entrar aqui. E é basicamente tudo isso. Você pode até copiar e colar
tudo isso aqui. Estamos substituindo todos os
espaços, como você pode ver aqui. Queremos aqui as informações do item DT e podemos criar um nó de
retorno, retornar, ele retorna as informações
deste item aqui Posso simplesmente escrever as informações do item, compilar e garantir
que as informações do item que você selecionou sejam puras Porque queremos apenas
obter as informações,
salvar tudo. Foi isso mesmo. Agora temos tudo o que precisamos
para as informações do item. Se você quiser apenas testá-lo, você sempre pode entrar
no player, por exemplo,
corretamente, pode dizer
obter informações do item Aqui você vê que tem o nome do item que
pode ser conectado e vamos realmente adicionar o nome do item antes de terminarmos isso.
Apenas um
conteúdo extra aqui, podemos
finalizar a base do item. Vamos abri-lo aqui para
as variáveis que eu quero adicionar. Podemos até chamá-lo de
nome ou nome. Vamos chamá-lo de nome do item. Vamos dar a ela uma variável de string. Compile agora, já que eu a
adicionei ao pai, todos os
filhos do blueprint herdarão essa variável se eu abrir a
coroa do mal. Por exemplo, você pode ver aqui que ela
tem o nome do item e você precisa escrever o nome
do item corretamente Agora, porque esse é o nome do item que extrairá as informações dessa tabela
de dados. Se você chamar essa, por
exemplo, de Coroa do Mal, ela encontrará
Coroa do Mal aqui. Mais tarde, serão necessárias
todas essas informações. Ele sabe qual classe tem, qual sprite, quanto
custa e assim por diante Portanto, você precisa escrever
isso corretamente e podemos usá-lo mais tarde. Novamente, clique em todos eles. Escreva o nome deles
para Grand Wizard. Adicione a esta
base de itens de composição, não temos nada. King's Crown, certo? Reis redondos. Eu só vou fazer
isso para todos eles. Tudo bem, essa é a
última que é a tocha. Vamos compilar
e salvar tudo. Agora temos tudo o
que precisamos. Vá em frente e salve tudo, e vamos
para a próxima lição.
68. 8.04 Criando os cartões de itens da loja: Tudo bem, agora vamos criar
o item da loja. Od, vamos agora
às plantas. Abra a lei de controle do jogador, porque lembre-se de que aqui
é onde fazemos a interface do usuário. Qualquer interface de usuário que você tenha que fazer. Eu costumo fazer isso
no controle do jogador. Em vez de aqui, vou
criar um novo evento, evento
personalizado. Vamos chamar
isso de criar itens de loja. Porque agora precisamos
criá-los dinamicamente
por meio de código Lembre-se de que, para o cartão de itens da loja, basicamente
projetamos um cartão aqui como um cartão estático com todas as
informações estáticas. Mas agora precisamos alterar todo esse texto aqui para
ser dinâmico por meio do código. É por isso que primeiro
precisamos criar a carta e depois exibi-la no topo do menu, onde
temos essa caixa de rolagem aqui
no controle de jogo. Vamos fazer isso. Crie cartões de
itens da loja. O que queremos fazer basicamente é usar esse
chamado widget de criação aqui Crie widgets. E queremos
criar o cartão de itens da loja. Esse é o nosso principal objetivo. Agora temos que criar isso
para quantos itens temos. Lembre-se de que essas
informações estão
disponíveis na
tabela de dados que criamos aqui. Já sabemos quantos
itens temos daqui. Na verdade, sabemos
quantos desses widgets
precisamos criar Basicamente, você pode fazer isso clicando com
o botão direito do mouse e dizendo, obtenha os nomes das linhas da tabela de dados. Lembre-se dessa que usamos
dentro da biblioteca de funções, mas agora precisamos usar essa. Obtenha os nomes das linhas da tabela de dados. Então, estamos obtendo todos
os nomes dentro
dessa tabela de dados. Agora temos todos os nomes
dos itens aqui. Vamos conectá-lo. O que podemos fazer agora é, em vez de conectá-lo aqui, porque precisamos criar um widget para cada um
desses itens, o que podemos fazer é arrastar até aqui e dizer quatro em cada loop Agora vamos fazer um loop. Agora, para cada um desses itens, vá em frente e crie um widget Então, quando você cria o widget, eu quero adicioná-lo em uma matriz Se eu criar uma nova
variável aqui embaixo e chamá-la, posso alterar o tipo
desse widget que criamos Cartão de itens da loja. Se
eu apenas pesquisar um item da loja e este
aqui, vá em frente e selecione-o. Eu quero mudar este para
uma matriz. Você pode clicar aqui
ou, na verdade, aqui em cima. E você pode selecionar matriz, ou você pode simplesmente clicar com o botão direito nesse ícone e ele o transforma em uma matriz. Agora, para este
cartão de item de loja, o que é uma matriz, se
você ainda não sabe que tem as variáveis únicas
aqui e tem
uma matriz, uma única variável é onde basicamente, assim como
antes de usá-la, armazenaremos uma única
informação nessa variável
para que possamos usá-la posteriormente. Agora, para uma matriz, isso é
armazenar várias informações. Podemos armazenar todos os
widgets que criamos. Podemos armazená-los aqui
para obter essas informações. Você pode arrastar e obter e obter qualquer índice de
informações em que ele esteja Se eu clicar nessa matriz
aqui, você pode realmente ver clique no sinal de mais.
E eu posso selecionar um item e clicar
no sinal de adição novamente, selecionar outro item
e você pode continuar. Você pode ver que ele salva
várias informações. No entanto, para um único, você pode ver que só pode salvar uma única informação
. Mas para uma matriz, você
pode salvar várias. Vamos simplesmente
deletar todos eles. Você pode ver aqui que, quando você
tem todos os widgets, também
pode escrever
para cada loop Agora você pode fazer
algo com cada um dos itens que você
salvou aqui. Vamos salvar
esse widget aqui. Para cada um dos itens,
criamos um widget. Vou colocar cada um desses widgets aqui e dizer Adicionar, vamos adicionar isso
à loja. Cartões de itens como esse. O motivo pelo qual
precisávamos transformá-lo no
widget Shop It aqui, digite Porque lembre-se de que, se você
segurar o mouse sobre isso, isso também é uma referência ao objeto Shop
It. Agora, se você tentar fazer outra
coisa, por exemplo, se eu apenas pesquisar
base de jogadores por jogador e selecionar esse player PP
e transformá-lo em uma matriz, tento adicionar isso aqui. Isso vai dizer que a referência do objeto
do item da loja não
é compatível com a
referência do objeto do jogador porque eles não são do
mesmo tipo de variável. Você não pode fazer isso, elas precisam ser do mesmo tipo de
variável. Antes que você possa
adicioná-los aqui, deixe-me deletar este. Agora, criamos um
widget para cada um
desses itens e o armazenamos
nessa variável de matriz Agora eu também
quero ter certeza de que essa matriz aqui não
tem nada dentro dela. Antes de fazer isso aqui, antes de fazer qualquer coisa, deixe-me copiar isso, colar e dizer claro. Porque eu quero
limpar essa matriz antes de começar a adicionar
itens a ela. Agora, basicamente,
terminamos de criá-los. Foi isso por enquanto. Vamos compilar e passar para a próxima
69. 8.05 Exibindo os cartões de itens da loja: Tudo bem, agora estamos prontos
para exibir os cartões de itens. Agora, antes de fazer isso, vou deletar
todos eles. Portanto, selecione esses cartões de
itens que adicionamos anteriormente à lista e
exclua a compilação Agora, o que podemos fazer dentro
do controle do player, novamente, vamos criar corretamente
um novo evento personalizado Vamos chamá-lo de cartões Display
Shop It. Agora vamos exibir
os cartões que
criamos anteriormente. Antes de fazer isso, novamente, preciso limpar o que tenho
dentro dessa caixa de rolagem. Lembre-se de que temos
essa lista de itens do VB. Vamos voltar ao controle do
player. Pegue este WB principal, porque esta ou esta lista de itens da lista
VB está dentro do WB Posso arrastar a partir daqui
e dizer lista de itens VB,
digamos, crianças claras Porque eu quero
limpar todos os itens que estão dentro dele
antes de adicionar meu cartão. Ele não exibe coisas
aleatórias. Além disso, se você criar
os cartões de itens da loja posteriormente por algum
motivo para o seu jogo, certifique-se de remover os antigos antes de
adicionar os novos. Agora vamos pegar os cartões de
itens da loja que temos. Agora podemos dizer que para
cada loop conectado. Agora, para cada um
desses cartões de itens, queremos adicioná-lo a essa lista. Eu posso copiar isso, colar
e dizer adicionar dois. Adicione a criança à caixa vertical, selecione esta e agora adicione-a dentro daqui. Para cada
cartão de item da loja que eu recebo aqui, vá em frente e adicione-o à lista. É basicamente isso
se eu compilar agora. Porque aqui, se eu clicar em Jogar,
nada realmente acontece. Porque lembre-se de que
nunca convocamos esses eventos. Vamos fazer isso no início do jogador ou no
início do jogo aqui. Porque normalmente você só precisa pensar
em seu jogo, quando ou onde você
quer chamá-los? Você quer chamá-los
do player, do controlador do Player. Agora eles são exibidos
dentro da minha interface principal, então eu posso realmente fazer isso
dentro do Begin Play. No entanto, se isso estivesse sendo exibido dentro do meu, por exemplo, um botão aqui que
eu tivesse que pressionar
para abrir a loja
, eu não o exibiria
dentro do Begin Play. Eu o criaria.
Se eu puder ir até aqui no Begin
Play e dizer Create, compre cartões It e ligue para esse
evento que criamos. Agora estamos convocando esse evento aqui
embaixo. Isso está correto. Agora, se estivesse
dentro de um botão, se eu tivesse que apertar um
botão para abri-lo, eu não escreveria essa
tela no início da reprodução. Eu escrevia isso sempre que
clicava no botão. Em seguida, você deseja exibir
os cartões de itens da loja. Mas, no momento, temos
isso no início, na verdade, queremos
exibi-lo imediatamente. Na verdade, posso escrevê-lo
aqui sempre que
crio os cartões de itens da loja e tudo é adicionado e
tudo está completo. Aqui, concluindo, quero
dizer que exiba cartões de itens da loja. Então, está fazendo isso corretamente. Vamos compilar e
clicar em reclamar agora. E eu posso ver que nada acontece. E isso porque, na verdade,
esqueci selecionar
as informações do item DT aqui Se eu compilar a reclamação agora, agora você poderá ver todos os meus itens Não é com
informações corretas, pois lembre-se que ainda não dissemos onde o título deveria estar, qual deveria ser
o preço. Precisamos atualizar isso, mas você pode contar aqui que
tem 1-234-567-8910 Isso está correto porque
dentro da tabela de dados, também
temos dez itens. Agora, na verdade, ele está exibindo a quantidade correta de
itens em nossa lista. Isso é o que nós queremos. Eu posso ver que há um bug com
essa barra de rolagem. Na verdade, vou
corrigi-lo
imediatamente . Se eu
clicar nessa caixa de rolagem, o polegar normal,
vou colá-la Para o pairado, para
o Dr. E pairado, você pode até mesmo alterar Também tem
algum efeito no arrasto. Eu vou mudar isso um pouco. Ok, clique em jogar agora. Tudo deve estar bem. Ok, agora tudo é
exibido corretamente. Vamos continuar
com o próximo.
70. 8.06 Dando a cada cartão de item a informação correta: Agora temos que
pensar em como
dar a cada cartão de item as informações
corretas. Assim, podemos mudar o nome, podemos mudar o
preço e assim por diante. Então, vamos entrar no gráfico. Dentro daqui, eu quero
criar uma nova variável. Vamos chamar isso de informação de um item. Vamos também alterar o tipo
para as informações do item. E podemos selecionar a
estrutura que fizemos. Ok, vá em frente e compile. E eu posso ver a estrutura agora que você tem todas
essas informações, mas agora ela está vazia. Então, como obtemos as informações
corretas do item? Todas essas informações aqui. Como colocamos isso dentro
do cartão de itens da loja? Assim, podemos definir o
texto do título, definir o texto do preço
e assim por diante corretamente. A forma como fazemos isso é acessar
o gráfico do cartão do item da loja, clicar nas
informações desse item e configurá-lo como editável
por instância
e exposto no Você compila e volta para o controlador do player
agora e clica em Arquivo,
Atualizar todas as notas Você pode ver aqui, você percebe que essa informação do item apareceu. E, novamente, isso ocorre
porque pressionamos a instância Editável
e expusemos no Ele será exposto
sempre que criarmos o widget. Aha. Agora podemos pegar
isso e dizer obter informações. E, na verdade, não
podemos fazer isso diretamente porque é uma string. Tally pode dizer para obter informações sobre o item. Lembre-se de que essa é
a função que
criamos na biblioteca de funções. Agora podemos arrastar isso até aqui e ele converterá
sua string de nome ou sua variável de nome em
uma variável de string. Agora podemos registrar as informações desse
item aqui. Agora, para cada um desses itens, basicamente o que ele
está fazendo é obter esses itens para cada nome do item
ou cada nome do item. Se eu acessar as informações do item, lembre-se de que temos um nome. Ele usará essas
informações para obter informações aqui. Então, basicamente,
ele lerá, por exemplo, com
uma pena leve, obterá essas
informações para a tocha, obterá
essas informações e assim por
diante para cada um deles Ele vai conectá-lo
à respectiva placa
que criamos. Então, agora temos essa informação realmente
armazenada aqui. Agora podemos continuar com as
próximas lições, onde podemos realmente adicionar ou atualizar as
informações desse cartão.
71. 8.07 Exibindo as informações do cartão de item correto: Agora que temos as informações corretas do
item dentro dessa variável, vamos prosseguir e
atualizar as informações. Vou deletar
tudo isso por enquanto. Vamos começar com a construção do
evento. A construção do evento
será reproduzida sempre que você criar
o widget aqui Lembre-se de que criamos os cartões de
criação de itens da loja. Sempre que você cria o widgit, esse início de jogo ou até mesmo construção será reproduzido
imediatamente Vamos atualizar as
informações aqui contidas. Simplesmente o que queremos
fazer é
começar com o
nome desse item, clicando nele. Lembre-se de que já
alteramos
o nome dela e a definimos como
uma variável. E fizemos isso
para todos eles. Clicando no
primeiro, nome do item, arrastando-o até aqui,
arrastando e dizendo o texto definido Isso é basicamente
o que queremos fazer. Queremos definir o
texto corretamente. Queremos pegar as informações desse
item agora, arraste-o e diga break. Assim, podemos ver
todas as variáveis. Podemos simplesmente arrastar
o nome do item dentro daqui e
ele será atualizado. Vá em frente e
conecte-o. E você já pode ver isso funcionando se
clicar em Jogar agora. E agora você vê que tem o nome correto
para todos eles. The Protector Night Helmet, King's Crown e assim por diante Ele está sendo atualizado corretamente. Dessa forma, você sabe
que as
informações corretas estão sendo exibidas. Ok, esse era o nome do item. A segunda coisa
que eu quero atualizar é o preço. Clique neste. Vamos arrastá-lo e dizer Definir texto. Agora, para ver o preço, vamos
clicar neste. Vou mostrar o custo
das moedas. Vou conectá-lo aqui. Divida isso. Agora,
se você clicar em Reproduzir, verá
que isso também é
exibido corretamente. Agora, para a quantidade de
itens que compramos, toda vez que você clica e compra um item, você precisa
armazená-lo em uma variável, porque mais tarde você
precisa saber
quantos desses itens
você comprou. Agora, quanto à quantidade
de itens que compramos, acho que vou armazenar essas
informações dentro do player. Se eu abrir o player
e entrar aqui, vamos criar uma nova variável. Vamos chamar esse item de potes. Agora vamos
transformá-lo em uma string porque precisamos saber de qual item
estamos falando. Agora vou
transformá-lo em um mapa. Preciso explicar para
você o que é um mapa. Se você simplesmente arrastar isso aqui, podemos ver que um mapa é uma conexão
entre duas variáveis, em vez de ser
uma variável. Agora temos duas variáveis em uma aqui, eu compilo aqui embaixo, clico em mais, você pode ver que há um
campo no qual eu posso escrever Essa é basicamente a variável de
string aqui. Eu posso definir um número
aqui, e essa é a variável
inteira. Você pode ver que temos uma string
e um número inteiro
e, basicamente, você pode
ter quantas quisermos Quero usar isso para
ter o item,
por exemplo, a coroa do rei. E então, quantos
King's Crown compramos até agora? É assim que vamos
usar essa variável. Mas um mapa, você pode basicamente
transformá-lo em qualquer coisa. Por exemplo, você pode
transformá-lo em um número inteiro aqui. Você também pode
alterá-lo para uma transformação. Por exemplo, aqui, agora você pode ver que
pode usá-lo assim, onde você tem um número que
é basicamente o número inteiro Então você tem a transformação. Se você clicar aqui,
poderá ver a transformação. Basicamente, você pode armazenar talvez a quantidade de transformações que você tem no mapa ou
qualquer outra coisa, algo aleatório Mas, como você pode ver, um mapa é uma conexão entre
duas variáveis. Mas deixe-me
transformá-lo em uma string por enquanto e transformar o segundo em
um número inteiro porque eu basicamente quero saber qual item estamos
falando e quantos desse
item realmente compramos É para isso que você está
usando um mapa. Eu não compilei agora
para esses itens comprados. Deixe-me agora voltar para
o cartão de itens da loja. E preciso de uma referência ao
meu player porque preciso
usar essa variável na construção
do evento. Deixe-me usar minha interface de
projeto. Primeiro, jogue o personagem, comece a jogar. Então, a partir daqui, podemos arrastar e dizer get
play, nossa referência. Lembre-se de que essa é a
interface de projeto que criamos. Clique com o botão direito, promova
isso para nossa variável e chame-a de
peão do jogador, por exemplo E vá em frente e conecte-o. Agora que temos a variável, agora
podemos pegar
esse peão e
usá-lo dizendo que ele aparece e
podemos obter nossa variável O que queremos fazer,
basicamente, se eu voltar, este é o ponto do item.
Se eu apenas arrastá-lo para dentro, simplesmente
queremos definir
o texto como antes de escrever o texto definido,
vá em frente e conecte-o. Isso é basicamente
o que queremos fazer. Precisamos saber quantos
desses itens compramos e de qual item
estamos falando. Podemos arrastar até aqui e
dizer, por exemplo, se você não sabe o que
pode fazer com um mapa, você sempre pode pesquisar o mapa. E agora você pode ver todas
as funções que você
pode usar para um mapa. Por exemplo, você pode pesquisar, encontrar porque queremos encontrar o item aqui quando
encontrarmos o item específico, por exemplo, a coroa do rei. A partir daqui, se eu puder
soletrar King's Crown, então a partir daqui
sabemos quantos itens compramos e
podemos realmente exibi-los Em vez de escrever aqui, o que você pode fazer é que já
saibamos qual item é porque
temos as informações do item. Então, podemos arrastar isso
e quebrar aqui. E então temos o
nome do item ao qual podemos conectar uma variável. Agora
, ele pegará o nome
desse item
em que estamos e o conectará. E a partir daí, ele
encontrará o item e, em seguida descobrirá quantos
desses itens você
realmente comprou? Mas, no momento,
não armazenamos realmente nada dentro
desses itens comprados. Portanto, está vazio no momento, mas terá
algumas informações mais tarde, quando
realmente comprarmos os itens. Vou apenas
conectá-lo aqui e ele o
exibirá para mim, uma compilação em execução E agora você pode ver
que ele está exibindo zero porque não temos
informações nele até o momento.
72. 8.08 Mudando a cor do texto de compra: O que eu quero fazer agora é atualizar isso pela cor do botão, porque se tivermos zero moedas, quero exibir
essa cor ou a cor do texto como
vermelho em vez de verde. E fica verde sempre que
temos moedas suficientes
para comprar esse item. Vamos seguir em frente e fazer isso. Deixe-me encerrar isso. Novamente, trabalhando com a interface do usuário, quero fazer isso dentro
do controle do jogador. Dentro daqui, vou
criar uma nova função. Vamos chamar isso de. Vamos chamá-lo de atualizações, armazenar ou atualizar, comprar. E é por botão ou por cor de texto,
algo assim. Atualização muito explicativa do cartão do item da
loja pela cor do texto. Agora, precisamos de uma
referência a todos
esses cartões de itens da loja que
temos aqui. Lembre-se de que já
temos isso dentro
da matriz de itens da loja
que criamos. Eu direi que para cada loop, e vamos
percorrer todos eles. Para cada um deles,
quero pegar esse texto. Então, se eu voltar e
lembrar o que chamamos, é um texto de e
fizemos com que fosse variável. Vamos voltar ao controle de
jogo. Vamos arrastá-lo e dizer que
podemos pegar esse texto. O que simplesmente queremos fazer é arrastar e dizer cor, se não souber como se chama,
você pode ver
que existe algo chamado definir cor e opacidade Vamos escolher esse. Vamos arrastá-lo até aqui. Agora você pode arrastar
a partir disso e dizer criar uma cor de ardósia porque
queremos ver o que
podemos fazer com ela Agora podemos definir uma
cor específica aqui dentro. Agora eu quero definir
a cor
dependendo se realmente
temos moedas ou não. Agora temos que trabalhar
com as moedas. Lembre-se de que isso está lá dentro. Dentro do jogador,
temos algo chamado quantidade de moedas que
usamos anteriormente. Também temos o
custo do item que está dentro
do cartão do item da loja
porque temos essas informações do item, então sabemos
o custo do item. Vamos usá-los dentro do controle
do player. Você pode tentar fazer isso sozinho, se desejar praticar, caso contrário,
vamos fazer isso juntos. Agora, para este item,
vou dizer informações do item. Então, eu vou pegar essa variável e
vou quebrá-la. Então eu posso ver o custo do item, vou arrastar isso para cá. Agora eu posso ver o custo
do item aqui. Vou apenas
esconder os pinos desconectados e mostrar apenas o custo do item Agora eu também quero a quantidade de moedas dos
jogadores. Eu preciso de uma variável para o jogador. Eu posso ver que eu não tenho isso. Se eu voltar para o controle do
player e voltar novamente,
na verdade, podemos simplesmente
voltar para o item da loja. Podemos simplesmente copiar e
colar tudo isso que
acabamos de criar na lição
anterior. E eu vou
criar corretamente uma variável
para jogar, e isso é muito mais rápido Agora vamos voltar. Agora que começamos a jogada,
vamos começar. Digamos, quantidade de moedas. Obtenha a quantidade de moedas. Agora, o que vamos perguntar é: a moeda custa? É maior? maior do que a quantidade
de moedas que temos? Em seguida, você pode arrastar a partir daqui
e dizer selecionar, selecionar cor. Agora, a diferença entre
uma cor selecionada e uma cor selecionada. Agora, se você simplesmente arrastá-los para
fora para que possamos vê-los, selecione a cor aqui
e selecione aqui. A diferença não é
realmente muito grande. A diferença é que, se
você selecionar a cor, verá que ela escolhe
automaticamente que é uma barra de ouro que
você precisa conectar a ela Para selecionar, você pode
escolher o que quiser. Você pode inserir uma enumeração
como fizemos antes, mas você também pode
inserir esta e ela dirá verdadeiro E então você pode fazer
o que quiser com ele. Basicamente, você pode
usar os dois. Vou usar Selecionar
cor por enquanto. Selecione a cor. Vá em frente e conecte isso. O que ele vai
fazer é dizer que o
custo da moeda desse item é maior do que
quantas moedas você tem? Se for, diz escolha a. Se essa
variável de ouro for verdadeira, ela escolherá
a, significa moedas Se a quantidade de moedas que
custou este item aqui, se você não tiver
o suficiente para
comprá-lo, ele realmente selecionará A. Precisamos de uma cor vermelha
para o A e precisamos uma cor verde para a carne, porque é
aqui que você pode comprá-la. Agora, para a cor verde,
vou
copiá-la do designer por botão,
porque eu já a fiz. Vou copiar a cor linear
hexadecimal. Vou voltar para
o controle de jogo. Cole para o, Cole aqui, clique para ver este. Vou
selecionar primeiro uma cor vermelha aqui para
ver como é. Algo parecido com isso. E eu posso copiar a cor linear. Basta clicar em cancelar porque
não quero alterá-lo aqui. De volta ao, a
cor vermelha. E agora nós o temos. Ele vai dizer se os itens custam mais do que
o que você tem em moedas? Se isso for verdade, escolha a, escolhendo a cor vermelha, se você tiver moedas suficientes, ele escolherá a cor verde Ele vai conectá-lo
aqui e vai
definir a cor do texto e compilar Agora temos que chamar
essa função, porque ainda
não fizemos isso e queremos chamá-la
sempre que eu clicar em reproduzir, já
quero que tudo
isso seja atualizado. A melhor maneira de fazer isso é
criarmos os cartões de itens aqui.
Nós criamos todos eles. Antes de exibi-las, quero atualizar as cores. Vou
adicioná-los aqui assim. Atualize a compilação. Se você clicar em jogar,
agora você pode ver que todos eles estão vermelhos porque eu
não tenho moedas suficientes. No entanto, se eu mudar aqui
a quantidade de moedas do jogador, digamos que agora eu tenha 60 moedas e clique
em Compile Play Agora eu posso ver que,
para as 60 moedas, eu realmente tenho moedas
suficientes para todas elas, então elas serão verdes. Eu posso ver que esse texto
não está sendo exibido corretamente. Isso ocorre porque temos que matar um inimigo antes que ele
realmente apareça. Vamos realmente consertar isso. Talvez você queira uma quantidade
inicial de moedas. O motivo é que só estamos executando esse código sempre que
realmente matamos o inimigo. Se eu abrir a base inimiga, teremos essa quantidade de moedas. Se eu apenas copiar isso,
você pode realmente copiar isso sempre que
abrir o jogo. E isso vem do jogador. Se você abrir o player e em vez de aqui
na base de jogadores, você pode ver que fizemos essa
atualização de quantidade de moedas. Só precisamos executar este, atualizar a interface porque a
quantidade de moedas está correta. E você também pode ver isso se pegar a quantidade de moedas e
imprimir uma sequência e simplesmente
imprimir na tela
e clicar em Reproduzir. Você pode ver
que diz 60 aqui. Se você viu. No
canto superior esquerdo, diz 60. Na verdade, ele é
exibido corretamente ou o número está correto, mas não é
exibido corretamente. Vamos copiar essa interface do usuário. Só precisamos atualizar a interface do usuário e arrastar a quantidade de
moedas conectadas dessa forma. Agora, sempre que clicarmos em Jogar, ele também atualizará a
quantidade de moedas. Se eu clicar em Jogar, ele
será exibido corretamente. Agora está tudo correto e isso exibido corretamente
quando matamos o inimigo. Também
adicionará a quantidade correta de moedas sempre que obtivermos
mais e mais moedas. Agora podemos ver que ele
não está exibindo isso corretamente porque precisamos atualizá-lo quando
matamos o inimigo. Na verdade, vamos corrigir isso também. Se eu fechá-la, vou até os inimigos, abro a base inimiga. E precisamos adicioná-lo aqui
sempre que o inimigo morrer. E atualizamos a quantidade
de moedas. Vamos fazer isso. Depois de atualizarmos a
quantidade de moedas, vamos usar o controle de jogo. E já temos o controle de
reprodução aqui embaixo. Arraste-o e diga atualizar o cartão do item da
loja pela cor do texto. Vá em frente e
conecte-o conectado aqui. E agora deve funcionar. Agora, se você clicar em
jogar e eu mato, você pode ver agora
que se eu obtiver 76 ou mais, isso realmente
tornará isso verde. Se eu matar esse inimigo, podemos ver agora que ele fica verde. Se eu continuar matando, você pode ver que agora isso fica verde porque agora eu
tenho moedas suficientes, isso está funcionando corretamente e agora podemos seguir em frente.
73. 8.09 Verificando se o jogador tem moedas suficientes: Agora, antes que o jogador
possa pressionar o botão Por, também
precisamos verificar se o
jogador tem moedas suficientes, caso
contrário, ele pode realmente pressionar o botão Por
e comprar itens sem
ter moedas suficientes. Vamos tentar trabalhar
com este. Se eu abrir o controle do
player, mais
uma vez para o controle do
player, vamos realmente fazer
algo também aqui na cor de atualização. O que podemos fazer
aqui dentro, podemos arrastar isso. Agora vamos pegar o botão. Eu vou para a interface do usuário,
abro o item da loja e clico neste botão. E vou chamá-lo de botão e torná-lo
uma compilação variável Agora, se eu voltar para
o controle de jogo, arrasto daqui e digo botão. E eu pego esse botão, o que você pode fazer é
arrastar aqui e dizer habilitar. Agora você pode ver que
algo chamado Definir está ativado. Vá em frente e
selecione-o, conectado aqui. Agora você pode escolher quando um botão deve ser
ativado ou não. Ou seja, se o jogador
puder pressioná-lo ou não, sempre que este estiver vermelho, significa que este é verdadeiro, isso significa que o jogador
não pode comprar este item, significa que
ele não
tem moedas suficientes. Na verdade, podemos arrastar isso
e conectá-lo aqui. Na verdade, não podemos,
porque isso vai
ser verdade e este
vai ser verdade, que significa que está ativado, e nós realmente
queremos o oposto. Vou novamente arrastar e
dizer selecionar para inverter. Vá em frente e selecione
esse nó e conecte-o aqui. Agora, pode ser um
pouco confuso, não
temos
moedas suficientes sempre que custo
do item é maior do que a quantidade
de moedas que temos Isso significa que isso
será verdade sempre que for verdade. Quero definir isso
para ser desativado porque não queremos comprar se não tivermos moedas suficientes. No entanto, sempre que isso for falso, significa que temos moedas
suficientes aqui, quero configurá-lo para ser ativado. Quero pegar isso e dizer que o botão está ativado.
Você pode ir em frente e comprar. É assim que revertemos isso, então vá em frente, compile
e clique em reproduzir Agora podemos ver que o
botão está desativado. Você pode ver que está
um pouco desbotado. Além disso, vamos agora verificar se o jogador tem uma
quantidade suficiente de moedas. Vamos fechá-lo. Vamos
abrir o cartão do item. Vamos clicar nele,
aqui embaixo. Vamos clicar no não clicado. Agora, sempre que clicamos nesse botão ou
compramos o item, queremos verificar se o
jogador tem moedas suficientes. Vamos fazer isso dentro
do jogador porque
já fizemos a quantidade de moedas e o cálculo das
moedas dessa forma dentro do jogador. Deixe-me fazer uma
função simples, vamos chamar essa. O jogador tem moedas suficientes? A coisa simples que queremos
fazer aqui é verificar se o
jogador tem moedas suficientes. Arrastando essa quantidade de moedas, deixe-me também
aqui para a entrada, deixe-me adicionar um número inteiro
e chamá-lo custo do
item é a quantidade de moedas que o jogador
tem é maior ou igual Temos que ter o mesmo
porque pode ser igual
ao custo do item, que significa que você
tem moedas suficientes. É maior ou igual
ao custo do item? Então, podemos simplesmente
fazer uma nota de retorno aqui, se eu escrever return the return node e
depois conectar isso aqui, isso cria uma variável para nós. Basicamente, este tem pontos
suficientes para verificar isso Vamos inserir
a postagem do item e clicar nessa função. Vou purificá-lo. Porque lembre-se,
sempre que você tem uma função que só
obtém informações, ela não está configurando nada, então você pode configurá-la como pura. Então fica como essa função
verde aqui, porque está apenas
obtendo informações. Agora, o que podemos fazer é pegar esse jogador e dizer que tem o suficiente, ou chamamos
isso de “o jogador
tem moedas suficientes”? Assim, ele pode arrastá-lo e dizer
que tem moedas suficientes. E você pode ver que é
uma função verde porque a configuramos como pura. Agora podemos adicionar o
custo e depois podemos
sair aqui e ver se realmente
temos moedas suficientes ou não. Deixe-nos fazer isso. Vamos pegar as informações do item, podemos quebrá-las. Podemos pegar o custo do item
e conectá-lo aqui. Esconda os pinos desconectados. Agora podemos arrastar
a partir daqui e fazer uma ramificação e conectar
essa ramificação. Agora que realmente fazemos isso, agora
estamos verificando
se o jogador tem moedas
suficientes antes que
ele possa comprar o item.
74. 8.10 Comprando o item: Agora que verificamos que o jogador tem moedas suficientes, vamos
comprar o item agora. Agora, para comprar os itens, acho que quero fazer isso
dentro do player. Sempre que você compra aqui
e tem moedas suficientes, você
compra os itens. Vamos criar um novo
evento no player. Vamos criar um novo evento
personalizado chamado item de
compra como esse. Agora, para este item de compra, obviamente
precisamos
do item primeiro. Se você não quiser fazer isso
agora, vamos voltar e entrar aqui,
vamos pegar o player, já
temos a variável
player. Vamos atacar a partir daqui e dizer comprar um item e ligar para
este evento que acabamos de fazer. Se é verdade que
temos moedas suficientes, vamos
comprar o item. Obviamente, precisamos
saber de qual item estamos falando porque
precisamos de algumas informações aqui. Vou apenas criar uma
entrada e vamos chamá-la, ou vamos chamá-la de estrutura de informações do
item. Temos esse item,
vou chamá-lo compilação de
itens. Agora podemos
voltar ao cartão do item da loja Obviamente, o item é
esse item em que estamos agora e
já temos a estrutura. Eu só vou pegá-lo
e conectá-lo aqui. As informações deste item serão enviadas
ao jogador. A partir daqui, agora podemos
fazer coisas com ele. O que queremos fazer
é, obviamente, subtrair a quantidade de moedas o jogador tem.
Vamos tentar fazer isso. Agora você pode fazer isso
sozinho para praticar, porque acho que você
pode fazer isso sozinho. Agora, se você não
se lembra de como fazer isso, vamos fazer isso juntos. Assim, você pode pegar a quantidade
de moedas que você tem
agora e depois dizer
menos para subtrair Então, temos o custo
do item aqui se você arrastar a partir daqui e
dizer quebrar as informações do item. Agora temos o custo do item. Podemos dizer a quantidade
de pontos que você tem menos o
custo disso Podemos pegar essa quantidade de
moedas e ajustá-la novamente para esse novo preço ou essa nova
quantidade de moedas que temos. Vamos apenas clicar aqui. Esconda os pinos não conectados. Vá em frente e torne-o
mais estruturado assim. Você também pode imprimir uma string. Na verdade, não vamos
imprimir uma string. Podemos simplesmente atualizar
a interface do usuário instantaneamente. Vamos fazer
assim aqui em cima. Eu só vou copiar isso. Atualize as moedas, quantidade I.
Vou fazer o login
assim. Vamos compilar Vamos ver o que acontece se eu
clicar em jogar. Eu tenho 60. Se eu comprar algo por 23, ainda
tenho 37. Eu compro novamente por 34, ainda tenho três. E se eu clicar aqui, você pode ver que
não consigo continuar comprando. Porque lembre-se, já verificamos aqui se o jogador tem moedas
suficientes ou não. Não podemos comprar o item se não
tivermos moedas suficientes. Isso está funcionando muito bem. Agora, o problema
agora é que quando eu compro, você pode ver que os botões
não são lidos. Parece que ainda tenho moedas
suficientes para
esta, o que não tenho. Vamos também atualizar os botões. Se eu for até o controle
do player. Vamos abrir o controle do
player. E lembre-se de
que aqui criamos essa função chamada atualizar item da loja pela cor do texto. Vamos chamar esse. Vamos voltar para o jogador. Vamos pegar o controlador colado aqui. Vamos chamar o cartão de
item de trabalho atualizado pela cor do texto. Vamos conectá-lo aqui. Ele deve ser atualizado
toda vez que compramos. Agora, se eu clicar em Jogar
e comprar algo, você pode ver que eles ficam vermelhos. E eu realmente não posso
comprá-los. E eles são deficientes.
Se eu comprar este, todos
ficam vermelhos
porque não tenho pontos
suficientes agora que a lógica
está funcionando muito bem.
75. 8.11 Atualizando a quantidade de itens comprados: Agora é hora de atualizar
quantos itens compramos. Porque lembre-se, fizemos
este chamado Itens comprados. E precisamos armazenar quantos itens você
comprou durante o jogo. Além disso, aqui, quando clicamos em
jogar e comprar algo, isso realmente não mostra que
você comprou algo porque
ainda é zero por aqui. Precisamos atualizar
essas informações para fazer. Não me lembro onde
usamos esse. Se você quiser apenas tentar lembrar
onde usou alguma coisa, você sempre pode escrever,
clicar e encontrar referências. E podemos ver que diz que
nenhum resultado foi encontrado. E isso é porque ele está apenas pesquisando dentro
desse projeto Mas se você clicar
nesse pequeno ícone, ele pesquisará em
todas as plantas Clique duas vezes neste. Você pode ver que o usamos aqui dentro do cartão de itens da loja para atualizar o texto aqui de
quantos itens compramos. Nós o usamos aqui para atualizar quantos itens
compramos. Vamos voltar ao
player e aqui sempre que comprarmos
e atualizarmos o botão. Antes de atualizar o botão, na verdade
vou editar o mapa. Pegue este mapa aqui, arraste-o para fora e diga Adicionar. Agora queremos adicionar
mais um item ao mapa, porque agora
compramos um item. O que você pode fazer é pegar isso de novo, colar, porque você não pode realmente adicionar
informações no momento. O que você precisa fazer é
encontrar e ter essa função. O que você está tentando
fazer é
encontrar o item que
já está dentro dele. Se você simplesmente escrever um número aqui, se você escrever, por exemplo, um, ele vai sobrescrever as informações que você já
tem aqui Digamos que fosse
a coroa dourada que estava dentro daqui.
Se você apenas escrever um, será um
para sempre, porque toda vez
que o jogador comprar, será um. Ele substituirá esse item aqui. Precisamos continuar atualizando-o
com mais informações. Agora precisamos encontrar o
item primeiro dentro
da matriz ou dentro
do mapa para encontrar o item. Lembre-se de que já
temos o nome. Se eu pegar
aqui agora, posso usar o nome
desse item e podemos encontrar esse item
dentro deste mapa. Depois de
encontrarmos o item, agora sabemos quantos itens temos até agora. Esse valor aqui, o que eu quero
fazer é pegar esse número mais ele com um mais um. Agora estamos adicionando um aos
itens que já compramos. Então você pode
conectá-lo aqui. Além disso, lembre-se de que você também precisa
inserir o nome aqui. Vamos arrastá-lo daqui. Conecte-o e, novamente, faça algumas anotações espelhadas Parece bom. E eu
vou colocar esse aqui desse jeito e
esse aqui embaixo. Está bem? O que estamos
basicamente fazendo é encontrar primeiro o item dentro
desse mapa, depois saber quantos já compramos
e adicionar um em cima dele e depois
colocá-lo de volta no mapa. Não perdemos essa informação. Você clica em play
e pressiona por alguma coisa e vê
que ainda está dizendo zero. Isso ocorre porque
não atualizamos a interface do usuário. A interface do usuário está dentro
do item da loja, Cod, e é esse texto aqui que você precisa
atualizar mais uma vez, porque essa parte
aqui só é atualizada sempre que criamos o Cod
e não é mais atualizada Podemos criar um evento personalizado
aqui e eu vou
fazer um evento personalizado,
atualizar a interface de usuário dos itens comprados. O que podemos fazer aqui,
basicamente, queremos
definir o texto, esse texto aqui. Eu só vou controlar C, controlar V aqui embaixo. Vamos conectá-lo.
Basicamente, só quero fazer a mesma coisa
que fizemos aqui. Vamos apenas controlar x para recortá-lo e controlar V
para colá-lo aqui embaixo. Vou apenas
conectá-lo aqui. Em vez de ter
esse código aqui, podemos basicamente excluir
esse e adicionar este. Atualize itens, em vez disso, eu apenas os adiciono aqui,
atualizo os itens I. Basicamente, a razão pela qual escrevemos isso
aqui na
construção do início, do
jogo ou do evento é porque estamos nos certificando de que temos
essas informações corretas. Sempre que abrimos o jogo
e damos uma olhada nisso, essa é a razão pela qual o
adicionamos lá. Porque se, por exemplo, digamos que você tenha um sistema de
carregamento e salvamento no futuro e
feche o jogo sempre que o abrir,
ele será executado novamente
e atualizará suas informações com
o que você salvou. É muito importante ter isso. Ok, então temos esses itens de
atualização, mas UI, precisamos executá-los do
player se você voltar e
precisamos executá-los depois de
adicionarmos o item a este mapa. Agora, o que
precisamos é de uma referência a
esses widgets de cartão de itens da loja porque agora precisamos
usar este Atualize os itens, coloque a interface do usuário. Mas, como você pode ver, não temos realmente uma referência a isso. Temos esse chamado cartão de itens de
loja e basicamente
podemos usá-lo para encontrar um item. Mas, novamente, nós realmente não temos essa informação
daqui. Precisamos de uma forma de
referenciar esse cartão. Agora você pode fazer isso de duas maneiras. Você pode, aqui no controlador
do Player, basicamente criar
eventos personalizados chamados,
por exemplo, conjuntos, cartão de item de loja
interagido ou o que você quiser chamá-lo Basicamente, basta adicionar o
item da loja de itens, Cod. Novamente, basicamente você pode
simplesmente chamá-lo daqui, usar o controlador do player Precisamos ter uma
referência a ele aqui. Basicamente, você pode configurá-lo
por meio do controlador do player. E do jogador, podemos usar essa variável aqui para
realmente atualizar esta carta em vez de fazer dessa maneira. Por enquanto, quero
experimentar o outro método. O outro método, basicamente, é que você pode simplesmente voltar ao ou ao jogador aqui
para comprar o item. Vamos apenas adicionar uma nova variável. Vamos chamá-lo de shop it Cod. Sempre podemos mudar dessa
forma se, no futuro,
descobrirmos que poderíamos
transformá-la em algo melhor. Mas, por enquanto, vamos
pesquisar o item Cod. Vá em frente e selecione-o, compile novamente no item da loja Vamos ver aqui
no item de compra. Sempre que compramos algo, quero definir a
referência para eu e dizer eu. Basicamente,
estamos definindo esse cordão de item da loja como esse
cartão em que estamos agora. Isso é o que significa “eu”. Agora, essas informações, nós as temos sempre
que compramos um item, sempre que adicionamos o item aos itens, exceto
no mapa, agora
podemos chamar os itens de atualização, mas eu arrasto daqui e
digo itens de atualização. Mas eu vou em frente e me conecto, é assim de novo. Você pode clicar duas vezes para
criar um nó de rota traseira. Sempre que isso for feito, isso agora deve atualizar a interface do usuário. Em seguida, insira novamente
esta atualização do item da loja Cod by
text color, salve tudo. E agora
vamos jogar e ver o que acontece se eu comprar
uma das tochas Veja, eu tenho um. Se eu comprar
um de novo, tenho dois. Agora está calculando corretamente. Agora, se eu me der
muito mais dinheiro, então se eu voltar para o jogador e dentro daqui
a quantidade de moedas, eu simplesmente coloco em algo como 1.000 ou 10.000
100.000 ou qualquer outra coisa. Aqui está. Agora você pode
ver se eu continuo comprando, só quero ver se funciona
e está funcionando corretamente. Você pode continuar comprando. E você pode ver que a interface do usuário
continua a mesma. A interface do usuário não está alterando a posição do
texto e assim por diante. Tudo está funcionando
bem e o dinheiro calculado Então, agora isso está funcionando totalmente.
76. 8.12 Criando pontos de spawn de itens: Vamos agora adicionar os pontos de geração
dos itens. O que eu quero fazer é
que, sempre que
eu compro algo, quero gerar esses
itens no mundo E isso é basicamente a
mesma ideia do licor de biscoito. É a mesma ideia em que você compra algo e aparece aqui
na tela, acho que é um pouco
mais interessante. Então, vamos fazer, ou
fazer alguns pontos de pintura aqui
dentro. Lembre-se de que já
marcamos um ponto para o
inimigo que está aqui. Vamos usar o mesmo método. Então, temos o inimigo e
temos a base de pontos de desova. Esta é a turma principal, então vou
clicar com o botão direito do mouse e criar uma turma secundária do Looprint Podemos chamar isso de
BP it, Spawn Point. Agora, esse é o ponto principal. Qual item
vamos gerar? Basicamente, podemos colocá-lo
no mundo e
podemos simplesmente definir Y20, ele está na frente e eu vou
configurá-lo para um para que fique na frente dos
ladrilhos. Podemos definir algo aqui, salvar tudo. E vou segurar a
tecla Alt e arrastar para copiá-la. Agora você pode ver
que temos dois pontos de desova, mas como podemos escolher se é a coroa que deve aparecer aqui ou se são outros itens que
devem aparecer Podemos fazer isso expondo
uma variável a eles. O que podemos fazer é
voltar para a base
do ponto de desova
dentro daqui O que podemos fazer é
criar uma nova variável. Podemos chamá-lo de nome ou também podemos simplesmente chamá-lo de nome
real do ponto de desova Acho que é um pouco mais descritivo até agora. Podemos transformá-lo em uma string, salve. Lembre-se de clicar em Instance Editable
e Expose on Já usamos isso quando
adicionamos as informações
aos cartões de itens. Quando você faz isso
e compila, você pode ver aqui
dentro do mundo, você tem esse pino aqui, o nome do ponto de geração Essa é a
mesma variável que esta porque
você a tornou editável
por instância e exposta no editável
por instância e exposta no
spawn. Aparece aqui em cima. O que podemos fazer com este é clicar
no primeiro, por exemplo, podemos chamá-lo, vamos ver quais itens temos. Nós temos o P. Eu só vou
usar a pena clara. O primeiro deve
ser a luz. Escreva o nome com precisão. Lembre-se de que esse nome precisa ser igual ao da tabela de dados. Seja qual for o nome que você tem aqui, ele precisa ser o
mesmo que aqui. O segundo é a tocha. Agora temos os dois pontos de desova. Agora sabemos quais itens
devem aparecer onde. Agora, estamos apenas
perdendo a lógica, e faremos isso
nas próximas aulas. Mas agora temos pelo menos os pontos de
desova com os quais trabalhar. Vamos passar para
a próxima lição.
77. 8.13 Gerando o item comprado: Tudo bem, agora vamos
em frente e geramos o item. Vamos tentar trabalhar de
trás para frente a partir desta. Agora, sempre que eu gerar itens, gostaria de retroceder,
porque faz mais sentido saber quando ou onde precisamos adicionar nossos eventos e funções
para a Lembre-se de que eu uso o
Player Controller para gerar coisas no mundo. Então, se eu entrar aqui, já
criamos esse ator de
spawn aqui Ator Spawn. Vamos ficar consistentes e
fazer isso aqui dentro. Vou
criar diretamente um novo evento personalizado. Vamos chamar isso de item de spawn. Ok, para este, novamente, precisamos usar um ator de
desova da classe e selecionar o
item que queremos gerar Realmente depende de qual. Agora, isso está recebendo um erro. Preciso desativar isso. Dependendo do item que compramos, esse é o item que
queremos gerar Na verdade, não podemos definir
um valor estático, só
precisamos
arrastá-lo até aqui. Arraste isso de volta para dentro, eu vou
chamar isso de um item. Quanto à localização do item, eu realmente não preciso
usar uma transformação. Então, o que eu vou fazer
é dizer fazer. Sempre que você diz make transform, isso é basicamente porque eu
quero ver os valores de localização, rotação e escala. É por isso que usamos make. Agora você pode arrastar esse
local para o evento. Então, ele cria uma nota especial para ele. E vou
chamá-la de local de desova porque não estou
realmente interessado na rotação e na escala, ela permanecerá a mesma Só estou interessado
no local em que
quero gerar o item Agora, esse item de spawn, onde faz
mais sentido jogar esse evento ou
convocá-lo O lugar seria sempre que
comprássemos um item, calculamos
o preço no player. Sempre que compramos o item, nós o adicionamos à
variável ou ao mapa aqui e atualizamos os botões. Depois disso, eu posso
gerá-lo no mundo. Basicamente, ele é gerado
no controle do Player, então eu preciso do Player
Controller novamente Ou você pode arrastar a partir
daqui, se desejar. E você pode dizer item de desova,
fornecimento e seletivo. Agora você precisa especificar de qual
item está falando. Agora já temos
essa aula daqui. Eu só vou quebrar
essa mais uma vez. Faça a aula,
conecte-a aqui e esconda os pinos desconectados Vou chegar mais perto aqui, clicar
duas vezes para criar um nó. Agora, para o local do spawn, precisamos ser mais
específicos aqui Como precisamos
ver a localização desse ator aqui, o ponto
de desova
dos itens Você sempre pode
voltar ao modo de jogo e dar uma olhada em
como fazíamos isso antes. Se voltarmos ao início do
jogo, usaremos este. Consiga o ator da turma. E lembre-se dessa função, obter ator da classe, obtém tudo o que já foi gerado no mundo
quando você clica em play Porque se você
disser “escolha um ator de classe e você tem isso dentro
do nível agora, vai te dar uma era. Lembre-se de que essa
função só obtém o ator que já foi
gerado no mundo Nós já os geramos. Então, podemos realmente
usá-lo, obter o ator da classe. Vamos fazer isso
aqui porque, na verdade, esse não é o método que precisamos para
usar get actor of class. Podemos pegar
este, basicamente,
dizemos ponto de desova
e podemos selecionar
o ponto de desova do item que podemos arrastar daqui e dizer
obter a localização do ator Agora estamos obtendo a localização do
ator, que é essa localização aqui. E podemos conectá-lo. Agora
vamos ver o que acontece. Podemos simplesmente clicar em jogar e eu basicamente tento
comprar alguma coisa. Nada está surgindo e,
na verdade, é o correto. Só estou me perguntando por que
não está desovando. Vamos ver se realmente
adicionamos os itens. Esse pode ser o
problema agora. Se abrirmos,
vamos até a janela de exibição, vejo que não temos nenhum item Na verdade, vou
fazer isso agora. Para todos os itens
que criamos anteriormente. Por exemplo, o Crown of Evil, precisamos selecionar
o sprite de origem Vá em frente e selecione-o aqui, para que apareça aqui, compile Vá para o
próximo, Grand wizard,
chapéus, clique nos componentes de
renderização selecionados aqui e compile a Essa é a base do item, então
não precisamos realmente
adicionar nada aqui. Indo para a Coroa do Rei. E podemos realmente
fazer isso daqui, em vez de clicar aqui. A próxima é
a King's Crown. Tudo bem, esse
foi o último. Agora eu adicionei todos eles. E vou clicar em Compilar para todos eles para garantir que
tudo esteja funcionando conforme o esperado Ok, feche tudo,
salve tudo. E vamos clicar
novamente em Play by the Light Feather. Agora você pode ver que a
pena clara está desovando. E se eu comprar a tocha, a
tocha também está surgindo. Ambos estão respondendo. Eles estão desovando
no mesmo lugar. Mas sabemos que esse ponto
problemático está funcionando. Agora, nas próximas três lições, mostrarei três métodos sobre como podemos
gerá-los de forma eficiente O que eu quero fazer, basicamente, é que, a partir deste ponto, queremos gerar
todos os itens,
mas, por enquanto, está tudo bem Agora, se você quiser reduzir o tamanho do item
que está surgindo, agora aqui na base do item você pode basicamente fazer
isso nesta escala,
para este item, você pode
clicar no cadeado Ele altera os três
valores de uma só vez. E se eu escrever 0,5, clico
em jogar e compro alguma coisa. Você pode ver que o
item está menor agora. Agora, para o Em, acho que
vou usar a escala de 0,25 porque os
ícones são muito grandes Se eu clicar em jogar agora
e eu gerar algo, você pode ver que esse é o tamanho que eu gosto, o tamanho deste Você sempre pode ter um Bitloga, mas
teremos muitos itens Eu acho que esse é um
bom tamanho para ele. Ok, vamos salvar tudo e passar
para a próxima.
78. 8.14 Lógica de criação: Como, nas próximas três
lições,
mostrarei como podemos usar esses métodos
de desova. Agora, o primeiro
vai ser fácil e depois vamos para
algo intermediário
e, em seguida, algo avançado. Espero que você fique
comigo em todos eles. Vamos começar com este, que é o método mais fácil. Agora, para a desova, vou fazer isso dentro
do modo de jogo, porque
é basicamente aqui que chamamos os pontos de desova,
onde
os definimos Deixe-me abrir o modo de jogo. Já definimos o ponto de pintura do
inimigo. Agora é hora desse. Em vez de fazer isso aqui, vamos criar
uma função para isso. Porque vai ser um pouco maior do que apenas
fazer isso aqui. Deixe-me fazer uma
função a partir daqui. Deixe-me chamá-lo de
itens fixos, pontos. Normalmente tenho um na frente
deles para funcionar, e vou
fazer isso aqui para me manter consistente com este também. Compile e salve
agora para este. O que você pode fazer agora, antes de
começarmos , só para não esquecermos, quero chamar os
Spawtpoints aqui,
arrastar a função até aqui, ir em frente e E agora funciona, ok? Então, agora temos que fazer algo
dentro dessa função. O que eu quero fazer primeiro é conseguir todos os pontos
do St. Então, para fazer isso, digamos que
pegue todos os atores da classe. Lembre-se dessa função,
você só pode usá-la para coisas que já estão
surgindo, saindo daqui E já temos
pontos de St. aqui dentro. Agora, realisticamente, teremos
um ponto St. para cada item. Então, teremos muito mais. Opa, teremos muito mais pontos na Espanha
como este aqui Mas, por enquanto, vamos
excluir todos eles. E eu vou
ficar com dois. Sempre que esse método funcionar, vou
copiar tudo isso. E serão cerca de
5 segundos de trabalho por enquanto. Vamos ter esses
dois e trabalhar com eles. Digamos que pegue todos os
atores da turma e procuremos o item
spa point, este. E deve ter esses
dois. Se você quiser ver
o que realmente acontece, você sempre pode imprimir uma sequência de caracteres que você pode arrastar daqui e
dizer o comprimento, para que você possa ver. Quantos
pontos de desova recebemos? Deveria dizer dois. Se você clicar em jogar,
diz dois aqui em cima. Se você pode ver, sabemos agora que ele recebe
os dois pontos S. Incrível. O que podemos fazer agora é arrastar a partir
daqui e dizer quatro cada. Agora podemos fazer algo com
cada um desses pontos de spa. O que queremos fazer é definir basicamente a localização. Porque precisamos da localização
dentro do player. Toda vez que geramos um item, precisamos da localização
do ponto de desova do
próximo item que queremos gerar O que eu quero fazer é
não querer gerar todos os itens aqui
em cima uns dos outros O que eu quero fazer aqui
é gerar itens em uma linha. Eu quero
gerar o primeiro item aqui. Eu quero gerar o
segundo item aqui. Terceiro item aqui, quarto, quinto, seis e assim por diante. Agora, você pode fazer isso assim, não
é um problema. Mas imagine que se você tem 200
itens para o primeiro item, você tem 200 para o segundo. Todo o seu nível
receberá spam de atores. Não acho que seja
um bom método, então vou
excluir todos eles. Mas, basicamente, é isso
que estamos tentando fazer. Estamos tentando gerar
todos os itens em uma linha aqui.
Vamos tentar fazer isso. Vamos voltar
ao modo de jogo agora, o que podemos fazer aqui dentro
realmente depende de qual
item precisamos gerar Lembre-se de que, para cada ponto de
desova, criamos a
variável de nome do ponto de Espanha que
expusemos e escrevemos pena
clara. Vamos arrastar a partir desta e
pesquisar o nome do ponto de desova. Vá em frente e pegue essa variável. Agora arraste a partir daqui e
diga switch on string. Agora, isso é
como antes, onde
usamos a opção na enumeração, a opção na string, você
também pode fazer isso Clique no sinal de adição para adicionar pinos. O primeiro, o primeiro
item que temos é a tocha, ou na verdade a pena clara. Então temos a tocha, temos essas duas compilações Agora, o que podemos fazer aqui, se
for a pena clara, queremos usar esse ponto pontual É uma tocha. Queremos
usar esse ponto pontual. Vamos começar com
uma pena clara. O que queremos fazer é primeiro
criar uma matriz. Porque não podemos realmente fazer isso sem uma matriz para armazenar
os locais que encontramos. Deixe-me
transformar isso em um vetor. Deixe-me chamar isso de Light
Father Spawn Points. Vamos tirar essa daqui. Agora precisamos
transformá-lo em uma matriz porque precisaremos armazenar vários
locais, que é essa linha aqui de
itens que precisamos gerar Em vez de um vetor,
você pode clicar com o botão direito do mouse. Você o transforma em
um vetor ou, novamente, sempre
pode clicar nele e alterá-lo aqui,
se desejar. Agora temos essa matriz. E o que precisamos usar com
isso é a função add. Então, precisamos adicionar um local e precisamos
adicioná-lo dentro daqui. Ok, agora,
depende de quais locais precisamos
adicionar. Como fazemos isso? Como faço para obter locais diferentes simplesmente a partir de um ponto de desova Porque eu não vou
adicionar mais pontos de desova. Esse é o único ponto de desova
que vou adicionar para
a pena clara, mas quero muitos itens
aqui que eu preciso gerar O que podemos fazer é deixar
eu fazer isso e você pode realmente
ver como é fácil. Em primeiro lugar, obviamente precisamos da localização
deste ponto na Espanha. Primeiro, vou arrastar
isso e dizer no local. Agora eu tenho a localização
desse ponto de desova. O que podemos fazer
com este é que eu
posso fazer um loop de quatro voltas. Podemos selecionar esses
quatro loops aqui. Agora, depende de quantos itens você deseja gerar primeiro Vamos começar
com cinco itens. Vamos escrever quatro aqui. O motivo é que o
primeiro índice em um loop é 00, vem como 101234 Ou seja, cinco itens, 0-4 O que precisamos fazer é obter
a localização de Atos Agora você tem que pensar que vai gerar os
itens dessa forma Você tem que
prestar atenção em qual eixo você está. Este é o eixo x, a seta
vermelha é o eixo X. Se você clicar nele e
arrastar o item, você pode basicamente ver
aqui embaixo no local, no painel de detalhes,
que você está indo na direção positiva
do eixo x. Isso é basicamente o que
estamos tentando fazer. Não quero afetar
o Z e também não
quero afetar o Y. Eu só quero afetar o X. É por isso que podemos
pegar isso e dizer vetor de quebra, porque queremos afetar apenas o eixo
x. Também para este. Como não consigo fazer login
aqui, vou arrastar a partir disso
e dizer make vector. Agora eu também posso ver o x, y e z e podemos basicamente arrastar essas
informações até aqui. Agora, para o Y, para o z, eu não quero mudar nada. Eu não quero afetá-los, eu só quero afetar o X. Agora, o que posso fazer é dizer que o X perdeu talvez dez unidades Então, basicamente, o que estamos
fazendo é pegar esse local e adicionar dez unidades. Em vez disso, o próximo item
estará aqui. Vamos voltar. Estamos dizendo dez, e então estamos
conectando novamente Estamos tomando esse
local, ele já está. Neste ponto, estamos adicionando dez
ao x e, em seguida, conectando-o novamente e
esta é nossa nova localização Obviamente, não podemos simplesmente conectar dez e manter
dez fora daqui, porque isso vai ser
o mesmo, basicamente adicionaremos itens aqui
em vez disso, todos eles. O que precisamos fazer é
usar esse índice novamente. O índice será
zero primeiro, depois 123. O que podemos fazer é
basicamente multiplicar esse número aqui Em vez de escrever apenas dez, podemos arrastá-lo,
multiplicá-lo e selecioná-lo O que podemos dizer aqui é que podemos dizer dez multiplicado
pelo índice aqui E isso deve funcionar muito bem. O que estamos dizendo é dez
multiplicado por zero primeiro, que será exatamente
esse ponto de desova Estamos dizendo dez
multiplicado por um, estamos dizendo x mais dez Então, o próximo item
estaria aqui. Agora, novamente, ele
vai para o índice de dois. Vai dizer dez vezes dois. Isso é 20. Vai
dizer x mais 20. O próximo item
estará aqui e assim por diante. Ele simplesmente fará um loop e adicionará
locais como este aqui. Vamos
deletar tudo isso. E agora podemos conectá-lo. Na verdade, podemos experimentá-lo e ver se funciona.
Se eu apenas economizar aqui. E podemos tentar
gerá-lo no jogador,
no item de desova Obviamente, precisamos excluir
isso agora que criamos anteriormente e precisamos
adicionar os locais
do modo de jogo. Eu realmente não tenho
o modo de jogo aqui, vamos apenas criar uma referência
rápida para ele. Se eu disser para obter o modo de jogo, lembre-se de que isso está
no Begin Play. Vamos pegar o modo de jogo. Obtenha a referência
do modo de jogo porque lembre-se de que já criamos a interface de
projeto Podemos clicar com o botão direito do mouse e
promover isso para uma variável chamada modo de jogo como essa. Eu não o conectei. Deixe-me reorganizar isso agora. Podemos usar o modo de jogo. Eu só vou aproximar isso. Podemos pegar os pontos de desova do
voo, podemos obtê-los aqui. Também podemos dizer obter porque
precisamos obter o
ponto da Espanha. Obtenha uma cópia. Agora, isso realmente depende qual ponto de desova
você precisa obter, porque depende dos
itens que você comprou Na verdade, o que eu
preciso fazer aqui é dizer “encontre”. Porque ele encontrará
o item que você comprou. Corresponde ao
item, o ponto de rotação aqui. Agora encontre o item
que você comprou. E isso realmente depende de
quantos itens você comprou. Agora, já que o item comprado sempre
estará acima, porque estamos adiantando ou
adicionando um aqui Precisamos pegar isso
e dizer menos um, porque lembre-se de que
começamos no índice zero Não começamos no índice um. Quando você compra um item, precisamos menos isso por um
e depois conectá-lo, porque o primeiro item
aparecerá no índice zero, sempre
precisamos dizer menos uma compilação e Clique em Jogar, tente comprar
apenas penas leves. Agora você pode ver que está funcionando. Na verdade, estamos
surgindo em uma linha e ela não vai
mais aparecer Porque você pode ver
que ela aparece aqui. Isso porque definimos
apenas como 0-4. Agora você sempre pode escrever 99 e isso
gerará 100 itens Agora ele vai para a direita
100 vezes antes de parar. Agora você pode ver que isso está
funcionando muito bem. Agora, se você quiser fazer isso
com todos os outros itens, obviamente
precisa pegar tudo isso. Você tem que copiar e colar. E você tem que fazer isso
aqui desse jeito antes. Sempre que a primeira
for concluída aqui, você também precisará fazer
isso com a tocha. Na verdade, também
precisamos copiar este. E precisamos fazer isso também. Você pode ver aqui, isso é
muita cópia e colagem. Você pode fazer isso muito melhor. Porque lembre-se de que temos, digamos que temos 50
itens no jogo. Você precisa copiar isso 50
vezes para todos os itens. Você pode ver que isso não é realmente
uma boa prática de programação. Eu nunca faria
isso no meu jogo. Eu só vou deletar
isso. Esse foi o primeiro. Esse é o
método mais fácil em que podemos fazer isso. Eu tenho um método que
é um pouco mais quente. Vamos continuar
na próxima lição.
79. 8.15 Lógica de criação - intermediária: Tudo bem, então agora estamos de volta. E o que eu quero fazer agora, antes de mudarmos todo
esse método, quero melhorá-lo um pouco. Porque vamos
usar esse método aprimorado. Não vamos excluir todas as coisas que
estamos fazendo agora. Vamos continuar com o
que temos atualmente. Agora, eu preciso
mudar isso mais tarde, mas por enquanto vamos manter isso e
manter tudo isso. Mas o que eu quero
fazer agora é
clicar em Jogar e comprar itens. Eu também, sempre que atingir
um certo ponto, quero
passar na próxima fila. Ele não compra em apenas uma linha, mas também compra
na segunda linha Agora eu posso ver que esse
bug está funcionando porque nós o definimos apenas como
quatro no índice. Mas, como você pode ver, se eu continuar comprando nessa fila, pode
demorar muito. O que eu quero fazer também
é ir automaticamente para a próxima linha e comprar
ou gerar itens lá Vamos adicionar um pouco de
lógica a isso primeiro, vamos escrever
cinco ou quatro aqui. Assim como antes, preciso
saber quando esse loop termina. Vamos clicar com o botão direito do mouse neste. Podemos promovê-lo para
uma variável local. A diferença entre uma
variável e uma variável local é uma variável local está dentro dessa função em
que você está agora. Estamos dentro dessa função de pontos de geração de
itens definidos. Se eu criar um ponto local da Espanha e voltar
ao gráfico de eventos, não
conseguirei
ver a variável aqui porque ela só existe
dentro dessa função. Basicamente, precisávamos fazer
alguma lógica aqui dentro, mas na verdade não
precisamos que ela esteja aqui. Só estamos usando isso para que quando o loop estiver
concluído ou não, possamos clicar com o botão direito do mouse aqui,
promovido a uma variável local. Eu costumo chamá-los de
locais para começar, vamos chamar isso de um
loop, último índice. Como esse é o
último índice do loop, também
precisamos criar
outra variável local. Vou alterá-lo para um número inteiro. Novamente, não é uma situação normal e
errônea. O segundo, eu quero apenas chamá-lo de
quantidade local de linhas. Preciso saber em quantas linhas eu
preciso que os itens estejam. Preciso dele em uma linha ou em duas linhas,
três linhas e assim por diante. Por enquanto, vamos apenas
adicionar três linhas. Se eu compilar, clique
na variável e aqui no
valor padrão, apenas três Agora queremos três linhas. O que eu quero fazer aqui é seguir o loop local. Último índice, quero dizer, isso
é igual ao
índice agora aqui? Porque esse índice aqui
está contando para cima. E você pode ver que,
se você imprimir uma string, sempre poderá imprimir uma string
se houver algo que você não entenda ou se houver
algo que você queira. Clarity four, você pode simplesmente arrastá-lo até
aqui e clicar em play. Agora você pode ver que ele
imprime o número. E se eu ficar mais longo aqui para
que
possamos ver o que está
acontecendo e fazer com que seja lido. Clique em Jogar. Você pode ver
isso no número 01234 Ele conta para cima
se for igual a esse
índice de perda do loop local, que é esse Se apenas compilarmos,
você pode ver que está definido como quatro agora. Se for
igual a isso, sabemos
que esse é o último loop pelo qual ele passou Basta conectar este novamente. Se isso for verdade, queremos
pegar a quantidade de linhas com a qual
queremos compará-la. Quantas vezes
esse loop foi executado? Digamos que você precise de
três linhas aqui. Você precisa executar o
loop três vezes, porque na primeira vez que ele faz um
loop e um loop nessa linha
, ele precisa fazer um loop
aqui e um loop aqui Se tivermos escrito que a
quantidade de rosa é três, ela precisa repetir três vezes. Vou criar uma
nova variável novamente. Vamos chamar isso de um contador de loop
local. Vamos pegar esse contador de loop
local e, digamos, loss plus, porque precisamos
incrementá-lo um sempre que o
loop terminar Esse loop aqui agora está terminado. Se isso for verdade, precisamos adicionar um ao contador de loop
local. Precisamos perguntar: esse contador de circuitos
local é menor que a
quantidade de rosa? Se for menor, agora é menor
porque a quantidade de rosa é três e esta
é apenas uma. Volte e repita novamente. Se esse contador de loop agora
for três, ele não fará um loop novamente
porque também é três. E vamos parar o código. Basta sair e
conectar isso aqui. Agora, se for menor que
a quantidade de linhas, precisamos executar o loop novamente. Vamos considerar isso verdadeiro aqui e vamos
voltar ao loop. Vamos pegar esse pino
de execução aqui. Vou clicar duas vezes para
fazer uma anotação da rota traseira. Então, eu posso realmente
ver isso assim. Agora vamos voltar e repetir isso
mais uma vez. Agora, se você clicar em
jogar e comprar. Você pode ver que nada
está acontecendo. Por que nada está acontecendo aqui? Mas você pode realmente ver
que algo está acontecendo. Porque se eu comprar cinco como aqui, e me lembrar de definir o
último índice para quatro, o que significa que posso gerar cinco
itens até o sexto Não vai sair
de cinco em dez. Não está desaparecendo se F por 15,
mas se eu comprar 16, você
pode ver que ele se esgota. O que está acontecendo
agora é que você está gerando os 15 itens um em
cima do outro, você não está na próxima O motivo é
que lembre-se de que você precisa afetar o valor z porque a linha é basicamente
o valor Z aqui, não
afetamos o valor Z. Você precisa fazer algo
com esse valor z. O que precisamos fazer
é ver em
qual direção
queremos ir. Agora, se eu clicar e
arrastar isso para baixo, preste atenção
ao valor z aqui no painel de detalhes. Se eu pressionar isso para baixo, ele vai para o menos
do z aqui O que eu posso fazer é pegar
o valor z. Eu posso dizer menos. Só precisamos fazer
isso como antes. Na verdade, se eu puder pegar isso aqui e
dizer multiplicado como antes, vou mover isso e,
na verdade, vou excluí-lo, porque
realmente não precisamos desse Sempre podemos copiar e colar
este aqui se precisarmos. Novamente, precisamos
multiplicá-lo exatamente como antes. Digamos que por dez. E não é realmente
o índice porque não queremos
multiplicá-lo no mesmo loop Como no primeiro
loop, o valor z é o mesmo em todos os sentidos. No segundo loop, o
valor z é o mesmo em todos os sentidos. Isso não vai mudar
todos os índices aqui. Em vez de fazer isso, precisamos criar outra variável local. Vamos chamar isso de multiplicador
local do eixo z. Agora, para o valor padrão, ele
permanecerá zero porque não
queremos multiplicá-lo por nada O primeiro loop, então o primeiro
loop, está tudo correto. Vamos conectá-lo aqui. Tudo está conectado. Agora,
diz que algo está errado. O valor atual de um número válido e válido. Não sei por que
está dizendo isso. Se você clicar em Arquivo
e atualizar todas as notas, não
sei por que está
incomodando Basta arrastar e dizer
multiplicar novamente. Vou arrastá-lo até
aqui em vez de dizer dez Deus, conectá-lo novamente e compilar. E
agora está funcionando. Não sei, era
apenas um bug aleatório. Agora temos isso conectado. Basicamente, o que precisamos
fazer é aumentar esse multiplicador local do eixo z. Porque para o primeiro loop,
queremos que o z seja o
mesmo em todos os sentidos. Para o segundo
loop, queremos que
o z seja sempre
o mesmo, e assim por diante. A cada loop, o z muda. Nós podemos fazer isso aqui.
Vamos usar o multiplicador z local quando soubermos que
vamos fazer um loop novamente Quando isso for verdade, vamos
apenas aumentar isso mais
um conectado em mais
um conectado
e voltar ao
loop assim. Agora deve funcionar se eu compilar
e clicar em reproduzir. E se eu comprar a
pena clara cinco vezes seis vezes, ela deve estar aqui,
o que é correto E você pode ver que tudo
está funcionando corretamente. Agora você pode ver como
é ótimo gerarmos todos
esses itens a partir de um
único ponto na Espanha Agora você não precisa enviar spam para seu mapa com muitos pontos
da Espanha. Isso é muito otimizado
porque só
é executado sempre que
você inicia o jogo. Porque ele armazenará todos esses pontos
da Espanha em uma matriz que você pode
usar posteriormente para realmente gerar os itens.
Vamos salvar tudo. Foi isso por enquanto
e vamos
passar para a próxima e
torná-la um pouco mais avançada. Espero que você ainda esteja comigo, mas o que simplesmente
vamos fazer é nos livrar
dessa parte aqui. E eu vou te mostrar como podemos tornar isso um pouco mais avançado. Vamos clicar em Arquivo, Salvar tudo e
passar para o próximo.
80. 8.16 Lógica de criação - avançada: No momento, vamos
melhorar o código que
escrevemos aqui. Então essa é a última
parte que podemos fazer. Em vez de fazer tudo isso, deixe-me deletar essa parte
por enquanto e também essa. Para obter esse
ponto de itens, vamos clicar com o botão direito
aqui e promovê-lo para uma variável local.
Vamos chamar isso de um item
local, pontos de desova Agora também temos esses pontos de
desova. Antes de fazermos tudo
isso, vamos
garantir que não seja zero. Estamos apenas nos certificando de
que realmente temos alguns pontos de desova e que o mapa realmente
contém pontos de desova Então arraste a partir daqui
e
dizemos comprimento, garantimos que esse comprimento seja maior que zero e então
podemos fazer uma ramificação. Nossa, estamos nos certificando de que
realmente temos alguns pontos de desova Antes de fazermos toda essa lógica, do
contrário, não fará nenhum sentido. Vamos afastar
isso por enquanto
e conectá-lo. Agora, quando você dá uma
olhada neste, você tem que pensar em
como você pode torná-lo menor do que antes?
Em vez de pegar essa cópia do código e depois
colar aqui, depois conectar
e continuar Como você pode encurtar esse método aqui para não
precisar copiar colar o que é diferente desse código para esse código
que você precisa alterar Agora, a primeira coisa
que me vem à mente é dar uma
olhada nessa matriz porque primeiro você precisa adicionar os locais dos grandes pontos de desova das
penas Então, vamos fazer um novo. Basta clicar nesse
controle D para duplicar. O segundo são os pontos de desova da
tocha, acredito que o segundo
é a Sim, é. O segundo
é a tocha. Na verdade, precisamos
da tocha aqui embaixo onde você precisa adicionar os
pontos de desova e não a pena
clara Essa é a única diferença. Agora, para
encurtar isso novamente, lembre-se de usar o nó de seleção, um nó muito importante e
poderoso que você pode arrastar deste
e dizer selecionar Agora você pode selecionar a pena ou selecionar a tocha, dependendo do que
você conecta Agora, como sabemos qual
selecionar onde está? Novamente, onde você pode
usar a enumeração. Se eu voltar aos
itens que posso escrever,
clique em Criar uma nova enumeração do
blueprint E vamos chamar isso de itens. Vamos abrir esse.
Vamos apenas adicionar alguns itens. Agora vou
tentar algo. O primeiro item é pena clara. O segundo é o Torch. Sempre podemos tentar
ver se isso funciona. Se não funcionar, realmente não
importa, então aprendemos
algo com isso. Se eu voltar agora, tenho essa enumeração Na verdade, adicionarei
essa enumeração a este ponto da Espanha porque,
novamente, assim como o
nome, precisamos
definir a definir a Vamos abrir o ponto
problemático dos itens, porque anteriormente
adicionamos essa variável de item
ou essa variável de nome
de ponto da Espanha a essa base de
pontos. aqui. Mas
realmente não faz sentido adicionar uma enumeração de itens à base de pontos porque o inimigo realmente
não precisa Por que você o adicionaria dentro
da base de pontos? Porque lembre-se de que o ponto principal é o filho deste. Não quero adicionar variáveis
desnecessárias onde você realmente não precisa delas em todos os outros atores. Só precisamos deles
dentro daqui. Vamos adicioná-lo aqui dentro. Em vez disso, vamos adicionar uma
variável, chamá-la de item. Deixe-me pesquisar itens. Itens. É assim que a
chamamos. Vá e selecione-o. Compilar. Vamos salvar
tudo de novo. Exposta, Instância, Editável. Exponha ao desovar, compile. Agora, se eu clicar nele, posso mudar o item
para pena clara E no próximo eu posso
mudá-lo para Torch. Agora temos essa informação. Agora, se eu voltar
às minhas plantas, abra meu modo de jogo O que podemos fazer aqui
para obter essas informações. Lembre-se de que já
temos essas informações aqui. Então, eu posso pegar meu item local, pontos
de geração, posso dizer que recebe E eu vou
pegar o primeiro, depois vou dizer item e depois vou
encontrar minha enumeração Agora vá em frente e
conecte isso aqui. Agora você pode conectá-los novamente. Agora pode ver,
dependendo de qual é esse valor, ele selecionará
essas matrizes Se for a
pena clara que você
selecionou aqui
ao expor uma desova, ela selecionará a matriz de
penas claras Eu posso ver que vai
funcionar muito bem. Também aqui embaixo para
obter a localização do ator, é necessário que um ator
,
copie ,
cole e cole aqui. Então, isso também funcionará
bem depois de
adicionar os pontos
de desova do primeiro aqui, do primeiro necessário O segundo quando chega ao
segundo aqui. Agora, lembre-se de que perguntamos: o contador de loop local
é maior do que a quantidade de
linhas que você deseja ter? Menor, maior se for menor. Se isso for verdade, vamos
seguir em frente e repetir novamente. No entanto, se não for menor, significa que precisamos interromper
o loop porque
atingimos a
quantidade máxima de linhas para esta, precisamos ir para a próxima. O que podemos fazer é pegar
isso e dizer índice. Como sabemos que
precisamos remover o índice zero porque
estamos basicamente usando o primeiro índice para,
basicamente geramos os
itens daqui Remova o primeiro índice
que é o índice zero Antes de voltarmos para
o próximo ponto de desova, precisamos ter certeza de
que ele não está vazio Porque o que acontece se você
atingir o último ponto de desova? Não queremos continuar circulando. Temos que arrastar até aqui
e dizer que não está vazio. Como queremos fazer um loop
sempre que não estiver vazio, vamos fazer uma ramificação, conectá-la. Se não estiver vazio, queremos repetir novamente. Agora lembre-se de que precisamos
redefinir o valor Z, porque novamente
estamos em uma nova linha. Precisamos redefinir todas as
configurações do valor Z. Eu vou defini-lo como zero. E também para o contador de
loops local, porque agora estamos iniciando
um novo contador de loops, vou configurá-lo para 20 também. Deixe-me ver se há algo
mais que precisamos mudar. Agora, para o
índice de loop local, na verdade, permanece o
mesmo porque temos a mesma quantidade
de itens por linha. Nós realmente não precisamos
mudar nada. Vamos compilar e
salvar tudo. Agora, para este, basicamente
vamos
conectá-lo novamente ao loop desta forma. Novamente, clique duas vezes
nele para que possamos ver o que estamos fazendo agora. Vamos ver se está
realmente funcionando. Agora, antes de clicarmos em play
e tentarmos fazer isso, você pode ver que eles estão surgindo um
em cima do outro Não acho que seja
um erro aqui, porque lembre-se de que
no player você também escolhe como
realmente chama isso. Só tínhamos o ponto de
desova de penas claras de onde saímos. Você. Na verdade, também preciso
tornar isso um pouco mais dinâmico. Agora, novamente, lembre-se de que você
precisa obter
a localização aqui, a matriz, dependendo
do item para fazer esse ato. Porque aqui você tem uma
string e o que você está usando dentro do
modo de jogo é uma enumeração Você realmente não pode
usá-los juntos. Você também não pode conectar uma
string a uma enumeração. Se o trouxemos aqui, temos que
convertê-lo de alguma forma. Vamos criar uma nova
função aqui. Vamos chamar isso de “Spawn Points”. Isso é apenas obter
informações. Lembre-se de configurá-la como pura, para que fique como
uma função verde. Só estamos recebendo
informações aqui. Agora, para este,
o que poderíamos fazer, por exemplo, poderíamos
pesquisar itens. Poderíamos usar essa
enumeração como antes, e podemos dizer ativar E podemos basicamente atribuir os pontos de desova dependendo do
que estamos falando, qual item selecionamos O problema com isso é que, se
precisarmos usar este, ganhe pontos. Se eu compilar e voltar para o jogador, pegar
o modo de jogo e dizer que ligamos, ele ganha pontos de spa Ganhe pontos de spa. Eu tentei usar esse. Se eu tentar conectar isso aqui, você pode ver que
diz que a string não é compatível com a enumeração de
itens Agora podemos adicionar a enumeração dos itens
dentro da estrutura Eu realmente não quero fazer isso, mas você pode fazer isso se quiser. Esse também é um método
que pode funcionar. Mas o que eu quero
fazer, em vez de transformar isso em uma enumeração, vamos
transformá-lo em Em vez disso, selecione uma string e vamos chamá-la de nome do item. Vamos deletar esse. Então,
podemos dizer switch on String. Vamos adicioná-los.
Clicando manualmente no sinal de adição. O primeiro item é
a pena clara. O segundo item é
o marrom dourado. O que podemos fazer é que, se for uma pena clara, podemos fazer com que a
escrita do nó de retorno retorne aqui, selecioná-la e simplesmente
arrastá-la até aqui Vou chamar
isso de pontos de desova. O que podemos fazer é
basicamente copiar e colar isso aqui embaixo, conectado e assim. Ok, agora temos que fazer isso
com todos os pontos de desova, mas por enquanto
vamos ver se funciona E sempre podemos continuar. Se eu voltar para o jogador, agora eu pego a
variável do modo de jogo e digo pontos de itens, e digo obter itens em pontos Agora posso obter os pontos da Espanha, dependendo do nome do item. Vou apenas
arrastar isso até aqui. Então eu pego os pontos de
desova e os arrasto até Agora podemos excluir essa parte porque agora ela é adicionada
dinamicamente E se eu clicar em Play
e comprar penas leves, se eu comprar tochas, elas ainda estão no mesmo lugar Vamos ver o que está
errado aqui dentro. Então eu posso ver que escrevi Golden Crown por engano
e é Torch. Então esse é provavelmente o problema. Se eu clicar aqui,
certo, toca novamente. Se eu conectá-lo novamente quando
mudei o nome e clicar em play novamente,
compro as penas leves
e compro a lanterna Você pode ver agora que está
funcionando perfeitamente. Agora eu posso ver que ele
também está aparecendo
nas três fileiras que
eu escolhi Agora vamos testar e ver
se isso está funcionando. Se alterarmos as configurações, se eu for para o modo de jogo, defina os pontos de geração do item Se eu simplesmente clicar
na quantidade local de linhas e
transformá-la em duas linhas, também para o contador de loops. O último índice aqui, digamos que eu queria dez itens em uma linha. Eu escrevo nove aqui, porque lembre-se que o
índice inicial é zero, Fycliconplay, eu
compro as penas leves, você pode E vai ficar aqui, mas o 11º
vai para a próxima fila Agora você pode ver que
está funcionando perfeitamente e eu posso fazer a mesma
coisa com a tocha O bom é que você sempre
pode excluir um e
colocá-lo onde quiser. Você pode clicar em Control
Alt para duplicar. Ele pode transformá-lo novamente em
tocha, como neste salvamento. Acho que não precisamos mais desse nome de
ponto para este. Provavelmente vou removê-lo, mas vamos clicar em reproduzir novamente. Agora você pode ver que eles estão trabalhando porque o
primeiro foi o Torch. Agora vamos verificar se o
primeiro é Torch, o segundo é
Feather e assim por diante Todos eles estão
funcionando corretamente. Agora vamos voltar para a base de pontos da
Espanha ou para esta. Vamos remover a
instância Editável e expor no spawn porque não
precisamos Vamos voltar ao controle de
jogo. Vou deletar tudo isso e vamos mover
tudo isso juntos. Vou apenas
criar algumas
notas de rota traseira para organizar
isso muito melhor. Tudo bem, agora
eu reorganizei tudo e acabei de fazer anotações de
redirecionamento. Parece melhor. Então, o que precisamos agora são todos os outros pontos
de resposta. Vamos terminar essa parte. Deixe-me deletar o
primeiro aqui embaixo. Vamos começar
do começo. O que você pode fazer é simplesmente arrastar até
aqui e fazer,
obviamente, a quantidade
de itens que você tem. No momento, temos
dez. Eu só vou descer, isso é 234 Basicamente, precisamos
criar um mapa maior ou talvez precisemos
criar mais espaço. Vá em frente e
copie oito deles. Tudo bem, agora eu
tenho dez deles. Clique no primeiro,
verifique se é o primeiro item. Você sempre pode conferir
aqui quais você
tem e em qual ordem. A primeira é a pena
clara. Em seguida, Torch seleciona a primeira
como pena clara. Novamente, precisamos enumerar os
itens.
Precisamos adicionar os itens a eles A pena clara
é a primeira,
Torch, e depois
precisamos da ruína do O protetor. Vou apenas
adicionar todos eles aqui. O último para mim
é a coroa do mal. Agora que tenho todos eles
novamente, guarde tudo. Feche isso.
Vamos até aqui. E então temos que mudar
todos eles aqui também. O primeiro é o Torch. Você pode abrir isso. adicioná-lo ao meu segundo monitor. E essa é a ruína do tempo. Na verdade, está tudo
em ordem aqui. Basicamente, podemos simplesmente
adicioná-lo em ordem. O protetor, então o último, para mim aqui é a
coroa do mal. Tudo deve
funcionar bem. Agora, se eu voltar
ao modo de jogo, abra o modo de jogo. Vamos abri-lo aqui. Agora eu tenho todas essas entradas nas quais posso
inserir valores nelas. Vamos duplicar esse novamente. Você tem que fazer um para
cada um deles, por exemplo. O próximo é Ruin
of Time Spawn Points. Vá em frente, crie todos eles e
conecte-os aqui também. Esse é o último para mim. A última é a coroa dos pontos
de desova malignos. Vou prosseguir
e adicionar isso também. Novamente, apenas
certificando-se de que está tudo bem, reorganize-os
assim, tudo bem Ok, agora
que adicionamos isso, vamos até o
player e também nos
certificamos de que não precisamos fazer
nada dentro daqui. o jogador aqui
realmente conseguir itens, pontos de
desova, precisamos
fazer isso aqui também Vá em frente e clique no
sinal de mais algumas vezes. Mais uma vez, dê uma olhada em suas matrizes aqui e simplesmente
renomeie-as adequadamente. O terceiro é Ruin of Time. Certifique-se de ter escrito
tudo corretamente, pois isso
também será retirado da tabela de dados Diga o nome de ruína do tempo. O outro é o protetor. Vou apenas adicionar
todos eles novamente. Novamente, este é o
último para mim, a coroa do mal, e espero não ter
escrito errado nenhum deles novamente, só para copiá-lo
algumas Isso é 678910. Então, agora temos todos eles. Vá em frente e conecte todos
eles aqui mais uma vez. E esse é o
último para mim. Então vá em frente e
conecte todos eles. Esse é o último. Apenas certifique-se de verificar novamente. Se você tiver algum erro
aqui,
verifique aqui se você
fez tudo corretamente. Verifique se você
está conectando tudo isso corretamente,
assim E também certifique-se de
que, nos pontos de geração definidos em que você conectou tudo
isso corretamente, você escreveu os nomes corretamente dentro da enumeração
nos itens aqui, eles correspondem
aos nomes que você
tem dentro da tabela tem Apenas certifique-se de que tudo isso esteja correto, porque isso é
muito, muito importante. Tudo deve estar bem. Agora, se eu voltar para o player,
tudo deve funcionar. Se eu clicar em jogar, agora compro alguma coisa. Vamos testar todos eles. Se eles forem gerados, significa que estão trabalhando Agora eu preciso tornar
o mapa um pouco maior, mas podemos fazer isso mais tarde. Mas agora você pode ver que eu posso gerar a rosa que tenho
apenas para 20 itens Então você pode ver a caixa
se eu tiver acima de 20. Mas vou aumentar o número
para muito mais tarde. Mas, como você pode ver,
posso comprar 20 de cada item. Parece muito bom. Agora temos itens gerando a quantidade
de itens que estamos comprando Tudo está calculando corretamente, tudo
está perfeito Agora vamos fechá-lo. Também vou reorganizar
isso e podemos passar
para a próxima lição
81. 8.17 Estrutura de preço de item e tabela de dados: Tudo bem, então agora o que
vamos fazer é aumentar
os preços toda vez que você compra algo
aqui na loja. Você pode ver que toda vez que eu
compro algo na loja, o preço permanece o mesmo. E isso geralmente não é o caso em um jogo ocioso ou clicker, porque precisa ser
cada vez mais difícil contrário, esse será um design de jogo
muito ruim e será um jogo simples, então precisamos
aumentar Na verdade, isso também é o que
acontece no Cookie Clicker, por exemplo, se você
ainda não o experimentou Então, por exemplo, se
você comprar mais cursores, poderá ver os aumentos de preço e as coisas ficarão mais difíceis Então, precisamos fazer isso
também em nossa loja. Precisamos alterar
o preço estático. Vamos encerrar isso. Agora, para isso, quero criar uma nova estrutura contendo
todos os preços. Se você voltar às plantas,
abra as estruturas. Vamos criar uma nova
estrutura de projeto para este. Vou chamá-lo de custo do item. Agora vamos abrir esse. O que basicamente precisamos fazer especificar o custo do
item para cada item. Vou mudar
isso para um número inteiro. O primeiro que podemos
chamar de custo de penas leves. Você só precisa listar todos
os itens que você tem. Agora você pode acessar
essa enumeração. Se você não se lembra dos itens, pode sempre
tê-los aqui ao lado. E você pode seguir em frente e escrever todos os nomes dentro
da estrutura. Adicione uma nova variável e copie
esta após ela. Adicione uma nova variável, copie
essa e cole nela. Eu vou fazer isso
por todos eles. Tudo bem, este é
o último para mim, e eu vou
adicionar o último, e agora temos todos eles. Deixe-me
fechar este e salvar tudo. Agora, o que precisamos fazer, vamos criar uma tabela
de dados a partir dessa. É sempre bom ter um. Vamos clicar com o botão direito do mouse,
acessar Blueprints, criar uma tabela de dados
real diversa
e selecionar o custo do item e Clique em OK. Ligue para o custo de um item de DT. Vamos salvar tudo agora. Temos que acessar o Google Sheets. Aqui no Google Sheets, já
tivemos isso antes. Vamos criar um novo. Deixe-me duplicar este. Duplique isso. Deixe-me falar aqui
, custo do item DT. Agora, o que precisamos é
excluir tudo isso por enquanto. O que precisamos aqui
nesta tabela de dados é o custo de cada item. O primeiro é o custo da pena
leve. Por exemplo, o item número um custará
algo em torno de dez. O item número dois
custará algo em torno de 15. O item número três pode custar
algo como 25 e assim por diante. E vamos escrever todos os
nomes dos itens aqui. Agora eu anotei todos
eles, todos os itens. Agora você precisa especificar um preço para todos eles. Por
exemplo, esse. O primeiro item pode
custar dez pela tocha, pode
custar 15 Talvez 2030, 40,60,
digamos 7510125, e Novamente, é preciso tempo
para fazer tudo isso. Vou apenas selecionar igual, pegar o primeiro vezes 1,2, talvez vá em frente
e arraste alguns deles. Agora você pode ver o quão poderoso isso é porque você pode
criar fórmulas
nas planilhas do Google e importar
esses números, nas planilhas do Google e que são basicamente feitos por fórmula para o seu jogo,
e você pode usá-los Isso também é o que eu usei no Farm Tail quando o desenvolvi. Vamos reduzir a quantidade de casas decimais porque realmente não precisamos de
casas decimais Vamos remover todos eles. Sim, nós podemos fazer isso. Clique e
arraste também para ver os números, a quantidade de pontos do item, isso realmente depende de
quantos itens você pode comprar. Mas para este jogo, digamos que você possa comprar 50 itens. item 50 custa isso, podemos simplesmente arrastá-lo para o item
50, algo assim. Você tem que fazer isso para
o resto deles. Acho que posso fazer isso
assim. Sim, eu posso realmente selecionar todos eles aqui e
arrastar até aqui assim, e tudo ficará bem
assim. Ok, agora eu tenho
todos esses números. Você pode ver como é rápido
usar uma planilha de dados. Agora eu posso clicar em Arquivo, clicar em baixar,
baixar arquivo CSV Agora, para isso, podemos prosseguir novamente e mudar o
nome dela desta forma. Agora eu posso voltar para o motor. Dentro do motor,
vamos para a pasta de tabelas de dados. Vamos clicar e arrastar
isso até aqui. Ele atualizará todas as
informações, como podemos ver aqui. Agora estamos prontos para usar
isso. Vamos salvar tudo isso. Antes de terminarmos isso, vamos criar também
a função de biblioteca. Vou abri-lo
apenas para me manter consistente. Na verdade, vou
renomeá-los para F no começo, porque
geralmente faço isso para minhas
funções como essa Ok, vamos criar uma
nova função agora. Vamos chamar isso
de Obter custo do item. Agora, o custo do item
depende de quantos itens
compramos. Porque, como você pode ver aqui, se voltarmos, isso realmente depende de quantos
itens compramos. Porque se
compramos um item, precisamos pagar o
item dois. Aqui. Se já compramos
oito itens, precisamos obter o
custo do próximo item,
que é o item número nove, em vez de
usá-lo como uma sequência,
como costumávamos fazer com
todos eles aqui. Na verdade, usamos
um número inteiro aqui. Vamos usar um número inteiro
aqui também. Deixe-me adicionar um número inteiro de entrada. Deixe-me chamar isso de uma
quantidade de itens comprados. Quantidade de itens comprados. Já temos essas informações dentro do mapa do jogador. O que podemos fazer é que
realmente não precisamos ter esse número, mas precisamos adicionar um a ele. Devido à quantidade de
itens que você comprou, digamos que você tenha
comprado três itens. Realisticamente, queremos obter o preço do item número quatro Você não usaria esse número, mas precisa adicionar
um a ele porque precisa ter o próximo, o preço desse mais um. E então podemos dizer obter a linha da tabela de
dados, como fizemos
até o fim para obter uma linha da tabela, precisamos usar a tabela de dados de custo do
item. Agora podemos conectar isso aqui, mas agora você pode ver que eles não
são compatíveis, mas você precisa
transferi-lo para uma string,
duas strings e, a
partir de uma string, você pode convertê-lo em
uma variável de nome. Então vá em frente e conecte-o. Agora podemos criar um nó de retorno, adicionando uma devolução, adicionando
isso aqui e chamando essa informação de custo de um item. Lembre-se de clicar nele e
transformá-lo em uma função pura, porque, novamente, estamos apenas
obtendo informações dele. Agora, vamos testá-lo
antes de terminarmos esta lição. Só para sabermos que
está realmente funcionando. Se eu for para o modo de
jogo de plantas, por exemplo, aqui no gráfico, posso
dizer obter informações sobre o custo do item E aqui está. E
podemos usá-lo como quisermos. Ok, vamos fazer isso,
compilar, salvar e passar para
a próxima lição
82. 8.18 Obtenha a função de cost do item: Agora, o que podemos
fazer é criar uma nova função chamada
get item cost. Vamos tentar fazer isso dentro
do player porque
faria mais sentido. Porque aqui você tem
a quantidade de moedas e estamos trabalhando com
moedas dentro daqui. Na verdade, vou
criar uma nova função. Vou chamar isso de Obter
o custo do item. Vamos tentar ver o que
precisamos fazer aqui. Novamente, vou
transformá-lo em puro porque estamos apenas obtendo algumas informações sobre
o custo de obtenção do item. Acabamos de criar essa
tabela de dados e biblioteca de funções dizendo obter o custo do item e
podemos usar esta. Precisamos das informações de quantos itens
compramos até agora. Lembre-se de que já
temos esse mapa. Portanto, podemos fazer
isso facilmente dizendo find. Assim como antes de precisarmos
encontrar o item correspondente, na verdade
precisamos do nome do item. Precisamos de uma variável
dentro daqui. Agora, em vez de
ter apenas o nome do item, vamos
clicar aqui. Porque eu sei mais tarde
aqui que, se
quebrarmos isso, também precisaremos selecionar o preço do item. Se
eu fizer uma devolução, para que você possa realmente
ver o que está acontecendo,
eu crio um nó de devolução aqui. Precisamos devolver o
custo do item, pois esse é todo o
objetivo dessa função. Precisamos saber o custo do item. Agora precisamos disso, dependendo de, vamos criar um nó de seleção aqui. Depende de qual item estamos falando e
podemos conectá-los. Mas o problema é que não podemos
conectar uma corda dentro daqui. Porque se eu faço uma string, agora eu faço uma string e tento
conectá-la, ela não é compatível. Acho que realmente precisamos
adicionar a enumeração que
criamos à nossa estrutura de itens
ou à estrutura das informações
do item ou à estrutura das informações
do Agora, eu disse antes, talvez
precisemos dele dentro
das informações do item e acho que realmente precisamos Vamos realmente fazer isso agora. Isso é muito fácil porque já
temos
tudo o que precisamos. Se eu me lembro
na enumeração,
você já tem essa
enumeração você já tem essa Vamos até as estruturas, abra as informações do item. E a razão pela qual
precisamos
adicioná-lo aqui está aqui. Posso apenas dizer o item
aqui, informações do item. E eu posso simplesmente adicionar
o item assim, porque agora temos o nome do item e também
temos a enumeração Vamos adicionar a enumeração
a essa estrutura. Vamos até aqui. Adicione uma
nova variável chamada item. Vamos mudar isso para a estrutura
do item que eu criei anteriormente. Compile ou apenas salve, deixe-me movê-lo
aqui abaixo do nome Salve tudo de novo. Agora, o que você
precisa fazer é voltar
para a tabela de dados. Você precisa
abrir as informações do item. Agora, obviamente, você
tem que adicionar aqui uma nova coluna à direita
e chamar isso de item. Basta copiar e colar tudo isso aqui, e agora está pronto. Vá em frente e baixe o arquivo CSV e
renomeie este Agora eu já tenho esse, então vou deletar isso. Vou renomeá-lo
para informações do item e depois vou voltar para
o motor dentro daqui Vamos até as tabelas de dados e vamos arrastar
essa para cá. E agora temos todas
as informações de que precisamos. Ok, vamos salvar tudo isso. Agora vamos voltar para o player. E o que podemos fazer é
detalhar isso. Agora podemos adicionar o nome M. Nós temos isso, deixe-me
mover tudo isso para aqui. Agora podemos adicionar o
nome do item. Isso está feito. Agora podemos conectar isso aqui. Então essa é a quantidade
de itens que compramos. Então, ele
encontrará automaticamente o preço do próximo item. Porque dentro dessa função, lembre-se de que adicionamos uma a ela. Então, ele vai automaticamente
para o próximo item para ver quanto
custa.
Então, agora temos isso. Vamos selecionar
o preço do item, dependendo do item de que
estamos falando. Agora que temos
essa enumeração, podemos simplesmente clicar e
arrastá-la aqui e adicioná-la Agora já sabemos de qual
item estamos falando
porque o definimos
agora dentro de nossa tabela de dados. Na tabela de dados, sabemos de qual
item estamos falando. Ele selecionará
automaticamente
o valor correto,
dependendo da enumeração Vá em frente e conecte
todos eles. E ele
selecionará automaticamente um valor dependendo do valor
deste aqui embaixo. Tudo bem, terminamos
com essa função. Agora, antes de terminarmos com isso, vamos revisar e realmente
fazer algo um pouco melhor. Se eu voltar ao modo de jogo. Lembre-se de que fizemos tudo isso dentro do conjunto
de pontos de geração Na verdade, já usamos
a enumeração de itens, mas nos pontos de geração do get it usamos essa Na verdade, podemos
torná-lo um pouco melhor agora que temos
a enumeração Deixe-me excluir isso e dizer que na verdade, altere
este para itens. Vá em frente e selecione-o, este é o nome do item, tudo bem. Podemos dizer ativar, temos ativar a enumeração em vez de ativar É muito mais fácil
porque fornece automaticamente todos os valores que você escreveu dentro
da enumeração Novamente, vá em frente e adicione-o. Agora você pode ver, durante o desenvolvimento
do jogo, há algumas coisas que você
pode precisar no futuro. Por exemplo, eu não
queria adicionar essa enumeração antes, mas agora, faz muito mais sentido
tê-la no jogo É sempre bom voltar às mecânicas anteriores
que você fez e adicionar coisas
que são melhores se você começar a precisar delas
durante o desenvolvimento Agora que temos
itens, um ponto. Lembre-se de que também precisamos
ir até o jogador. Então, se eu abrir o player até mesmo o gráfico, porque
agora você tem uma era. Porque lembre-se, esse é o problema
anterior que tivemos antes. Não podemos adicionar uma string
a uma enumeração, mas agora temos a
enumeração dentro da Podemos simplesmente arrastá-lo até aqui. Deixe esse pino e vá
em frente e compile. Vá em frente e torne-o
mais estruturado assim. Agora, se clicarmos na placa
para testar o jogo e ver se tudo está
funcionando como eu posso ver, tudo está funcionando
bem como antes. Ok, agora isso está muito melhor. Criamos nossa nova
função para obter o custo do item e podemos usá-la para
trocar o custo do item. Vamos passar para a próxima.
83. 8.19 Aumento no preço do item: Tudo bem, bem-vindo de volta. Então, agora estamos prontos para
atualizar o custo do item. O custo do item é exibido
dentro da interface do usuário. Vamos abrir o
cartão de itens da loja aqui para ver o preço. Vamos ao gráfico. Até agora, o que
estamos fazendo é apenas definir
o preço estático aqui na construção do
evento que definimos o preço. Vamos fazer isso novamente
dentro de um evento personalizado, assim como estamos
fazendo com a quantidade de itens. Deixe-me clicar com o botão direito aqui, criar um novo evento personalizado. Vamos chamar isso de uma
atualização de Custo do Item. Agora, o custo do item, o objetivo aqui é basicamente
definir o texto. Então, vou pegar o texto
do conjunto de preços do item, como antes. Em última análise, isso é
o que precisamos
fazer agora para o texto do item. Novamente, isso depende de qual
item estamos falando. Deixe-me clicar com o
botão direito aqui. item custa porque agora
criamos essa biblioteca de funções. Podemos pegar isso e
detalhar isso. Mas agora você pode ver que o problema agora é que não sabemos
qual usar. Lembre-se
de que, em vez de usar este, criamos apenas um
dentro do player. Vamos usar este em vez disso. Se eu pegar o peão do jogador e pegar isso aqui e
dizer obter o custo do item, temos essa função
do jogador Agora, basta
inserir o item,
porque fizemos
tudo isso na porque fizemos
tudo isso lição anterior,
onde selecionamos isso, dependendo do item que
fornecemos.
Vamos voltar ao item Cod. Deixe-me deletar
esse aqui em cima. As informações do item, já as
temos, então vou simplesmente
conectá-las. Agora. Temos o custo do item. Agora você pode ver como é muito fácil obter o custo do
item dessa forma. Também parece muito mais limpo quando você transforma
coisas em funções. Deixe-me reorganizar
tudo isso aqui. Agora temos o custo do item. Agora, em vez de defini-lo
como um valor estático aqui em cima, vou apenas excluí-lo. Clique neste e esconda os pinos
não conectados aqui. O que podemos dizer é
atualizar o custo do item. E, basicamente, basta chamar
a função que somos, o evento que
criamos aqui embaixo. Então, atualize esse também. Ok, então isso está funcionando agora. O problema é que também precisamos atualizá-lo, assim como
o preço, para todos os outros itens ou outros lugares em que
usamos o custo do item antigo. Porque se eu apenas
destacar isso, se eu clicar com o botão
direito nas informações do item, lembre-se de que temos o custo desse item ou o custo das moedas aqui. E nós realmente não
precisamos mais disso porque estamos obtendo isso deste. O que podemos fazer é
clicar com o botão direito do mouse aqui, encontrar referências. E vou clicar
no pequeno ícone aqui embaixo, porque preciso encontrar
as referências em todas as plantas.
Clicando na primeira, o que estou fazendo agora é
apenas dar uma olhada e ver onde estou usando o custo dessas moedas porque preciso
trocá-las por esta. Novamente, vamos pegar o jogador,
digamos, obter o custo do item. Conecte o item que é
este. Conecte-o aqui. Em vez de usar esse custo do item, podemos usar este
em vez disso. Vamos deletar isso. Você precisa
trocá-lo porque esse é o custo correto do item
que você está usando no momento. Vamos voltar às nossas referências e clicar na próxima. Não mostra nada
porque é apenas o nome do item.
Clique na próxima. Novamente, esse é o custo
do item novamente. Na verdade, vamos ver
se podemos copiar isso. Deixe-me copiar isso para
que eu não precise escrevê-lo novamente no item. Já temos essa
informação aqui. Conecte-o,
conecte-o, exclua isso. Vamos colocá-lo
aqui, compilar. Vamos abrir as referências. Mais uma vez, clique
no próximo, nada aqui. Clique
na próxima. Agora estamos dentro do player, então podemos começar
a partir daqui. Entenda. Custo. E
o item está aqui. E quanto ao custo, podemos simplesmente
conectá-lo novamente aqui. Nós não usamos
esse. Clique nele. Esconda pinos desconectados como este. Compilar. Volte às referências novamente.
Clique no próximo, Nada aqui. Clique
no próximo novamente. E aqui também não usamos
o custo do item. Agora podemos clicar em Placa
para ver o que acontece. Agora, se eu clicar em Por,
você verá que o
custo do item não é atualizado. Isso porque, é
claro, precisamos
chamar esse evento de custo do item de
atualização. Isso faz sentido
sempre que compramos um item. Se eu for até o
player e for até esse
item de compra, vamos chamá-lo aqui. Vamos ligá-lo sempre que
tivermos adicionado a este mapa e
atualizarmos o valor do item que compramos
antes de atualizarmos a cor do
botão de compra ou a cor do texto. Na verdade, vamos adicioná-lo aqui. Se eu simplesmente arrastar daqui
e disser atualizar o custo do item, vamos conectá-lo assim. Isso deve funcionar muito bem. Lembre-se de que esse pin é
do item da loja porque
recebemos uma referência dele. E deixe-me
clicar neste. Esconda os pinos desconectados,
compile e clique em reproduzir. Agora, quando eu compro, você pode ver
que o preço do item está aumentando. Está aumentando
dependendo do que eu escrevi dentro
da tabela de dados. Agora, só para
ter certeza, deixe-me abrir a tabela de dados e ver se
fiz as coisas corretamente. Agora, o item número 15
deve custar 128. O item número 15 custa 128 e está correto.
Agora você pode ver, e isso deve funcionar
para todos eles. Portanto, este último, item número 11, deve custar 929 O item número 11 é esse, pois o último custou 929, então está correto Agora sabemos que isso está correto e também está
calculando corretamente. Como agora você pode ver se
clicar no último, ele deve subtrair 929 E se pressionarmos aqui,
esse também é o caso, tudo está funcionando bem. Vamos salvar tudo e passar
para a próxima.
84. 8.20 Como criar o widget de dica de ferramenta de item: O que eu quero fazer a seguir
é clicar em Jogar e passar o
mouse sobre essas cartas Quero uma dica de
ferramenta que mostre
quanto DPS você receberá ou dano por segundo você
receberá ao comprar este item Vamos
criar uma dica de ferramenta. Vamos clicar com o botão direito aqui na interface
do usuário e criar um
novo widget, blueprint Vamos chamar isso de dica de ferramenta do WB. Dica de ferramenta, como essa. E
vamos abri-lo agora. Novamente, precisamos adicionar
uma tela, como de costume, antes de começarmos a desenhar. Então eu acho que
vou entrar aqui. Vou copiar essa,
essa sobreposição e essa imagem Eu vou controlar C e
controlar V dentro daqui. Vou clicar
aqui na tela cheia. E, novamente, selecione o desejado
na tela. Para o sensor de ponto de ancoragem, coloque 0,5 no
alinhamento correto para x e y. Em seguida, clique também em
Dimensionar para o conteúdo E as posições x e
Y devem ser zero. Y zero, agora está no meio. Ok, agora vamos
começar a projetá-lo. Estou apenas
excluindo
essa imagem e essa caixa horizontal Vou apenas arrastar
o texto até aqui. Exclua a caixa horizontal. Agora, para este, vou
reduzir o tamanho desse texto. Acho que é muito grande, talvez. Em vez disso, vamos tentar 18. Para o deslocamento da sombra. Deixe-me escrever dois em vez disso aqui. Ok, agora para esta imagem, em vez de ter a imagem
de um determinado tamanho, vou escrever
32, que é o padrão. E podemos simplesmente
dimensioná-lo de acordo com o conteúdo de
dentro para fora deste.
Vamos começar com o texto. Para o texto, o que precisamos
dizer é, por exemplo, cada tocha dá cinco DPS Isso é o que eu queria dizer. Agora, em vez de apenas
tê-lo como texto, eu realmente quero
adicionar uma caixa vertical porque preciso de algum
outro texto abaixo dela Vamos adicionar uma caixa vertical. Adicione o texto a este. E vá em frente e controle D para duplicá-lo aqui embaixo Eu quero dizer que aparentemente fazendo, por exemplo, zero DPS aqui em cima, isso vai
te dizer quanto DPS, esse item ele te dá E o DPS, aliás,
se você não sabe, é dano por segundo Então, quanto dano por segundo esse item causará quando
você o comprar? Quanto você está
fazendo atualmente? É quando, por exemplo, 15 desses, deveria
dizer 15 vezes cinco. E dirá
quanto DPS você está fazendo pela cor Vou apenas copiar essa
cor que temos aqui. Cole-o neste. E cole
neste também. Agora acho que vou dar
um pouco de espaço também. Por exemplo, aqui podemos dar um espaçador entre os dois textos Vamos dar a ela um espaço
de dez e o Y. E também vamos dar um pouco de espaçamento à caixa
vertical Vamos escrever 30 e o preenchimento, então
agora temos algum espaçamento para o Também quero mudar a cor
do texto porque
acho que fica melhor se alterarmos o quanto os DPs gostam da cor do texto aqui, porque fica
mais fácil de ler Agora, não podemos realmente
fazer isso com um texto apenas porque, caso contrário, isso
mudará a cor
de todo o texto. Em vez disso, o que precisamos
fazer é duplicar este
clicando no controle D. Vamos adicioná-lo
em uma caixa horizontal, porque precisamos que ele
esteja ao lado do outro Adicionando esses dois
à caixa horizontal, vou excluir os cinco DPS desta,
da outra Vou excluir
todos os outros textos exceto os cinco
DPS, como este Lembre-se de adicionar um espaço aqui. Então eu clico nesse espaço publicitário. Agora, isso é o que parece. Agora você pode ver que o espaço
é um pouco grande demais. Na verdade, vou
excluir o espaço
e, em vez disso, adicionar
um espaçador, porque agora podemos controlar quanto espaço existe
entre os caracteres E eu vou
escrever quatro no X. Acho que
parece muito melhor Vamos fazer a mesma
coisa aqui embaixo. Vou apenas
duplicar este. Na verdade,
exclua o que está aqui embaixo. Puxe-o para baixo
do espaçador assim. Então, podemos escrever, por exemplo, zero DPS aqui, aqui embaixo Atualmente, podemos escrever
sem DPS. Por exemplo, quero ter
certeza de que
essa caixa horizontal está
alinhada ao meio, assim como essa outra caixa
horizontal alinhada ao meio Agora vamos mudar a cor dos cinco DPS ou
do texto do
DPS aqui em cima. Vou mudá-lo para
algo roxo assim. Você pode tentar encontrar a cor que você gosta, talvez
algo assim. Quanto à saturação, não
quero que
fique muito saturado senão é um pouco
difícil de ler Vou configurá-lo
para algo como 0,42. Isso é para o
volume, um está bom Clique em OK, este é
um texto diferente. Agora você pode dar um
pouco mais de saturação. Por exemplo, 0,445 Você também pode copiar isso para o
outro Agora, o que eu também quero
fazer é mudar a cor da sombra abaixo dela, porque ela
não cabe mais. Vou copiar isso aqui
com base nesses dois. Mude para algo
muito sombrio como isso. Talvez 0,4, algo
como 0,4 a coca. Em seguida, copie isso além da cor da sombra
e dê uma olhada, e acho que
fica muito melhor. Agora, deixe-me mudar
este aqui para 0,4 em vez disso. Na saturação,
vou copiar essa
cor aqui embaixo E eu vou copiar a cor
do contorno aqui
embaixo também Agora você pode ver que tem
uma cor diferente e é muito mais fácil de ler. Acredito que terminamos de
projetar este. Vamos passar para a próxima.
85. 8.21 Atualizando as informações de dica de ferramenta: Agora, vamos continuar e atualizar
a interface do usuário do Tooltip aqui. Vamos ao gráfico e realmente atualizar as informações. Vou deletar tudo isso. E vamos clicar com o botão direito mais
uma vez e criar um novo evento personalizado chamado
update tooltip UI Agora, para este, o que basicamente
queremos
fazer é mudar
o texto deles. O primeiro, veja aqui
, diz o nome do item. Precisamos de um valor dinâmico aqui, precisamos do nome de cada item. Clique neste,
vou chamá-lo de PS. Esse texto aqui em cima. Vou
chamar isso de quanto DPS esse
item vai te dar Qual será o desempenho desse
item no DPS? Ou o quanto você
vai fazer aqui em cima. Eu só vou
ligar que dá PS. Este, vou
chamá-lo da mesma forma, dá a quantidade de DPS Essa é a quantia aqui embaixo. Vou
chamar isso de fazer PS. Este é o valor do PS. Ok, vamos compilar
e,
digamos, vamos voltar agora ao gráfico Vamos começar com o give
P, o primeiro texto. Só queremos definir o texto
como de costume, assim. Agora lembre-se do que
eu disse anteriormente. Anteriormente, eu disse que se você tem um
texto dinâmico como esse, precisa usar um formato de texto. Vamos escrever a partir daqui
e dizer formatar texto. Vamos escrever
a mesma frase. Diz que cada um deve dar. O que precisamos
escrever aqui é cada um. E então precisamos abrir o colchete porque a
tocha é um valor dinâmico, vamos apenas
dizer o nome do item e
fechá-lo com a entrada dos
colchetes, você pode ver uma entrada aparecer em
cada uma e o nome do item E agora podemos inserir
o nome do item. Na verdade, precisamos das informações do
item. Agora, para fazer isso,
vamos adicionar um alfinete aqui, alterá-lo na
estrutura de informações do item, chamá-lo de item. Agora podemos pegar isso, podemos quebrá-lo e podemos pegar o nome do item e
inseri-lo aqui. E ele será
atualizado corretamente. Ok, isso acabou. Vamos ver a próxima coisa:
essa quantidade de DPS. Vamos pegar, dar a quantidade de PS
e definir o texto mais uma vez. Agora, novamente,
precisamos basicamente de um formato de texto
como antes. Então vá em frente e pegue isso. Agora, em vez de dizer isso, podemos dizer o valor do EPS
e podemos dizer DPS, o número aqui, e depois
o texto DPS Agora precisamos inserir o valor
do DPS. Agora não
temos isso. Na verdade, precisamos adicioná-lo e
adicioná-lo ao item,
porque cada item que compramos deve ter sua
própria quantidade de DPS Vamos às estruturas do
projeto e vamos abrir as informações da TM. Vamos adicionar uma nova
variável chamada DPS, ou dano por segundo Isso depende de você.
Transforme-o em um flutuador, salve, salve tudo Agora, lembre-se de que você
também precisa
adicioná-lo à tabela de dados
por meio do Planilhas Google. Mas, por enquanto,
vou apenas abrir as informações M. Você pode simplesmente escrever
o que quiser aqui. Vou escrever apenas 10.20
e 30 ou talvez 50. Vou escrevê-lo
para os três primeiros apenas para testar. Realmente
preciso disso agora. Só precisávamos do valor
aqui nas informações do item. Agora que você tem esse DPS, vá em frente e conecte-o aqui E isso deve funcionar muito bem. Agora, para o resto,
vamos começar com o DPS. Agora. É o texto aqui embaixo. Vai dizer que
está fazendo atualmente. Agora você pode ver
aqui que não
temos valores dinâmicos e realmente
não precisamos alterar esse texto. Na verdade, não precisamos
manipular esse texto. Só precisamos mudar esse. Vamos voltar e pegar o
chamado presentes, valor PS. Em vez disso, defina o texto. Precisamos definir o valor. Eu só vou copiar este. E este
exibirá a quantidade total de DPS para
este item que você pode fazer Vou escrever aqui a quantidade
total de DPS e
depois apenas o DPS Eu não o conectei.
Agora, a quantidade total de DPS depende de quantos
itens você comprou E lembre-se, já temos
isso dentro do player. Precisamos de uma referência
ao jogador. Vamos fazer isso. Aqui está, personagem do
jogador, aliás, tente fazer isso
sozinho, se puder. Porque eu acho que você pode fazer isso. Já temos a variável, a variável de mapa dentro
do player que
você precisa usar, digamos que seja uma
referência ao player na interface do
blueprint Vá em frente e se conecte. Agora
era chamado de Item Spot. Vá em frente e pegue este mapa aqui. Agora, a partir desse mapa, precisamos
encontrar o item com o
qual estamos trabalhando. Vou me arrastar até
aqui e dizer encontre. E precisamos encontrar o item. E quando encontrarmos o item, ele nos dirá
quantos itens
compramos. Vamos arrastar essa
até aqui. Agora temos a quantidade
de itens que compramos. Para calcular o DPS total, você precisa multiplicar a quantidade
de itens
comprados quantos DPs ou
quanto DPS cada Vamos pegar esse e
multiplicá-lo pela quantidade de
PS que cada item faz E então, com isso, temos a quantidade total de DPS
que podemos conectar aqui Vá em frente e conecte isso
aqui também. Agora estamos realmente terminados, então vá em frente e clique
aqui para ocultar os pinos desconectados Vá em frente e
clique duas vezes neles para fazer anotações sobre arte e
organizar seu código. Tudo bem, agora que
está organizado e com isso concluído, vá em frente e
compile, salve tudo E agora terminamos de
atualizar a dica dupla I.
86. 8.22 Exibindo o widget de dica de ferramenta: Agora é hora de exibir esse widget de dica de ferramenta
que criamos Para fazer isso, temos que fazer isso dentro do item
da loja, Cod. Porque lembre-se de que, quando
clicamos em reproduzir, queremos que essa dica de
ferramenta apareça. Sempre que passamos
o mouse sobre esses cartões
, eles estão realmente dentro do item
da loja. Nós fazemos isso. Vamos entrar aqui. Quero exibir esse widget. Sempre que eu passar o mouse sobre
qualquer coisa sobre este cartão, vou clicar
nessa sobreposição e fazer isso Isso significa que onde quer que passemos o mouse sobre esse
cartão, ele aparecerá Clique nessa sobreposição. Vou descer até aqui no Comportamento e
clicar em Avançado. Aqui embaixo você vê esse
chamado Tool Tip Widgets. Vá em frente e clique em Vincular
e crie uma encadernação. Então vá em frente e expanda isso. Agora precisamos obter o
widget que criamos, o widget Shop Tooltip Não criamos
uma referência a ela, porque normalmente criamos referências à interface de usuário dentro
do controle de jogo. No entanto, para esse widget nós realmente não
criamos nada Não quero criá-lo aqui dentro , como estamos fazendo. Porque o, não é algo que
você possa abrir e fechar. É apenas algo que aparece sempre que você passa
o mouse sobre as cartas Em vez de fazer isso aqui. O que vou fazer é
geralmente criar meus eventos dentro dos meus jogos
chamados de camada de inicialização Dentro desse evento,
adiciono tudo o que
preciso que deve acontecer
sempre que eu abrir o jogo. Por exemplo, esse
widget de dica de ferramenta precisa ser criado, digamos criar widgets E vá em frente e selecione
o widget Tooltip, essa dica de ferramenta do Shop E vá em frente e promova isso para uma variável chamada dica de ferramenta de loja Por exemplo, ferramenta de loja, OK. Agora isso foi criado, e
lembre-se também de adicioná-lo aqui. Vou fazer isso antes de criar os cartões. Agora
, isso realmente não importa. Mas só para ficar limpo aqui. Jogador inicializado. Agora estamos chamando
esse evento aqui embaixo, coloque conectado, o que
eu precisar que aconteça. Quando eu abrir o jogo, vou adicioná-lo ao evento inicial
do jogador. Agora temos uma referência
a esse widget de dica de ferramenta. Então, o que podemos fazer agora
dentro da placa, podemos pegar o controle do jogador,
obter o controle do jogador. Então, podemos direcionar
a partir daqui e dizer obter referência
do controlador do player a
partir do modelo do widget Agora podemos pegar essa dica e dizer
uma dica de ferramenta, e podemos obter esse
widget que acabamos de criar Agora, para esse widget,
precisamos chamar,
se eu voltar à loja de widgets, se eu voltar à loja de widgets ferramenta aqui.
Lembre-se de que criamos a interface de usuário da dica de ferramenta de
atualização Vamos chamar isso de dica de
ferramenta de atualização que eu conectei. Agora ele precisa de um item
porque o usamos para atualizar basicamente todas
as informações que temos. Isso porque estamos dentro
do código do item da loja e criamos essas informações
do item anteriormente, que também usamos
aqui para atualizar as informações do item Vamos pegar este
e conectá-lo aqui. E então conecte isso. Além disso, lembre-se de conectar
essa ferramenta de widget ao Putt até o nó final Novamente, você pode clicar
duas vezes aqui. Eles se organizaram assim. Ok, isso deve funcionar. Se compilarmos e
salvarmos tudo. E se eu clicar em Reproduzir, agora
você pode ver que ele realmente é exibido com o
nome correto para o item. Você pode ver que diz cada série
de itens ou cada sequência de tempo, e o protetor protege os capacetes de
cada rei, coroa de
cada rei e assim por diante Agora, ele
também exibe
a dica
da ferramenta com as informações corretas. Agora há um problema. Agora, se eu clicar em jogar
novamente e comprar algo, você pode ver que diz zero DPS e nada está
realmente sendo exibido Agora, para este, vamos
tentar fechá-lo e verificar
a tabela de dados se escrevemos
as coisas corretamente. Se eu abrir as
informações do item, o primeiro DPS, a pena clara deverá
ser 1020 E se eu clicar em jogar e verificar se o
primeiro deve ser 1.020,50 e vejo que
nada está sendo Mas você pode ver aqui, toda
vez que eu compro algo, ele realmente é exibido corretamente. Se eu mover meu mouse e passar o
mouse sobre ele novamente, dirá 20 DPS Vamos dar uma olhada em
onde isso dá errado. Se eu abrir o widget de ferramentas da
loja, as informações
aqui que ele me fornece, primeiro chamado, fornecem DPS Este fornece a
quantidade de DPS. Isso está correto. Vamos dar uma olhada na quantidade
de DPS fornecida como ela está sendo definida Vamos também verificar a
outra parte do código, e aqui está realmente
onde está errado. Como eu uso a quantidade de
DPS fornecida, em vez de usar a quantidade de DPS, isso é a coisa errada Aqui, deixe-me deletar
este e compilar. Clique em Reproduzir e se
eu passar o mouse sobre ele, agora ele será exibido corretamente. Isso porque eu disse
o texto errado aqui. texto que faz EPS é o correto e indica que o
DPS também estava correto Ok, agora, se eu comprar algo, você pode ver que ele ainda exibe
zero no que está sendo feito atualmente. Mas se eu me afastar
dele e voltar para ele novamente, você pode ver que ele é
exibido corretamente. Se eu me afastar, vá até
ele, ele será exibido corretamente. Nos 30 DPS em execução atualmente, precisamos atualizar
o
DPS em também
precisamos atualizar
o
DPS em execução como em outro lugar, porque ele não é
atualizado instantaneamente O que podemos fazer é chamar essa atualização de ToolPi toda
vez que eu comprar um item Se eu fechar tudo, volto às plantas Abra o player aqui. Fizemos esse único item de compra. O que podemos fazer aqui com o item de compra é que eu
posso simplesmente atualizá-lo aqui. No final, precisamos
do controlador do player. Vou pegar o
controle do player e pegar o widget de dica de ferramenta
que criamos Em seguida, vamos executar a
interface de usuário da dica de ferramenta de
atualização sempre que
comprarmos um item E qual é o item? É este que
inserimos aqui. Vamos pegar isso e
conectá-lo novamente. Basta organizá-lo assim. E vamos compilar e clicar em Play e
ver o que acontece Agora, se eu comprar, você pode ver que ele atualiza instantaneamente a quantidade de dano por segundo e também está sendo atualizado corretamente,
dependendo do GPS que estamos criando. Agora, para finalizar,
abra seu Google
Drive aqui,
vamos encontrar as informações do nível, as
informações do item aqui, as informações do item e depois
do custo das moedas. Vamos adicionar o DPS. Para o TPS, vou escrever apenas para o primeiro item, ele fará cinco DPS e, em
seguida, digamos que é igual Vou fazer com que números
aleatórios se multipliquem por 1,5. Vou levar
tudo até aqui Vou remover todas
as casas decimais porque não
preciso delas. E podemos fazer isso mais
ou menos assim. Você também pode
dizer que multiplicado por 1,8 Nós realmente causamos
mais danos como esse Vamos agora fazer o
download desse arquivo CSV
e lembre-se de renomeá-lo, renomeando as informações do item T. Vá em frente e
abra o projeto. Vá para as tabelas de dados, depois vá em
frente e importe as informações do
item para aqui. Vamos verificar as informações do
item para
garantir que o TPS esteja
lá. E é. E agora você pode ver cada item tem a
quantidade correta de DPS exibida E se você comprar algo, ele exibirá o DPS
atualmente em execução corretamente. Obviamente,
não estamos realmente fazendo nenhum DPS no momento porque
não temos danos automáticos Mas pelo menos nosso sistema agora está funcionando para que possamos
continuar o curso.
87. 9.01 Aplicando dano automaticamente: Agora é hora de aplicar
dano
automaticamente ao inimigo. E isso geralmente é
o que é feito em jogos de
clicker quando você compra E causa danos por segundo. Isso deve ser feito
automaticamente, em vez de você continuar clicando no inimigo. Vamos seguir em frente e fazer isso.
Vamos fazer isso no player. Vamos voltar e
entrar no player. Agora já fizemos algo com os danos aqui dentro. Dentro do jogador, ou
na verdade, foi dentro
do inimigo que
aplicamos algum dano aqui. Agora vamos aplicar algum dano
dentro do player. Agora é o
jogador que está causando dano. Clique com o botão direito do mouse e
crie um novo evento personalizado. Vamos chamar isso de Auto Damage. Vou causar
danos automaticamente a este. Agora, para causar o dano automático, precisamos de algo em loop Precisamos de um código em loop
que continue funcionando , nunca pare e
esteja causando danos Você tem algo
chamado cronômetro. Temos algo chamado evento. Defina o cronômetro por evento. Você também tem algo chamado
set time by function name. Agora eles são parecidos. Essas duas funções
são semelhantes. Normalmente, os usamos quando
precisamos de algo em loop. Usamos o node de atraso
sempre que precisamos
atrasar algum código e depois
fazer algo. Lembre-se de que, para o nodo de atraso, nós o usamos dentro
da base inimiga. Se eu entrar aqui, usaremos isso para realmente atrasar esse código porque esperamos que
a inversão terminasse Atrasamos o código pelo
tamanho do flip-book e depois verificamos
se o jogador ou o inimigo estavam mortos ou não Aqui usamos o atraso. Se você precisar de algo que esteja em loop, o código precisa estar É melhor usar um cronômetro. Temos um cronômetro por
nome de função e cronômetro por evento. Agora, realmente não
importa qual deles você usa, porque eles são
quase idênticos. Na verdade, eu uso os dois, então eu realmente não
tenho uma preferência. Eu posso te mostrar como
usá-los para o T. Vamos usar primeiro o
cronômetro por evento Deixe-me colocar isso
aqui, atrasar esse. Vamos conectar esse
primeiro cronômetro por evento. Você tem que avisar o cronômetro. Com que rapidez você deseja fazer um loop? Por exemplo, eu quero fazer um
loop a cada 0,1 segundo. Isso significa que o código será executado
a cada 0,1 segundo. O código aqui será
executado dez vezes por segundo. Vou configurá-lo para um
loop. Agora precisamos de um evento. Vou arrastar
isso até aqui, diretamente no evento personalizado. Vamos chamar isso de loop de danos
automáticos. Seja qual for o código que você escrever, ele sairá daqui e agora
será repetido. Por exemplo, se eu arrastar
daqui e escrever uma string de impressão, ela
disser olá e eu compilar Agora, esse dano automático, você obviamente tem que
correr em algum lugar e eu vou executá-lo
no começo. Jogue aqui. E vamos escrever para causar danos. Agora estamos realizando
este evento aqui. E ele executará esse
cronômetro que executa o código. Compilar, clique em Reproduzir. Na verdade, ele executa esse código
e ainda está em execução. Como você pode ver aqui, ele roda ou diz olá dez
vezes por segundo. Se eu escrever 0,04, por exemplo, clique em Play, você pode
ver que é muito mais rápido Agora, se você não é
forte em matemática, sempre pode
calculá-la dizendo, por exemplo, 1/0 0,04. Isso significa que o código está sendo executado
25 vezes por Agora, um carrapato
, você deve conhecer esse que eu sempre digo para
você não usar evento. Este, muito ruim,
está na verdade ocorrendo em, se você estiver certo, 1/0 0,02, isso é na verdade 50 vezes esse tick do
evento ocorre 60 Na verdade, este
nem é suficiente. Está rodando talvez
0,18 ou até menos. Como você pode ver, o evento
é super rápido. Na verdade, está funcionando assim. O complay, esse é o evento. Você pode ver que o cronômetro é muito, está muito mais otimizado Você pode executar o código
não tão rápido, mas ainda pode obter os
mesmos resultados se eu executá-lo em
0,05. Isso significa que estou
executando o código
20 vezes por 0,05. Isso significa que estou segundo Às vezes, isso é
necessário porque se você executar o código muito lentamente, parecerá que a barra de saúde está atrasada porque está subtraindo a
integridade Isso ocorre se você executar
o cronômetro muito devagar. E podemos realmente ver isso
sempre que fazemos tudo isso. Agora, defina o cronômetro
pelo nome da função. A diferença entre os dois é que isso vai fazer um
loop em uma função, uma função que criamos aqui. Na verdade, vou
usar este porque principalmente, quero usá-lo porque
mantém o código limpo. Não preciso escrever ou enviar spam para meu gráfico de eventos com eventos
aleatórios. Na verdade, posso simplesmente criar uma função e ela
fica escondida, e é muito mais limpa
para essa função Vamos chamar isso de dano automático. Vamos também fazer
essa função aqui. Fica em loop qualquer
nome que você escreveu aqui. Ele vai repetir
essa função. Agora lembre-se de que você deve
escrevê-lo exatamente como escreveu aqui. Para que funcione, vou
subir 0,05 ou vamos realmente subir 0,14 Agora vamos tentar isso.
Deixe-me deletar isso. Deixe-me deletar isso também. Deixe-me conectá-lo,
vamos escrever isso, promovê-lo a uma variável, que possamos parar o
cronômetro se precisarmos Vou
chamá-la apenas de alça de danos automáticos, porque se você segurar
o mouse sobre ela, ela diz que
é uma alça de cronômetro ou
alça de danos Podemos usá-lo para parar o
código ou parar o cronômetro. Agora, basicamente, esse dano, eu quero jogar aqui
no evento ou começar a
jogar para o jogador. Sempre que iniciamos o jogo, começamos a fazer o Orodamage Obviamente, não causamos danos se ainda não compramos
nenhum item. Vamos para a função Or
damage aqui. Assim como antes,
eu quero aplicar dano e agora o
ator danificado é o inimigo. E lembre-se de
que temos uma referência
ao inimigo dentro
do controle de jogo. Eu pego o
controle do player e procuro inimigo
gerado porque o
transformamos em uma variável e vou em
frente e o conecto Agora, quanto ao dano básico, vamos trabalhar com
ele na próxima lição. Por enquanto, vou escrever apenas cinco e isso deve
funcionar muito bem. Agora, clique em jogar. Agora você pode ver que o inimigo está sendo danificado
automaticamente. E parece bom. Mas obviamente temos que corrigir algumas
das animações aqui Agora eu quero te mostrar
que parece lento, se você dissesse desta vez Ou jogo muito lento, parece lento,
parece de baixa qualidade No entanto, se você
configurá-lo para algo como 0,04, o que na verdade eu quero defini-lo para 0,04
, parece muito Quanto mais baixo você
o colocar, mais ele
ficará limpo, assim. Você pode ver aqui que
é muito mais suave. No entanto,
lembre-se de que quanto mais baixo você
o definir, mais repetirá
esse cronômetro e mais recursos
usará em seu jogo, e menos
otimizado ele será Quero dizer
aqui que, quatro cronômetros, tente ajustá-lo o mais
alto possível sem sacrificar
a aparência do Se eu pensar em 0,05 para Leggy, definirei como 0,04
e ficarei satisfeito
com esse e ficarei satisfeito
com Novamente, você pode entrar
aqui e dizer o que é 1/0 0,04. Isso significa que meu código está sendo executado 25 vezes. Isso é bom. Isso é bom. Muito melhor
do que o tick do evento, que é 60 vezes por segundo. Ok, agora terminamos com tudo isso e vamos
para a próxima lição.
88. 9.02 Como avaliar o DPS total: Para aplicar a
quantidade correta de dano, temos que calcular quanto dano por
segundo o jogador tem. Como o jogador pode
comprar todos esses itens, precisamos
juntar tudo e depois aplicá-lo como
dano automático ao inimigo. Vamos fazer isso
criando uma nova função. E esse será
chamado de atualização total do EPS. Primeiro, precisamos de todos os itens que o jogador comprou. Vamos pegar esse mapa.
Para fazer isso, temos duas funções. Temos dois nós. Podemos usar uma chamada chaves. O que são as chaves, são a
primeira coluna aqui, a string. Isso é
chamado de chaves. Se eu disser valores, você
poderá obter os
valores dessas chaves. Temos as chaves aqui
, que são as strings, e depois temos os valores Agora precisamos de todos os itens
que o jogador comprou, então precisamos usar as chaves. Vou pegar
essas chaves aqui. Agora temos todos os
itens em uma matriz. Vou dar uma
olhada em todos eles. Para cada loop, para
cada um desses itens, queremos saber quanto
DPS eles estão fazendo Para o DPS, lembre-se de
que temos a opção de obter informações do item, obter informações que criamos
na biblioteca de funções Vamos pegar
isso para o nome do item. Vamos conectá-lo aqui. E agora podemos quebrar essa estrutura. E agora
temos a quantidade de DPS. Agora, novamente, a quantidade de DPS também depende de
quantos itens
compramos desse
item selecionado que temos no momento Também precisamos usar os valores. Vou copiar
isso aqui e dizer valores porque
precisamos saber
quanto realmente
compramos desses itens. Para os valores, vou
direcionar a partir daqui e dizer get porque já estamos fazendo loop aqui, então
não preciso fazer Então, eu só vou
dizer, pegue uma cópia. Qual índice você deseja obter? Vou apenas seguir os índices ou
índices deste,
para obtermos a
quantidade correta de itens para o item correspondente Agora, o que podemos fazer com isso, podemos dizer que essa é a quantidade
de itens multiplicada pelo DPS Por exemplo, se
tivermos cinco do item, ele dirá cinco vezes. Por exemplo, dez DPS são dez. Então, precisamos de uma nova variável
para armazenar o DPS total. Vou criar uma nova
variável chamada DPS total. Eu não o transformo em um carro alegórico. Agora, o que podemos fazer é a quantidade
antiga de DPS, ou seja, o DPS que temos agora e
que calculamos, podemos configurá-lo para
o novo DPS Se não fizermos isso, se
eu mover tudo isso,
se fizermos isso e fizermos
isso aqui e conectá-lo, isso significa que toda
vez que ele for calculado, ele realmente definirá
esse EPS para esse número E não queremos isso porque estamos percorrendo todos
os itens e basicamente
empilhando todos os números E continue multiplicando,
multiplicando e adicionando
a essa variável Em vez de
defini-lo como um valor estático, precisamos adicionar
o valor antigo
do DPS total a esse E obtemos o novo valor aqui, e podemos basicamente
definir o DPS total aqui Agora temos o DPS total. E também talvez possamos obter um número ou não realmente um dólar,
mas mostrar um dólar onde ele continua calculando e
talvez o número esteja sendo exibido incorretamente em
um O que eu quero fazer é que, em vez
de usar o DPS total, vou
criar uma nova variável,
uma variável local chamada DPS total
local Essa é uma variável local que só existe dentro dessa
função em que estamos agora. Na verdade, vou usar
a variável local aqui
para definir a quantidade de DPS Agora, lembre-se de que
as variáveis locais não
podem sair
das funções. Da próxima vez que você tentar
calcular o DPS, esse será zero Essas variáveis locais
serão excluídas toda vez que você
tentar executar essa função. É por isso que você não pode usar isso
fora dessa função. Basicamente, o que precisamos fazer
é que, quando concluirmos o ciclo e tivermos essa
quantidade total de DPS definida, podemos pegar essa quantidade
local de DPS e definir o DPS
total Você pode fazer isso dessa
maneira, ou
basicamente pode fazer isso
diretamente aqui em cima. Isso realmente não
importa, mas posso imaginar que haja uma
caixa de exibição no futuro. Se não estiver tudo bem, basta inserir
o DPS total aqui, em vez do local Eu só vou
fazer isso dessa maneira. E agora temos
o DPS total definido e podemos salvar tudo isso Podemos clicar aqui, ocultar pinos
desconectados, se desejar,
e novamente, reorganizar Agora que temos
o número correto de TPS que estamos fazendo, vamos passar para
a próxima lição e finalizar o dano oral
89. 9.03 Aplicando a quantidade correta de dano: Agora que temos a quantidade
correta de dano calculada
ou o DPS total, vamos passar para a função de
dano automático mais uma vez e vamos fazer a
quantidade correta de dano Agora, em vez de escrever
aqui ou simplesmente arrastar o DPS total
e aplicá-lo aqui, isso está errado, porque você clica em jogar agora e
compra E você pode ver
aqui que não está causando
danos no momento
porque, na verdade precisamos executar essa
atualização, com DPS total Na verdade, vamos fazer isso dentro
do player quando
compramos um item, porque temos que atualizar
o DPS. Na verdade, vou fazer isso antes ou
depois de
gerar o item. E vamos arrastar isso. Vamos adicionar o DPS total da
atualização para garantir que ele seja atualizado
sempre que compramos algo E se eu clicar em Jogar agora
e comprar algo, você pode ver que isso causa
o dano por segundo. O que eu quero fazer agora
é que você pode ver aqui, mesmo o
dano por segundo, então o primeiro deve
ser cinco se eu comprar apenas um. Mas, como você pode ver, não
está causando cinco danos por segundo. Cada segundo está
fazendo muito mais. O motivo é que estamos
executando nosso cronômetro. Se eu voltar ao gráfico de eventos, estamos executando nosso cronômetro em 0,04. Não estamos executando uma vez
por Então, como você pode ver aqui,
cinco pela pluma clara. Agora vamos causar cinco danos por segundo, o
que é correto, mas estamos fazendo
0,04. Na verdade, precisamos fazer alguma divisão para obter o número
correto por segundo Vamos fazer isso dentro do dano
do carro aqui. O que precisamos fazer
é basicamente
dizer que fizemos exatamente como fizemos
antes, onde dissemos aqui, lembre-se de 1/0 0,04 e
isso nos dá 25 Basicamente, esse código
é executado 25 vezes por segundo. Precisamos dividir o DPS
total 25 para obter o
número correto. Vamos fazer isso. Digamos que 1/0 0,04 Aqui, eu vou pegar,
basta clicar com o botão direito aqui,
dividir e escolher aquele Vamos dizer 1/0 0,04 Basicamente 0,04,
temos isso em Vamos realmente promover
isso em uma variável. Vamos promovê-la para
uma variável chamada Auto Damage Tim Time. Agora podemos usar
este dentro
do dano automático
e conectá-lo aqui. E divida por 11 dividido pelo tempo
do cronômetro de danos automáticos, que é 0,04. Isso nos dá 25 Como vimos aqui,
isso nos dá 25. O que precisamos fazer é dividir o DPS
total por 25, que nos dá a
quantidade correta de dano por segundo Agora, ele causará cinco
danos por segundo corretamente. Se eu compilar agora e
clicar em Jogar, e agora clicar em Por
para ver a pena clara, ela causará
cinco danos por
segundo corretamente Basta dizer 75 quando terminar. E na verdade dizia 75 aqui. Porque percorremos
5 segundos e cinco vezes cinco é 25. Isso está correto. Mas eu posso ver que o número aqui está sendo exibido com casas decimais, e eu realmente não gosto disso Vamos consertar isso. Vamos
fechá-lo. Vamos voltar para a interface do usuário. Vamos abrir a barra de saúde. E aqui dentro do
gráfico da barra de saúde, basta conectar o flutuador É por isso que está
jogando aqui com casas decimais quando
você atinge o inimigo Em vez de fazer isso, o que você pode fazer é
arrastar a partir daqui. Se você não conhece as funções, basicamente
pode escrever floats Você pode tentar
examinar tudo isso. Mas basicamente o que
eu quero usar é o piso ou a vedação. Basicamente, o que é
piso e vedação, você pode passar o mouse sobre ele e ver o que diz. Diz que arredonda
para baixo, você pode ver. -1,6 se torna -2,1
0,6 se torna um. Ou isso ou você pode usar o
selo. Acho que vou usar o selo. Portanto, esse basicamente 1.6 se torna dois em vez de um. Vou usar o
Seal, e você pode ver que ele o
transforma em um número inteiro E lembre-se de que um número inteiro
não tem casas decimais. Eu vou segurar Alt. Clique aqui para desconectá-lo e, em seguida, conecte
este. Então, agora temos um número inteiro. E se eu clicar em Jogar e
comprar a pena leve, agora você pode ver que ela causa
cinco danos por segundo Não está exibindo casas
antidecimais, tudo está funcionando corretamente. Mas, como você pode ver aqui,
todos os efeitos, eu não quero que esse
efeito aconteça. Vamos pular para a próxima
lição e corrigir tudo isso.
90. 9.04 Corrigindo o efeito de sucesso: Tudo bem, agora terminamos
com os danos no carro. No entanto, você pode ver aqui que
temos esse efeito. Eu não quero que esse
efeito esteja aqui. Então, precisamos excluir
algo do código. Como você pode ver,
também não está reproduzindo a animação da morte
que está errada. Vamos
resolver tudo isso. Vamos abrir o inimigo porque o dano
está aqui dentro. Agora, o efeito de golpe está sendo reproduzido, porque toda vez
que causamos dano ao inimigo, ele reproduz
o efeito de golpe. Vamos desconectar
isso e ver o que acontece. Eu clico em jogar e
compro alguns danos. Aqui você pode ver que
está funcionando corretamente. No entanto, por algum motivo,
a animação da morte não está sendo reproduzida. Acredito que seja porque estamos repetindo o código várias
vezes e ele continua Agora, se eu simplesmente copiar
esse evento de morte e tentar conectá-lo aqui, agora isso realmente não faz
sentido, porque vamos matar o inimigo instantaneamente
toda vez que clicarmos. E, como você pode ver aqui, essa não é a abordagem
correta. O que podemos fazer aqui
é perguntar se o inimigo
está morto? Vamos tentar aqui. O inimigo está morto?
Porque nós realmente não queremos que ele
passe pelo efeito de golpe. Se eu simplesmente conectar isso e
tentar clicar em Play e comprar alguns tomos, agora parece correto E se o inimigo morrer, você pode ver que o inimigo
está morrendo corretamente. Ok, então tudo está funcionando. Desativamos o efeito de golpe e tudo está funcionando. Agora, se eu clicar em mim mesmo, você pode ver que não
tenho nenhum efeito de impacto. Então, eu preciso corrigir isso
também para o efeito de impacto. Agora, quando eu clico nele, então este é o clique do mouse, podemos adicionar o
efeito de hit aqui em vez disso. E se eu clicar em jogar, agora eu clico com o mouse, ver o jogador, o inimigo bate, mas você também
pode ver que a
animação está reservada Você pode ver aqui quando eu clico, às vezes o inimigo
fica parado. E eu tentei fazer isso de novo. Mas acho que esse é
o segundo que
reservei porque
se eu clicar muito rápido, você pode ver esse A animação da morte tinha um livro. Isso ocorre porque aqui
no is dead, na verdade, ele está reproduzindo essa
animação de morte tanto para o clicker automático quanto Quando você clica, a animação da
morte é basicamente reproduzida duas vezes. E isso vai agendar a
animação porque você continua enviando spam para esse cronômetro aqui e
ele nunca é O que podemos fazer, essa solução
muito simples, é o dano que aplicamos. Como temos algo
chamado tipo de dano, podemos basicamente especificar se
é o dano automático
que está causando dano ou é o clique ou o
mouse que está causando dano? Para fazer isso, muito simples, vamos às plantas E aqui, deixe-me escrever
Click Go to blueprint class, podemos pesquisar o tipo de dano Se você apenas procurar por danos, você pode vê-los
aqui embaixo, tipo de dano. Vá em frente e selecione isso,
basta chamá-lo de dano automático. Agora, não vamos
realmente danificar coisas
dentro daqui. Basicamente, precisamos apenas
dessa classe de blueprint. Você pode pensar nisso como trabalhar com enumerações em
que temos uma lista basicamente usando
essa classe e um essa classe e um Vamos voltar e
vamos até o jogador. Como você pode ver aqui
no player, quando causamos o dano aplicado, você pode definir uma classe de dano, agora podemos configurá-la
para a compilação de dano automático que acabamos de criar O que eu quero fazer aqui é jogar isso sempre que estiver, o dano automático que
está causando o dano. Agora, o que podemos fazer aqui
dentro para detectar
o dano do inimigo é suportar esse
tipo de dano e basicamente pesquisar um nome e
obter a exibição. Agora você pode imprimir uma string
e ver o que ela faz se eu
simplesmente desconectá-la, guardá-la e você pode
escrever uma string de impressão Vá em frente e conecte-o. E
conecte este também. Basta ver o que ele
traz para a tela. Se eu clicar em jogar e comprar
algo para causar danos automáticos, você pode ver que basicamente exibe o nome
do projeto e
diz Auto Damage É assim que a
chamamos. Posso usar isso a meu favor, pegando isso
e pesquisando por conteúdos. Vou ver se essa string contém
algo que estou procurando. E se eu apenas
pesquisar danos automotivos porque fazem parte do
nome da planta Se esse tipo de dano que
eu causei contiver
danos automáticos no nome, posso fazer uma ramificação aqui. Eu também posso sair e conectar isso ou basicamente
o que você pode fazer. Você também pode dizer que, se não quiser
as duas filiais aqui, pode pegar isso
e dizer ouro Você pode basicamente
pegar isso aqui em vez disso e conectar este. Você pode excluir os
outros lingotes. Se o nome contiver danos
e o inimigo estiver morto, você
pode jogar este. Vamos continuar
compilando e salvando. Agora você pode ver se eu
clico em jogar e compro algo aqui, Damage. Você pode ver que tudo
está funcionando corretamente. Nada está se esgotando. Além disso, se eu clicar em jogar e
tentar matar o inimigo, tudo funcionará
perfeitamente como antes. E se eu comprar ou danificar tão
bem quanto clicar no inimigo, nós dois estamos fazendo alguma coisa. Você pode ver que está tocando
apenas uma vez. E também não há dinheiro
no código. Agora sabemos que o código
está funcionando perfeitamente. Vá em frente e reorganize
tudo isso, e vamos
para a próxima lição
91. 10.01 Criando a exibição de nível: O que precisamos fazer agora é
exatamente como nos heróis do Clicker, onde você pode ver o nível
que alcançou Também temos que fazer o mesmo
com esse clicker. Vamos voltar à interface do usuário e adicioná-la
aqui no u principal, na lateral
dos widgets principais Vou apenas
copiar essa parte aqui. Vou
clicar nessa sobreposição e
copiar e , basicamente
, tudo aqui,
controle C. E, em seguida, clicar
no painel de controle
V. Basta colar aqui Agora, para este, vamos
colocá-lo ao lado. Vou clicar
no ponto de ancoragem e colocá-lo à direita
para fazer o deslocamento Vou apenas
escrever zero no X.
A diferença inferior também
é zero Agora você pode ver que está
fora da tela, na
verdade está aqui ao lado. O que precisamos fazer é basicamente o alinhamento aqui para o x, precisamos empurrá-lo para dentro É só escrever um
aqui no alinhamento, agora está na tela O que precisamos fazer agora
é colocar a posição x, basta
afastá-la borda
da tela novamente, assim como antes, você
pode clicar nesta. Se você não se lembra do
que fez, você o afastou 30 pixels. Vamos fazer a mesma coisa
aqui para nos mantermos consistentes. Ao clicar na sobreposição,
vou pressioná-la para 30 no
deslocamento x, na verdade, -30, caso contrário,
ela vai para o outro E 30% de diferença em relação ao topo. E novamente 30
da parte inferior também. Eu também preciso de um texto
aqui em cima onde diz nível. Vamos copiar
esse texto aqui em cima, Controle C e depois Controle
V. Aqui embaixo na sobreposição Vou colocá-lo
acima da caixa de rolagem. Na verdade, precisamos
adicionar uma caixa vertical,
caso contrário, ela ficará no meio. Vamos procurar uma caixa vertical. Vá em frente e adicione-o. Em seguida, adicione o texto e a
caixa de rolagem na caixa vertical. Clicando na caixa vertical, vá em
frente e preencha-a aqui
na horizontal e E também a
caixa de rolagem que você precisa preencher para clicar em Preencher aqui. Agora também precisamos dar um
pouco de preenchimento,
porque, como você pode ver, o texto também
está no topo das bordas E também para o tamanho da frente, acho que vou reduzir um pouco mais
a frente, então talvez escreva
24 aqui em vez disso. Agora, o que
podemos fazer é , basicamente,
aqui
para a caixa de rolagem escrever
zero no preenchimento, porque agora vou adicionar
preenchimento à coisa toda Clicando nessa caixa vertical, vou
dar um preenchimento de, vamos começar com 50 e
ver como fica Ok, isso parece bom. E também preciso aumentar um pouco, talvez a sobreposição que eu
possa ver como ela fica à direita e à esquerda Acho que não preciso
acrescentar muito à
direita e à esquerda. Em vez disso, vou escrever 35. Assim, estou clicando
nessas linhas para removê-las.
Para ver como é. Obviamente, preciso
adicionar um espaçador entre o texto e a caixa de
rolagem aqui embaixo Adicione um espaçador de talvez
15 e o y. Agora temos essa
tela pronta aqui Em vez disso, vamos escrever o nível. Vá e compile e
torne-o um pouco maior. Também precisamos corrigir o tamanho, dependendo do tamanho
da carta de nível. Por enquanto, tudo
está indo bem. Mas vamos agora para
a próxima lição e
criar o cartão.
92. 10.02 Criando o cartão de nível: Para criar o cartão de nível, vamos usar o mesmo método
que fizemos aqui com
o cartão de item da loja. Então, deixe-me clicar com o botão direito aqui, acessar a interface do usuário
e criar uma nova. Vamos chamar isso de carta de um nível. Vamos abri-lo novamente. Vá em frente e adicione um
painel de tela antes de fazermos qualquer coisa Também altere isso para desejado
na tela. Agora estamos prontos. O que eu quero fazer é basicamente que
a carta seja um botão ,
porque haverá vários botões aqui para
mudar o nível. Dependendo do nível para o qual
você deseja mudar, na verdade
vou
copiar esse botão
que criamos aqui. Clique nesta
sobreposição, no botão
e no texto e clique no controle C. Volte para a carta de nível
e controle V aqui Agora, para a sobreposição,
estou clicando em
Dimensionar para o conteúdo e também para o texto Na verdade, antes de fazer isso
aqui para a sobreposição, vamos mudar o ponto de ancoragem
para estar no meio e 0,5 nos alinhamentos
e 00 no x e y. Agora está perfeitamente
centralizado para este Eu só vou
escrever um por enquanto. Portanto, isso exibirá o nível e
o tamanho do botão. Acho que vou reduzi-lo um pouco, não
preciso que seja tão largo. Clicando nele, podemos
reduzir o tamanho em x. Acho que vou
escrever 100 aqui. Apenas certifique-se de copiar esse tamanho de imagem e
colá-la
também no cursor do mouse e no pressionado
. Para essa cor de texto. Vou apenas alterá-lo de
volta para essa cor padrão. Então vá em frente e copie essa cor. Volte para o cartão de nível e
cole-o aqui também. Agora, basicamente, este está pronto. Vamos dar uma olhada em como
fica se eu voltar ao menu principal ou à interface principal. E eu clico aqui, e essa
é chamada de lista de itens. Na verdade, vou
mudar o nome
dessa caixa vertical
para uma lista de níveis. Compilar. Agora vamos
procurar a carta
de nível aqui e
arrastá-la para a lista de níveis. E vá em frente e
duplique-o algumas vezes para
que você possa ver como é O que eu quero corrigir
um pouco aqui é o tamanho
dessa sobreposição Se você pressionar
até que isso desapareça aqui, tente fazer com que seja
assim, o menor possível, mas sem problemas Também a barra de rolagem. Eu quero começar aqui
na borda deste botão. Então, clicando aqui, descendo a barra de rolagem, encontrando o
título da barra de rolagem para o topo. Eu só vou escrever
algo como oito. Isso é bom. Acho que precisamos disso para a
parte inferior também. Não tenho certeza agora. Mas sempre
podemos duplicar isso algumas vezes, dar uma olhada e clicar
na última E também precisamos disso.
Para dar tapinhas na parte inferior Eu também vou
escrever oito. Na verdade, precisa de menos. Vamos escrever em vez de oito, vamos escrever algo
como cinco. Sempre podemos
voltar aqui se precisarmos mudar mais
coisas com a interface do usuário. Mas, por enquanto,
está tudo bem, e se eu clicar em jogar, espero que com o mouse sobre eles,
tudo esteja funcionando. O que posso fazer agora é
excluir
tudo para que fique limpo e tenhamos apenas
essa lista de níveis. Compile, salve tudo
e vamos seguir em frente.
93. 10.03 Definindo o nível: Vamos agora
mudar dinamicamente esse nível
para esse botão Agora, isso vai ser muito
fácil, porque vamos clicar nesse texto e
renomeá-lo para compilação em nível de texto E agora vamos ao gráfico. Agora vamos
fazer isso como
antes com o item da loja. Sempre que o adicionarmos à lista, isso mudará essas informações dentro da construção do evento. Basicamente, ele atualizará o custo
do item e tudo isso.
Novamente, vamos usar
essa construção de evento. A única coisa que precisamos
fazer é basicamente definir
o nível necessário
para definir o número. Agora, quanto ao nível, vamos criar uma
nova variável aqui e usar um número inteiro Vamos chamar isso de um nível. Nós vamos dar a
ele essa informação. Sempre que criamos esse widget, você sempre pode voltar ao controle
do player se
não se lembrar do que
fez com a loja de itens Veja aqui, se você descer, o que fizemos foi basicamente criar
essa variável de informação do item. E clicamos em
expor em spawn e Instance Editable e
pudemos inserir informações Na verdade, faremos
a mesma coisa aqui para a instância de nível
editável, expor na geração Basicamente, podemos
clicar e arrastar isso para aqui desta forma e,
na verdade, terminamos aqui agora. Podemos fornecer
algumas informações sempre que
gerarmos a carta, e faremos
isso na próxima lição
94. 10.04 Desbloqueando o novo nível: Tudo bem, agora vamos dar algumas informações. Novamente, estamos trabalhando com a interface do usuário,
então, na verdade, vou
criar isso no controlador
do Player aqui embaixo. Vamos criar um novo evento personalizado. E vamos chamar isso de
um nível de desbloqueio. Podemos usar este para
desbloquear o nível ou exibir essa
exibição de nível aqui. Sempre que o jogador
bate em um inimigo. Esse nível desbloqueado, ele basicamente cria esse
widget ao lado Assim, podemos ver o nível. Basicamente,
o botão agora tem uma era porque eu o conectei
sem nenhuma informação. Se eu clicar em Jogar, basicamente um botão aparece sempre que
você ultrapassa um nível. E é isso que queremos fazer. Basicamente, ele cria o widget. Qual widget ele cria? É a carta de nível
que precisamos criar. Quanto ao nível, podemos dizer mais
tarde qual nível desbloquear. Então, vou clicar
e arrastar isso até aqui. Quero adicionar esse
botão à minha lista de níveis. Se eu voltar para a interface do usuário, abrir a interface principal, chamamos
isso de lista de nível VB É aqui que queremos
adicionar o cartão. Se eu voltar para o controle de
jogo, posso ver o que tenho.
Eu tenho esse WB principal, então posso adicioná-lo aqui e
pesquisar a lista de níveis.
Vá em frente e clique nele. Agora podemos dizer que adicione dois e você pode escolher este. Adicione a criança à caixa vertical. Basicamente, você pode adicionar esse
widget que acabou de criar à sua caixa vertical e
prosseguir com a compilação Agora estamos começando
com o nível um. E o nível um deve
estar lá por padrão porque neste nível em
que estamos agora, vamos apenas desbloquear o nível um por padrão aqui no
Player Controller. Sempre que começarmos o jogo, vou escrever o nível de desbloqueio e podemos
basicamente escrever um aqui. Estamos desbloqueando o nível um por padrão e clicando em jogar Agora você pode ver que o nível um está desbloqueado e exibido E precisamos desbloquear todos
os outros níveis sempre que
derrotarmos um inimigo. Vamos fazer isso
dentro do modo de jogo,
porque no modo de jogo
, se voltarmos, faz muito tempo que não fizemos
isso aqui no modo de jogo, mas aqui fizemos esse
incremento do nível atual Em vez disso, vamos desbloquear o
nível aqui. Sempre que aumentamos o nível e ainda não o desbloqueamos,
podemos ir em frente e desbloqueá-lo podemos ir em frente e desbloqueá-lo Vamos chamá-lo, está dentro
do controle do player. Então, precisamos do
controlador do player aqui. E podemos pesquisar o nível
de desbloqueio. E vá em frente e leve isso aqui. O que precisamos fazer
aqui em vez de apenas desbloquear esse nível
atual Como na verdade podemos
estar jogando em um nível inferior, se quisermos
entrar em um nível mais alto, não
queremos
desbloqueá-lo novamente. Imagine se eu estivesse jogando aqui
e no nível cinco, mas eu escolho clicar no nível um novamente e
jogar no nível um. Não quero desbloquear novamente nível dois porque eu
já o desbloqueei Precisamos de uma nova variável aqui para salvar o nível anteriormente
desbloqueado Vamos criar uma nova
variável e
chamá-la de nível anteriormente desbloqueado, transformá-la em um número inteiro Aqui,
o que podemos dizer é: o nível atual é maior do que o nível desbloqueado
anteriormente Por exemplo, se
estamos no nível um e o nível anteriormente desbloqueado
é o nível quatro, não
precisamos realmente
desbloquear o nível três e assim por diante Novamente, como já estamos no nível quatro, nosso nível máximo, vamos fazer essa ramificação se o nível atual for
maior do que o nível
desbloqueado anteriormente Se atingimos o
nível cinco e
desbloqueamos o nível quatro
mais cedo, se isso for verdade, vamos pegar esse nível
anteriormente desbloqueado, vamos configurá-lo para
qualquer nível atual,
que agora é o nível
cinco em vez de quatro E podemos simplesmente inserir essas
informações aqui embaixo. Agora, se eu compilar e clicar em jogar, podemos
derrotar esse inimigo Você pode ver que o nível
dois agora está desbloqueado. Se eu derrotar esse inimigo também, nível três será
desbloqueado e assim por diante Então, agora tudo isso está
funcionando corretamente. No entanto, novamente, nós
realmente não revestimos o botão, então não podemos voltar ao nível. E vamos
trabalhar nelas a seguir.
95. 10.05 Configurando o nível atual: O que queremos alcançar
agora é
evitar que o inimigo
apareça, mudando automaticamente
um nível como esse O que queremos fazer é
alterar manualmente os níveis quando
clicamos nesses botões. Vamos continuar e
trabalhar com isso a seguir. Agora, aqui estou eu dentro
do modo de jogo, e vamos reduzir
isso um pouco. Aqui estou abaixo do evento atual de incremento
que criamos anteriormente O que eu quero fazer aqui
é um novo evento personalizado. Vamos fazer isso, vamos chamar
isso de um conjunto de nível atual. Usaremos
esse evento personalizado sempre que clicarmos nos botões
de nível aqui. Vamos definir o nível manualmente definindo
o nível atual. Obviamente, precisamos
do nível atual aqui e temos que defini-lo. E temos que conectar
isso aos eventos, porque então podemos
configurá-lo manualmente em outros lugares. Agora estamos definindo
o nível atual aqui para o nível atual, vou dizer apenas um nível. Definindo o nível que escolhemos
para o nível atual. Então nós, nós, mudamos um nível. Queremos ter certeza de
que o inimigo que está neste nível
atual seja removido,
caso contrário, eles aparecerão um
em cima do outro Lembre-se de que está no controlador da
placa, então vou copiar
o controlador da placa aqui. Obtenha a variável inimiga gerada. Clique com o botão direito do mouse e diga
converter em um get validado. Porque agora podemos
dizer que se é válido, podemos ir em frente e
destruir o Acta Depois de destruirmos o Acta, queremos gerar o novo inimigo Basicamente, eu posso
copiar isso aqui. Eu posso simplesmente copiá-lo, colá-lo e conectá-lo assim. Agora, se o inimigo ainda
não for válido, podemos simplesmente seguir em frente e
gerar o novo inimigo Porque a única razão pela qual adicionamos essa parte é para garantir que o inimigo atual
seja destruído e inimigo
atual não exista. Podemos simplesmente seguir em frente e
gerar o novo inimigo. Agora, na verdade, podemos definir o nível atual
usando essa lógica. Então, vamos compilar
e salvar tudo. Agora vamos voltar para a interface do usuário. Aqui na interface do usuário, se eu clicar
no cartão de nível e
clicar nesse botão, desça até o botão e clique,
clique, clique no sinal de adição aqui
para criar um evento aqui. Sempre que você clica, o botão é chamado por botão e
não está realmente correto. Vou apenas
renomear o botão. Vou
chamá-lo de compilação de nível. Vamos voltar ao nível do botão. Sempre que clicamos nele,
queremos mudar o nível. Queremos chamar esse evento
aqui no modo de jogo. Vamos seguir em frente e fazer isso. Digamos que clique com o botão direito aqui
e diga obter o modo de jogo. Em seguida, vamos arrastar
a partir daqui e dizer obter referência do modo de jogo, aquela
da interface do
blueprint Vamos atacar a partir
daqui e dizer definir nível
atual, porque
é assim que o chamamos. Agora já temos
essas informações de nível
porque as conectamos aqui Vamos conectá-lo assim. Vamos compilar. E
vamos clicar em Comp e ver o que acontece quando
eu mato um inimigo Eu mato o próximo também. Mate o próximo também. Agora vamos ver se
consigo mudar o nível. Se eu pressionar em dois, eu posso
mudar isso, pressionar em um. E eu posso ver que posso
realmente alternar entre os níveis e
tudo está funcionando. O cronômetro é reiniciado
toda vez que eu mudo os níveis, o
que queremos evitar Agora, você tem um bug
aqui, por exemplo. Se você matar o
inimigo no nível um, verá que ele
muda automaticamente para o nível dois. Eu realmente não quero fazer isso. Queremos
mudar os níveis manualmente. Vamos continuar
trabalhando nisso a seguir.
96. 10.06 Prevenindo o surgimento automático de inimigos: Agora, para evitar que os inimigos apareçam
automaticamente ou
passem para o próximo nível, vamos abrir o modo de jogo Mais uma vez, precisamos reescrever ou reescrever este chamado
Increment Current Level, porque lembre-se de que o usamos na morte
do inimigo sempre que
vamos à base inimiga Dentro dos eventos de morte, aumentamos o nível toda
vez que matamos o inimigo Temos que fazer algo sobre isso agora, em vez de
aumentar o nível atual, porque neste jogo
você nunca,
ele nunca o
incrementará automaticamente. Em vez disso, vou
chamá-lo de nível de desbloqueio. Desbloqueamos o nível e depois passamos manualmente
para o próximo nível. Isso é feito em
jogos clicker porque geralmente talvez o próximo nível seja muito
difícil e você precise
voltar para ganhar
mais dinheiro para comprar coisas,
e então você pode ir
para o nível mais recente Você desbloqueou,
é por isso que está feito. Este também é
chamado de nível de desbloqueio. Lembre-se de que isso está
no Controle do Jogador onde adicionamos o nível. Na verdade, vamos
mudar o nome
deste para não nos confundirmos. Em vez de
chamá-lo de nível desbloqueado aqui no controlador do Player, vamos chamá-lo de botão de
nível, UI É aqui que adicionamos
o botão à lista. Em vez disso, vamos chamá-lo assim.
E vamos voltar ao modo
de jogo para
não nos confundirmos agora. É chamado assim. Ok,
esse nível de desbloqueio. Queremos realmente
continuar executando isso aqui. Sempre que o inimigo estiver morto, queremos desbloquear o nível. Mas você só quer desbloquear o nível sempre que
estiver no nível mais recente. Sempre que estou nesse
nível e estou jogando, quero desbloquear o próximo nível. Eu não quero desbloquear o nível se eu estiver jogando o
nível um agora, porque eu já
desbloqueei o nível dois Para evitar isso, vamos
ao modo de jogo e aqui
no nível desbloqueado Antes de fazermos tudo
isso, o que podemos fazer é atingir o nível
atual. Podemos perguntar: isso é igual
ao nível desbloqueado? Em vez deste
, temos o que é chamado de nível anteriormente
desbloqueado Na verdade, precisamos
alterar esse código. Deixe-me renomeá-lo aqui embaixo. Em vez do nível anterior
desbloqueado, vou chamá-lo apenas de Compilação de Nível
Desbloqueado Certifique-se de que o nível
desbloqueado seja um por padrão, porque você
já tem o nível um O nível atual também é um. Temos o nível um
desbloqueado por padrão. Se o nível atual for
igual ao nível desbloqueado, se isso for verdade, queremos ir em frente e desbloquear o próximo nível Porque isso significa que
se o nível atual, que é um agora, for igual ao nível desbloqueado, que é um agora, então estamos realmente jogando
no nível mais recente E queremos desbloquear o nível sempre que matarmos esse inimigo. Vamos em frente e trancar isso. Novamente, queremos
aumentar o
nível atual se isso for verdade. Agora estamos perguntando se isso
é menor ou igual ao nível máximo?
Se isso for verdade. Agora, não
queremos realmente gerar o inimigo porque estamos apenas
desbloqueando o nível, não
estamos mudando de nível não
estamos Em vez de gerar
o novo inimigo, na verdade
vou deletar Exclua isso aqui também. Este também podemos excluir. E esse também. simplesmente ir em frente e conectar isso. Deixe-me arrastar isso para que você possa
ver a coisa toda. Agora, o que estamos dizendo é o nível atual
é igual
ao nível desbloqueado Isso apenas verifica se estamos realmente no nível mais recente Já desbloqueamos anteriormente Se isso for verdade e
tivermos derrotado o inimigo, vá em frente e desbloqueie, ou simplesmente suba o
nível atual e adicione um a ele Quando você faz isso,
neste nível desbloqueado, vamos simplesmente excluir este, porque agora podemos
simplesmente conectá-lo aqui, bloquear ou desbloquear Mas ele
adicionará um botão para o nível mais recente
do nível atual, porque adicionamos um a ele, em vez de ser o nível
um, agora é nível dois e
adicionaremos o botão para o nível dois. Na verdade, isso é suficiente. Agora, estamos basicamente desbloqueando o nível
com este evento E então estamos definindo
esse nível atual
aqui para gerar o inimigo
aqui antes de continuarmos Esse nível atual
está realmente errado, porque queremos definir
o nível desbloqueado aqui Porque é o nível
desbloqueado que
queremos adicionar, não
o nível atual Porque, novamente, não
queremos mudar o
nível automaticamente. Quero permanecer
no nível atual em
que estou agora, mas só quero aumentar
o nível desbloqueado Também aqui embaixo, liste este e vamos colar o nível
desbloqueado Em vez disso, vamos
adicionar um botão para o nível desbloqueado
que está correto Agora, para ter certeza de que
tudo está funcionando aqui, vamos também até
a base inimiga e também garantir que
o código esteja correto. Agora estamos no evento da morte, e aqui no evento da
morte
queremos desbloquear
o nível correto. E lembre-se, o
nível desbloqueado só funcionará
se o nível atual for
igual ao nível desbloqueado Estamos nos certificando de
que estamos no nível
mais recente, no nível desbloqueado, mas também precisamos ter
certeza de que queremos
definir o nível atual, pois isso está gerando Vamos voltar para
a base e
chamar o nível atual definido. Vamos conectá-lo aqui. Conectado aqui também. Vamos pegar o nível atual, e essa é a variável aqui. Vamos definir o
nível para o nível atual. Vá em frente e compile agora, o nível atual mudará sempre que você
pressionar o botão Se você acessar a interface do usuário, acessar o código do nível e
pressionar esse botão
, o valor do nível
atual será alterado. Isso mudará
esse nível atual definido. Vamos tentar
isso. Vamos clicar em Jogar. Eu vou matar um inimigo. Agora podemos ver que
não está trocando inimigos automaticamente porque
basicamente, se eu voltar ao código, estamos matando o
inimigo e depois gerando o inimigo
para o nível atual Lembre-se de que criamos essa função, estamos apenas tomando
o nível atual que não estamos incrementando Só aumentaremos
o nível desbloqueado em um se estivermos
no nível um se estivermos
no Então, se eu voltar e
continuar jogando, posso ir para o próximo. Agora eu posso matar esse inimigo e
desbloquear o próximo nível. Eu posso voltar para o nível
um, dois ou três. Então eu posso voltar para um, por
exemplo, matar esse inimigo. E posso continuar
recebendo dinheiro
desse inimigo até sentir sou forte o suficiente para
comprar algumas coisas aqui. E então eu posso ir para o
próximo nível e posso ver que você pode trocar de
inimigo como quiser. E só
adicionará um botão se você derrotar o inimigo mais recente. Tudo bem, então terminamos
aqui. É assim que você evita a desova
automática. Apenas verifique
se você cometeu
um pequeno erro, verifique se
o nível atual é igual
ao nível desbloqueado E também é o nível
desbloqueado que você está adicionando aqui, adicionando, compilando,
salvando tudo e vamos passar
para o próximo
97. 10.07 Adicionando ícones de crânio aos chefes: Vamos tornar o jogo um
pouco mais interessante. Quero adicionar um
ícone de caveira aos ônibus. Lembre-se de que, dentro
da tabela de dados, selecionamos que alguns
dos inimigos são ônibus. Este, o Mago, por
exemplo, e o cavaleiro Rogan. O que eu quero fazer é adicionar um ícone de caveira à exibição
do nível Vamos até a interface do usuário, abrir a carta de nível, na verdade, no
designer. Vamos começar por aqui. Vamos adicionar uma imagem. Vamos arrastar essa
imagem até
a sobreposição dessa imagem Vamos transformá-lo em um ícone de caveira. Lembre-se de que podemos realmente usar aquele nos objetos
ativos. Aqui estão os sprites. Eu só vou usar a textura ou
o crânio. Se você apenas procurar por uma caveira e
conseguir encontrá-la aqui, vou usar a
textura em vez do sprite Vá em frente e edite o tamanho. Vamos tentar 50 por 50, bem
como a posição dele. Vou até aqui
para transformar e editar a
tradução para ela. Por exemplo, para o x,
podemos dizer menos seis, e isso será dessa maneira, e depois menos seis, e isso aumentará dessa Zoom, acho que parece bom. Sempre podemos mudar
isso, mas parece bom. Agora, esse ícone aqui, por padrão, eu quero deixá-lo oculto
porque eu não
quero que ele apareça aqui
para cada botão. O que eu quero fazer é
aqui na visibilidade, vamos configurá-la para uma
compilação oculta agora no gráfico, vamos adicioná-la apenas aos
inimigos que são ônibus Lembre-se de que, dentro
daqui, o que podemos fazer é sempre
pedir informações sobre o inimigo. Precisamos primeiro do nome do inimigo. Temos o nome do inimigo? Na verdade, se você se
lembra na biblioteca, se eu voltar às bibliotecas
e colocá-la,
se você disser obter informações de nível, lembre-se da estrutura de obter informações de
nível. Se eu abrir a estrutura de informações do
nível, você terá o nome do inimigo
que aparece lá Você pode realmente usar
isso a seu favor. Então, você pode dizer, obtenha informações de nível. Já temos o nível aqui. Podemos pegá-lo e separá-lo. Quando nos separamos,
temos o nome do inimigo, que podemos inserir aqui. Clique aqui, Oculte os
pinos não conectados. Em seguida, você pode arrastar a partir daqui. E divida-o também. A partir daqui, agora você
tem o tipo de inimigo. Vamos arrastar a partir daqui.
Digamos que isso seja igual? E não vamos
selecionar esse. Vamos selecionar essa
porque é uma enumeração Este é igual a um chefe. Mais uma vez, clique neste.
Esconda os pinos desconectados que podemos arrastar daqui
agora e faça uma Se é verdade que é um chefe, queremos simplesmente
exibir essa imagem. Vamos tirar essa imagem. Agora, não o transformamos em uma variável. Vamos mudar o
nome dela para imagem. O crânio é variável. Agora podemos ir para o gráfico. Podemos retirá-lo e
dizer definir visibilidade. E defina a visibilidade dela. Podemos configurá-lo para lembrar,
não para ser testável. Ele não bloqueia
o botão porque visível
bloqueará os cliques do mouse Portanto, não podemos clicar no botão. melhor testar o que é testável.
Deveria ser isso. Se eu compilar e
clicar em reproduzir, agora você verá que não há nada aqui Se eu comprar algo aqui para matar o inimigo muito mais rápido, podemos mudar para os níveis, ver que tudo está
funcionando perfeitamente. Se eu mudar para o nível quatro, e ele aparecer
aqui no nível cinco, você pode ver que há um ícone
e está funcionando perfeitamente. Vou apenas tornar a interface um pouco maior para
que ela não saia. Eu apenas minimizo isso. Eu volto para a interface principal aqui, deixe-me adicionar um nível. Se eu apenas adicionar um gato nivelado, posso ver o que estou
fazendo assim. Agora podemos clicar na
sobreposição e
torná-la um pouco maior para que ela
não corte nosso ícone de caveira Compile e jogue.
E aqui vamos nós. Tudo deve
funcionar bem. Vá em frente e exclua este,
caso contrário, ele vai errar. Como uma coisa extra.
Antes de terminarmos, vamos também adicionar um ícone de caveira ao lado
do nome do chefe No nome do chefe, está
aqui nas informações do inimigo. Então, basicamente,
precisamos adicionar um aqui. Assim como antes,
vou pesquisar uma imagem. Na verdade, precisamos de
uma caixa horizontal porque não temos
nada aqui. Vou
procurar primeiro uma caixa horizontal. Adicione aqui embaixo.
Pesquise a imagem. Adicione-o também para a imagem. Assim como antes, vou
alterá-lo para a pontuação, um tamanho é vamos dirigir 60 por 60. Novamente, acredito
que era 60 por 60, ou talvez fosse 50. Se eu voltasse
aqui, seriam 50. Vamos fazer 50 por 54. Agora deixe-me adicionar esse texto
na caixa horizontal. Esses dois elementos
estão aqui dentro. Clicando na caixa horizontal, vou fazer a
âncora no meio, 0,5 nos alinhamentos para
ter certeza de que está no E também a posição
é zero a zero, então está perfeitamente
no meio. O tamanho do conteúdo é verdadeiro. Basicamente, altere
o tamanho da caixa horizontal para
qualquer conteúdo que ela tenha. Ok, então agora temos isso
aqui. Agora, para o ícone. Vou apenas adicionar pouco de preenchimento na
parte inferior, talvez dois Nós o empurramos um pouco para cima. Na verdade, em vez de um preenchimento, eu realmente quero escrever zero Na verdade, eu quero
mudar a tradução aqui
embaixo. Então você pode mudar isso. Em vez de adicionar um preenchimento, você pode alterar a tradução Eu ia dizer menos dois, então foi empurrado um pouco para cima Ok, assim como antes,
vou deixar a visibilidade oculta e acessar o gráfico aqui para
atualizar as informações do inimigo. Assim como antes. Agora
temos o nome do inimigo, então vou apenas
dizer para obter informações sobre o inimigo. Já temos o nome do inimigo. Então podemos acabar com isso
, assim como antes, podemos pegar o tipo de
inimigo e dizer: isso
é igual a nós? Se for esse o caso, vá em frente e mostre esse ícone
novamente, assim como antes. Vamos mudar o
nome para image skull. Vamos definir que é variável. Vamos pegar a imagem do
crânio e definir a
visibilidade para ser testável Mais uma vez, clique neste. Escondeu os pinos desconectados. Acerte isso, talvez um pouco mais perto. Vamos experimentar
e ver o que acontece. Eu clico em jogar no jogo. Eu compro alguns desses para que eu possa danificar muito mais rápido
e avançar para os níveis Agora, aqui está o inimigo, e você pode ver que o
ícone apareceu. Está funcionando perfeitamente. Mas você pode ver aqui,
na verdade eu acabei notar que esse nome
está empurrado para o lado. Não está no
centro desse inimigo. Isso ocorre porque o ícone
da caveira está realmente lá. Está apenas escondido. Em vez de colocar o crânio como
oculto nesse caso, nesse caso, tudo bem
porque simplesmente está lá Este está, na verdade,
divulgando o nome. O que podemos fazer é definir
em vez de oculto, você pode configurá-lo como retraído É como se você minimizasse um menu. Não está mais na sua visão. Configurá-lo para colapso
deve funcionar perfeitamente. Agora, se eu mudar de nível rapidamente só para
exibi-lo para você, agora este morre. Se eu for agora, você pode ver esqueleto estava aqui antes
do texto começar aqui Agora está começando
na posição correta. O colapso é muito melhor
de usar neste caso. Ok, legal. Então, agora temos
esse crânio exibido Parece mais legal do que antes. Além disso, posso ver que o alinhamento
está se alongando um pouco . Em vez disso, vou
colocá-lo no meio Vá em frente e compile,
salve tudo e vamos continuar
98. 10.08 Adicionando ícones a cartões de compras: A próxima coisa que quero
fazer aqui é também adicionar os ícones dos carros,
dos gatos da loja. Mas como você pode ver
aqui, parece bom. Mas acho que ficará melhor se tivermos um ícone
ao lado desse texto Na verdade,
vamos acrescentar isso. Vamos abrir a
loja aqui. Vamos adicionar o ícone
ao lado desse texto. Agora está dentro de
uma caixa ou de uma caixa vertical. Precisamos de uma
caixa horizontal aqui embaixo. Eu apenas procuro novamente
por uma caixa horizontal e a adiciono aqui embaixo,
logo acima do texto. Adicione o texto à caixa
horizontal. Em seguida, adicione também uma imagem
à caixa horizontal, logo acima do texto aqui. Agora, para esse ícone, vamos
transformá-lo no ícone do item. Mas, por enquanto, basta
ir em frente e selecionar um ícone aleatório para o alinhamento. Vá em frente e coloque-o
no meio para que não se estenda até o
tamanho desse ícone Acho que 32 por 32 é bom. Acho que não
precisamos de mais do que isso. Eu provavelmente preciso de um pequeno
espaçador entre eles. Faça com que pareça melhor,
basta adicionar o x, talvez quatro e
assim por diante. Sim, parece bom. Ok, vamos
clicar nessa imagem, chamá-la de item de imagem. Vamos mudar isso
para É variável. Agora vamos ao gráfico
e fazer coisas com ele. Agora, aqui no gráfico de eventos, vamos dar uma olhada em onde
podemos fazer isso da melhor maneira. Temos o item de atualização no local I. Temos a atualização, o custo. Também temos a construção do
evento. Sempre que esse cartão for adicionado, esse será o melhor lugar. Sempre que a carta é adicionada a
partir do controle do player, nós também adicionamos instantaneamente o ícone. Deixe-me afastar isso. Depois de atualizar o nome do texto, quero pegar o ícone da imagem
e, digamos, definir o pincel. É assim que você define uma textura ou uma imagem
dinamicamente. Defina o pincel a partir da textura. Vá em frente e selecione este. Isso basicamente significa
definir essa imagem a partir de uma imagem que eu
importei para esse mecanismo. Defina o pincel a partir da textura. Agora, qual textura você precisa? Acho que já temos os
ícones
e, na verdade, não temos.
Vamos adicionar isso. Só temos o
sprite aqui embaixo. Agora, para continuar, precisamos adicionar essa miniatura às informações do item Vamos voltar, ir até os itens e,
na verdade, adicionar
informações sobre a estrutura do item aqui. Vamos adicionar uma nova variável
chamada thumbnail nail. Vamos adicionar essa ou
alterá-la para uma textura dois D, que é apenas uma textura que
você importa ou uma imagem. E vá em frente e selecione a referência do
objeto. Vou mover isso para cima logo acima da miniatura
ou do nome do item Lembre-se, agora você precisa
acessar o arquivo do Google Sheets. Agora, aqui,
vou ver as informações do item aqui à direita. Vou clicar com o botão direito do mouse aqui e inserir a
coluna à direita. Chame isso de miniatura. O mesmo que a variável. Agora podemos adicionar a
miniatura aqui,
referências . Agora
vamos voltar para, vamos ver se os
temos aqui nos objetos,
na verdade, apenas
aqui nas texturas,
você pode simplesmente
usá-los objetos,
na verdade, apenas
aqui nas texturas, como referências, porque esses são os itens O que eu quero que você faça
é abrir a mesa. A primeira é
a pena clara. Novamente, assim como antes da
luz, clique com o botão direito do mouse na referência. Volte para o seu
documento. Colado em próximo é clicar com o botão
direito aqui, referência colada para a tocha E vá em frente e faça
isso para todos eles. Esse foi o último para mim. Vou
continuar e clicar em Baixar
arquivo como
arquivo CSV novamente. Em seguida, vou importar
este novamente para
minha
pasta de tabelas de dados. Vá em frente e transporte-o, e você deverá ter
todas as informações. Agora vamos voltar e
trabalhar e continuar o trabalho. Vamos abrir o cartão de
itens da loja mais uma vez. Agora temos essa miniatura. Podemos
inseri-la aqui nesta miniatura. Vou clicar para criar um nó de redirecionamento como este
e clicar E oculte
os pinos conectados, compile e salve. Agora tudo
deve estar funcionando. Se eu clicar em jogar, agora você pode ver que todos os ícones
foram adicionados. Novamente, preciso tornar esse
painel um pouco maior para que ele
não seja cortado se eu apenas adicionar um cartão a ele para que eu
possa visualizá-lo melhor Portanto, se eu adicionar um
cartão de item da loja à lista de itens, posso clicar na caixa vertical e
aumentá-la um pouco aqui. Então, não é
cortar assim. Em conformidade, agora você pode ver
que tudo está bem. Parece muito melhor
se você tiver um ícone ao lado dos itens da loja. Sim, é assim que você
os adiciona e deve ser isso. Vá em frente e economize.
Apenas certifique-se novamente de clicar neste ícone. Certifique-se de ter dito que a visibilidade
não é testável Não bloqueie nada. Sim, vamos
continuar com a próxima.
99. 11.01 Adicionando o medor do mouse à loja: Tudo bem, agora é hora adicionar algo com
o cursor do mouse. Até agora temos
trabalhado com os itens, mas agora vamos fazer
algo com o cursor do mouse. Agora, você clica
no inimigo e causa
15 de dano por clique.
Isso é bom. No entanto, sempre que você
avança nos níveis, digamos que temos
esse clicker automático e
progredimos nos Você percebe que os inimigos ganham muito
mais saúde do que antes. 15. Na verdade, os danos não
afetarão muito eles, especialmente se estivermos,
por exemplo, no nível 20, precisarmos melhorar o dano do cursor. Vamos seguir em frente e fazer isso.
Mas primeiro temos que adicionar o item de clique
à loja para que possamos comprá-lo
e atualizar o cursor. Vamos
fazer isso primeiro. A propósito, você pode tentar
fazer isso sozinho, se desejar. Essa é uma prática muito boa. Vamos tentar fazer isso juntos. Se você não tiver certeza
de como adicionar um, vamos abrir as enumerações. E lembre-se de que temos todos
os itens listados aqui. Vamos adicionar uma nova enumeração e chamá-la de um clique do mouse Vou apenas adicioná-lo como o primeiro item porque
quero que ele fique no topo. Este é o clique do mouse.
Vamos fechá-lo. Em seguida, precisamos ir
para a tabela de dados. Abra suas
planilhas do Google mais uma vez , aqui, vamos
abrir as informações do item. Eu quero adicioná-lo
como o primeiro item. Vá em frente e chame isso de
clique do mouse. Clique aqui também. Agora, para a miniatura
que forneci nos materiais do
curso, se você voltar aos ativos,
aos objetos
e às texturas aqui,
forneci os materiais internos
do Se você acessar objetos, use este cursor para importar este, clique com o botão
direito do mouse sobre ele, converta-o ou aplique papel nas configurações. Agora, para isso, clique com o botão direito e transforme-o em um sprite de sprite E arraste-o para os
objetos aqui. Agora clique nos objetos. Agora temos esse sprite configurado. Vamos
salvar tudo isso. Vamos voltar para a tabela de dados. Agora, para a miniatura,
vamos para as texturas, clique com o botão
direito do mouse, Para essa edição de miniatura, o item é chamado de
clique do mouse para o Essa é a enumeração. Lembre-se de
adicioná-lo à enumeração. Também precisamos de uma cláusula para isso porque precisamos
gerá-lo no chão Na verdade, vamos ver as
plantas e fazer isso. Agora, se eu for para Itens e
for para a base do item, posso clicar com o botão direito do mouse na base do item, Criar um plano secundário Claus Chame isso de clique do mouse. E vamos abri-lo. Vamos clicar nos componentes de
renderização e adicionar o único
sprite no cursor Compile e salve. Lembre-se de que também adicionamos os nomes dos
itens para cada item. Aqui você pode ver o nome do item, escrevemos isso, lembre-se,
para cada item. Então você tem que
escrever isso, caso contrário, ele não
será lido
na tabela de dados. Lembre-se de clicar nos padrões da
classe aqui. Vamos chamá-lo de clique do mouse. O mesmo que você o
chamou dentro da tabela de dados. Agora criamos isso
e, para obter uma referência a ele, assim como antes, vamos copiar este. Cole aqui. Vou apenas renomear
essa pena clara
para clicar no mouse E esse
também. Clique com o mouse. OK. Agora, para o sprite, novamente, vamos aos objetos ativos Podemos clicar com o botão direito do mouse
nesse sprite e
copiar a referência
colada Agora temos
que definir quanto custa. Digamos que custe talvez
dez ou algo parecido. Sempre podemos alterá-lo mais tarde. Agora vamos clicar em Arquivo,
baixar, baixar o arquivo
CSV novamente. Agora vou arrastá-lo
para a pasta de tabelas de dados. Novamente, arraste-o e vá em
frente e salve tudo. Apenas certifique-se de que todas
as informações estejam corretas
aqui. Tudo parece bom. Agora, se eu clicar em Jogar, posso ver meu clique do mouse. E eu também posso ver isso aqui, eu posso clicar em Por. No momento, está dizendo zero
para o custo desse item. Algo está errado aqui. Lembre-se de que,
aqui nas informações do item, na verdade não
estamos mais usando
esse custo de moedas. Não
nos confunda mais. Vamos também acessar as informações do item e remover o custo das
moedas daqui. Vá em frente e salve tudo agora vamos garantir que o
removamos da tabela de dados. Clique com o botão direito do mouse e exclua a coluna, aqui também está. Vamos ver o custo dos itens agora, porque é aqui
que realmente temos o custo. Vamos alterá-lo. Deixe-me clicar com o botão direito aqui e adicionar uma nova
coluna à direita. Ligue para isso, clique com o mouse aqui. Basicamente, digamos
que comece com 18, só porque eu quero
um número
diferente de todos os outros, digamos que seja igual a isso um vezes 1,2. Vamos arrastá-lo
até o Obviamente, isso
vai exigir muito
trabalho no design de jogos se você quiser que todos esses
números façam sentido, mas por enquanto estamos apenas testando. Vou apenas
baixar esta tabela de dados de
custos dos itens aqui no motor. Vamos
importá-lo novamente. Vá para tabelas de dados, importe o custo dos itens. Agora não é possível encontrar a propriedade do
clique do mouse no custo ST. Vamos realmente dar uma
olhada nisso juntos. Se eu clicar em OK,
vou para o custo do STM. Se eu vou para a interface do usuário, na verdade, para a estrutura, abro o custo do item. Isso ocorre porque estamos perdendo essa variável
aqui dentro. Deixe-me adicionar um novo. Chame isso de clique do mouse, transforme-o em um número inteiro Basta arrastá-lo até aqui. E vá em frente e clique em Salvar tudo. Agora, o custo desse item também. Lembre-se de que, no player,
se eu for até o player, temos uma função
chamada, mas custa. Se eu clicar nele, teremos que
vinculá-los,
caso contrário, não funcionará
como antes. Vá em frente e conecte-os. Compile se quiser
ter certeza de
que não perdeu
nenhum outro lugar Além disso, clique
com o botão direito do mouse neste item Custo, vá em frente e clique em Encontrar
referências, só para ter certeza. E clique no pequeno ícone, e isso mostrará todas as referências
que você usou para ele. Clicando neste, nós realmente
não fizemos
nada aqui. Tudo deve
funcionar bem. Agora vamos voltar
às tabelas de dados e
vou reimportá-las, para que
fique correto assim. Agora está tudo bem. Agora
vamos clicar em play. Agora, meu motor travou e geralmente
acontece que,
às vezes, quando você edita coisas dentro
de uma estrutura e tenta clicar
em reproduzir, ela trava Mas quando você abre pela
segunda vez, deve funcionar. Agora, se eu clicar em Jogar e
às vezes você puder ver
coisas assim, você pode realmente corrigir isso. Às vezes, ele precisa ser atualizado. Se você abrir o
controle de reprodução e clicar no arquivo, atualizar todos os nós e
clicar em reproduzir novamente,
ele deverá funcionar Não sei por que isso acontece
, às vezes também
acontece com meus
outros jogos. Mas você pode sair e atualizar
e funciona muito bem. Ok, agora você pode ver que o clique
do mouse está funcionando bem. E se eu comprar mais e mais
, também está funcionando bem. Está me mostrando o preço. Agora precisamos adicionar um
ponto de amplitude para esse clique do mouse. E vamos fazer isso
na próxima lição.
100. 11.02 Adicionando o ponto de spawn do medor do mouse: Para adicionar o mouse.
Então, ponto de desova, vamos fazer isso aqui Vamos abrir os pontos de desova. Agora temos os pontos de geração desse
item, então não precisamos realmente
criar filhos, lembre-se de que usamos apenas este Podemos clicar no primeiro
e garantir que seja um clique do mouse. É por padrão porque
reorganizamos a
enumeração Ao clicar com
um clique do mouse
, abra sua enumeração
e certifique-se de
que tudo esteja
correto Acredito que um deles esteja errado porque
ainda temos dez e temos o
clique do mouse como um
deles, falta um desses itens. Apenas certifique-se de
clicar em todos eles e verificar
se estão corretos. Na verdade, vou
copiar este aqui. Deixe-me ter certeza de que está à mesma distância de todos os outros e
é assim. Eu me certifico de que este seja
um clique do mouse. A próxima é uma pena clara. E basta examiná-los aqui. O próximo é Torch e assim por diante. Ok, agora eles estão
na ordem correta. Vá em frente e salve todos
eles quando estiverem. Agora, se você clicar em jogar
e tentar
gerá-lo, ele não aparecerá Lembre-se de
que definimos algumas das quais precisamos cuidar. Se você abrir o modo de jogo e lembrar do que fez
com os pontos dos itens, criamos essa função
aqui chamada definir itens em pontos e obter pontos de itens. Vamos abrir este,
Definir pontos de itens. Precisamos criar um
para os cliques do mouse. Vou duplicar este. Vou chamá-lo de pontos de clique
do mouse. Vá em frente e adicione-o aqui. Vamos garantir que não
tenhamos mais nada. Vamos compilar. Vamos até Obter itens, fixar
pontos também. Deixe-me copiar e
colar isso aqui. Exclua este e, em vez disso
, adicione os cliques do mouse.
Vá em frente e conecte-se. Compilar. Eu acredito que
deveria ser isso. Clique neste, você pode
ver que está funcionando corretamente, assim como os outros itens. Agora isso está funcionando muito bem. Agora, há um problema
com isso, porque ele
não deve mostrar zero DPS e também não deve mostrar nenhum DPS no
momento O problema com
este é que, no momento, o mouse não
causa realmente dano por segundo, o mouse causa dano por clique. Em vez de mostrar
dano por segundo, precisamos mostrar
dano por clique. No momento, está dizendo zero
DPS porque, nas informações do item, não
especificamos quanto dano por
segundo ele deveria Por exemplo, você poderia dizer cinco. E se eu clicar em Play, você pode ver que diz cinco. Mas, novamente, não estamos realmente interessados em danos por segundo, estamos mais interessados
em danos por clique. Então, vamos seguir em frente e corrigir
isso como a próxima coisa.
101. 11.03 Exibindo o texto de dano corretamente: Para que o texto
seja exibido corretamente? Obviamente, precisamos acessar
a interface do usuário agora e dar uma olhada na dica de ferramenta.
Vamos entrar aqui. Vamos abrir o DPS agora apenas para garantir que o texto seja exibido corretamente Agora, quanto aos danos,
vou
escrever algo como
40 para ter certeza que estou vendo
é falso ou estático. I. Estou me certificando de que,
ao clicar em jogar, estou realmente vendo
a coisa real aqui apenas para ter certeza de
que não tenho uma era. Agora, aqui no gráfico, precisamos ter certeza de que diz
que, para o mouse, cada clique do mouse causa
cinco pontos de dano por clique. E atualmente está
causando, por exemplo, cinco de dano por clique em
vez de DPS No primeiro texto, lembre-se de
como eles são chamados. O primeiro é
chamado, fornece DPS e o segundo fornece a quantidade
de DPS Agora, essa, na
verdade, não precisamos mudar, só
precisamos dar a quantidade de
DPS e, fazendo a quantidade de DPS
, vamos voltar Este fornece a quantidade de DPS. Em vez de dizer isso, vou desconectá-lo Vou direcionar a partir
daqui e dizer Selecionar. Agora precisamos usar
um nó de seleção. Agora, o
que vamos selecionar? Vamos selecionar se isso é um clique do mouse ou não. Lembre-se de que temos
as informações do item aqui. E se eu simplesmente esconder essa miniatura porque não
precisamos dela Mas eu mostro este item que podemos
arrastar daqui e dizer enum
igual, igual se for igual a um clique
do mouse e
conectá-lo aqui embaixo Agora, o que podemos dizer é que lembre-se de que precisamos
usar um formato de texto. Novamente, vou arrastar
aqui e dizer formatar texto. Também vou usar um aqui
embaixo, formatar texto. Agora, para este, se não
for um clique do mouse, ele deve dizer a mesma
coisa que disse antes. Vá em frente e cole em Enter para ver isso. Agora, esse é o
valor do DPS, assim como antes. Na verdade, vou
arrastar isso de volta para aqui
e, na verdade,
vou
afastar isso para ter um
espaço como este. Agora, para este, se é
verdade que é um clique
do mouse, o que eu quero dizer aqui
é que, em vez de DPS, digamos apenas os valores dos danos Digamos que danos por clique. Agora vou dizer
dano por clique. Basicamente, o dano per é esse DPS aqui. Neste DPS, podemos
escolher definir a quantidade de dano que ele deve causar ou causar sempre que
você compra na loja Se eu apenas compilar
e voltar à minha tabela de dados apenas para ter
certeza de que está correta, abra as informações do item que realmente não
custam o item Só vou
dizer que isso me causa 25 de dano cada vez que eu atualizo. E também
certifique-se de acessar suas planilhas do Google
e alterá-las aqui,
caso contrário, estará errado. Toda vez que você
importar essa tabela, verifique se ela é,
por exemplo, 25 aqui. Agora, dentro daqui,
vamos voltar para
a dica de ferramenta e continuar Isso deve estar correto.
Eu posso deletar este e posso empurrar tudo para o lado para que eu possa
exibi-los. Tudo bem. Eu apenas
reorganizo as coisas bem Agora isso está correto.
Agora vamos continuar. A próxima coisa é essa mensagem
de texto fazendo DPS. Antes de você poder arrastar
a partir daqui e dizer Selecionar. Então, pouco antes de formatar
para o primeiro, formate o texto, formate o sexo
para o segundo. Novamente, ele deve escolher se
é o clique do mouse ou não. Vou arrastar isso
para cá, como antes. Se não for o clique do mouse, vamos adicionar esse que tínhamos antes.
Nós não mudamos isso agora. No entanto, se
for o clique do mouse, o que queremos dizer é a
quantidade total de danos aqui. Por exemplo, essa é a quantidade
total de danos. Este basicamente dirá
que atualmente está causando,
por exemplo, 60 de dano. Você também pode chamar isso de dano por clique se
quiser permanecer consistente. Vamos chamar isso de dano por clique. Agora, quanto ao dano, não
é realmente esse DPS que adicionamos aqui, mas é mais correto adicionar a variável de dano
do cursor Lembre-se de que, dentro do player, se eu voltar, isso foi
há muito tempo. Na verdade,
desde o início do curso, criamos esse flutuador de
dano do cursor aqui, podemos realmente adicionar este Volto à dica da ferramenta, já
temos o
player, se eu conseguir arrastar
do player e dizer dano ao
cursor. Agora podemos adicionar isso aqui e deve
funcionar bem. Novamente, vou deletar
este para esse número. Novamente, conecte-o aqui
para que não esteja errado. Isso era o que tínhamos antes. Eu só vou
reorganizar as coisas bem. Tudo bem, faça isso e vá em frente, compile
e salve tudo isso Vamos clicar em Jogar e ver o que acontece se eu passar o mouse sobre ele. Diz que cada clique do mouse
causa 25 de dano por clique. Você também pode chamá-lo de DPC, acredito que seja um termo,
na verdade, em vez de DPS, você pode chamar de DPC por danos
por clique se comprar Você pode ver que
não está realmente dizendo
nada e isso é porque não o estamos atualizando como todos
os outros que estamos fazendo. Na verdade, essa é a próxima
coisa que temos que fazer. Precisamos atualizar
o que está sendo feito atualmente, porque na verdade
está causando 25 de dano por clique. Mas você não pode
vê-lo porque
não está atualizando o
texto abaixo dele Você não está atualizando essa variável de dano
do cursor. Vamos para a
próxima lição e fazer isso.
102. 11.04 Atualizando o dano do medidor do mouse: Agora é hora de atualizar o mouse ao
clicar em jogar e comprar. o clique do mouse
aqui, você pode ver que está causando danos
automáticos, que não deveria
acontecer porque o
clique do mouse é basicamente
onde você clica no inimigo e
deve causar mais danos Vamos continuar e melhorar o dano do mouse em vez
do DPS automático Vamos encerrar isso. E fizemos isso
dentro do player. Se você abrir o player e voltarmos ao gráfico
do evento, se quiser dizer organizar,
você sempre pode
clicar com o botão direito do mouse aqui e fechar as abas à direita para que não precisemos
ver tudo
isso Quando compramos o
M, lembre-se que o que fizemos anteriormente foi
atualizar o DPS total, que era essa função aqui
dentro Em vez de atualizar
o DPS total quando compramos um clique do mouse, vamos realmente fazer isso aqui Em vez disso, queremos atualizar
o mouse. Aqui está a direita
nas funções, podemos clicar no sinal de mais. Vamos criar uma nova função
chamada aumentar o dano do cursor. A única coisa que ele vai
fazer aqui na entrada adicionar um flutuador e
chamar isso de dano a adicionar Vamos reduzir o dano no cursor que criamos anteriormente. Vamos adicionar mais o dano que queremos adicionar. Então, vamos colocá-lo de
volta nessa variável. Então, agora temos esse
novo dano no cursor. Essa é basicamente a função
dessa função aqui, é que ela apenas adiciona a
quantidade de dano que queremos
adicionar ao dano do cursor e a
define aqui como um novo valor. Vamos voltar ao gráfico de
eventos e usar
esse para aumentar o dano do cursor em vez do DPS total do mouse Agora, para saber se é do mouse que estamos
falando ou não, lembre-se que aqui
na estrutura do item, podemos clicar nas informações do item e ocultar
tudo por enquanto. Aqui no item, lembre-se que na enumeração
fizemos a enumeração de
cliques do mouse,
eu vou fazer, clique
aqui e vou arrastar a partir daqui E então eu vou dizer enumeração
igual, igual. E então vá em frente e selecione
este mouse, clique aqui. Se essa enumeração for
igual ao clique do mouse, se esse item do qual estamos
falando for igual ao Da forma como sabemos que,
dentro da tabela de dados, é
aqui que você define
suas informações. Se você abrir as informações do item e abrir o clique do mouse, lembre-se de que definimos o item como
um clique do mouse aqui, para que ele saiba
o que você escolheu. Se você selecionou
algo errado aqui, você receberá um
erro se o item aqui for um clique do mouse e
pudermos arrastar a partir daqui e
, em seguida, criar uma ramificação. Agora vou adicioná-lo.
Depois de gerar o item, na verdade
vou
desconectar este E vamos arrastá-los até aqui. Agora, antes de atualizarmos a interface do usuário, porque precisamos fazer isso
antes de atualizarmos a interface, a interface do usuário é atualizada corretamente. Precisamos adicionar as informações, geraremos o item
e, em seguida, conectaremos essa ramificação Ok, este é o clique do mouse. Se o item for o clique do mouse, queremos aumentar
o dano do cristal. Caso contrário, queremos
atualizar o DPS total. Em seguida, lembre-se de
conectá-los novamente aqui. Se você quiser ficar um
pouco mais organizado, você sempre pode clicar duas vezes
neste em um nó de
rota traseiro como este. E você pode pegar isso e conectá-lo aqui,
para que fique melhor. Agora, queremos adicionar o
dano que queremos adicionar aqui. Vamos pegar o DPS. Se eu clicar aqui, clico no DPS e
posso arrastá-lo
até uma função como essa Novamente, vou criar
alguns nós de rota traseira para ele. E assim, ok, agora temos o DDPS bloqueado Agora, toda vez que
atualizarmos o clique do mouse, vamos adicioná-lo ao aumento
do dano do cursor em vez do
DPS total . Agora, se eu compilar e clicar em jogar e
atualizar aqui, agora
você pode ver que minha interface de usuário está
ou está sendo atualizada corretamente Se eu clicar no inimigo, ele também está causando a quantidade
correta de dano. Se eu clicar nele, diz 65. Se eu atualizar novamente, ele diz 90. Eu atualizo novamente
algumas vezes. Diz 240, e
deveria dizer agora 340. E você vê que está causando a quantidade
correta de dano. Agora terminamos de
atualizar o cursor.
103. 11.05 Como criar o widget de mouse: Para torná-lo um pouco
mais interessante, vamos mudar
o cursor do mouse porque você pode ver que temos o cursor normal do mouse
do Windows. Mas vamos
transformá-lo em outro ícone, para que pareça um pouco
melhor fazer isso. Apresentei aqui os materiais
de custo, dei
alguns cursores de mouse que eu realmente
usei no Farm Tail, mas podemos usá-los agora Aqui, vamos para a
interface do usuário e para os ícones. Vamos apenas arrastar esses
ícones até aqui. Agora você não precisa
aplicar papel a essas configurações porque não
são os lotes de pixels. Vamos voltar para a interface do usuário. E vamos clicar com o botão direito aqui, criar novos widgets de
interface de usuário Vá em frente e clique
aqui. Vamos chamar isso de cursor de mouse. Vamos abri-lo aqui dentro. O que eu quero fazer
primeiro é adicionar um painel de tela. Vamos
arrastar isso para baixo. A única coisa que queremos
adicionar é uma imagem. E esse será o cursor. O que vou fazer de novo clicar
aqui e dizer desejado na tela para esta imagem. Podemos dar um tamanho. Agora, o tamanho da imagem depende do tamanho do cursor do
mouse. Se eu for até os ícones e der
uma olhada no cursor do mouse, é 93 vezes 101. Então, vamos escrever isso, 93.100.1 Como você pode ver, o tamanho da imagem Isso ocorre porque você precisa
clicar em Tamanho para conteúdo e agora ele estará correto. Ok, isso está correto. Agora, o que queremos
fazer é centralizá-lo
também na tela. E não estando aqui em cima, vou mudar a
âncora para o meio E eu vou escrever
00 aqui no x e y. E não queremos escrever
0,5 nos alinhamentos porque o mouse realmente
vai clicar no meio dessa tela Isso está correto até agora.
Clicando nesse widget, vamos mudá-lo para o cursor E esse é o padrão. O cursor do mouse aqui. E vamos compilar e salvar. Acredito que temos que diminuí-lo porque será
muito grande no jogo. Mas temos que testá-lo
primeiro, antes de sabermos. Além disso, para esta imagem, quero configurá-la para
não ser testável, para que não afete o jogo Agora está pronto para ser usado. Vamos voltar ao controle do
player. Dentro do controle do player, assim como
trabalhamos com a interface do usuário anteriormente, queremos trabalhar com este aqui no player
inicializado Agora, não vamos abrir
e fechar um widget aqui. Não faz sentido
creditar aqui. Em vez disso, vamos
adicioná-lo ao player inicial. Vou apenas
copiar esses widgets. E vamos procurar
o cursor do mouse. Vamos
atacar clique aqui. Promova isso para uma variável
e chame-a de cursor do mouse. Agora, se você arrastar a partir daqui, basta
pesquisar o mouse e ver algo chamado Definir widget
do cursor do mouse Essa é uma função padrão
dentro do Unreal Engine. Se você clicar nele, o que você quer fazer aqui é
basicamente selecionar Padrão. Esse será nosso cursor padrão. Agora definimos
que esse widget acabamos de criar agora é
o cursor padrão Se você clicar em jogar, agora você
pode ver que este é o mouse. Podemos usá-lo para clicar e você pode ver que
é muito preciso. Agora vou
empurrá-lo um pouco para cima,
porque, como você pode ver, ele está
clicando um pouco para cima Se voltarmos ao widget, agora acho que vou torná-lo um pouco menor, porque talvez
seja muito grande. Vamos voltar e consertar isso. Vamos voltar para a
interface do usuário, abrir o cursor. Você sempre pode clicar
aqui e dizer, por exemplo, menos cinco aqui,
menos cinco Menos cinco inter também. Acho que vou dizer menos cinco
novamente aqui, menos cinco. Se eu clicar em play
e dar uma olhada, acho que pode ser um pouco menor. Novamente, menos dez,
talvez menos dez aqui. Clique em jogar. Acho
que está muito melhor agora. Agora, se você quiser
empurrá-lo para cima, você sempre pode ajustar a
posição no X e Y. Se você escrever cinco, na verdade, é menos cinco para ir
para o Digamos que menos
cinco por menos cinco. Isso é muito melhor. Você pode, novamente, tentar
ajustar isso da melhor forma possível aqui quando
estiver satisfeito. Agora, esse é o mouse que temos. Agora também precisamos de um evento de clique,
porque, como você pode ver
quando estamos clicando, ele não está realmente produzindo
outro efeito. E acho que podemos
torná-lo um pouco melhor com um efeito de clique. Esse é o outro cursor
que importamos. Isso é o pressionado, OK, então se voltarmos aqui agora, eu defino essa posição x para menos oito e menos cinco
para torná-la um pouco melhor Agora, quando estiver pronto, vamos ao
gráfico e interferir. Vamos deletar tudo isso. criar um novo evento personalizado. Vamos criar um novo
evento personalizado e vamos chamar isso de uma imagem de conjunto. O que queremos fazer aqui,
na verdade, quero uma nova enumeração Se você acessar o plano
e abrir as enumerações, clique com o botão direito do mouse e
faça uma nova Basicamente
, isso conterá uma lista dos estados do
mouse pressionado. Se eu apenas chamar seu estado, eu o abro, na verdade,
darei um S aqui no final. Agora, aqui para os estados
do cursor do mouse, poderíamos ter um cursor de mouse
padrão, poderíamos
pressionar o cursor do mouse. Agora temos esses dois estados. Se eu voltar agora para o widget e adicionar
isso como entrada, vamos pesquisar os mouses e selecionar essa
enumeração Vou chamá-lo de Moussa
declara o objetivo aqui. O que estamos tentando
fazer é
mudar essa imagem
dependendo se pressionamos ou não. Vou chamar
essa imagem de cursor do mouse. Vamos configurá-lo como variável para
que possamos alterá-lo no código. Se eu voltar aqui,
arrasto isso e digo definir pincel a partir da textura. Agora, a textura
depende do que
temos como estado do cursor do mouse. Se eu simplesmente arrastar
daqui e disser selecionar, e eu selecionar esse nó aqui, podemos arrastá-lo
para o índice. Agora, se for o estado padrão, isso é o que escrevemos
dentro da enumeração Se for o estado padrão, quero selecionar
esse cursor do mouse. Se estiver no estado pressionado, quero selecionar esse cursor
do mouse aqui. Agora podemos usar essa imagem definida, dependendo do que estamos
fazendo no jogo. Lembre-se de pressionar os botões. Fizemos isso dentro
do player. Se eu voltar para o jogador, vou para o
gráfico de eventos, está correto. Agora precisamos encontrar
o evento que
usamos sempre que
clicamos no inimigo. Agora, na verdade
, não criamos um porque
até agora o que temos feito
está dentro do inimigo Temos esse evento de clique aqui. Isso aqui em cima clicou
no componente da cápsula. Na verdade, não
fizemos um evento aqui. Sempre que clicamos
com o mouse, na verdade também precisamos
fazer isso. Para fazer isso,
temos que trabalhar com insumos. Vamos fazer isso
na próxima lição.
104. 11.06 Adicionando a entrada de clique do mouse: Tudo bem, para finalizar, temos que adicionar uma entrada do mouse para sempre que clicarmos com o mouse para que possamos
alterar a imagem. Para fazer isso, precisamos adicionar
uma entrada para o player. Se eu apenas escrever, clique aqui
e crie uma nova pasta, e eu vou
chamá-la de Player. E arraste isso até aqui. Dentro deste Player,
vou escrever, clicar e criar uma nova pasta
novamente, chamada de Entrada. E vamos entrar
nessa pasta, clicar com o botão
direito
do mouse na entrada aqui. Se você nunca trabalhou
com ele antes, é
aqui que você adiciona as teclas do
teclado e assim por diante. Então, sempre que você entra em
um jogo de RPG e assim por diante. Então, basicamente, apenas a entrada para o teclado, mouse
e pads Vamos primeiro criar um contexto de mapeamento
de entrada. Isso é o que você tem
que fazer. Vamos chamar isso de IMC Para o contexto de mapeamento de entrada, você pode simplesmente chamá-lo de padrão. OK. Clique com o botão direito novamente. Entrada, e temos que
criar algo chamado ação
de entrada. Vá em frente e crie
um. Vamos chamar isso de um
clique do mouse, por exemplo, clique
do mouse. Vamos
abrir esse. Agora, dentro
daqui, o que precisamos fazer é basicamente nada. Vamos encerrá-lo,
porque basta
clicar com o mouse e
algo deve acontecer, então não precisamos realmente
fazer nada aqui. Vamos abrir o contexto do mapeamento
de entrada. Dentro daqui, temos que
clicar no sinal de mais. Agora, ao clicar no sinal de adição, você precisa adicionar uma ação de entrada. Isso é o que acabamos de criar,
chamado de clique do mouse. Para essa ação de entrada, você
precisa atribuir um botão. Agora, para este,
vou clicar aqui. Em seguida, clique com o botão
esquerdo do mouse. E ele o
atribuirá automaticamente. Também o encontre aqui se você
apenas pesquisar o mouse e ver que pode selecionar
todas essas coisas aqui, mas já as temos
aqui.
Botão esquerdo do mouse. Vou clicar
aqui nos gatilhos, vou clicar em Mais e selecionar o
chamado pressionado A razão pela qual eu faço isso
é que, se você não fizer isso, você clicará
várias vezes. Na verdade, vou te mostrar que se eu excluir isso por enquanto, podemos simplesmente deixá-lo e
voltar a ele. Agora temos que adicionar
isso ao player. Se eu voltar para o player, eu abro o player, temos que adicionar o contexto de
mapeamento de entrada aqui. Antes de funcionar, vamos fazer
isso antes de atualizarmos a quantidade de ícones e
danos e assim por diante. Então, vamos fazer isso aqui dentro. O que podemos fazer é precisar
do controlador do player. Na verdade, vou usar
este controlador de player, você pode pesquisar por aprimorado, você vê este chamado subsistema
Enhanced Input Local
Player Vá em frente e selecione isso antes de prosseguirmos
e trabalharmos com ele. Sempre direcione a partir
daqui e diga que é válido, pois
às vezes ocorre um erro quando não
foi carregado e você está tentando mover o player ou tentar realizar algumas ações de entrada. Vá em frente e selecione
é válido primeiro. Sempre que for válido, podemos arrastar a partir daqui
e dizer insira este. Adicione contexto de mapeamento,
vá em frente e selecione. Em seguida, para o contexto de
mapeamento, selecione o que você acabou de criar. Agora, deve funcionar
bem para testar se isso está
realmente funcionando ou não. Você pode simplesmente ir aqui
e escrever, clicar e pesquisar o nome da
ação de entrada que você criou. Eu criei o chamado clique do mouse. Vá
em frente e selecione-o. Vou apenas imprimir
uma string na tela. Compilar. Se eu clicar aqui, você pode ver que diz olá. Se eu clicar com o
mouse, ele diz olá. A razão pela qual
precisamos adicionar um gatilho pressionado para a ação de entrada
é porque você pode ver se eu mantiver o mouse
pressionado para
enviar spam para esse código que eu
escrevo aqui. E não é isso que queremos. Se eu voltar ao contexto de
mapeamento de entrada e aos gatilhos, clico no sinal de adição e
adiciono esse estado pressionado O que a pressão significa
é que ela só
tocará o código uma vez
sempre que eu clicar aqui. E esse código será reproduzido
se eu escrever uma sequência de caracteres impressa novamente
e clicar em reproduzir. Agora, se eu segurar o mouse, você pode ver que
não vai enviar spam. Só vai dizer isso uma vez. Toda vez que eu clico, vou
clicar várias vezes. Agora você pode ver que ele só vai
imprimir uma letra baixa sempre que eu clicar no mouse e
vai imprimir apenas uma vez. Isso é apenas para otimização,
para que você não jogue repetidamente. Agora podemos realmente usar
essa ação de entrada. Deixe-me adiantar tudo isso. Deixe-me adicionar este aqui embaixo. Agora podemos usá-lo para
mostrar o cursor do mouse. Lembre-se de que o cursor do mouse está dentro do controle de
jogo. Novamente, vamos usar
o controle de jogo. Vamos acompanhar a partir daqui, vamos pesquisar o
widget que criamos Se você pesquisar por mouse
e ir até a parte inferior, é sempre aqui que estão
suas variáveis. Criamos esse
cursor de mouse B dentro daqui. Se você não se lembra, nós
apenas voltamos a relembrar. Acesse o gráfico que criamos. Isso é chamado de definir imagem
do cursor do mouse. Se eu for até o player, arrasto e digo definir
mouse por imagem. Sempre que for acionado, vamos configurar
o P a ser pressionado. Agora, em vez de apenas fazer isso, temos que fazer duas coisas. Sempre que for concluído e
sempre que for acionado. Sempre que for acionado,
vamos configurá-lo para pressionar, e vamos copiar
e colar. E arraste isso para o alvo
sempre que estiver concluído. Vamos fazer o padrão, vamos realmente ver o que acontece. Fp, você pode ver que está
realmente funcionando, mas está sendo acionado
muito rapidamente Isso ocorre porque está
acionando isso aqui. Mas sempre que
for concluído, o que acontece
quase imediatamente, ele será configurado como padrão novamente. Isso é realmente
o que está acontecendo. É por isso que
está assim. Agora, para corrigir isso,
vamos voltar
ao contexto de mapeamento de entrada aqui. Vamos adicionar novamente outro. Vamos adicionar a mesma coisa. O
botão esquerdo do mouse, clique aqui. Clique com o
botão esquerdo do mouse no teclado ou com o mouse nos gatilhos Clique no botão agora, em vez de pressionar apenas aqui. Também precisamos selecionar Lançado. Vá em frente e faça isso. Salvar.
Vamos voltar para o jogador. Na verdade, você não
precisa fazer nada. Está correto Se
eu clicar em jogar, agora você pode ver se
eu clico, eu libero. Agora isso está correto. Isso é Do the mouse. Agora você pode ver
que ele tem um efeito mais frio com o mouse quando mudamos o cursor para este
em vez do padrão E também temos os
estados pressionados. Agora, no futuro,
se você quiser adicionar mais estados de widget do mouse, novamente, você terá que entrar
na enumeração, nas plantas e adicionar os Em seguida, lembre-se de acessar a interface do usuário, abrir o cursor do mouse e, também no gráfico, lembre-se de selecionar
as imagens corretas que você deseja usar aqui.
105. 12.01 Criando o mapa final: Tudo bem, agora é
hora de desenhar o mapa. Então eu clico em Play. Tudo está indo bem. Temos o nível,
temos a loja, temos as moedas,
temos o cursor do mouse. Mas agora, na verdade, também vamos
projetar o nível em si. Agora vou fazer
isso no meu próprio tempo, mas só para lembrar que temos que ir aos ativos
e aos ambientes. Aqui temos essa prisão de gemas com mapas de
blocos que criamos anteriormente. Lembre-se de que você pode alternar entre as configurações de blocos aqui.
Você tem os adereços. Se você deseja adicionar alguns adereços, por exemplo, este,
você pode clicar nele Ou você pode clicar e arrastar
aqui e selecionar os dois. Você pode adicioná-los
aqui. Lembre-se de trabalhar com a camada frontal, camada
base e as decorações. Você sempre pode criar mais
camadas se desejar, porque se você apenas pintar
na camada base aqui, seus ladrilhos serão excluídos. Portanto, você precisa
criar uma nova camada e adicioná-la para
poder adicioná-la à frente. Se você quiser isso na parte de trás, você sempre pode clicar nessa seta. Agora está embaixo dos
ladrilhos, então você não pode vê-lo. Vou deletar
este por enquanto. O que vou
fazer agora é
basicamente aumentar o tamanho do mapa, que é a
largura e a altura do mapa. Por exemplo, você pode
escrever algo como 50 por 50 ou
o que quiser. Talvez seja muito grande, mas tente encontrar a
largura do mapa adequada para você. O problema é que estamos tentando evitar todo esse
espaço preto ao lado, apenas fazer com que caiba mais. Você só precisa
adivinhar, por exemplo. Você pode simplesmente criar um mapa maior e tentar adicionar
algo assim. E se você clicar em Play, sempre poderá ver
aonde ela chega e depois saber
onde parar aqui. Mas, basicamente, vou
aumentar esse mapa apenas
para evitar o espaço preto. Nós realmente não precisamos
fazer mais nada. Basicamente, basta aumentar o mapa, tentar trabalhar com as camadas. Vá em frente e selecione o bloco. Tente pintar o
mapa como quiser. Agora, tendo em mente
que você tem todos esses pontos
de desova
para esses itens, você sempre pode, por exemplo, apenas uma ideia, criar salas para esses itens ou criar um
buraco para esses itens Basicamente, fazer com que
esses itens se encaixem
no jogo, assim como esse inimigo surgindo
talvez no meio É o centro das
atenções deste jogo. Basta projetá-lo da
melhor maneira possível. Não há realmente
nenhuma regra aqui. Vou
projetá-lo da melhor maneira possível. Apenas tente jogar
com tudo isso. Talvez tente jogar
com o canto. Veja como eles trabalham juntos. Por exemplo, isso com este, como este e
este aqui. Basicamente. Tente o melhor que puder para criar o mapa e
eu voltarei com você. Tudo bem, agora estou de volta. Passei cerca de 30 minutos
tentando criar este mapa. Como você pode ver, eu
desenhei o mapa. E aqui está. Acabei desenhar o mapa dentro
do mapa de blocos. A largura e a altura do mapa são 50. Acabei de adicionar algumas peças aleatórias. Basta projetar o
mapa como quiser. Realmente não importa
como você o projeta,
isso realmente não
afetará nada neste curso. Tente ser o mais
criativo possível e divirta-se com isso
quando terminar. E você pode ver aqui,
eu também movi os pontos de geração do item para que
fiquem no chão aqui Sempre que eu compro
algo, ele realmente vai aparecer dentro
dessa coisa aqui Agora posso aumentar
a quantidade
de itens da linha que ela pode gerar aqui Talvez eu queira aumentá-lo. Vamos tentar fazer isso.
Vamos ver a planta E fizemos isso dentro
do modo de jogo. Se eu abrir o modo de jogo, vamos ver aqui temos essa função de definir
pontos de itens. Dentro dessa função,
tínhamos algumas variáveis locais. Aqui, a quantidade local
de linhas é duas. Eu queria ficar dois. Agora podemos ter o último índice do loop
local. Essa é a quantidade de
itens. São dez itens. Porque vale, lembre-se de
0 a 9, são dez itens, eu, vamos tentar adicionar três a ele Vou comprar alguns itens. Parece que está aqui. E agora está se encaixando no mapa. É com isso que eu
vou escolher. Este é meu mapa atualmente. Além disso, quero aumentar um pouco
o cronômetro
porque acho que é muito pequeno e é um grande foco no jogo. Vamos
encerrar isso. Vamos para a interface do usuário. Abra. Vamos ver aqui,
a interface principal aqui. Vamos clicar no texto. Em vez de 28, vamos talvez escrever 36 e, para o ícone, temos que
aumentá-lo, talvez 60 por 60. Em vez disso, vamos clicar em play. Acho que é muito melhor porque ainda é
o foco principal. Podemos até aumentá-lo
ainda mais, talvez 40, e este é 60, 64 por 64. Por exemplo, clicando em play, é assim que
parece. Acho que isso é muito
melhor porque é, novamente, o
foco principal do jogo. Tudo parece bom. Agora, se você quiser mudar
alguma coisa no jogo aqui, basicamente, você sempre pode
entrar aqui e ajustar as coisas. Mas eu gosto do jeito
que está agora. Eu gosto de tudo sobre isso. Você pode até aumentar o
nome e a saúde, se desejar. Na verdade, vou
fazer isso um pouco, só para que possamos ver melhor. Clicando aqui, em vez de 28, vou escrever
32 para a ligação. Vou escrever 55,
55 também para a saúde. Em vez disso, vou clicar em
Health 32. Compile o com Play. E agora você pode ver que é muito maior e é novamente
o foco do jogo. Por isso, é sempre bom
ter essa interface de usuário maior. Ok, agora vamos
continuar com a próxima.
106. 12.02 Preparando as dicas de som: Tudo bem, agora estamos
em um estágio em que podemos adicionar alguns efeitos
sonoros ao jogo e também música. E isso tornará o
jogo muito melhor. Os efeitos sonoros adicionam quase metade da experiência do jogo. Você pode ver que, apesar de
termos feito um jogo divertido, ele ainda é chato
sem nenhum som E sim, vamos adicionar alguns efeitos sonoros e
torná-lo mais interessante. Agora, na pasta de conteúdo,
vou escrever, clicar e criar uma nova
pasta chamada Áudio. E dentro daqui,
vamos entrar aqui. Nos materiais de custo, incluí todos
esses efeitos sonoros para você nos materiais de custo. Vá em frente e
abra a pasta SFX. Tudo isso, vá
em frente, selecione-os e arraste-os para
a pasta de áudio. Quando você os arrasta para dentro,
você vê tudo isso e, a propósito, muitos
deles estão muito altos. Não clique em reproduzir agora, senão seus tímpanos podem estourar Você sempre pode diminuir
o som para isso, mas o volume deles é muito
alto. O que queremos fazer é
criar algo chamado pistas
sonoras a partir delas Vamos começar com, por exemplo, essa chamada compra. Vamos escrever, clicar e criar Q para que você possa
criá-lo aqui. O que eu costumo chamar é que eu
excluo esse Q no final. E eu chamo isso de S C para som que. É chamado de sound que purchase. Agora vou
clicar duas vezes nessa sonoridade. E aqui dentro, muito simples, podemos simplesmente diminuir
o som. Vou escrever
0.2 e depois
vou clicar em Play e
ver se está alto ou faz notas. Esse é o som
disso. Talvez eu possa fazer com que seja 20,4 algo assim Sempre podemos ajustar
o som mais tarde, mas é isso que eu
quero que você faça. Por exemplo, vamos
dar outro exemplo, chamado FX
punch, clique com o botão direito do mouse E eu crio uma fila disso novamente. Vamos chamá-lo de Sound Punch, abra-o mais abaixo O som talvez 0,4 Ainda está
muito alto. Talvez ainda mais baixo. Como isso
vai receber spam no jogo, talvez 0,1 ou 0,05, não
sei, vamos descobrir Agora, um método para
dar um soco aqui é o mesmo se
você estiver clicando no inimigo Está ficando um pouco irritante como quando você ouve o mesmo
som repetidamente. Para mudar isso, você
sempre pode atacar a partir daqui. Você pode ver que não
há muitas coisas que você possa fazer aqui,
como nos
gráficos de plantas que geralmente vemos Mas o que eu quero que você use é esse chamado modulador Vá em frente, selecione-o e
conecte-o aqui. Agora,
o que um modulador está fazendo é mudar
o tom do som Se você clicar nele e
alterar o tom mínimo para 0,9 e o máximo para
1,1, salve tudo. Agora, se você clicar em
Reproduzir várias vezes, poderá ouvir que o som muda toda vez que
você clica em reproduzir. Não é completamente
o mesmo som. Está tentando regular ou alterar o tom mínimo
e máximo. Isso é feito para este. Agora, se tivermos vários sons, por exemplo, eu tenho este
chamado Morte 01020304 Tudo isso vai junto. Se eu selecionar todos eles, clique com o botão
direito do mouse e crie um único. Quando criarmos isso,
vou renomeá-lo
para Sound Or Death Vá em frente e entre nela. E agora você pode ver que ele
já fez isso para você. Ele criou um nó aleatório. Ele conectou todos
esses sons a ele. Na verdade, ele escolherá
o som aleatoriamente quando você
clicar em reproduzir. Agora, antes de fazer isso,
reduza também o som e clique em reproduzir em alta voz. Talvez 0,10 0,15 Talvez
0,2 seja realmente bom. 0,2 está bem. Parece bom. Agora tudo isso é bom. Vamos
fechá-lo por enquanto. A Ascensão
novamente, clique com o botão direito. Faça uma criação A e exclua isso. Chame isso de S C, Ascensão. Abra-o, reduza
o volume para 0,2, por exemplo, feche-o. Então vamos pegar o
próximo, o botão passar o mouse. Vamos clicar com o botão direito do mouse em criar
um Q para este. Novamente, vamos chamá-lo de
botão e
reduzir o som
20.2 Feche-o. Vamos para o próximo,
que é o botão
pressionado com o botão direito do mouse, criar um som de que soa como este. Você pode ver que é o
mesmo método
repetidamente apenas para
reduzir o som. Agora, pressionando um botão, eu também quero adicionar
um modulador Modulador para este também. E conecte-o, tom
mínimo e máximo. Vamos definir 20,9 para 1,1 então. Agora soa diferente toda
vez que pressionamos o botão, que é muito bom. Agora temos a
Morte Noturna novamente. Clique com o botão direito. Crie uma fila
sonora. É uma lição
um pouco chata porque estamos basicamente
fazendo a mesma coisa Mas eu só quero
te mostrar como você os cria. Só para eu saber que você
tem o conceito, vamos fazer um
0,2 soar bem. O próximo que temos
é o nível desbloqueado, clique com o botão
direito do mouse. Crie uma fila. Vamos renomeá-lo para abrir
esse nível de ônibus desbloqueado. Reduza o som para
0,2 Feche-o. Agora, o próximo é o clique direito normal
desbloqueado. Crie uma fila, chame-a de
Sound que assim, abra-a novamente, reduza o som para 0,2 Você pode ver o mesmo
método repetidamente. Agora, para a música. Vamos clicar com
o botão direito aqui novamente, criar um som que, vamos
chamá-lo de Sound Music Now
para a música. Vamos abri-lo e
clicar aqui. Vamos garantir que
tenhamos marcado. Isso é um loop porque você
precisa repetir a música,
caso contrário, ela não voltará e parará em algum momento Agora, o C que já fizemos. Aqui está a ou a morte.
Nós já fizemos isso. O soco também, a compra. Fizemos a morte
pelos foguetes. Clique com o botão direito em que. Estamos quase terminando. Foi uma lição chata. Vamos chamá-lo de Sound Q
Rogue 0.2 Vamos nos sentar. O esqueleto. Agora vamos
selecionar o esqueleto. Clique com o botão direito, crie
uma única fila. Novamente, vamos alterá-lo para 0,2. E devo me lembrar também de mudar
o nome deste. O último é o mago. Clique com o botão direito do mouse em Criar. Vamos chamá-lo de Sound
que, abra. 0.2 Agora vou
, no meu próprio tempo, ajustar todos esses volumes porque basicamente
basta clicar em reproduzir aqui. E depois ouvir o
quão altos estão os sons, basta ajustar os volumes
deles quando terminar Vamos para
a próxima lição.
107. 12.03 Adicionando SFX à interface do usuário: Tudo bem, agora que você terminou de criar
todas as dicas sonoras, vamos voltar para a interface do usuário Agora eu quero que você os
pegue um por um. No primeiro, consigo
ver as informações do inimigo. Na verdade, não temos efeitos
sonoros para eles
, são apenas alguns textos
e algumas partes de saúde. A primeira é a carta de nível. Sempre que clicarmos
nesse botão de nível, vamos clicar no botão.
Vamos descer até aqui. E você vê algo chamado Som
pressionado e passa o mouse. Som Vamos
mudar isso. Agora, se você clicar nele, poderá ver todas as dicas sonoras e o som que você
importou para dentro desse mecanismo Agora, este é o pressionado, se apenas pesquisarmos por pressionar
e selecionarmos este aqui, procuraremos por passar o mouse
e selecionaremos este Compilar. Agora, se você
clicar em reproduzir e experimentar, verá que isso é o
mouse, essa é a pressão É um pouco mais interessante
que eles tenham sons aqui. Vamos fechá-lo.
Vamos para a próxima. Deixe-me excluir
este cartão da loja apenas para ver ou
testar essa interface de usuário aqui. Nós realmente não
temos nada que faça som aqui.
Vamos fechá-lo. Vamos abrir o item da loja, Cod. Dentro daqui
temos esse botão novamente. Vamos pesquisar,
pressionei, na verdade, por esta. Vamos procurar o som do mouse que está corrigido. Vamos
fechá-lo. A última é a dica de ferramenta que também não contém
nada. Vamos em frente e
salve tudo agora. Antes de terminarmos, vamos
também adicionar o clique do mouse. A melhor maneira de fazer
isso é abrir
os inimigos e
abrir a base inimiga. Lembre-se de que
aqui dentro fizemos o clique. Também temos todo
esse dano aplicado. Efeito de desova, flutuação
e efeito de golpe. Vamos realmente fazer isso aqui. Se você arrastar a partir daqui, se você apenas pesquisar por som, você tem algo
chamado Play Sound two D. Você também tem
algo que eu acabei de pesquisar, Play Sound tem algo
chamado Play Sound two D e toca Sound no local. Reproduzir som no local
geralmente é usado normalmente. Por exemplo, em três jogos D
em que há um inimigo distante e você pode ouvir o som ao longe em
um determinado local. No entanto, este é um jogo em
dois D e
basicamente temos o som dois D. Vamos tocar o som dois D. Isso é
usado principalmente para elementos de interface do usuário. Você também pode passar o mouse
sobre ele e ele emite
um som diretamente
sem atenuação, que basicamente significa que
você não pode ouvi-lo
como se estivesse vindo de uma distância
ou de um local É perfeito para sons de interface do usuário. Vamos selecionar
esse para o som. Você pode ir em frente e
selecionar o soco. E vá em frente e
selecione-o agora, você pode fazer
assim ou você também pode
simplesmente aqui, promovê-lo para uma variável
e chamá-lo,
por exemplo, de efeito sonoro de soco Isso é sempre bom porque em
vez de mais tarde
no jogo, vez de procurá-lo e não
se lembrar de quem era, basta clicar aqui e alterar o
efeito sonoro a partir daqui. Agora temos o efeito sonoro de
soco se eu clicar em reproduzir
agora e experimentar. Agora, a outra coisa que podemos fazer é sempre que você desbloquear um nível, vamos emitir um som. Acho que
também será
muito mais interessante para desbloquear os níveis Lembre-se de que você fez isso
dentro do modo de jogo. No modo de jogo,
se eu voltar
ao gráfico de ventilação e dermos
uma olhada no nível de desbloqueio, vamos realmente
jogar a partir daqui Vamos fazer isso aqui. Vamos arrastar a partir daqui. E, novamente, toque Sound Two D. Na verdade, incluí dois sons
diferentes para você. Se você voltar ao
áudio e abrir, poderá ver aqui algo chamado desbloqueios e desbloqueios Dependendo se o inimigo é
um chefe ou um inimigo normal, podemos realmente fazer
algo com ele. Agora, a maneira de fazer isso é novamente, podemos arrastar a partir
daqui e dizer selecionar, porque agora podemos
selecionar o som, dependendo do valor, para obter o status do próximo inimigo. Por exemplo, se for um
chefe ou um inimigo normal. Lembre-se de que podemos dizer
para obter informações sobre o inimigo. Vá em frente e selecione
obter informações sobre o inimigo. Vá em frente e quebre. Quebre a estrutura a
partir daqui que conhecemos,
o tipo de inimigo aqui. Vamos em frente e conecte isso. Dependendo se é
um normal ou um chefe,
podemos selecionar, na verdade, vamos clicar com o botão direito do mouse aqui e na verdade, vamos clicar com o botão direito do mouse aqui promover essa variável. Vamos chamá-lo de FX desbloqueado de nível. Esse é o normal. Vamos clicar com o botão direito do mouse nessa
e promover essa variável. Vamos chamar esse de
chefe no final. Ok, agora temos esses dois pinos selecionados e desconectados Agora, quanto ao nome do inimigo, de
onde tiramos isso? Lembre-se de que sempre podemos clicar com
o botão direito do mouse e dizer obter informações
do nível. Vá em frente
e selecione-o. Agora, o nível do qual queremos obtê-lo é o nível
desbloqueado Vá em frente e conecte isso, porque o
nível desbloqueado está sempre um passo à frente do nível atual Vamos acabar com isso de novo. E agora temos o nome
que você pode conectar, ocultar os pinos desconectados Vá em frente e torne-o
mais estruturado assim. Agora temos essa informação. Ele só tocará uma vez porque sempre que
desbloquearmos o nível, ele tocará
o som uma vez. Vamos compilar e
salvar tudo isso. Agora você pode ir
em frente e experimentar. Mas antes de fazermos isso, vamos adicionar o som
ao som normal, podemos pesquisar por desbloqueado, desbloqueado e
procurar o normal Para o próximo, para o chefe. Vamos selecionar
o chefe desbloqueado, compilar o jogo e
testá-lo Esse é o som quando
você desbloqueia um nível. Se eu fizer isso de novo, você verá não
há som porque
ainda estou jogando o nível um. Se eu voltar para o nível dois, passar para o nível dois,
agora eu tenho o som. Incrível. Agora, esse
é o último. Quando eu mato
este, ele deve reproduzir o efeito sonoro do chefe
ou o nível desbloqueado do chefe Vamos tentar fazer isso.
Agora é um chefe. Você pode ver que é muito mais
interessante jogar com ele. Agora, antes de continuarmos dando
alguns efeitos sonoros ao inimigo, vamos dar
um
efeito sonoro também à compra. Para a compra que temos
aqui no player. Lembre-se novamente de que temos
o item comprado. Vamos
adicionar o efeito sonoro aqui antes de fazermos qualquer outra coisa. Novamente, clique com o botão direito do mouse em Play. Soe dois D, vá em frente
e adicione aqui. Deixe-me
clicar com o botão direito neste e dizer Comprar efeitos sonoros. E arraste-o para baixo assim. Agora, para este,
vamos clicar nele Compilado primeiro e
pesquisar a compra. E isso deve funcionar, muito bom se eu clicar em Jogar e
comprar algo. Agora vejo que o som está tocando. Vou
continuar com o áudio e abaixá-lo um
pouco. Acho que está muito alto. Se eu abri-lo, escrever 0,4
em vez disso e jogar novamente, posso ver que também está funcionando. Ok, agora temos todos esses efeitos
sonoros implementados. Vamos salvar tudo agora. Vamos adicionar alguns
efeitos sonoros para o inimigo.
108. 12.04 Adicionando SFX ao inimigo: Ok, basicamente todo inimigo pode ter um efeito sonoro único. Para fazer isso, lembre-se de que
criamos uma estrutura. Se eu abrir a estrutura
e abrir as informações do inimigo, o que podemos fazer é
adicionar o som a ela. Porque lembre-se de que toda vez
que você adicionar uma variável aqui, ela será exclusiva desse inimigo. Por exemplo, se
clicarmos em Adicionar aqui, podemos dizer efeitos,
morte, efeito sonoro. E se apenas procurarmos por som, vá em frente e selecione esse som. Então, o que você pode fazer é acessar o Google Sheets. Dentro de suas planilhas do Google, vá em frente e abra as
informações do inimigo aqui à direita. Vá em frente e escreva a morte
como efeitos que você acabou de criar. Agora, o que você pode fazer é adicionar referências um pouco antes. Sempre podemos acessar
o áudio agora. Agora, para o
primeiro, vamos ver aqui, todos os quatro primeiros
são os , vamos ver aqui. Nós temos o C. Basta
encontrá-lo aqui embaixo, aqui,
a
morte, clique com o botão direito. E então copie a referência
como antes. Vá em frente e adicione-o agora. Tecnicamente, você pode ter
um efeito sonoro de morte de orc que é exclusivo para
cada um Mas eu vou
usar o mesmo aqui. Como eu adicionei aqui, lembre-se de que, na dica sonora, adicionamos
um aleatório a partir deles, ele só vai escolher
um som de morte aleatório Mas, basicamente, você pode atribuir um som de morte único
a cada inimigo. Agora, para o feiticeiro,
vou novamente até aqui, Encontre o feiticeiro
Morte, clique com o botão direito, copie, faça referência e cole aqui. O próximo é o esqueleto. Vamos encontrar o esqueleto
que está aqui. Vou renomeá-la e
removê-la, 01, clicar com o botão direito do mouse, copiar a referência e colar
nas próximas quatro, isso, isso e isso Agora temos a
morte desonesta e a morte noturna. Vamos procurar o
ladino. A noite chegou. Copie a referência passada da
noite para o ladino. Vamos clicar com o botão direito do mouse em Copiar base de
referência para o ladino. Novamente, clique no arquivo e baixe-o como um arquivo CSV Agora vá em frente e leve essas informações do
inimigo para as tabelas de dados. E, basicamente, basta arrastá-lo dentro e ele deve ter
todas as informações. Agora vá em frente e economize. Agora, sempre que o inimigo morre, e isso acontece dentro
da base inimiga, vamos abrir a base inimiga,
salvar tudo, compilar E vamos ver aqui
onde podemos adicioná-lo, então estamos causando algum dano. Aqui, no final, temos a morte F, clique duas vezes nela. E está aqui
sempre que o inimigo joga. Vamos realmente fazer isso aqui. Sempre que jogamos o flip book. Deixe-me tocar o som
antes de tocar o flip-book. Agora, eu realmente não
acho que importe se você joga uma
coisa primeiro ou outra, mas vou
fazer dessa maneira. Vamos tocar novamente o Sound Two D. Vá em frente e
conecte-o assim. E vá em frente e conecte
esses efeitos aqui. Agora, ele selecionará
esse efeito sonoro, dependendo do que
você forneceu como informação
na tabela de dados. Então vá em frente e compile. Clique em Jogar e
vamos experimentar. Ok, isso funciona bem. Tudo bem, agora temos o problema do som
tocar muitas vezes. Então, se você apenas diminuir o volume, isso
pode ficar irritante. Se você clicar
em Comprar algo aqui, você comprou algumas vezes. Você pode ver que quando o inimigo morre, ele joga várias vezes. E isso é um pouco chato. Vamos até a base inimiga aqui. Vamos dar uma olhada na morte. Se eu apenas fizer uma string impressa, basta imprimir uma string para
ver se está tocando. Algumas vezes, eu
posso clicar em jogar. Eu posso comprar alguma coisa novamente. Eu posso ver que está tocando
muitas vezes. Vamos
resolver esse problema aqui. Podemos usar algo
chamado de um nó. Vamos pegar isso e dizer uma vez, e
selecionar isso uma vez. Em seguida, ele
reproduzirá esse efeito sonoro ou basicamente todo
esse código aqui. Só uma vez eu compro alguma coisa. Você pode ver que agora está corrigido porque só
vai ser reproduzido uma vez. Isso é redefinido
basicamente automaticamente. Porque lembre-se, estamos
destruindo o ator. Toda vez que o ator morre
, um novo ator responde. Então, eles terão
um novo, node. Nós realmente não precisamos
reinicializar este. Tudo está funcionando bem aqui. Vamos fechá-lo
e seguir em frente.
109. 12.05 Adicionando música: Como última coisa para o efeito sonoro,
vamos adicionar um pouco de música. E isso é super simples, então se abrirmos
o áudio mais uma vez, podemos arrastar essa
música até aqui. Vou clicar nele novamente. Reduza também o som. Não tenho certeza de quão alto é. 0,2 está bem, acho que sim.
Deixe-me fechá-lo. Agora temos isso. Eu só
vou dizer que às 0200 , realmente não
importa onde esteja Agora, se você clicar em Reproduzir, verá que pode
ouvir o som. Isso é muito simples adicionar música e
vai ficar em loop para sempre. Tudo parece bom. OK. Vamos em frente
e salve tudo. E vamos passar
para a próxima.
110. 13.01 Criando a IU de ascensão: Tudo bem, então agora vamos
trabalhar na Ascensão. Basicamente, o que é Ascension, se você ainda não sabe, é que sempre que você
alcança um progresso, determinado progresso no jogo, você pode pressionar o botão de reiniciar Isso dá uma capacidade de reprodução
ao jogo. Quando você reinicia o jogo, ele causa mais dano básico. Por exemplo, tudo causa 300%
a mais de dano. Pode reiniciar o jogo basicamente
e causar mais danos. E você pode basicamente continuar porque, em um determinado momento,
se você não reiniciar, o jogo ficará muito
difícil e você precisará
reiniciar para obter esse bônus de
dano e continuar os níveis. Ok, vamos
começar com a mecânica da
Ascensão Então, a primeira coisa
que eu quero fazer é basicamente projetar a interface do usuário e tirar
isso do caminho. Vamos para a pasta UI. Vamos aqui, crie novos widgets Vamos chamar isso de pop-up de
Ascensão. E trabalharemos com o
pop-up na próxima lição, mas por enquanto, agora terminamos isso.
Vamos até o Main. Vamos adicionar o
botão Ascensão aqui embaixo e faremos com que ele
apareça sempre que os critérios forem
atingidos. Vamos começar aqui. Primeiro, o que eu quero fazer é pegar essa sobreposição e arrastá-la
até o painel da tela Vamos minimizar tudo isso. Agora temos essa sobreposição. Eu quero que essa interface seja A, aqui
embaixo, ponto de
ancoragem, embaixo Vamos subir 00 na
posição x e y. Agora, para o x, temos que subir 0,5. Para o y no alinhamento,
temos que escrever um Está aqui na tela. Em seguida, precisamos da interface do usuário. Agora, primeiro vamos adicionar uma imagem. Adicionando essa imagem, essa
será a imagem de fundo. Será o mesmo
que este. Eu só vou
copiar essa imagem. Clique aqui e cole. Agora terminamos isso. Em seguida, queremos uma caixa vertical. Vamos adicionar uma
caixa vertical a essa sobreposição. O que eu quero é um
texto e um botão abaixo dele. Vamos adicionar um pouco de texto. Eu só vou
copiar um deles. Por exemplo,
este, controle C, desça aqui, controle V
na caixa vertical. Vamos também adicionar o botão, e podemos adicioná-lo simplesmente
acessando esta carta de nível. Podemos clicar em tudo isso, copiar e colar aqui
na caixa vertical. E eu posso remover esse
crânio. Agora foi isso. Vamos clicar nessa imagem. Vamos fazer com que seja preenchido
na horizontal e na vertical. Agora vamos clicar
aqui na sobreposição. E vamos apenas redimensionar as coisas, ou basicamente o que você pode
fazer é apenas dimensionar o conteúdo Acho que vou fazer isso em vez disso. Em seguida, podemos adicionar texto
para esse botão. Vou escrever Ascend aqui. Aqui podemos escrever
Ascension disponível. Agora, para o texto de
fundo aqui, na verdade
vou
copiar essa cor de contorno Vá até aqui e cole
neste para que eles
tenham a mesma cor. Além disso, podemos clicar nessa caixa vertical e dar um pouco de preenchimento Se você escrever algo como 50, talvez nem tanto. Se clicarmos aqui
novamente, vamos escrever 30. Talvez algo em torno de 30, 35 seja algo assim. Eu acho que isso parece bom. Agora vamos dar um
pouco de espaçamento
na parte inferior para que
não atinja a borda E essa é a posição
na posição Y -30, o X. Vamos escrever zero.
Mais uma vez, vá em frente e compile Você pode clicar na placa para
ver sua aparência. Acho que talvez
esse texto seja muito grande. Em vez de 24, vamos escrever um. Vamos também dar
um pouco de espaço. Eu só vou clicar aqui. Coloque um pouco de preenchimento
na parte inferior, por exemplo, quatro, compile
e clique em reproduzir Eu acho que isso é bom. Agora temos essa
ascensão disponível, e também temos alguns efeitos
sonoros para o botão, pronto para esta interface Vamos fechá-lo e
continuar no próximo.
111. 13.02 Criando o pop-up da ascensão: Tudo bem, agora é hora de
projetar o Ascension Pub. E podemos fazer isso facilmente
simplesmente copiando isso por enquanto. Copie tudo isso que fizemos na última lição e abra
o Ascension Pub Up Passe isso aqui embaixo.
Agora, em vez de aqui. Na verdade, vamos adicionar
um painel de tela. É por isso que parece tão grande. Adicione um painel de tela e
, em seguida, adicione-o aqui. Certifique-se de que, ao
clicar na sobreposição, ela esteja ancorada E 0,5 no alinhamento
para X e Y. E também 00 na posição
X e Y. E aqui em cima, selecione
desejado na tela. Tudo bem, então o que eu quero
fazer aqui é que
você reinicie o progresso, mas com 300% a mais de dano Por exemplo. Sempre podemos escrever um número dinâmico para
essa porcentagem de dano, mas, por enquanto, vamos
escrever assim. Se você quiser torná-lo um pouco
menor aqui na largura, você sempre pode ir até aqui e na embalagem, você
tem esse texto quebrado Vou apenas
aumentar isso e podemos basicamente agrupar esse texto
em um determinado número. Vamos embrulhá-lo em
algo como 360. Eu posso ver que a
imagem está realmente desfocada no fundo em
vez da Vamos mudar para
uma caixa e escrever 0,5. Isso parece muito melhor. Vamos também fazer isso,
na verdade , principalmente.
Acho que não fizemos isso. Voltando, clicando nele, transformando-o em uma caixa e
escrevendo 0.5 Vamos voltar. Agora, aqui, vou
duplicar esse botão, mas precisamos deles em
uma caixa horizontal Vou
procurar uma caixa horizontal. Vá em frente e adicione-o aqui. E adicione esse botão
à caixa horizontal. E duplique essa sobreposição. Ao clicar no controle D, podemos clicar na primeira
sobreposição. Clique em Phil. Clique na segunda
sobreposição. Clique em Phil. Agora, o primeiro vai
dizer As, Tudo bem. O segundo
vai dizer cancelar, porque queremos voltar. Se não quisermos continuar,
podemos clicar aqui. Podemos mudar a cor apenas para torná-la um
pouco mais exclusiva. O botão de cancelamento é um pouco mais vermelho, algo
assim aqui. E eu vou
copiar essa cor para o mouse e para a prensada
também, para as Também vou mudar
a cor para algo um pouco mais
verde como esse. Ok, isso para os outros. Aqui está. Se
eu compilar e salvar, agora terminamos isso Vamos passar para a próxima.
112. 13.03 Abrindo o pop-up da ascensão: Tudo bem, agora é hora de adicionar esse pop-up de ascensão à interface do usuário Se eu voltar ao controle do
player, lembre-se de que foi aqui que
criamos toda a interface do usuário e criamos a função show
hide widget Vamos abrir a função
show widgit. Perceberemos que precisamos adicioná-lo à enumeração.
Vamos fazer isso. Vamos abrir o,
vamos aos widgets do jogo. Vamos somar a Ascensão. Vamos salvar aqui e voltar para o controle do
player. E agora você vê que
tem um alfinete para isso. Agora vamos copiar este
widget de peça e vamos pesquisar,
vamos ver aqui, o
pop-up Ascension, clique com o botão direito do mouse Promova isso para uma
variável e chame-a pop-up de
ascensão,
assim como antes Vamos pegar esse
pop-up de ascensão e convertê-lo em um get validado quando não
for Vamos criar a interface do usuário. No entanto, sempre que for válido, vamos arrastar a partir daqui e
dizer adicionar ao ponto de vista Vamos
adicioná-lo à tela. Se for válido,
vamos adicioná-lo à tela. Não faz sentido
criá-lo se ele já for válido. Vamos adicionar este
aqui e aumentá-los. Agora vamos voltar para o widget
ocultar aqui. O que precisamos fazer é,
sempre que fecharmos o widget, arrastar esse
pop-up de ascensão, clicar com o botão direito do mouse
e convertê-lo em
um get validado, e convertê-lo em
um get validado conectá-lo
e
removê-lo Sempre que quisermos fechá-lo, podemos removê-lo da tela dizendo remover do Pai. Eu guardo tudo. Agora
estamos prontos para usá-lo. Vamos às plantas
ou, na verdade, à interface do usuário Agora, isso acontece sempre que eu clico no botão
no widget principal Se eu for aqui, esse botão aqui, vou mudar o
nome para Button Ascend Vou ver o gráfico. Agora aqui você pode clicar nele e clicar no evento clicado O que deve acontecer quando
você clica nesse botão? O que deveria acontecer
é que eu quero pegar meu controle de jogo
e mostrar o widget, o menu pop-up Eu posso ver aqui, eu não tenho uma variável de
controlador de jogador. Na verdade, vou
criá-lo aqui na construção
do evento como esta. Vamos, como antes,
obter o controle do player e,
em seguida, obter a referência do
controlador
de reprodução na interface do blueprint E clique com o botão direito para promover isso para um controlador de
player de chamadas variável. Agora temos isso.
Vamos descer até aqui. Vamos arrastar esse controle
do player e dizer Mostrar widgets ocultos Vamos
selecionar Canine Pop up. Vamos clicar em Mostrar. Mas também queremos ocultar o menu principal. Na verdade, basicamente vou arrastar isso também
e dizer Mostrar Ocultar Widgets Vou esconder a interface principal. Já está assim. Compilar. Se você clicar em Jogar, clicar em concordar,
poderá ver que ele aparece Na verdade, vamos fazer
a mesma coisa aqui. Vamos remover isso
da tela. Sempre que clicamos no lápis, vamos chamá-lo de
lápis de botão aqui em cima. Vamos até o gráfico e clique em “ Vamos excluir tudo
isso por enquanto”. Novamente, precisamos do controlador de
jogo. Então, vamos seguir em frente e
fazer essa construção de evento. Vou apenas
copiá-lo do principal aqui. Basta copiar tudo isso
e colar aqui. Assim como antes, lembre-se de clicar nessa linha de controle de
voo criada como uma variável como essa. Então, agora temos isso.
Na verdade, vamos copiar e colar aqui. Não precisamos escrever
as mesmas coisas repetidamente. Sempre que clicamos em cancelar, queremos abrir a interface principal, mas queremos fechar
o pop-up Ascension Vamos tentar isso. Abra-o, clique em Cancelar e
vejo que está funcionando bem. Vá em frente e salve tudo, e vamos
para a próxima.
113. 13.04 Configurando o evento de jogo de reinício: Tudo bem, agora sempre que
clicarmos no Ascend aqui, na verdade eu vou
deletar a música só que
possamos trabalhar aqui
sem a música Eu só vou clicar nele. Em seguida, clique no multiplicador de
volume para zero. E se eu clicar em jogar agora sempre que clicar em
Ascender e Ascender aqui, quero reiniciar o Isso é basicamente
o que eu quero fazer. Basicamente, estamos reiniciando
o jogo e dando
ao jogador uma quantidade extra
de dano Vamos continuar e
reiniciar o jogo. Do jeito que fazemos isso,
vamos realmente fazer
isso dentro do modo de jogo porque é aqui que faz
mais sentido aqui embaixo. Clique com o botão direito do mouse e crie
um novo evento personalizado. Vamos chamar isso de jogo
de reinício. Há muitas
variáveis que precisamos reiniciar porque
, na verdade, precisamos
reiniciar todas as variáveis com
as quais
trabalhamos até agora. Nem todos
, mas aqueles que são muito importantes e
exibidos na tela. Vamos começar, por exemplo, com o nível que você
desbloqueou e o nível atual Deixe-me arrastar
esse nível desbloqueado, arrastá-lo para dentro e configurá-lo como um Novamente, isso é o que
era desde o início. A mesma coisa com
o nível atual. Vamos arrastá-lo e configurá-lo como um. Vamos também remover todos
esses botões aqui. Quando você tiver
todos esses botões, precisará removê-los. Vamos fazer isso obtendo
o controle do player. Vamos encontrar o Maui.
Vá em frente e pegue. Então, precisamos
obter a lista de níveis.
É assim que a chamamos. Se você não se lembra de como
o chamou, pode sempre abrir o Maui Você pode clicar nessa lista
e chamá-la de lista de níveis. Estamos recebendo esse menu. Estamos recebendo a lista de níveis. Vá em frente e pegue. arrastar daqui crianças claras. Vamos remover todos
os componentes secundários que estão dentro dessa lista. Sempre que eu removo todos eles,
lembre-se de que também
removemos o nível um. Precisamos adicionar o
nível um também. A maneira como podemos fazer
isso é diretamente
do controle do player
e temos essa chamada interface de usuário de botão. Se você não se lembra disso, o que é natural, porque
trabalhamos com isso há algum tempo e às vezes eu também esqueço de
mim mesma, como chamei isso. É sempre bom
voltar e ver uma interface de usuário de botão.
Basicamente, adiciona esse
nível atual à lista de servidores. Se eu voltar ao modo de
jogo e adicionarmos essa
interface de botão de nível, ela será de nível um. Basicamente, o
nível desbloqueado que temos aqui. Vamos arrastar o
nível desbloqueado e adicioná-lo. Agora temos os níveis corretos. A próxima coisa em
que queremos trabalhar é a quantidade de moedas que
o jogador tem. Precisamos de uma referência
ao jogador, e posso ver que não temos
uma variável para o jogador. Na verdade, vamos adicionar um aqui. Deixe-me arrastar tudo
isso. Agora, este está no início do jogo. No início do jogo,
vamos clicar com o botão direito do mouse e dizer obter personagem do jogador,
digamos, obter referência
do jogador na interface do blueprint Vá em frente e
conecte-o. Vamos clicar com o botão direito do mouse e promover essa
variável chamada peão do jogador Vamos nos conectar novamente a este e apenas
empurrá-los de volta novamente, Compile Agora, o que podemos fazer aqui
é enfrentar esse jogador e dizer a
quantidade de moedas. Podemos definir a quantidade
de moedas como zero, mas também precisamos atualizar
a interface do usuário. Não me lembro totalmente
da lógica aqui. Se eu voltar para o jogador, abrir o player aqui, atualizamos a quantidade de moedas. E é essa que está
no WB principal, que chamamos de quantidade de
moedas de atualização Vamos copiar essa
parte do código. Vamos voltar ao modo de
jogo e colar. Basicamente, não precisamos
escrever mais código. Podemos simplesmente copiar e
colar os que
já temos e conectá-los. Faça um nó de rota traseiro como
este. E agora isso está definido. Ok, a próxima coisa que
queremos corrigir
também é a quantidade de
itens que compramos aqui. Então, precisamos reiniciar
isso também. Para a porta de itens, também temos esse ponto de item variável
dentro do player. Se eu voltar ao modo de jogo, copio o plano do jogador
aqui e
procuro os bots à frente e
corrijo a partir daqui. E então diga claro,
você limpará todos
os valores dentro deste
mapa sempre que eu os limpar. Também quero atualizar a interface do usuário. Quando você atualiza
a interface dos cartões de itens, basicamente
recria todos os itens Porque lembre-se de que, quando
criamos os cartões de itens da loja, basicamente
limpamos
os anteriores. Podemos seguir em frente e
voltar ao modo de jogo. Podemos pegar o
controle do player aqui e arrastar e dizer Criar cartões de itens da loja. Vá em frente e se conecte. Agora, a última coisa é que também precisamos atualizar o
DPS para o jogador Precisamos reiniciar o
DPS total e o dano do cursor. Vamos voltar ao modo de jogo. Vamos novamente pegar o
jogador assim. Vamos pegar o DPS total defini-lo como zero, porque é
isso que é por padrão Vamos pegar o dano do cursor
e definir o dano do cursor. Agora, o dano do cursor
é 15, eu acredito. Portanto, se você clicar
nele, poderá ver o valor padrão que
você definiu para o seu jogo. E vou voltar para
15, que é o padrão
para o meu jogo aqui. E podemos simplesmente fazer
uma anotação artística traseira e tudo ficará ótimo. Ok, então a última coisa é
que queremos definir o
nível atual em que estamos, porque temos esse
nível atual definido e ele também gera o inimigo desse
nível e inicia a rodada em que
precisamos fazer isso Vamos voltar aqui.
Digamos que defina o nível atual. Vamos adicionar o nível em que
estamos , que é
o nível atual. O nível atual,
reiniciamos para um. Novamente,
aqui, se você se lembra
do primeiro, nível
atual definido como um
seria definido como um Agora terminamos este jogo
de reinício. Vamos realmente ver
se funciona. Se voltarmos, vamos ver aqui, se eu fechar
tudo isso. Eu abro a interface do usuário. Eu abro esse pop-up de
ascensão. Eu clico nessa subida, desço
e clico no botão clicado para
essa subida Vou copiar tudo
isso porque precisamos
mostrar a interface principal e também
remover o
pop-up Ascension Quando clicamos nesse botão, vamos mudar o nome dele. Não é o nível do botão, é a subida do botão.
Vamos voltar. Ok, aqui também
queremos reiniciar o jogo. Vou clicar com o
botão direito do mouse e dizer obter modo de
jogo e depois obter a referência
do modo de jogo. Então eu vou
dizer reiniciar o jogo. Deve funcionar muito bem. Vá em frente e salve e
vamos jogar e experimentar. Inimigo. Eu compro algo aqui
e ligo o nível. Se eu clicar em concordar
e depois subir, você pode ver que ele
reinicia Ele reinicia a quantidade
de itens que eu comprei. Também reinicia a progressão
de nível aqui e a quantidade de moedas
que eu tenho. Vamos tentar novamente. Se eu disser ao inimigo que
compro algo nas lojas, reiniciamos todo o progresso e tudo está
funcionando bem Isso foi tudo para
reiniciar o jogo. E vamos passar
para a próxima.
114. 13.05 Mostrando a ascensão no final do jogo: O que queremos garantir agora
é que, quando você clica em jogar, queremos ter certeza de
que essa ascensão disponível só seja mostrada quando o jogador
chegar ao final do jogo Digamos que, por exemplo,
em meu critério sempre que o jogador comprar todos os itens
em uma certa quantia
, essa ascensão
disponível será mostrada Vamos seguir em frente e fazer isso. Vamos fazer isso dentro
do modo de jogo. Vamos abrir o
modo de jogo aqui dentro. Vamos criar uma nova função. Vamos chamar essa função
conforme os critérios atendidos. Por exemplo, ele
verificará se os critérios foram atendidos. E então ele mostrará
esse widget agora para garantir que ele esteja oculto desde o início.
Vamos para a interface do usuário. Primeiro, vamos
abrir a interface principal. Dentro da interface principal,
vamos clicar aqui. Aqui na sobreposição
da Ascensão. Vou
mudar o nome dessa sobreposição porque
vamos ocultá-la, então é sempre bom
saber o nome dela Vou chamá-lo de
Overlay Ascension e configurá-lo como Também como um começo aqui
na visibilidade. Em vez de não ser testável, vamos configurá-lo para colapso Não é do nosso ponto de vista. Se você reproduzir o clipe agora,
verá que ele não é mais exibido. Mostraremos isso sempre que
esses critérios forem atendidos. Agora, o critério, sempre que você comprar uma certa
quantidade desses itens, mostrará que precisamos
do mapa local do item. Isso está dentro do nosso player. Vamos pegar ou obter uma
referência ao jogador, e já temos
isso aqui. Continue jogando. Vamos retirá-lo
e dizer os pontos dos itens. Vamos pegar esse mapa que
criamos anteriormente. Agora precisamos obter todas
as chaves dele. Os valores são
basicamente chamados de chaves. Todas as chaves estão aqui. Também
podemos ver os valores deles. Vamos atacar a partir
daqui e dizer as teclas novamente e arrastar,
depois conectar aqui Agora temos todas as chaves. O que eu quero verificar primeiro
é se temos todos os itens? Porque realmente não
importa repetir tudo isso e verificar quantos itens
temos , se nem
mesmo temos o item. Só para fins de otimização, vamos primeiro verificar se o
jogador tem todos os itens antes de
examiná-los e ver quantos existem de cada item. Vamos pegar isso e dizer que
o comprimento é esse comprimento, isso
é igual? Vá
em frente e selecione isso. Isso é igual à quantidade
de itens da loja que você tem? E como podemos obter
quantos itens da loja temos? Na verdade, isso é muito fácil porque agora,
aqui no modo de jogo, vamos definir isso no
jogador no início. Jogue aqui no modo de
jogo depois de eu definir os peões
e os pontos de desova Na verdade, vamos fazer isso
antes de gerarmos o inimigo. Desconecte este
e vamos atacar a partir daqui e dizer obter a tabela de dados Até agora, estamos
usando este. Obtenha a linha da tabela de dados, mas
agora vamos usar esta. Obtenha os nomes das linhas da tabela de dados. Vamos obter todos os nomes das linhas
da tabela de dados para a tabela de dados de informações. Aqui estão todos os nomes dos itens com este comprimento
e, dizendo, isso lhe dirá
quantos itens temos. Por exemplo, se você tiver
11 itens, ele dirá 11. Vamos clicar com o botão direito do mouse nessa
e promovê-la a uma variável e chamá-la
de quantidade de itens da loja. Vá em frente e conecte-o. Agora, assim,
conecte isso também. Agora, o que podemos
fazer, vamos compilar. Se você quiser ver o que ele faz, você sempre pode criar
uma sequência de caracteres impressa. Sempre use uma string de impressão se quiser ver
o que está fazendo. É um indicador. Você pode clicar em
reproduzir, e aparece 11 aqui no canto superior esquerdo. Isso está funcionando perfeitamente. Vamos compilar. Vamos
voltar aos critérios atendidos. Vamos colocar essa quantidade
de itens da loja aqui e depois fazer uma filial. O que estamos basicamente
fazendo é pegar as chaves dos itens, pegar o comprimento deles. Basicamente, estamos verificando
quantos desses itens
compramos. E estamos comparando isso com
a quantidade de itens da loja. Se a quantidade de itens que
compramos for igual à
quantidade de itens da loja, isso significa que comprei todos esses itens pelo menos uma vez. Depois de saber que
comprei todos esses
itens pelo menos uma vez, o comprimento do pote de itens
será igual à
quantidade de itens da loja. Se isso for verdade, vamos
continuar com o código. Se isso não for verdade,
podemos, podemos simplesmente deixar isso porque não
queremos fazer nada. Vamos continuar a partir daqui.
E agora queremos que os valores sejam arrastados daqui Ou você pode, basicamente,
apenas para torná-lo mais limpo, você sempre pode arrastar aqui novamente e depois arrastar
e dizer valores. Agora você está obtendo os
valores dessas chaves. Basicamente, as chaves estão aqui
e os valores estão aqui. Agora você está jogando
com os valores aqui. Agora, para os valores que
você
dirá para cada loop com Brick. Pegando este, o que
queremos verificar é se compramos uma
certa quantidade desse item, por exemplo, digamos que
o jogador tenha que comprar pelo
menos dez itens
de cada um antes. A ascensão aparece. Vamos
examinar todos os valores
dos itens e
verificar
se eles estão nessa
quantidade de bots. Basicamente, o que quer que definamos, se eu disser que é maior ou igual
ao que escrevo aqui, por exemplo, é
maior ou igual a dez e eu posso fazer uma ramificação. Então, o que eu quero fazer é criar um contador. Vamos fazer uma variável local. E vou
chamá-lo de balcão local. Vai ser apenas um
contador que conta para mim. Começa do zero. Vamos dizer este
contador mais mais. Sempre que descobrirmos que
esse critério foi atendido, adicionaremos
um a esse contador. Se compramos dez itens
de cada um desses itens, esse contador deve ser 11, porque temos 11 itens. Sempre que estiver 11 aqui
no final, ele
percorrerá todos eles e será esse L plus local, o que significa basicamente
mais um. Se fosse zero, será um. Se fosse um,
serão dois e assim por diante. Vai passar por eles. E se esse contador local for igual à quantidade de itens da
loja, que é 11, basicamente esse contador
será 11 se tivermos comprado essa certa quantidade de itens de cada um desses itens, porque temos novamente 11 itens, vamos fazer uma filial
e dizer: isso é verdade? Se isso for verdade, queremos dizer que os critérios foram atendidos. Na verdade, vou
criar uma nova variável aqui. E é apenas um ouro chamado critério de
ascensão atendido. E transforme-o em um lingote, vá em frente e conecte-o
aqui e configure-o como verdadeiro Sim, deveria ser isso. Na verdade, o que estamos fazendo aqui. propósito, vamos fazer uma pausa aqui, porque não precisamos
percorrê-la sem quebrá-la. Porque aqui estamos usando um
para cada loop com intervalo. E isso significa que
vamos repetir esse código. No entanto, não faz sentido continuar
percorrendo eles Se descobrirmos que por causa da pena clara, não
compramos dez, por que você deveria dar uma
olhada em todas elas Porque não
vai aparecer de qualquer maneira. Porque esse não é dez. Em vez disso, isso é
basicamente para otimização, para que você não percorra o
código sem nenhum significado. Se examinarmos e
descobrirmos que um
dos itens não tem
dez itens. Mas, como escrevemos aqui, podemos
arrastar até aqui e dizer break. Estamos basicamente
quebrando o ciclo. O que estamos dizendo
é, por exemplo, que
estamos dando uma volta, dando uma
olhada na pena clara Diz, por exemplo, que
sim, compramos dez. Então, estamos mais atentos
ao balcão local. Em seguida, ele dá uma
olhada na tocha. E talvez
tenhamos comprado apenas nove. Vai dizer falso,
você não comprou dez. Se isso for falso,
vamos apenas quebrar o ciclo. Então, não examinamos
mais isso porque
não faz sentido. Não compramos todos
os itens dez vezes. Isso quebrará o ciclo e será concluído. O balcão local não é igual à quantidade
de itens de empurrão, porque talvez
fossem apenas dois aqui Então será falso e
nada acontecerá. Os critérios de ascensão só
serão atendidos quando o balcão local for igual à quantidade
de itens da loja Agora você precisa pensar
em onde faz sentido verificar isso ou
chamar essa função aqui? Agora, basicamente, faz mais sentido
no item de compra. Vamos voltar para o jogador. Foi aqui que fizemos isso. Temos esse único item de compra. Toda vez que
compramos um item, precisamos verificar se os
critérios foram atendidos. Vamos fazer isso aqui. No final, está
no modo de jogo, então precisamos pegar
o modo de jogo e dizer ascensão. E pegue esse critério de
ascensão,
vamos chamá-lo toda vez que comprarmos algo
porque precisamos verificar,
se precisarmos mostrar a ascensão, se precisarmos mostrar
a ascensão, se você clicar em Jogar e comprar todos eles,
ela não aparecerá Porque lembre-se, definimos a sobreposição
de Ascensão. Então, se eu voltar para a interface principal, configuramos essa sobreposição
para ser reduzida. Em algum momento,
precisamos mostrar isso. Vamos voltar
ao modo de jogo agora, aqui nos critérios de Ascensão, e agora vamos mostrar essa sobreposição Agora lembre-se de que essa sobreposição
está dentro do WB main, que tem a referência dentro
do controlador do player Se eu pegar o controle do
player e procurar por WB main, eu entendo isso e depois obtenho a ascensão V. Isso é basicamente
o que eu chamei. Então, posso dizer que defina a visibilidade. Vamos definir a visibilidade
para que não seja testável. Lembre-se de que o visible
basicamente bloqueará os cliques do mouse e
não queremos fazer isso Vamos fazer isso de forma testável,
compilar e salvar. Agora, apenas para fins de teste, vamos escrever um. Se eu simplesmente desativar os
sons antes de clicar em reproduzir, acho que será
irritante para você continuar tocando os sons
aqui na base inimiga Sempre que o inimigo morre. Vou apenas desativar
essa opção Reproduzir som para D. Por
enquanto, vamos clicar em reproduzir. Eu só vou comprar. Cada item. Agora, este é o último e eu
vou comprá-lo. Eu posso ver que nada está acontecendo, mesmo que devesse acontecer. Na verdade, essa
é uma boa oportunidade para tentar depurá-lo juntos e você pode
ver como eu o depuro Vamos continuar e
voltar ao modo de jogo. Basicamente, o erro
está acontecendo aqui. Vamos fazer anotações impressas em seqüências de caracteres. Isso é o que eu costumo
fazer para depurar aqui. Vamos escrever uma string de impressão. Digamos que se o
código for aprovado. Basicamente, o que estou vendo é se o código é aprovado? Se isso acontecer,
significa que funciona. Vamos escrever primeiro aqui,
por exemplo, qualquer coisa. Realmente não faz
diferença o que você escreve. Deixe-me escrever, por
exemplo, em segundo lugar aqui. Sempre que eu leio
o código aqui, o que está mostrando aqui
se diz segundo, isso significa que o comprimento
dessas chaves é igual
ao dos itens da loja, o que significa que o código está
funcionando antes de eu continuar. Vamos tentar fazer isso. Agora, dizendo primeiro que está tudo bem, devo dizer segundo sempre que
eu comprar o último. Mas você pode ver que,
na verdade, é dito em segundo lugar. Sempre que
comprei este, ainda não comprei este. Então, na verdade
, eu
já tenho a quantidade de itens da loja a quantidade de itens da loja antes de
comprar o último item. Ou eu tenho um valor padrão dentro desse item
por
engano, que vou
ver em um segundo, ou a quantidade de
itens da loja está errada. Vamos primeiro dar uma olhada
na quantidade de itens da loja. Vou apenas
deletar a string de impressão. Vou voltar ao gráfico de eventos
do modo de jogo. Vou imprimir a quantidade de itens da loja que
realmente estou comprando com isso, são 11, que eu deveria
comprar. Diz 11. Há algo errado
com a outra variável, algo errado
com o local do item. Se eu voltar para o player
e clicar nos itens, mas posso ver aqui, esse é realmente
o erro aqui. Por padrão, cliquei
no sinal de adição e adicionei um item vazio aleatório E eu posso clicar em Excluir aqui e clicar em Compilar e jogar Vamos tentar novamente agora. Se eu comprar um de cada item, ele vai funcionar agora. E também vai
me mostrar a Ascensão disponível. Posso clicar em Ascender
e subir aqui e depois reiniciar o jogo Agora precisamos esconder isso novamente, sempre que subirmos, vamos
realmente fazer isso muito rapidamente Nós podemos fazer isso. Vamos
encerrar isso. Vamos voltar para a interface do usuário. E vamos abrir
esse pop-up aqui. Vamos fazer isso aqui sempre que
clicarmos em Ascend, aqui sempre que clicarmos em
Ascend e reiniciarmos o jogo Vamos fazer isso antes de
reiniciarmos o jogo. Vamos pegar o
controle do player novamente. Depois de entrar, vá para a central do WB. Então vamos pegar
novamente V Ascension. Então, vamos afastar
isso ainda mais. Basicamente, queremos definir a
visibilidade como antes, mas agora queremos definir
a visibilidade como reduzida como
antes, reduzida e, em seguida,
conectar esta E então isso deve
funcionar muito bem. Ok, agora tudo está funcionando e vamos
continuar com o próximo.
115. 13.06 Criando a estrutura de ascensão: O que eu quero fazer
agora é
criar o Multiplicador
para a Toda vez que subimos para um novo nível ou
reiniciamos o jogo, quero
me causar mais danos Por exemplo, o
jogador deve ter 300% a mais de dano do que antes, e tudo causa
300% a mais Vamos definir o multiplicador e podemos fazer isso muito
facilmente por meio uma estrutura e uma tabela de dados Vamos voltar às
estruturas e
clicar com o botão direito do mouse em Blueprints e
depois criar uma nova estrutura Vamos chamar isso
de ST Ascension. Você também pode chamar o
multiplicador de Ascensão , que é o que é Vamos abri-lo
em vez de aqui, vamos transformá-lo em um flutuador E, basicamente, o que queremos
fazer é ter o multiplicador Ascension Damage Esse é o único valor que precisamos. Agora vamos fechá-lo. Vamos até
Tabelas de dados e clique com o
botão direito do mouse em Tabela de dados diversos E vamos selecionar a
estrutura que acabamos de criar. Você pode ver no blueprint que você basicamente faz a mesma
coisa repetidamente. E sempre que você ficar
realmente bom nisso, você pode basicamente criar
sua própria mecânica usando apenas as ferramentas
que aprendeu Este chamado
basicamente de ascensão. Para este, vamos salvar e agora
abrir o Google Sheets Basicamente, aqui,
vamos fazer um novo. Vou apenas duplicar
esse item para, por
exemplo, chamarmos
esse novo de T, ascensão Vamos deletar tudo agora. Pois o ID é em que
nível de ascensão estamos. Começamos com o nível zero porque não
temos nenhuma ascensão. Basicamente,
você pode pensar
nisso como a quantidade de Ascensões que
fizemos ou a
partir de 01, e você pode continuar
até quantas quiser Então você pode dizer
Damage Multiplier. Basicamente, você deve
chamá-lo do mesmo nome, Ascension Damage Multiplier Portanto, o mesmo nome do que
você escreveu dentro
da tabela de dados. Agora, para o multiplicador, ele tem que ser um quando você está em ascensão
zero, porque você multiplicará
tudo por um, que significa que você está apenas recebendo
o dano que acabou de sofrer
anteriormente, que é basicamente
o dano básico que
você definiu aqui
nas informações do item, tudo Agora, sempre que subimos, você pode, por exemplo, dizer três Isso significa que agora você tem três vezes
mais danos do que antes. E então você pode dizer,
por exemplo, sete. E eu vou
escrever números aleatórios, vou dizer isso
vezes 1,5 ou qualquer outra coisa. E você pode simplesmente arrastar
para baixo e clicar aqui para remover todas
as casas decimais Agora podemos simplesmente usar isso. Ok, vamos clicar em Download de arquivo,
baixar CSV Agora eu tenho essa ascensão DT. E eu vou
voltar para o meu motor. E aqui agora podemos
arrastá-lo para aqui, e ele deve carregar
tudo corretamente. Tudo bem, agora você
tem os multiplicadores. E vamos continuar
indo às bibliotecas. Abra-o. Vamos criar
uma nova função aqui. Vamos clicar em Adicionar,
clicar em uma função, chamá-la de y como multiplicador,
por exemplo,
ou multiplicador de danos de ascensão Você pode chamá-lo do
que quiser. Agora, para essa entrada, basicamente
precisamos saber em
que nível estamos? Quantas Ascensões
fizemos até agora? Transformando-o em um número inteiro, podemos chamá-lo de Nível de Ascensão. Agora, digamos que seja uma mesa
como antes. Vamos pegar a tabela de dados da
Ascensão. Agora, novamente, você não pode
conectar isso a isso porque primeiro
precisa dizer duas cordas. Você precisa
convertê-lo em uma string
e, em seguida,
conectá-lo aqui, e ele o
converterá automaticamente em um nome para você. Você pode arrastar a partir
daqui e dizer return. Você pode retornar as informações aqui arrastando até aqui E agora você pode dizer
informações sobre Ascensão, por exemplo, compilar. E lembre-se de clicar nessa
função e clicar em Pure. Novamente, estamos apenas obtendo
algumas informações daqui. Vamos salvar tudo. E agora podemos usá-lo
nas próximas lições.
116. 13.07 Adicionando o multiplicador de ascensão: Agora, o que temos que fazer
é multiplicar todo o dano que estamos causando no jogo pelo multiplicador Portanto, estamos obtendo a
quantidade correta de dano. Para fazer isso, precisamos saber onde causamos
todo o dano? Podemos encontrar isso facilmente. Vamos primeiro até o jogador. Agora, no player
aqui, por exemplo, no item de compra
fizemos isso, TPS Agora, o que você pode fazer é
sempre
clicar com o botão direito aqui e clicar aqui. O que eu faria é encontrar referências para isso porque
temos o DPS aqui Se conseguirmos encontrar todas
as referências aqui em
todos os esquemas, poderemos descobrir onde estamos fazendo DPS ou para onde estamos
levando essas informações, botão
direito do mouse em Encontrar referências e clicando
nesse pequeno ícone para encontrar as referências
dentro de todos os Não só essa. Ok, vou colocar isso no meu segundo monitor
e
basicamente estou trabalhando com
este primeiro. Agora, o que eu quero fazer
é multiplicar essa quantidade de DPS pelo multiplicador de Ascensão,
estou recebendo
a quantidade
correta de
dano em comparação com o multiplicador de dano em comparação com Vou clicar com o botão direito do mouse e dizer Obter multiplicador de danos de ascensão Podemos pegar isso
e dizer Break agora, podemos
multiplicar por este Talvez eu devesse ter chamado
de algo mais curto, mas é sempre bom ter um nome descritivo para
saber o que você está fazendo Basicamente, quando lançamos
esse DPS, queremos pegar isso
e dizer multiplicar E eu vou simplesmente
desconectá-lo daqui e colocá-lo aqui Realmente não faz
diferença, mas parece melhor. Vou multiplicar o
DPS pelo multiplicador, depois vou arrastá-lo
agora e conectá-lo
aqui agora e conectá-lo Basta arrastá-lo para baixo, para
que fique melhor assim. Agora estamos multiplicando o
multiplicador, então, por exemplo,
se o multiplicador for três, podemos dizer três vezes podemos E isso mostrará ou aumentará o dano
do cursor na quantidade correta. Agora precisamos do romance essencial. Precisamos saber em que
nível estamos? Vamos criar essa variável
dentro do modo de jogo. Se você abrir o
modo de jogo e dentro daqui, vamos criar uma nova variável
chamada nível de Ascensão Vamos transformar esse em
um número inteiro. Compile por enquanto. Nós realmente não fizemos nada com esse nível de ascensão, mas isso realmente não
importa agora Vamos voltar para o jogador
e pegar o modo de jogo. Agora, se eu conseguir encontrá-lo
aqui, nível do modo de jogo. E podemos simplesmente pegar esse nível de
Ascensão e seguir em frente e
conectá-lo a este Basicamente, estamos obtendo
o nível de ascensão, que agora é zero, se o nível de ascensão for zero, se você voltar às
tabelas de dados no nível zero,
o multiplicador será um, o
que basicamente significa que o DPS foi multiplicado por um, que é apenas
o DPS que Isso não vai
mudar nada. No entanto, se você subir
pela primeira vez, então você tem uma ascensão de nível um, você vai multiplicar todo
o dano em três, o que significa que você tem
300% Agora vamos encontrar todos
os lugares em que temos DPS. E vou copiar todo
esse código
para que você não
precise escrevê-lo novamente. Copie todo esse código. Agora vou falar
sobre isso aqui novamente. Clique no primeiro,
é só isso aqui. Clique nos nove segundos. Informação, não causamos
nenhum dano aqui. Clique no terceiro, não
causamos nenhum dano. Clique no quarto, aqui temos alguns danos. Isso está dentro
da atualização da função. O DPS total atualiza o DPS total. Vamos fazer isso,
depois vamos
pegar esse DPS novamente multiplicado pelo
multiplicador de danos da
ascensão e A propósito,
já posso ver que temos um bug aqui porque estamos atualizando a quantidade total de DPS obtendo todos os
itens que compramos Estamos recebendo TPS para eles
e, em seguida,
os adicionamos ao DPS total Na verdade, isso também
está acontecendo com o mouse aqui. Na verdade, está adicionando
isso ao DPS total. O que eu quero
fazer aqui para evitar o bug é clicar no item. Então eu vou dizer que não é igual. E vá em frente e selecione
diferente do clique do mouse. Não queremos adicionar
o DPS de cliques do mouse ao
DPS total Um pequeno bug que estava aqui. Vamos apenas garantir que não
adicionemos isso. E eu vou fazer um galho. Vá em frente e conecte-o
aqui. E conecte-o novamente. E agora deve
funcionar muito bem. Agora, vou
reestruturar as coisas novamente. Tudo bem, agora isso
acabou e
estamos multiplicando isso pelo multiplicador
da ascensão Vamos continuar com a próxima. Se eu voltar e encontrar minhas referências anteriores
e clicar na próxima, aqui também estamos fazendo o DPS Isso está atualizando o
ToolTipi. Novamente. Cole-o. Vá em frente e multiplique isso
com o multiplicador de Ascensão
e reconecte-o e Agora estamos multiplicando corretamente. Compile E temos um bug aqui. Diz que não temos
a referência do modo de jogo
e, na verdade, não temos. Vamos prosseguir e obter
a referência do Gamode. Agora, antes de fazer tudo isso, vou dizer
obter o modo de jogo e seguida, digamos, obter referência do modo de
jogo. E vá em frente e conecte isso. Isso, eu vou atacar
daqui e conectá-lo. Agora você também pode clicar com o botão
direito do mouse e promover isso
para nossa variável, se desejar. Na verdade, vamos fazer isso
para deixá-lo um pouco mais limpo. Conecte-se, você pode
fazer isso das duas maneiras. Basta
conectá-lo diretamente ou agora pegue essa variável do modo de jogo
e conecte-a aqui embaixo. Isso é a mesma
coisa. Tudo bem, vamos agora compilar também Vamos garantir que
o dano do cursor esteja sendo exibido corretamente. E será exibido corretamente porque já
estamos multiplicando aqui no player
sempre que causamos o aumento
do dano do cursor
dentro do Aqui, sempre que
compramos um item,
já multiplicamos por
três, por exemplo, e o conectamos ao dano
do cursor Esse dano no cursor
deve estar correto. Esse dano aqui já está multiplicado pelo multiplicador de
adesão Então, isso também está correto. Agora vamos voltar
às referências . Clique na próxima. Não há DPS aqui. Clique
na próxima. Também não há DPS aqui. Agora, tudo deve
estar funcionando bem. Agora, só para garantir que o dano da ascensão seja
exibido corretamente. Agora vamos voltar ao modo
de jogo aqui. Toda vez que reiniciamos o jogo, vamos pegar esse nível de ascensão
e, digamos, mais, mais Vamos adicionar um ao nível de Ascensão
toda vez que subirmos Portanto, estamos obtendo a
quantidade correta de dano nisso. Agora vamos tentar isso. Se eu clicar em Play e
comprar um de cada aqui, comprarei o último e
clicarei em Ascend Este não é realmente
exibido corretamente, é apenas um texto estático. Mas vamos clicar em cancelar
e ver o dano aqui para ver se ele é realmente
exibido corretamente. Eu, cada mouse está recebendo 25 DPS e cada
pena leve dá cinco Portanto, isso deve exibir 15. Por exemplo, se eu clicar em Ascender e clicar em Ascender Agora, isso está exibindo 15. Isso está exibindo 75, o que está correto. Então agora eu tenho o triplo do dano. Deixe-me tentar jogar e tentar subir novamente. Tudo bem, então agora eu vou
comprar o último item aqui. Clique no último item. Eu posso ver isso de novo.
Estou clicando em Ascend E então suba mais uma vez. E agora o dano da
pena leve é 35, o que é correto, e 175, porque agora o
multiplicador é sete,
tudo está funcionando
corretamente porque sete
vezes cinco é igual a
35, o que é correto vezes cinco é igual a
35, o que E agora temos a quantidade
correta de dano. Ok, agora isso está funcionando. E também para ter certeza de
que estamos otimizados, vamos voltar para verificar se os critérios de
ascensão foram atendidos Sempre que crio loops, sempre
presto
atenção se estou realmente executando esse loop
nos momentos necessários Por exemplo, aqui estamos executando o loop
que está correto. No entanto, você
realmente precisa executar esse loop sempre que os critérios de
ascensão forem atendidos Porque agora você sabe que os critérios
de ascensão foram cumpridos. Você realmente não precisa executar esse loop novamente porque
sabe que ele foi cumprido. Pegue esse ouro aqui, critérios de
ascensão foram atendidos
no início do código Só queremos executar isso. Os critérios de ascensão atenderam a
essa função aqui. Queremos executá-lo sempre que
este for falso. Vamos partir disso
e, digamos, ouro, ascensão não é verdadeira, que significa que é falsa.
Isso é falso. Queremos prosseguir e verificar se os critérios foram atendidos. No entanto, se isso se tornar verdade, não
vamos executar
porque estamos
basicamente ficando falsos e não
estamos executando o código. Não queremos executar
todo esse código. Os critérios de ascensão já foram atendidos
porque são desnecessários Já
cumprimos esses critérios. Ok, lembre-se de que temos que tornar isso falso em
algum momento, porque, caso contrário próxima vez que você subir, isso será verdadeiro por padrão porque você o configura como verdadeiro aqui embaixo e nunca mais o configura como
falhas Vamos voltar ao
reinício do jogo depois disso. Lembre-se de pegar os
critérios de ascensão atendidos e defini-los como falsos sempre que você reiniciar o nível ou reiniciar
o jogo aqui Vá em frente
e salve tudo e vamos
para a próxima.
117. 13.08 Exibindo o multiplicador de ascensão: Tudo bem, nesta fase
final, temos que
exibir a quantidade correta de
dano que é multiplicada Então, se eu acessar a interface do usuário aqui
no pop-up de ascensão, basicamente
precisamos exibir
a quantidade correta aqui Agora vou
escrever um número falso, para possamos realmente ver que estamos alterando dinamicamente Então, eu vou
escrever 00 por enquanto aqui. Vamos agora para o gráfico e
basicamente precisamos alterar esse texto. Agora é chamado de temporizador redondo de
texto
e, na verdade, vou mudar
para Ascension de texto, então faz mais sentido.
E vamos compilar E agora podemos definir esse texto sempre que esse pop-up for aberto. Sempre que eu clico, o botão
Ascent aparece e queremos
atualizá-lo imediatamente Podemos fazer isso dentro
da construção do evento, que é reproduzida sempre que
esse pop-up é aberto. Vamos fazer isso aqui. O que queremos fazer é
definir o texto. Vamos pegar esse texto
e dizer definir texto novamente. Temos que usar um formato de texto porque estamos mudando
as coisas dinamicamente Novamente, direto daqui e diga formatar texto.
Saia e selecione-o. Você pode ver que estamos usando os
mesmos nós repetidamente. Se você continuar praticando, você se lembrará de todos os
nós e basicamente
saberá o que fazer sempre que
precisar criar um
novo mecânico sozinho Vamos voltar ao designer. Eu só vou
copiar tudo isso. Vou colá-lo aqui. Ele dirá que você
reiniciará o progresso, mas agora precisamos desses
colchetes aqui E digamos uma porcentagem de danos, uma
porcentagem como essa,
então mais danos. Diz que você
reiniciará o jogo,
mas com, por exemplo,
300% a mais de dano Vamos tentar fazer isso. Vamos conectar este primeiro. Agora, o que precisamos usar
é exatamente como antes, precisamos clicar com o botão direito do mouse e
dizer obter o Multiplicador de Ascensão Porque é basicamente de onde estamos obtendo as
informações. Vamos parar agora novamente
para o nível de Ascensão Precisamos que o modo de jogo
tenha essas informações Vamos tirar tudo aqui. Digamos que obtenha o modo de jogo. E então vamos começar a
partir daqui e dizer obter referência do modo de jogo. Vamos sair e conectá-lo. Agora, aqui para o modo de jogo, precisamos do nível de Ascensão Vá em frente e obtenha o nível de
Ascensão, e você pode
conectá-lo aqui Como obtemos a porcentagem? Agora estamos obtendo
o nível de Ascensão. O que precisamos fazer
é obter o multiplicador depois de
reiniciarmos o jogo Porque basicamente o que você está
fazendo aqui é que sempre que você abre esse pop-up e você só obtém
esse nível de ascensão, que é zero agora, porque você começa no nível de
ascensão zero, ele vai dizer um, basicamente 100%. Agora precisamos dividir o multiplicador
que vem depois,
se eu abrir a tabela de dados
para se eu abrir a tabela de dados fique esse número que vem
depois de sempre que
subimos , qual
é o número aqui dividido pelo 13/1 atual. E você sempre
pode arrastar isso
para a visualização e dizer 3/1, que é três vezes 100, ou seja, 300% Agora, se você tentar com o outro, se você
tentar com o outro, se você tentar com o sete, digamos que subimos
uma vez e eu estou
no nível um e eu preciso o que precisamos fazer
é dividir
esse número que vem
depois de sempre que
subimos, qual
é o número aqui dividido
pelo 13/1 atual. E você sempre
pode arrastar isso
para a visualização e dizer
3/1, que é três vezes 100, ou seja, 300% Agora,
se você tentar com o outro, se você
tentar com o outro,
se você tentar com o sete,
digamos que subimos
uma vez e eu estou
no nível um e eu preciso para mostrar a porcentagem de dano que
você receberá aumentada
ao chegar ao nível dois. Agora vamos
dizer 7/3 vezes 100. Isso equivale a 233% a mais de
dano daqui até aqui, que faz todo o
sentido. Deixe-nos fazer isso. O que precisamos fazer é pegar esse nível de ascensão e
adicionar um a ele, adicionar um a ele, porque precisamos saber qual é o
próximo
multiplicador do nível de ascensão Agora, quando temos essa
informação, por exemplo
, são sete divididos,
por exemplo, 7/3, que é a atual
, a atual Basicamente, precisamos
copiar tudo isso e excluir isso mais um e simplesmente
sair e conectá-lo. Basicamente, estamos dizendo: qual é o próximo dano multiplicador Estamos dividindo isso
pelo atual. Então, isso precisa ser
convertido em porcentagem. Agora você pode fazer isso de duas maneiras. Você pode pegar
isso e dizer como porcentagem e pode sair,
selecioná-lo e conectá-lo aqui. Agora, eu não gosto desse
método porque ele
vai mostrar
as casas decimais Por exemplo, se for 7/3 aqui e dissermos
multiplicado por 100, vai dizer
233,33 Eu não gosto flutuadores ou
das casas
decimais que eu quero que Em vez disso, vou dizer multiplicado por 100 assim Então você pode dizer chão
e ler sobre isso.
Se você segurar o mouse sobre ele, ele diz -1,6 se torna
-2,1 0,6 se torna um, ou você pode usar o
chamado E esse é
basicamente o oposto. 1.6 se torna dois e assim por diante. Eu só vou dizer chão. Basicamente, ele removerá
as casas decimais e , em seguida,
exibirá isso para você Agora, isso deve funcionar muito bem. Agora, se eu conectá-lo aqui
, ele definirá o texto sempre que eu abrir esse
pop-up e eu poderei compilar E vamos ver se
funciona agora se eu comprar cada um desses
itens como antes, e depois clicar em As. Agora vai
dizer que vamos reiniciar o progresso, mas com mais
300 de dano. Agora precisamos da porcentagem,
obviamente, do sinal. Então, vamos voltar e corrigir
isso rapidamente. Se eu clicar aqui
e definir um sinal de porcentagem, isso deve funcionar,
basta compilar bem Tudo bem, agora
eu vou comprar o último e
vou clicar em As. E agora vai
me mostrar 300%, o que está correto. Agora vou
clicar em Ascend e vou jogar
novamente e ver se tudo
está funcionando agora Estou comprando o último item
mais uma vez e vou
subir pela segunda vez E agora vai dizer que você
reiniciará a parte de progresso com
233% a mais de dano,
prosseguirá e subirá E agora você pode
ver que tudo está multiplicado corretamente, ok. Então foi isso. Por enquanto, tudo
está funcionando corretamente. E agora podemos continuar na próxima seção em
que estamos finalizando o jogo E podemos ir em frente
e
limpar tudo e empacotar o jogo. Então, vamos seguir em frente e passar
para a próxima lição.
118. 14.01 Limpando o projeto: Tudo bem, agora
terminamos o jogo e agora você tem que
limpar o projeto. Agora, o que eu geralmente faço é que,
se tenho um projeto maior, eu o limpo pelo menos
uma vez por semana. Então, talvez toda sexta, todo sábado, eu não sei. Normalmente, eu não o
limpo todos os dias porque o código
muda constantemente. Então, às vezes você
limpa alguma coisa, mas precisa
trocá-la no dia seguinte. Não faz nenhum sentido
porque você precisa limpá-lo novamente, então
dá muito trabalho. Normalmente, limpo uma vez por semana ou duas vezes
por semana no máximo. Então, vamos, por exemplo,
ao projeto. Eu só vou aqui
nesta lição. O objetivo é dar dicas de como
limpar o projeto. E eu também vou limpar esse projeto e entregá-lo a
você como o projeto final. Por exemplo, se iniciarmos
o controle de jogo. Então, se você abrir o
controle de jogo aqui e abrir o gráfico de eventos,
verá que está um pouco confuso. O que eu costumo fazer é, por exemplo, aqui em cima, você pode selecionar todo
o evento, começar ,
jogar aqui e
clicar em C Você cria um comentário e eu posso, por exemplo, escrever begin, Play. Eu sei que é Begin. Jogue.
Sempre que eu diminuo o zoom , também
posso clicar nesse
comentário e clicar
no balão de exibição Quando ampliado, posso ver isso
sempre que estou ampliado. Eu sei que este é o início do jogo, então não preciso ampliar
constantemente para ver o que é. Você também pode clicar nele e alterar a cor do comentário. Você pode alterá-lo para
o que quiser. Você pode alterar a cor aqui, alterar o alfa e
assim por diante. Clique em OK. Agora você também pode
salvar essa cor
clicando e arrastando-a
até aqui Clicando em OK. Da próxima vez
que você criar um comentário. Por exemplo, neste player
inicializado, você pode clicar em C. Por exemplo, você pode escrever Initialize Você pode clicar em Mostrar
bolha e Zoom. Por exemplo, você pode clicar
nessa cor de comentário. E agora você pode clicar
na cor
salva aqui. E clique em ok. Na verdade, vou
fazer
isso durante todo o projeto antes de
entregá-lo a você. A segunda coisa
que você pode fazer é também clicar
nessas variáveis. E você pode atribuir a eles
aqui uma categoria. Por exemplo, posso dizer widgets e pressionar Enter E agora você pode ver que está
em uma categoria de widgets. Se eu clicar no próximo
widget aqui embaixo, posso clicar aqui e clicar nos widgets E eu posso basicamente fazer
isso para todos eles. Todos os widgets estão juntos
dentro dessa categoria. E você pode ver que eu
posso minimizá-lo. Agora eles estão dentro daqui. Também é assim que você pode
limpar todas as variáveis
que você tem. Vá em frente, compile e
salve tudo agora. Basicamente, você pode fazer isso
em cada projeto. Por exemplo, indo
para o modo de jogo. No modo de jogo,
talvez eu possa juntar todos esses
pontos de desova Então, eu posso escrever uma categoria chamada pontos de desova, por exemplo E eu posso basicamente
arrastá-los até aqui. Vá
em frente e faça isso. Vá em frente e limpe seu
projeto. Crie bens comuns. Agora, a terceira coisa
que eu costumo fazer, novamente, é
criar notas de redirecionamento Como você aprendeu, clique
duas vezes. Crie algumas
notas de redirecionamento e tente
limpar seu projeto da melhor maneira
possível O que eu também costumo fazer é reorganizar todos os
eventos que criei Por exemplo, esses
são os cortes de itens da loja, esse é o item de desova Por exemplo, você pode
pegar isso e colar aqui ao lado
e talvez comentar isso. Você também pode
voltar aqui e ver se eles
estão na ordem correta. Por exemplo, se você quiser que isso fique aqui embaixo, e assim por diante. Então, vá em frente e tente organizá-lo da melhor maneira possível. Se houver algumas coisas que você
deseja converter em
uma função em vez de um evento,
você também pode fazer isso. Por exemplo, digamos que
isso reinicie o jogo. Se você quiser fazer
isso como uma função, vamos realmente
transformá-la em uma função. Normalmente, para funções,
você não pode converter coisas em uma função se
forem eventos cronometrados Por exemplo, se eu tiver um atraso. Você pode ver que este ícone aqui
significa um evento cronometrado, fly-rod. Clique aqui e diga
fechar para funcionar. Isso me dará um erro
porque você não pode converter funções
em funções. Lute, clique e diga a linha do tempo também e adicione uma linha do tempo. Esta também é a primeira vez. Não consigo clicar com o botão direito
do mouse e fechar para funcionar Isso me causará um erro. Eu posso ver isso
olhando o ícone na parte superior e não
tenho tempo. Basicamente, posso transformar
isso em uma função. Eu costumo fazer isso
às vezes porque, se você criar muitos eventos
em um gráfico de eventos, ele realmente começará a funcionar. Se você tiver um jogo grande o suficiente, ele começará aqui sempre que você entrar
neste plano Agora você pode
transformar esses eventos em funções ou
criar novos gráficos de eventos Se você clicar
aqui no sinal positivo, você cria um novo gráfico de eventos. Por exemplo, fizemos isso no curso de tiro em primeira
pessoa Por exemplo, você pode
chamar isso de ascensão. E você pode ter todo o código de
ascensão aqui Se for muito código, o que você basicamente pode fazer
é copiar tudo isso basicamente controle x) para
extraí-lo e ir para
o próximo gráfico par. Você pode clicar no controle V. Agora
você o tem dentro
desse gráfico par. Você não precisa ver isso aqui
no normal, mas
você o tem aqui embaixo. Em vez disso, basta clicar no controle Z porque não temos
muito código aqui. Vou deletar
esse gráfico uniforme se você quiser transformar
coisas em uma função. Você também pode fazer isso
voltando ao gráfico de
eventos aqui. Então, o que você faz ou
o que
eu geralmente faço é selecionar todos os nós
aqui sem o evento. Posso gravar click collapse
em uma função novamente. Normalmente eu ligo para isso para começar. Se eu apenas arrastá-lo até aqui, chamo de reiniciar o jogo. Em seguida, escrevo, clique neste evento para ver
onde eu o usei. Encontre referências e
clique no ícone, todos os lugares em que o
usei. Essas referências são
basicamente apenas essa, não
é o que eu usei. Clicando no
próximo, Reinicie o jogo. Aqui embaixo, posso sair
desse modo de jogo agora
e dizer Reiniciar o jogo. Agora estou usando minha função
em vez do meu evento. Eu posso deletar isso e
posso conectá-lo aqui. Acabei de compilar aqui, volto ao modo de jogo, excluo este evento agora E exclua essa função,
porque agora você está basicamente usando essa função
para reiniciar o jogo. também uso esse método Às vezes, também uso esse método para
limpar meu gráfico de eventos. Quando vejo
que alguns eventos eu realmente
não preciso, posso
transformá-los em uma função. Agora, qual é a
diferença entre essa função que
criei e esse evento? Absolutamente nada. Basicamente, ele apenas limpa seu gráfico de eventos Agora você pode ver que
fica mais limpo. E mesmo que você
queira que esse
nível desbloqueado seja uma função, você pode fazer isso
reduzindo-o em uma Lembre-se de clicar com o botão direito do mouse
aqui, encontrar referências. Vá em frente e clique
no pequeno ícone. Onde quer que você tenha usado isso
aqui na base inimiga, você pode
transformá-lo em uma função e vez disso, usar a
versão da função. E então você pode
excluir este. Vá em frente e
limpe seu projeto dessa maneira. Vá em frente e lembre-se de sempre
salvar seu projeto, e vamos
passar para o próximo, ou empacotamos o projeto.
119. 14.02 Empacotando o jogo: Tudo bem, agora é hora de
empacotar o projeto. Assim, podemos enviá-lo
para amigos e eles também
podem tentar jogar
ou para a família. Então, para fazer isso primeiro,
antes de empacotarmos, gostaria de abrir o
depurador ou o log Então, registre registros se
você simplesmente clicar em Janela
e Registro de Saída para mostrar isso. Agora podemos ver se temos algum erro ao exportá-lo. Agora, antes de fazer isso, vou clicar com o botão direito do mouse
aqui e limpar os registros. Eu começo do zero, para que eu possa ver o que está
acontecendo agora. Clicando nos filtros aqui em cima, você pode ver as mensagens,
avisos e erros Às vezes eu simplesmente removo
mensagens como essa, só
consigo ver os
avisos e erros Isso é basicamente
o que é importante, para que possamos corrigi-los. Mas, por enquanto,
vamos continuar com a mensagem. Deixe-me minimizar isso um pouco para que eu possa realmente
ver o que estou fazendo. Assim, clicando aqui nas plataformas,
acessando o Windows e
selecionando Remessa. Agora, quando você seleciona o
frete, você também precisa
ir basicamente aqui. Deixe-me fechar isso por enquanto. Indo para Editar configurações do
projeto, aqui, você precisa ir
para Embalagem. Agora, dentro da embalagem, o importante é
o Avançado aqui, clicando em Avançado.
Então vamos descer. Agora, aqui no Avançado, você precisa incluir
os mapas que deseja empacotar aqui na lista de mapas para incluir
em uma compilação de pacote ,
clicar no sinal de adição e
clicar nos mapas. Clicando nesses três pontos, selecione os mapas que você tem Se eu soubesse, estamos
dentro do projeto aqui na pasta de conteúdo e
criamos essa pasta de mapas. Vou selecionar
este mapa, Dungeon. Basicamente, o
mapa principal
com o qual estamos trabalhando clicando em Abrir. Agora, se você tiver algum
filme, por exemplo, quando os jogos iniciam e eles
têm uma tela de
inicialização, inicie o filme, você também pode incluí-lo. Se você tem diretórios extras em seu mecanismo, você não os usa, você também
pode adicioná-los aqui. Mas, basicamente, isso é tudo
o que temos que fazer aqui. Além disso, para a configuração
construída pelo projeto, vou
transformá-la em envio. E diz que se o projeto tem código ou está executando um editor criado
localmente, eu sou a favor da compilação vou
dizer que sempre construo. Sempre que transformarmos um
envio aqui para a reconstrução, vou clicar nele
ou em distribuição Eu vou marcar isso também. E agora você também está pronto
para melhorá-lo. Vá em frente e clique
nas Configurações do projeto. Mais uma vez, aqui em cima, procure por FPS suave,
aqui, taxa de quadros suave É muito importante
marcar isso , porque se
você não fizer isso, ele rodará seu jogo
com o FPS mais alto que o computador do
jogador pode rodar Eu fiz isso com o Farm Tail para começar por engano, porque eu não conhecia essa
opção que rodamos a, por exemplo, 500 FPS. 600 FPS E isso realmente prejudicará seus computadores
porque eles funcionarão super rápido
e você pode ouvir os ventiladores correndo super rápido. Ao clicar aqui, não
preciso
ter mais de 60
FPS neste jogo Não é um
jogo de tiro nem nada. E eu posso ter até
22 FPS se o computador estiver muito lento
por parte do jogador Mas, basicamente, vamos
maximizar o FPS para 62. Você também pode chegar a
122 FPS se quiser, mas vou deixar que
seja para 62 PS. Feche isso. Clique em Arquivo, Salvar tudo. Agora você pode clicar em Plataformas, Conteúdo
do Pacote Windows. Mas deixe-me abrir novamente. A saída da minha janela é bloqueada para que eu
possa ver o que está acontecendo. Clique com o botão direito para limpar as
fechaduras antes de fazer isso. Agora também o que você precisa
se lembrar de fazer aqui também, clique em Filtrar e
mostre tudo também. Eu posso ver todas as mensagens. Eu também posso ver tudo isso .
Apenas todos
eles estavam marcados. Vá em frente e clique em Plataformas
e, em seguida, clique em Windows. E então vá em frente e
empacote o conteúdo. Agora eu criei uma pasta aqui na minha área de trabalho
chamada Pacotes. Basicamente, vá
em frente e crie uma nova pasta em algum lugar seu computador, isso
realmente não importa. E vá em frente e clique
em Selecionar pasta, e ela será
empacotada aqui. Agora vai
levar algum tempo. Na primeira vez
que ele faz
isso, geralmente mostra
alguns erros porque eu nunca empacotei pela primeira vez
sem erros Porque existem alguns
erros aleatórios que aparecem em algum momento. Tudo bem, agora eu posso
ver que estamos pegando um bug aqui e diz Falha
desconhecida no cozimento. E você simplesmente para de empacotar
porque temos um erro. Então clique aqui e
clique nas mensagens, e vamos ver o que é. E diz propriedade da estrutura e diz Estrutura desconhecida. Agora, esse é um
bug conhecido no motor
uneral e
é um pouco irritante Não sei por que isso acontece, mas basicamente diz que você
tem uma estrutura desconhecida. Realmente não faz
nenhum sentido porque nós fizemos isso, está funcionando
e está tudo bem. Mas preste atenção em onde ele está e
dentro da sua interface de usuário. Informações do inimigo na Web. Se você acessar sua interface,
vá até a interface do usuário e
abra as informações do inimigo. Isso é basicamente
o que está lhe dizendo. Abra as informações do inimigo, vá para o Gráfico. A única coisa que você precisa
fazer por algum motivo é clicar em Arquivo,
Atualizar todas as notas E então isso deve resolver isso. O arquivo atualiza todas as notas. Em seguida, o próximo é o código
de nível B na interface do usuário. Apenas minimize isso, eu também vou para
o nível Cod aqui. Arquivo gráfico, atualize todas as notas. O que eu também costumo fazer é atualizar todas as notas
dentro da biblioteca Ao abri-lo, clique
no primeiro, no arquivo de informações
do inimigo,
atualize todas as notas A segunda
atualiza todas as notas, a terceira apenas para garantir que não tenhamos
esse bug novamente. Sempre que cozinhamos e clicamos em Salvar tudo, agora ele deve funcionar. Clicar em Plataformas
novamente, na verdade, deixe-me abrir primeiro o
log de saída P, clicar com o botão direito do mouse, limpar o arquivo ou as plataformas de log
e, em seguida, empacotar o projeto
novamente aqui. Agora clique aqui e mostre
todas as mensagens também só para ver se temos alguma caixa agora.
Realmente não deveria acontecer. Geralmente acontece quando
diz Estrutura desconhecida, você só precisa atualizar todas as notas
por algum motivo Não sei por que isso acontece,
mas é um pouco chato. Mas agora você pode
ver que tudo está cozinhando e tudo
está funcionando bem. Não temos erros.
Só leva um minuto aqui. Agora, você sempre pode clicar aqui e remover as mensagens. Agora o cozinheiro está completo, o
pacote está completo. O que eu geralmente faço é remover as mensagens para ver se
há algum erro no meu jogo. E você pode ver que o
projeto está super limpo. Não temos um único aviso. Não temos uma única era. O jogo está funcionando perfeitamente e é isso que queremos. Agora vamos para a
pasta Pacotes dentro da minha área de trabalho. E dentro daqui eu posso abrir essa pasta do Windows
que ele criou, e agora o jogo
está dentro daqui. Vamos tentar rodar esse jogo
fora do motor. Como posso ver, tenho
alguns erros aqui, problemas que preciso corrigir. Mas, como você pode ver, o
jogo está funcionando muito bem. Preciso reaplicar
a música e assim por diante. Mas também posso ver que o
fundo está desfocado. Também posso ver que esse texto está
muito próximo um do outro. Então, vamos
corrigir isso e
voltar todos os quatro. Para fechá-la, vou deletar
essa pasta por enquanto. Agora vamos ver qual é o problema do
embaçamento. Agora, o problema embaçado
é se você abrir,
por exemplo, essa textura de prisão de
masmorra Vamos descer até aqui
na configuração de textura. Vamos clicar em Avançado. Aqui embaixo você vê algo
chamado filtro nuclear. Em vez disso, você precisa alterar
este para o mais próximo. Quando você a altera para a mais próxima, isso significa que ela
não borrará sua textura sempre que você a
exportar ou empacotar Na verdade, você precisa fazer isso
para todas as texturas. Agora vamos ver como
podemos fazer isso facilmente. Agora, se eu clicar em Ativos
e clicar aqui, descer aqui, e aqui
temos uma textura, vou
clicar nela aqui. Ao fazer isso, podemos
ver todas as texturas que
temos no jogo dentro
dessa pasta Assets Vamos tentar fazer
isso com todos eles. Deixe-me clicar
no primeiro,
Shift, olhar no último, clicar com o botão
direito do mouse e, em seguida, ir para Seleção de edição da ação do
ativo
na matriz de propriedades. Estamos apenas tentando fazer
tudo de uma vez. Se eu clicar na
textura aqui novamente
e puder ver esse filtro, e puder ver esse filtro, mude-o para o mais próximo, que é a
configuração correta que podemos salvar. Então vamos ver se os
blocos foram incluídos aqui. Eu posso ver que os ladrilhos estão incluídos.
Está tudo bem. Tudo está incluído aqui. Basicamente, tudo
deve funcionar bem. Ok, agora isso está feito. Também temos um
problema com o nome. Vamos corrigir isso também. Se eu clicar aqui e remover essa textura
para poder ver tudo, mais
uma vez, posso
clicar no inimigo. Se eu voltar às plantas, abra os inimigos
e a base inimiga E eu clico na janela de exibição. Agora, clicando na barra de saúde, eu só preciso mover a barra de
saúde um pouco abaixo, acredito que se você clicar
aqui, clique em Jogar. Como um jogo independente, você deve ser
capaz de ver como
fica aqui
sem tentar
empacotar o projeto aberto aqui no meu segundo monitor e eu
posso ver como é Agora você pode ver que nada
está mais embaçado. No entanto, como você pode ver agora o nível e nós podemos movê-lo um pouco para baixo, assim como
a saúde. Vamos fechá-lo. Clique
nos widgets de informações do inimigo Vou movê-lo para -25
também para a barra de saúde. Vamos tentar -45 E vamos compilar
e clicar em reproduzir novamente. Agora. Parece muito
melhor quando está tela
cheia e tudo parece jogável e tudo
parece bom, se você quiser Você também pode fazer
o não filtrado para a interface do usuário apenas para garantir que
tudo esteja bem e não Você sempre pode
voltar para a interface do usuário. Se eu vou para o conteúdo,
eu abro minhas imagens, basicamente esses
itens aqui também. Se eu pressionar o botão direito do mouse, clicar com o botão
direito do mouse,
selecionar a ação
ácida , selecionar na matriz de propriedades, ir para a textura e então o filtro também deverá
estar mais próximo. Para eles, deixe-me
abrir as texturas aqui também. Esse é o efeito de impacto. Só para garantir que o
efeito de impacto também não fique embaçado, basta abri-lo e descer
novamente para Mude-o para o mais próximo,
feche-o. Agora, também para os ícones. Clique com o botão direito do mouse, defina ações, edite a textura da matriz de propriedades
e, em seguida, altere-a para a mais próxima, feche-a para fontes. Realmente não preciso
fazer nada aqui. Agora, para os botões. Novamente, edite-os e torne o
filtro de textura mais próximo. Agora isso está feito para todos
eles. Vamos clicar em Salvar. Vou colocar o volume da minha música no
padrão, que é um. Mais uma vez, também vou, em vez das plantas e do
interior da base inimiga, reativar
meu som durante o ano inimigo em que
eu desconectei Compilar Salvar tudo. Agora, deixe-me seguir em frente e tentar empacotar o
projeto mais uma vez. Agora que o projeto
foi empacotado, deixe-me clicar no Dungeon Clicker mais uma vez para ter certeza E você pode ver que nada
está mais embaçado. Tudo parece bom,
a interface do usuário parece boa, todo o som está funcionando. Eu posso jogar basicamente
reiniciando as moedas. Isso é algo que eu perdi, mas não é realmente um
problema no momento. Mas você pode ver que tudo está funcionando e a lista
está funcionando aqui, e a Ascensão está
funcionando basicamente também E eu posso ver que causa
a quantidade correta de dano e agora temos
um jogo concluído. Tudo bem, agora
terminamos o projeto. E você deve estar muito
orgulhoso do que fez até agora, porque
passamos por muita coisa. Causamos pontos de desova, causamos danos aos inimigos,
causamos todos esses
dois D juntando-os, a interface
do usuário, codificando a interface e assim por diante Então, você trabalhou muito e espero que tenha
aprendido muito com este curso. E espero que tenha sido muito
divertido aprender também. E se você quiser,
você também pode dar uma
olhada nos meus outros cursos. Tenho muitos cursos
aprofundados e
ainda estou criando novos
cursos até hoje. Então,
muito obrigado por assistir. Espero que você
tenha se divertido muito. Eu me diverti muito
criando discursos. E lembre-se, se você
deseja obter ajuda 2047, você sempre pode entrar no
meu servidor de discussão. Somos uma comunidade
que adora ajudar. E também podemos falar sobre coisas no
desenvolvimento de jogos em geral. Ou você pode me mostrar seu trabalho. Você pode mostrá-lo
para a comunidade. Uma
comunidade muito saudável de se conviver. Muito obrigado
por se matricular
neste curso e espero que
você se divirta muito E
nos vemos na próxima.