Transcrições
1. Introdução à Skillshare: Neste curso,
vamos seguir em frente e criar um clássico que ainda é refeito
até hoje, especialmente
na plataforma móvel E esse jogo se
chama breakout. Agora, o objetivo a
partir daqui é que você tenha uma bola quicando
nas laterais das paredes Você o salta da raquete e seu objetivo é quebrar todos os tijolos que
você vê na Tijolos diferentes fornecem
ou tijolos de cores diferentes fornecem
quantidades diferentes de pontos Tudo bem. Isso é empolgante. Vamos começar a
recriar esse jogo clássico que talvez você ou até mesmo seus pais tenham jogado
ou ainda joguem até hoje
2. O que é breakout: seguir, nesta
seção,
faremos uma pequena alteração em Pong, que será
um jogo chamado Este é de 1976, e um fato interessante sobre isso é que a tela
era apenas preto e branco, mas tínhamos cores como essa, e tínhamos cores assim,
como você pode ver na
tela aqui, como você pode ver na
tela aqui, porque eles realmente colocam um
pouco de celofane colorido na tela Mas foi assim que eles foram colocados em
cores porque
a tela em si, como eu disse, era apenas em
preto e branco. Agora, o que é fuga? Bem, vou jogar um pouco, mas esteja avisado de que há um
pouco de brilho. Você pode ver meu mouse aqui
no canto superior esquerdo da
tela no momento. E se fôssemos jogar isso,
podemos ver que o que basicamente
temos aqui é uma
bola quicando pelas laterais, batendo em uma raquete
e
sendo jogada de batendo em uma raquete
e E eu estou fazendo isso fazendo o Breakout logo depois de Pong
aqui porque, como você pode ver, apenas com base
neles especificamente, já
temos um tipo
de sistema
semelhante configurado com Então, vamos
desenvolver a partir do
que acabamos de fazer no projeto anterior. Agora, nós realmente não precisamos
desse aqui no topo. Acredito que isso esteja apenas mostrando
que esse é o primeiro jogador. Tecnicamente, é uma coisa de
dois jogadores, mas cada pessoa se
reveza de qualquer maneira, então vamos
deixar isso como um jogador Além disso, o sistema de dois jogadores tinha uma grande máquina com
ele, sim. O próximo aqui à direita do que ainda
permanece no topo. Se eu seguir em frente, devemos
ver números. Lá vamos nós. Então, isso é acompanhar
em qual bola você está. Então você está na bola um,
bola dois, bola três. Depois de acertar a bola quatro
, o jogo termina. E o número aqui no
canto que estava piscando, são os pontos que você ganha Tijolos amarelos dão
um ponto, tijolos
verdes dão
três pontos, tijolos
laranja dão
cinco pontos e tijolos vermelhos dão Agora, seu objetivo é limpar completamente o
tabuleiro de todos os tijolos. A bola acelera,
fica mais difícil. E como você pode ver aqui, em comparação com Pong, você tem uma raquete
bem pequena aqui. Para fazer isso funcionar. Agora, quando você vence o
jogo, tenho certeza de que o jogo é reiniciado da
mesma forma que faria se você terminasse o jogo
de qualquer maneira Então, podemos usar a
mesma lógica com isso, quer ganhemos ou percamos, apenas fazendo um reset.
Mas isso é uma fuga. Se você não sabia
o que era isso, tenho certeza de
que existem algumas
versões modernas do jogo. Mas se você não
sabia o que era isso
, agora você sabe. E vamos começar
a configurar nosso projeto.
3. Configurando o projeto: Então, para resumir aqui, acho que vou deixar
a mesma resolução de projeto
que usamos com o Pong Se você quiser mudar isso, é
claro, fique à vontade. Novamente, isso está na tela de
configurações do projeto e na janela. Mas vou
ficar com o que eu tinha do último que
fizemos em Pong Eu entrei no meu projeto criei uma
pasta de discussão, é claro Se você vai definir o seu
como um projeto separado, provavelmente o chamará de breakout porque é isso
que é E quando você estiver pronto
para começar, poderemos criar
nossa cena principal, que obviamente não vai
estar muito aqui
quando pensarmos nisso. Acho que poderíamos colocar
a valsa para isso. Queremos fazer isso?
Sim, vamos fazer isso. Então eu vou criar dois D. Eu vou apenas
cortar dois D aqui Isso me dará uma raiz. Eu não tenho
dois D, o que
está perfeitamente bem. Para isso, vou seguir em frente e fazer
o que costumo fazer e renomeá-lo para dizer Meu Vou salvá-lo dentro
da minha pasta de discussão. E como eu estava
dizendo Glick Pong, vou
salvar o meu como SCN, mas você pode deixar o seu
como TSCN se preferir Tudo bem? Então eu tenho meu projeto aqui. Agora, o que precisamos? Nós precisamos? Bem, eventualmente
teremos uma raquete, mas isso estará na
seção de jogadores Precisamos da bola. A bola
terá sua própria seção. Podemos colocar os
rótulos para a interface do usuário, certo? Então, precisaremos de
uma vaga para marcar pontos, e precisaremos de
uma vaga para acompanhar as vidas ou a bola em que
o jogador está. E precisaremos de paredes ao redor da coisa toda.
Então eu vou subir. Vamos fazer
uma camada de tela, assim como sempre
fazemos com nossos Gooeys Então, vou renomeá-la
como GUI. É
aí que vou fazer minha etiqueta. Queremos
manter a precisão, podemos defini-la como uma. Tudo bem. Podemos chamá-lo de jogador.
Honestamente, está perfeitamente bem Nós realmente não precisamos fazer
nada além disso. Em seguida, em vez de jogador, essa seria, eu acho,
nossas vidas, certo? Vidas ou contagem de bolas.
Bola atual. Sim, vou jogar a
bola atual, e essa também começará como
uma, por padrão. Agora observe, vou
mudar as âncoras deste nosso contador de bolas
para que fiquem no canto superior direito E vou deixar o
alinhamento à esquerda, apenas para que seja
afastado da borda E no player, vou mudar
o alinhamento para o
alinhamento horizontal para ficar
à direita ou, novamente,
afastá-lo da Essa é apenas uma
preferência pessoal aqui. E
precisaremos de mais dois rótulos. Então, vou duplicar o player aqui e baixá-lo. E eu vou
chamar isso de uma pontuação. Eu acho que
tecnicamente deveria chamá-lo rótulo de
pontuação porque
é isso que é E vou renomear a
bola atual para o rótulo da bola atual. Porque não precisamos
ter variáveis para ter exatamente
o mesmo nome de
outras notas na cena, e isso tornará as coisas um pouco confusas à medida que avançamos Obviamente, o rótulo
de pontuação
será de três zeros para nós aqui Tudo bem. Então, precisaremos de
paredes montadas para nós. Então, nessas paredes, eu vou
clicar de volta no meu nó principal. Vamos adicionar e
as paredes não se movem. Então eu vou usar um
corpo estático dois D. Lembre-se, eles não se movem de forma alguma, não importa o que os atinja Agora, esses são a
única razão pela qual estou fazendo isso é porque eles estavam
visíveis no jogo original. Então, vou adicionar um sprite
two D ao meu corpo estático. E lembre-se, é
um corpo físico e tem o
triângulo amarelo para nos dizer:
Ei, ele precisa de uma colisão Então, vamos adicionar a isso
uma forma de colisão. E podemos seguir em frente
e dar essa forma, dar a ela um retângulo Tudo bem. Sprite two D. Texture, vá fazer exatamente
como fizemos antes Nova
textura de gradiente, abra-a,
abra nosso gradiente, selecione o preto, mude-o para E agora vou
mudar o tamanho dela. Reduza isso. Eu vou derrubar tudo. E vamos
estendê-lo até o fim. OK. Então eu tenho uma parede aqui. Vou renomear meu
corpo estático, digamos parede. Eu vou com isso selecionado. Oh, eu tenho que mudar minha forma de
colisão também. Então, agora, vou pressionar o Controle D na minha parede aqui
para fazer uma duplicata, mas há algo que
você precisa ter em mente Se você está fazendo isso, como eu não
posso simplesmente
segurar aquela flecha. Aqui vamos nós. Basta arrastá-lo para cima. Aproximadamente centrado. Lá vamos nós. Se você estiver duplicando,
às vezes
há coisas que você
precisa tornar exclusivas aqui Por exemplo, se eu
pegar a forma de colisão aqui na
minha primeira e a mudar, você vê que isso afeta as duas Então, o que realmente
precisamos fazer é entrar em nossa parede, nossa segunda parede, e precisamos
entrar em coisas como nossa forma de colisão na
forma e nosso inspetor, ir até o menu suspenso e
selecionar Make E agora,
se mudássemos
isso, isso não
afetaria os dois. Isso só afetará
um, porque agora eles são classificados como
objetos separados, formas separadas. Então, eles não estão
compartilhando o mesmo. Tudo bem. E
precisamos de mais uma parede para atravessar o topo. Então, precisaremos estar
em algum lugar ao redor do centro e precisaremos redimensionar
esses objetos Corra para baixo. E vou comparar
um tamanho aqui. Isso tem aproximadamente
a mesma espessura. Tudo bem. E eu vou
tirar meu sprite. Ajustes. Aqui vamos nós. Tudo bem. Agora eu tenho que fazer a mesma
coisa com a forma. Mas lembre-se de que eu o dupliquei, então preciso entrar e torná-lo único antes de alterá-lo E agora eu posso entrar e manipulá-lo da maneira
que eu quiser Alinhe isso. Excelente. Então, agora temos nossas três paredes montadas, e
elas têm sua colisão. Então, se a bola bater nela, só
temos que configurar o salto,
e tudo ficará A parte inferior está totalmente aberta. Nossa raquete, podemos
simplesmente dar um tapa nela. Quando fizermos nosso jogador, a bola, configuraremos isso mais tarde, e os tijolos, acredito, também
faremos mais tarde, o que significa que acho que
terminamos nossa configuração aqui Então vá em frente e vejo
vocês na próxima onde
continuaremos e começaremos
configurando nosso remo
4. Criando o Remo: Vamos seguir em frente e criar
a batalha pela fuga. Então, isso vai
ser semelhante ao Pong, só que em vez de nos
movermos para cima e para baixo, vamos nos
mover para a esquerda e para a direita Então, em nossa cena principal. E se ainda não o fez, provavelmente deveria
economizar, pois já
se configurou. Podemos adicionar a ele um corpo de personagem dois D porque esse será
o nosso jogador. Podemos adicionar um sprite dois D para que
possamos exibir nossa raquete. E, claro, também
precisaremos uma forma de colisão no corpo do
personagem Então, vou renomear o corpo do
meu personagem para ser chamado de jogador Sprite dois D, vou
entrar na textura,
nova textura gradiente dois D, selecione-a, abra o gradiente,
pinte o preto, mude Eu posso ver que não está mudando automaticamente para nós, então vou usar o
HDR e depois desligá-lo Agora, temos uma pequena
raquete com isso, então vou
derrubá-la Sim, talvez algo
assim fosse bom. E vou adicionar uma forma de colisão. Vou mudar a
cor disso para
que se destaque.
Vamos usar vermelho. E eu vou
fazer disso um retângulo. Traga-o para ficar ao lado
do nosso remo. Perfeito. Agora pegue nosso player
e mova-o para baixo
na tela até onde queremos uma boa
posição inicial. Vou ter um
espaço embaixo do
meu jogador, embaixo da minha raquete Vou seguir em frente
e rodar essa cena e dar uma olhada nela,
ver se eu gosto. Sim, acho que é
um espaço justo para colocar. Tudo bem. Então,
vou agora até as configurações do meu
projeto. Vou criar meus mapeamentos que vou
usar neste Agora, neste caso, eu já tenho alguns desses
que eu tinha anteriormente, mas acho que vou
continuar com o tema, e vou sair para a esquerda e
sair para a direita. Não, à esquerda,
é claro, será A. À direita, será D. Claro,
para você, elas podem ser
teclas de seta, se você preferir. E agora nosso jogador precisa de um
roteiro, para que possamos seguir em frente. Vamos ver. Res, jogador emergente.
Sim, tudo bem Estendendo o
corpo de um personagem para dois D, script escrito em GD.
Tudo bem, crie. E tudo o que precisamos aqui
é o nosso movimento. Então, se você se lembra de antes, tínhamos uma velocidade que era
um int de algum número. Vou seguir em frente
e defini-lo em 30. E vamos ver. Podemos
entrar em nossa função, o processo físico, porque estamos lidando com
movimento aqui, e podemos seguir em frente e
usar mover e deslizar, embora talvez
queiramos nos mover e colidir
desta vez Nós podemos experimentá-lo. Veja o que acontece. Mova-se
e colida e nós mesmos
ultrapassaremos a velocidade E nosso ponto de velocidade X. Precisamos realmente
obter nossas entradas primeiro Então, eu insiro o ponto em ação, pressionado, saio para a esquerda. Então, neste caso, vamos dar
negativo no X.
Então, digamos que a velocidade X seja
igual a menos uma vez Então, digamos que a velocidade X seja igual a menos L se a entrada for pressionada como ação. Fuja, certo? Nós
vamos fazer o oposto. Vamos fazer com que a velocidade ponto X igual a uma vez a nossa velocidade, e podemos dar uma olhada nisso Eu vou seguir em
frente e comandar a cena. E acabei de perceber que não
coloquei mais nada lá. Então, se eu bater uma vez,
vamos nos mover, e isso é muito rápido. Então, provavelmente vou
recusar muito isso. Vamos descer para cinco,
e podemos tentar isso. E eu vou
colocar nosso outro bloco lá. Caso contrário, o ponto de velocidade X é igual. Na verdade, você sabe o que posso
dizer que, em geral, a velocidade igual a um vetor 20, e isso é o que
vai nos dar um zero no X e
zero no Y, o
que é bom porque o Y não
é afetado
neste jogo para que é bom porque o Y não
é afetado
neste jogo E isso é mais fácil de
ler do que fazer com que o
ponto de velocidade X seja igual Quando diríamos
que a velocidade é zero. Tudo bem, então vamos tentar isso de
novo com nossa nova velocidade. Tudo bem? Eu gosto disso, mas pode ser um pouco
rápido demais para o que estou procurando. Então, vou
mudar
isso, talvez eu tente três. E acredito que esteja atualizado, mas só por segurança,
vou reiniciá-lo. Sim, acho que isso vai
ser bom para minha velocidade. Então, se você quiser
ir mais devagar, você pode. Se você quiser ir mais rápido,
depende de você. Estou tentando
ter em mente que a bola
vai acelerar nas varandas, assim como acontece com o Pong Tudo bem. Ótimo. Então, eu
tenho meu player configurado e, se eu parar de pressionar os botões, pararemos de nos mover juntos. Então aí está meu jogador. E a seguir, podemos criar nossa bola
e fazer a bola
apareça nela E talvez consigamos fazer o
salto entrar aqui também. Talvez façamos tudo isso em um
vídeo para o baile. Certo. Então, vejo vocês na próxima, quando
tiverem sua raquete configurada, e começaremos a criar
nossa bola para o E assim que tivermos a bola,
vamos montar nossos tijolos.
5. Ajuste do jogador: Então você pode notar se eu
entrar aqui. Lá vamos nós. Minha raquete ainda está se movendo
quase da mesma forma, mas fiz algumas alterações e só quero mostrar
isso para o caso de você ficar um pouco confuso ao
vê-la Então, se eu for para o meu roteiro,
minha velocidade agora está em 200. E o que estou fazendo de diferente é estou fazendo velocidade vezes Delta, e é isso que você deve fazer quando temos objetos
com movimento aqui Agora, só temos que fazer
isso com mover e colidir. Não precisamos usar isso com mover e deslizar porque
mover e
deslizar, no meu entendimento, é na verdade calcular isso por
si só, certo? Mas se estivermos usando o Moving Cloud como estamos fazendo
neste projeto, precisamos multiplicar nossa velocidade Delta
. Tudo bem. Então, eu só queria juntar isso bem rápido
antes de prosseguirmos
e ver isso ficar confuso. E então talvez eu
receba um monte de perguntas sobre isso por
não mencioná-lo
6. Criando a bola: Vá em frente e crie nossa bola
para o nosso jogo agora, certo? Então, vou entrar na
minha página principal aqui, clicar em +, e vou usar o corpo dois de
um personagem D. Vou
renomeá-lo para Being Ball Claro, vai precisar de
uma forma de colisão, certo? Isso faz sentido, e
vai precisar um sprite para que possamos vê-lo Assim como nosso player, tudo bem, então nossa textura, você sabe para onde vamos
com isso neste momento,
borrife dois D, inspetor, textura,
novo gradiente, dois D,
abra o gradiente, selecione o
preto, mude Lá vamos nós. Obviamente, isso é muito grande. Então, vamos
reduzi-lo. Se. Até que ponto
queremos atingir o gol? Traga
tudo isso aqui. Não vamos rodar o
jogo aqui tão rápido. Dê uma olhada. Hum, eu
acho que está tudo bem. Provavelmente não quero
ir além disso. No entanto. Se você quiser
diminuir, nós certamente poderíamos. Coloque mais um de cada lado
e faça algo assim. E eu vou ter que
reiniciar a transformação disso. Então, com meu inspetor de bolas,
transforme a posição. Vou clicar
no botão
de reset para poder
colocá-lo de volta aqui no canto onde
deveria estar. Colisão. Vou dar uma nova cor, usar uma
forma verde, um retângulo e
encolher aquele bad boy E agora temos uma
bola. Agora, vou pegar aquela bola e
vou reposicioná-la aqui. Até aqui embaixo. Porque a bola não
aparece no jogador, mas logo acima do jogador, e depois é lançada Então, do jeito que vou fazer, antes de agora, acho que vamos
deixar assim. Isso para a hora atual. E vamos ver.
Vou adicionar um script à minha
bola, verificar meu caminho,
quebrar a bola, o corpo do personagem, dois D, GD, roteiro,
certo, criar E o que precisaremos é uma direção inicial em que ele está correndo e em
que está entrando. Então, podemos seguir em frente e entrar em nosso processo de física porque somos um corpo físico
e estamos nos movendo. Nós podemos nos mover e colidir. Embora eu ache que
vou usar o MoVen ide, talvez com este Precisamos do nosso ponto de velocidade X. Sim. E nossa velocidade Y. Precisamos definir ambas, e eu vou para Oh,
não precisamos de uma constante Vou seguir em frente e
criar uma variável chamada velocidade. Isso não será
uma constante porque lembre-se de que nossa
velocidade não
precisa mudar com o tempo,
pois está saltando E eu vou definir isso como igual a 30 inicialmente, e
vamos dar uma olhada nisso. Então, por enquanto, vamos configurá-la para uma
velocidade de apenas uma vez. E faremos a
mesma coisa com Y, só que vamos torná-lo negativo, obviamente, para
que suba por enquanto. E eu só quero
ver a velocidade com que
vai acontecer. Então, há 30. Essa parece uma velocidade de partida
perfeitamente boa para nós. Acho que vamos fazer algo
semelhante ao que
fizemos com Pong, e veremos como isso funciona
, até onde podemos ir com isso antes de fazermos
qualquer mudança em potencial Então, eu vou ter uma
direção H e uma direção V, então podemos passá-las
para as nossas aqui, e eu vou começar nossa
vertical com um menos um E é aí que nossas
mudanças entram, certo? Então, com base no fato de
batermos no chão, no
teto e assim por diante. Então, vamos
dizer se está no Whoops. Selar na direção B vezes é igual a menos um,
então isso vai inverter a situação Mas não queremos fazer isso
apenas no teto. Queremos fazer isso se também
atingirmos o chão, porque o chão será quando atingir nosso padrão. Ou é Whoops, está no chão. Agora, isso pode funcionar. Isso pode não funcionar. Teremos que
dar uma olhada e ver como isso funciona porque
trabalhamos com Pong Sabemos como fazer esses saltos, então vamos
dar uma olhada nisso Certo? Tudo bem. Então, vamos com o LF. Vamos trabalhar com
o que sabemos que está em Wall. A direção H vezes
é igual a menos um. Tudo bem, então vamos
jogar isso e vamos dar uma olhada e
ver no que acontece. Então a bola vai. Deve
saltar aqui. Faz. Deve ricochetear
no topo. Faz. Está caindo.
Pode nos atingir. Pode bater na parede. Vamos ver. Isso vai nos atingir. Tudo bem, então parece que
estamos pulando. Parece exatamente como Pong. Isso está funcionando perfeitamente,
pelo menos por enquanto. Então, até onde
podemos saber, temos nosso bounce codificado.
Temos nosso player configurado. Agora, a diferença é
que queremos acelerar isso. E vamos
acelerar isso, não importa o que aconteça
, certo Então, vamos
seguir em frente e dizer, vamos seguir em frente e
fazer velocidade mais igual Nós faremos isso se
batermos em uma parede também. Então, devemos
ver isso
acelerando toda vez que salta, assim como fizemos Então, vamos ser pacientes
e dar uma olhada. Há um salto, dois
saltos, estamos em mais dez. Vamos chegar
aqui em algum lugar. Boom, 15, 20, então devemos
estar a uma velocidade de 50, 55, 60, e eu a saltei para baixo,
então agora está fora dos Isso teria
perdido a bola azeda. Mas queremos ter
certeza de que temos uma velocidade máxima definida. Agora, qual é esse máximo, eu não sei.
Teríamos que testá-lo. Vimos lá que chegamos
a cerca de 55. Não foi tão ruim. Então, talvez possamos fazer uma velocidade máxima de talvez 100. Agora, como podemos
manter isso em linha? Bem, teríamos que
definir nossa velocidade. É igual a, e
queremos obter o mínimo. Então, vamos
dizer que o mínimo entre o que isso faz é nos retornar o valor mínimo dos
argumentos que passamos. Então, se dissermos velocidade mais cinco, velocidade
máxima, isso nos
dará velocidade mais cinco ou
nos dará velocidade máxima, qualquer que seja o menor número,
e é isso que a velocidade
será igual Então, ao fazer isso, a velocidade
aumentará continuamente, mas nunca
excederá a velocidade máxima aqui. Certo? E podemos
fazer isso lá embaixo. O próximo. Lá vamos nós. E eu vou seguir em frente
e salvar o que vi. E por enquanto, como eu disse, parece que tudo está funcionando perfeitamente bem para nós. entanto, queremos definir o
spawn da bola
quando começamos, porque normalmente
há uma pequena
pausa quando isso acontece, e então ela aparece
acima do jogador, então vamos começar e
colocar isso Isso estará dentro
de nossa função de preparação aqui para a bola. E o que eu vou fazer Ah, sim. Você sabe
o que? Isso é bom. Tudo bem, então
vamos usar algo
chamado await E acho que mencionei
isso durante Pong, quando tínhamos a
seção de fim de jogo ou a tela de vitória do jogo, como você
quisesse chamá-la, aguarde,
pegue
a
árvore de sublinhados, crie Podemos passar números
três e um tempo limite de pontos. E então, com isso após o
período de tempo predefinido aqui, fazemos
o que vem depois disso,
o que, no nosso caso, gerará
a Tudo bem, então vamos em frente
e podemos fazer Vamos ver. Então, em vez de ter 3 segundos
predefinidos aqui, vamos fazer um Rd,
é Randi ou Rand Eu acredito que é Randi. Quem, não é bem,
não entra lá. Será por cento três mais um. Agora, isso é exclusivo, e isso significa que isso nos dará um número
inteiro aleatório até o número três No entanto, como esse é um código, isso nos
dará 01 e dois. E, obviamente, zero não será aceitável aqui porque precisamos de
algum tipo de bônus. Então, eu estou fazendo mais um. Então, seja qual for o número que
obtivermos, adicionaremos um a ele. Então, se chegarmos a zero,
faremos mais um. Então, isso faz com que nosso número
mínimo seja um. E então, se realmente obtivéssemos um,
isso se tornaria dois. Se tivéssemos um dois, isso se
tornaria um três. Então, agora estamos recebendo 1-3, isso. Tudo bem. Então, vamos esperar um período aleatório de tempo. E então definiremos
nossa posição para estar onde quer que o jogador esteja
no momento. Então, diremos que a posição global é igual à posição do jogador, qual não temos
uma referência Vou fazer isso aqui. Vou exportar nosso jogador como um personagem com corpo de dois D que eu possa definir e nossa posição será definida
para a posição global do jogador. Só vamos mudar Y porque queremos que ele
fique acima do jogador. Então, temos que ir para a posição
global, ponto Y menos igual.
Digamos que cinco. Vamos ver como isso vai acontecer.
Mas lembre-se de que preciso acessar meu script de bola aqui e
definir a variável do jogador, apertar o botão atribuído e
selecionar nosso jogador real. E veremos como isso funciona. Inicialmente, vamos
definir a velocidade para zero porque não queremos que
a bola se mova ainda. Na verdade, vou
entrar na hierarquia da cena e clicar no pequeno
globo ocular para escondê-lo Então, se dermos
uma olhada e eu clicar nela, a bola desaparece, de volta ao script
da bola depois de definirmos a posição, certo?
Então, esperamos. Nós o definimos igual
à posição do jogador. Nós levantamos a bola
acima do jogador. Então, na verdade, vamos
definir a visibilidade da bola, então vamos
dizer visível. É igual a verdadeiro para mostrar isso. E então vamos
definir a velocidade igual a 30. E podemos até definir
isso com uma consistência,
apenas para tornar as coisas ainda mais claras Chamaremos isso de velocidade inicial. Agora podemos dizer que a velocidade
é igual à velocidade inicial. Tudo bem, então se
jogarmos isso, veremos a bola. Lá vamos nós. Ela simplesmente apareceu em nós
e se lavou sozinha. E se fizermos isso de
novo, podemos ver isso. Lá vai. Tudo bem, então
nossa bola está surgindo. Ele gera quase o jogador. Acho que quero
realmente definir isso para dez em vez de cinco,
porque aquele cinco estava parecendo um pouco próximo. Pode ter sido só
eu com a gente andando de um lado para o outro. Mas vou
mudar isso para dez, certo, temos nossa bola
funcionando. Está pulando por Agora, quando colocarmos alguns
tijolos lá, veremos se nossos
saltos ainda estão bons ou se precisamos ajustar Além de, eu acho, começar a trabalhar para
destruir os tijolos,
fazer nossa pontuação, contar as bolas quando
as perdemos ou
perdemos nossas vidas Suponho que, nesse momento, estaremos muito bem, além de qualquer coisa
que queiramos ajustar Tudo bem, então temos o
básico de nossa bola funcionando. E a seguir, daremos
uma olhada em nossos tijolos.
7. Como criar os tijolos: Tudo bem, então vamos
criar os tijolos
para nós em nosso jogo aqui, e os tijolos terão
aproximadamente o
mesmo tamanho do jogador Então, o que eu vou
fazer é copiar isso. Vou ver meu anúncio principal e poderíamos fazer um corpo estático. Sim, porque não
precisamos que eles se movam de jeito nenhum. E vou chamar
isso de tijolo amarelo. Esse tijolo amarelo
vai precisar uma forma de colisão e de um sprite Então, o que vou fazer
para trapacear
um pouco é
ir até meu jogador Vou clicar
no Sprite dois D,
segurar a tecla Shift, clicar na
forma de colisão, fazer o Controle C. Vá até o meu tijolo amarelo, aperte Controle V para meio
que adicioná-los Agora, lembre-se do que
eu disse antes. Nós vamos
entrar e vamos torná-los únicos. E torne recursivo exclusivo. Que também podemos fazer o
gradiente. Forma de colisão, pegue-a, torne-a única e adequada à cor Claro, vamos usar
um amarelo por enquanto. Mas agora temos um
tijolo amarelo e podemos pegar esse tijolo e
colocá-lo em qualquer lugar do nosso jogo. Por exemplo, eu poderia colocar um aqui e
apenas alinhá-lo. Agora eu posso simplesmente fazer Control
D, Spide, o próximo. Então, acho que vou colocar esse pequeno espaço entre eles. Controle D, direcione o próximo para fora. E vou
tentar manter isso mais consistente possível. E eu vou seguir em frente e fazer isso até o fim. Muito rápido. Tudo bem,
então eu fui em frente, e eu tenho todos esses
tijolos amarelos todos configurados aqui, e há muitos deles E eu tenho duas fileiras. Eu não
vejo do alto da minha cabeça. Não me lembro
se eles tinham duas ou três linhas no jogo, mas, por enquanto, tenho duas linhas. E há muitos
que desmoronam aqui. Eu acabei de derrubar todos eles Infelizmente, eu não sei, isso é só para um ramo. Bem, isso é, infelizmente.
Talvez esteja faltando
uma tecla de atalho em algum lugar Mas, por enquanto, isso
não é importante. Você pode ver que temos todos esses
tijolos aqui, todos configurados. E eu quero mostrar a
vocês como vamos determinar o
que estamos atingindo Porque tudo o que precisamos fazer é criar essa
mesma configuração novamente, faça isso para os blocos laranja, vermelhos e
verdes. Mas para mostrar como isso funciona, vou entrar na minha bola,
no meu roteiro de bola e,
dentro de um processo de física, vamos fazer uma declaração
if aqui. Então, basicamente
vamos dizer que, se estivermos colidindo com alguma coisa, então vamos imprimir o nome da coisa com a qual
colidimos, Então, se Yet, é uma contagem de
colisões planadoras. Então, se isso for qualquer coisa menos zero, isso vai
voltar verdadeiro para nós, e isso basicamente vai
dizer, se estivermos colidindo
com alguma coisa, e se
estivermos, então vamos imprimir E o que vamos imprimir
é uma colisão de slides deslizantes. E vamos
passar um índice de zero porque queremos obter o primeiro item com o
qual
estamos colidindo, que, na realidade, só
deveríamos colidir
com um objeto por vez Então, se prosseguirmos
e imprimirmos, não imprimirmos, mas tocarmos isso,
devemos dar uma olhada, devemos ver abaixo em nossa saída o tijolo amarelo que está sendo impresso. Sim, esses são
todos nossos. Há minha confusão
aí na impressão. Estamos imprimindo a colisão
do primeiro lado, mas o que precisamos fazer é
realmente pegar o colisor, então pegue a coisa real com a qual
estamos colidindo E então vamos imprimir o nome. Então, pegue a colisão do slide, passe um zero, obtenha o
colisor, o nome do ponto E se fizermos isso, veremos
o nome dos nossos
tijolos ser impresso ao atingir objetos
aqui embaixo no inspetor Vá para o tijolo amarelo 12. Jogador, parede dois, tijolo
amarelo 16, jogador, parede,
tijolo amarelo três, jogador. Tijolo amarelo 20, parede, jogador. Altura de tijolo amarelo,
parede, jogador. Tijolo amarelo 11, então
você tem a ideia aqui. Certo. Então é assim que
vamos seguir em frente e configurar as coisas para realmente destruir nossos tijolos e determinar nossos
pontos nisso E bem, em geral, é assim
que
vamos determinar se
estamos batendo em um
tijolo, para começar Mas certo, então
vou pegar meus tijolos, transformá-los ou configurar as
outras cores para meus tijolos, e eu volto logo Não há necessidade de realmente
mostrar como fazer isso. Eu já mostrei como fazer um tijolo e simplesmente copiá-lo, deslizá-lo até
fazer duas camadas Eu vou fazer a mesma coisa, mas com cores diferentes. E com essas cores também, posso entrar no meu gradiente aqui e simplesmente mudar essas duas cores para que possamos realmente ter
a cor final do jogo Isso vai
ser um chapéu amarelo. Vou copiar
meu código lá embaixo. Selecione o outro
branco e cole-o. E se eu jogar,
você verá que agora
temos um Oh, não,
temos todos eles. Isso mesmo, porque
nós os copiamos. Então, agora temos todos os
meus tijolos amarelos. Então, agora eu posso ir em frente e criar meus tijolos laranja agora Tudo bem. Então, me dê 1 segundo, e eu vou
criar isso. Você pode seguir em frente e, é
claro, pausar criar
e
configurar todos os seus tijolos Tudo bem, eu li e
criei todos os meus tijolos, e verifiquei duas vezes
com o vídeo Existem apenas duas camadas de
amarelo, verde, laranja e vermelho. Então, com nossos tijolos, o que precisamos deixar
para nossos tijolos Precisamos da destruição real
deles quando forem atingidos. Então, se pularmos para o nosso código, devemos ser
capazes de detectar isso facilmente. Então, em vez de imprimir
aqui, vou criar uma variável de ops, uma variável
chamada nome do objeto. Essa grande corda. Isso vai ser igual ao que
estávamos imprimindo. Então, obtenha a colisão de slides zero. Obtenha o nome do ponto do colider. E então, a partir daqui, podemos
ir em frente e verificar se Wow. Se tijolo estiver no nome do objeto, o que obviamente deveria ser, pelo
menos com a forma como minha
nomenclatura está configurada, certo? Tijolo amarelo,
tijolo verde, tijolo laranja, tijolo
vermelho. Desculpe por isso. se o tijolo estiver no nome e nome do objeto,
precisaremos pegar esse
objeto e liberá-lo E para fazer isso, também
deveríamos armazenar o
colisor Então, além do nome, eles também
receberão um colisor de varões Agora, com isso, vou reduzi-lo da melhor maneira
possível, porque não posso simplesmente chamá-lo corpo estático, como os tijolos,
porque nem sempre serão
tijolos, Pode ser a parede.
A parede também é um corpo estático, corpo estático. Ok, então parece
que usamos corpo estático. Mas lembre-se, nosso jogador
é o corpo de um personagem. Então, temos que levar isso
em consideração. Então, a forma mais baixa
que podemos fazer aqui é simplesmente
classificá-lo como um corpo físico
dois D. E isso, é
claro, será igual a t colisão de slides zero
dot Yet collider O colisor será nosso objeto. O nome do objeto
será o nome da coisa. Se o tijolo estiver no nome, então vamos pegar
aquele colisor e libertar Tudo bem. Vamos ver como isso funciona se nossos tijolos
começarem a ser destruídos Vá, pequeno amarelo, vá. Eu fiz. Nosso tijolo amarelo foi
destruído, e vamos ver. Todos esses tijolos também
devem funcionar. Como o amarelo funciona, já que estamos todos trabalhando
na mesma lógica, não
sei por que
mudei para a esquerda. Isso
arruinou completamente tudo isso. Teremos que colocar o respawn aqui em algum
momento, para não precisarmos continuar
reiniciando o jogo
sempre que perdermos a bola
para Um boom. Ele vai. Sim, senhor. Quase temos uma boa
quantidade dessa primeira camada, e eu a saltei para o lado,
mas acho que
provavelmente podemos
presumir com segurança que todos os tijolos estão
funcionando a partir dela mas acho que
provavelmente podemos
presumir com segurança , pois,
novamente, estão todos trabalhando
na Eles usam tijolos em seu nome. Sabemos que
podemos confirmar isso. Fantástico. Tudo bem. Então,
agora temos todos os nossos tijolos, nosso vermelho, laranja,
verde e amarelo Eles estão todos configurados.
Nós podemos destruí-los. A bola ricocheteia neles, perfeitamente bem.
Detecções adequadas Então, em seguida, vamos continuar
e dar uma olhada na atualização de nossos pontos
para a próxima seção, que significa que
vamos ganhar pontos por cada
tijolo que destruirmos.
8. O sistema de pontuação: Bem, para
começarmos a
acompanhar coisas como pontuação, na verdade
precisamos ter
uma pontuação para acompanhar. Então, vamos até nosso cara aqui e adicionar um pequeno roteiro
legal ele.
Vamos criar um. Criaremos uma
variável chamada score. Haverá um int, é claro, zero. Aqui vamos nós. E na função ready, vamos configurar
algumas coisas, como a pontuação,
como um bom exemplo. Mas eu também quero seguir em frente
e, dentro do meu Due, a etiqueta de pontuação configurar também a etiqueta de pontuação
e a
etiqueta da bola atual. Então, vou usá-los com
as exportações. Portanto, exporte Opa, não
armazenamento, exportação, etiqueta em arco. Isso é um rótulo. E a mesma coisa. rótulo atual da
bola Export VR tem, obviamente, um rótulo. Agora eu posso
selecioná-los na GUI. Inspetor, clique em atribuir. O rótulo da pontuação será
o rótulo da pontuação. A bola atual será
a bola atual. OK. Agora estou pronto, agora podemos configurar. texto do ponto da etiqueta de pontuação é igual a GORE, precisamos preenchê-lo
e convertê-lo em uma string, então STR no início, abra parênteses Coloque a pontuação dentro, feche os
parênteses e tecle zeros, e vamos preenchê-la com
três, porque definitivamente
podemos chegar
a três dígitos com este jogo.
Fácil o suficiente. E vamos precisar de
outra variável aqui para a bola atual (bola atual e começar com uma
, como acontece no jogo. E nos certificaremos de definir isso para nossa etiqueta de bola atual. Portanto, o texto do
ponto do rótulo da bola atual é igual uma sequência da bola atual Agora, quando você o executa,
não vai parecer diferente do
que era antes. E, claro, ainda
não estamos ganhando pontos,
mas, como você disse, pelo menos veja se nada está quebrado,
o que é ótimo. Vamos ver. Então,
o que precisamos agora? Precisamos realmente
atualizar nossa pontuação. E quando fazemos isso, precisamos atualizar o
texto aqui. Tudo bem. Então, vamos ao nosso roteiro de baile. E quando batemos em um tijolo, antes de colidirmos com
ele ou antes de
libertarmos, precisamos verificar ou,
pelo menos, vamos marcar I em amarelo no nome do objeto, fazer isso, e
continuaremos com isso
algumas vezes e podemos
transformar isso em, na verdade, só
precisamos de um, porque apenas um deles
deve ser capaz de
acionar . Eu entendi isso ao contrário. Eu comecei pela primeira vez. Elsif Isso é o que eu estava
colocando. E tudo que
vamos verificar é amarelo, verde, laranja e vermelho. E tudo o que vamos fazer
aqui é atualizar a pontuação. E para fazer isso, acho que
podemos pegar a GUI ou criar um
sinal para enviar até ela Agora, como não acho que tenhamos aprendido muitos conceitos
novos aqui, vou mostrar como
criar seu próprio sinal, assim como se você
olhasse o inspetor e a guia do nó e
tivesse esses sinais, eu mostraria como
podemos criar nosso próprio sinal Assim como as variáveis, basta digitar a palavra sinal, certo, porque queremos
criar um sinal, assim como você digita em VR quando
quer criar uma variável e depois coloca
o nome do sinal. Então, esse sinal será
uma pontuação de aumento. E eu vou ter que passar um número de uma polegada desse jeito. Então, o sinal é aumentar a pontuação. ele passa um argumento e esse
argumento é um número inteiro Agora, se dermos uma
olhada nisso dentro do inspetor,
clique em Bola, clique na guia Não e
podemos realmente ver nosso sinal personalizado
aqui, todo configurado Agora, podemos clicar duas vezes nele
e conectá-lo à GUI, e acho que é isso que
vou fazer aqui Clique duas vezes, GI,
verifique se está conectado. Desculpe, clique em Conectar. Agora, aqui no GI,
poderemos atualizar nossa pontuação. Para fazer isso, podemos fazer SCOR
mais igual a NUM Great. E, assim como
fizemos na preparação, podemos simplesmente atualizar
o texto da etiqueta de pontuação e, é claro, preenchê-lo. Tudo bem. Agora, isso ainda não vai funcionar porque
temos que voltar para nossa bola porque nunca
enviaremos esse sinal
em nenhum momento. Então, precisamos pensar para
onde precisamos enviar isso? Bem, precisamos enviá-lo aqui e aqui
e aqui, certo? Sempre que tivermos esses tijolos
para passar no placar. Então, aumentamos a
pontuação de emissão de pontos, depois
aprovamos nossa discussão com o tijolo amarelo,
era um ponto Com o tijolo verde, eu tinha três pontos
com o tijolo laranja. Opa, eu copiei a coisa
errada agora. Com o tijolo laranja
, eram cinco pontos, e com o tijolo vermelho
, eram sete pontos. Então, se fizermos isso agora
e
clicarmos em play, agora veremos nossa
pontuação aqui, atualizada toda vez
que quebrarmos um tijolo. Então, vamos embora. Devemos
obter um ponto aqui com os tijolos amarelos. Lá vamos nós. Então, agora estamos ganhando pontos. bola estava se movendo tão
lentamente que o olho se perdeu a uma velocidade embaraçosamente lenta enquanto vagava preguiçosamente para a esquerda Então, um ponto, bum,
salte para cima. Conseguiremos mais um
ponto. Salte, pule E você percebe que só
estamos ganhando esses pontos quando atingimos os
tijolos, exatamente como deveríamos Então isso é ótimo. , bum. Como a raquete estava
um pouco mais longa. Tudo bem. Então, fizemos nossos pontos funcionarem. Estamos enviando nosso
sinal, está funcionando, enviando os números certos. Podemos facilmente supor que esses números também
funcionarão perfeitamente bem. E precisamos fazer
mais alguma coisa na seção de pontos? Eu acredito que não. Não, a seguir, vamos
configurar nossa contagem e ressurgimento de
bolas para
9. Correção de erros após marcar: Tudo bem, então eu estava
brincando por aqui, apenas me certificando de que
as coisas estavam funcionando
e tudo bem, e na verdade tivemos
um problema aqui Não tenho 100% de certeza do que aconteceu, mas acho que a bola atingiu dois tijolos
ao mesmo tempo ou muito,
muito próximos um do outro O suficiente para
entrarmos na declaração if, mas não o suficiente para Clider realmente nos
dar alguma coisa Então, o que vamos fazer é primeiro limpar o nome do objeto aqui. Acabamos de definir isso como nome do ponto
do colider. O que eu realmente
vou colocar em outro cheque aqui
e dizer, é um colisor Portanto, isso deve nos dar uma verificação para ter certeza de que o colider é realmente
algo e não é nulo E isso significa que
vou pegar tudo da linha 25 aqui. Até o quarto do ponto do colisor, vou clicar
na guia com tudo destacado, que deve evitar
que esse problema aconteça Visto que o problema estava, entramos nessa declaração If, alguma forma, podemos colocar outra verificação aqui
também, se quisermos. Podemos dizer que é maior que zero, mesmo que não devêssemos
entrar, se ainda não estiver. E então pegamos o colisor, e se de alguma forma o
colisor for nulo, então vamos simplesmente
parar de lá Não vamos continuar. Tudo bem, então eu só
queria colocar isso lá
, caso vocês deparassem com isso enquanto também se
deparassem com isso enquanto estavam
jogando, assim como eu fiz E, certo, então, seguir, vamos começar configurar
o
renascimento da bola
10. Contando: Vamos continuar e fazer com que nossa
resposta aconteça aqui. Então, a essência do
que precisamos aqui é quando a bola
sai da tela, então precisamos fazer
o que fazemos quando prontos e responder aqui com sua velocidade
padrão, direção padrão de subir e tudo mais. Então, na verdade, há um nó
que podemos usar para isso. Agora, se formos ao nosso baile, vou ligá-lo
para que possamos vê-lo aqui. Agora, essa linha azul aqui é a parte inferior da nossa tela,
que você já deve saber. E nesta bola,
vou adicionar um nó especial chamado Notificador
visível na tela Agora, o que isso vai
fazer é
nos dar um pequeno espaço na caixa aqui, e essa
é a área que será verificada. E quando essa caixa não estiver
mais na tela, ela
poderá
enviar um sinal para
nós do que estará aqui em cima, a tela entrou ou
saiu, no nosso caso, o sinal de
saída, e isso nos
permitirá reiniciar nossa bola Tudo bem, então vou clicar
duas vezes no
sinal de saída da tela do nosso notificador visível
na tela Vou rolar para
baixo até minha bola, selecioná-la e
conectar meu script. E o que vamos fazer aqui é exatamente o que você já
esperaria. Vamos pegar
tudo que está pronto, rolar para baixo e
colar tudo lá. Mas temos que fazer
mais do que isso porque a velocidade no momento, a bola ainda está
indo direto para baixo. Então, antes de
esperarmos, vamos
definir essa velocidade para zero, que a bola simplesmente
pare onde está. Porque não importa
qual seja nossa velocidade,
ela está sendo definida como zero, certo? Porque qualquer coisa vezes zero, então esperamos esse tempo
aleatório, até 3 segundos. Nós redefinimos a posição, definimos a visibilidade como verdadeira. Mas o fato é que
nunca o configuramos como falso, então precisamos fazer isso também Precisamos fazer visível
igual a falso. E se houver
mais alguma coisa que precisemos reiniciar, sim, porque lembre-se de que
estamos descendo, o que significa que nossa direção V deve estar em menos
um neste ponto. Então, antes de realmente
definirmos a velocidade, podemos seguir em frente e
fazer V vezes iguais a menos um para
voltar a
subir e nossa velocidade é redefinida para a velocidade Isso deve ser tudo o que precisamos
fazer para que essa
resposta funcione. Tudo bem. Então aí está a nossa bola. Vai. Ela vai
desaparecer e
vai responder por
nós. Boop, lá vamos nós Embora nosso respawn esteja
funcionando muito bem. Só precisamos acompanhar a contagem
de bolas agora. Boop. Lá vai de novo. Tudo bem, então temos
que atualizar a etiqueta de contagem de bolas. E com isso, você
provavelmente pode adivinhar. Vamos seguir
em frente e criar nosso próprio sinal para isso a
partir da nossa bola. O sinal aumenta a contagem de bolas. E, assim como antes,
vamos ter um número lá, e vai ser um int
ou vamos lançá-lo como. E, assim como antes,
selecione nossa bola, vá para a guia Dno com nossos sinais Clique duas vezes para aumentar a
contagem de bolas e conecte-a à nossa interface gráfica. E, assim como antes,
faremos, ou como
você imagina, bola
atual mais o SQLs Num, que, em teoria, sempre
deveria ser um E acho que posso
realmente configurar isso como padrão duplamente, mas aqui está o rótulo para
atualizarmos isso também texto do ponto da etiqueta da bola atual é igual a uma sequência da bola atual Acabei de verificar duas vezes e
não podemos passar um
valor padrão para lá, então isso é um pouco lamentável Mas se apenas descermos, dê uma olhada, quando
sairmos da tela aqui, podemos ir em frente e
enviar esse sinal. Então, diremos que aumente contagem de
bolas, emita e passe em uma para aumentar a contagem de
bolas em uma Tudo bem. Então, agora, quando
nossa bola sai da tela, você precisa reiniciá-la
para ficar desligada por padrão. Eu vou fazer isso. Não desligado,
mas não visível. Clique no globo ocular e aperte play. Essa bola vai aparecer. Vai. Vai bater em um tijolo. Nós vamos ganhar um ponto.
Vai ser atualizado. Fantástico. Conforme a bola vai, ela ricocheteia em algumas
coisas e acelera lentamente. Ganhamos mais pontos
à medida que continua. Vai sair da tela,
aumentar a contagem de bolas de 1 a 2 e responder. A velocidade está toda reiniciada. Tudo bem, então tudo o
que temos que dar uma olhada agora é configurar as
condições de vitória e derrota para este jogo. O que não deve ser
muito difícil. Porque, devido à nossa condição de derrota, praticamente só precisamos
verificar se estamos na bola quatro, que deve ser nossa última bola
nessa situação, porque temos
apenas três bolas. Então, quando
cai, atingimos quatro. Esse seria o nosso
fim de jogo. E esse fim de jogo seria uma redefinição
de toda a cena. Tudo bem, então temos
nossos sinais funcionando. Temos nossa bola reiniciada e nosso contador de
bola funcionando. Tudo bem. A seguir, daremos uma olhada no aspecto de vitória
e derrota.
11. Jogo final e vitória: Certo, então
a primeira
coisa que vou configurar aqui será
a
mais fácil e rápida para
podermos testar aqui E essa
será a nossa contagem de bolas. Quando isso for igual a quatro, reiniciaremos o jogo Então, a maneira mais fácil de fazer
isso é,
já que já temos toda essa configuração para nossa bola,
basta entrar em nosso Guy. A bola atual mais é igual a um número. Atualizamos o texto,
tudo o que precisamos fazer é verificar se a
bola atual é igual a quatro, e vamos
pegar Tree dot, G apenas recarrega a cena atual. E podemos testar isso
em dois segundos rápidos. Apenas deixe a bola voar. Vou me sentar aqui no
canto e vamos
acumular algumas dessas contagens de bolas. Essa é uma delas. Vamos pegar
a segunda bola. Lá vai. Para baixo. Isso nos leva a três. E
quando perdermos essa bola , o jogo deve terminar
quando ela cair abaixo, e toda a cena
deve ser reiniciada. Então, vemos aqueles tijolos
amarelos serem preenchidos novamente. Oh, eu não fiz isso. Por que isso? R, sim, porque na verdade não
podemos criar um cronômetro porque a árvore está sendo
redefinida no momento Então, temos esse pequeno
bug para resolver. Como podemos resolver isso? Bem,
a maneira mais fácil de corrigir isso, provavelmente, é apenas alterar nossa ordem de operação aqui. E poderíamos simplesmente pegar uma
contagem de bolas e movê-la uma para baixo. E isso provavelmente
resolverá esse problema. Mas teremos algum problema com o resto do
nosso código aqui embaixo? Vamos testar e descobrir.
Vamos ver o que acontece. Às vezes, tudo o que
você precisa observar é ordem em que tudo está sendo chamado.
Às vezes é isso. É tão simples quanto
isso, outras vezes você
precisa encontrar outras soluções alternativas
ou realizar outras verificações para
ver se as coisas ainda existem Aqui vamos nós. Corra nossa terceira bola, e é aqui que
devemos terminar nosso jogo. Então, vamos ver se ainda encontramos um erro ou
se isso foi corrigido. Tudo bem, está consertado.
Então, nesse caso, foi tão simples
quanto atualizar a ordem de operação em que
tudo é chamado. Tudo bem. Então, nosso reset funciona. Agora só precisamos verificar se ainda temos algum tijolo
na tela E se sim, obviamente,
os jogos ainda não terminaram, porque o que
vamos procurar é que
não haja mais tijolos Então, como podemos verificar
isso facilmente da maneira mais simples possível? Bem, a
maneira mais simples seria pegar todos os nossos tijolos aqui,
todos no meu caso, 176 deles, e
podemos simplesmente colocá-los sob um nó padrão Então, se eu pegar isso vou pegar meu cara
só para colocar meu
nódulo aqui em cima. Vou adicionar
apenas um nó normal porque o estou usando
apenas para organizar. Vou arrastá-lo
do meu cara para o principal. E a razão pela qual fiz
isso é porque se eu selecionasse Min e
criasse o nó, ele teria sido adicionado
até aqui. Então, teria
sido irritante poder levantá-lo
totalmente Então, eu vou
mover o nó para baixo, depois vou clicar
no meu primeiro tijolo,
rolar até o
fim, segurar a tecla Shift clicar no meu último tijolo. Isso deve selecionar
todos os meus tijolos aqui. Vou apenas
arrastá-lo para dentro desse nó. Vou renomear esse
nó para ser chamado de tijolos. E isso
não deve afetar nossa jogabilidade, mas
vou dar uma olhada. Só no caso de
algo ter
quebrado de alguma forma . Dê uma olhada. Os tijolos ainda destroem, a
pontuação ainda é atualizada. A bola ainda é contada,
ainda responde. Fantástico. Então, não
quebramos nada. E a razão pela qual
fizemos isso é porque a maneira mais fácil é
dizer : Ei, tijolos, não Você ainda tem tijolos?
Você tem filhos? Certo? Algum desses
176 tijolos ainda existe? Então, quando isso acontece, podemos realmente fazer isso no nosso Nós podemos fazer isso na bola ou no Gooey Eu ia dizer que
poderíamos fazer isso quando emitimos o sinal para aumentar a pontuação ou quando
aumentamos a escola Acho que faremos isso quando
realmente aumentarmos a pontuação. Certo? Sim, então aqui,
emitiremos ou desculpe, atualizaremos nossa pontuação
e, em seguida, faremos
nossa verificação aqui Então, para fazer isso, vou exportar nossos tijolos. Vou chamá-lo de contêiner de tijolos, e isso é apenas um nó E eu clico no meu cara. Certifique-se de ir para
a guia Inspetor apertar o botão atribuído Eleja tijolos. Agora, quando atualizo minha pontuação ,
posso dizer que tenho filhos Provavelmente não. Agora. Então pegue crianças ou conte crianças. Isso também
funcionaria? E só para minha própria sanidade, vou imprimi-lo Então, quando destruirmos
nosso primeiro tijolo, devemos ter 175 impressos para nós
aqui no console 176 agora. Ok, então talvez minha matemática esteja de
alguma forma errada ou tenha
contado antes que o
tijolo fosse destruído. Certo. Então, isso não funcionaria para nós , porque o tijolo
já foi destruído ou, desculpe, os tijolos não foram destruídos neste
momento Então isso é uma pena. Não vou conseguir
fazer isso lá. Embora eu exclua
essa variável. E isso significa que vou até
o baile. E nós vamos descer. É aqui que vamos nos
libertar com base no colisor E o colisor, o pai,
deveriam ser nossos tijolos. Então, vou em frente e
podemos armazenar isso. Na verdade, nós apenas
armazenamos isso em cima, como fazíamos normalmente, não
há razão para continuar pegando toda vez que
colidimos Portanto, exporte o
contêiner de tijolos var como apenas um nó, selecione nossa bola, aperte uma placa selecione o contêiner de tijolos E depois de chamarmos o
collider dot free, podemos seguir em frente e colar nossa declaração I que
estávamos usando antes O que eu o renomeei? Eu disse que o recipiente de tijolos
disse que era tijolos. Lá vamos nós. Tenho que reinicializar
isso agora. Lá vamos nós. Então, agora, é apenas um erro
de digitação ao copiá-lo. Então, se tiver
filhos depois de
excluirmos um tijolo,
vamos imprimi-lo. Então nosso primeiro
é destruído aqui, devemos ter 175 para
o número correto. Isso é curioso, e
isso me fez querer
verificar a matemática agora. Sim, eu tenho 22, 22, 44. Portanto, são 44 por cor. Então, são 88 na metade inferior, 88 na metade superior,
deve haver 176 no total Eu devo estar um pouco louco. Deixe-me verificar isso logo quando
o jogo começar. Sim, 176 Então, o problema
é contar antes de ser
gratuito. Entendi. Então, se você está curioso para saber
por que
isso acontece, é porque Q free
aqui não está liberando Isso não libera o nodo, certo? Não é
se livrar do tijolo. Nesse segundo, ele o exclui
no final do quadro. Porém, como ainda estamos
recebendo essas informações, nosso quadro não
foi concluído. Ainda estamos recebendo as informações
incorretas. Então, o que precisamos fazer
aqui é usar essa palavra-chave acordada e obter
nossa árvore Só que, em vez de
criar um cronômetro, vamos analisar o não,
não
o ocioso, que foi
renomeado Acho que, no nosso caso,
poderíamos simplesmente
procurar , acho que eles têm
uma física, certo? Sim, um quadro de física. Então, isso vai esperar até o
próximo quadro em que isso será chamado. E então
obteremos o número. Então, isso agora deve
nos dar o número correto de 175 quando o
tijolo for destruído
e, em caso afirmativo, excelente. Pronto. 175. Então, agora temos nossos tijolos
sendo contados corretamente. Cara, fantástico. Olha isso.
Olha aquele tijolo, vá. Vá, bolinha, vá. Você está
chegando a uma boa velocidade. Sim, olha só você. Preciso parar antes de entrar nisso, e fico aqui
jogando por um tempo. Perdemos a bola. Mas você pode ver que isso
definitivamente pode ser divertido
quando você entra. Tudo bem. Portanto,
lembre-se de que precisamos
esperar pelo próximo quadro
e depois fazer a contagem. Então, agora que temos a contagem, precisamos verificar
o que
precisamos saber especificamente se
resta zero. Então, se a contagem for igual a zero, vá. Então é aqui que
precisamos de um fim de jogo. Tudo bem. Então podemos querer
esperar alguns segundos ou apenas recarregá-lo Vamos recarregar. Recarregue a cena atual da árvore. E então não precisamos ficar sentados aqui o dia todo só para testar isso. Vou prosseguir e
removeremos a maioria
deles apenas para este teste. Não se preocupe. Eu fiz isso, mas posso apertar o Controle Z
e colocá-los todos de volta. Como você pode ver,
estou fazendo isso temporariamente e
nos dando dois tijolos amarelos Então, se armazenarmos os dois, devemos comprar um jogo totalmente novo com tudo
sendo recarregado E se essa bola pudesse
acelerar um pouco,
seria ótimo. Parece que eu apaguei a parede. Eu queria saber para onde isso foi. Porque, claro, eu fiz. Eu arrastei aquela ferramenta, e talvez pudéssemos ir ainda mais devagar e
nos dar um Porque vimos que quando
ainda tínhamos um tijolo sobrando, obviamente, ele
ainda estava contando. Ainda estávamos jogando. Então, se pudéssemos pular aquela bola
até aquele tijolo amarelo, seria ótimo Acho que coloquei isso
no lugar certo, bum, e nosso jogo recomeçou
com nosso novo jogo com apenas
um tijolo aqui Mas sim, lá
vamos nós. Isso funciona. E acho que o que eu quero aqui colocar
esses tijolos de volta Mas acho que o que eu
quero pessoalmente antes recarregar é esperar um momento Então, vou dizer que vou
esperar a árvore Ge, criar Tr. E acho que quero fazer
uma pausa de dois segundos aqui. Ou até mesmo uma
pausa de 1 segundo seria boa, só para que possamos ver se o tijolo
foi realmente limpo E você poderia ir ainda mais longe
se quisesse expandir tudo isso, existem
versões modernas deste jogo. Existem alguns que
adicionam power-ups, várias bolas e assim por diante. Então, se
você quiser, você
sempre pode adicionar todo
esse tipo de coisa. É tão simples quanto as coisas
que já fizemos, detectar se
batemos em alguma coisa,
batemos nela, se sim,
fazer isso. Faça XYZ E notei um pequeno
bug lá embaixo, então vou parar
a velocidade da bola também. velocidade da
velocidade definida é igual a zero, e isso deve ser bom para Mas mesmo que isso não resolva
isso, isso não afetará
nada em nosso jogo aqui, mas é algo
que provavelmente deveríamos abordar e buscar para
não ter problemas
profundos. Tudo bem. Então, temos nossa pontuação funcionando. Nosso jogo acabou.
Deveria estar funcionando. Sim, porque caímos, acertamos quatro bolas e
o jogo inteiro recomeçou Tivemos a vitória reiniciada para nós. Estamos acompanhando a pontuação. Sim, acho que isso é tudo. Na verdade, não precisamos
adicionar mais nada. Temos o
jogo clássico recriado aqui
e, se você quiser adicionar
mais recursos, pode sempre
voltar e adicioná-lo Vá com isso. That's Breakout, o jogo clássico de 1976