Criando um atirador de espaços em Godot | Michael Mcguire | Skillshare

Velocidade de reprodução


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Criando um atirador de espaços em Godot

teacher avatar Michael Mcguire, Author | Programmer

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      Introdução

      0:27

    • 2.

      Onde baixar Godot

      1:19

    • 3.

      Configuração de projetos

      2:31

    • 4.

      Fundo de rolagem

      13:33

    • 5.

      Multiplicador de janelas

      4:36

    • 6.

      Configuração do jogador

      4:27

    • 7.

      Movimento de jogadores

      11:06

    • 8.

      Animação de jogadores

      9:56

    • 9.

      Movimento diagonal

      3:23

    • 10.

      Barreiras de jogos

      4:57

    • 11.

      Capacidade de tiro

      16:46

    • 12.

      Criando energia

      2:38

    • 13.

      Animação de energia

      6:03

    • 14.

      Poder o Spawner

      17:56

    • 15.

      Ativação de energia

      15:43

    • 16.

      Proteção

      11:23

    • 17.

      Multi tiro

      6:59

    • 18.

      Pequenas mudanças

      2:26

    • 19.

      Configuração de inimigos

      5:09

    • 20.

      Tiro de inimigos

      16:37

    • 21.

      Vazamento de memória

      6:13

    • 22.

      Movimento vertical

      3:40

    • 23.

      Enemy Spawner

      12:01

    • 24.

      Bala

      5:58

    • 25.

      Danos de saúde e proteção

      6:53

    • 26.

      Ganho de saúde

      3:36

    • 27.

      Pare de atirar um ao outro

      5:01

    • 28.

      Animações de geração

      4:46

    • 29.

      Criação de IU

      8:41

    • 30.

      Atualizando a interface

      10:32

    • 31.

      Explosão de partículas

      12:12

    • 32.

      Jogo

      7:41

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

74

Estudantes

1

Projetos

Sobre este curso

Aprenda a criar jogos no mecanismo de jogo Godot usando uma linguagem de programação semelhante a python,

GDScript.In curso, vamos criar um jogo de tiro espacial que é multiplataforma para MacOS, Windows, Linux, Android, IOS ou até mesmo incorporar em um

browser.While na sua jornada de desenvolvimento de jogos, você vai ganhar habilidades e habilidade para criar o tiro espacial que você quer.

****Se você não tem experiência em codificação ou quer se familiarizar com o idioma, meu curso sobre aprender o idioma do GDScript é recomendado para ajudar pelo menos aprender terminologia e estrutura básica de code


vai aprender:

  • As camadas e máscaras

  • Para criar lacunas

  • Use grupos

  • Roteiros e objetos reutilizáveis

  • Gestão de inventário

  • Importação de ativos com configurações diferentes

  • A importância da organização de arquivos

    E muito mais...


    ****Se você não tem experiência em codificação ou quer se familiarizar com o idioma, meu curso sobre aprender o idioma do GDScript é recomendado para ajudar pelo menos aprender terminologia e estrutura básica de

    code fornece um conjunto enorme de ferramentas comuns, para que você possa apenas se concentrar em fazer seu jogo sem reinventar o volante.

    Godot é completamente livre e de código aberto sob a licença MIT muito permissiva. Sem cordas anexadas, sem royalties O seu jogo é seu, até a última linha de código do motor.

Conheça seu professor

Teacher Profile Image

Michael Mcguire

Author | Programmer

Professor
Level: All Levels

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

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.