Transcrições
1. Introdução: Criar um jogo de tiro espacial é uma maneira clássica de se familiarizar com a
criação de videogames. Neste curso,
vamos seguir em frente e dar uma olhada em algumas mecânicas
diferentes, incluindo um plano de
fundo de rolagem. Clássico para jogos como este
, com diferentes captadores
que podemos ativar, vamos criar nossas
próprias pequenas explosões usando o sistema de partículas. Vamos criar
um sistema de tiro múltiplo para ir em frente e aprender como fazer um jogo de tiro
espacial hoje.
2. Onde baixar Godot: Tudo bem, bem-vindos a todos.
E se você não tem o mecanismo para
criar nosso jogo aqui hoje, então você pode ir para Godot Engine.org e você
pode pegar
diretamente no site
selecionando a
guia Download aqui no topo. Você só precisa da versão
padrão para
acompanhar este curso. A versão mono
suporta C-sharp. No entanto, não
usaremos Dó sustenido, embora você possa pegá-lo. Não há necessidade de usá-lo. Não usaria a
versão padrão, tudo bem. Esse mecanismo está disponível
no Linux, Mac e Windows, bem como diretamente no navegador
da web. Se você sabe, como você pegou? Podemos ver, podemos simplesmente
rolar um pouco para baixo aqui e você tem suas
instruções de furo lá. Ao pegar isso. Você também pode criar isso diretamente do repositório do GitHub. E como você pode ver
lá, há também uma página na qual
você pode acessá-la, bem
como a página do Steam na
qual você pode acessá-la. Onde quer que você decida
, depende totalmente de você. De qualquer forma. Apenas
certifique-se de pegá-lo. E vejo você no próximo onde podemos começar.
3. Configuração de projetos: Tudo bem, então, depois de
abrir o motor pela
primeira vez, você será recebido com esta tela. Claro, você não
terá nada dentro de projetos
locais, a menos que
já tenha feito coisas
aqui antes. Mas o que vamos fazer é clicar neste botão Novo Projeto aqui. Você pode ir em frente e
dar
um nome ao seu projeto e navegar onde
quiser. E quando você fizer isso, você pode ir em frente e clicar no botão
Criar pasta. E um novo diretório
será criado. Por exemplo, meu jogo de demonstração. Se eu clicar em Criar pasta,
ela será trocada. Você pode usar GL ES 3 ou 2. Isso não deve fazer nenhuma diferença nesse projeto específico. E se você estiver assistindo
isso no futuro, você terá opções
vulcanas aqui. Nada do que ela
realmente fará diferença quanto ao
que selecionamos aqui. Então, para o propósito disso, vou deixá-lo no OpenGL de três pontos. Ah, eu vejo. Não há razão para mudar isso. E eu só vou
apertar Cancelar já. Crie um vazio aqui. Para que possamos abrir isso. Tudo bem, agora que
temos um projeto aberto, agora que temos
nosso projeto aberto, podemos ir em frente e ir até a
guia Projeto aqui na parte superior e
podemos configurar nosso projeto. Então, o que vamos
fazer é seguir em frente e dentro do Config, dentro do aplicativo, vamos selecionar
usar o desafio personalizado. E dessa forma, podemos fazer
com que nossos logs sejam enviados para uma pasta que
tenha o nome do nosso jogo, que parecerá um pouco
mais profissional. Se um usuário precisar acessar
os logs por qualquer motivo, se você quiser dar a
ele um nome personalizado, você pode fazer isso aqui. Não vou me incomodar. Estou bem em
deixar como nome do meu projeto. Agora, se
rolarmos para baixo, podemos procurar
a seção chamada display e entrar na janela. Agora, para este fundo
que eu tenho aqui, que vamos usá-lo
como T2 e T4 por 400. Então é para isso que vou
definir nossa janela. Agora, ajustaremos o tamanho
real disso mais tarde. Mas, por enquanto, é nisso que estamos definindo nossa janela
, 224 por 400. Vamos definir, verificar se
está em nosso computador de mão ou
configurá-lo para retrato e
infraestrutura. Podemos configurá-lo para 2D e
o aspecto a ser mantido. E agora nosso projeto
está pronto para começar e
podemos pular para o próximo vídeo e começar a
realmente fazer as coisas.
4. Fundo de rolagem: Tudo bem, então a primeira
coisa que vamos fazer é configurar nosso plano de fundo de rolagem
para o nosso atirador espacial. Já que nosso jogador
não fará nenhum movimento real, tanto
quanto atravessar, como você veria
como um jogo de plataforma. Em um jogo de tiro espacial, o fundo realmente
se move e o jogador permanece parado e se move
na tela visível. Então, para fazer isso,
você vai pegar as texturas que eu
incluí neste curso. E você pode ir em frente e
trazê-los para o seu projeto. Por enquanto, eu só
tenho uma pasta de sprites aqui. E eu tenho minha
formação, Brendan. E eu tenho uma pasta aqui chamada
cenas onde vou
manter todas as minhas
cenas individuais que criamos aqui. O primeiro que vamos
criar se chamará Mundo. Isso iria atingir a cena 2D aqui no nó superior ou raiz. E eu vou em frente
e renomear meu mundo. E então você pode ir em frente até a cena ou até aqui e salvar. Ou você pode pressionar
Control C ou desculpe, Control
S ou Control Shift S para salvar sua cena, vou fechar esta porque eu tenho
uma vazia criada aqui. E lá vamos nós. Você
deveria tê-lo assim. É assim que nosso
projeto deve parecer. E você pode ver esse contorno azul
tênue aqui. Esse é basicamente o nosso Canvas. Isso é o que
será renderizado em nossa janela. Então, qualquer coisa dentro
desse retângulo azul
ficará visível. Qualquer coisa fora dela não vai. Então eu vou
em frente e trazer meu ponto de fundo PNG. Agora podemos simplesmente arrastá-lo dentro e podemos simplesmente
soltá-lo assim. No nosso caso, já que
vai funcionar como um sprite, é perfeitamente bom que simplesmente o
arrastemos para dentro. Em alguns casos, você pode
apertar o botão
de mais aqui e adicionar o que
você deseja procurar. Nesse caso, foi um arranhão. E então você pode simplesmente arrastar a imagem diretamente para o slot de
textura aqui à direita. Agora vou me
certificar de que essas são as propriedades de configuração aqui. Vou mover o meu para
a esquerda, um para baixo um. Dessa forma, ele
preenche toda a minha tela. E agora, quando eu pressiono o botão
Play aqui em cima, o botão play scene no atalho
do Windows é
F. Como você pode ver, eu vou apertar isso
e agora eu deveria ter minha própria janelinha e ver isso antecedentes
ocuparam a coisa toda. Agora eu disse que vamos ajustar o tamanho dessa janela
mais tarde porque, novamente, dependendo do seu monitor, isso pode parecer enorme ou
pode parecer extremamente pequeno. Vamos, eu trouxe minha janela
aqui na tela. Então, o que você vê bem
aqui em nossa pequena caixa vermelha, desculpe, não é uma
pequena visão de caixa vermelha. Que ela aqui, isso agora é exatamente o que
vemos em nossos jogos. Isso para o
lado direito. Então, como você vê para você, isso pode ser muito pequeno ou pode ser extremamente grande dependendo da resolução do seu
monitor. Eu não vou saber disso. Mas quando mudarmos o tamanho da
nossa janela, você poderá ajustar
os valores lá. Mas, por enquanto, podemos ver que
cobre toda a nossa janela. E parece bom. É só que não está se movendo. Então, o que vamos fazer
é realmente
criar nosso movimento para isso. E tudo o que vai fazer
é descer. Então, vamos
criar um script. Agora você pode
clicar com o botão direito do mouse em nosso plano de fundo aqui e selecionar
onde, onde está nossa tarefa
ali, script anexado. Ou com ele selecionado, você pode simplesmente apertar o botão de
script anexado aqui na parte superior, que é a maneira que
eu normalmente faço. De qualquer forma, você será
criado com este menu aqui. Vamos usar a linguagem de script
GD. Como você vê por padrão, temos script
visual,
script infantil e nativo. E se você tiver o mono versus, você também teria uma opção em
C sustenido lá. Mas para este curso, novamente, estamos apenas usando o
script GD que selecionou, ele herda de um sprite
porque esse é o tipo que nosso plano de fundo
é, o modelo. Podemos deixar isso como padrão. Não precisamos de nenhum script
embutido. E nosso caminho dentro de nossas
cenas, não queremos isso. Queremos manter
as coisas organizadas. Então, vamos criar uma
nova pasta chamada scripts. E é aí que vamos
colocar nosso
script em segundo plano e clicar em Criar. Tudo bem, então temos
nossas variáveis aqui. E vamos em frente e
criaremos um para a velocidade de rolagem. Agora vamos usar dois pontos iguais e podemos definir isso como um número. Vou definir isso para dez por enquanto e veremos
como isso funciona bem. Não
precisaremos da
função pronta que vemos aqui. E como você vê
o que a nota aqui, isso é chamado assim
que a nota entra em
cena pela primeira vez. Não é isso que queremos fazer. Isso fará alguma coisa.
Só uma vez. Na verdade, vamos
usar a função de processo. Então, isso é algo que pode acontecer continuamente com as duas
linhas selecionadas aqui. Eu só vou apertar o Controle
K para remover os comentários. E podemos remover a função
pass aqui. E podemos chamar de posição de ponto
próprio. Entendi porque você vai
ser o alto e o baixo. E podemos definir isso para. Agora eu sempre fico
confuso sobre se é
positivo para cima ou para baixo ou para baixo ou
para baixo para cima e para baixo, certo? Então, vamos ver, vamos fazer mais iguais e
veremos como isso funciona. Vou definir que mais
é igual à nossa velocidade de rolagem. Tudo bem, vamos em frente
e testar nossa cena. E isso se move para baixo, isso está se movendo super rápido. Então, a primeira coisa que vou
fazer é multiplicar ou rolar velocidade aqui vezes delta. E isso ajudará nosso jogo a
ser independente de quadros também. Portanto, independentemente de quantos
frames nosso jogador tenha, o que devemos descobrir
com esse tipo de jogo realmente
antigo? E os gráficos não
são muito exigentes aqui. Mas de qualquer forma, estamos fazendo
isso, isso deve mantê-lo rolando
em uma boa quantidade suave. Independentemente disso. Se dermos
uma olhada, como podemos ver, isso também pode se mover muito
mais devagar, é por isso
que vou ajustar essa opção antes de
tocar na tela. Agora, o quão rápido você quer
que ele se mova
vai depender completamente de você. Depende totalmente de
você e de suas preferências. Acho que quero desacelerar um pouco a
minha. Vamos tentar nove ou um
pouco mais extremo. Vamos tentar cortar,
cortar ao meio. Veja-me aqui às cinco. Tudo bem, eu acho,
acho que gosto de cinco. Então eu acho que é isso que
eu vou escolher. E agora o que precisamos
é de nossa imagem. Você realmente resseca. Você vê que quando ele vai até
o fim, ele se foi. Então, o que precisamos
fazer é que, depois de definirmos nossa
posição, podemos fazer. E se verificar aqui, podemos verificar se a sessão self
dot y. Poderíamos verificar se é
maior do que um número definido. Nesse caso, o
número seria 400. Digamos que seja maior
ou igual a 400. No entanto, se tomarmos nota aqui, as notas fecharão isso
para remover o erro. Se tomarmos nota, notamos que nossa posição está realmente
no centro de nossa imagem. Então, se isso vai
passar de 400, então ainda vamos ver
a imagem de meia parte. Então, precisamos adicionar
metade disso em ou metade de nossa
imagem nisso. Então, neste caso, serão 600. E tudo o que vamos fazer
é definir
a posição de y de volta
para o que é atualmente, que você pode clicar no
plano de fundo e conseguir isso diretamente
no inspetor. Mas já que eu sei que está
no meio disso deveria ser 200. E se eu entrar e
dar uma olhada transformar, meu y está definitivamente em 200. Então, para verificar
se isso está funcionando, vou mudar
meu doce para 15. Se dermos uma olhada, rola
para baixo um pouco devagar demais, vamos dobrar isso
para 30 para testes. E podemos ver que ele se move para baixo e ,
assim que chegar à parte inferior
completa da tela, deve estar de
volta ao topo. E continue
rolando para baixo. Aqui vamos nós. Aqui vamos nós. Então, agora o problema que
temos aqui é obviamente que podemos ver a imagem ou a falta
de uma imagem por trás dela. E, obviamente, pudemos
ver que essa imagem termina. Então, isso
certamente é um problema. Então, precisamos ajustar
algumas dessas opções. E o que vamos fazer é
definir isso para, vamos criar
uma nova variável chamada Vamos definir isso para redefinir. Como chamamos isso? Redefinir? Vamos chamá-lo de rolagem de redefinição. Eu direi menos
igual, defina como 0. Agora observe que estou usando
export var aqui. E se você estiver assistindo
isso no futuro, talvez usar a versão 4.01
das mudanças que você
precisará fazer aqui seja colocar
isso em sinal antes da exportação. Mas se você estiver usando a versão três, não precisará disso. O que é isso? O que isso vai fazer é selecionar o plano de fundo
molhado. Você pode ver
no lado direito, podemos mudar o
número disso. Agora, para nossos detalhes. Precisamos de 600 para
este específico. Então, podemos definir isso, nossa posição y se for
maior ou igual a. Redefinir rolagem. Dessa forma, desde sua
coordenada x aqui, podemos usar o mesmo script em outro que pode ter números
completamente diferentes. Para que possamos fazer outro para a barra de
exportação, comece a rolar. E com isso, podemos definir
a posição inicial, que é 200 para nós aqui. E preencha isso em
substituição em nosso código. Tudo bem, lá vamos nós. Se você tiver, você tem algum erro que
aparece sobre um nó? Vamos em frente e apertar o botão de
parada na parte superior e abri-lo novamente,
ou reproduzir a cena. E você deve ver que
ele funciona perfeitamente bem ainda. O que é ótimo. Porque agora podemos adicionar números
completamente diferentes
com um segundo aqui. Então, vou em frente e selecionar meu plano de fundo, pressione Control
D para duplicá-lo. E eu estou movendo meu
segundo para cima. Vou apenas garantir que isso esteja definido perfeitamente para que não tenhamos
nada aparecendo no meio. E agora podemos ajustar
quais são nossos números aqui. Portanto, nossa posição inicial
deve ser menos 200. E nosso pergaminho de redefinição, devemos ter um sinal de menos lá. Isso seria positivo
200 possivelmente. Mas agora, se formos
em frente e
executarmos isso, veremos apenas
parecer uma imagem contínua. E quando ele for reiniciado, nem
vamos
perceber porque tudo
ficará perfeitamente alinhado. Então, sempre
parecerá um pergaminho constante. Lá vamos nós. Agora temos nosso plano de fundo de
rolagem. Mais uma vez, basta ir lá e diminuir a velocidade para o que
você quiser. E se você está se
perguntando por que
não estamos exportando nossa velocidade, simplesmente porque
não precisamos alterar o valor da velocidade para os dois planos
de fundo. Podemos deixar isso como
sendo o mesmo número. Então, podemos vir até aqui e podemos mudar para cinco agora. Ou se você quiser usar e, ou 20, o que quiser usar
para o seu jogo. Você me vê entrar e
tudo funciona perfeitamente bem. Agora temos um plano de
fundo de rolagem para o nosso atirador espacial.
5. Multiplicador de janelas: Tudo bem, neste vídeo, deve
levar apenas um osso que tem que ser bem curto. Vamos apenas ajustar o tamanho da
nossa janela
agora para
que possamos tirar isso do caminho agora, em vez de voltar
e resolver isso mais tarde. Então, o que vamos fazer
é colocar isso dentro de um roteiro global. Agora, isso também pode ser chamado de
carregamento automático ou singleton. Tudo depende do
ambiente
em que você está e com quem está falando. Mas eles geralmente são
considerados a mesma coisa. Nós somos apenas, tudo
realmente depende, realmente como se o singleton
estivesse em um padrão de design. Um global é
algo muito referido. E aqui eles são
chamados de empréstimos para automóveis. Mas o que vou fazer
é entrar no meu biossistema aqui. Selecione scripts, clique com o botão direito e selecione Novo script. E já que este é
um roteiro global, vou seguir em frente
e chamar o meu de global. Clique em Criar. Eu vou subir aqui para projetar, configurações
do projeto. Vá para a guia de carregamento automático, ative ou abra o caminho do arquivo. Vamos selecionar nosso script global. Pressione o botão Adicionar e agora você pode ver o
script que está sendo carregado. Está ativado,
o que significa que está ativo. E o nome que vemos aqui, você pode entrar aqui e mudar isso se quiser. Vou deixar a minha
como discordou da palavra global e essa palavra, esse nome é como vamos
acessar esse script mais tarde. Se alguma vez precisássemos acessar
qualquer coisa dentro disso, se
são variáveis são outras funções. Então, o que vamos fazer é usar
a função pronto aqui. E podemos ir em frente e definir a tela da janela do
ponto do sistema operacional em um tamanho de janela. O tamanho da nossa janela é igual
ao tamanho da janela de pontos do sistema operacional. E podemos definir isso para
qualquer que seja nosso multiplicador. Se você quiser, você pode
vir aqui e criar uma variável para o multiplicador de tamanho. E a razão pela qual estamos definindo isso com dois pontos é igual. Se você está se perguntando, em
vez de apenas usar um sinal de igual, como você vê aqui,
que também é válido. Mas usando apenas os iguais aqui, vai defini-lo como dois. No entanto, se nós com
dois pontos iguais aqui, também
está definindo para o tight em que dois é um número inteiro. Então seria o mesmo que
se fôssemos assim. Só que é onde eles fariam isso escrevendo uma
lição com um int, não
é terrível, mas às vezes você pode ter algo muito longo
como dicionário. E isso realmente
encurta esse todo, encurta essa coisa toda para apenas começar dois
personagens aqui. Estamos definindo para dois, bem
como declarando o
tipo como o que quer que seja dois. Então, com isso, se executarmos isso, veremos agora que
nossa janela se abre. E agora eu tenho que
redimensionar isso aqui. Mas eu vejo agora que ele se abre. Nossa janela tem o dobro do tamanho, que, dependendo da
sua tela novamente, pode ser muito mais fácil ver o que está acontecendo e ser
muito mais jogável para você. Mas agora você pode entrar
e ele simplesmente muda esse tamanho de multiplicador,
o que você quiser. Então, se você quiser torná-lo
menor, você Doug 0,75. Se você quiser, se
você estiver em uma tela de 720 P. Ou se você estiver em uma tela de
Fourier, você pode aumentar esse multiplicador
para talvez um
multiplicador quatro vezes para obter
algo muito maior. E também estamos mantendo isso, a resolução e vendo
exatamente o que está aqui e não
saindo da nossa caixa. Lembre-se, devido à
nossa configuração aqui, modo
esticar por ter
o modo para 2D, definindo nosso aspecto
para manter. Tudo bem. Então, agora que temos isso
funcionando o tempo todo, nossas janelas se ajustam e
passamos para algumas coisas mais
interessantes.
6. Configuração do jogador: Tudo bem, vamos em frente e
pegar a configuração do nosso jogador. Então, a primeira coisa
que precisamos fazer é criar uma cena totalmente nova. Então você pode fazer isso
pressionando o botão de
adição aqui em cima. E em vez de criar um nó normal para D como
fizemos para o mundo, já que este vai
ser um jogador, queremos ser um corpo
cinemático 2D, que possamos atingir o
outro nó aqui. E poderíamos apenas digitar cinemático e
compartilhá-lo lá. Corpo cinemático TD. Vá em frente e selecione isso. E eu fui em frente e renomeei
meu player e salvei. Depois de fazer isso, ele deve se
parecer com o seguinte. Ouça a palavra triângulo
amarelo da mãe. Vamos em frente e resolveremos
isso em apenas um momento. Vamos apenas nos dizer
que não temos nenhum, ainda não
temos nossa área de
colisão configurada. Então, como um jogador não sabe
como aplicar nenhuma física. A primeira coisa que eu
quero que você faça é se nosso player estiver embaçado e os suprimentos voltarem ao
seu plano de fundo também. Então eu trago aqui. Você pode ver que o
meu não está embaçado. Eu
desliguei meus filtros, mas se estiver, você pode ir em frente e
selecioná-lo aqui no sistema de arquivos. Vá até a
guia de importação no canto superior esquerdo. E você notará filtrar aqui, verificar e ligar você, desligar e importar. Caso contrário, se estiver ligado, ele sangrará embaçado assim. O que para alguns jogos
pode ser bom. Mas para pixel art,
isso é terrível. E você verá a diferença
aqui novamente quando eu
desligá-lo e apertar o botão de
reimportação novamente. Isso faz uma grande
diferença na pixel art. Portanto, verifique se
você desativou todas as texturas que
usamos neste projeto. Então, vou
excluir isso daqui, já que não é assim que
vamos usar isso. E é isso aí. Eu não quero ter que me preocupar em
colocá-lo no local correto. Então, o que vou fazer agora
é selecionar meu jogador. Vou apertar o
botão Mais e pegar o sprite. E agora ele vai ser trancado bem aqui no meio,
onde deveria estar. Vou pegar
minha planilha de sprite e arrastá-la direto para o slot de
textura da minha tela. Agora, há muitas maneiras de
fazer uma animação. E neste caso, eu tenho um
desmembramento para cada linha. Então, podemos ver na
primeira linha,
temos nossa animação ociosa onde estamos meio que voando
em linha reta. E então nossas próximas
duas linhas lá, próximas duas linhas estavam
virando para a esquerda e para a direita. Então, para que
possamos usar isso em um sprite normal
para uma planilha. Vamos entrar nessa guia de
animação aqui. E vamos
definir oito quadros, que é a horizontal para dois porque temos duas colunas. E, em seguida, quadros verticais,
temos três linhas. Então eu disse que três. E agora temos o nosso primeiro e você seria capaz de
mudar entre eles usando o botão do cérebro
aqui, como você vê. E é basicamente assim que
vamos trabalhar com a criação de uma
camada de animação. Mais tarde. Por enquanto, ainda temos
nosso triângulo amarelo aqui. Então, vamos em frente e
selecionar nosso jogador novamente. O mais, traga um polígono de
colisão, desculpe, eu forma de colisão. Uma forma básica será muito boa para nós aqui. E podemos usar apenas um retângulo. Você pode ir em frente e encaixar isso da maneira que
quiser para o seu jogador. Vou seguir em frente
e estender minhas anotações um pouco assim. E eu vou deixar a ponta
fora da dica me muito bem. Tudo bem. Então, a última coisa que
vamos usar aqui é onde
precisamos, vamos precisar.
Então, vamos em frente. Vamos adicionar outra coisa
ao nosso player aqui. E este será o reprodutor de
animação. O que está acontecendo,
onde vamos acabar criando animações e reproduzindo-as durante certas instâncias em
que precisamos delas. Tudo bem, então isso serve para a criação do jogador e
a configuração do jogador aqui. Em seguida, seguiremos
em frente e começaremos a configurar
os movimentos.
7. Movimento de jogadores: Tudo bem,
vamos em frente e começar
a fazer com que nosso
jogador se mova. Porque
se tocássemos essa cena aqui, é muito chato. Você meio que se senta lá em cima. E se entrarmos em
nossa cena mundial, e se acertarmos esse ícone de
corrente aqui, veremos que podemos ter acesso às nossas outras cenas
e vamos
pegar nossa cena de jogador. Nós apenas seguimos em frente e nos movemos a
posição de onde você
quer que seu jogador esteja. Vou colocar o
meu ali mesmo. E, novamente,
se abrirmos e dermos uma olhada, quando você perceber que
não é muito emocionante. Está se movendo, mas nosso jogador, está meio que sentado
lá como uma imagem estacionária. Então, podemos ir em frente e consertar isso e fazer com
que isso se mova. Vamos entrar no nosso player. Na cena do nosso jogador.
Vamos apertar
o botão Adicionar Script
e vamos
adicionar um script de jogador a ele. Agora, lembre-se de ir em frente
e colocar isso dentro da sua pasta de scripts
para manter as coisas agradáveis, limpas e organizadas. E vá em frente e crie-o.
E isso é o que temos. Então, vamos precisar de
algumas variáveis aqui. Uma delas
será a nossa velocidade, e esta é a principal. Vamos
precisar, velocidade var. E podemos definir isso para dois pontos
iguais a um vetor, mastigar. E você pode abrir os parênteses e
colocar 0 vírgula 0. Ou você pode fazer um vetor de dois pontos e então a palavra
é 0 em maiúsculas. Ambos são exatamente
a mesma coisa e produzem o mesmo resultado. Não
vamos precisar da função de leitura aqui. E vamos em frente e criar mais
uma variável para nossa velocidade. E eu vou em frente e
vou em frente e definir
o meu para definir o meu para 100, e vamos ver como isso parece. Em seguida. Temos nossa função
de processo. Podemos descomentar isso novamente apenas selecionando
e usando Control K. E aqui dentro é
onde
teremos nossas funções aqui. E o primeiro que vamos precisar é mover
o slide, mover o sublinhado e o slide do
sublinhado. E temos que passar pelo
menos um argumento
para que isso funcione. E esse argumento
será apenas a nossa velocidade. Agora, com isso e o problema, veremos um erro. Agora, se formos em frente
e começarmos isso, e você ver um idiota de
R T aqui embaixo. Temos dois problemas que aparecem. Agora, esses problemas, se
formos em frente e clicarmos
neles e
entrarmos na guia Erros, podemos ver que o delta nunca foi
usado no processo da função. Então, podemos simplesmente colocar um sublinhado
no início do delta. E isso dirá ao
participante para ignorar isso. Ignore o fato de que não
estamos usando isso. E nosso segundo diz
que retorna um valor que nunca
é usado e
nunca precisamos usá-lo. Então, o que podemos fazer aqui é realmente
colocar um comentário. E esse comentário é
só para clicar. local de sexo que precisamos é adicional. Então, vamos usar um
comentário que chamei de aviso, traço, ignorar, dois pontos, retorno, valor de
sublinhado,
sublinhado descartado. E isso vai ignorar o valor descartado
da próxima linha. É essencialmente
colocado na linha nove. Ele vai ignorar
que o valor em dez, ou segundo erro aqui de mover o slide que é
retornado, é descartado. E se quiséssemos,
poderíamos fazer a mesma coisa pelo delta também. Então, podemos fazer isso
com, se quisermos. Poderíamos ir acima da função de processo e
usar traço de aviso, ignorar, dois pontos, argumento não utilizado e nos livrar desse
sublinhado antes do delta. E devemos ver
esses dois completamente ignorados. E
será apenas para essas duas linhas. Isso é apenas uma coisa muito
temporária que é criada ou que nos
diz a resposta e ignora o seguinte erro
que precede esse comentário. Então você pode fazer isso,
ter isso de qualquer maneira. Mas essas são coisas de
duas maneiras diferentes para você, que maneira você
quer fazer isso. Agora, para o movimento em si, vamos seguir em frente
e criar uma função chamada movimento. E vamos chamar
movimento acima do slide em movimento. que vamos fazer aqui é ir em frente e verificar se nosso botão está pressionado. Então, digamos que se a entrada. E por enquanto vamos usar é. Ponto é sublinhado, peito
sublinhado. E o código de varredura
que podemos colocar aqui se você souber o número,
você pode colocá-lo, mas é provável que você não saiba.
Então, vamos apenas digitar o sublinhado da tecla
d em maiúsculas. E podemos colocar dois pontos. E então, na próxima linha,
faremos um ponto de velocidade x. Então, só queríamos acessar
o valor x da velocidade. Portanto, o primeiro número e a tecla D são normalmente associados ao
movimento para a direita. Então, o que vamos fazer
aqui é definir isso indo para a direita
no eixo x aqui, e vamos para a direita. Isso vai aumentar um número. Então esse será
um número positivo. A que isso é igual? Velocidade? Agora, se executarmos isso
e apertarmos a tecla D, e ela, estamos nos
movendo para a direita e continuamos nos movendo. Se você quiser criar um botão a na forma
do nome de uma ação. Então, se você não
quiser, é continuar pressionando e colocando
na tecla assim. Na verdade, podemos acessar
dois projetos, configurações de
projeto chamadas
de entrada, mapeador de entrada. E isso nos permite criar controles para o nosso jogo com
extrema facilidade. Ou a ação aqui, eu vou
virar, certo? Adicionar. E agora eu posso apertar
esse botão de mais. E eu poderia fazer uma chave. E qualquer chave que eu colocar aqui, eu coloco na tecla D aqui. Eu posso acertar bem, mas
eu também posso entrar. E se eu quisesse, eu
poderia usar a
tecla de comando e poderíamos fazer a seta para a
direita se eu quisesse. Então, se eu quiser
suportar as teclas WASD e de seta,
certamente posso fazer isso. E eu só preciso
fazer o único comando. Estamos fazendo isso.
E como usaríamos isso como em vez de
usar a tecla dele pressionada, nós vamos fazer
é ação mama. E você verá sua ação
aparecer e as contas aqui. Assim, podemos selecionar virar à direita. E se fizermos isso
, precisamos do cólon
no final. Lá vamos nós. Agora, se executarmos isso e
acertarmos a mesma coisa, tínhamos nossa tecla D que
atribuímos à ação
virar à direita. Vamos seguir em frente e
seguir para a direita. E é claro que nos movemos para o mundo e damos
uma olhada nisso. Lá vamos nós. Então, o que eu quero
que você faça é que você vá em
frente e tente
se tornar capaz de
virar para a esquerda agora. E como um desafio extra, eu quero que você veja se você
consegue descobrir como se
fazer parar de se mover quando você não está pressionando nenhum
desses botões? Certo? Vá em frente e tire um momento,
pause o vídeo e dê uma chance e um momento. Você pode refazer
a pausa. E daremos uma olhada e
mostrarei como fiz isso. Tudo bem, bem vindo de volta. Então, aqui vamos nós com a primeira coisa
que vamos fazer é dizer outra coisa. Então também, se não estivermos
pressionando o botão direito, nosso ponto de velocidade x
será igual a 0, o que tem que
nos impedir de nos mover. Então você vê se nós agora apertamos
a tecla D, nós nos movemos para a direita? E se eu parasse,
paramos de nos mover. Ok, então se nossos
botões não estão sendo pressionados, paramos de nos mover. Ótimo. Agora, algo que você pode tentar é que você pode ter
entrado e dito, se a entrada for ação
pressionada, então vire à esquerda. que no momento
não existe. Eu vou ter que ser
criado aqui em um segundo. Então você acessaria a
velocidade ponto x. E se você se lembrar que o que eu
disse está indo para a direita, nós vamos
aumentar em valor. Então, indo para a esquerda, vamos
diminuir em valor. Então, vai ser
uma velocidade negativa. Agora deixe-me criar
esse botão bem rápido. Vire à esquerda. E eu defini isso para a minha dor. Lá vamos nós. Agora
você pode ver que se atingirmos D, nada mais acontece. Não podemos virar à direita. Mas se usarmos um, certamente
podemos virar à esquerda e paramos, mas não
podemos ir para a direita. Agora, tudo o que precisamos
fazer para corrigir isso é na verdade, definir isso como um LFO, também chamado de else-if. Então, se fizermos E, L, I, F em R virado à esquerda
em vez de um normal, se essas duas letras vão consertar tudo neste código e tudo no agora
funcionar da maneira que deveria. Porque estamos, estamos
verificando se um desses bugs ou pressionamos
o que estou procurando. Todos esses
requisitos diferentes. Embora eu concorde
que é um pouco francês aos dois F's,
realmente não funciona aqui. E esse aspecto, mas quando se trata de
fazer movimentos de qualquer maneira, você geralmente quer apenas uma
direção sendo pressionada. Então, se executarmos isso agora
e dermos uma olhada, podemos ir para a direita, para a esquerda e pararmos sempre. Tudo bem, então, a seguir, podemos dar uma olhada na animação de nossa camada. E também precisamos
dar uma olhada em impedir que nosso jogador
saia da tela assim. E há várias
maneiras de
fazermos isso também. Tudo bem. Vejo
vocês na próxima.
8. Animação de jogadores: Tudo bem, então vamos em frente e animar nosso player. Neste. Vamos precisar criar
algumas animações para isso. Então, vamos para
a nossa equipe de jogadores. Eu vou acertar de A para D
no topo aqui para que eu possa dar uma olhada no que está acontecendo. E podemos selecionar nosso reprodutor de
animação. Agora é isso que
mantém nossas animações e nosso sprite aqui em cima. Como tudo dentro dele. Só precisamos acioná-lo para parecer que é
uma imagem animada. Então, podemos entrar em nosso reprodutor de
animação, acertar a animação do que está aqui
embaixo. Selecione Novo. Vamos chamar isso de
ocioso. Para esta animação. Só vou fazer
com 0,3 segundos de duração. Vou configurá-lo para fazer um loop aqui no canto inferior direito. Novamente, ainda não
chegamos a lugar nenhum com correntes. comprimento do arco é 0,3. Apertamos o
botão de loop aqui para ter
certeza de que está ligado. E o que vamos fazer é agora selecionar nosso sprite. Podemos dar uma
olhada na nossa moldura aqui. E notamos que temos essas chaves que aparecem agora
no inspetor. Agora, o que isso faz é
que nos permite criar um quadro-chave dentro de nossa animação
para qualquer coisa que temos aqui. E o que vamos manter
rima são nossos quadros aqui. Então, se eu apertar essa tecla, não
precisamos de uma faixa de redefinição, mas se você quiser deixar isso
ligado, não machuca nada. E eu vou
usar curvas de Bezier. E esse caso
é, novamente, que não vai
importar
com a planilha, mas
vou seguir em frente e clicar em Criar. Então você vê que temos nosso prazo
baixo aqui. Apenas certifique-se de que
seu pequeno marcador aqui esteja no começo. E podemos ir em frente e
criar esse quadro-chave 0. E então 0.2,
vou criar o quadro-chave para
alterá-lo para o quadro um. Se eu apenas
reproduzir isso enquanto loops, podemos ver que temos o que
parece ser nossa chama ativando e tendo
um pequeno piscar aqui. E podemos ir em frente e fazer isso por ela e à esquerda e virar à direita. Claro, não
vamos usar o quadro 01 e vamos usar
o próximo conjunto de anéis. Eu quero que você vá em frente
e tente criar as
animações de virar à esquerda e à direita para você mesmo. E pause este vídeo,
experimente. Volte, e eu vou em frente e passo por isso
e se você teve algum problema, espero que esclareçamos
algumas coisas para você. Tudo bem, bem vindo de
volta. Então, vamos entrar na animação e
criar uma nova. Vamos fazer virar à esquerda. E vamos ver
quais nós temos que realmente
viramos à esquerda primeiro. Então eu vou descer aqui, mudar meu comprimento é 0,3. Ative o loop, vá
para o início da minha faixa com o quadro definido como dois, vou criar um quadro-chave. Ele cria. Vou passar
para o SharePoint para fazer o próximo quadro, que é o quadro três. Ótimo, outro ponto chave. E eu vou apertar Play para repetir isso. Parece que meu primeiro
quadro ficou confuso. Então, eu vou voltar
ao começo aqui. Meio chato para mastigar e apertar
o botão do quadro-chave novamente. E lá vamos nós. Se eu apertar play,
tudo parece bem. Eu vou fazer a mesma
coisa para virar à direita. Crie uma nova animação. Vire à direita. Defina isso para 0.3 loop e ligado
irá para o início, vá até o quadro quatro. E eu só vou enquadrar
isso de novo só para ficar seguro. Pule até 0 para ir para o
quadro cinco. Aperte a tecla. Isso já estava no
cinco, então eu preciso ensinar seis e apertar a tecla. Lá vamos nós. Vamos
tentar isso de novo. Meus números estão estranhos de novo, então vou mudar
isso de volta para quatro. Pule até 25. Aqui vamos nós. Por alguma razão, estamos
segurando a animação. O primeiro quadro sempre
parece ser um pouco estranho. Em algumas situações. Vamos em frente
e jogamos isso e lá vamos nós, acasalamento aleatório. Então, agora precisamos que isso
realmente funcione dentro do nosso script sempre
que estivermos nos movendo. Então, para isso, vamos
criar uma nova função. Animar ou animar, basta mantê-lo lento
ou pequeno. E vamos chamar
essa função
animada aqui dentro do nosso processo, assim como fizemos com o movimento. E tudo o que precisamos
verificar é se nossa velocidade em nosso eixo x é maior ou menor que 0, porque se for 0, não
estamos nos movendo. Se for menor,
vamos para a esquerda. Se for maior,
estamos indo para a direita. Então, podemos ir em frente
e verificar se a velocidade x é maior que 0. Sim, ok. Então, se for
maior que 0, vamos em frente e podemos usar o cifrão para acessar qualquer propriedade logo no início
ou para obter nosso nó. Mas o que vou
fazer é deixar isso um pouco mais limpo. Olhe para aqui. Então, vou voltar às
minhas variáveis aqui. Eu vou fazer pronto, var,
digamos uma camada M, digamos uma camada M, Excel e definir isso igual ao jogador de animação de
cifrão. Agora, novamente, se você estiver em 4, acredito que com um já aqui, você precisará do sinal de arroba. Vamos ver. Acho que estamos em três. Isso só vai nos
causar um erro. Então, agora podemos voltar
à nossa função de animação. Poderíamos apenas digitar
e inserir player. E ele fará referência a esse nó do reprodutor de
animação aqui. E dissemos para conseguir. E nós poderíamos fazer o jogo de pontos. E vamos virar
à direita quando x for maior. Então, se formos em frente e
tentarmos isso, podemos ver isso agora animado. Só que agora, é claro,
ficamos presos. mesma situação que
tivemos com nosso movimento é que nossa animação vira para a direita e então ficamos
presos lá à direita. Não voltamos a voltar
à nossa pequena situação
ociosa aqui. Então, se você quiser,
vá em frente e tire um momento aqui e veja se consegue descobrir como virar à esquerda e nos
fazer voltar ao normal quando não
estivermos pressionando
nenhum dos botões. Tudo bem, bem vindo de
volta. Vamos em frente e resolver essa situação. Vamos fazer exatamente como
fizemos antes com o LLF. Vamos obter
nosso ponto de velocidade x. Vamos verificar se é menor que,
se nosso X é menor que 0, se nosso X é menor que 0, significa que estamos nos
movendo para a esquerda. E nós vamos em frente
e definir o reprodutor de animação, então Anime player, jogue. Vire à esquerda. Agora temos que pegar a outra situação
no caso de não estarmos pressionando
nenhum desses botões. E assim como antes
que possamos usar outra coisa. E no modo ponto do jogador ocioso. Agora, se dermos uma
olhada nisso, aqui vamos nós, Estamos virando para a
esquerda e para a direita, e voltamos ao normal e não estamos pressionando
nenhum deles. Podemos dar uma
olhada nisso dentro do nosso mundo e como temos um
jogador em movimento. E isso é tudo o que precisamos para
animações para um jogador. Então, se você quiser ir em frente e adicionar movimento para
avançar e voltar, isso vai ser no eixo Y. Então, se você quiser configurar isso para poder
avançar e voltar, você certamente pode fazer isso. E eu acho que podemos ir
em frente e você pode adicionar, adicionar isso apenas para o caso de uso
específico. Agora lembre-se,
se
você estiver virando à direita , vamos definir
nossa velocidade para 0, assim como faremos
outra. O que você faria para o y para ver se a velocidade
ponto y é igual a 0. E, claro, vou
colocá-los em Alice também. E faremos a mesma coisa que eu, se pudéssemos fazer
algo como avançar. Agora, é claro, nós apenas
influenciamos nossa velocidade. Não por quê? Nós somos rápidos, seja isso
positivo ou negativo, vai determinar se
você está subindo ou descendo ou quando está fazendo isso. Não vamos nos
mover para a esquerda ou para a direita. Agora. Eu não tenho meu botão configurado, mas isso é essencialmente o que você vai fazer e você vai fazer a mesma coisa para
trás, é claro, é garantir que você tenha
sua velocidade configurada corretamente, se isso é positivo
ou negativo no Y. Assim, você pode avançar
e recuar se
quiser adicionar essa funcionalidade
ao seu jogo.
9. Movimento diagonal: Tudo bem, neste vídeo, vou mostrar rapidamente como
você pode criar um movimento de 8 vias. Então, se você quiser se mover em uma diagonal, você
será visto. Se dermos uma olhada aqui,
podemos nos mover para a esquerda ou para a direita. Extremamente rápido. Oh, isso é porque
eu mudei. Aqui vamos nós. Então você verá aqui que
pode se mover para a esquerda ou para a direita, ou pode mover para cima e para baixo. Se você realmente não se mexer. Ao mesmo tempo, vemos se eu subo e pressiono para a direita.
Agora, vamos lá. Eu ainda estou seguindo
esse ângulo estranho que temos acontecendo lá. Então, tudo o que vou fazer é
remover todos
os nossos conjuntos de zeros aqui. Portanto, nossos botões
só mudarão o acesso único, o Y extra. Vamos pegar
nosso bloco else aqui que define tudo como 0. Podemos remover isso completamente, mudar nossa elipse ou declarações
else if em
apenas uma declaração if. E no topo do movimento, podemos ir em frente e definir a velocidade
igual ao vetor dois ponto 0. E isso é tudo o que precisamos fazer para ter um movimento diagonal adequado. Isso funciona corretamente e
não temos problemas estranhos. Então, se você quiser
ter um movimento de 8 direções, é assim
que você pode seguir
em frente e fazer isso. Novamente, é por isso que estamos
movendo nossos zeros. Então, se você se lembrar aqui, eu não voltaria, certo? Também definimos a velocidade y como 0. E quando subimos e
descemos, definimos a velocidade x como 0. Bem, o que isso,
removendo-os e colocando a velocidade é igual ao vetor dois pontos aqui no
topo do nosso movimento. Podemos seguir em frente e ter um bom
movimento de 8 direções em nosso jogo. Então, se isso é algo que
você quer ter lá, é assim
que você pode ir em frente
e continuar adicionando isso. Agora, se você notar que há
uma coisa lá em ratos, quando você se move em uma diagonal,
você está realmente se movendo
mais rápido do que se você se mover para a esquerda ou para a direita. Então, tudo o que vou fazer
é definir a velocidade igual à velocidade ponto
normalizado vezes a velocidade. Vamos tentar isso. Agora, você vê que mantemos uma velocidade consistente, independentemente
de estarmos indo em linha reta, lateral ou em ângulo. Certo? Então, isso é suficiente para este vídeo. É por isso que jogue
a ponta bem rápido. Então, eu sei que alguns de vocês
provavelmente vão querer um movimento de 8 vias. Pede a você, de
certa forma, como modernizar um pouco o
seu jogo
e não ficar preso até agora no passado, onde só tínhamos as duas direções separadas
e adicionamos uma ou outra. Então é assim que você
adiciona movimento. E no próximo
vamos dar uma olhada em como
podemos impedir que o jogador saia
da nossa tela.
10. Barreiras de jogos: Tudo bem, então seja bem-vindo. Neste vídeo, vamos
dar uma olhada em como podemos impedir o usuário
saia da tela. Como você vê, vamos da esquerda para a direita. Vamos
passar completamente pela tela, o não é o
que
queremos para o nosso jogador, mesmo com ir para trás e para frente
sairá completamente da tela. Então, para conseguir isso, temos dois métodos
para fazer isso. Podemos usar o método da barreira
invisível, ou podemos verificar a posição do jogador em
relação a você, é
claro, o tamanho
do nosso projeto aqui. Então, se quisermos ir para
o método da barreira, podemos ir em frente e criar um corpo estático
aqui no mundo. Crie uma forma de colisão. Atribua essa forma,
tenha um retângulo. Se eu pegar aquele corpo estático, vou travar
a forma de colisão aqui para não segurar
isso. Então eu agarrei o corpo estático
e apenas o movi para cá. Agora posso trancar isso. E se eu estender o feltro para que seja isso. Isso é tudo
que teríamos que fazer. E, claro, podemos aplicar
isso aos quatro lados. E podemos impedir que o usuário saia
da tela. Então, é claro que podemos
ir para o fundo porque não temos
uma barreira lá embaixo. Mas essa é uma maneira de
você definir essa restrição. Agora, para ir aqui
para o lado direito, vamos seguir em frente e
usar o segundo método que poderíamos usar para isso. Quando virarmos à direita, vamos verificar
uma segunda condição. E não posicione o ponto x
maior do que aproximadamente o motivo 92. E como eu consegui isso
é nossa testemunha para 24 e eu estou apenas
subtraindo nosso sprite. Agora, se formos para a direita, você vê que temos aquela
barreira lá que é colocada no jogo ou
não. Vamos virar dessa forma. E então o
lado esquerdo, é claro, você pode ver que ainda temos
nossa animação de curva. Nós simplesmente não podemos ir
mais para a esquerda. Portanto, existem dois métodos completamente
diferentes. Depende totalmente de você. Qual método você
quer fazer isso? Dois a 08. Você vai. Então, temos exatamente o mesmo, estamos bem
na esquina. Agora. Você pode ver isso com um método. Ainda estamos reproduzindo nossa
animação e tentando virar. E com o
outro, acabamos
de parar e
não nos movemos. Então, não estamos virando. Então, o método que você deseja seguir depende totalmente de você. Basta ter em mente que, se
você quiser fazer as barreiras, você deve defini-la
em quatro barreiras em torno dos quatro lados. Se você tiver o movimento completo, um Android para frente e para trás à esquerda. E o mesmo com
o seu código aqui. Se você quiser seguir a rota do código
aqui e fazer suas verificações, você também vai
verificar se está posicionado no X à sua esquerda. Eu não verifiquei sua
posição ponto y para frente e para trás. E é claro
que o 0 estará no topo
da tela aqui. Então 0 seria
algo parecido com isso. E então, é claro,
se exceto 400, que é a parte inferior
da nossa tela, teríamos
algo assim. Então você tem que fazer seus
próprios cálculos também. Então eu diria fazer
16 para o topo, fazer 384 para o fundo. E então, claro,
do lado esquerdo aqui, podemos apenas fazer 16 e recursos. Como eu consegui isso, a
origem do nosso jogador. Lembre-se, se dermos uma
olhada, a cena do nosso jogador está no meio e
o sprite é 32 por 32. Então eu tirei metade disso, que serão 16. Então foi assim que
consegui esses números. Então, qual método você usa para bloquear seu
jogador depende totalmente de você. O benefício de fazer as barreiras
invisíveis, é claro, significa que você sempre pode
simplesmente pegá-lo e ajustá-lo a
qualquer momento e visualmente
sem ter problemas. Claro que sim. O outro, o benefício do outro é que não temos
aquele visual de animação travado enquanto tentamos ir até
o final, seja qual for a direção. Nesse caso, nossa ocorrência depende
totalmente de você. Pessoalmente, vou
aplicar o método code aqui. Estou verificando minha posição
na minha tesoura de verificação. Mas se você quiser usar
a barreira invisível ou se aproximar
do corpo estático, tudo bem.
11. Capacidade de tiro: Certo, no vídeo de hoje, vamos falar
sobre como criar uma mecânica de tiro
ou nosso jogador. E se você atirar em um
rejeito para projéteis. Seja como você quiser gerenciar,
isso dependerá de você. Mas eu vou usar, eu acho, dois projéteis ou pelo menos
para pontos de tiro aqui. Então, se você quiser usar um, precisará se inscrever em um. Se você quiser usar vários, verá como podemos
aplicá-los a vários locais. Eu também tenho vários
projéteis aqui. Temos três versões diferentes com e sem
o contorno preto. Depende de você quais versões
você deseja usar para isso. E se você quiser ver como eles ficam com cores diferentes, já que ele não iria para
a guia de visibilidade aqui na
seção de visibilidade no inspetor. Com eles selecionados, podemos acessar modular e podemos
alterar as cores aqui. Portanto, se você tem uma cor
específica em mente, certamente pode
alterá-la para o que quiser usar. E isso deve dar uma ideia de como tudo isso
se parece nos vários tons
diferentes. Então, para mim, acho que
vou seguir em frente e usar, novamente projetar para Alt, então sem o contorno preto. Portanto, essas podem ser minhas fotos
padrão. Então vou em frente e agora que sei qual
deles quero usar, vou em frente e me
livrar de todos esses pontos e podemos
criar nosso projétil, ver alguém criar uma nova cena. Vamos seguir em frente
e criar nosso projétil. E vou definir isso como um corpo cinemático 2D para que possamos ter nossa
física aplicada a ele. Vou adicionar um sprite a ele. Para nossos queridinhos a laser,
nosso projétil. Vou levar o que
eu quero usar para
o slot de textura
aqui na minha tela. Podemos nos livrar desse
pequeno triângulo
adicionando nossa forma de colisão. E no meu caso, já que estou usando este, posso usar uma forma de círculo
e diminuí-la. Agora, se você estiver usando
uma forma diferente, se você estiver usando o
laser boy standard shot, então você pode fazer, você pode usar o retângulo. Claro, se você estiver
usando os outros, você também pode usar uma
esfera ou um retângulo, ou um círculo ou um retângulo, dependendo de qual rota
você deseja seguir, você pode cobrir a coisa toda ou a cobertura é a única extremidade disso. E eu vou em frente e salvarei
isso, esse projétil. Guarde, coloque isso
dentro das minhas cenas. Salve isso. Agora
que temos isso. Para disparar um projétil, vamos precisar de
uma função de disparo. Então, vou ao meu mapa de entrada
e crio uma ação de tiro. E vou definir isso
como grande na minha barra de espaço. Tudo bem, agora precisamos que
nossa saída projetada realmente
se mova, certo? Não é bom se filmarmos
e ele não vai a lugar nenhum, não nos faz nenhum
bem nesse momento. Então, vamos em frente e
podemos adicionar um script. Certifique-se de colocá-lo
no local correto para manter as coisas agradáveis e limpas. Os scripts
projetam o ponto normal GD. E muito parecido com o nosso jogador, e vamos
precisar de uma velocidade. E eu posso começar como
um vetor dois vazio. Também precisaremos
de uma velocidade. E vamos com, vou dizer 100 por enquanto, veremos como isso
muda mais tarde. Não precisaremos
da função pronto. Na verdade, podemos usar
a função pronto. Então isso é um atraso nisso. Mantenha isso aqui e vamos
adicionar o movimento e o slide. Você também pode usar o movimento na aula, mas eu costumo sempre
usar o movimento dentro de mim. Eu nunca
precisei me mudar e Clyde e nessa situação não
vai fazer
nenhuma diferença de qualquer maneira. O colisor desliza é
basicamente o que acontece
quando dois, quando os
dois corpos se encontram. Assim, com os slides em movimento definidos
lá e a função estão prontos, podemos pegar a velocidade e pegar a propriedade
y dela, e queremos que ela suba. Então, vamos
defini-lo para uma velocidade negativa. Agora, se isso funcionar, deve desaparecer
completamente da
nossa tela aqui
quando tentarmos e não o vermos. Então, ele se foi
ou é muito pequeno. De qualquer forma, podemos
dar uma olhada nisso. E você pode ver em nosso depurador que
temos 22 problemas lá. São as mesmas coisas
que tínhamos no nosso player. Agora mesmo em nosso projétil
estão dois comentários de volta. Eu também quero saber se você
quer se livrar deles. Sem aparecer
e você não quiser
usar esses comentários de forma consistente, você pode ignorá-los, o que eu pessoalmente não recomendaria
necessariamente, ou você pode ir até Eu
acredito que está no Rajah. Sim. E só aviso de busca. E sob o script GD, você
encontrará o
argumento não usado aqui. Assim como você deve
encontrar um para o
retorno, o prato de valor de
retorno também está bem aqui. Portanto, você pode simplesmente desligar
os dois se não quiser
colocar esses comentários dessa maneira alternativa. Agora chegamos
ao nosso jogador. E eu vou adicionar
uma posição para d. pouco difícil de ver aqui. Aí está. E você pode definir isso para onde quiser que o
projétil apareça. Então, no meu caso,
eu vou definir o meu Ray,
bem ali. Tudo bem. Claro que sim. Você pode chegar o mais perto
possível. Vou nomear essa posição esquerda
esquerda do projétil. Escreveu isso errado. Lá vamos nós. E eu vou duplicar
isso e adicionar um segundo. No lado direito. Eu vou fazer a posição correta
do projeto Alpha. E aqueles que
serão meus dois pontos que eu vou atirar. Então, agora entrando em nosso jogador, podemos criar uma variável
que tenha nosso tiro normal. Podemos definir isso para uma pré-carga. E isso exigirá um argumento do nosso projétil
visto que criamos. Se dermos uma olhada nas cenas, temos nosso projétil normal. Vá em frente. Você pode copiar o
caminho ou arrastá-lo para dentro. Assim. E o
que isso vai fazer é quando nosso jogador for
trazido para a cena, ele também carregará aquele projétil normal visto
para quando precisarmos dele. Em vez de carregá-lo no
local, já o terá. Tudo bem, então vamos em frente e podemos criar uma
função para fotografar. E o que vamos colocar aqui é
que precisamos
criar uma instância
da nossa cena normal. E então precisamos
colocá-lo no mundo. Então, diremos Criar nova
variável que seja temporária. Foi baleado na instância do tiro de
Stanford. E isso será
igual à nossa variável de
tiro normal que acabamos criar na instância de ponto superior. Agora, tudo o que precisamos fazer
é definir a posição. E então, bem, não
precisamos definir a velocidade. Já dissemos que só
precisamos definir a posição para atirar por conta própria
ou por conta própria. Então, para tornar isso mais fácil,
vamos em frente e criar outra barra pronta na parte superior. Para a nossa esquerda. Vamos chamá-lo de posição do
sapato esquerdo. E criaria um para o
lado direito também. Posição. Aqui vamos nós. Sam viria aqui
e ficávamos chocados. E faça a posição do ponto para acessar a propriedade position dele. E vamos definir isso igual a, vamos dizer nossa posição do
sapato esquerdo. Posição. Agora, queremos que isso só aconteça quando
atirarmos nosso projétil. Então, vou destacar
essas duas linhas e apertar a guia para movê-la. E eu vou me
destacar dentro de uma declaração if dizendo que se a entrada é ação, basta pressionar ou você pode ir com o
recém-liberado, depende de você. Eu vou com apenas
pressionado e estamos fazendo isso. Então, isso acontece
de uma só vez e
não acontece continuamente
enquanto o tivermos desativado. Essa é a diferença entre
apenas travar e ação. Imprensa. Ação pressionada
significa que podemos segurar, manter pressionado o botão enquanto
o botão é pressionado. Isso vai
acontecer de forma consistente. Basta pressionar significa que isso vai
acontecer uma única vez. Quando pressionarmos a chave
para baixo, isso acontecerá uma vez. E então é isso. chamar a filmagem
dentro do nosso processo. E se formos em frente
e executarmos isso agora, devemos ser capazes de
apertar nosso botão de tiro. Oh, meu erro, eu esqueci
uma coisa crucial. Definimos sua posição,
mas
nunca a adicionamos na cena. Então, algo a ser observado aqui é que não
queremos adicioná-lo ao player. Se o adicionarmos ao jogador,
ele se moverá. Quando movemos o
jogador para a esquerda e para a direita. Então nosso
projétil se moverá no ar, que não fará
muito sentido. Como não estamos criando
como um laser para o nosso normal, precisamos adicionar isso quando criança aos pais, então vamos
adicioná-lo ao mundo. Então, em nossas escrituras,
ainda
vamos , que será o mundo. E se você está se perguntando como eu sei que se você
der uma olhada aqui, você vê que temos isso
como uma função de árvore. Temos essa linha saindo do player e depois ela
sobe e a primeira coisa que
atinge seu mundo aqui. Então, isso é pegar os pais. E é a mesma
coisa com
isso, que essas posições aqui são
os pais do nosso jogador. Mas nosso script está sendo
acessado pelo player. Então, vamos expulsar o jogador um, que é o mundo. Nós obtemos o ponto pai, adicionamos filho. E isso vai passar nesse tiro. E agora devemos
ser capazes de ver isso. Tudo bem, então uma pequena mudança sua nota que
em vez de posição, mesmo que diga posicionado
no inspetor aqui, e se passarmos o mouse sobre
ele, ele diz Posição. O que realmente
queremos usar isso, queremos configurá-lo para posição do sapato
esquerdo,
ponto, posição de sublinhado global. E isso, na verdade, você
o coloca onde queremos que ele vá. Então agora, se
entrarmos em nosso mundo e jogarmos isso, você vê,
quando filmamos, ele vai lá e está apenas nos empurrando para trás só
porque é um pouco vago de fazer um
pouco de teste para tentar e descobrir por que
redefinimos a escala para uma em nosso projétil. E voltaremos ao
normal. Então você vai. Então agora temos nosso
projétil funcionando,
obviamente, só temos um e isso
ainda está nos empurrando para trás. Só um pouquinho. Um pouco estranhamente. Então eu vou em frente
e pegar
minhas duas posições e
empurrá-las um pouco para cima. Você poderia dizer a ele para ignorar
completamente o jogador, o que podemos dar uma
olhada em fazer em uma data futura. Mas, por enquanto, vamos
avançar um pouco e
você pode ver que estão filmando. Não está funcionando perfeitamente bem. Então, novamente, para passar por cima disso, passar por cima da nossa função de tiro
ou disparo, verificamos se nossa
ação de disparo é apenas pressionar. Então isso só acontece uma vez quando
você pressiona o botão para baixo. Em seguida, criamos uma nova
variável que
manterá uma instância da nossa cena. O que é uma instância normal de
shot dot? E então definimos a
posição disso. Então, se essa instância, a instância de shot, obtemos a propriedade
position disso. Nós definimos isso igual à
nossa posição de sapato esquerdo, que é uma posição para D que
trouxemos para o nosso jogador. E definimos isso para a posição
esquerda do sapato,
abaixamos a posição global de sublinhado. E então não veremos nada
a menos que
realmente o adicionemos ao nome. E queremos adicioná-lo
ao pai dos nossos jogadores, que é o nosso mundo. Note que eles vão
querer pegar aquele nó, pegar seus pais, e depois adicionar criança e adicionar nossa instância de tiro. Como filho disso. Vamos entrar aqui e já que temos duas posições, vou
criar uma segunda. Então, eu tenho uma chance in-situ. Agora vamos definir o segundo
para a nossa outra posição, que é o nosso tiro certo. E certifique-se de que estamos acessando o
tiro no número dois, isso. E então temos que nos
certificar de que também
adicionamos isso à
nossa cena. Então, vamos levar a paternidade
e a criança. E quando jogamos isso, agora devemos
atirar
nos dois
projéteis ao mesmo tempo. Agora, como você pode ver,
se expandirmos o botão, podemos obter muitas dessas células. Agora, se você
quer que isso seja intencional no seu jogo ou não, depende
totalmente de você. Se você quiser adicionar algum
tipo de resfriamento a isso, pode facilmente adicioná-lo também, apenas verificando se
o jogador pode atirar. E se não, então não
permitimos que eles atirem. Lá vamos nós. Agora temos a incapacidade de
disparar alguns projéteis. E, novamente, você pode fazer com
que seja a cor
que quiser e seu projétil visto apenas alterando a modularidade para
onde quiser. Então, se mudarmos para a tela e entrarmos aqui
e filmarmos livros, temos que entrar
aqui e filmar. Agora temos um projétil verde. Então você pode fazer isso
da cor que quiser. Você pode fazer duas
cores diferentes, se quiser. Isso depende totalmente de
você e do que você quer fazer. Mas é assim que podemos adicionar uma mecânica de tiro ao
nosso pequeno atirador espacial.
12. Criando energia: Tudo bem, Bem-vindo. Neste
vídeo, vamos repassar criação de nossos power-ups e fazer com que eles
apareçam no mundo. E a razão pela qual
vamos enfrentar isso primeiro, antes de
chegarmos ao inimigo, é simplesmente porque os
inimigos
usarão efetivamente o
mesmo sistema que podemos introduzir com power-ups sem confundindo-o com qualquer hérnia de
IA ou comportamento, que a primeira coisa que
precisamos fazer com o poder, claro, é criar nosso poder. Vamos criar uma nova cena. Vamos selecionar Outro
e torná-lo um corpo cinemático. Vou renomeá-lo para o nosso up. Vai precisar de um sprite, claro, porque precisamos
mostrar quais são as imagens. Vamos ter
um reprodutor de animação. O que mais podemos fazer? Podemos configurá-lo para,
vamos precisar de uma área. E essa área terá
sua própria colisão. Agora eu sei que temos esse
triângulo amarelo na inicialização, mas não precisamos nos
preocupar com isso porque não
precisamos disso para ter
uma forma de colisão. O que precisamos é que a área
tenha uma forma de colisão para que
você possa detectar se
nosso jogador entra nela
ou interage com ela. E para a forma de colisão, vou
defini-la como um retângulo. Ok, para o nosso sprite, podemos ir em frente e arrastar
em nossa planilha. Sprites, ligar, trazê-lo
em AUC temos
escudos de saúde, velocidade, animal t. Agora, podemos definir isso,
é claro , oito quadros
e ele está atravessando. Temos seis de largura e quatro verticais. E agora podemos usar
o reprodutor de animação para criar nossos quadros. E se você só quisesse
ter uma dessas cores aparecendo, você certamente não pode. Caso contrário, vamos animá-lo
para que loop entre todas essas cores e soe como um pequeno flash de
arco-íris acontecendo. Depende de você como
você quer fazer isso. Mas isso é tudo o que temos
que fazer nem configurar nosso poder. Vá em frente e salve essa cena. E então, no próximo vídeo, seguiremos em frente e abordaremos a criação das animações. E eu acho que
configuramos nossa configuração de nosso código. Já que a maioria dela
neste momento será apenas a animação.
13. Animação de energia: Tudo bem, vamos em frente e começar a animar nossos power-ups. Vamos em frente e selecionar
o reprodutor de animação. Vou selecionar Novo
na minha animação. Vou selecionar Saúde. E agora,
com 1 segundo de duração, vou definir isso para um loop. Vou definir
meu snap para 0,15. Agora você sempre pode definir
isso para o que quiser. Como o aplicativo VR pergunta se você quer que
as coisas se movam para você. Para mim, vou
usar 0,15 e vou usar
o quadro 0 para o meu primeiro
quadro aqui. Clique em Criar. Vou para a equipe
até 0,15 0s quadro um. Como você vê,
vai avançar, reservei o quadro no snap, bem
como o quadro e
meu número aqui para que
eu possa continuar pressionando as teclas. E agora temos
nossa configuração de saúde. Então, se eu for em frente e jogar isso, teremos essa
saúde com
um pouco de arco-íris no texto. Novamente, se você não quiser isso, basta configurá-lo para ser um quadro para
toda a animação. Mas isso depende de você. Eu pessoalmente gosto do arco-íris, da mudança RGB do arco-íris. Isso acontece. Mas é claro que se você não quer
ou não quer isso, você não precisa ter isso. E vamos seguir em frente e
criar a mesma coisa para nossas outras animações.
Eu vou parar com isso. Entre em animação nova, e temos escudos. É. Está bem? E nosso quadro
começará no seis, volta aqui no 0. Insira essa chave. Devin será nosso 0,15. Garante que esteja em loop. E ele definirá isso
novamente, 67891011. E se jogarmos isso,
teremos nossas animações de escudo. Fantástico. Então, só temos mais
dois para criar aqui. Essa será a nossa velocidade, é 0,15. Faça um loop, volte para
0, cetera, animação. Quadro 12. Suba para 13. Lá vamos nós. Podemos
jogar para revisar. É. Parece ótimo. E o nosso último é
um multi Snap, 0,15. Luke, a animação. Volte para o começo. Começou na animação 18. Exclua o último quadro
bem rápido e reproduza-o. Aqui vamos nós. Temos uma boa
animação com isso. E assim,
temos todas as nossas animações criadas
para nossos power-ups. Agora, é claro, se você adicionar mais a essa planilha de sprite
e criar suas próprias, por todos os meios, mais animações. Use mais, faça mais power-ups. Eu só vou
em frente e salvar isso. E podemos entrar em
nosso roteiro de powerup. Agora, o que
vamos fazer
para que isso funcione
no futuro, é
criar uma nova função chamada criar energia. E isso vai
exigir um argumento. Esse argumento que
vamos chamar de apertado. E podemos pegar
isso como uma corda. Agora, novamente, não temos que colocar essa cadeia de dois pontos aqui. Você poderia apenas ter apertado. No entanto, devemos nos
acostumar com isso, porque em projetos maiores
isso nos dará um ligeiro
aumento no desempenho. Lançando todas as nossas
diferentes variáveis aqui, variáveis,
argumentos, parâmetros. Portanto, é algo que
devemos nos acostumar a fazer. Então, o que vamos fazer aqui na criação de power-ups
é
definir nossa variável de tight. Então, vamos
ter um, nosso tipo. Vamos definir que nosso tipo
é igual a muito apertado. Dessa forma. Esse poder específico
saberá que tipo de poder,
mas é, que será
útil quando adquirirmos
nossos poderes mais tarde e
interagirmos com ele. E a única outra
coisa que vamos fazer é definir nossa animação. Você vai pegar
o reprodutor de animação. Vamos chamar “play on it”. E nós vamos apenas
passar apertados. E isso é tudo o que precisamos fazer
para que as animações funcionem aqui. Então, sempre que passarmos em qualquer que seja o
nosso tipo, é isso
que vai funcionar. Então, por exemplo, apenas para fins de
demonstração aqui, iremos em frente e criaremos energia e chamaremos isso. Vamos passar e dizer saúde. E se testarmos essa cena, podemos ver que ela está animada e é o nosso
poder de saúde lá em cima. E se
mudássemos isso para, digamos, velocidade, tente novamente. Temos nosso
power-up de velocidade lá em cima no canto e isso é animador. Então, tudo está
funcionando conforme o esperado. Quanto à
animação para entrar. No próximo vídeo, iremos
em frente e daremos nosso poder, algum movimento e criaremos um observador para que ele apareça
em nosso mundo aleatoriamente.
14. Poder o Spawner: Neste vídeo,
vamos seguir em frente e criar o movimento do
nosso Poder do Hábito vindo do topo
da tela e vindo
em direção ao jogador. Então, para fazer isso,
precisaremos de algumas das nossas coisas
padrão aqui. O primeiro é a velocidade
adicionada ao nosso power up. Até agora, dois pontos de velocidade
é igual ao vetor dois ponto 0. Também precisaremos
de uma velocidade. Podemos definir isso como,
vou usar
200 para este processo, temos que passar em nosso movimento e deslizar com a velocidade como
nosso primeiro argumento. E para o nosso pronto, podemos dizer velocidade ponto x ponto y porque estamos nos movendo
verticalmente é igual a velocidade. Agora estamos usando um positivo
porque estamos descendo. Se estivermos fazendo negativo,
estaria
subindo , a menos que eu entendesse ao contrário. Veremos em um segundo e
vamos testar nossa cena. E lá vai,
descendo nossa tela. Então eu tenho aqueles na orientação correta. Tudo bem, então agora
temos isso. Vou seguir em frente e
pegar meus dois comentários novamente do meu jogador. E vou passá-los
para meus Power Apps aqui. Evite qualquer confusão. Nós vamos. E agora temos
movimento para aumentar a energia, e temos nosso
poder de animar. Precisamos realmente
gerá-lo no mundo. Então, para isso, vou
criar uma nova cena, selecionar outra para o meu nó. E eu vou
usar o nó básico que você encontrará
no topo. E isso será feito pelo criador. Vou em frente e
renomeá-lo como gerador. Este observador
terá um cronômetro nele. Agora, a quantidade de tempo
que você quer configurá-lo vai depender
totalmente de você. Para esse fim. Vou definir
para três segundos e ativar a
inicialização automática na minha cena. Spider.js PODE adicionar um novo
script, meu gerador. Verifique se ele está
na pasta correta. E agora podemos realmente criar a aplicação
de união de nossos power-ups. Não queremos que os power-ups
apareçam colocados
em todo o mapa, certo? Não queremos colocar manualmente
todos os nossos power-ups. E talvez você vá
4 mil pixels acima da nossa
cena real ou qualquer coisa disso. Queremos realmente
gerá-lo no mundo. Queremos que eles sejam aleatorizados. Portanto, é diferente o que
os poderes obterão todas as vezes. Nunca é a mesma coisa.
Na verdade, é fazer isso. Vamos criar
algumas variáveis. Vamos criar um
que contenha nossa lista de power-ups. Diga lista de power-ups. Isso vai ser um array, um array de string de pool
especificamente, que só vai
manter a saúde. Escudos. Nossa velocidade e multi exatamente os
mesmos nomes e grafias das animações
que usamos anteriormente. Não precisamos nos preocupar com
a função do processo ou com a função pronta. A única função com a qual
precisamos nos preocupar agora é nosso cronômetro. E quando nossa coisa vezes L. Então eu vou
selecionar o cronômetro, a guia nó aqui na parte superior. Clique duas vezes no tempo
limite para garantir que o gerador esteja selecionado e pressione
o botão de conexão. Agora poderíamos ter conectado
isso por meio de código. Isso é verdade, mas também é
a maneira mais simples de fazer isso. Se você é novo em fazer
parte desse código no tempo limite. E a primeira coisa que precisamos
fazer é chamar randomizar. E isso vai
aleatorizar a semente e nos impedir de ter o mesmo resultado
todas as vezes. Porque se não fizermos isso, nossa semente permanecerá a mesma. E, por exemplo,
podemos obter velocidade de escudo,
velocidade escudo de vida
múltipla, velocidade de escudo de saúde múltipla, etc. E isso não é muito aleatório. Também não é muito empolgante. Então, vamos
randomizá-lo toda vez que o cronômetro expirar. E vamos
precisar de uma variável que mantenha nosso poder obsceno. Digamos que r é igual a recarregar. E vamos puxar nosso
poder obsceno para dentro. Agora que temos isso
logo após a randomização, podemos criar uma instância
de potência da barra arsina. É igual à nossa instância up dot. Então, agora que temos uma
instância de nossa cena, podemos
definir a posição de onde
você deseja que ela se estenda. Agora, se cruzarmos o topo, queremos que seja em qualquer lugar
aleatório aqui em cima, aleatório acima. Agora, se dermos uma olhada em nosso
projeto e se você se lembrar, você desce para nossa exibição. Nossa largura é de apenas 224. Então é com isso que
temos que trabalhar. Então, vamos dizer que o sublinhado
x da posição
var é igual a Randy, que é um número inteiro aleatório. E se fizermos um sinal de
porcentagem seguido por um número como sete, isso nos dará um número
aleatório entre 06. Então, se fizermos 224, isso nos dará um
número aleatório entre 0223. Agora, sempre podemos mudar isso. Por exemplo,
algo que poderíamos fazer é fazer entre 0201, mas também podemos adicionar
mais 23. Então, isso agora nos dará
um número entre 23224. E a razão é que
vamos conseguir nosso número. Então, digamos que, por exemplo, obtemos 0, eles são selecionados. Em seguida, vamos
adicionar 23 a isso. Portanto, o menor número
que podemos obter é 23. E o maior
número que podemos obter é, já que 200 está
no topo da nossa lista, é 200 mais 23. Então, no entanto, você quer decidir onde seus spawns
funcionam depende de você. Para a hora atual. Eu só vou
em frente e usar até 24. Agora que temos uma posição, precisamos obter nosso
poder aleatório que é criado. Então, vamos trabalhar
isso da mesma maneira. Vamos dizer que var
hour é igual ao Randy. E vamos
passar outro número usando a porcentagem. Somente. Desta vez, vamos usar o tamanho da nossa lista de Power Apps. Agora, o tamanho que vai
fazer é nos
fornecer um número de quanto
tempo nosso array tem, quantos itens estão aqui. Então 1234, o que significa que vamos obter um
número entre 03, o que funciona para nós porque quando estamos
falando de um índice, temos 0123, certo? Começamos às 0. Portanto, o tamanho nos
dará o número perfeito. E se nós adicionássemos
outras coisas aqui, como, eu não sei, vamos com
explosão, certo? Então. Não precisamos mudar
nosso código de forma alguma. Podemos simplesmente mudar
ou adicionar um novo item à
nossa lista de aplicativos poderosos. Vá para a nossa cena de power-up
e crie uma nova animação, e ficaremos bem. Não precisaremos tocar em
nosso código. Agora que temos a posição
que queremos que ela gere. E o poder ou o poder que queremos que seja
mostrado e exibido no jogo precisaria
realmente definir essas duas coisas e adicioná-las nossa cena para sermos vistos. Então, para fazer isso, podemos acertar nosso poder ou exemplo
de nosso poder aqui. Vamos definir a posição. Queremos a propriedade x disso. Então, queremos definir a exposição
disso para a nossa posição. Sublinhado x, qualquer
que seja esse número aleatório. Agora, se dermos uma olhada em
nosso script de power-up aqui, lembre-se de que
criamos, criamos uma função chamada
create power up e passamos em um tipo. Esse tipo será o
poder que passaremos. Portanto, o tipo de poder
será um desses aqui, que também é o mesmo
nome de nossas animações. Então, também vamos reproduzir uma animação baseada no que quer que passemos. Para que possamos ir ao poder. Em nossa instância aqui, vamos
chamar criar poder. E isso requer um argumento. E esse argumento
será nosso poder. E esses não devem ser
letras minúsculas B maiúscula. Vamos, tudo bem. Então, agora temos nossa
posição sendo definida. Temos o tipo de energia sendo definido e nossa animação
deve ser reproduzida. Tudo o que temos que fazer agora é
adicionar isso à nossa cena. E como nosso gerador
não se move nem nada, nós apenas adicionamos diretamente
ao nosso gerador. Dizemos para adicionar poder infantil. E agora,
se pudéssemos jogar nossa cena de nosso criador aqui e dar uma olhada. Oh, meu erro. É poder creep up,
não creep power. Tudo bem, vamos salvar isso e voltar a testar
a cena novamente. Toda vez
que isso acaba, devemos ver. Tudo bem, uma vez
menor você aqui, eu esqueci como isso nos
dá um número. Ainda temos que
acessar o que é isso. Então temos que entrar em nossa, nossa, nossa lista x. E o índice que vamos
passar como nosso poder. Meu erro aí. Eu estava pulando um pouco
à frente de mim mesmo. Agora, se formos em frente e testá-lo, agora
devemos ver nossos poderes
surgindo em uma animação. São escudos. E esperamos pelo cronômetro
novamente, a velocidade deles. É outra velocidade. E vemos que é
completamente aleatório. Toda vez que temos
três caras seguidas, isso é muita velocidade para o nosso personagem. Há
outro escudo. Velocidade, tem muito, muito no meio lá, há uma velocidade de tiro
múltiplo. Não estamos
atrapalhando muito
a saúde no momento. Há uma nave, mas estamos recebendo
muitos escudos, o que poderia ser bom. Tem um sueco. Essa é outra velocidade
que estamos falando muito. Podemos ter uma saúde aqui, encerrando? O
que ganhamos com um x? Temos um multi. Tudo bem, então aparentemente não
teremos nenhuma saúde
aqui para nossos power-ups, o que é lamentável,
mas é aleatório. Vai parecer, confie em mim, tudo depende de
laranja nesse momento. Agora tudo o que temos que fazer é entrar em nosso mundo e nosso pequeno ícone de
corrente aqui em cima e apenas adicionar nosso gerador
à cena. E lá vamos nós. Agora temos power-ups
surgindo em nosso jogo. Eles não fazem
nada agora, mas aparecem. E sempre podemos ajustar nosso cronômetro para saber como queremos que
isso aconteça no futuro. Há uma saúde que
temos para nós mesmos. Agora, um problema que
vamos ter aqui. Um problema aqui é o nosso aumento de energia. Às vezes, não queremos que ele
sempre surja, aumente a energia. Não queremos que seja ligado a cada 20 segundos, por exemplo, ou a
cada dois segundos. Queria, às vezes, não
conseguimos um power up e
às vezes conseguimos. Então, para algo assim, se você quiser ter essa chance
aleatória lá, basta adicionar um pouco mais de
aleatoriedade ao seu jogo. Então, podemos criar
outra variável aqui chamada let's go. Vamos
chamar isso de chance. E vamos defini-lo como igual a
um inteiro aleatório novamente. E podemos passar em um número
uma porcentagem de dois. E agora isso vai
dizer 0 ou um. Então, podemos dizer 0, não
gasta nada e gasta. Então, para isso, podemos igualar o acaso. Eu direi 0. Isso vai passar e
em um deles realmente
gerará o poder do que precisamos para aproveitar isso em mais
um. Aqui vamos nós. Lá vamos nós. Então, agora
nem sempre temos um power-up chegando. Então, para mostrar esse
aluguel Wassup abaixo do 0, direi que não há energia. Vamos em frente e correr para o nosso mundo e podemos
dar uma olhada nisso. Você vê que temos
que ligar dessa vez e se assistirmos nossa saída mais cedo ou
mais tarde, devemos atingir um 0. Lá vamos nós. Sem energia. Sem energia de novo. Três casos sem poderes seguidos. Então você já pode ver,
embora tenhamos um cronômetro curto, já que é uma chance de 5050 aqui, estamos realmente reduzindo
o potencial. Mas, ao mesmo tempo, você pode ver que também estamos
recebendo muitos poderes. Então, se você
quiser mudar isso para, eu digo uma chance de 10%, então podemos vir aqui
e podemos dizer dez, certo? Podemos definir isso para dez números, 0 a nove. E tudo o que temos que fazer
é que possamos vir até aqui. Você pode definir isso
para o número que quisermos. Isso não importa. Então, definimos como 0. Por exemplo. Poderíamos simplesmente passar
os outros como sendo um curinga e dizer, sem poder. Então, agora, por mais
longo que seja o nosso cronômetro, acho que é 1 segundo. Eu não
acho que isso mudaria isso. Temos apenas 10% de chance
de gerar um power up. Então, como você quiser fazer isso, o que você quer fazer
com a rota 5050? Ou se você quiser ter uma chance
percentual como essa. Então, isso é 10%. Se mudarmos para
um cinco e executá-lo, agora
temos uma
chance em cinco. Então, um em cada cinco teria 20% de chance de nossa geração de
energia. O que é bastante decente, você sempre pode modificar
isso conforme seus níveis vão. Se você tem níveis ou pode
simplesmente fazer um
scroller infinito e talvez
ajustar o número. Então você pode alterar os cinco lá para talvez aumentar as horas extras. Mas de qualquer forma, tenho
certeza que este vídeo está ficando bastante longo neste
momento, mas é assim que
criamos power-ups. É assim que podemos
fazer a chance
de 5050 de gerar ou não. É assim que podemos fazer
uma porcentagem
de chance de uma geração de power-up. E lembre-se, você pode
entrar e mudar o cronômetro do nosso gerador. Aqui. Você pode selecionar o cronômetro e não temos
três segundos. Você pode ajustar isso para, no
entanto, por quanto tempo você quiser que o seu fique entre
potenciais power-ups. Então, com isso, espero que você
tenha uma boa ideia. Como você cria um power-up? Como identificá-los no mundo? Eu vou em frente
e salvar isso de novo. Agora você sabe como
criar power-ups, adicioná-los à sua lista, criar animações para ele e gerá-los em seu
mundo para usarmos. auditorias deixadas para os
Power Apps agora são realmente
capazes de interagir com eles e fazê-los agir de acordo com
base no que são.
15. Ativação de energia: Tudo bem, vamos em frente
e criar nossos power-ups e torná-los funcionais. fato de eles poderem realmente fazer coisas e interagir com o
jogador não entenderia. Tudo bem, então vamos
entrar em nossa cena de power-up. E podemos selecionar nossa área 2D. E, na verdade,
vamos passar um sinal do corpo inserido. Poderia passar isso direto para o nosso poder aqui em cima. E agora a primeira coisa
que queremos fazer é
ter certeza de que esse é o jogador. Então, vou verificar
se o nome do jogador e do corpo
e do corpo. E eu posso verificar novamente. Sim, eu tenho meu corpo cinemático aqui chamado
jogador com um P maiúsculo Então isso deve funcionar. Desculpe,
se o jogador entrar e o nome do ponto do corpo quando vierem aqui e podemos ter o que
aconteceu de acordo. Agora, é claro, queremos que isso dependa do tipo de energia. Mas, por enquanto, podemos
ir em frente e imprimir. E podemos dizer que a energia foi obtida. E se jogássemos isso agora, quando tivermos nosso poder, quando um deles aparecer, deveríamos ver
isso impresso no console. Boom, lá vamos nós. Potência obtida. Então, a verdadeira questão o que queremos que eles
façam com cada poder? Bem, podemos usar a velocidade
como exemplo aqui. Mas o que eu quero que você faça é que você tente
descobrir como podemos a velocidade para aumentar
a velocidade do nosso jogador. Tudo bem, então vá em frente, pause o vídeo e
reserve um momento para fazer isso. Tudo bem, bem-vindo de volta. Eu vou, eu vou passar, e o que eu vou fazer
é usar uma declaração de matemática e eu vou
igualar minhas tomadas de poder. Então, potência máxima apertada. E eu vou dizer, se
o tipo for igual à velocidade, o que eu vou fazer é
acessar o corpo, que é o nosso jogador. Lembre-se, eu vou, eu
vou pegar o valor da velocidade, a velocidade do ponto do corpo, e eu vou
definir isso para 200. Então, seja qual for a nossa velocidade,
vamos multiplicá-la. E para evitar erros por enquanto, vamos chamá-lo
de curinga e passar. Então, vamos ver como
isso acontece agora. Claro, temos que esperar
até que apareça
um power-up de velocidade. Se tivermos sorte,
conseguiremos um imediatamente. Você pode ver o quão lento
estamos nos movendo por aqui. E isso deve
dobrar assim obtivermos um aumento de velocidade, ou seja, Saúde, nada acontece. Tudo bem. mesmo acontece com o escudo, porque isso
cai sob nosso curinga, que no momento
não está fazendo nada. Isso é mais saúde. A velocidade deles. Nós acertamos e você pode ver
que estamos indo muito mais rápido. Pronto? Agora, claro, escudo,
vamos perder isso. Se conseguirmos outra velocidade,
isso deve se multiplicar. Então eu entendo, isso nem
vai nos multiplicar porque estávamos definindo
difícil para 100. Não estamos multiplicando
o doce. Então, tudo isso é bom e elegante, mas também precisamos dar uma
olhada em reduzir nossa velocidade de volta
ao normal em algum momento. Então, o que vamos
fazer é,
primeiro criar
uma nova variável chamada multiplicador de velocidade. E vamos
definir isso para dois. Dessa forma, podemos multiplicar isso
com facilidade no futuro. Então vamos definir
isso duas vezes igual, que significa que vamos
definir velocidade igual a
velocidade vezes o que colocarmos
no lado direito aqui, que neste caso
será nosso multiplicador de velocidade. Então, estamos dizendo que a velocidade é igual
ao multiplicador de velocidade vezes, então fale Tom Steel. E isso nos dará
o mesmo resultado é apenas um pouco mais
modular, porque isso
surgiria aqui e
podemos ajustar isso para o que quisermos que seja. No momento. Eu só vou
deixar em duas vezes. Tudo bem? Então, agora precisamos de uma maneira de diminuir
a velocidade. Então, para o meu jogador, o que eu quero é que eu quero minha velocidade. Quero que todos os meus power-ups durem. Eu diria dez segundos. Então, vou
criar um cronômetro no meu player e
chamá-lo de nosso cronômetro de aplicativo. Vou definir o tempo de
espera para dez segundos, porque é quanto tempo eu quero minha barra de
power-up. Vou conectar o sinal de
tempo limite ao meu aparelho. E agora, quando o
tempo limite acontecer, vamos fazer
dependendo da energia que está ativa. Então, vamos
criar uma nova variável chamada potência ativa. E isso será apenas uma corda. E vamos dizer
igualar o poder ativo. Então, quando nosso cronômetro cronometrar l. Então, no final de
nossos dez segundos, seremos o
nosso poder ativo. Nesse caso, estamos trabalhando
com a velocidade como exemplo. Então, vamos dizer que
quando nosso cronômetro acabar, vamos ajustar nossa
velocidade de volta ao normal. Então, vamos pegar nossa
variável de velocidade e defini-la de volta para 100. E por enquanto, se tivermos
mais alguma coisa, vamos simplesmente passar. Tudo bem, então se fôssemos
executar isso, agora, você notará que há um problema aqui. Agora, se formos em frente
e esperarmos por esse escudo e você sabe o quê? Eu vou em frente e
imprimirei aqui só para ter certeza de que
não estamos contando errado. Velocidade normal. Vamos tentar isso de
novo. Nepalês. OK. Venha aqui com a
velocidade de aparecer a qualquer momento. Aparentemente, está ficando
muito azarado e não recebendo nenhum power-ups enquanto estamos
tentando testá-los aqui. Como um super infeliz. Mas isso pode acontecer, claro, porque
é tudo aleatório. Parece que
estamos conseguindo uma estação
seca em nossos power-ups. velocidade deles, nós conseguimos. OK. Você pode ver que estamos
acelerando. Se olharmos para a saída, podemos ver que qualquer velocidade
de
segunda hora voltou ao normal. Mas isso não acontece. E
por que isso não acontece? Porque nunca
iniciamos o cronômetro. E isso, claro,
vai ser um problema. Não podemos retornar nossa fala ao
normal no final do tempo se nunca iniciarmos o cronômetro. Então, o que precisamos fazer de volta em nossa energia é quando é velocidade. Não só temos que mudar
o multiplicador ou desculpe, perseguir o valor doce. Mas também precisamos
fazer body dot get node. Vamos dar uma olhada.
Do que chamamos isso? Chamamos isso de temporizador de inicialização. Então, vamos
ter uma corda aqui chamada power Tyrone. Verifique se está escrito exatamente da mesma forma ou você
terá um erro. Então, ative o temporizador e
diremos ponto start. Então, vamos
iniciar o cronômetro. E agora, se jogarmos, não apenas a velocidade do obturador aumentará, mas o cronômetro será iniciado. E assim, quando o cronômetro termina ou a velocidade deve
voltar ao normal. Mas se você pensar sobre
isso, ainda estamos perdendo uma coisa crucial sobre por que nosso cronômetro não vai realmente
voltar ao normal. Você pode pensar sobre
o que é isso? Isso está bem dentro
do nosso player. Estamos baseando
isso no poder ativo, mas nunca definimos o
que é esse poder ativo. Então, dentro do nosso script de
power-up, também
precisamos
definir isso também. Então, o poder ativo do ponto do corpo. Claro, eu escrevi isso certo. Poder de sublinhado ativo. Podemos definir isso igual à velocidade. Ou se não quisermos
configurá-lo lá. Também podemos configurá-lo aqui quando sabemos que não queremos configurá-lo. Quando criamos o Power App,
só queremos fazer isso,
não o pegamos. Então temos que fazer isso
aqui dentro da nossa partida. Tudo bem? Então, se tentarmos agora, ou a velocidade deve aumentar. Como fizemos antes, o ato
de poder deve ser definido. Então, sabemos o que fazer
quando o tempo acabar. E devemos começar
no cronômetro para que
ele acabe. Nada acontece. E nós apenas esperamos
pela velocidade. Eu tive um erro de digitação em meu nome. Aqui está o problema. Eu tenho um I maiúsculo e meu cronômetro. Eu preciso consertar isso. Lá vamos nós. Eu estou
fora devido a um erro de digitação. É por isso que é importante
ter certeza de que você soletra as coisas exatamente da maneira
que você tinha antes. Porque quando estamos
comparando strings, maiúsculas
e minúsculas são dois caracteres muito
diferentes. Então, vamos em frente
e esperar novamente que outro
power up de velocidade apareça. É por isso que sempre
testamos o código à medida que avançamos. Nós não queremos. Um monte de coisas e
depois testá-lo e ter 30 erros diferentes de todos esses
locais diferentes aparecendo. Queremos ter certeza de que
detectamos o erro quando ele acontecer, para que possamos
corrigi-lo imediatamente. Então, apenas esperamos que a ativação da
velocidade apareça. É outra saúde.
Boom, boom, boom, boom. Tiro. Isso ainda funciona. Recebemos uma tela que é escudo. Há uma velocidade. Lá vamos nós. Você
pode ver onde é muito mais rápido e presume que
o tempo se esgota. Vamos ver se
a impressão volta ao normal. E estamos mais lentos novamente. Portanto, agora temos um aumento de
velocidade que funciona da maneira pretendida, além de
nos reverter de volta ao normal. Então, a última coisa
que precisamos fazer é ajustar
as coisas para a memória, porque no momento temos um vazamento de memória em nosso jogo. E isso ocorre porque
nossos Power Apps nunca desapareceram, embora
estejam fora da tela. Ainda existe
em nosso mundo. Então, o que queremos fazer é nos livrar da nossa declaração
impressa lá. E com nosso poder quando
interagimos com o jogador, queremos nos libertar. Agora lembre-se, self é opcional, então você pode
digitar q para cada um, assim como fazemos com aquela criança. Pessoalmente, eu prefiro
digitar sozinho, mas você não precisa ficar na fila livre quando o jogador
toca o power up. Mas também queremos dar
uma olhada no processo se nossa posição desaparecer. Então, queremos dizer se
isso é tudo capital. Então, dizemos que se a sessão de
pontos y for maior que, e se nos lembrarmos de 400 longos. Então, digamos que seja
maior que 400, mas temos que levar
em consideração o tempo extra porque o ponto
estará no meio
do verso, certo? Então, estamos dizendo para 20. Então, se nossa posição
for maior que 420,
então, novamente, vamos apenas
dizer ao nosso power up
para se excluir. E se não tivéssemos isso, você poderia vê-lo
na guia remota, que mostrarei
aqui em um segundo. Vamos em frente e
jogar, e você verá controle remoto no
lado esquerdo aqui, acordo com o hit que este
é o nosso jogo enquanto está rodando. Então, se abrirmos nosso gerador, você verá os Power Apps entrarem. E você verá que, assim
que eles saírem da tela, eles se excluirão. Agora, anteriormente, eles não
estavam fazendo isso. Se você quiser, você pode ir e
comentar sobre isso. E lá vai você. Você viu aquele power-up desaparecer. E se você quiser,
você pode voltar, comentar isso e
você pode dar uma
olhada no que desapareceu. Quando eu falo aparece. Deveríamos nos deparar com
isso e ver como essa troca desaparece. E poderíamos realmente otimizar um pouco
esse código R. Mas vamos
ter certeza de que isso funciona. Tudo bem, então aí está a
nossa velocidade. Temos aumento de velocidade. Um power-up desapareceu. temporizador deve estar esgotando qualquer retorno
secundário ao normal. Então, tudo ainda
parece estar funcionando
perfeitamente bem. Então, o que eu estava falando
e poderíamos nos referir ou colocar nosso código de volta
ao normal também, ou melhor, otimizar um pouco mais pois não queremos
escrever self dot Q a cada, para cada power,
porque nós Quero fazer isso todas as vezes, independentemente. Então, o que vamos fazer é realmente descer
e sair da nossa declaração de
partida, contanto que a interação
do jogador, então ainda estamos dentro
da declaração if. Vamos libertá-la. Então, o que você pode
fazer
agora é entrar aqui e
criar mais energia para poder
substituir nosso curinga lá. Então, podemos dizer
saúde, por exemplo. E agora você vem
aqui e cria uma variável de saúde no seu
jogador, se quiser, se quiser pular
em frente e fazer isso agora. E você pode adicionar um
à saúde do seu jogador. Podemos dar uma olhada no multi e você pode ativá-lo e tê-lo para que, se você estiver em
um tiroteio, agora possa atirar em dois, por exemplo. Ou talvez você mude o
projétil completamente. Quando você conseguiu o multi, quer
que você queira fazer isso depende
completamente de você, mas agora você pode criar efeitos diferentes para cada poder que captar. E vejo vocês
no próximo.
16. Proteção: Tudo bem, então
vamos em frente e adicionar o poder do escudo aos
nossos jogadores para que
possamos evitar ser atingidos. Então, vamos ter uma representação
visual disso. Eu vou lidar com isso, desaparecer assim que chegarmos
à parte danificada
deste curso. Então eu vou em frente e impedir que a pré-visualização
ou teste vá. E você deve ver dentro
de seus sprites que
temos outra planilha
aqui para nossos escudos, e sabemos como isso funciona. Agora podemos ir em frente
e criar um sprite em um reprodutor de animação para
ele. Nós podemos ir em frente. Td viu, tudo o que
precisamos é de um sprites. Não precisamos de nenhuma
animação para isso. Então, podemos ir direto para um
sprite para nossa raiz aqui. Chame isso de escudos. Vamos precisar de
um reprodutor de animação. Porque é claro que precisamos que
nossas sombras sejam animadas. Você pode deixá-los
diádicos se quiser, mas eu não sou ruim. O que precisamos? Precisamos de escudos,
aí está a nossa textura. Traga isso na animação. Temos quadros horizontais, três verticais. E
aí está nosso escudo. Podemos ir em frente e definir alguma
animação para essa cena. Podemos criar nossa animação. animação sabia. Isso termina nisso.
Qual é o 0,75 dele? Então, 0.9, eu posso deixar isso nos
diria para fazer um loop e
veremos como isso parece. Ok, então isso está
parecendo um pouco. Parece bom.
Pode ser um pouco lento ou rápido para algumas pessoas,
depende totalmente de você. A primeira coisa que
notei é que o meu está embaçado de ir em frente e
reimportar isso bem rápido. E desligue meu filtro. Muito importante, lá vamos nós. E toque isso. Agora vamos lá. Vamos ver. Não
quero acelerar isso. O que acontece
se acelerarmos isso? Só vou embora. Agora, vamos
mudar isso para 0,1 em vez disso. E tudo está se movendo
para liderar ou funcionalmente. Encaixe lá embaixo. Três, eles veem como isso parece. Acho que está parecendo melhor. Vou ajustar meu
comprimento aqui para 0,6. Tudo bem, então eu acho que esses são os números que eu
quero acompanhar. Eu vou com
0,05 no meu snap. Seu comprimento total de 0,3. Acho que estou feliz com
essa velocidade pelo meu escudo. Você pode querer que seja mais lento
para meus observadores mais rápido. Mas acho que é isso que
eu quero salvar isso. E agora que
temos essa cratera, vou em frente e
parar a animação. E a animação aqui. Se definirmos nossa animação
atual como escudos ativos, isso deve ser
reproduzido automaticamente sempre
que estiver na cena. E vamos
precisar de uma área de detecção ou quando nossos
escudos forem atingidos mais tarde. Então, vou
criar uma área para D. E isso precisa de uma forma de
colisão. Para a forma,
vou dar a ela um círculo, algo assim. E podemos dar uma olhada
nisso com nosso jogador para
ter certeza de que isso irá impedir que nosso jogador e
jogador bloqueador seja atingido. Vamos ver, vamos, vamos
abrir nosso player. E, por enquanto, vamos em frente
e adicionar nosso escudo. Dê uma olhada nele para que possamos ver nosso jogador
finalizado um pouco. Então, o que vou fazer é
aumentar o tamanho
dos meus escudos aqui. Eu vou descer
aqui para me transformar e vou
aumentar minha escala. Isso pode ser um pouco
demais, talvez 1,25. Deixe-me dar uma olhada nisso
definitivamente está bloqueando tudo, todos os nossos outros sucessos aqui. Salve isso e dê uma
olhada nisso no jogo agora. O que temos agora, não animando como eu esperava
que funcionasse, então tudo bem. Podemos simplesmente configurá-lo
para
animar automaticamente dentro do próprio script de
escudo. Vamos para o nosso campo. É o script no local
correto. Escudo de scripts. Ótimo. Estou pronto. O reprodutor de animação
reproduziu escudos ativos. E é isso aí. Aqui vamos nós. Agora
sabemos o que é, como seria ter
escudos ao redor do nosso jogador. Agora, é claro, não
queremos isso o tempo todo. Queremos tudo isso
em B quando
pegamos nosso escudo, estamos lá em cima. Então, podemos ir agora para
o nosso player. Podemos carregar nossos
escudos, digamos var,
escudo, cena é igual a recarregar, e traremos nosso escudo visto no ar que está. Vamos
trazer isso para dentro. E para detectar isso, podemos definir escudos
para serem verdadeiros. Barra blindada, verdade. E também, é claro,
queremos lançar isso também,
que você quer que separemos . Isso será um booleano. Então agora podemos
descer aqui e criar um escudo de função, ativar. E vamos precisar de
um campo de instância n igual a uma instância vista de escudo. E agora só precisamos adicionar isso aos nossos jogadores. Dúvida própria. E o protetor infantil deve ser tudo o que precisamos fazer aqui. Então, vamos ao
nosso Script do Power Apps. E quando atingirmos escudos,
quando isso for captado, vamos chamá-lo de
body shield activate. Vamos checar
sua ortografia nessa camada. E só por segurança,
vou copiar
a função e
colá-la lá. Está bem? Está correto. E podemos
excluí-lo da nossa camada. Agora eu posso ir em frente
e testar e quando pegarmos um show power up, o escudo deve aparecer em nós. E isso vai
ser, claro, RNG para
quando isso
realmente aparecer. Tudo bem, então nós temos
um escudo e lá vamos nós. Dois assentos ativando
tudo muito bem. Agora tudo o que precisamos fazer é configurar
o escudo para desaparecer. Novamente, podemos resolver
isso quando entramos na parte danificada
ou no jogador que está sofrendo dano no campo. Tudo bem, então se você tem
acompanhado até agora, você não se
afastou por conta própria. Agora você deve ter um
escudo ligado funcionando. E parecemos
ter um bug lá porque pegamos um segundo escudo e
agora temos três. Então, podemos encaixar nossos dois,
mas podemos consertar isso. Podemos verificar se o
corpo está blindado. Certifique-se de que eu entendi direito. Sim, blindado. definir como false por
padrão not true. Digamos se o corpo está protegido. Então, vamos dizer
se blindado é verdadeiro, então se nosso jogador estiver protegido, não
faremos nada. Então, queremos o oposto disso. Então, poderíamos fazer um ponto de exclamação aqui no início e dizer, se não o corpo protegido por pontos, o que nos daria uma falsa. Ou podemos digitar a
palavra se não estiver encorpado, não protegido, da maneira que
for mais confortável para você. Vou digitar a palavra, não apenas para torná-la
mais clara à primeira vista. Se não, corpo não blindado. Então, se nossa
variável blindada aqui for falsa, então faremos isso. Caso contrário, não
faremos nada disso. Então, agora, se fôssemos executá-lo e esbarrar em vários escudos, só deveria funcionar para o escudo
dela que obtivermos. Precisamos entrar em mais
uma coisa. Precisamos entrar em
nossos escudos aqui. Precisamos lembrar de
definir o corpo protegido como verdadeiro. Tudo bem. Agora, para o nosso teste, você pode ver que nossos escudos
não vão
empilhar um escudo e
esses são empilhar um escudo e todos os shows
que devemos fazer. E lá vamos nós. Então, temos
nossos escudos funcionando e corrigimos um pequeno bug que
surgiu. Tudo bem. Então, vou
voltar ao meu observador e remover isso, já não
precisamos mais testar isso e apenas voltar
a dizer sem energia. Então, com isso, agora temos um escudo ligado,
totalmente funcional. Bem, no que diz respeito
a entrar no jogo e ser usado.
17. Multi tiro: Tudo bem, neste vídeo,
vamos dar uma olhada na adição de uma tomada múltipla. Então, em vez de atirar em
um de cada lado, vamos atirar para
proteger Alice de cada lado. E eles vão
sair em um pequeno ângulo. Tudo bem? Então, a primeira coisa que precisamos
fazer é entrar no nosso script de camadas. E vamos
criar uma variável aqui. Para o tiro múltiplo. Para falso por padrão. Podemos entrar em um local de luta ou
tiro aqui. Isso em, e
vamos dizer se
multi-shot ou dizer se não multi-shot. E faça isso. E então podemos
basicamente fazer uma cópia disso. E chegando lá embaixo, mas depois estarei repetindo o código. Mas precisamos de nós extras de qualquer maneira. Então meio que ouvir alguém dizer se quer dizer else-if,
else-if multi shot. E vamos
precisar de quatro desses, no nosso caso, três ou mais
agora temos quatro desovando, mas eles vão se
sobrepor neste momento. Vamos passar para,
vamos ver, adicionar essas crianças. Aqui estão cenas de
três e silvicultura. Ela principalmente, a maior parte do
que fizemos foi
apenas uma cópia e colagem do
que tínhamos no topo. Mas o que também
precisamos mudar aqui é a propriedade da velocidade. Então, precisamos mudar
o x disso. Então, vamos mudar a velocidade do ponto de
disparo ponto x. Podemos definir isso para, vamos ver. O primeiro queria ir
para a esquerda
e 34 para a direita. Então o que queríamos fazer
era dizer menos 50. E podemos copiar isso para crimes em torno
dele mais três vezes. 34. Então 34 serão
positivos, 512 serão menos 50. E vamos em frente e executamos isso. Na verdade, isso nunca
vai mudar e temos que ir para um poder. Quando o multi conseguir, ele
fará seu corpo. Multi-shot, certo? Copie essa foto múltipla, é verdade. Tudo bem, então agora você pode
ver com nosso tiro múltiplo, temos essa
ação cruzada acontecendo. Agora, é claro, você pode
ajustar seus números aqui para o que achar melhor. E só temos que
decidir quando desligar esse tiro múltiplo. Você vê que não estamos
mais filmando também. Estamos atirando projéteis. E se eu reiniciar
tão rápido, você verá que voltarei
a filmar dois. Por enquanto, tudo o que você precisa fazer é decidir como ou quando
isso desliga. E então venha
aqui para o nosso jogador e velocidade de potência ativa. Então eu acho que vou
refazer esta seção também, ou desabilitar nossos poderes. Mas podemos guardar isso
para outra hora. Mas, por enquanto, podemos ver que
isso liga, funciona. E vamos ver como
podemos ativar o multi-shot, quem era a função não
vem aqui para realmente ativar o multi-shot. Isso tornará o multi-shot verdadeiro. Então, o que podemos fazer
a partir daqui é
que podemos fazer, podemos usar um rendimento. Agora isso vai funcionar
de forma diferente em 4, um pouco diferente. Você não precisa
desses parênteses. Então você pode ter dar uma olhada e ver qual é
a diferença para o x. Não
tenho 100% de certeza disso. Mas temos rendimento
e, em seguida, queremos obter o temporizador de criação de pontos de árvore. Dentro daqui está quanto
tempo queremos que dure. Vamos dizer cinco segundos, obter os tempos limite e, em seguida,
definiremos o multi-shot como false. Agora isso pode estar usando, esse método pode ser a maneira como eu refaço nossos Power
Apps aqui, certo? Que a velocidade, assim
como avançamos. Então, vamos
entrar e, em vez de ativar o multi-shot, vamos dizer que o
ponto do corpo habilita o multi-shot. E vamos dar uma olhada,
ver como isso funciona, ter
certeza de que isso funciona. Então, estamos atirando em dois fora
do portão, o que é ótimo. Temos um tiro múltiplo, estava filmando quatro deles. No final do nosso cronômetro. Voltamos para você
com dois. Então lá vamos nós. Temos uma tomada múltipla
que funciona perfeitamente. Tudo bem, então temos um escudo que ativa
e habilita para nós, e temos um tiro múltiplo
que liga e nos
dá nosso poder e habilidade. Novamente, você pode simplesmente
alterar esse número para o que quiser, pelo
tempo que quiser. E se você tiver diferentes Power Apps de filmagem que você habilitará no futuro, isso é tudo que você precisa fazer. Mude qualquer que seja a sua habilidade, e mude o que quer que
você atire ou como, no
entanto, seja como for que você faça isso. Então, se você tem um laser, você vai trazê-lo para dentro. Você
terá uma instância de uma cena completamente diferente. Por exemplo, no
caso de um laser, você simplesmente adicionaria ao
player porque queremos que o laser fique
com o jogador. Normalmente, se você
vai ter um feixe de laser
tradicional, em vez de disparar
lasers como um blaster. Mas lá vai você. Veja como funciona o multi-shot. E como eu disse,
provavelmente vou mudar o código
aqui para a velocidade. E em vez de usar
um temporizador de inicialização, basta usar uma pequena função como esse ativador,
agridoce.
18. Pequenas mudanças: Tudo bem, esta é a
estadia dela. Um pequeno vídeo. Só quero mostrar
que eu refiz a velocidade que acabamos de criar
no mesmo formato que fizemos
para o nosso multi-shot aqui. Portanto, temos uma função
chamada enable speed. Ele adicionou um parâmetro lá que podemos
passar em um multiplicador. Eu disse que minha
velocidade era apenas multiplicadora. Esperamos nossos cinco segundos. Depois disso, diminuímos nossa velocidade novamente pelo
nosso multiplicador. E no acréscimo de energia ou
apenas chamando a velocidade de ativação. E passamos esse
multiplicador que estávamos usando de antemão. Então essa é a única coisa que mudou lá para a velocidade, escudos no tiro
múltiplo permaneceram os mesmos. Mas o que podemos fazer
é que também podemos fazer. Se abrirmos nossa cena de
projétil, podemos nos livrar de
nossa forma de colisão. Ele vai aparecer,
teremos um triângulo amarelo se você excluir a forma de
colisão aqui. Mas se o removermos,
tudo bem. E se fôssemos fazer isso, você verá aqui e o tiro
múltiplo que os dois no meio que estão
bem um contra o outro, eles agora vão
atirar um no outro em vez de colidir com
um ao outro e indo direto. Agora, esses são dois resultados completamente
diferentes, são dois resultados diferentes. Portanto, cabe a você decidir se deseja
ou não ter sua forma de colisão
em seu projétil aqui, ativada ou desativada. E como você pode ver,
a velocidade é ativada 54321 e estamos de volta ao normal. Há um tiro múltiplo.
Então agora você pode ver nossas peças do meio
se cruzando eventualmente. Então, se você não
quiser que eles batam um
contra o outro e
estejam perfeitamente em linha reta. Isso é tudo que você precisa para desligar essa forma de colisão. E podemos simplesmente
desativá-lo completamente porque não
precisamos vê-lo. Lá vai você. Você pode ver
que eles estão se cruzando e estamos quase
como uma sessão de fotos do ToString agora. Mas lá vamos nós. Depende de
você se quiser que
sua colisão no seu
projeto seja desativada. Ou se você quiser
deixar isso habilitado
para a aparência da tela,
ou se você quiser que eles se
cruzem com você completamente desenvolvedor
e escolha de design. Mas eu pensei
em jogar isso só para que você soubesse também.
19. Configuração de inimigos: Tudo bem, no vídeo de hoje, vamos seguir em
frente e dar uma
olhada na criação de nosso inimigo. Vamos
criar nosso inimigo de vez em quando, em
seguida , passaremos
para fazer nosso inimigo atirar e obter nossa rolagem
vertical básica com nosso inimigo, os movimentos. Tudo bem, então primeiro
, vamos
ter que
creditar uma nova cena. Isso, assim como nosso jogador, será um corpo cinemático, é
claro que será um TD. Vamos precisar de um
direito para o nosso inimigo. Ross, vou precisar de muitas coisas que
temos sobre o nosso jogador aqui. Assim, poderíamos adicionar uma forma de
colisão, é por isso que temos
nosso triângulo aqui. Então, conseguimos nosso corpo cinemático
em um polígono de colisão. Quer que a forma saia. E se dermos uma
olhada no nosso jogador, do
que mais precisamos? Poderíamos usar um
reprodutor de animação mais tarde se você quiser criar
animações dessa forma, especificamente para seus inimigos. Mas para essa
configuração específica de nosso inimigo,
não precisaremos disso, mas não usaremos uma posição
aqui
para que tenhamos
um local de onde nosso inimigo está atirando de
uma posição para D. , então, começando do topo, podemos renomear isso como inimigo. Vou chamá-lo de navio inimigo. Não ligaria. Você pode chamá-lo de qualquer
tipo de entidade que você queira que
esta
seja especificamente. Vá para o nosso sprite. Podemos trazer nosso
inimigo e notamos que é apenas um sprite normal aqui. Não é uma folha de sprite, então não precisamos nos preocupar em
pintar a animação ou qualquer coisa, porque esse spray vai se
mover e disparar. Não temos todas essas animações
diferentes nele. Você pode, é claro, usar a
planilha se quiser. É aqui que posso apresentar a você a maneira alternativa que
mencionei anteriormente. E é isso que a animação, sinto muito, não o reprodutor de
animação, a animação
animada, o sprite animado. Então, digamos que você queira fazer uma animação usando
o sprite animado. Entrávamos,
fazíamos quadros. Poderia dizer que se você não tem nenhum, você não está usando uma planilha de sprite. Você acabou de ter PNGs individuais. Você vem aqui e faz
um novo sprite frames. Você clica nele novamente. E agora temos nossas
animações aqui, certo? E não
entrava aqui e ficava ocioso. Direita, esquerda, direita.
E você entendeu, podemos fazer dessa maneira. E em vez de mexer com uma linha do tempo e posicionar
seus quadros-chave, você tem uma velocidade aqui que determina o quão perto cada uma
dessas teclas estaria, então tudo o que você faria é apenas trazer cada
enquadre aqui um por um assim. E enquanto tocava, ele passava por ele. E para dar uma olhada nisso,
vamos voltar ao nosso sprite animado novamente
e vamos jogar. Poderíamos
dar uma olhada nisso, o
que, claro, neste
caso, as coisas lá dentro. Então, se formos ociosos,
quando você vê que há nossa nave e ela está
tocando em nosso quadro
CC o espectro. Então essa é a alternativa. Se você tem apenas PNGs
e não tem uma planilha para seus inimigos. É assim que você
faria isso. Novamente, isso
é, no nosso caso, o inimigo é apenas um ENG estático. Só vai
se movimentar com base nas coordenadas
na tela. Mas para referência futura, se tudo o que você tem são
PNGs e não tem planilhas ou não
quer usar planilhas
e quer cortar meu player e
os power-ups em suas próprias planilhas. É assim que você faria e seria a
mesma coisa. Em vez de chamar
um reprodutor de animação, chamamos o sprite animado
e reproduzimos a animação agora. Então, como eu disse, não
precisamos disso para nosso caso. Vou me livrar disso. E vou mostrar o Sprite
normal novamente. Caixa de colisão. Isso é
apenas um retângulo simples. É tudo o que precisamos
. Isso vai aparecer e nós vamos cobrir isso. E você pode decidir quanto do seu navio deseja cobrir. Então eu acho que vou
cobrir essa parte e não cobrir a parte da arma. E minha posição para d. Eu
posso ter certeza de que eu recebo o reflexo que está
em vermelho, isso para baixo. Lá vamos nós. Eu apenas passo isso
um pouco à frente
do cânone, um AAC. Se nós aceitássemos isso
, mova-o ao redor. Nós temos nossa posição e é daí que ela
vai disparar. Men Lizzie, ou 0. Lá vamos nós. Então, temos nosso inimigo.
Salve nossa cena. E ele será enviado.
Que temos nosso inimigo básico configurado e
pronto para começar a atirar, mover e ser
gerado em nosso mundo.
20. Tiro de inimigos: Tudo bem,
vamos em frente e atacar a
habilidade de tiro inimigo aqui. Agora, você poderia usar não saiu assim como
fizemos com o nosso jogador. Crie uma cena personalizada
com sua própria foto, dê a cor. Eu dou sua própria direção. Você não precisa fazer
o código nisso. Você só vai
fazer com que ele desça na tela em vez
de subir na tela. Mas para isso, vou mostrar como podemos usar o projétil dos jogadores. Então, vamos usar a mesma cena
que tivemos aqui. Se abrirmos nossas
cenas, lá vamos nós. Então, vou mostrar a
vocês como podemos usar a mesma cena aqui. Mas ajuste-o para que o inimigo
possa usá-lo, além de continuar
permitindo que nosso jogador o use. Então, para fazer isso, vamos entrar em nossa nave inimiga. Vamos adicionar
o script nele. Garante que o colocamos
no local correto de nossos scripts. Clique em Criar. E lá vamos nós. Nós criamos isso. Então, para começar pelo nosso inimigo, vamos precisar que
eles sejam capazes de fazer isso. Então, o que vamos
fazer é
adicionar uma variável aqui. Tempo ou navio inimigo. Vamos adicionar um cronômetro
à nossa cena aqui. E podemos usar aquele para
ter qualquer espaço lá. Queremos evitar isso,
evitar possíveis problemas. E de volta ao nosso script, agora que temos
uma variável de tempo, podemos definir isso
para um número aleatório. E para fazer isso, vamos
realmente deixar isso, ter um padrão lá em cima. E dentro da nossa função pronta é onde
vamos ajustá-la. Devemos
chamar randomize. O que vai
aleatorizar nosso c. Para que
possamos ter a verdadeira randomização. Dessa forma. Não temos
uma boca repetitiva. Então, toda vez que iniciamos o jogo,
não seremos salvos. 510131211. Nós não vamos obter
a mesma sequência de números toda vez
que nós aleatorizamos a semente, isso vai mudar, mudar isso de
forma eficaz todas as vezes. Então, o que vamos fazer aqui
é chamar randomizado apenas
uma vez, porque só
queremos mudar
o tempo que temos. Então, vamos
definir o tempo igual a, e depois vamos
defini-lo como um flutuador aleatório. E se dermos uma
olhada aqui com isso, vamos em frente e colocamos com Randolph teremos um
número aleatório entre 0, entre 01. Ok? Isso é meio útil. Mas entre 01, acho
que vai ser muito curto. E no caso desse inimigo, não
queremos ter
algo como uma metralhadora. Então, o que
podemos fazer é fazer um aleatório, podemos arredondar um carro alegórico se
formos em frente e usá-los. Mas, em vez disso, o que nós somos, o que eu acho que vamos
fazer é usar onde está aqui? Já usamos isso antes. Poderíamos usar apenas discurso retórico. Lá está, lá embaixo, com nossas porcentagens. Mas, novamente,
queremos misturar isso um pouco mais. Então, vamos usar o intervalo
rand desta vez. Para que possamos obter números flutuantes. Só para
agitar um pouco as coisas. Se você quiser usar
o aleatório regular, basta ter incrementos de
números inteiros. Você pode fazer isso. Mas para isso,
acho que vou usar a faixa
rand. Como você vê aqui. Dessa forma, podemos obter um flutuador e temos que passar
dois argumentos, o menor número e
o maior número. Então eu vou dizer que
vai demorar pelo
menos 1 segundo entre as
filmagens. No máximo. Vou dar cinco
segundos entre as filmagens. Agora vamos ter algum tempo
entre 15 segundos cronômetro. Podemos então ir em frente
e pegar nosso cronômetro de tiro. E vamos apenas definir a hora. Podemos ver aqui nas propriedades
que é chamado de tempo de espera. Espere sublinhado, tudo bem. E podemos definir isso igual ao
tempo que acabamos de criar. Então, agora temos uma quantidade
aleatória de tempo. Com isso, podemos conectar
nosso sinal ao meu temporizador, que também será um
pouco diferente em 4. Se você quisesse fazer
isso por meio de código. Se você quiser manter isso o mais fácil possível de
acompanhar comigo, basta vir aqui para o nó
e clicar duas vezes no tempo limite. É como nossa
nave inimiga e clique em conectar. Dessa forma, vai para
as duas versões. Se você estiver usando a
versão três ou a versão para o mecanismo. Mas se você quiser
conectar esse novo código ou estiver curioso para saber como fazer isso. Então, na versão
atual aqui, vamos fazer isso. Essa dúvida conecta
muito que eles iam, você vai conseguir o que
deseja conectar. Qual é o seu cronômetro de disparo? Eles gostariam de
conectar alguma coisa. O que queremos conectar
é o acompanhamento do sinal. E esse sinal, se dermos uma olhada
nele, é chamado de tempo limite. Então, digitaríamos o
tempo limite aqui. E o alvo, que é o que
você deseja conectá-lo. Lembre-se de quando
selecionamos nossa nave inimiga, quando fomos assim
e selecionamos nossa nave. O que você seleciona aqui,
neste caso, nossa nave inimiga. É com isso que
queremos nos conectar. E já que o roteiro
está em nossa nave inimiga, só
temos que dizer “eu”. Isso nos deixa com
um terceiro argumento, basicamente sendo apenas o que você quiser que o nome do método seja. Então, se formos assim,
esse comando aqui é essencialmente o que o motor acabou quando fomos assim e selecionamos a
nave inimiga e pressionamos Conectar. Agora, na versão quatro, isso será
um pouco diferente. E eu não tenho 100% de certeza isso vai parecer
fora da minha cabeça. Mas, como eu disse, a maneira mais fácil é
acessar
a guia do nó e conectar o
sinal de tempo limite dessa maneira. Então, quando nosso tempo acabar, o que vamos fazer
é filmar. Então, obviamente, para isso,
vamos precisar da nossa cena. Então, vamos dizer,
vamos carregar isso como não gostaríamos de chamar isso, só
gostaria de dar
uma chance. E pré-carregado na Suécia, veja nosso projétil normal, traga isso. No tempo limite. Tornamos nossa instância de shot igual a ou instância de ponto de tiro. Agora temos e estamos prontos
para adicioná-lo à cena. Cavalo, isso vai ser
adicionado para duvidar de nós mesmos. Mas neste caso, se fizermos um tem um bom pai para ser adicionado ao nosso gerador,
o que é nosso observador nunca se move de qualquer maneira. Então isso não é grande coisa, mas se você quiser ir até
o mundo, como fazemos com nosso jogador. Então, podemos
conseguir os pais duas vezes. Agora, na maioria dos casos, você quer tentar evitar
o uso de vários pais apenas para evitar possíveis
problemas no futuro. E é aí que a criação nossos próprios sinais como esse
entraria em ação. Sempre que você sobe na árvore, é melhor
usar sinais. E quando você desce pela árvore, você acaba de pegar o nó. Mas neste caso, especificamente para
esse tipo de jogo, isso não
causará nenhuma fonte de problema. Então, podemos fazer para ignorar os pais, não pegar pais e filhos. E podemos adicionar em nossa
instância filmada aqui. Então isso vai adicionar
isso ao jogo. O problema é que, neste momento, sabemos que nossa cena
vai subir na tela. Então, o tiro
vai
acontecer onde nossos inimigos vão
atirar em si mesmos. E não é
isso que queremos. Então, o que precisamos
fazer é
modificar partes desse projétil. Então, se viermos aqui,
podemos dar uma olhada, estamos definindo a velocidade y
para uma velocidade negativa. Para que possamos mudar isso. Agora que foi
adicionado à nossa cena. Podemos mudar isso imediatamente para que possamos sobrescrever isso. Então, vamos em frente e definir. Nós podemos ter nossa chance. Acesse a variável de velocidade
y dele. A propriedade y da nossa variável de
velocidade, e definir nosso tiro
como nossa velocidade. Agora lembre-se de que nossa
velocidade é positiva. Portanto, não vamos
subtraí-lo aqui. Eu quero ser positivo, o que o enviará
para a tela e o
diferenciará do nosso player. Se eu abrir essa cena, se você se lembra
aqui em nosso sprite, podemos ir em frente e podemos mudar a
cor aqui em visibilidade e modular. Parece que fizemos isso
no corpo cinemático, o que tornará isso
um pouco mais fácil. Isso é tudo que vamos fazer. Vamos mudar o
módulo para que pareça diferente quando for
atingido pelo nosso inimigo. Vou ficar chocado moduli. E vamos definir isso
igual a uma cor diferente. Então, se apenas
digitarmos a palavra cor, você pode ver que a palavra cor vai mudar para uma cor. E nós simplesmente fazemos. Se você fizer
parênteses assim, poderá passar um valor RGB. Se você usar aspas duplas, poderá passar um
código hexadecimal, se quiser. O que eu vou fazer é aproveitar as cores embutidas porque
existem muitas delas. Eu só vou colorir, ponto final. E agora você vê que temos toneladas de cores diferentes aqui que
podemos escolher e que
já estão incorporadas. E muitas vezes isso é
tudo que eu preciso fazer. E geralmente funciona bem
o suficiente para mim. Acho que vou
tentar. Vamos ver. Vamos usar um roxo médio. Tudo bem, então salvamos isso. Vamos para o nosso mundo
e criar uma nave inimiga. Nós apenas os trazemos para o nosso
mundo aqui e apertamos play. Devemos ser capazes de
filmar dentro de cinco segundos com base nos
números de aluguel dele. Exceto que ele não é. E a razão para isso é porque,
na verdade, não iniciamos o cronômetro em nenhum
momento. Configure isso. Configuramos nossa corrente, mas não
iniciamos o cronômetro. Vamos pegar nosso temporizador de disparo e chamá-lo de função de
início nele. E quando nosso tempo acabar, também
faremos isso de novo. Então, vamos começar nosso cronômetro de tiro e colunas. Aqui vamos nós. Se dermos uma olhada, podemos ver meu oficial de projeto
subindo e seu projeto fora. Nós vemos isso lá no
lado esquerdo. Está descendo. E a razão para
isso é o mesmo problema que
tivemos com nosso jogador. Precisamos consertar a
posição dele. Então, se seguirmos em frente e
dermos uma olhada em nosso jogador como referência, porque usamos
a posição do jogador lá. Podemos ver que conseguimos
uma posição de tiro. E definimos isso igual
à nossa posição 2D e igual à posição
global, cabeça para baixo em nosso inimigo. E podemos fazer isso em qualquer lugar. Sabíamos disso antes de
adicionarmos quando criança ou depois. Isso realmente não importa
neste caso, porque não
estamos substituindo nada dentro do próprio
projeto Alex. Então, vamos fazer o tiro na
posição e vamos definir isso igual a temos
essa disposição para D, vamos chamá-lo de posição de pausa do
tiro. Defina isso igual à
nossa pausa na tacada. Posição móvel. Aqui vamos nós. E nós o executamos agora. Agora deveria estar filmando
do quarto dele. Vemos mater yellow
e his ou purple. Agora que o roxo neste
caso está um pouco escuro, pode ser difícil para
o jogador ver. Então eu vou em frente
e mudar essa cor. E dessa forma, você pode fazer
ajustes e decidir
qual é a melhor visualização em
relação aos seus planos de fundo. Agora, usando um limão, isso seria muito, muito brilhante e
fácil de ver do nosso inimigo. Então isso é fantástico. Neste ponto, você pode
simplesmente ir em frente e ajustar as cores que
deseja para isso. E apenas como uma nota lateral, se você quiser apenas
usar este sprite, mas você quiser que navios
diferentes sejam chips de cores
diferentes ou talvez você simplesmente não
queira essa cola. Na verdade, podemos fazer a
mesma coisa que
fazemos com a nossa
chance de modular aqui. E como não é branco, vamos adicionar cores
diferentes a ele. Como você pode ver aqui, que podemos obter cores diferentes aqui se eu simplesmente desligar a forma de
colisão lá. E você pode ir em frente e
dar uma olhada nisso. Assim, você pode fazer variações
ligeiramente diferentes. Se você quisesse. Eu só vou repor o meu de
volta ao normal. E lá vamos nós. Tudo bem, então com isso
temos nosso inimigo montado. E agora temos nosso inimigo capaz atirar em nós em um momento aleatório. E para mostrar
que é aleatório, vou apenas adicionar
outro e estar nossa cena aqui, apenas vou usar o Controle D
para duplicar. Lá vamos nós. Temos três diferentes
e todos eles vão filmar em três momentos completamente
diferentes. Você vai. Oh, como você pode ver, os dois à esquerda
parecem estar bastante sincronizados,
mas na verdade estão
bastante errados em seu tempo. Um pouco mais de coincidência. Lá vamos nós. Então, agora temos a configuração. Eles estão atirando e eles estão
atirando em tempo aleatório. Então, eles não
serão todos iguais quando saírem ou
quando forem gerados. Então, em seguida, vamos em frente
e configuramos um inimigo, o criador do inimigo ou
o movimento inimigo que eu acho que provavelmente
deveríamos fazer os movimentos inimigos
básicos. Pense bem em lidar com isso a seguir. Dessa forma, quando o
identificamos, podemos realmente
dizer que o ser gerado em vez de eles
ficarem fora da tela.
21. Vazamento de memória: Tudo bem, então algo
que eu queria, quero abordar primeiro, antes
de esquecer,
é que vamos
ter problemas. Eventualmente, mais um jogo
continua porque
temos um vazamento de memória. O que é isso, é o que estamos continuamente criando todos esses itens
que estão causando isso. E não estamos lidando com eles quando não
precisamos mais deles. Então, vamos
continuar
empilhando cada vez mais e mais e
mais até que, eventualmente,
o computador do usuário cada vez mais e mais e
mais até que, eventualmente,
o computador do usuário fique
lento e comece a ficar lento, ou talvez até travar. E vamos dar uma olhada no
lado direito aqui. Eu fui em frente e pausei esse teste que você
vê ao lado. E se dermos
uma olhada nisso e na seção remota, dê uma olhada em todos
esses projéteis que foram gerados,
mas eles não desaparecem. Então, mesmo que não os
vejamos
mais na tela e eles sejam completamente
irrelevantes para o nosso jogo. Eles ainda estão se movendo. Ainda há uma
parte do nosso jogo. Então, o que precisamos fazer é
agora lidar com isso para quando ele sair da tela na parte inferior e quando sair da
tela na parte superior. Então, vamos em frente, vá em frente e
vá para o nosso roteiro de projétil aqui. Vou criar uma
função para verificação. Que conversa com
uma posição de cheque. Não é o melhor nome para isso, mas funcionará para isso. Vamos dizer self. Podemos verificar
se a posição do ponto automático Eu direi que se for
menor que
0, porque lembre-se, é o ponto y.
Eu direi que se for
menor que
0, porque lembre-se, 0 estará no canto
superior esquerdo ou o
topo da tela
será 0 na direção y. Então, se for menor que 0, então vamos contar
para o próprio Q3. Agora, também temos que
verificar quando
os disparos inimigos estão passando
pela parte inferior da tela. E se você esquecer o
número da sua tela, podemos entrar novamente
nas configurações do seu projeto, vá para nossa janela de exibição. E lembre-se de que não tem 400 de altura, então queremos procurar
algo maior que 400. Lembre-se de nossos sprites,
32,5 disso são 16. Então, queremos verificar LF,
LF, posição de dúvida. Não Y é maior que. Agora, lembre-se que
dissemos 400, assim por enquanto. Lembre-se de que dissemos 400. Mas se dermos uma olhada e
lembrarmos do projétil, o ponto está no meio. Então, temos metade, metade. Isso ainda vai ficar para fora, o que neste caso é bom, mas parece melhor se esperarmos até que ele
saia da tela. Como esses são 32 por 32 sprites que estamos usando todos esses. Na verdade, podemos verificar. Podemos adicionar isso a isso. Então, poderíamos adicionar 16
só para ficar um pouco. Nós fazemos 32 para conseguir a coisa toda. Eu só vou usar para 50, dar um bom número redondo. E para garantir que
não haja nenhuma maneira possível de
sobrar em nossa tela. E então eu vou dizer para dar
uma dica para você, se for. Agora, se dermos uma olhada
nesta seção remota, quando jogarmos nosso jogo, e dermos uma olhada em todos
esses projéteis que entraram, eles são gerados e não os
excluem eles mesmos. Fácil. Isso é só porque
nunca chamamos isso nossa posição de verificação com o
gradiente, mas não o chamamos. Vou
chamar isso dentro da nossa função de processo. Agora, se você quiser, você
pode criar um cronômetro verificar isso. Em vez de chamar isso de
cada quadro e do Tibre, colocar um temporizador
no projétil e verificar quando esse
tempo acabou
provavelmente será um pouco mais amigável ao
desempenho. Mas tudo isso vai
depender de até onde você vai com o seu jogo para saber se isso
acaba sendo uma opção melhor ou não. Se entrarmos e dermos
uma olhada novamente, veremos o
controle remoto em que devemos proteger que a casa é gerada e eles são excluídos
quando saem da tela. E o mesmo acontece com os
que filmamos também. Esses são todos excluídos
e lá vão eles. Agora corrigimos
o vazamento de memória que criamos dentro do nosso jogo. Então, é simples assim. Isso garante que, uma vez que você
não precise mais de algo, vá em frente e se livre disso. E se dermos uma olhada em nossos power-ups dentro
de nosso gerador aqui, veremos que não estamos,
não temos nenhum
desses problemas com nossos
power-ups aparecendo. E a razão para isso é que
realmente abordamos isso aqui. Se você estiver curioso,
rejeitarei se a posição for
maior que 420 e a excluímos. Se for maior que, claro que esse número é passado. Nosso jogador deixou passar ou 100. Então sabemos que não está mais
na tela. Não precisamos disso e
nos livramos dele. Então, resolvemos isso com
nosso power-up. E agora você acabou de ver
com nosso projétil, por que precisamos fazer isso com
a guia remota ali. Com a enorme
quantidade de coisas que estamos criando
que ainda existem nosso jogo e a
rapidez com que isso se
acumulará com projéteis. Por exemplo. Novamente, se tivermos
alguma coisa com fogo rápido, temos armas de disparo rápido. Por exemplo. Você pode ver a rapidez com que eles podem realmente começar a se acumular. Então, resolvemos
isso, corrigimos isso e vamos adicionar
movimento vertical ao nosso inimigo. Se você quiser apenas que o inimigo role
em direção ao jogador.
22. Movimento vertical: Vamos em frente e abordar nosso bom poder nos
mover verticalmente. Se isso é tudo que você
quer no seu jogo, então esse é todo o movimento
que você vai precisar. Agora, isso é, é claro, hiper dependente do que
você quer do seu jogo. Claro, o que
vamos fazer aqui é encontrar
nossa nave inimiga aqui. E vamos fazer algo parecido
com que fizemos com nosso projétil. Portanto, temos nossa velocidade e nossa velocidade que
queremos enviar para nos movermos. Dentro do nosso processo, precisaremos mover e deslizar. Precisamos de algum tipo
de velocidade passada. Então, é claro que
vamos usar nossa velocidade como argumento da
velocidade. E tudo o que vamos fazer é
como um pronto agora de novo, se você quiser randomizar a
velocidade entre dois números, você certamente pode
fazer isso também. Apenas certifique-se de fazer isso sob a cor aleatória aqui. E você pode fazer a
mesma coisa como fizemos com o tempo. Eles estão usando Rand. Bem, eu quero apresentar um número ou se você quiser
fazer uma faixa de classificação, você certamente pode
fazer isso também. Você pode randomizar as velocidades. Se você quiser que todos os seus navios
tenham velocidades diferentes, você certamente pode.
Eu apenas adiciono também. Para mim, vou
usar a velocidade normal aqui. E eu vou
definir o meu para 100. Então eu vou dizer que
velocidade ponto y é igual a velocidade. Agora lembre-se de que estamos
tendo isso positivo. Então nossa nave está descendo. E se esse é todo o
movimento que queremos, é tudo o que
vamos precisar. Eu vou em frente
e apenas movê-los para cima. E vá. Eu disse que se todos
eles foram gerados em pontos diferentes
e pudermos ver que eles vão, se movem em
nossa direção e podemos nos ajustar. Podemos ir em frente e ajustar
essas velocidades como vemos. E você pode ver como eles
estão se movendo
em uma linha lá. Então, vou mostrar como seria se mudássemos isso para
uma quantia aleatória. Então, digamos que a velocidade é igual. E vamos continuar, só para mostrar uma
pequena mudança, vamos usar a faixa rand. Vamos definir isso
entre, digamos 9110. Então essa é uma pequena lacuna, é uma diferença de 20. Damos uma olhada e podemos
ver que eles começaram perto. Mas então eles têm diferenças. Agora este está
ficando para trás porque o do meio está
realmente se movendo mais rápido. E, claro, você pode tornar
essa lacuna
tão grande quanto você quiser. Se você quiser seguir esse
caminho, lá vamos nós. O meio estava apenas entrando e o da extrema direita, que apenas relaxa e
relaxa. E se fizermos uma pausa
e irmos para o controle remoto, nós realmente descemos
e veremos nossa nave inimiga. E vemos que um navio tem
187, o outro tem 95. E nosso terceiro
tem um para um. Então, se você quiser ter
uma velocidade aleatória para seus navios nessa faixa
vertical, é assim
que você pode ir em frente
e ajustar isso. Então isso vai depender
completamente de você. Acho que, por enquanto,
vou deixar o meu assim e podemos seguir em frente para
ajustar nosso gerador.
23. Enemy Spawner: Tudo bem, para o criador inimigo, vamos usar
a mesma coisa aqui, usando um nó básico como
um gerador de inimigos raiz. Vá em frente e salve
isso em nossas cenas. E vamos fazer muito do que fizemos aqui com
nosso criador regular. Então, vamos adicionar um cronômetro a ele. E se dermos uma olhada
no código que usamos aqui, temos nosso inimigo aqui. Agora, se você quiser ter
vários no-breaks ou não, neste caso, assim
como nossos poderes, temos vários inimigos. Assim, você pode ter uma variedade
aleatória e aleatória de inimigos
como os que surgiram. Você certamente pode fazer isso. E eu vou te mostrar como
fazer dessa maneira. Porque você sabe
como fazer isso com um único item como esse. Agora, o que vamos fazer é
algo parecido com isso. Então, vamos
entrar em nosso gerador inimigo. Vou adicionar um script, colocá-lo no local certo. O que faríamos é que podemos fazer var inimigos iguais e
, em seguida, nossos colchetes. Mas então, para cada um desses, vamos fazer assim
e pegar nossa nave inimiga. Então, se tivéssemos
múltiplos desses, ficaríamos assim. E você
continuaria com quantas variedades
você tivesse lá. Nesse caso, eu
só tenho um. E, claro, o benefício de
fazer isso dessa maneira é se você adicionar mais
inimigos menores de alguma forma. No futuro, ele
será independente, como se você não
precisasse editar seu código. Você pode simplesmente adicioná-los
ao topo aqui e seguir em frente. Tudo bem, então se
fizermos referência aos nossos power-ups que tínhamos nosso gerador, não abra esse código. Nós fizemos. Está bem ali embaixo.
Eu nem vi isso. Então você pode ver que estamos fazendo
tudo no tempo limite. Então isso significa que precisamos conectar nosso cronômetro ao nosso gerador
inimigo. E agora temos essa
configuração também dentro do prazo, ou podemos chamar randomizar. Porque, novamente, queremos que as coisas sejam aleatórias, assim como
fazemos com nosso poder. E podemos ver aqui que criamos
uma instância da nossa cena. Nesse caso, estamos tendo, estamos chamando uma
instância do nosso poder, mas queremos que
seja um número aleatório. Então precisamos
conseguir uma nave aleatória primeiro. Então, digamos que o inimigo selecionado
é igual a inimigos. E dentro de nossos
colchetes, vamos dizer Randy. E vamos usar a
porcentagem do
tamanho do ponto de nossos inimigos para uma nova variável.
Lá vamos nós. Então, não importa
quantos inimigos adicionemos ou removemos no topo aqui, nosso código nunca
mudaria. Sempre teremos um inimigo que pode ser selecionado. Então, descemos e então
podemos criar uma instância
do nosso inimigo. Então, digamos que inimigo n é igual a
eu coloquei de forma errada. Digamos que uma instância
inimiga selecionada. Então, seja qual for o inimigo escolhido, esse é o que vamos
criar uma nova variável. E então tudo o que temos que fazer, é um que é adicionado. Então, vou dar uma
olhada no nosso criador aqui. E você pode ver que tudo o que
fizemos foi apenas adicioná-lo, o que é perfeitamente bom
para o nosso gerador, porque o gerador em si
não vai se mover. Então, vamos em frente
adicionar criança inimiga. E neste momento, agora
está no jogo. Mas o que queremos, lembre-se de
um, uma variedade no x. Portanto, não é tudo apenas
no canto superior esquerdo. Digamos que rand, posição x. E vamos definir isso
para ser um número aleatório. Podemos usar a faixa rand. Está perfeitamente bem. Nós usamos isso aqui para seguir
um caminho diferente com ele? Só usamos o Randy. Então, vamos seguir em frente e
continuar com isso apenas para padrões de
consistência e consistência. Mas se você quisesse
usar esses intermediários, novamente, 02 a quatro. Aqui vamos nós. Portanto, temos nosso número
aleatório dentro de nossos 224. Eu posso, você pode ajustar isso se não quiser que sua
nave fique pendurada um pouco. Então, por exemplo,
eu vou com, eu vou dizer 200. Então, às 20, o que
fará com que
meus números sejam meus Min e max 20 a 20. Nós apenas os adicionamos à cena. Então, vamos entrar no nosso mundo. E em nosso gerador inimigo. E eu vou apenas
mover isso lá em cima. E se jogarmos isso agora, isso não vai acontecer
porque na verdade
não acionamos nosso cronômetro. Então, vamos voltar a isso, configurá-lo para o início automático e tentar novamente. Lá vamos nós. Então vemos que eles estão indo para lá e estão realmente se
encontrando. E eles vão ficar lá em cima. Você tem uma posição,
mas não a definimos. Basta obter a
posição do nosso inimigo ponto x. Então, o bom é
que sabemos que nosso script está funcionando. má notícia é que está
colidindo consigo mesmo. Então, quando a nova posição
ponto x é igual ao nosso rand, posição
rand, posso
soletrar aqui posição de corrida. E isso resolverá isso. Ou goles ainda vão
se encontrar. Se eles tiverem a chance
de. Lá vamos nós. Nós vemos isso lá
no lado direito. Eu tenho três deles
todos empilhados. Então, muitas vezes surgindo, temos a posição
e eles estão atirando, parecendo ótimos, exceto
pelo fato de que eles estão
colidindo um com o outro. Então, neste ponto,
vou apresentar
a você o recurso Mac e
camada. Então, se entrarmos em nossa nave
inimiga, lá vamos nós. E nosso
corpo cinemático 2D, margem segura. E então aqui vamos nós sob
colisão object td. Aqui em nosso Inspetor, temos a Coalizão, e aqui
temos camadas e máscaras. Portanto, a camada é, se você visualizar algo
como o Photoshop, você sabe o que são camadas,
funciona de maneira semelhante. Onde você pode ter uma camada de
jogador está acima da camada, a camada inimiga,
camada projetada para fora. E por mais que muitos
queiram ir em frente e se separar disso. Você pode ver se eu abrir isso, você tem 32
camadas diferentes para trabalhar. E tanto sua camada
quanto em suas máscaras. A camada é onde seu objeto está e a máscara é com
a qual ele pode interagir. Então, se você não fizer isso, sua nave pode
colidir uma com a
outra ou colidir com o
jogador ou qualquer coisa disso, podemos desligar a máscara. Agora, o problema que temos
aqui é que nosso projétil
também está na primeira camada. Então, já que
desativamos a máscara, não seremos capazes de
atirar no inimigo de forma alguma. Então, o que
vou fazer é mover nosso inimigo para
a camada dois. Nada é, tem uma máscara da
camada dois no momento atual. Então, se formos em frente
e jogarmos isso agora, você pode ver que nossos inimigos
não se encontram. Eles se
ignoram completamente. Mas eles estão
correndo para o jogador porque lembre-se de que nosso jogador
está na máscara um, ou nossos jogadores estão na camada um? Então, com a máscara detectada, estamos nos deparando com ela. Agora, dependendo se você quer que o inimigo
seja capaz o jogador ou não e explodir o jogador com uma
grande quantidade de dano ao jogador. Isso pode ou não
ser ideal para você. Lembre-se, se estamos causando
dano a um jogador, podemos simplesmente desativar a
colisão do jogador temporariamente para evitar que isso aconteça. Então, o que podemos
fazer é deixar
nosso jogador em um. Temos nosso inimigo ligado. E se usarmos três
para o nosso projétil. E vamos dar uma olhada nesses
três para o projétil. E o projétil
pode interagir com o jogador e com o inimigo. Então, temos a máscara 12
definida e tentamos isso. Vemos ossos e agora o
inimigo passa por cima de nós. E eles não podem mais
interagir conosco. Então lá vamos nós. Isso é uau. Como podemos ir em frente e
realizar isso são mudanças e não mais
nos esbarramos. Eles não estão ficando
presos no nosso jogador e no nosso projétil. Uma vez que interage
com as duas camadas. Com nossa máscara selecionada 12. Devemos ser capazes de causar dano
ao nosso inimigo e nossa Amy deve ser capaz de causar dano a nós
ainda assim que adicionarmos isso. Essa também é uma
pequena
introdução sobre camadas e máscaras. Portanto, lembre-se, a camada é onde
seus objetivos e a máscara, quais camadas ela pode
interagir. Então, novamente, se estivermos na
máscara um e na camada um, camada um
interagirá com ela. Já que selecionamos a máscara. Se estivermos na camada dois
com a máscara um selecionada, podemos interagir com
qualquer coisa que esteja na camada um, camada um lado
interagindo conosco. Espero que não seja, isso não ficou muito
confuso para você. Mas saiba que temos
tudo funcionando. Se você tiver alguma dúvida
sobre máscaras de camada, sempre
poderá perguntar a elas. E vou tentar esclarecer o que quer que você esteja
confuso com eles. E podemos passar
para o próximo vídeo. Neste ponto, temos um movimento de
disparo de desova e
não temos vazamentos de memória acontecendo. Então, o que eu vou fazer é
, na verdade, apenas
remover essas três
naves de partida da minha cena aqui. Lá vamos nós. Agora, não os temos quando você começa e eles podem aparecer. Agora, se você quiser criar um cronômetro
aleatório para seus navios, você sabe como fazer cronômetros
aleatórios
neste momento ou obter números
aleatórios. Você certamente pode fazer isso.
Substituído o tempo de espera. Tudo bem, aí está. Temos tudo
configurado, indo para ir. Temos inimigos,
poder, tiro. Além da saúde e GameOver estava destruindo
e tudo mais. Nós temos. Neste ponto. O básico, o básico do atirador
espacial padrão.
24. Bala: Hoje vamos fazer com que nosso
projétil realmente atire e destrua
nosso inimigo e nosso jogador. E dependendo de quanta saúde você quer que o jogador
ou o inimigo tenham, você
estará causando dano ou matando-o completamente. Então, a primeira coisa que devemos fazer é, em vez da primeira
coisa que eu quero que você certeza de que você
fez é ter certeza de que sua nave inimiga
não está causando nenhum, não está causando um vazamento de memória. Ao verificar sua posição, como fazemos com os
projéteis que
fizemos recentemente, um
dos últimos vídeos. E com isso, uma vez que
você tenha certeza de que tem isso, vamos
para o nosso projétil. E você
vai em frente e adicionar uma área a D que tem
uma forma de colisão e tornar a forma de colisão um
pouco maior. O que está clicando na forma foi para que você
possa ver aqui para mim que é apenas um clique maior. Tudo bem, então vá
em frente e faça isso. E então,
para fazer isso funcionar, vamos para nossa área de tiro
ou área para ficar igual
à colisão. camada madura é definida
para a camada três. E vamos
definir nossa máscara 212 para que possamos interagir
com as camadas 12,
que jogador-estrela e nave inimiga. Podemos ir para
a seção de notas aqui para que possamos dar uma
olhada nos sinais e
conectar o sinal inserido no corpo ao nosso script de
projétil. E isso é o que
devemos ver aqui. Essa função
foi criada automaticamente para nós. Portanto, a maneira mais fácil de fazer isso e colocar isso em funcionamento e testar é para o nosso jogador, vou mostrar duas
maneiras de verificar isso. Um usando nomes e
outro usando grupos. Então, para o jogador,
vou usar nomes. Então eu vou dizer se
jogador e corpo Nome, corpo ponto Q livre. Então o que isso está dizendo
é este ditado, se o corpo físico
que entra nesta área, se seu nome passa jogador
com P maiúsculo E então vamos
dizer que o corpo agora entrou em nossa área, o
DQ se liberta. Então, se voltarmos à
cena do jogador e dermos uma olhada em
nosso corpo cinemático. É um jogador com
P maiúsculo Então isso vai funcionar. O inimigo deve ser
capaz de nos matar efetivamente, será baleado e
o
modo desaparecerá fora de cena. Lá vamos nós. Se atirarmos, nos movemos. Nada acontece porque
estamos completamente curados. Tudo bem, agora para o nosso inimigo, agora vou mostrar a vocês
como fazer isso com grupos. Então, se você quiser criar
várias naves inimigas diferentes, você pode simplesmente colocá-las
sob o inimigo do grupo, e isso funcionará. Você não precisará adicionar
nenhum código ao projeto. Então, vamos para nossa nave inimiga vista com nosso
corpo cinemático 2D aqui. Porque lembre-se que estamos
trabalhando com o corpo inserido. Vamos para a
seção do grupo. À direita. Vamos entrar em nossa caixa de
texto e vamos
dizer inimigo e apertar
o botão Adicionar. Então, se fôssemos gerenciar nossos
grupos agora, veremos que temos o grupo inimigo e que
consiste em nossa nave inimiga. Como você vê suas anotações
no navio inimigo do grupo. E você pode facilmente adicionar
ou remover de lá. Mas agora que
temos isso lá, podemos ter esse
trabalho com todos os nossos inimigos, contanto que
apenas os adicionemos ao grupo. Então, tudo o que teríamos que fazer
é se o corpo estiver em grupo. E isso exigirá um argumento na forma de uma string se eu não me
engano com o nome do grupo. Então, neste caso, seria
uma série de capitais inimigas Y. Vamos em frente e
dar uma chance a isso. Administre nosso mundo. E agora devemos ser
capazes de matar nosso inimigo. E não podemos. Oh, não importa.
Dissemos para passar por aqui. Obviamente, queríamos fazer de graça, assim como fazemos com nosso jogador. Então, se nossos corpos e
o grupo inimigo, nós apenas dizemos a ele para nos mantermos livres. Selecionou a
cena errada lá, é claro. E você pode ver se atiramos agora, Aereo, nosso inimigo
e ele é morto. Agora, como você pode
ver, nosso objeto está passando diretamente por
qualquer coisa que filmamos. Então, se você não quer
que isso aconteça, você quer que suas
fotos sejam mínimas. Aqui. O que vamos fazer está fora de qualquer
uma dessas condições. Agora você pode fazer
isso na parte inferior, ou você pode fazer isso
no topo, não importa. Vamos apenas
dizer self dot Q free. Dessa forma, nosso próprio
discurso de projétil. Lá vamos nós. Temos um tiro trabalhando em
nosso jogo e somos capazes de
destruir nossa anatomia
e nosso jogador. Tudo bem, no próximo vídeo, vamos em frente e vamos
configurar a saúde falando. Há poder ali mesmo. Configure a saúde e nosso multiplicador de
danos. Certifique-se de que nosso escudo
esteja funcionando para nos proteger. Lá vamos nós. Tudo bem,
vejo você no próximo vídeo.
25. Danos de saúde e proteção: Neste vídeo, vamos
seguir em frente e enfrentar o jogador e nosso inimigo, causando saúde e
dano a eles. Então, vamos em frente e entrar. Vamos empilhar
nossa nave inimiga. Seja um pouco mais fácil, mas há algum espaçamento aí. E criaremos uma nova
função chamada dano. Queremos chamá-lo de sucesso. Eu passo no meu
parâmetro de dano. E vamos apenas passar por enquanto. Vamos subir para
os dois primeiros são variáveis. E eu vou criar
uma variável para o nosso, para essa nave inimiga específica. Vou chamá-lo de Saúde. E vou definir isso para três. Então a nave tem três pontos de vida, não
é muito forte. E o que vamos
fazer é dizer saúde dentro da nossa função, Saúde menos é igual a dano. Então diremos se a saúde for
menor ou igual a 0, então auto ponto Q livre. Agora, a razão pela qual
vamos dizer
menor ou igual a 0, porque se for igual a 0, então nosso inimigo deve estar
morto e deve ler. Então. Mas se houver de alguma
forma, de alguma forma uma falha que acontece e nosso inimigo
acaba com saúde negativa. Isso está agindo como
uma barreira para garantir que o inimigo seja destruído
como deveria,
mesmo que seja de alguma forma
falhas abaixo de 0. Agora, no nosso projétil, onde temos nosso grupo
inimigo aqui, vamos
chamar golpes de pontos corporais. E lembre-se de que isso leva
em uma essência de parâmetro se esse inimigo tem três pontos de vida. Vamos dizer que
esta análise do projeto, podemos filmar muito rápido. Vamos dizer que esse
check-out só causa um dano ao inimigo. Então, se fôssemos correr isso
agora, deveríamos ver que o inimigo atira para matar. Aqui vamos nós, 123. E se nosso jogador for baleado, você verá que nossos jogadores ainda
serão destruídos instantaneamente. Portanto, nossa nave agora tem saúde, e nosso jogador
precisa ter saúde, mas também levar em consideração outros
parâmetros, como, é
claro, nossos escudos nisso. Então, vamos
ao nosso script de camadas. Vamos dar um pouco de
saúde ao nosso jogador, se você ainda não o fez. Meu jogador tem três pontos de vida. Vamos até Onde devo colocar isso? Vou colocar isso logo
abaixo do meu tiro antes de entrarmos em
nossos power-ups. Vou criar uma
nova função chamada hit. Isso exigirá um
parâmetro de dano. E vamos fazer o
mesmo aqui, saúde menos é igual a dano. E diríamos que se eu for
menor ou igual a 0, self.view grey, assim como
fizemos com nossa anatomia. Agora o problema aqui,
então precisamos dar uma olhada em nosso escudo, certo? Então, precisamos dar uma olhada
se nosso escudo está ativo. Então, vamos dar uma olhada, temos uma variável que
criamos chamada blindada. E quando o escudo está ativo, podemos ir
em frente e adicionar blindado igual a verdadeiro. Vamos ter certeza de que
temos isso em nossa função. E agora, quando somos atingidos, antes de fazermos qualquer um
desses cálculos, podemos dizer se o antigo fez. E queremos ter certeza de que
diz se não, ela tinha um C, Você pode fazer o
ponto de exclamação antes da palavra protegida, ou você pode digitar a palavra não. De qualquer forma. Estava fazendo a mesma coisa. E vou
destacar essas três linhas e clicar em Tab. Então, se não
estivermos protegidos, vamos perder saúde. E se nossa saúde estiver abaixo de
0, nós nos excluímos. Então, agora podemos ter uma declaração
else aqui. Então, se estivermos protegidos, podemos excluir nosso escudo inserido blindado, definido como falso. Agora, se dermos uma olhada,
escudo contra Israel é nosso filho do nosso jogador, vamos ter um desses. Então, se abrirmos
nossa cena de escudos, podemos ver que acabamos de chamar
isso de grandes escudos. Portanto, devemos ser capazes de
fazer dentro de nossos
jogadores vistos aqui. Devemos conseguir apenas
obter os escudos dos nós, certifique-se de soletrar corretamente
ou você acabará com um erro assim que executarmos o jogo
e chegarmos a essa parte. Então, digamos que escudos pontilham Kubrick. Agora, isso deve excluir nosso escudo e definir nosso
blindado como falso. E se não tivermos um escudo, então devemos nos
danificar. Então, para isso, também
vou imprimir nossa saúde apenas para que possamos ver isso visualmente em nosso console. Vamos seguir em frente e ver como isso funciona.
Sem escudos. Nós levamos um tiro. Nós não o
chamamos em nosso projétil. Quero chamá-lo de body dot, hit. E mais uma vez, vou causar apenas
um dano ao nosso
jogador também. Isso vai manter o equilíbrio
entre os dois. Vemos ao
lado aqui vamos para a saúde One Health e 0, com
o qual, é claro, morremos. Agora, se pudermos viver o
suficiente para
conseguirmos um escudo,
podemos testar isso. Vai ser um
pouco de um teste aleatório. Quem sabe? Quando
vamos conseguir um poder? Se quisermos comprar um também. Vamos em frente e
oh, há um escudo. Fantástico. Então, temos um. Quando somos atingidos, nossa saúde não
deve diminuir e nosso
escudo deve desaparecer. Nosso escudo desapareceu. E é claro que não
imprimimos nossa saúde porque nunca sofremos danos. Agora levamos dano a um. E então nossos escudos e nossa saúde estão diminuindo
exatamente como esperamos. Agora, se você tiver uma animação de explosão ou morte que você adiciona a isso para seu
jogador ou seu inimigo. Você simplesmente
reproduz a animação. E depois que isso terminar, eu defino para.
26. Ganho de saúde: Tudo bem, vamos em frente e
resolver nossa saúde. também tenho
alguma coisa aqui? Então, vamos dar uma olhada. O que fazer? Dê uma olhada no nosso Script
do Power Apps. E podemos criar nosso poder. Buddy entrou. Ok,
então aqui vamos nós. Quando ficamos mais saudáveis, essa é a seção que
queremos dar uma olhada aqui. Então, quando o corpo 2D da área entrou e a energia que estamos
procurando é a nossa saúde. E é aí que
vamos trabalhar aqui. Vamos seguir em frente e
criar nossa função para isso. Nós vamos dizer,
bem, saúde vai dizer quantidade de
saúde e refazer
saúde mais quantidade igual. E isso é tão simples quanto precisamos fazer com que
nossa saúde funcione. Se você quer ter uma quantidade
máxima de saúde, então você pode dizer, tudo o que temos a fazer é então entrar em cima aqui e
diremos var max health. Vou definir que talvez
cinco seja a saúde máxima que nunca conseguiremos. Entraremos e iremos se a
saúde for menor que a prateleira r max. E então nós só
temos essa linha. E lá vamos nós. Isso é tudo o que teríamos que fazer se
quisermos
ter certeza de que temos uma saúde máxima
que o jogador
não vá acima ou abaixo. Isso é tudo o que temos que
fazer para isso. Mas agora podemos ver que nossa
saúde vai funcionar. E se eu imprimir de forma mais saudável, e eu vou
entrar no nosso mundo. E vamos em frente e
jogar e ver o que
acontece quando
temos uma saúde nosso Hold on. Eu me lembro, eu
não chamei isso. Então, vamos entrar em
nossa saúde de power-ups. E, na verdade, somos chamados
de body dot health. E passe a quantia que queríamos aumentar,
que é a minha. Certifique-se de que eu fiz isso direito. Sim. Tudo bem. Agora podemos entrar em
nosso mundo e testar nossa propriedade de saúde. Portanto, temos três por padrão, se você se lembra,
pegamos um Health e você pode ver no console
à esquerda,
ou a saúde agora é quatro. Quando começamos às três. E com nossa
verificação da saúde do Mac, nunca
devemos ir
acima por qualquer motivo. Seja qual for a nossa volta ao
sul. Tudo bem, então vamos
lá. Nosso poder de saúde agora
está funcionando
da maneira que deveria. Nossos escudos
não estão apenas funcionando, mas sendo levados em
consideração quando ele leva um tiro. E quando levamos um tiro,
danificamos. Lidamos adequadamente com
nossos inimigos e nosso jogador. Isso cobre todos
os nossos power-ups, que cobre nosso poder, nossos tiros, causando dano. Se você criar tiros diferentes, você poderia, é claro
, usar
o mesmo tipo de script, pois
o projétil só tem valores
diferentes colocados
aqui para o seu dano. Tudo bem, então temos
tudo isso funcionando e, na maioria das vezes, temos exatamente o que
precisamos para chamar esse atirador
espacial completo.
27. Pare de atirar um ao outro: Tudo bem, neste vídeo,
vamos seguir frente e garantir que nosso inimigo não possa atirar
um no outro pelas costas. E como vamos fazer isso é indo para
nossa nave inimiga. Vamos adicionar um raio fundido a D. E, por algum motivo,
ele está desativado por padrão. Então, queremos ir
até a seção Ativado no inspetor
e ativá-la. Agora, flecha é
efetivamente até onde nosso elenco
vai, até onde estamos verificando. Então, o que vamos fazer é ir em frente e definir
o cache para, digamos, talvez 100. Isso faz isso extra, faz a
maior parte da sua tela. Se você quiser ficar um
pouco louco com isso, você pode fazer algo
como 400 para garantir que você cubra a tela
inteira. Isso depende totalmente de você. Ou máscara de colisão, queremos
interagir com a camada dois. Então, vou desligar um porque só queremos verificar
se estamos atingindo nosso inimigo
ou, neste caso, nossos inimigos se aliam. Então, em nosso roteiro, quando
filmamos, vamos ver. Onde vamos filmar aqui, devemos escrever aqui
quando nosso cronômetro
cronometrar L. Então vamos
fazer uma pequena verificação. Vou dizer que
se vamos lançar
nosso raio 2D para que o raio F
possa estudar o ponto está colidindo. E isso é tudo que
devemos verificar. Cd está colidindo ou não. Então, vamos dizer para
mudar isso para, se não, TD
re-lançado está colidindo. Nós vamos fazer
isso, que é essencialmente azeitonas para atirar. E observe que deixei o
início do cronômetro de
lá porque, esteja
colidindo ou não, queremos reiniciar o cronômetro. Então, se fôssemos executar isso agora, e apenas para
fins de teste e mostrando a vocês, eu vou definir
minha velocidade de y para 0 novamente no meu inimigo. Eu vou virar, entrar no nosso mundo aqui. E eu vou definir para os inimigos. Vou colocar um bem na
frente dos nossos jogadores aqui. Ou melhor, vamos para
o lado aqui. E vamos em frente e
arranjamos outra nave inimiga. E vamos deixar isso
para trás assim. Então agora, se nosso código funcionar lá, sim,
aqui atrás não deveria, porque ele sabe que
atiraria em um aliado amigável por isso. Enquanto o
da frente aqui deve ser capaz de
continuar atirando normalmente. E lá vamos nós.
Podemos ver na frente e todos esses que estão
surgindo e atirando. Mas aquele que está bem aqui no canto superior
esquerdo é o canto superior esquerdo? Não, já que o inimigo na
frente e não atirou. Se dermos uma olhada, apenas
o primeiro está atirando porque os outros estão atingindo pelo
menos um outro navio
que estará na frente dele. Um aplicativo nosso para dizer pegue este
navio e encoste-o. Você pode ver agora que teria tiro porque
não há nada na frente dele. E o que está no
topo não está atirando. Porque se você der uma
olhada nesta área, você pode ver que ela mal está atingindo a caixa de colisão que
temos da nossa nave. Então, se nós pegássemos
isso e um pouco mais, você pode ver aqui embaixo ele vai em frente e ele começa a atirar. Agora ele está atingindo
nosso inimigo lá. E isso é para o corpo. Tudo bem, então não fomos.
Podemos ver que eles só atiram quando temos inimigos diretamente
na frente deles. Então você pode ver o que isso, temos uma
conexão bastante decente acontecendo aqui com saber se um inimigo está
ou não
na nossa frente. Então, com essa lógica,
devemos ficar bem. Agora, vou em frente e adicionar meus criadores de volta ao
mundo. Gerador inimigo. Se formos em frente e dermos uma
olhada agora. Oh, isso mesmo.
Eu os defini para 0. Teste isso. Volte
para a velocidade. Lá vamos nós. Assim, podemos ver que
eles não estão atirando quando têm outra nave
diretamente na frente deles. E nós vamos. Então, agora nossos navios
estão um pouco mais autoconscientes.
28. Animações de geração: Agora tudo o que você precisa fazer se
quiser padrões mais complexos, em vez de se mover diretamente para baixo. Você pode simplesmente usar
algo como um aleatório, algo como o nosso
aleatório que
usamos . Vamos puxar isso de volta. Por exemplo, assim como
estamos fazendo aqui quando Randy podemos fazer
algo assim. E então, com base
no número que você obtém, você pode reproduzir uma animação
específica para criar navios britânicos. Então, se você quiser ter algo único, talvez você queira enviar
para fazer alguns loops. Você pode ir em frente e configurá-lo para fazer isso. Obviamente, você precisaria
definir sua velocidade y como 0. Se você quiser isso. Caso contrário, você
continuará se movendo verticalmente, mesmo que esteja
reproduzindo sua animação. Assim, você pode aproveitar a animação do player para fazer seus navios fazerem todo
tipo de coisa. E você pode
aproveitar o uso do Randy para criar cenários diferentes ou
jogar diferentes. E o lugar onde você
faria isso
seria bem aqui, dentro
do spawn de seus inimigos. Então, baseado em
tudo o que você conseguir. Então, estamos dizendo,
digamos, por exemplo, se eu disser var é igual a Randy, Tudo bem, digamos
Randy cinco, assim. E então diremos que F
e M são iguais, iguais a 0. Qual foi o padrão aqui? E aqui, e m é igual a um. E é claro que você pode usar a partida como fizemos antes
com o jogador. Quando se trata de power-ups. Bem aqui, você pode
ver uma correspondência aqui. Você não quer
usar declarações if. Obviamente, podemos ir
em frente e dar uma olhada. Se a faca de anime animar. Se Adam um. Reproduza esta animação, defina a
velocidade know pi para 0. E isso é tudo que você
teria que fazer. Agora, nossa forma vai
disparar continuamente. Essa lógica é por si só. Mas é assim que você
pode fazer isso, certo? E então podemos,
é claro, fazer outra verificação se fôssemos todos e M2. E podemos reproduzir essa animação
e definir que a velocidade é 0, que rola três
por cento disso. Então, até lá, depende
muito de você. E a animação é
que você deseja criar
para as naves
usarem ou usarem quando aparecerem. E se você quiser
ir mais longe, digamos que a animação vem
da esquerda. Sou Sam da
esquerda. Você pode fazer. Você pode entrar e você pode, você pode verificar se a posição
x é menor que, talvez sua animação tenha
que ser menor que 300. Então você pode verificar isso, certo? Então, basta usar esse texto
simples e criar diferentes tipos de animações
com um fluxo de vínculo como esse. Eu também deveria adicionar aqui. Apenas no caso de algumas pessoas
não perceberem adicionar inimigo quando criança. Criança. Vou apenas adicionar isso para dar um pouco
de ênfase lá. Mas isso é essencialmente
tudo o que você precisa fazer é seguir esse
caminho, e você pode entrar no
reprodutor de animação e criar todas
as animações diferentes, todas as
animações diferentes. você quer que sua nave vá tão
longe quanto o caminho e vá. Tudo bem, isso, isso lida com isso. Nós temos, você tem uma ideia de
como criar um ter único. Se você quiser ter
uma animação especial ou sua nave, quando ela surgir. E, claro, será uma chance aleatória de fazer
isso ou simplesmente
acontecer. Se você quiser. Fomos em frente e nos
dirigimos aos nossos inimigos, não atirando uns nos
outros pelas costas. Certo? Neste ponto, não
vou usar nenhum desses, mas você certamente pode,
se quiser. Eu não
acho que eu não vou, eu estou bem com isso
indo direto para baixo como alguns dos clássicos. Mas não temos muito o que
fazer aqui além de lidar com a
aparência da nossa GUI e atualizá-la.
29. Criação de IU: Tudo bem pessoal, Neste vídeo, vamos em frente e
vamos criar a parte da interface
do usuário do nosso jogo. Então, se eu der um zoom aqui, vocês podem ver que
teremos nossa saúde exibida
à nossa esquerda na forma de corações. E temos um
vazio e um preenchimento. Assim como fizemos com
nossos outros power-ups aqui, mas
teremos nossos power-ups exibidos no
lado direito. Quando estiverem vazios,
ficarão esmaecidos. Quando estiverem
visíveis. Estará tudo iluminado como você vê aqui. Agora. Poderíamos simplesmente deixá-los
individualmente assim. E, em seguida, basta alternar
quais estão sendo mostradas através da visibilidade. Mas há uma
maneira muito mais fácil de fazermos isso. Então, vou
deletar todos esses. E a maneira mais fácil de
realizar algo assim. Antes de tudo, use
uma camada de tela. Agora, a camada de tela, qualquer coisa que for colocada
nela, será
desenhada em cima ou na frente de todo o
resto na tela. Então, vou criar uma nova
cena, ir para o meu outro nó. Minha camada de tela ajuda se a soletrarmos corretamente.
Lá vamos nós. Vou renomear
isso para o meu dever. Isso é o que vai
ser e dar um salvamento. Cenas. Salve. Lá vamos nós. Então, agora
temos nossa cena segura. E pegajoso, se você não sabe, significa apenas interface
gráfica do usuário. O que vou usar para isso é que vou
usar uma barra de progresso. Mas não
queremos um progresso normal. Queremos ter nossas texturas e vamos usar
um progresso de textura. Agora, isso basicamente
nos permitirá encher e esvaziar um bar. E agora ele poderia
pensar nisso como
uma
barra de saúde retangular típica ou uma barra de carregamento. No entanto, vamos
fazer isso com nossos sprites. E vamos em frente, vamos começar com a
barra de saúde, o que chamamos de este. E vamos em frente
e dar uma olhada. Vamos preenchê-lo
da esquerda para a direita. Você pode ver que temos todas essas opções
diferentes aqui, dependendo de como você deseja. Cinturão de gol do seu Bartok. Temos da esquerda para a
direita, da direita para a esquerda. Temos de cima para baixo. O que pode ser interessante ou pagar de
baixo para cima como você quer fazer
isso. Temos a barra no sentido horário, então não me engano.
Breath of the Wild. novo jogo Zelda
que está no interruptor
usou uma barra de resistência no sentido horário,
se bem me lembro. Mas o que vamos usar
é da esquerda para a direita para isso. Agora, se
abrirmos texturas para você, teremos um
excesso e um progresso. Agora eu misturo esses tópicos exatamente
o que, qual é qual. Mas eu vou em frente
e trazer minha saúde. Vazio, eu acredito, vai para o subtotal ou
vai além ou progride. Acredito que
mais seria como as decorações com uma
borda ao redor do seu bar. Abaixo está a
parte de baixo de cada barra. Então, se você tiver uma
barra de saúde, pode ser um
vermelho mais escuro ou pode estar
vazia e não ter nada. E então o progresso é
o que vamos
mostrar à medida que progredimos. Então, se eu colocar minha
barra de saúde preenchida com uma em andamento e a
vazia e abaixo, se eu descer aqui para o meu
valor e eu definir isso para 50, que é a metade porque o
Min é 0, o máximo está com fome. Então eu disse avaliado em 50 ações, a saúde é
preenchida no meio do caminho. Agora você pode exibir isso
no entanto, você gostaria. Vou seguir em frente e definir
meu valor máximo para cinco. O que significa que, se eu definir meu valor para cinco,
estarei em plena saúde. Se eu definir para um, ainda
temos uma saúde. E se você quiser dar
mais um passo, você pode ver que nossos passos
vão subir ao ser definido como um. Por exemplo, não podemos fazer 1,5, basta arredondar isso para dois. Mas se você quiser ter
meio coração lá, mude nosso passo 2,50, e agora seremos capazes de fazer 1,5 sem nos arredondar. Então, essas são apenas algumas
opções que você pode pensar para o que vamos
fazer ou o que você quer fazer. Bem, isso é essencialmente tudo o que
precisaremos. Para fazer essas barras basicamente, tudo funcionará
da mesma forma. Nossa saúde e nossos escudos e velocidade de
tiro múltiplo. Não, o único tem uma imagem. Isso significa apenas que
teremos valor máximo de
um
do que dizer que há 0 ou um. Está ligado ou desligado,
ativado ou desativado. Antes de um mais saudável, você pode
ver tomar um pouco de liberdade. Então, se você quiser, você pode
fazer marcas de meio dano aqui ou você pode ficar
com o padrão, que é o que eu
vou usar aqui. O padrão 12345. E eu vou seguir em frente e
criar nossas outras marcas aqui. Então o laboratório tem mais duas texturas. As barras de progresso terão uma
para nossa barra de tiro múltiplo. Temos nossa barra de velocidade. E por último, uma
barra de progresso. Nós não trancamos isso. Mas como eu tenho isso aberto, você pode ver que uma
barra de progresso geralmente é o que você verá para
algo como uma tela de carregamento. É apenas uma
barra simples que se enche. E isso é tudo o que
você realmente precisa para isso. Enquanto a textura
, como você viu, podemos aplicar nossas próprias texturas
personalizadas a ela, tornando-a mais exclusiva. Então vá em frente e obtenha um progresso de
textura novamente. E isso deixa só
querer ser nossa barra de proteção. Tudo bem, então passando para
aquele fora do caminho, nossa barra de tiro múltiplo
vai ficar encolhida. Vamos dar uma olhada. Vamos
colocar nossa parte de baixo, ela está vazia. Nosso progresso, que é nosso
completo traga nosso barzinho. E assim temos nosso mínimo. E isso vai
ser 0 ou um. Defina isso como um. Para dar uma olhada no limite máximo, podemos aumentar nossa velocidade, que seria aproximadamente
do mesmo tamanho. Tudo bem, então agora podemos
dar uma olhada em quão longe
queremos que nossas posições
estejam sobre isso. Então, para onde eu quero que isso vá? Vamos ver, vamos nos
destruir e posicionar. E pode ser um pouco demais. Acho que cinco
seria um bom número. Estes ao longo do caminho ao longo da posição y para baixo, posição
destruída y cinco. E o mesmo com nossa ajuda. Mantenha tudo em um campo
equilibrado ou uma aparência geral mais agradável também
afastará cinco do x. Pegue todos os três. Siga em frente. E
vamos dar uma olhada. Nós temos isso. Vou começar
nos levando ou até o limite. E então eu vou apenas
subtrair cinco desses. Então, digamos 208 menos cinco. Então vamos dizer 125 menos cinco, isso seria um oitenta, um sessenta e três menos
cinco nos deixa com 158. Tudo bem, agora temos
uma distribuição uniforme entre todos esses
e, se executarmos isso, deixe-me ver, é assim que nossa
interface do usuário ficará aqui. Com nossa interface do usuário agora criada. Podemos então avançar
para a implementação das operações de projeto de lei e não
em nossos scripts.
30. Atualizando a interface: Tudo bem, então
vamos em frente e começar a adicionar ao nosso código. E acho que a maneira mais fácil de
fazer isso é se criarmos uma função geral que possa lidar com a mudança de qualquer uma de nossas barras. Portanto, essa será uma função
que podemos usar repetidamente. Então eu vou
em frente e criar um novo roteiro para discutir. Coloque-o no local
correto. Dentro dos nossos roteiros. Não haverá nenhuma variável. Eles estão prontos para funcionar. Não poderíamos usar isso. Eu não vou me
livrar disso ainda. E dentro da nossa
função de processo, desculpe, não processo. E se livrar disso. ter nossas próprias funções aqui. Vou entrar na atualização da
função, barra de atualização. E isso vai levar
em dois argumentos de uma barra na forma de string. E isso vai ter um valor na forma de uma polegada. Agora, se você está fazendo
meio valor, então é claro que você
teria que ser capaz aceitar cargas também, o que significa como você
pode defini-lo assim. Por que fazer um número inteiro, é claro que
você gosta de 1, por exemplo. Já que estou lidando
com números inteiros, vou
direto ao assunto. E o que vamos fazer é
usar o bar. Então, quando chamarmos isso, vamos passar em uma
string como barra de saúde, barra tiro
múltiplo, barra C,
barra de escudo. Então, vamos contar quais são essas barras que compramos. Depois disso, podemos ir
em frente e fazer o nó ainda. E podemos simplesmente passar no
bar que queremos lá. Definimos o valor do ponto igual a
qualquer valor que passamos. E isso é tudo o
que temos para fazer isso. Lute agora, adicione ou defina
nossos vars para qualquer coisa, o
que quisermos que
os valores atuais deles sejam. Em nossa função pronta. Vou seguir em frente
e fazer self dot, add, add, add to group. E eu vou em frente e adicionar
isso a um grupo chamado gooey in all caps. Agora, o que
acabamos de fazer aqui
no código AC equivalente a vir aqui
para nossos grupos
de nós e adicionar nosso Dewey em um
grupo pegajoso aqui e clicar em Adicionar. Isso é exatamente a mesma coisa. Isso só vai acontecer
quando nosso jogo carregar. Essa é uma segunda maneira de
fazer isso. Depende realmente de você
o que Rocks Gogo fazer que não machuque nada ou importe de que
maneira você faça isso. E eu vou salvar isso criado. Agora devemos ser capazes de
começar a implementá-los. Então eu vou em frente
e vou para, vamos para,
vamos para o nosso power up,
eu vou adicionar ou fazer nós para o
mundo em uma cena de GUI de arte. Agora que temos nosso
Dewey no mundo, você pode ver se o temos no topo ou no fundo. Não importa, não
vai importar. Porque, novamente, é
uma camada de tela que sempre será desenhada
em cima de todo o resto. Agora você poderia mudar
isso, é claro, com camadas, como
você pode ver lá, mas não há nenhum ponto real,
nenhum ponto real. Especialmente na
maturidade dos jogos aqui. E as camadas só devem realmente entrar em
jogo quando você tiver, se você tiver vários
Canvas preguiçosos, vou manter
tudo super organizado como sendo exibido. Tudo bem, então vamos
pular em nossos roteiros. Vamos começar com o que eu disse? Power-ups. Aqui vamos nós. Então, estamos entrando,
então vamos para o chamado
inato e
eles vão acelerar, escudo e ativar o tiro
múltiplo em nosso jogador. Digamos que. Tudo bem,
então isso nos dá saúde vai ser
o que temos aqui? Então, podemos ir em frente e
definir isso para cinco. Agora, vamos definir isso para cinco valores máximos
sucessivos que podemos ter. Vamos encontrar
nossa saúde aqui. Tudo bem, então aqui o que vamos fazer
é chamar o grupo DUE, o que significa tudo o
que está dentro desse grupo. E você vai dizer
todas essas coisas para realizar uma função específica. Agora, se não tiver,
tenha essa função, é
claro, você pode acabar
com um erro ou um problema. No nosso caso, temos apenas um item lá,
e essa é a nossa GUI. Então, sabemos que
a função vai existir. Então vamos dizer call,
get, tree dot col group. Então, o primeiro item
aqui é qual grupo? Que será
a GUI. Nós nos agrupamos. O segundo argumento é a
função que você deseja chamar. Vou apenas ir em frente e selecionar isso para
ter certeza de que está escrito corretamente. Todos eles são adicionados como
strings, então atualize a barra. E o próximo
serão os argumentos
que você passar. Então, primeiro precisamos do
bar, que é saúde. Bar. E o segundo será o valor para o
qual queremos atualizá-lo. Então, no nosso caso,
vamos usar a saúde porque a saúde
será
definida para o que quer que seja, certo? E isso vai ser definido para 123 ou cinco até o final disso. Então, vamos em frente e usaremos
isso para atualizar nossa saúde. Agora, quando formos
atingidos, você se lembra, você também precisa
atualizar nossa saúde. A saúde menos danos
vai e vamos chamar isso. Então, agora, se executarmos isso, nossa saúde deve ser atualizada. E está definido como um
só porque
estamos testando coisas de tetrâmero. E como isso não está
definido como total no padrão, vou entrar na minha barra de
saúde e atualizá-la. Onde estão meus valores lá? Então, vou definir isso para cinco. Eu perguntei meu padrão e vamos em frente e executamos
isso para termos saúde total. E você vê que levamos um tiro,
estamos perdendo saúde. Está atualizando. E se
conseguirmos encontrar um poder de saúde, isso também deve aumentar. Se pudermos ter tanta sorte. Tem um, nós entendemos e você vê nossa saúde atualizada até agora. Quatro de cinco. Há um multi-shot
que ainda não temos nenhuma dessas coisas
funcionando. Estamos argumentando que esses valores
padrão
devem ser definidos como 0. Esses são vírus. E lá vamos nós. Tudo bem, agora
podemos usar o mesmo código aqui para obter nosso outro valor. Então, permite a velocidade. Por exemplo, aqui. Podemos entrar aqui,
podemos habilitá-lo. Vou ligar para o grupo GUI. Vamos chamar a barra de atualização. E desta vez vamos chamar
a barra de velocidade. E não vamos
passar na saúde. Vamos passar em um. Desta vez. Na verdade,
vamos definir nosso número. E quando nossa velocidade
voltar ao normal, passaremos em um 0. Tudo bem, podemos ir em frente e resolver isso para o nosso
escudo ativado também. Embora a ativação do escudo
o defina como um. E voltamos para
0 quando somos atingidos. Então voltamos
aqui para acertar quando blindado se torna falso e
mantemos os escudos traseiros. Nós atualizamos nosso bar. Observe que realmente
precisamos atualizar isso
e vamos para a barra de proteção. E então isso deixa
nosso tiro múltiplo. Vamos lá dentro. Dissemos que é verdade. Multi shop está definido como um. E depois do nosso cronômetro, quando desativamos o tiro múltiplo, definimos o valor de volta para 0. Então, agora nossos power-ups
devem estar funcionando. E quem tem que esperar
até que eles apareçam para testá-los? A velocidade deles. Boom, está ligado. Nós temos nosso impulso. Eu deveria desativar
aqui em um momento. Lá vamos nós. Para nossa velocidade funciona. Agora temos que
garantir nosso tiro múltiplo. Lá vamos nós. Nos
deparamos com um problema. Eu coloquei de volta em vez do bar. Lá vamos nós. É por isso que vamos em frente e fazemos nossos testes para
sabermos que nossa velocidade funciona. Temos que testar nosso
tiro múltiplo agora, o que deve funcionar. Acabamos de ter um erro de digitação lá. E então podemos
testar nossos escudos. E se ambos funcionarem,
nossos Power Apps
estão funcionando como deveriam. Seja. Fantástico. É sempre bom ouvir. Diz para ir em frente e esperar. Há um escudo,
pegue-o ou escudo aceso. Fantástico. Quando levamos um tiro, desaparece com seu
escudo. Lindo. Agora só temos que ter certeza de que
nosso tiro múltiplo está funcionando. Tudo bem. Fomos
em frente e iluminamos várias
fotos funcionando. E assim que
terminar, deveria. Voltamos para um ícone vazio. Tudo bem, então todas as nossas
habilidades e power-ups estão funcionando perfeitamente
bem, assim como nossa atualização de saúde. Mantemos tudo contido
em uma função simples. Podemos ligar de qualquer lugar
sem acontecer com sinais de
conexão e
tornar as coisas mais confusas do que poderiam
ser para algumas pessoas.
31. Explosão de partículas: Certo, neste vídeo, vamos em
frente e vou mostrar como você pode fazer uma explosão usando partículas. Agora, você pode usar partículas para todos os tipos diferentes
de coisas diferentes. Nesse caso,
vamos usá-lo para fazer uma pequena
explosão. Dessa forma, em vez de
animar uma explosão, vou mostrar
como você pode criar uma. Vou mostrar
como você pode criar um usando as partículas embutidas. Agora, ao criar
suas partículas,
obviamente, vamos
criar uma nova cena. Vamos fazer um cronômetro. Sou filho disso. Só para que ele saiba quando
se excluir, quem cuida do nosso problema de memória. Mas ao fazer partículas, CSI digita isso aqui. Artigos. Temos partículas
e partículas de CPU. Não há uma grande
diferença entre os dois, exceto que as partículas da CPU serão alimentadas pela sua CPU, enquanto as partículas TD serão
alimentadas pela sua GPU. Então, dependendo do seu projeto, você pode querer ficar do lado de
um lado sobre o outro,
totalmente com você, mas vamos usar
as partículas da GPU aqui. Tudo bem, então com isso selecionado
e renomeado para explosão, eu fui em frente e já
salvei meu visto. Quando vá em frente. Podemos deixar a vida inteira de uma só vez. E vamos seguir
em frente e
descer para processar o material. Agora, isso é o que o triângulo
amarelo está
nos dizendo é que
não temos material para o nosso, não temos material para nossas
partículas aqui saírem. Então, vamos em frente e criar
um novo material de partículas. Agora, o shader
entraria no código, e essa é uma linguagem totalmente
diferente e uma
besta totalmente diferente por si só. Mantenha as coisas simples. E como realmente não
precisamos usar código de sombreamento aqui, vamos apenas criar
um novo material de partícula. E você já pode
ver que nossa partícula já
está ativa e
está indo direto para baixo. Venha para baixo,
podemos dar uma olhada. Queremos nossa forma de emissão. Um momento. Lá vamos nós. Então, nossa forma de emissão,
isso muda muito. Devemos dizer que o nó da esfera
vai em uma área circular? Temos uma caixa que
seria mais um retângulo. Então, isso é basicamente dizer a
ele como se criar a si mesmo. Vamos usar um anel. E um exemplo aqui, se
aumentarmos o raio do anel, você pode ver que estamos obtendo resultados
diferentes em comparação com
esse ponto básico. Então, se usássemos digamos, uma caixa, digamos dez no x. Por quê? Você pode ver que estamos
entrando nisso no espaço de
dez por dez em que essas
partículas estão surgindo. Então, dependendo do que
você está avançando, você pode querer
experimentar diferentes formas, pode encontrar algo
que você goste. Eu vou usar um
anel para esta explosão. Mão redefiniu isso de volta para um, eu acredito que foi um padrão. Então, seguindo em frente, podemos ir para nós
temos direção e temos gravidade. Essas são as duas
coisas que afetarão a forma como
suas partículas estão se movendo. E para isso,
vou seguir em frente e definir minha gravidade. Vai ser 0 no y, e eu vou
colocar um no x para
que ele
se mova para a direita. Agora. Não está indo
muito longe. E não está
se espalhando, como você esperaria
de uma explosão. Mas o que podemos fazer
é descer
até a velocidade inicial. E podemos
aumentar isso, digamos 180. Lá vamos nós,
voando para a direção x. E a razão pela qual
temos isso acontecendo por toda parte
por causa da nossa propagação. Então, tivemos nossa
propagação em um grau. Quase parece
que está indo perfeitamente em linha reta. Se fizermos 0, vai direto. Mas como não
explodimos, precisamos virar
isso ao redor. Queremos 180 graus, certo? Queremos todo o
caminho ao nosso redor aqui. E eu acho que 180
na velocidade pode ser um
pouco rápido demais para isso. Então, vou mudar para 50. Agora. Isto é, isso
está ótimo. Mas como você vê, estamos
ficando como boop, boop, boop, boop, boop, boop. Você pode ver todas essas direções
diferentes. Agora, explosão de Warren, queremos que isso seja como
uma explosão, certo? Só queremos um grande boom
e há de tudo. Bem, antes de pular lá em cima, vou ajustar minha
velocidade aleatória ano. E isso só vai
colocar uma variedade nisso. Então, se minha velocidade estiver em 50, minha vermelhidão é de 0,45. Isso significa que minha
velocidade pode ser de 49,4 ou cinco, desculpe, 49,55 no mínimo
e tão alta quanto 50,45. E você pode ir em frente
e ajustar isso é muito mais fácil porque temos toda
uma diferença lá. Mas, novamente, eu
vou apenas com qualquer 0,45. Não é uma grande diferença, mas adicionará um
pouco de variedade. Então, nem para obter a
explosividade que queremos, nós realmente queremos rolar
todo o caminho para baixo,
abaixo da seção de tempo. Temos explosividade aqui. Vá em frente e
defina isso como um. E boom, lá vamos nós. Temos nossa explosão. Agora, isso não é um monte de partículas que
temos acontecendo. Há apenas oito deles. Bem, podemos ir em frente e
ajustar a quantidade aqui. E o sistema
de todos será diferente. Lembre-se, quanto mais partículas, mais recursos serão necessários
para o computador
renderizar essas partículas. Podemos ir até,
digamos, 100. Boom, lá vamos nós. Agora, se você quiser usar
um número menor, é
claro, 5050 parece bom
por jogo de pixel também. Mas acho que vou
com 100 pessoalmente. E essas obviamente
serão as escolhas
pessoais de todos aqui. Agora, olhando para isso, podemos ver que é tudo branco. Agora, isso não vai ser
como uma neve**** acontecendo. Queremos, queremos
um pouco de cor lá. Vamos para a seção
de cores. E vamos
fazer uma rampa de cores. Então, uma nova textura de gradiente. E apenas clicando nisso, podemos criar um novo gradiente. Abra isso. E aqui vamos nós. Então o que eu vou fazer é
para a minha primeira cor aqui, eu vou em frente
e fazer um amarelo. Agora vou
ter outra cor, um pouco abaixo da metade,
criar uma laranja. E neste eu
vou usar um cinza escuro. E eu cliquei fora disso. Lá vamos nós. Então é isso que
eu tenho para um explosivo. Você pode ajustar e
filmar pequenas barras aqui, o que afetará a mudança
do gradiente. Então veja se eu mover laranja
mais para a direita, eles
terão esse
tempo de transição de amarelo para laranja muito mais longo. Somos solicitados a representar graficamente e
movê-lo para a esquerda. Vai ser só um incidente. Assim, você pode mover esses controles deslizantes
para algo com o qual se sinta confortável e
que você acha que parece bom. Acho que vou
com isso aí mesmo. E com isso, temos uma explosão que está
criada e pronta. Agora, nós só queríamos
sair uma vez. Promessa. Se acertarmos um tiro, nossas partículas não serão emitidas quando forem
carregadas na cena. Não sei se isso é um
bug ou um problema ou o quê, mas podemos alternar um tiro
depois que ele for gerado. E novamente, sua quantia aqui vai ser até, mas
eu vou te mostrar, se tivéssemos algo como mil C e
explosões entendem por quê? Por que foi muito diferente?
Porque responder a todas essas montagens
de uma só vez. Você vê que estamos obtendo um formato de anel
muito claro aqui. Então, isso pode ser
um pouco demais. Nesse caso. por isso que para algo como fumaça supostamente existir
em um jogo de coleta, eu gosto de ir com
esses números menores, como 50 a 100. Tudo bem, agora que
criamos isso, certifique-se de salvar sua cena. Vamos pular, dar uma olhada no nosso
pequeno roteiro aqui. Vou criar o para
o cronômetro. Vou enviar o
sinal de tempo limite, minha explosão. E eu vou
definir isso como self dot. Agora, o importante que
quero definir aqui é
garantir que o tempo de espera no meu cronômetro seja o mesmo
que a vida útil, no mínimo, corresponde à nossa vida útil em nossas
partículas aqui. Porque não queremos que
seja cortado mais cedo. E então podemos
ter certeza de definir nosso cronômetro para um tiro e início automático. Tudo bem, então a seguir, tudo o que
temos que fazer é
entrar e colocar isso
em nossas naves inimigas. Tudo bem, então em nossa nave
inimiga aqui, eu fui em frente e criei
uma variável chamada explosão que carrega nossas partículas aqui, partícula de
explosão. E eu vou descer para quando nosso inimigo for atingido dentro
da função de fita é
menor ou igual a 0. Queremos excluí-lo, mas é
claro que queremos, queremos gerar
ou inserir partículas. Então, vou criar
uma nova variável conn EX p underscore. Defina isso igual à instância do ponto de
explosão. Aqui temos uma nova
instância disso. E, é claro, queremos
adicioná-lo à nossa cena com obter EXP para pais e filhos. OK. Então, isso é ótimo. Nós temos isso na cena agora. Há dois problemas
nesse caso. Bem, um problema e
um problema parcial. O primeiro é o problema de
que ele ainda vai
subir no canto. Portanto, precisamos definir sua
posição EXP underscore dot position equal self
dot position. Até agora. As partículas da explosão agora
devem estar
no mesmo lugar que nossa nave
inimiga quando ela morreu. E podemos ir em frente e
definir um tiro. Para ser verdade. Você não precisa fazer
isso com a configuração do cronômetro. Mas se você quiser
ser mais seguro do que uma dúzia de loops ou qualquer
um deles por conta própria. Só um pouco mais de precaução. Então você pode ir em frente e definir
um tiro igual a verdadeiro aqui. Agora, se formos em frente e executarmos
isso, você pode dar uma olhada. Lá vamos nós. Temos
uma explosão e ela desaparece. Lá vamos nós. Agora você pode ir em frente e
fazer a mesma coisa e adicioná-la ao
jogador, se quiser. Quando o jogador é morto. Lá vamos nós. Criamos
nossa própria pequena explosão. Feito puramente a partir de partículas.
32. Jogo: Tudo bem, Para este vídeo, vamos seguir em frente e fazer um pequeno jogo sobre a cena para
que, quando o jogador morrer, possamos solicitar ao usuário a opção de reiniciar o jogo. E acho que vou fazer
isso dentro do meu pedido. Eu queria fazer uma folha
separada para isso. Quer saber? Vamos em frente e eu vou
adicioná-lo ao meu Dewey. Sim, vamos
em frente e fazer isso. Então eu vou
em frente e por isso, eu vou fazer uma queda de cor. E eu vou estendê-lo. Certifique-se de cobrir
toda a minha área azul. E vou
mudar a cor para ver como será o
modo escuro. Vinte e um, vinte e
um, vinte e um. E baixar meu alfa
para uma rodada no meio do caminho. Se dermos uma olhada nisso agora, há onde podemos olhar. Agora, essa
cena de fim de jogo será muito simples de fazer. Vou chamar isso de GO, GO BG para game over background. Vou criar um nó de controle aqui e chamá-lo de fim de jogo. Para que eu possa
facilitar o acesso mais tarde. Mova meu plano de fundo para dentro dele. E então o que
vamos ser capazes de fazer é apenas mostrar ou esconder o jogo
inteiro na tela. Tudo bem, então o que precisamos aqui, então precisamos de um rótulo para
que possamos mostrar algum texto. Este texto só vai
dizer M sobre certeza, rótulos em cima do nosso plano de fundo. E vamos ver. Então, qualquer coisa que possamos
substituir aqui. Não, tudo parece tão bom quanto podemos fazer
sem trazer fontes
personalizadas para ele. Então diga GameOver, diga imposto geográfico. E a última coisa que vamos
trazer é um botão. E este botão dirá tentar novamente. Tudo bem, agora
temos nossos livros. Temos todos os nossos
elementos, você, temos um pouco de
fundo para mostrar que algo é diferente. Temos nosso texto informando
que os jogadores terminaram o jogo e temos um
botão de repetição. Agora podemos colocar. Então, agora tudo o que temos
que fazer é mostrar ou esconder isso da vista. E para isso, podemos
entrar em, acessar nossa GUI. E o que vai ser muito importante para nós é o modo de
pausa aqui. Agora, isso está configurado para herdar, o que significa que se todo o
resto parar ou a GUI parar
e se nosso Dewey parar, ou o jogo sobre
a tela não vai funcionar. Então, queremos definir
isso para processar
para que, quando pausarmos a árvore, indiscutivelmente e todos os
seus filhos aqui, continuemos trabalhando. Tudo bem, então vamos dar uma
olhada no nosso roteiro e diremos para escrever uma
função chamada ele. E para isso,
vamos começar nosso GameOver. Observe aqui. Isso é
visível igual a verdadeiro? E quando nosso jogador morrer, veja onde isso está bem aqui. Grátis. Ross vai
ligar para o grupo GUI. Obviamente, não precisamos de
argumentos para isso. Vamos chamar o grupo gooey. E eu já esqueci fim
do jogo com um
sublinhado. Copie isso. Portanto, não há erros de digitação. Você vai. Na verdade, agora acionamos
nosso GameOver quando perdemos. Vamos em frente e dar uma olhada. Patrocínio de navios cidadãos. Aparentemente, todos estão
seguindo o mesmo caminho. Nós vamos. OK. Tudo bem,
agora temos dois pontos de saúde. Um. Este próximo deve
acionar nosso jogo. Sobre. Aqui vamos nós. Então, se você não quiser pausar a cena e quiser continuar vendo seus inimigos
surgirem e atirando. Você certamente pode parar
essa parte aqui. O que vou
mostrar como você também pode pausar a tela. Então, dentro do nosso roteiro de jogador, pouco antes de liberá-lo, depois de chamarmos
o jogo de supervisionado, diremos que
árvore é igual a verdade. E se
tentássemos isso agora,
veremos que tudo faz uma pausa. Quando morremos. Lá vamos nós. Então, se você quiser ter
tudo pausado, se quiser fazer uma pausa
na tela quando terminarmos um jogo assim. É assim que podemos fazer isso. Se você não quiser ter isso, basta omitir a tela
ou a linha de código. E agora precisamos do nosso
botão de repetição aqui para funcionar. Então, vamos em frente e ligar nosso botão de repetição com o sinal de
mama em nossa GUI. E quando isso falhar, vamos dizer para obter
três moedas de recarga. Agora, o que isso vai
fazer é que definitivamente vai recarregar
a
falta de justiça. Se fôssemos para SF, apertamos o botão play
como acabamos de fazer. Vamos ver, mais 1231 tiros
e seremos atingidos com ele. Veja GameOver,
tudo está pausado. E clicamos em tentar novamente. E vemos que ele recarrega, mas tudo ainda está pausado. Precisamos despausar a árvore agora, agora que ela foi recarregada. Então, depois de recarregarmos, a cena faria a mesma coisa
que acabamos de conseguir uma árvore. E faça uma pausa, e
definiremos isso como falso. Então, agora não só
será reiniciado, mas eu serei reiniciado e poderemos começar a
jogar imediatamente. Novamente. Não vamos ter tudo que não
vai ser congelado. Vá em frente e dê uma olhada. Precisamos de mais um golpe. Aqui vamos nós. Veio aqui. Você pode tentar novamente? E agora podemos continuar jogando
um pouco mais. Lá vamos nós. Agora temos uma
cena de fim de jogo, jogo sobre tela. Agora podemos, isso nos dá
a opção de reiniciar um jogo sem precisar
fechar e reabrir nosso programa.