Principiante en Roblox y Lua: comenzar a hacer juegos con Roblox Studio | Kaupenjoe (Nico) | Skillshare
Pesquisar

Playback Speed


1.0x


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

Roblox e Lua para iniciantes: comece a criar jogos com o Roblox Studio

teacher avatar Kaupenjoe (Nico), CS Student, Nerd and Educator

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.

      Introduction to my Roblox Class

      0:45

    • 2.

      Overview of the Class

      1:12

    • 3.

      (Lua) Installing Roblox Studio

      3:10

    • 4.

      (Lua) Variable Types in Lua

      6:31

    • 5.

      (Lua) Output & Comments

      7:37

    • 6.

      (Lua) Math Operations

      10:54

    • 7.

      (Lua) Relational & Logical Operations

      11:15

    • 8.

      (Lua) If and Else Statements

      9:50

    • 9.

      (Lua) Local Variables

      4:07

    • 10.

      (Lua) String Operations

      7:47

    • 11.

      (Lua) Loops in Lua

      8:46

    • 12.

      (Lua) Functions in Lua

      4:50

    • 13.

      (Lua) Tables in Lua

      10:50

    • 14.

      (Lua) The Math Library in Lua

      8:11

    • 15.

      (Roblox) Roblox Studio Explained

      6:42

    • 16.

      (Roblox) Reference a Part

      7:00

    • 17.

      (Roblox) Types of Scripts

      7:25

    • 18.

      (Roblox) Properties Overview

      9:15

    • 19.

      (Roblox) Vector3 and Position

      7:31

    • 20.

      (Roblox) The Wait-Function

      2:54

    • 21.

      (Roblox) Basic Part Movement

      3:18

    • 22.

      (Roblox) The Touched Event

      7:43

    • 23.

      (Roblox) Creating Instances from Scripts

      6:29

    • 24.

      (Roblox) Click Detector

      6:22

    • 25.

      (Roblox) Applying Forces

      9:08

    • 26.

      (Roblox) Constraints

      8:14

    • 27.

      (Roblox) Spawn Points

      3:36

    • 28.

      (Roblox) Player vs Character

      3:12

    • 29.

      (Roblox) Saving Variables on Player

      5:21

    • 30.

      (Roblox) Leaderboard with Leaderstats

      10:01

    • 31.

      (Roblox) Collectable Parts

      15:27

    • 32.

      (Roblox) Adding Trails to the Player

      7:47

    • 33.

      (Roblox) Three Types of GUIs

      10:38

    • 34.

      (Roblox) API References

      3:13

    • 35.

      (Roblox) Introduction and how this Section is build

      1:04

    • 36.

      (Roblox) Modelling the Obby

      27:42

    • 37.

      (Roblox) Adding Checkpoints to the Obby

      5:47

    • 38.

      (Roblox) Adding a Leaderboard with Leaderstats

      9:34

    • 39.

      (Roblox) Adding Disappearing Stairs to the Obby

      11:33

    • 40.

      (Roblox) Adding Moving Parts to the Obby

      11:41

    • 41.

      (Roblox) Additional Ideas for the Obby

      2:31

    • 42.

      (Roblox) Publishing your Game

      6:45

    • 43.

      (Roblox) Add Pictures to your GUI

      4:46

    • 44.

      (Roblox) Storing Player Data with DataStoreService

      22:40

    • 45.

      (Roblox) Multiple Places in a Single Game

      2:38

    • 46.

      (Roblox) Teleport between different Places

      4:42

    • 47.

      (Roblox) Where to go from here

      1:27

  • --
  • Beginner level
  • Intermediate level
  • Advanced level
  • All levels

Community Generated

The level is determined by a majority opinion of students who have reviewed this class. The teacher's recommendation is shown until at least 5 student responses are collected.

2,610

Students

3

Projects

Sobre este curso

Você sempre quis criar seus próprios jogos, mas não sabia por onde começar? Este é exatamente o curso que você precisa! Atualizado para 2023

Neste curso novato Roblox e Lua você vai aprender o básico da linguagem Lua e o desenvolvimento de jogos com o Roblox Studio. Nenhuma experiência é necessária para aprender os entraves e saídas de fazer Jogos com o Roblox Studio.

Este curso é acessível para iniciantes completos. Mesmo que você nunca tenha programado em sua vida. O conhecimento básico do Roblox seria vantajoso, mas não é necessário.

Primeiro, você aprenderá Lua, então vamos passar por conceitos básicos do Desenvolvimento de jogos Roblox e como parte do curso, você até fará seu primeiro jogo!

Todo o código fonte será disponibilizado para que você possa acompanhar tudo o que faço nas palestras.

Se você tiver alguma dúvida ou sugestão, não hesite em contactar-me aqui. Fico feliz em ajudá-lo a aprender a fazer Jogos com o Roblox.

Meet Your Teacher

Teacher Profile Image

Kaupenjoe (Nico)

CS Student, Nerd and Educator

Teacher

I am Nico - also known as Kaupenjoe - I have a Master's Degree in Computer Science and teach Game Development through many different classes. Mid-2020, when I became a bit disillusioned with my job, I set my sights to something different. Multiple people have previously told me I was good at teaching things.

With some of my prior YouTube Video making knowledge I was able to make my first courses. The Minecraft Courses in particular made a huge impact on students and myself and allowed me to teach full-time with courses and other supplementary methods.

I hope you will also join me and allow me to help you learn Programming, Modding or Game Development. As a hobby, side-hustle or as a promising career, it is an amazing and fulfilling field and I'm so happy to have y... See full profile

Level: Beginner

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 ao meu curso Roblox: Olá, eu sou Nico, também conhecido como Calvin draw, e bem-vindo à minha aula para iniciantes sobre scripts de obstáculos aqui no Skillshare. Nesta aula, você aprenderá seus primeiros passos na criação de jogos com o Roblox. Até mesmo iniciantes são bem-vindos aqui, pois há uma introdução de Lua incluída nesta aula. Depois de se familiarizar com Lua, veremos alguns conceitos básicos do Roblox como detectores de cliques, mudança de posição e o evento Touched. E, claro, muito mais equipado com esse conhecimento. Em seguida, você continuará fazendo seu projeto. Seu primeiro jogo ONE, que será um RB. Você pode usar tudo o que aprendeu e muito mais, deixe sua criatividade correr solta. No final das contas, haverá até alguns tópicos intermediários adicionais que também serão muito úteis para a criação de jogos de Romanov. Então, o que você está esperando para matricular nesta aula agora e começar os primeiros passos para criar jogos incríveis e Roblox. Te vejo na primeira aula. 2. Visão geral do curso: Tudo bem, bem-vindo aos núcleos Roblox para iniciantes. E esta será uma pequena visão geral do que você pode esperar neste curso. Em primeiro lugar, há uma introdução baixa incluída neste curso, que será muito, muito útil. Então, se você nunca criou nenhum script em Lua, eu recomendo fortemente que você passe por isso. Isso vai te poupar horas de dor de cabeça porque você não conseguirá criar jogos adequados e Roblox, se você não conhece pelo menos um pouco de loop após loop, falaremos sobre o Roblox Studio. Vamos falar sobre referenciar partes, os diferentes tipos de scripts. Vamos analisar alguns eventos, algumas funções ou adicionar movimento. Vamos até mesmo dar uma olhada em um pouco de força e restrições quando eles falarem sobre a diferença entre jogadores e personagens, vamos criar uma tabela de classificação com peças colecionáveis, adicionando uma trilha ao jogador e mais algumas coisas. Depois de terminarmos o básico, vamos criar um jogo personalizado que será um OB, e isso também será realmente incrível. Depois do RB, também tenho alguns tópicos intermediários que abordaremos, como publicar o jogo, adicionar imagens de GUI, armazenar os dados com um serviço de armazenamento de dados e mais algumas coisas que também podem ser muito úteis durante o curso. Para cada palestra, você receberá um arquivo RB Excel. Então, basicamente, você não obteve um resumo de cada palestra em termos dos scripts que estamos escrevendo Roblox tem algumas ferramentas muito poderosas para criar. Então, espero que você aproveite a jornada de criar seu primeiro jogo Roblox. Te vejo na próxima palestra. Então, sim. 3. (Lua) Instalando o Roblox Studio: Tudo bem, bem-vindo ao curso Roblox. E nesta primeira palestra, instalaremos o Roblox Studio em seu PC. Se você tiver o roadblocks Player instalado em teoria, Roblox Studio também deve ser instalado. No entanto, se esse não for o caso, você pode navegar até roblox.com barra create e clicar em começar a criar. Em seguida, ele verificará se você tem o Roblox Studio instalado. Em seguida, ele deve ter um pop-up se não for interrompido para que você possa iniciá-lo. E se você ainda não o instalou, basta baixar o estúdio. Este é apenas um arquivo EXE e, se você começar, instalará obstáculos no seu PC como qualquer outro programa. Se você não estiver logado, então você estará lendo com algo assim. Então você acabou de inserir seu nome de usuário sua senha e login, o login e então o Roblox Studio vai começar. Vamos apenas maximizar isso. E você pode ver que, no meu caso, eu já tenho alguns jogos recentes, certo? Eu já tenho alguns arquivos, arquivos locais e até arquivos online para você. Provavelmente está vazio em meus jogos. No entanto, você deve ter seu lugar. Sempre existe uma coisa e, com o novo , você pode começar um novo jogo. Vamos criar um novo jogo. Vamos escolher a placa base aqui. E depois de carregado, você pode ver que agora basicamente criou um novo local. Muitas coisas estão surgindo. Eu geralmente fecho a caixa de ferramentas e o editor de terreno aqui. E eu também faço a direita e um pouco maior. E eu também vou para Exibir e ligo a saída porque isso é realmente muito importante. Isso nos permite ver certos resultados e veremos isso em breve nas próximas palestras. Uma coisa que você notou é que tem esse arquivo com uma pequena nuvem aqui. E se eu pressionar Control S, você pode ver que ele quer salvar meu jogo, mas quer salvá-lo na Roblox Cloud por enquanto. O que eu sugiro é não fazer isso. O que eu recomendo que você faça é acessar Arquivo e salvar em arquivo ou salvar arquivo, pois isso realmente faz com que você tenha um arquivo RB Excel em seu disco rígido local que é, na verdade, um pouco melhor, especialmente se, por exemplo você tiver um problema, você pode simplesmente compartilhar seu arquivo OB Excel e então eu posso dar uma olhada nele, por exemplo, e você também terá acesso, como você provavelmente pode ver todos os arquivos OBX que são gerados por meio deste curso. Então, cada uma das palestras tem um arquivo exe RB onde todos os ativos, todos os scripts que estamos escrevendo, tudo está lá. E você pode basicamente ver cada instantâneo. No momento, embora eu tenha isso salvo no disco rígido local, ainda tenho a nuvem. Só queremos fechar este lugar e eles abrirão o arquivo a partir do arquivo. E então vamos abrir o arquivo que acabamos de criar. E você pode ver agora que este é absolutamente apenas nosso arquivo local. E se pressionássemos Control S, e ele realmente fosse salvo em nosso disco rígido novamente, muito legal. Nas próximas palestras, primeiro faremos uma pequena introdução para familiarizá-lo com a linguagem de programação Lua. Para isso, na verdade, precisamos apenas do Explorer e principalmente do serviço de script do servidor, bem como do botão play. Se pressionássemos o botão play, você pode ver que, de repente, nosso modo de jogo carrega e nós realmente entraríamos neste jogo. Agora eu posso me mover e pular. Então, isso está basicamente lá para você testar seu jogo. Mas, como eu disse, muitos desses botões não falarão sobre elas na introdução do banheiro. Em primeiro lugar, eu gostaria que você tivesse uma base muito, muito sólida, Senhor, isso é extremamente importante. E então vamos fazer coisas absolutamente incríveis. E isso vai ser para esta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo . Nos vemos na próxima palestra. Então, sim. 4. (Lua) Tipos variáveis em Lua: Tudo bem, então vamos continuar com a introdução de Lula aqui para o curso Roblox. E nesta palestra, falaremos sobre variáveis. Agora, as variáveis são basicamente armazenadas para determinados dados. Mas o que tudo isso significa? Certo, nós vimos um pouco das coisas ao redor aqui. E agora vamos entrar e realmente criar nosso primeiro roteiro e depois dar uma olhada nele. Vamos criá-los no serviço de script do servidor aqui. Então, vamos clicar no sinal de mais e você poderá ver que ele já é usado com frequência, diz o script. Normalmente, quando você está criando algo, você quer aqueles que não estão acinzentados, o material acinzentado é basicamente, uh, geralmente você não quer criar esses tipos de peças e coisas dentro desse contêiner, por assim dizer. Mas queremos criar um roteiro, então vamos fazer isso. Ele abrirá imediatamente o script. Você pode ampliar a arte aqui pressionando Control e , em seguida, rolando para cima com a roda do mouse, você torna a menor rolando para baixo. Então é assim que você pode ampliar aqui. Isso também é muito importante. Outro script aqui, na verdade vou renomear isso. Há algumas maneiras de fazer isso. Clique com o botão direito do mouse e você pode ir para Renomear. Você também pode simplesmente pressionar F2 e, em seguida, ele solicitará que você renomeie isso. Ou você pode ir, se você tiver as propriedades aqui embaixo, você pode simplesmente acessar o script aqui e depois chamar isso. Vamos chamar isso de variáveis de 01 traço. Porque esta é, bem, esta é a primeira palestra, por assim dizer, em que estamos realmente entrando nisso. E vamos chamar isso de variáveis. Aí está. Agora, o que é muito importante aqui é que ela já preenche essa coisa em particular com uma impressão aqui. Então, se não fizermos nada, vou deletar o que eu tinha antes. Se não fizermos nada e apertarmos o play, certo? O que você descobre é que, bem, nada acontece porque, no momento não temos nosso console. Na verdade, precisamos habilitar isso ou aquilo. Vamos para Exibir e queremos ir para a saída. Portanto, esta é a nossa saída e agora você pode ver helloworld de, enviado do servidor. Vamos falar sobre isso a partir desse script com um nome, oh, variáveis de um traço. E a partir da linha um, se voltarmos para a guia aqui onde temos nosso roteiro, podemos ver que esta é a primeira linha, linda. Agora podemos parar com isso e prosseguir. Então, vou readicionar meu comentário aqui. Vamos falar um pouco mais sobre comentários e coisas assim. Eu só quero isso no topo do script específico, só para que saibamos que agora estamos no script de variáveis zero um. Então, a impressão com a qual você não se importa. Então, vamos apenas selecioná-lo, pressione Delete para excluí-lo. E vamos falar sobre tipos de variáveis. Agora, como uma visão geral de alto nível, queremos variáveis porque queremos salvar determinados dados. Então, talvez queiramos salvar um número. Isso pode ser uma pontuação alta, saúde, montaria, qualquer coisa assim. Então, vamos dizer que x é igual a dez. E agora, neste caso, toda vez que eu me refiro a x, isso vai representar um número. Nesse caso, isso representa um número inteiro. Um número inteiro é apenas um número inteiro, então será dois ou cinco, ou -27. Está tudo bem. Mas se quisermos algo como 20,8, enquanto isso agora é um flutuador, eu vou fazer isso 20,8, isso é um flutuador. Então, ao declarar isso, certo, quando criamos variáveis, basicamente queremos dizer o nome das variáveis. Então, neste caso, x então é igual. Esse é o operador de atribuição, basicamente o que significa que estamos atribuindo esse valor a essa variável. Se tudo isso é muito novo para você, não se preocupe. Enquanto estiver trabalhando com isso, você será capaz de entender cada vez mais o que tudo isso significa por enquanto. Basicamente, você pode pensar nisso como se x fosse apenas uma espécie de espaço reservado que colocamos em prática. E então, quando o código é executado corretamente, quando o script é executado, então pensamos, ok, com x, eles realmente significam dez. Embora estejamos analisando isso no futuro com um pouco mais de detalhes. Vou imprimir isso para que você possa ver se temos uma impressão e depois um parêntese e colocamos x dentro dela, certo? E então o parêntese final, o que isso vai gerar isso, a questão é que isso vai gerar X é como a letra X vai produzir um dez. Bem, vamos jogar e você verá que ela gera dez porque estamos gerando o valor que está dentro da variável x. Uma boa metáfora que muitas pessoas usam é que variáveis são basicamente apenas compartimentos e contêm algum tipo de dado. Existe um tipo especial chamado nil. Esse é um tipo especial de valor e basicamente representa a ausência de qualquer valor, também chamado de nulo em certas linguagens de programação. Nesse caso, é chamado de nulo. Isso não significa que isso seja zero. Isso significa que não é nada além de outro tipo de variável, ou os booleanos. Agora, os booleanos podem ser verdadeiros ou falsos, às vezes também representados com um ou zero, mas são escritos assim. Portanto, isso é um booleano e eles podem ser verdadeiros ou falsos. Agora, como é isso? Bem, por exemplo, podemos dizer que é um bom curso e, é claro, esperamos que isso seja igual a verdade. E você pode ver que isso também muda de cor. Então, basicamente, essas são certas palavras-chave ou certos tipos de variáveis. Eles podem basicamente mudar a cor da fonte aqui e até mesmo comercializá-la como negrito. Podemos então ter outro booleano, por exemplo, está aterrado. Isso é algo um pouco mais próximo de algo como um jogo. E isso pode ser igual a falso. E você pode ver que às vezes também sugere coisas para nós. Então, enquanto digitamos, certo, o que você pode ver, ele já está ordenado e sugere: Ah, isso deveria ser falso e você pode pressionar a tecla tab para preenchê-lo automaticamente. Por fim, também temos cordas. Agora falaremos sobre isso em uma palestra futura com um pouco mais de detalhes. Mas, basicamente, sequências de caracteres são como palavras e estão sempre cercadas por essas aspas. Então, podemos, por exemplo, dizer HelloWorld. E você pode ver, tudo bem, embora eu tenha um espaço aqui porque as aspas o cercam, podemos salvar a palavra inteira. Você pode se deparar com o fato de que talvez eu realmente queira várias linhas. Essas seriam muitas palavras, por exemplo, e a maneira de fazer isso é criar colchetes abertos e ver os colchetes de fechamento geralmente serem gerados automaticamente. E aqui você pode simplesmente digitar olá, olá estudante e depois vírgula. E então você pode ver, eu posso continuar escrevendo isso. Estou escrevendo porque é divertido ter várias linhas de saudações. Você vai, mas vamos agora várias linhas. E essa é a ideia geral aqui, certo? Então, para resumir aqui no final, à direita, as variáveis em geral, nossos conjuntos de dados que contêm alguns dados, e esses podem ter valores diferentes e podem ser tipos de dados diferentes. Ele pode conter um número normal, que é um número inteiro. Ele pode conter números flutuantes, que são números que têm um ponto decimal. Também pode ser nu, que é a ausência de qualquer valor. Você pode ter booleanos e também pode ter pontos fortes nesta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo . Nos vemos na próxima palestra. Então, sim. 5. (Lua) Saída e comentários: Tudo bem, vamos continuar a introdução de Lula aqui para o curso de bloqueios de estradas. E nesta palestra, veremos os comentários de saída e um pouco de como ler scripts para começarmos novamente No serviço de scripts do servidor, clicaremos na pequena vantagem aqui: criar um novo script. E vamos renomear isso pressionando a tecla F2. E vamos renomear isso para comentários de saída de traços O2. Que tal aquele? Aí está. E então vamos ver o que podemos fazer. Bem, podemos realmente manter essa impressão digital. Na verdade, vou mover isso para baixo. E aqui em cima, vamos criar nosso comentário novamente. Então, isso vai ser saída e comentários. Linda. Aí está. Então, já vimos essa impressão antes e ela produz algo aqui embaixo na saída. Se você não tiver isso novamente, Exibir e habilite-o aqui. Então você pode ver que isso agora está ativado porque tem uma espécie de fundo de botão. E se não estiver habilitado, não tem isso. Então, é basicamente assim que você habilita isso. E aí está. Se tivermos isso dentro de um script e clicarmos em play , o que você verá na saída e verá helloworld do servidor. Vamos explicar isso daqui a pouco. E então a saída de O2 comenta três. Então, mais uma vez, isso é porque isso estava na terceira linha. Vamos parar com isso e continuar com o roteiro. Mas isso já é muito legal. E da última vez falamos sobre a ideia de variáveis. E se tivermos uma variável de saúde igual a 1.000? Mais uma vez, aqui você pode ver que não precisa dos espaços entre isso. Portanto, os espaços são particularmente importantes, como em vez de números, porque agora os números não estão mais conectados entre si entre certas operações, você pode realmente colocar quantos espaços quiser. Eu geralmente não recomendo isso. Um espaço ou zero espaços é basicamente a forma preferida de tornar isso legível. Mas sim, você pode colocar quantos espaços quiser. E agora, em vez de exibir HelloWorld, o que podemos dizer é a saúde do jogador, existe saúde. E então a pergunta se torna, ok, como podemos, como podemos então produzir esses milhares? Claro que poderíamos dizer, bem, são 1.000, isso é ótimo. Mas se agora mudarmos isso para 500 porque talvez tenhamos sido atingidos ou algo assim, isso ainda dirá 1.000. Então, isso não funciona como gostaríamos se mantivéssemos isso em 1.000. E na verdade dizemos, bem, saúde, certo? E então é como, obviamente, vai pegar essa variável aqui. Bem, vamos ver o que acontece. Na verdade, isso não acontece. Diz apenas que a saúde do jogador é saúde, o que obviamente não é bem o que tínhamos em mente aqui. O que queremos é o valor dessa variável e não o nome. Agora, se estiver dentro de uma corda. Então, falamos sobre isso antes, dentro das aspas, então isso é lido como uma palavra normal. Não é uma palavra-chave e não é vermelha como variável. Mas podemos realmente usar as variáveis. Isso funciona. Há duas maneiras de fazer isso. Nós podemos fazer uma coluna aqui. Portanto, isso é específico para a função de impressão nesse caso. Então, depois da primeira string, certo, podemos fazer uma vírgula e depois podemos dizer saúde. Você pode ver que ele realmente sugeriu isso para nós. E então você só pressiona a tecla Tab para completar automaticamente. Em seguida, colocamos outra vírgula e, em seguida, qualquer coisa depois disso também será exibida. Então, podemos dizer HP, por exemplo, e agora o que vai resultar é a saúde do jogador, e então qualquer montaria aqui é salva dentro da variável de saúde e, em seguida, HP logo depois disso. Então, vamos jogar e ver o que ele produz. E você pode ver que a saúde do jogador é de 1.000 HP. Perfeito. Agora, na verdade, há dois espaços lá. Então, o que podemos realmente fazer é parar com isso e podemos até livrar disso, porque agora, neste caso, isso realmente adiciona um espaço. Essa não é a única maneira de fazer isso. Podemos simplesmente copiar esta linha. Então, estou apenas selecionando, pressionando Control C e depois Control V para colá-lo novamente. E em vez de fazer isso, também podemos fazer ponto ponto e depois outro ponto aqui. E o que isso vai fazer, isso, isso vai concatenar essa variável com a string. Então, isso pode ser um pouco mais complicado agora. Mas não se preocupe, falaremos sobre isso um pouco mais em uma palestra futura. E também não deveria ser muito insano. Basicamente, estamos apenas dizendo que isso é uma sequência de caracteres. Essa é uma sequência de caracteres. E embora seja uma variável, na verdade, só queríamos adicionar isso à nossa string específica. Então, ele vai ter quase a mesma saída desta. Mas vamos ver o que acontece aqui. Então, se produzirmos isso, você pode realmente ver que não há espaço no meio porque estamos literalmente pegando a última coisa que está aqui, certo? Ou seja, e então pegamos qualquer que seja essa variável, qualquer que seja o valor real dessa variável, estamos convertendo-a em uma string e, em seguida colocando-a bem ao lado do S neste caso. Então, aqui queremos um espaço. Então, se pararmos com isso e começarmos de novo, você poderá ver que a saída será exatamente a mesma nesse caso, exceto no HP. Porque mais uma vez, venha aqui, isso gera um espaço automaticamente. Não tem nada a ver com esses espaços, aliás , não se confunda com isso. Eu posso simplesmente executar isso. Então, esses espaços não têm nada a ver com isso. Só tem a ver com a forma como a coisa toda é basicamente interpretada, certo? Então, essas são duas formas de produzir aqui. Nesse caso, também é um texto com uma variável, que pode ser extremamente útil, não apenas para fins de jogo, mas também para fins de depuração. Depuração basicamente se refere à tentativa de encontrar problemas ou bugs em seus scripts. E isso às vezes pode ajudar muito. Por fim, também queremos falar sobre bens comuns, onde você já viu os comentários com os dois traços. Então, este é basicamente um comentário de uma linha que eu posso fazer. Eu posso apenas dizer algumas coisas interessantes, certo? Então, isso pode ser para explicar coisas para você ou outras pessoas lerem seus roteiros ou coisas do tipo. Agora, eles só funcionarão para uma linha. Então, se eu fizer outra linha aqui, você pode ver, de repente, que somos todos uma espécie de comentário. E você também não precisa adicionar os traços aqui no final. Isso é algo pessoal que eu faço, então isso não é necessário. Você também pode mantê-lo assim e tudo funcionará totalmente bem. há uma peculiaridade pessoal Agora, há uma peculiaridade pessoal em que você realmente precisa adicionar mais coisas para comentários de várias linhas. Portanto, ainda podemos fazer os dois traços e, em seguida, podemos abrir os colchetes. Mais uma vez, você pode ver os colchetes de fechamento gerados automaticamente. E então, dentro daqui, temos um comentário de várias linhas. Aí está. Isso é incrível. Aí está. Então você pode ver que agora é um comentário de várias linhas e qualquer coisa entre os colchetes aqui é basicamente tudo o que vamos ser interpretados como um comentário. Você pode até mesmo fechar isso com a pequena seta aqui. Então isso vai ser um pouco melhor. Você pode até mesmo fazer isso. E então ele vai fechá-lo. Vai fechá-lo desse jeito. Isso é interessante. Ok, bem, aí está. Essa é uma maneira muito interessante de fazer isso. Esse é um comentário de várias linhas. Vimos algo semelhante em que examinaremos o verso das variáveis. Vimos a sequência de várias linhas aqui com a mesma ideia quando, neste caso será apenas com comentários. Mas, como já expliquei, nota importante, é claro todos esses scripts estão sempre disponíveis para download. Portanto, os scripts estão disponíveis, assim como o arquivo RB XL para cada palestra diferente está sempre disponível para download. Então você pode basicamente verificar tudo, ver um por um. Então, se você tiver uma saída diferente ou algo parecido, você sempre pode verificar o código, certo? Resumindo, mais uma vez, podemos ver que a função de impressão é uma forma de gerar algo. Normalmente, você deseja gerar uma string, certo? Então, se você escrever impresso, verá que isso já sugere isso, e você pode pressionar a tecla Tab dentro dela começar a digitar. Agora, normalmente você deseja digitar uma string. Então você quer começar com as aspas e então você pode simplesmente dizer as coisas lá dentro. E isso será exibido dentro da janela de saída. E depois também há comentários. Comentários normais começam com traço, traço e, em seguida, o que você quiser escrever, são comentários de uma linha. Comentários de várias linhas funcionam com um traço, traço e, em seguida, os colchetes abertos. Bem, isso vai ser o fim desta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo . Nos vemos na próxima palestra. Então, sim. 6. (Lua) Operações de matemática: Tudo bem, bem-vindo de volta à introdução do banheiro aqui para o curso Roblox. E nesta palestra, vamos dar uma olhada nas operações matemáticas. Então, para isso, mais uma vez, nos servidores de scripts do servidor, criaremos um novo script e o renomearemos para A3 dash Maths. Porque por que não? Aí está. Agora, vamos então adicionar nosso pequeno comentário interessante aqui, operações matemáticas. E vamos ver quais tipos de operações matemáticas existem. Bem, claro que há adição, essa é a primeira e a ideia é a seguinte, certo? Portanto, podemos ter uma soma e isso pode ser, por exemplo, 20. Então, isso vai ser mais uma vez uma variável. Nosso 20 é o valor e alguns é o nome da variável. E agora o que podemos fazer é dizer, bem, que alguns deveriam realmente ser 20 mais 50, por exemplo, agora isso deveria ser 70. Então, vamos dar uma olhada. Então, se eu fizer outra impressão aqui, e eu vou dizer que soma é, vamos usar essa. Então, vamos dizer soma. Aí está. Então, agora ele vai gerar a variável soma. Agora, primeiro, na verdade , a soma é igual a 20. Na verdade, vamos mudar isso para dez. Então, serão 60 porque isso vai demonstrar isso um pouco melhor. Então, primeiro, vamos dizer que a soma é igual a 20. Dizemos que a soma é igual a dez mais 50. Então, o que vai sair e ouvir, alguns de vocês podem dizer, bem, vai ser 20 mais dez mais 50 ou algo parecido. Vamos jogar e ver o que acontece. Você pode ver que alguns são 60 porque a última coisa que acontece aqui é que a variável recebe o valor de dez mais cinco. Portanto, esse é simplesmente ignorado ou sobrescrito porque o código é sempre avaliado de cima para baixo. Então, começamos na linha um e ela vai passar , passar e passar. E então, nossa soma agora é 20, e na próxima linha, nossa soma agora é 60 porque eu basicamente calculei essa expressão como dez mais 50. Essa é a ideia geral. Eu também posso fazer, ou seja, posso dizer, bem, na verdade, o que eu meio que quero fazer é ter outro. Então, digamos que essa será a segunda soma porque, por que não? E isso é igual à soma mais alguma outra quantia, certo? Então, mais 50 ou mais 150 pode ser o que quisermos. E agora o que isso vai ser? Bem, alguns têm o valor de 20. Então, em teoria, isso deveria ser 20 mais 150, que deveria ser 170. Então, se fizermos isso, podemos ver que alguns são 20. Agora você pode dizer, espere, como estão os 20? Ah, bem, olha isso. Estamos gerando a variável soma e agora a segunda variável de soma. Portanto, sempre há algo que você deve ter em mente. Então, mais uma vez, se eu escrever isso, você pode ver que isso já sugere isso para nós e então podemos simplesmente pressionar a tecla Tab para completar automaticamente. E agora estamos gerando a segunda variável de soma. E agora devemos ver que a soma é 170. Agora você também pode ver todas as outras saídas aqui na saída. Está tudo bem e você pode mantê-lo assim. No entanto, se isso ficar muito confuso para você, basta ir para os outros e simplesmente adicionar comentários aqui a todas as linhas de impressão nos outros scripts, para que você também não tenha as saídas . Portanto, tenha isso em mente. Então isso é adição. Vamos dar uma olhada na subtração agora. Você pode imaginar como isso vai parecer? Bem, vamos fazer a, vamos chamar isso de subtração. E isso é igual a, bem, por exemplo, algo como 25 -50. Isso vai funcionar? Isso vai ser um número negativo. Enquanto isso, quero dizer, vamos ver a impressão correta. E nós vamos dizer que isso vai ser apenas subtração é , e então, mais uma vez, vírgula, e então vamos colocar a subtração mais uma vez, preenchendo automaticamente com a tecla Tab. Vamos deixar isso acontecer e ver o que acontece. E você pode ver que a subtração é menos 25, isso não é absolutamente nenhuma preocupação. Números negativos são totalmente bons. Então isso funciona com números negativos, números não negativos, certo? Também podemos ter 150 -50 e depois será 100. Então isso é muito legal. A próxima coisa é, claro, a multiplicação. Agora essa vai ser a pergunta mole t. Vamos chamar isso de multitarefa, vai ficar bem. Como isso funciona? Bem, isso é feito com uma estrela. Então isso é cinco estrelas, 40 por exemplo e então deveria ser o que deveria ser? 200? Sim, exatamente. Serão 200. Então, isso vai ser multiplicação é, e mais uma vez, basta fazer isso chamado de multi aqui. E isso vai fazer exatamente a mesma coisa. Agora, mais uma vez, o que eu quero dizer aqui, você não precisa colocar espaços no meio. Você pode colocar espaços no meio, mas não precisa. É a mesma ideia quando você coloca os espaços aqui, pois o espaço está aqui. Como a ideia é que agora é um operador de multiplicação que usa dois números inteiros nesse caso, você também pode, é claro, fazer isso. Oh, o que isso vai fazer? Bem, quero dizer, vamos tentar isso. Vamos ver o que acontece cinco vezes 40,5 é 202,5. Isso é absolutamente correto e também funciona. Portanto, você também pode usar números flutuantes. Basicamente, ele faz isso sozinho. Então, isso também é muito legal. Agora, a divisão é a única coisa um pouco mais interessante. A divisão é, obviamente, divisão e isso é igual a, por exemplo, 20/3. Digamos que algo assim. Ok, isso é interessante. Então, vamos fazer a divisão. É, e então vamos chamar isso e ver o que isso nos dá 20/3, eu não sei. Bem, é 6,66, 666666 repetindo até chegar a sete. Então essa é uma ideia degenerada. Portanto, lembre-se disso quando tiver coisas que não se encaixam perfeitamente. Então, 21/3, é claro, seriam sete. Então, se fizermos isso, obteremos apenas sete. Isso é ótimo. Mas se você tiver algo que não seja divisível uniformemente , obterá um número decimal. E isso também é muito importante. Se tentássemos dividir por zero. Isso é algo que você pode ou não ter ouvido antes. Se você somar com zero, bem, você obterá o infinito. Então, isso é uma coisa muito interessante e essa é uma peculiaridade de Lu são mais ou menos, você pode realmente dividir por zero. Você não deveria fazer. Ainda é como se isso fosse algo que na verdade não deveria ser uma coisa. E, nesse caso, você obtém o infinito. Na maioria das linguagens de programação, geralmente você receberá um erro se isso acontecer. Portanto, tenha isso em mente. Normalmente, você quer ter certeza não dividir por zero. Mas há outra coisa que pode ser muito interessante, que é a lei modal, também chamada de resto e essa, certo? Vamos chamar isso de resto. E isso é igual a, digamos, por exemplo, o 20. E então será um sinal de porcentagem e isso imprimirá o restante. O restante é, vamos imprimir o restante e vamos realmente ver o que isso vai ser. E então você verá rapidamente o que isso faz. Na verdade, vamos dividir por três ou como o restante de três. E então você verá que o restante aqui são dois. Portanto, a ideia geral é que basicamente passar pelo processo real de divisão e depois dizer que esse é o restante, eu recomendo também verificar o restante. Isso é uma coisa normal. Eu acho que isso deveria ser ensinado na aula de matemática. Isso deve ser algo que é ensinado na aula de matemática. E, na verdade, pode ser muito, muito importante para certas coisas na programação aqui neste caso, porque se fizéssemos o restante de dois, então 20 O2 modais, essa é uma forma de verificar se um número é par ou ímpar, porque nesse caso é par, certo? Então, se jogarmos isso, obteremos um zero. Então, basicamente, podemos dizer: Ei, se esse número e depois fazemos módulo dois é igual a zero, sabemos que é um número par. E se o fizermos, podemos fazer qualquer número ímpar, o que, neste caso, 21, não importa. Então vamos comprar um. Então, se o restante for zero, então sabemos que, neste caso, se fizermos O2 modal, se o restante for um com modal ou dois aqui, então sabemos que o número, o número original, é um número ímpar. Se for zero, então é um número par de muito interessante. Por último, mas não menos importante, existe algo chamado incremento e decréscimo. Isso basicamente diz que queremos adicionar um a um número específico. Então, por exemplo, podemos ter um número de cinco frios, certo? E então, em outras linguagens de programação, dependendo se você programou antes ou não, você pode fazer coisas como número mais mais ou número menos menos. Agora, o que você verá é que isso não funciona, ok? Podemos apenas comentar isso, certo? Vamos apenas dizer que eles são e então isso vai ser como se não funcionasse porque simplesmente não funciona. É apenas algo que o baixo não nos oferece. No entanto, há coisas que podemos fazer para aumentar ou diminuir esse número. Então, basicamente, podemos dizer que o número é igual a si mesmo mais um. Isso vai pegar qualquer número definido como neste caso cinco e depois adicionar um a ele, certo? Então, mais uma vez, isso não é nada louco, é apenas dizer que o número é igual ao número de mais um. Então, estamos apenas pegando o que quer que seja essa expressão e depois salvando-a novamente em número. Ok, isso é justo. Também podemos ter número mais igual a um. Isso está fazendo exatamente a mesma coisa. É um pouco mais compacto e escrito em uma linha. Essas são exatamente as mesmas coisas que eles fazem, é exatamente a mesma coisa. A razão pela qual você quer conhecer os dois ou já viu os é que algumas pessoas preferem fazer assim. Algumas pessoas preferem fazer isso assim. Então, se você lê os roteiros de outras pessoas, é muito importante ter visto os dois. E então, é claro, a mesma ideia vale para menos neste caso. Agora, você pode até mesmo estender isso e dizer, bem, o que é, o que acontece com isso, certo? Se fizermos vezes iguais, números absolutos, talvez queiramos fazer divisões iguais. Isso funciona? Ou seja, eu nem sei qual será o verão lá, mas o número da costa agora enlouquece. Módulo é igual, na verdade, sim, também podemos fazer isso. Agora, esse eu nunca vi como realmente necessário em nenhum lugar, nunca. Esse aqui. Pode haver certos momentos em que isso possa ser útil, mas sim, maioria das vezes você os usará , talvez esses três. E essas duas são coisas muito específicas que são muito, muito raras. Mas, mais uma vez, ter visto isso pode ser muito importante, certo? Para recapitular, operações matemáticas são exatamente o que dizem na lata, certo? são operações que executam Neste caso, são operações que executam determinadas funções matemáticas, certo? Portanto, some apenas um símbolo de mais, um símbolo de menos para subtração, uma estrela para multiplicação e a barra para divisão. E neste caso também a porcentagem do modelo ou do restante. Então, isso é apenas matemática normal. Agora você pode dizer: por que eu preciso de matemática nisso? Há muitos momentos em que você pode precisar de um pouco de matemática, certo? Portanto, pode ser que você tenha uma arma e depois tenha um certo multiplicador de efeitos para danos, e então o jogador adversário tenha certa armadura. E você quer ter certeza de que a saúde ou o dano foram gerados corretamente, calculados corretamente. É aí que entra toda a adição, subtração, multiplicação, divisão ou isso. E tudo isso vai ser algum tipo de coisa, vai sair no final. Isso vai ser isso, o dano. Então, Nath pode realmente ser muito, muito importante. Agora, esses são, obviamente, apenas os fundamentos da matemática. Mas com eles como blocos de construção, você já pode construir algumas coisas bem legais onde quer que seja para esta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo . Nos vemos na próxima palestra. Então, sim. 7. (Lua) Operações relacionais e lógicas: Tudo bem, bem-vindo de volta à introdução do banheiro aqui para o curso Roblox. E nesta palestra, vamos dar uma olhada em operadores relacionais e lógicos hoje em dia parece muito complicado, mas, mais uma vez, não se preocupe, vamos abordar isso primeiro: criar um novo script no serviço de criar um novo script no script do servidor aqui. E vamos chamá-lo de 04 dash. Vamos chamar isso de lógica relacional. Aí está. E, mais uma vez não precisamos do HelloWorld, onde precisamos de operadores relacionais e lógicos, às vezes também chamados de operações relacionais e lógicas. Qualquer um deles praticamente funciona. Mais uma vez, não se esqueça de comentar a impressão se você não quiser que ela fique completamente cheia de spam na saída. E então vamos pensar sobre isso. Então, o que é um relacional, o que são operadores lógicos? Nós, os relacionais, basicamente, estão analisando dois valores e estão basicamente avaliando a relação entre eles. Então isso seria menor que, maior que menor ou igual, maior ou igual. Também temos iguais e também não iguais. Então, esses são basicamente todos os operadores relacionais e eles produzem um, eles produzem um valor booleano, certo? Então, mais uma vez, isso significa que, se você pensar nos tipos de variáveis, isso é verdadeiro ou falso. Agora, isso não deve ser nada insano aqui. Claro, se eu disser, bem, 20, menor ou igual a 25, só existe, só pode ser verdadeiro ou falso. Não há imprecisão, certo? Não há como um. Se for 50 por cento pequeno, não é disso que estamos falando. Estamos apenas dizendo, ei, isso é menor do que isso, ou isso é igual a isso? E essa é a ideia geral. E operadores lógicos são operadores que usam dois valores booleanos e os avaliarão. Esses são o operador OR final e, nesse caso, o operador NOT é, esses são os mais importantes. Existem alguns outros também. Se você estiver realmente interessado nisso, você pode pesquisar álgebra booleana. Esse é basicamente o termo a ser examinado. E isso basicamente nos deixa um pouco mais envolvidos. Mas, por enquanto, não estamos muito preocupados com isso. Então, quando pensamos sobre isso, podemos dizer um teste, por exemplo, aqui está três, menor que 20. É claro que isso é verdade no nosso caso. Podemos simplesmente imprimir isso, certo? Então, digamos que três é menor que 20? E vamos imprimir isso. Vamos imprimir o teste aqui. Aí está. Mas vamos jogar isso e ver o que acontece. E vai ser impresso como verdadeiro porque são três, na verdade, são menores que 20. Isso é muito interessante, você pode ver isso, avalia essa expressão e torna booleana neste caso verdadeira. Agora também podemos dizer, digamos que testes aqui novamente, tudo bem. Isso é 20 é maior que 200. É claro que isso será falso. E então vamos simplesmente selecionar esse controle de pressão C, vá aqui , pressione Control V para colá-lo novamente. E então estamos apenas mudando isso. É 20 maior do que 200 porque agora estamos dizendo que 2020 é maior que 200, o que obviamente é falso. Vamos deixar isso tocar novamente. E veremos se 20 maior do que 200 é falso. Isso é exatamente certo, porque esse não é o caso. Esses são os exemplos de maiores. E então a mesma ideia se aplica a iguais menores, certo? Então, também será verdade se for igual. E então, se isso fosse igual, certo? Isso agora seria falso. Certo? Deve fazer sentido porque, bem, 20 não é menor que 20 é igual a 20. Se fizéssemos isso, de repente, isso se tornaria realidade novamente. Espero que isso faça sentido aqui neste caso. Agora, quando se trata do operador equals, digamos, por exemplo , que temos uma string, uma que vai ser hello, e depois temos uma string também, que também é chamada de hello. Por que não? Aí está. Em seguida, fazemos uma comparação disso. Por que não comparar? Isso é igual a, e então dizemos que cadeia um igual a dois sinais iguais. Esse é o operador de igualdade relacional que analisa essas duas cadeias de caracteres, certo? E gera um valor booleano. Este é o operador de atribuição, muito, muito fácil de confundir um com o outro. Mas o que você deve entender é que você pode ver que receberá um erro se tiver um único. Então, esse sublinhado vermelho aqui, basicamente, você vê, é como se, oh, isso não fizesse nenhum sentido para mim. Absolutamente não se preocupe. Dois sinais de igual são o operador relacional. Um sinal de igual é o operador de atribuição. Muito, muito importante. Agora imprima, vamos imprimir isso e imprimir a comparação. E devemos obter, em teoria, uma verdade, certo? Então, vamos ter a, a primeira impressão, se essa é verdadeira, a segunda é falsa. E aqui teremos apenas uma norma, apenas uma saída verdadeira. Vamos apenas ver. E vamos ver o que é verdade, absolutamente incrível. Então isso definitivamente funciona. Agora, se eu mudar alguma coisa aqui , até mesmo o invólucro, porque agora eles não são mais exatamente iguais. Então, o que vai acontecer é falso porque, nesse caso, os dois não são iguais porque a caixa é sempre levada em consideração porque esse é um caractere diferente e, portanto, eles não são exatamente iguais. Mas isso seria uma dessas coisas. E não faça isso. Este é apenas um exemplo aqui. Então você, para você meio que entender isso. Isso é mais ou menos o que você faria, certo? Quando você tem uma senha e fica tipo, ok, isso é o que a pessoa tem. Digitei, e esta é a senha que eu armazenei, vermelha. Esses são iguais? E só se for verdade, você vai deixá-los entrar. Agora, não faça isso, não salve senhas como essa. Isso é algo que deve ser feito apenas por pessoas avançadas. Muito, muito, só para você começar a pensar sobre isso, ok, essa é uma daquelas maneiras em que você pode ver uma comparação ser importante. Agora, quando se trata dos operadores lógicos, fica um pouco mais complicado aqui, porque aqui nós realmente queremos pegar vários valores booleanos e colocá-los como se fossem colocados um ao lado do outro. E eles então meio que, você sabe, essa é uma extensão lógica para isso. Então, por exemplo, o que você poderia fazer é, digamos que x é igual à comparação. Então, vai pegar o valor de comparação aqui, que neste caso será verdade. E então podemos colocar um operador e aqui. E então o segundo valor tem que ser outro booleano. Então, por exemplo, poderíamos dizer, vamos testar aqui, certo? Então agora vai dizer, bem, se a string coincidir e o teste for verdadeiro, então x será verdadeiro, certo? Então, nesse caso, a comparação será verdadeira e o teste será falso, certo? Então, isso é o que acontece aqui atualmente, certo? Porque o teste aqui é falso. Então, se agora imprimirmos x é apenas para fins do argumento x, aqui ou ali está. Se fizermos isso extra, seja falso e você poderá ver que x é falso. Por que esse é o caso? Bem, porque o operador final diz que ambos os valores booleanos precisam ser verdadeiros para que toda a expressão seja verdadeira. Agora, mais uma vez, se isso é um pouco complicado para você no momento , não se preocupe. Isso é algo com o qual você só precisa brincar um pouco. Então, o que eu recomendo fortemente que você faça é abrir esse script lógico relacional aqui e brincar com isso. O que é ainda mais louco é que você pode usar isso quantas vezes quiser. Então eu posso dizer: “Fim de verdade”. E talvez outra que queiramos dizer, bem, 20 é maior ou igual a 50, algo assim, certo? Então você pode ver, você pode juntá-los o quanto quiser. Mais uma vez, pode ser um pouco complicado. É sobre testar isso e experimentar algumas coisas conosco, certo? Vou apenas copiar isso e também vou criar um operador de sala de cirurgia aqui. Então isso vai ser, agora vai ser verdadeiro ou falso. O que acontece com o or significa que um ou ambos precisam ser verdadeiros para que a saída seja verdadeira. Então, nesse caso, verdadeiro ou falso significa apenas que a comparação é verdadeira. E então nem nos importamos o resto, porque um deles é verdadeiro. Isso vai ser verdade. Então, podemos ver, digamos que X1 e X2, só para entendermos que a diferença está aqui. E se jogarmos isso, você pode ver que x2 é verdadeiro porque aqui estamos usando o operador or e isso só importa se um deles é verdadeiro e toda a expressão é verdadeira. Como eu disse, não é realmente uma coisa avançada, é apenas uma daquelas coisas que não são realmente ensinadas no início da escola. É basicamente apenas lógica formal? Não há nada de louco nisso. E mesmo que pareça um pouco intimidante, na verdade não é. Mais uma vez, sente-se um pouco, brinque um pouco com isso e você descobrirá que isso realmente não é uma loucura. Agora, uma última coisa, vamos fazer a comparação aqui também. E então o que vamos dizer é que na verdade, queremos negar isso. Isso significa que isso realmente não é um teste. Agora, isso pode ser como o FREC é isso, isso é muito louco. Bem, estamos basicamente negando isso falso ou estamos invertendo isso. Então, negar simplesmente significa que estamos transformando isso de falso em verdadeiro. Ou se isso já era verdade, então para um falso. Então, às vezes você verá isso escrito assim com um ponto de exclamação na frente. Mas isso significa apenas que tudo isso é verdade, certo? Então, de repente, isso não é falso, o que será igual a verdadeiro, certo? Deixe-me fazer isso. Então isso fica um pouco mais claro, certo? Então, estamos negando o teste de que tudo o que está escrito na variável de teste, neste caso é falso. E estamos transformando isso em verdade. Mais uma vez, se você não entender isso imediatamente, brinque um pouco com isso. Eu recomendo fortemente que você realmente queira digitar e imprimir coisas e depois começar um pouco com isso e dizer: Ok, agora você entendeu, porque, na verdade, aplicar isso é muito mais importante do que apenas me ouvir, como explicar isso umas dez vezes. É melhor você sentar e dizer, ok, o x é isso e depois o y é isso, e então é como n nada, e depois imprima. Mas, para fins de argumentação, vamos ver que x3 será verdade. E você descobrirá que o X3 realmente é verdadeiro. Porque, mais uma vez, a comparação é verdadeira e o oposto do teste também é verdadeiro. Portanto, isso é verdade. Recapitulando rapidamente, seus operadores relacionais e lógicos têm tudo a ver com valores booleanos. E basicamente nossas operações que comparam dois valores, dois ou mais valores em alguns casos, e fornecem um valor booleano a partir disso, certo, verdadeiro ou falso. Há menor que, maior que igual, não igual, e também os operadores lógicos AND, OR e NOT . Nesse caso, essas operações simples são, na verdade , tudo o que o computador gosta. Quando você desce para o mais baixo, é onde estão todos os uns e zeros dos quais você já deve ter ouvido falar antes. Isso é tudo o que eles usam e, ou. E então alguns operadores relacionais, isso é tudo o que eles usam, nada mais. Então, com isso vem um grande poder, na verdade, como na programação, é por isso que eles são muito importantes. Mais uma vez, aqui no final, eu queria basicamente dar a você o ímpeto de dizer, ok, realmente sente-se por uns bons dez, 20 minutos e teste como eles funcionam. Se você não os entendeu, se você os entendeu, absolutamente ótimo. Eu ainda estava implorando que você os experimentasse um pouco. Se você não os entendeu, tente novamente. Eu recomendo fortemente que, se, claro, restar alguma dúvida, não hesite em perguntar. Caso contrário, será isso para esta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo. Nos vemos na próxima palestra. Então, sim. 8. (Lua) Se e outras declarações: Tudo bem, bem-vindo de volta à pequena introdução aqui para o curso de bloqueios de estradas. E nesta palestra, daremos uma olhada nas declarações “if” e “ else”. Então, agora estamos realmente nos aprofundando nisso. Mais uma vez, nos servidores de scripts do servidor, vamos criar um novo script e vamos renomeá-lo com cinco traços, caso contrário. Que tal isso? Aí está. Estou bem, mais uma vez, vou fazer todos os cinco, se não for o caso. Agora, se as declarações forem muito, muito interessantes, vamos supor que o que temos, por exemplo é que podemos ter uma quantia de ouro que será de 100. E então talvez tenhamos uma nota, talvez você tenha uma nota Digamos que mal passamos dos 65, algo assim. E então também temos um valor booleano. E isso vai ser, é claro que é bom. E isso vai ser igual à verdade. Vamos supor que esse seja o caso. Agora, o que podemos fazer com outras afirmações é que podemos basicamente interromper o fluxo de cima para baixo e dizer: Ok, se algo for verdade, então faça isso. Ou se algo mais for verdade, então faça isso. Então, por exemplo, podemos dizer que se é grosseiro Bom, você pode ver que sugere que isso era desigual, nos diz que é um booleano. Então, vamos pressionar a tecla Tab para preencher automaticamente. Então dizemos que, quando pressionamos a tecla Enter, a extremidade aqui é gerada automaticamente. E agora isso é extremamente importante. Você pode ver que nosso cursor aqui está realmente recuado. Portanto, é o mesmo que se eu pressionasse a tecla Tab e você pudesse ver o mesmo recuo acontecendo aqui. E isso ocorre automaticamente porque agora estamos dentro dessa declaração if. E você tem que realmente estar ciente do recuo de escrevê-lo assim. Então eu posso escrever coisas aqui. Não acho que seja tecnicamente errado, mas parece muito estranho. Então, basicamente, uma vez que você está dentro de uma instrução if ou de uma função que veremos mais tarde e coisas assim. Você sempre tem um recuo e sim, se eu tivesse outro se dentro daqui, em vez disso, se recuássemos outro tipo para fins de argumento, vamos continuar com isso. Então isso vai imprimir algo e vai produzir Brent. Sim, é um curso muito bom. Então aí está. Então, desde que o bom seja verdade, vamos imprimir isso. Vamos jogar isso por uma questão de argumentação. É verdade. Então, sim, é um curso bonito, é muito bom. Bem, vamos nos certificar de que também diz que é um curso muito bom. Mas agora vamos dizer falso. Vamos resolver que esse não é o caso, mas se for, vamos jogar e não temos saída. Porque nesse caso, tudo entre então e fim só será executado se isso for verdade. E agora estamos realmente começando a usar essas ferramentas diferentes. Isso é basicamente cada uma dessas palestras. É outra ferramenta em seu kit de ferramentas que você precisa para entender o básico que virá posteriormente com todos os obstáculos. E essa é uma das maiores e mais importantes declarações, se e depois. Então, por exemplo, também poderíamos pensar em algo assim. Digamos que vamos adicionar outro aqui. Isso pode ser algo como o pedágio. Então, talvez exatamente onde você queira atravessar a ponte e o total seja 150 de ouro. Então, o que podemos, por exemplo, dizer é, bem, se nossa meta que temos é maior ou igual ao pedágio, certo? Então podemos dizer imprimir, o jogador pode passar. Mas talvez queiramos dizer: “ Bem, na verdade, não queremos terminar aqui. Portanto, podemos substituir essa extremidade por outra. E então, mais uma vez, você pode ver que é outra coisa. Se eu apertar o botão de toque, posso completar automaticamente e pressionar Enter, que gera outra extremidade aqui. Portanto, podemos dizer que se o ouro for maior do que o pedágio, o jogador poderá passar. E se não for esse o caso, então podemos dizer que o jogador não pode passar, certo? Então, podemos simplesmente clicar em play. E podemos ver que, se olharmos para isso, jogador não pode passar porque o ouro é, na verdade, menor do que o canto superior direito. Só temos 100 de ouro, mas precisamos de 150. Portanto, isso é impresso. Então, tudo no resto é impresso. Se isso for falso e tudo aqui for impresso se for verdade, também podemos fazer algo assim, certo? Então, podemos dizer que agora é uma maneira muito grosseira de fazer isso, mas é verdade, certo? Então, podemos dizer que o ouro atual, digamos que o ouro será armadura, ouro, certo? Então, basta colocar as saídas, o ouro também. E o que podemos fazer é, se passarmos, bem, nós realmente queremos fazer ouro menos igual a qualquer que seja o total, somente se realmente passarmos com sucesso, porque senão não queremos fazer isso. Então, agora vamos ver qual é o objetivo depois de avaliarmos isso? Bem, vai ser, bem, 100, certo? Porque não pagamos nada. Porque, de fato, podemos pagar porque nosso pedágio é, bem, aqui é 150 e nem podemos fazer nada. Vou tornar essa etapa mais complicada, mas você entenderá esse local, digamos que está em casa, certo? Então, estamos em casa agora. E se passarmos, digamos que estaremos no centro da cidade. Digamos que, para fins de argumentação, se não passarmos, nem precisaremos mudar a localização, então podemos dizer ouro atual. Vamos apenas copiar isso e então podemos dizer a localização atual. Depois, também podemos imprimir a localização. Ok, vamos jogar isso mais uma vez. E então veremos, certo, que ainda estamos em casa e ainda temos 100 de ouro. Mas agora e se eu mudar o pedágio agora? Na verdade, custa 69 para passar? O que vai acontecer agora? Bem, agora nosso ouro é maior ou igual ao pedágio, o que significa que podemos passar. Nossa localização mudará para o centro da cidade e vamos subtrair qualquer meta que tenhamos, como o pedágio de nosso Deus. Então, vamos jogar isso e ver, e de repente podemos ver que agora temos 31 de ouro e estamos no centro da cidade. Agora, é claro, nada no jogo em si mudou. Neste caso, alteramos apenas uma ou duas variáveis. Mas talvez você já possa ver como é incrivelmente poderoso ter essas declarações e poder juntá-las. Você pode colocar outra declaração if aqui. Há todo tipo de coisa que você pode fazer, o que é realmente incrível. Essa é realmente uma das coisas que, quero dizer, é muito legal ver esse tipo de coisa ganhar vida. Espero que este seja um exemplo realmente ilustrativo disso, porque eles têm declarações e as declarações se mais são realmente, muito incríveis. Agora, digamos mais uma vez, a última coisa. Então, temos uma nota aqui e digamos, por exemplo , que queremos verificar se essa pessoa foi aprovada. Então, podemos dizer se a tela é maior ou igual a 50, por exemplo então vamos dizer, na verdade, vamos fazer o contrário. Então, digamos que se for menor que 50, imprimiremos uma falha, certo? Porque então falhamos. Agora vamos substituir isso por outro. Mas você sabe o que, na verdade, quando é substituído por outro, porque eu quero verificar se a nota é maior ou igual a 50 e também é menor. Tão bom é menor que 100 deles. Então eu quero fazer algo específico. E então eu quero outra, porque você pode acorrentá-las o quanto quiser. E então isso vai fazer outra coisa. Então, isso vai ser impresso, digamos que passado por aqui, isso é ótimo. E aqui, se você obtiver 100, certo, isso aconteceria se você obtivesse 100 ou mais. Mas vamos pensar nisso por um momento. Mas se tivermos 100 ou mais , diremos que eles foram aprovados com honras. Porque por que não, certo? Porque isso é muito legal. Então, agora temos 65 para a nota. Portanto, devemos ver a saída B anterior. Vamos ver se isso funciona. E você pode ver que o passado é de fato uma saída. Isso é muito bom. Vamos parar com isso e depois voltar aqui e realmente mudar isso para, digamos, 100. Agora devemos passar conosco. Vamos ver. Vamos jogar isso. E podemos ver que foi aprovado com honras. Isso é ótimo. Podemos até dar um passo adiante. Digamos que, para fins de argumentação, queremos adicionar outro aqui. O que podemos fazer é adicionar outro se, e podemos dizer se for maior, maior que 100. Agora vamos, vamos fazer assim. Digamos que se ótimo é igual a 100, então fazemos isso, certo? E depois vamos fazer outra. E isso basicamente vai ser que, se for qualquer coisa menos 100, e então podemos dizer mais, mais de 100 não é possível. Você trapaceou. Então, algo assim, mais de 100 não é possível que você tenha enganado. E agora, se eu fizesse 101, de repente, obteremos mais de 100, não é possível. Você trapaceou. Então, se você não entende muito bem a lógica disso, pense nisso, certo? Qual é a nota agora? Ótimo como 101. Isso é menor que 50? Não 101 não é menor que 50. Portanto, vamos para o senão se, agora estamos verificando, é maior ou igual a 50? Na verdade, é maior ou igual a 50. Mas isso também tem que ser verdade porque estamos usando o operador lógico AND right, então essas duas coisas precisam ser verdadeiras para que toda a afirmação seja verdadeira. E como ótimo é maior que 100, vamos fazer o contrário, se agora estamos parecendo Ótimo, igual a 100, não é igual a 100, verdade é 101. Portanto, vamos para o outro lado aqui. E como não temos uma declaração if, estamos apenas dizendo, ok, agora estamos usando o L, então tudo aqui é executado, o que significa que isso é impresso. Bem, espero que esses sejam alguns exemplos interessantes de declarações se e mais, como você pode usá-las e por que elas são. Então, na verdade, muito, muito incrível. Você pode ver que, como nós já fizemos, quase fizemos um pequeno jogo aqui, apenas com uma declaração de ouro, com um pedágio. E isso já é realmente incrível, certo, para uma pequena recapitulação, mais uma vez, se as declarações usam valores booleanos para avaliar algo, certo? Eles podem usar um valor booleano normal. Você pode usar os operadores relacionais e lógicos para agrupar esses booleanos. Como vimos de várias maneiras, podemos usar as instruções if e else if and else para agrupar essas instruções if. E então tudo dentro dessa instrução if for executada. Se a expressão booleana for verdadeira, realmente uma coisa muito legal. E eu, mais uma vez, recomendo que você brinque um pouco com isso em seu próprio tempo. É muito, muito incrível. Bem, isso é tudo para esta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo . Nos vemos na próxima palestra. Então, sim. 9. (Lua) Variáveis locais: Tudo bem, bem-vindo de volta à introdução do banheiro aqui para o curso Roblox. E então, nesta breve palestra, falaremos sobre variáveis locais. Então, para isso, mais uma vez, no serviço de script do servidor, vamos criar um novo script e chamaremos isso de 06 traços de local. E é claro que isso também terá uma variável local O6 comum. Agora, esse não é um tópico extremamente importante. No entanto, eu queria, basicamente falaremos sobre isso uma vez. Então, variáveis locais antes, quando tínhamos uma variável fazíamos x igual, sei lá, como 100 e pronto. Agora, também podemos colocar a palavra-chave local na frente dela. E você pode ver que é uma palavra-chave porque fica em negrito e também em vermelho. Então, agora podemos dizer que o y local, por exemplo, é 50. Agora, por que isso seria importante ou por que não? Bem, a ideia geral é que uma variável local basicamente faz com que ela a restrinja onde está acessível. Agora, neste caso, na verdade, não importa, porque podemos simplesmente imprimir x e que tudo ficará bem e imprimir y e tudo ficará bem. Então, os dois vão simplesmente funcionar. Digamos que temos uma declaração if e vamos dizer que x é, digamos, maior que cinco, e então queremos fazer alguma coisa. Agora, se ao invés disso, se alguém, digamos que esta afirmação seja realmente complicada, muito complexa, e nós realmente precisamos de algumas variáveis dentro dela para funcionar. Poderíamos dizer algo como, por exemplo, z é igual a 100. Isso funciona. E então podemos usar isso aqui e o que quisermos fazer. E a loucura é que podemos até mesmo usar esse Z fora dessa declaração if. Então você pode ver que o Z aqui está acessível fora dessa declaração if, mas isso nem sempre é o que queremos porque, em primeiro lugar, isso pode confundir a pessoa que está usando isso, certo? Então, talvez nós realmente não queiramos isso. Z só pode ser usado nesta declaração if. E depois disso, o que quer que se torne, qualquer valor que tenha nem sequer é representativo de nada do que queremos. Esse pode ser o caso. Se for esse o caso, por exemplo, podemos torná-lo local. E você pode ver o que acontece é que agora isso tem um sublinhado vermelho, significado e erro. Você pode ver apenas o z global, porque normalmente as variáveis são variáveis globais. Mas, nesse caso, estamos dizendo explicitamente que essa é uma variável local e só pode ser acessada dentro desse contexto específico. O contexto é a declaração if. Portanto, se terminar a primeira camada n, o final dessa instrução if basicamente também excluirá aspas sem aspas, essa variável local. No geral, é normal basicamente tornar tudo local, exceto se houver momentos em que, oh, você sabe o que, na verdade, isso não deveria ser local. Em teoria, o que você deve fazer é sempre que criar uma variável, sempre começar com um local. E isso é, e então você vai ficar bem, e então você vai ficar bem. Porque há muito poucos casos em que esse não é o caso. E você pode ver se não está certo, se você quiser continuar trabalhando com isso, então está tudo bem, então você pode deixar isso de fora. Mas geralmente você quer torná-los locais e então você vai ficar bem. Outra razão pela qual você deseja fazer isso é porque eles têm um pouco mais de desempenho. Agora, para ser justo com máquinas modernas, isso provavelmente não fará muita diferença aqui, mas apenas no caso de ser muito importante. E se você vê o local nos scripts de outras pessoas , saiba que geralmente você deseja usá-los para todas as suas variáveis, exceto em algumas circunstâncias em que as globais são necessárias, então você pode mantê-lo fora. Normalmente, quando eu instancio uma variável com local na frente dela, certo? Então, eu apenas me certifiquei de que o príncipe aqui fosse comentado por causa dessa impressão, é claro, que gera um erro quando temos uma variável local. Mas, no geral, para resumir aqui, mais uma vez, as variáveis locais, elas se tornam um pouco mais rápidas e restringem o escopo em que uma determinada variável é acessível. Não criar uma versão global torna um pouco mais restrito e fácil para as pessoas usarem seus scripts. E também faz com que o jogo funcione um pouco mais rápido. Podem ser pequenas mudanças aqui, mas geralmente você deseja usar o local sempre que possível. Isso vai ser o suficiente para esta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo . Nos vemos na próxima palestra. Então, sim. 10. (Lua) Operações de corda: Tudo bem, bem-vindo de volta ao curso Roblox. E nesta palestra, vamos dar uma olhada nas operações de cadeia de caracteres, é claro que, em primeiro lugar, nos servidores de scripts do servidor, vamos criar um novo script aqui e renomeá-lo para 07 e operações de cadeia de caracteres de caracteres. E, claro, mais uma vez, faremos uma operação de 07 cordas, Ahmed aqui, e então vamos começar. Assim, podemos criar uma nova variável. Vamos chamar isso de teste e vamos chamá-lo de algo como olá, eu estou dizendo olá, e isso é uma string. E já vimos isso anteriormente. Podemos, por exemplo imprimir isso com a função printf fazendo testes aqui. E isso, é claro, produzirá o valor da variável de teste nesse caso. Para isso, precisamos da saída aqui e também de nos certificar de que nos antigos também comentamos as funções de impressão nos scripts antigos. E se tivermos a janela de saída aberta e a impressão aqui , vamos jogar e poderemos ver olá lá. Estou dizendo olá, bem, isso é muito bom. Agora, por que estou escrevendo algo tão estranho lá? Bem, porque vamos ver algo interessante em um momento. Mas a primeira coisa que podemos fazer com uma corda é descobrir o comprimento da corda. Porque talvez às vezes queiramos fazer isso. Assim, podemos descobrir o comprimento de uma corda fazendo o seguinte. O que podemos fazer é dizer teste de hashtag, e isso produzirá o comprimento dessa string específica. Então, só vai contar quantos caracteres existem, incluindo espaços. Então, antes de emitirmos isso, vamos contar 1, 234-567-8910, 1112, 1314, 1516 1718 1920 201-20-2203, 2420, 5206, 2728, 2930. Em teoria, essa variável de teste, essa sequência aqui, deveria ter três caracteres. Portanto, nossa impressão aqui deve ter o comprimento de uma corda, 30. Vamos jogar e ver se isso é realmente TI. E o comprimento de uma corda é 30. Bom. Isso já é muito legal, mas que outras coisas podemos fazer? Bem, há uma série de coisas diferentes. Então, digamos que criamos uma nova variável. O que vamos fazer é digitar uma string e você pode ver que ela realmente começa a sugerir isso para nós, e também marca isso como azul. Portanto, é uma palavra-chave nesse caso, e podemos colocar um ponto depois dela. E então você pode ver que temos funções diferentes que podemos chamar. E eles basicamente representam uma certa coisa que eles fazem com certas coisas. Então, por exemplo, aqui retorna o comprimento da string. Então, em vez de fazer a hashtag, você também pode fazer a string Lynn Wright e depois colocar a string lá. Muito importante. Então, podemos fazer isso. E, nesse caso, o novo teste será , na verdade, a duração. Vamos chamar esse comprimento por um momento. Vamos copiar isso apenas como um teste. E podemos então calcular o comprimento aqui. E se jogarmos isso, veremos 30,30 porque basicamente está fazendo exatamente a mesma coisa. Mas essa é uma das operações que podemos fazer. Então, geralmente, a maioria das operações para strings, neste caso sempre prossegue com string dot e, em seguida, com uma espécie de função, basicamente. Vamos fazer um novo teste e dar uma olhada. Então, amarre isso. E você pode ver que há um monte de coisas. Então você pode ver que isso concatena n cópias da mesma string. Isso é basicamente se você tiver, se eu colocar a corda lá e colocar três lá, então vai ser olá. Estou dizendo olá. Olá, estou dizendo olá, olá, estou dizendo olá. Então, isso é basicamente para repetir a mesma coisa. Sup é. Isso é uma substring e é semelhante ao que veremos daqui a pouco. A descrição aqui. Pode ser um pouco complicado, mas não se preocupe. O byte geralmente é algo de que realmente não precisamos. Mas o que eu recomendo é que você sempre possa dar uma olhada em cada uma dessas funções e basicamente clicaremos nelas e, em seguida, você poderá ver uma descrição muito boa e até mesmo clicar em Saiba mais para saber mais. O que vamos fazer aqui é fazer g sub, g sub. Isso parece muito complicado, mas na verdade não é. Então, vamos clicar duas vezes sobre isso. Ele formatará tudo isso corretamente e vamos colocar a vírgula na string de teste. E então isso é um padrão. Queremos ver esse padrão. Então, por exemplo, olá. E queremos substituí-lo por algo. E neste caso, vamos apenas substituí-lo por uma string normal. E essa sequência vai ser apenas “Howdy”. Então, o que você espera que aconteça aqui se agora produzirmos um novo teste, certo? Então, se fôssemos imprimir um novo teste, certo? Então, essa nova variável, que vai ter G sub, espero que o que ela faça seja pegar a variável de teste aqui. E vai procurar a palavra olá, certo? E ele retornará uma cópia na qual toda vez que o Hello aparecer, ele a substituirá por Howdy. Então, se fôssemos imprimir um novo teste, bem, espero que o que descobriremos seja que ele diga: como você está aí? Estou dizendo “Olá”? Vamos jogar e ver se isso é realmente o que acontece. E isso é realmente o que acontece. Como você está aí? Estou dizendo “olá”? Agora, o que é extremamente importante se eu também imprimir o teste original aqui, certo, porque colocamos isso na função e substituímos o olá por um Olá, você descobrirá que o teste não mudou. Então você pode ver que o teste está completamente inalterado. E isso também é o que diz. Se eu parar aqui, também é o que eu disse. Se entrarmos aqui, ele retornará uma cópia da string que foi passada. Portanto, ele não modifica a string que passamos. É muito importante lembrar disso. Outra coisa que posso mostrar é, por exemplo, encontrar algo. Então, isso vai ser string dot find. Então, esse é outro método que realmente deu uma olhada no que diz. Então, procura a primeira correspondência do padrão e, em seguida, retorna os índices. Ok? Então, o que isso significa? Bem, vamos fazer um teste, por exemplo , aqui. Não importa qual deles colocamos. E então eu posso dizer lá, então vamos dar uma olhada lá. E então também podemos imprimir isso. Então, onde vamos fazer isso aqui e, em seguida, obter a descoberta. E devemos tirar um número disso para que você possa ver onde está sete, ok, então por que está em sete? Bem, se contarmos mais uma vez, certo, então eu estou contando os caracteres à minha direita, então será 1234567. Então esse é realmente o sétimo caractere, ou é o caractere com índices ou índice de sete. Essa é a ideia geral. E então, financiar coisas que você pode usar, se você às vezes, é interessante e isso é basicamente gritar caixa e depois sussurrar caso. Então, a ideia é aquela corda na parte superior, e se colocarmos algo lá dentro, podemos simplesmente copiar isso. Então, basta selecionar Controle C, Controle V para colá-lo. E isso é então sussurrar e isso é mais baixo. O que você descobrirá é que a parte superior, que vai ver, retorna uma string com todos os caracteres minúsculos mudados para maiúsculas, enquanto a parte inferior aqui retorna uma cópia com todas as letras maiúsculas para minúsculas. Então, se fizermos isso, você pode ver gritando olá lá, eu estou dizendo olá e então toda primavera é assim. Então, esses também são muito legais. Agora, essas operações, incluindo algumas das outras funções para sequências de caracteres, podem ser incrivelmente úteis se você tiver algum tipo de texto que precise modificar com base talvez na localização do player ou se precisar imprimir algo em algum lugar. Então, isso pode ser usado basicamente para muitas coisas. É por isso que pode ser muito importante. E, claro, como sempre, eu recomendo brincar um pouco com isso. Obviamente, existem mais algumas funções de string que você pode usar. Mas, para concluir, você pode obter o comprimento de uma string usando hashtag em vez da variável string ou também pode usar as funções de string de string dot e, em seguida, qualquer que seja a função, neste caso Len. Também vimos como você pode substituir coisas em cadeias de caracteres e sempre lembramos que isso retorna uma cópia da string original que nunca é alterada. Podemos até encontrar coisas e sequências de caracteres e, no final, também vimos a alteração de caracteres em minúsculas e maiúsculas. Bem, espero que você tenha achado isso útil e aprenda algo novo e nos vemos na próxima palestra. Então, sim. 11. (Lua) Loops em Lua: Bem-vindo de volta à introdução do banheiro aqui para ver os núcleos de obstáculos. E então, nesta palestra, vamos dar uma olhada em loops. Agora, o que são loops? Bem, eles são muito interessantes. Em primeiro lugar, é claro, um novo script aqui, 08 traços e um bom comentário no topo aqui também. E a questão é: o que são loops? Bem, bem, e se eu te desse a tarefa de imprimir cada número de 1 a 100? Você poderia dizer, bem, tudo bem, vamos começar do zero. Vamos fazer um e depois copiaremos isso. Eu vou dizer 23 e 4,5, e em algum momento você está pronto. Agora eu vou dizer, bem, na verdade, o que eu gostaria que você fizesse é que todo número par não deveria ser impresso. Eu só quero os números ímpares, 1 a 100 e você vai dizer, Uau, isso é meio chato. Então você vai comentar cada número par ou simplesmente deletar cada número par, então eu fico tipo, Oh, desculpe, eu li isso errado. Na verdade, eu queria o contrário. Na verdade, eu não queria imprimir os números ímpares. Na verdade, eu não queria imprimir os números ímpares e você fica tipo, Meu Deus, eu simplesmente mudei tudo. E nesse momento você vai ficar muito irritado. Claro, essa não é a maneira de fazer isso. Há uma maneira muito mais fácil de fazer isso. Ou seja, loops, basicamente loops em um termo muito geral, ou certos trechos de código ou certos trechos de script que se repetirão x vezes, quantas vezes você basicamente quiser. Então, por exemplo, podemos fazer um for-loop. Você pode ver que isso já sugere que você pode criar um loop for e isso já está sendo destacado como uma palavra-chave. E a maneira como isso funciona é eu vou escrever isso e vou explicar. Então, podemos dizer que eu é igual a um e eu vou dizer dez, e eu vou dizer vírgula novamente e depois um e depois fazer. E assim que eu pressiono a tecla Enter aqui, você pode ver que a extremidade degenera e tudo dentro desse for-loop, semelhante ao que vimos se declarações, certo? Tudo em vez disso para loop será feito neste caso dez vezes. Agora, como é isso? Como isso funciona? O que essa loucura significa? Bem, isso significa o seguinte. Isso significa que o ciclo, é claro, precisamos começar a contar, porque precisamos saber com que frequência estamos passando. O que quer que coloquemos aqui, podemos simplesmente imprimi-lo neste caso, certo? Então, vamos apenas imprimir o número que estamos contando. E a questão é, ok, começamos um, começaremos do um, quero dizer com isso, certo? Então, estamos começando com um, ok, isso deve ser bastante autoexplicativo. Comecei um. Agora vamos terminar às dez. Isso é o que esse número significa, e então é extremamente potente. Esse número significa que estamos aumentando a contagem em um toda vez que terminamos o ciclo. Também poderíamos fazer três. Então, estamos aumentando a contagem em três, dois, seis ou nove ou honrados 26, se quisermos, podemos fazer muitas coisas com isso. Mas, por enquanto, estamos apenas passando por isso. E toda vez que examinamos essa impressão, estamos aumentando esse I em um. E assim que chegar a dez, terminamos com isso. Bem, vamos jogar e ver o que acontece. E você poderá ver se expandimos um pouco a saída. 1 234-567-8910, exatamente o que esperávamos. Mas estamos aumentando esse I um toda vez que terminamos um loop. Então, estamos começando por aqui. Nós pensamos: “Ok, eu sou um agora”. O resto não nos preocupa no momento porque eu não tenho dez anos ou é menor que dez. Então, pensamos que estamos totalmente bem. E então estamos imprimindo I, que é de fato um. Estamos chegando ao fim. Então, vamos voltar ao for-loop. Nós pensamos, ok, agora eu aumentei em um, agora eu sou dois, e assim por diante e assim por diante até chegarmos a dez. E então o loop é como, Oh, olha isso. Agora tenho dez anos. Então, terminamos. E isso é o que chamamos de for-loop neste caso. Muito interessante, de fato. Agora também podemos ter um tipo diferente de loop. Deixe-me parar o jogo por um momento. E podemos ter um tipo diferente de gripe, e isso é um ciclo longo. Então, por exemplo, podemos ter uma variável local x aqui, que é três. E então podemos dizer enquanto, e podemos dizer que enquanto x é menor ou igual a dez, então faremos algo que ele fará com que em série você obtenha uma expressão booleana explícita que tem que ser verdadeira. E embora isso seja verdade, vamos fazer isso agora, enquanto os loops são notoriamente propensos à seguinte coisa, que é um loop infinito. O loop infinito acontece se, por qualquer motivo, você nunca conseguir falsificar isso. Então, se x é sempre menor ou igual a dez, então esse loop inteiro vai continuar, vai durar para sempre. Agora eu acredito que, se bem me lembro, Lula e, além disso, Roblox Studio têm uma espécie de proteção contra falhas embutida para isso, para que todo o Roblox Studio não falhe se isso acontecer. Mas eu ainda recomendo que você não experimente isso porque é meio chato. Então, dentro daqui, podemos, por exemplo , dizer, ok, vamos aumentar x um toda vez e então devemos ficar totalmente bem, porque, é claro, se aumentarmos isso em um, se aumentarmos isso em um, em algum ponto será maior que x, certo? Então, se pudermos dizer imprimir e isso também é imprimir x, y nada seria o caso. Mas vamos fazer isso antes de aumentá-lo. Então, vamos imprimir três até dez. E então também devemos estar fora do circuito. Então, vamos fazer outra impressão aqui fora do circuito. E vamos jogar isso e ver o que acontece aqui. E, claro, 3-10, onde fora do circuito, absolutamente não se preocupe. Também podemos fazer isso, e isso é apenas um exemplo aqui. Dentro dela. Se estivermos dentro de um loop while ou de um loop for, por falar nisso. Certo? Digamos que queiramos dizer: “Ok, você sabe o que? Quando x atinge sete, então, na verdade, queremos fazer o seguinte e vamos quebrar. Break é outra palavra-chave que sairá completamente imediatamente do loop como se tivéssemos chegado ao final do loop. E isso não significa que chegaremos a esse fim. Somos como se estivéssemos do lado de fora do passarinho pulando. Também podemos usar continue. E isso funcionaria como se tivéssemos chegado ao fim aqui. Então, isso continuará o ciclo. Isso quebrará o ciclo. Basicamente, estaremos fora do circuito nesse ponto. Essa é a ideia geral. Então, se usarmos break aqui, teremos de três a sete saídas. Você pode, ou neste caso seis, na verdade porque estamos produzindo x antes de aumentá-lo. Então x é seis, fica, aumenta para sete. X7, estamos saindo e é por isso que temos 345,6. E então estamos fora do circuito. Se continuássemos aqui, o que aconteceria é que, na verdade nada seria diferente do que tínhamos antes, porque nada depois disso se a declaração fosse relevante. No entanto, se colocássemos isso logo no início aqui, agora seria interessante porque agora são sete não seriam produzidos. Então, se vemos isso agora, você pode ver, de repente, o que aconteceria é que nos depararíamos com um loop infinito. Agora isso é, claro, aplicativo. Então você pode ver que esgotamos o tempo de execução permitido porque o que acontece aqui é que x é sete e então pensamos, ok, vamos continuar e depois é como um exercício. Vamos continuar, vamos continuar, vamos continuar, vamos continuar, vamos continuar. E vai fazer isso até que, nesse caso, o tempo de execução permitido seja atingido. Isso é 10 s, se conseguirmos ver isso corretamente, então a diferença aqui no tempo é 10 s. Então, em teoria, isso pode acontecer. Então é por isso que você deve ter cuidado com isso. Então, poderíamos, por exemplo, fazer algo assim. Então, a impressão acontece depois e o aumento aqui acontece antes. Então, se tivéssemos que fazer isso, então, de repente, saltamos de 6 a 8 e, nesse caso, saltamos mais de sete. Então essa é outra ideia interessante. E também temos um loop de repetição, que é muito parecido com o loop while. O que estamos fazendo basicamente é o contrário. Então, basicamente, estamos dizendo: Ei, queremos repetir o código a seguir até que algo seja verdade. Isso é basicamente equivalente ao loop while, mas é um pouco diferente. E isso está escrito assim. Isso é praticamente tudo sobre loops. Ou podem ser interessantes. Isso deveria estar praticamente certo, certo? Em resumo, os loops são maneira incrivelmente fácil e eficiente de repetir o código que você deseja repetir x a quantidade de vezes que há para loops, enquanto os loops e repita até fazer loops. E essas são, eu acho, as três versões principais. Também há algumas coisas interessantes para, para os loops posteriores, podermos ver todos os quatro em cada loop. Mas, no geral, esses são basicamente os três grandes. E eles podem ser muito, muito interessantes. Portanto, eu recomendo brincar um pouco com isso. Se você quer um pequeno desafio, isso é apenas um desafio para você. O que você pode fazer é aumentar isso para 100 e imprimir os números 1 a 100 e, em seguida, fazer exatamente o que eu disse e basicamente dizer: Ei, só queremos imprimir números se eles forem divisíveis por dois. Então, se houver, se houver ou se não houver. Portanto, isso deve ser bastante simples, com a palestra if and else e a aula de loops, você deve ser capaz de fazer isso. Eu recomendo fortemente que você experimente isso. É um exercício muito divertido. Independentemente disso, espero que você tenha achado isso útil e aprenda algo novo. Nos vemos na próxima palestra. Então, sim. 12. (Lua) Funções em Lua: Tudo bem, bem-vindo de volta ao banheiro ou à introdução aqui para o curso de bloqueios de estradas. E nesta palestra, vamos dar uma olhada nas funções. Então, eu defini essa palavra algumas vezes. Vamos criar um novo script aqui e renomeá-lo para 09 funções de traço e, claro, também 09 funções aqui. Agora a pergunta é: o que são funções? Bem, como uma visão geral de alto, alto e alto nível, você pode basicamente colocar várias instruções em vez de uma função e, em seguida, sempre executar essa função em vez de fazer todas essas coisas diferentes. Como um exemplo de alto nível, podemos escrever uma função. Você pode ver que isso é uma palavra-chave e, em seguida, esse é o nome da função. Vamos chamar isso de culinária, certo? E então podemos até colocar algo aqui para escrevermos o nome dessa função e depois termos parênteses. Assim que você colocar o parêntese aberto, o de fechamento deve ser gerado automaticamente. E aqui você pode então apresentar certos argumentos. Esses são chamados de parâmetros, são parâmetros e podem ser passados para a função, alterando assim a saída. Então, em nosso exemplo de codificação aqui, vamos simplesmente não colocar nada aqui e na verdade , ir até o final , pressionar Enter e, no final, geraremos novamente automaticamente. Isso é a mesma coisa que vimos com os loops e também com as instruções if e else. E aqui dentro, se estivermos cozinhando alguma coisa, agora posso colocar coisas diferentes. Agora, nesse caso, não vai funcionar. Só vou fazer comentários para que você tenha a ideia de uma função. O que é uma função, certo? Então, toda vez que quisermos cozinhar, talvez realmente queiramos cozinhar algo específico. Então, digamos que vamos chamar esse cozinheiro de jantar por uma questão de discussão, certo? E toda vez que eu quero preparar o jantar, há algumas coisas que eu tenho que fazer, certo? Então eu tenho que pegar talheres, talvez eu tenha que pré-aquecer o forno. Eu tenho que fazer um corte de vegetais, coisas assim. Então, há certas coisas que eu sempre tenho fazer se eu quiser fazer essa função específica, certo? Essa coisa específica. E você pode listar todos eles dentro de uma função. E então, em vez de escrever cada uma individualmente, se fizéssemos isso várias vezes, sempre teríamos que ler todas as instruções. E isso é loucura. Basicamente, uma função é um contêiner no qual você pode colocar várias linhas diferentes aqui neste caso, e elas serão executadas. Agora, este é um exemplo de alto nível para você entender a ideia. Esperançosamente. Agora, vamos dar uma olhada em um exemplo real. Portanto, um exemplo real poderia ser uma função de soma. Estamos dentro do parêntese. Na verdade, colocamos o número um e o número dois. E agora a loucura é que, se chamássemos essa função num, na verdade queremos que algo seja retornado. Então, podemos dizer retorno. E você pode ver que isso também é uma palavra-chave e queremos retornar num mais num dois. E isso agora é o que está sendo devolvido. Agora, é claro, neste caso, já temos uma espécie de função usando apenas o operador plus. Porém, isso é mais uma vez, apenas um exemplo para você começar a entender as funções e por que elas podem ser extremamente úteis. Porque agora o que podemos fazer é imprimir e dizer, bem, a função da soma, certo? E podemos simplesmente imprimir alguns e dizer 3,10. E isso é, como você pode ver, isso é, estamos chamando a função soma. Você pode até ver que ele se destaca aqui. Se eu clicar aqui e dentro daqui, podemos passar um número e outro número , e esses são resumidos aqui. Então, esses são parâmetros que estamos transmitindo parâmetros, você sempre precisa ter a quantidade correta de parâmetros. Então, se fizermos isso, se eu fizesse isso, embora não estejamos tendo nenhum problema aqui, se eu realmente executasse isso, teríamos um problema. Mas, por uma questão de argumento, vamos jogar isso. E veremos que, se eu examinar a saída, tentamos adicionar um número de nil, porque se eu não passar algo certo , o que é passado é nulo. Agora já ouvimos isso antes, certo? Nulo, era apenas a ausência de qualquer valor em uma determinada variável. Então, temos que passar alguma coisa. E se passássemos os dois números aqui, poderemos descobrir que a função soma gera 13, que é exatamente o que esperaríamos aqui. É claro que, quando você está realmente criando um script, as funções podem ficar muito mais complicadas do que isso, mas isso é apenas uma introdução muito pequena às funções. Nós os veremos quando estivermos realmente fazendo alguma programação com o próprio Roblox. Para resumir aqui, funções que você pode usar basicamente para agrupar várias coisas diferentes e executá-las uma após a outra. Isso também pode incluir outras funções. Você também pode retornar a certas coisas e funções. Por exemplo, temos uma função de soma aqui em que passamos dois parâmetros. E esses serão devolvidos depois de fazermos algo com eles. Essa é uma visão geral das funções. Se você não tiver certeza de como usá-los, não se preocupe, o mais importante é que você tenha sido apresentado a esse tópico e também poderemos ver mais sobre funções em palestras posteriores. Caso contrário, espero que você tenha achado isso útil e tenha aprendido algo novo. Te vejo na próxima palestra. Então, sim. 13. (Lua) Mesas em Lua: Tudo bem, bem-vindo de volta à introdução do banheiro aqui para ver as pontuações dos robôs, além desta palestra, vamos dar uma olhada nas tabelas. Agora, as mesas são uma coisa muito interessante e podem ser bem complicadas, mas não se preocupe, ficaremos bem. Então, vamos fazer tabelas aqui e tabelas de hash, e a mesma coisa aqui. E isso é que mesas são mesas. A ideia geral das tabelas é basicamente que você tem uma espécie de lista de certas coisas. Então, é claro, uma tabela é um pouco diferente de uma lista, mas você pode, por enquanto, pensar nela como uma lista e para que tenhamos algo para testar. Vou criar uma variável local chamada dias. E hoje em dia, essa será uma lista de todos os dias de segunda a sexta-feira. Em primeiro lugar, o que vamos fazer é igual a e depois um colchete, o colchete de fechamento é gerado automaticamente novamente. E isso vai ser uma tabela de strings neste caso. Então, essa será a vírgula de segunda-feira, e depois teremos a terça. E você consegue adivinhar exatamente o que vem a seguir? Dia das Testemunhas, que é como está escrito quinta-feira e , por último, mas não menos importante, também temos sexta-feira. Aí está. Então, isso é basicamente, bem, esses são os dias e agora podemos fazer o seguinte. Podemos imprimir, certo? E o que podemos imprimir é que podemos imprimir por dia. E o dia em que vamos imprimir é que vamos imprimir bem, tal querermos imprimir, digamos na quarta-feira. Como fazemos isso? Bem, vamos pensar nesse dia para que possamos dedicar dias e você possa ver que ele até mesmo sugere isso para nós. E agora, como podemos realmente sair de uma de nossas mortes? Bem, temos esse colchete aqui e uma visão que podemos colocar em um número. E esse número representa o índice de um lado da lista, certo? Então esse será o elemento do índice um e X2 e X3 e X4 e X5. Mas pessoal, quarta-feira, vamos fazer três e vamos jogar e ver se saímos na quarta-feira e, de fato, um dia, quarta-feira, isso já é incrível. Agora, o índice aqui começa em um em vez de zero. Portanto, isso só é importante se você já está programando e se já programou antes, geralmente quando você faz outras coisas em outras linguagens e outras linguagens de programação, geralmente os índices começam em zero. Esse não é o caso em Lua. Em Lua, todo índice começa com um. Isso é muito importante. Agora, se você não sabe o que isso significa, não se preocupe. Isso é bom. Só estou dizendo que, para pessoas que já programaram antes, isso é uma coisa muito, muito importante a se ter em mente. Agora, é claro, temos uma saída, mas e se quisermos, produziremos tudo. Então, isso vai parecer um pouco mais complicado, mas temos um for-loop que podemos usar que basicamente produzirá, bem, tudo dentro dessa tabela em particular. Agora, há duas coisas diferentes que podemos fazer. Podemos usar um for-loop normal exatamente onde estamos, tipo, Ei, eu quero começar com um e quero parar em. Este é um dia de hashtag muito importante. Portanto, esse seria o comprimento dessa tabela em particular. Por exemplo, quantos elementos estão nessa tabela? Eu quero aumentar em um. Para isso eu quero fazer e depois imprimir dias. Mais uma vez, colchetes. Vi que isso, em teoria, deveria sair de segunda, terça, quarta, quinta e sexta-feira. Isso deve ser totalmente bom. Vamos ver se isso funciona. E, claro, segunda, terça, quarta, quinta e sexta-feira. Absolutamente, não se preocupe. E funciona totalmente bem. Isso é muito legal. Há uma segunda maneira de fazer isso. Isso funciona totalmente, mas há outra maneira de fazer isso. Agora esse, um pouco mais complicado. Porém, a razão pela qual a outra pode ser interessante é porque, no momento , as tabelas estão mapeadas para o índice. Então, basicamente, isso é vermelho, isso é um, isso é dois, isso é três, isso é quatro, isso é cinco. Em teoria, eu poderia fazer o que eu quisesse. Então eu poderia fazer, e eu vou, vou fazer coisas malucas. Digamos que um igual a isso é igual a isso, C é igual a isso, d é igual a isso, e então F é igual a isso. F é E. Na verdade, aí está. Então você pode ver que não há, não, não há erros aqui porque agora eles estão mapeados para chaves diferentes, certo? Agora, a loucura é que se eu ficasse com isso e estivesse jogando isso, o que você descobrirá é que um dia é nulo. E também não estamos produzindo nada porque não há, tudo isso é nulo. Isso, isso não funciona. Mas isso que precisamos fazer é obter o par de valores-chave. Porque basicamente transformamos essa tabela de uma lista normal na qual você pode acessar os elementos por meio do índice em uma espécie de dicionário ou mapa que mapeia um valor para outro valor. Agora podemos fazer um for-loop com uma chave e um valor, e isso será em pares da tabela de dias. Então vamos fazer alguma coisa. Mas isso parece muito louco. A ideia geral, no entanto, é essa, essa é a novidade. O que estamos pensando é que estamos recebendo uma chave que é sempre a primeira coisa aqui, certo? Então a é igual, essa é a chave e o valor é o que está escrito dentro dela, certo? Então, antes a chave era apenas o índice 1.234,5. E agora a chave é a, B, C, D e E. Essa é a única coisa que mudou. E se fizéssemos o seguinte, se agora fizéssemos o dia ou, digamos, a chave. E então vamos imprimir a chave. E eu vou fazer o valor e depois imprimir o valor. O que você descobrirá é que isso gerará valor chave na segunda-feira e assim por diante. Mas vamos jogar isso. Você verá a chave a na segunda-feira, chave C é quarta-feira, curiosamente, e isso também é muito importante. Não está mais em ordem. Isso não é loucura? Bem, esse é realmente o caso. Então, vamos jogar isso de novo. Como vemos, tivemos segunda, quarta, terça, sexta e quinta-feira. Vamos fazer isso de novo e receberemos o mesmo pedido novamente. Essa é outra lição extremamente importante porque se estivermos usando esses pares aqui, a ordem em que os salvamos não é garantida. Isso é extremamente importante e deve ser basicamente lembrado. No entanto, ainda é uma coisa muito, muito interessante. Mas tenha isso em mente, é muito legal. E se eu excluísse o valor das chaves aqui novamente, certo? E deveríamos passar por isso de novo. Qual será a chave? Bem, é exatamente 12345. Agora, o pedido está correto porque eu não me cito sobre isso. Não tenho 100% de certeza, mas tenho certeza de que as chaves são classificáveis ou ordenáveis, certo? Então, 1234, há uma ordem definitiva para essas coisas, então a ordem sempre será a forma como você basicamente as salvará. E isso é muito legal. De fato. Mas isso não é tudo, porque o que está faltando nos dias de hoje? Bem, é claro, faltam sábado e domingo. Então, o que podemos fazer é realmente inserir certos valores nessa tabela. Podemos fazer o ponto da tabela e você pode ver que há um monte de coisas que podemos fazer, criar, podemos encontrar certas coisas. Podemos até ver os retornos da chave numérica máxima. Tem coisas malucas. Podemos mover coisas, podemos classificá-las, podemos cloná-las. Mas, para nossos propósitos, o que eu realmente quero é inserir algo. E o que eu quero inserir é que eu quero inserir em dias. Então, esta é a tabela na qual queremos inserir. Então, precisamos colocar o específico, neste caso, o que eu realmente quero fazer é colocar isso em um lugar específico. Então, vou colocar isso na posição número seis. E então eu quero colocar o valor. E o valor aqui é sábado. E o que podemos fazer é simplesmente copiar isso. E então, na posição sete, neste caso, eu quero colocar no domingo. E se fôssemos produzir isso agora, mais uma vez, posso pegar o que eu quiser. Na verdade, vamos pegar este e depois excluí-lo daqui. Tudo bem, então não incluímos a saída aqui. Vamos jogar, e você descobrirá que agora temos uma chave seis que retornará o valor de sábado e uma chave sete que retornará o valor de domingo. Muito interessante, de fato. E então uma última coisa aqui. Agora eu sei que isso foi bastante e que são muitas coisas novas ao mesmo tempo. Não se preocupe nem um pouco. Nós seremos capazes de, você sabe, você será capaz de navegar por isso com facilidade um pouco mais tarde. No entanto, o que eu sempre recomendo, como sempre, é experimentar um monte de coisas com isso. Experimente. Tendo valores diferentes aqui ao invés de cadeias de caracteres, você pode colocar números aqui. E, a propósito, isso também é uma coisa muito interessante. Você pode até mesmo misturar e combinar diferentes valores de tipos de variáveis. Você pode ter números aqui e assim por diante. O que na verdade é muito interessante porque isso significa que você pode ter quase uma aula. Agora, isso é um pouco mais avançado e, mais uma vez, algo para as pessoas que já programaram em outro idioma. Então você pode ter, por exemplo podemos ter uma pessoa que tenha um primeiro nome, por exemplo, john. E pode ter um sobrenome, que talvez seja Smith. E então você pode até ter um h, certo? O que talvez seja um 32. E agora o que eu posso fazer é imprimir pessoa, pessoa. E então queremos colocar FirstName, esse y. E então queremos ter a pessoa. Também podemos fazer pontos pessoais, e isso é loucura. Podemos até mesmo fazer pontos pessoais. E você pode ver todas as três coisas diferentes que colocamos nessa tabela em particular. Podemos produzir assim. Então, podemos fazer o sobrenome e depois dizer, é que podemos dizer pessoa. Nova era, anos. Deixe-me diminuir um pouco o zoom. Aí está. Então, pessoa e o quê? Ele exibirá o primeiro nome da pessoa. É assim que podemos nos escrever. Também podemos acessar isso por meio disso. E nós só temos o é e depois a idade, anos de idade. Vamos produzir esse LLS, jogar isso e ver se isso funciona. E, claro, seu filho John Smith tem 32 anos. Absolutamente incrível, incrível. Isso é muito legal e claro, podemos ir um pouco mais longe. E agora isso é só, eu só quero mencionar isso. Podemos até mesmo fazer uma mesa de mesas. Isso significa que, em teoria, podemos ter várias pessoas e depois ter uma lista dessas pessoas. Não vamos fazer isso aqui porque isso é uma loucura absoluta. Isso está muito além do escopo da introdução de Lula aqui. Eu queria te apresentar as mesas. Eles podem ser bem complicados. Isso pode ser um pouco complicado. Isso pode ser um pouco complicado. Mas espero ter sido capaz de levá-lo a entender o que está acontecendo aqui. Mais uma vez, eu recomendo usar o script aqui, que obviamente está sempre disponível para download. E você pode pegar isso e tentar. Tente fazer coisas diferentes com ele, inserindo coisas em locais diferentes, inserindo coisas espalhadas ao redor da pessoa que está aqui. Eu recomendo fortemente fazer isso e tentar ter uma ideia de como isso funciona. Mas, mais uma vez, para resumir as tabelas gerais, ou elas podem ser listas de coisas que têm certas chaves e certos valores. Se você não especificar as chaves , as chaves serão apenas uma, qualquer que seja a quantidade de elementos dentro dessa tabela ou lista, nesse caso. E você pode percorrê-los com dois for-loops diferentes, dois estilos diferentes de for-loops. E isso é muito, muito legal, de fato. Podemos até usar as tabelas para fazer algo como uma aula. Agora, neste caso, é uma pessoa aqui que tem um primeiro sobrenome e uma idade. E podemos produzir isso de duas maneiras diferentes. Bem, isso vai ser o fim desta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo . Nos vemos na próxima palestra. Então, sim. 14. (Lua) A Biblioteca de matemática em Lua: Tudo bem, bem-vindo de volta à introdução do banheiro aqui para os núcleos de obstáculos. E nesta palestra vamos falar sobre a biblioteca de matemática, certo? Então, vamos mais uma vez, é claro, criar nosso script aqui, 11. Isso vai ser um liberal em matemática. Aí está. E isso vai ser 11 de matemática, tudo bem. E isso vai ser apenas uma introdução muito, muito pequena aqui. Mas pode ser útil. Então, é claro que já fizemos algumas coisas matemáticas, certo? Adicionamos, subtraímos, multiplicamos, dividimos e até obtivemos o restante. Coisas muito loucas que já fizemos. Mas com a biblioteca de matemática, podemos fazer coisas ainda mais loucas. Então, se fôssemos imprimir, por exemplo , menos cinco, mas pensássemos, sabe o que? Na verdade, eu realmente não me importo se é menos cinco ou mais cinco. Na verdade, eu só quero o número absoluto para isso. Bem, podemos simplesmente imprimir um ponto matemático. E você pode ver aqui todas as coisas malucas que basicamente podemos obter com essa biblioteca matemática. Podemos obter um número aleatório. Vamos ver isso em um momento. Podemos até ficar loucos por Pi. Podemos fazer o expoente, obtemos cosseno, podemos retornar um ângulo que você dá em radianos e ele o transforma em graus. Nós obtemos o logaritmo. Há muitas coisas, como você pode ver claramente, que podemos fazer. E isso pode ser extremamente útil para fazer ainda mais coisas matemáticas. Se você diz: Oh, eu não preciso dessa coisa de matemática. Bem, por exemplo, ter coisas como a onda senoidal é realmente muito útil. Porque o que você pode fazer com um sinal é, por exemplo fazer círculos perfeitos para estragar as coisas em círculos. Só estou dizendo que essa é uma das coisas em que isso pode ser extremamente útil. Mas neste caso, na verdade, queremos abdominais, que significa absoluto. Então, estamos obtendo o valor absoluto de menos cinco, que, se jogarmos, é claro que é cinco, porque, bem, esse é o valor absoluto. O valor absoluto não se importa com o sinal. Só se preocupa com, bem, qual é o valor real? Há outras coisas que podemos fazer. Então, por exemplo, podemos fazer uma matemática verde-azulado. Então esse vai ser o teto. Você pode ver que ele retorna o menor número inteiro, maior ou igual a x. O que isso significa? Ok, isso parece muito mais louco do que realmente é. Se colocarmos 10.21, ele simplesmente retornará, bem, ele vai selar. Então, na verdade, isso vai transformar isso em um número inteiro, o que significa que vai ser arredondado para cima para o próximo número inteiro. Se realmente fizermos o outro , que vai ser o chão, isso vai ser arredondado para baixo. Então, podemos realmente colocar isso para cima, arredondar para cima e este arredondar para baixo, duplo. Lembre-se de que isso não arredonda com as coisas normais de arredondamento, certo? Então, também temos uma rodada. Este, neste caso, também se esgota porque, na verdade, parece correto. Ou a regra, certo? 0,5 significa que você arredonda para cima e tudo abaixo de 0,5, você arredonda para baixo. Mas vamos ver, isso deve ser 111010. Uh, veja se esse é realmente o caso. E, claro, 111010. Perfeito. E vamos parar com isso e vamos fazer isso de novo com 0,5 e então deveria ser 111011. E, claro, 111011, exatamente como chegamos lá. Eles são absolutamente perfeitos. É exatamente assim que isso funciona, porque essas são, digamos, as regras normais de arredondamento. Aí está. Então, espero que isso faça sentido. Também podemos obter o mínimo e o máximo. Então, isso também pode ser muito útil na verdade. Então, isso é min, que é basicamente, vai te dar o número mínimo. Você colocou dois números, certo? E ele retorna um número menor dado como r Omega. Então isso deve fazer muito sentido. E então, é claro, podemos ter dois corolários disso, que é o máximo, que retorna o maior número. Você pode realmente, tenho certeza, colocar quantos números quiser. Vamos fazer isso. Por que não 60? Quero dizer, isso não mudaria nada, isso, em teoria, também deveria funcionar. Vamos apenas ver. E, de fato, funciona. O primeiro é um e o segundo é 515. Portanto, isso pode ser muito útil, por exemplo, talvez você queira obter o número mais alto para uma pontuação alta ou algo parecido, as funções Min e Max podem ser muito úteis. Mas também vamos imprimir pi porque chapéu branco não é potência, mas pi. E também podemos usar a matemática da raiz quadrada que SQRT é a raiz quadrada de 25. Então pi, é claro , será 3,141, 5265, algo assim. E então a raiz quadrada de 25 deve ser cinco. Vamos ver, a que distância eu estava com pi? 314-15-9265? Acho que eu estava certo. Acho que eu disse 649. Não tenho certeza, mas isso basicamente é pi. E isso é claro com precisão, isso é amina. De qualquer forma, nunca precisarei dessa precisão em jogos, tenho certeza de que essa é a precisão que você obterá, a circunferência do universo observável em milímetros. Então, tenho certeza de que tudo vai ficar bem. E então, é claro, a raiz quadrada de 25 é cinco. Perfeito O último que sai. Você também pode ter alguma aleatoriedade. Agora, é muito importante que a aleatoriedade do computador seja sempre pseudo-aleatória. Basicamente, isso significa que você o semeia com um determinado valor. E quando você gera números que sempre serão os mesmos, isso é o mesmo. A ideia de, por exemplo quando você pensa na geração mundial do Minecraft , como exemplo, você pode colocá-la em uma semente e, em seguida, ela sempre gera o mesmo mundo. Bem, como isso funciona? Essa é exatamente a semente que você está plantando. E então os valores que você divulga são sempre os mesmos. Então, podemos fazer um aleatório, isso vai te dar um número, número 0-1. E você também pode fazer matemática aleatória de pontos. E podemos realmente colocar coisas lá. Então, podemos colocar 0,10 e esses serão os limites inferior e superior que você pode obter. Então, vamos jogar isso e podemos ver que o primeiro número é 0,6, seja o que for, seja o que for, o que for, o que for, e depois 42. Quero dizer, que número perfeito aqui para obter n. Se pararmos com isso e jogarmos isso de novo, você descobrirá que, oh, são exatamente os mesmos números porque, e isso é exatamente a coisa, porque a semente é a mesma, certo? Então, temos a mesma semente aleatória aqui. Se eu mudar isso, agora teremos números completamente diferentes. Então você pode ver que agora obtemos 0,0, 69,57. Então, quando você coloca na semente, certo, se você colocar 100 também, você deveria, em teoria, obter exatamente os mesmos números que eu obtive. Ou seja, essa é a ideia dessa aleatoriedade ou pseudo-aleatoriedade. Na verdade, isso é muito legal, geralmente se você quiser randomizar isso completamente, o que você gasta é a quantidade de segundos no seu computador ou a quantidade de tiques no seu computador, porque isso geralmente é aleatório o suficiente para uma semente. Para resumir. No geral, as funções matemáticas são, bem, muitas e podem oferecer muitas coisas diferentes. Você pode números absolutos, pode arredondar para cima e para baixo. Você pode obter o minimax e até obter algumas constantes como pi aqui e até números aleatórios, cujos finais de jogos são extremamente úteis. E eles podem simplesmente ajudá-lo muito em várias coisas diferentes. São inimigos matinais em uma determinada área que são um pouco aleatórios ou que dão atributos aleatórios aos inimigos. Todo tipo de coisa. Muito legal mesmo, certo? Mas isso realmente conclui esta palestra e também toda a introdução inferior. Espero que tenha sido uma introdução boa o suficiente para você se familiarizar um pouco com Laura. Se você ainda não está se sentindo muito confiante nisso, tudo bem. Definitivamente, há duas coisas que eu posso recomendar. Primeiro, se há certos tópicos que discutimos sobre os quais você está um pouco instável, tentou assistir à palestra novamente e ver se com todas as coisas diferentes sobre as quais falamos até agora, em retrospectiva, elas agora são um pouco mais fáceis de entender. Número dois, o que eu recomendo fortemente é brincar com eles, com os diferentes tópicos que abordamos. Basta brincar um pouco com as funções matemáticas aqui, brincar com tabelas, brincar com loops e declarações if e else. Você já pode fazer muitas coisas apenas com essas 11 coisas sobre as quais falamos. Mesmo que não pareça muito. Estou te dizendo, essa é a base na qual tudo, cada jogo é basicamente criado com todos esses princípios básicos. Sim, claro, também há muitas outras coisas. Mas esses princípios básicos, se você não pode usá-los , todo o resto é irrelevante porque você precisa saber o básico, os fundamentos. Caso contrário, simplesmente não funciona bem. Com relação a isso, estamos enfrentando obstáculos adequados. Se isso tem sido útil para você até agora, eu realmente agradeceria sua avaliação. Caso contrário, nos vemos na próxima palestra. Então, sim. 15. (Roblox) Roblox Studio explicado: Tudo bem, bem-vindo de volta às pontuações do Roblox. Nesta palestra, vamos dar uma olhada em algumas das interfaces do usuário do Roblox Studio. Agora, isso apenas fornecerá uma visão geral, não incluirá todos os botões e o que tudo faz, porque isso exigiria basicamente um vídeo de duas horas. E não era bem isso que eu tinha em mente. Eu só queria mostrar a vocês cada uma das diferentes janelas aqui e aproximadamente o que elas fazem. Então, ou talvez sem a saída, será aproximadamente o que você verá ao abrir o Roblox Studio pela primeira vez com um jogo personalizado, a primeira coisa que eu realmente quero que você faça é ver e adicionar a saída aqui, porque a saída é uma das coisas mais importantes que usaremos durante todo o curso, porque basicamente nos permite imprima tudo o que quisermos por meio de scripts. E é aqui que isso será exibido. Então vamos nos concentrar nessa grande área aqui, que é uma espécie de visão da câmera. E você pode ver agora que estou no modo de seleção. Também há o modo de movimento, modo de escala e o modo de rotação. Digamos que no modo de seleção. E se eu fosse clicar com o botão direito sobre isso, agora eu posso me mover se eu mover a câmera, mas eu posso ampliar com a rolagem da roda do mouse. E se eu clicar com o botão esquerdo, posso realmente selecionar certas coisas. Então você pode ver agora que há uma borda azul ao redor, o que significa que eu selecionei esse objeto. Essa é a ideia geral. Também posso me movimentar com WASD e com E e entrar na fila, ela sobe e desce. Você pode ver que quando eu movo a câmera no canto superior direito, o cubo aqui também se move, porque este é um espaço tridimensional, ele é representado com um valor x, um valor y, e um valor z disso é apenas um sistema de coordenadas tridimensional. Eu posso clicar nos rostos aqui e então ele vai mudar para aquele rosto. Então eu posso ir para a vista de cima para baixo. E agora eu tenho tudo em vista de cima para baixo. Pode ser útil para certas coisas, mas eu também posso sempre sair dela. Se eu selecionar um determinado objeto, você poderá ver que ele se acende no Explorer à direita, à direita, para que você possa ver que a pequena localização aqui é destacada. E a ideia geral é que eu também posso simplesmente clicar nele e depois ele também é destacado. Então, essa ideia do explorador. O explorador representa tudo o que está dentro do nosso jogo, tanto dentro do mundo do jogo. O mundo do jogo é todo o material do espaço de trabalho, certo? Então, se eu clicasse no sinal positivo aqui, eu poderia adicionar um monte de coisas aqui. Não vamos acrescentar nada agora, mas eu poderia acrescentar uma quantidade insana de coisas. Isso é basicamente tudo o que vemos. E também há outras coisas, certo? Então, há os serviços de iluminação de um jogador, algumas coisas de armazenamento. Algumas coisas também passarão pela maioria dessas coisas durante as palestras. Mas, por enquanto, o espaço de trabalho é realmente a coisa mais importante que temos. E talvez o serviço de script do servidor, onde basicamente carregaremos todos os nossos scripts por enquanto. Então, no canto inferior direito, quando selecionamos algo, podemos ver que temos algumas propriedades. As propriedades representam um determinado objeto, certo? Então, nesse caso, esse local específico de desova tem essas propriedades específicas, assim como você é humano, certo? E você tem um certo nome que seria uma propriedade, apenas como uma ideia geral. E você pode ver que diferentes tipos de objetos têm diferentes tipos de propriedades. Portanto, nesse caso, o local de desova é do tipo local de desova e tem alguns dados. Então você pode ver que é o que é a caneta laranja ou esse nome tem um tamanho? Então, isso faz parte da transformação e tem um pivô, tem um certo comportamento, tem colisões, tem algumas propriedades de porta e assim por diante. Ele ainda tem um campo de força específico para os locais de desova. O mesmo acontece com as equipes, tenho certeza. Então, há um monte de coisas e você pode até adicionar mais atributos aqui. Muito, muito interessante. De fato, propriedades também são algo que veremos em uma palestra futura. E depois, para dar uma pequena visão geral. Então, se selecionarmos isso e agora podemos mudar para o modo de movimento, e agora podemos movê-lo. Então você pode ver que agora eu posso mover isso. Eu também posso escalá-lo. Eu posso ver a balança que, basicamente, se segurarmos a tecla Shift , a escalaremos uniformemente. Se mantivermos o controle e o escalarmos em um eixo, podemos até girá-lo dessa forma. E se você quiser que isso se encaixe, então você pode fazer isso girando no movimento para cá, encaixar na grade, e agora eu só posso girá-la 45 graus. Eu só posso movê-lo em incrementos de uma estrela. Essa é a ideia geral aqui. A maioria dessas outras coisas também veremos ao longo do curso. A transformação ainda pode ser algo interessante. Então, se selecionarmos o local do spa novamente, você pode ver que essa não é a transformação aqui. Podemos entrar em mais detalhes sobre como fazer certas coisas. Então você pode ver, eu tenho um controle muito mais preciso de tudo, especialmente quando eu dimensiono isso. Você pode ver agora que o tamanho do estudo está realmente representado aqui em números, o que é realmente incrível. Então, eu posso ser muito, muito preciso com as coisas do avatar do momento atual. Nós realmente não precisamos de nada aqui. Então, isso é só para adicionar avatares, neste caso, testar, só para testar certas coisas aqui. A partir daqui podemos jogar, podemos iniciar um servidor local com x quantidade de jogadores. Podemos até mesmo mudar o emulador do player. É muito interessante. A visualização é realmente muito importante porque aqui podemos ativar e desativar certas janelas. E, como você pode ver, na verdade, existem alguns gerenciadores de ativos e temos a caixa de ferramentas, o navegador de objetos, a análise de scripts e a barra de comando. Então, há um monte de coisas aqui, maioria das quais na verdade não precisamos no momento. A maioria das coisas interessantes é que talvez a caixa de ferramentas seja interessante. Então é aqui que você pode carregar certas coisas do Roblox em seu jogo, certo? Então você pode adicionar luzes, você pode até adicionar alguns plug-ins nesse caso, certo? Assim, você pode adicionar plug-ins. Alguns custam, outros Roebuck, outros não. Alguns deles são gratuitos. No entanto, sempre tenha cuidado ao adicionar coisas de outras pessoas que elas possam ter códigos maliciosos em seus scripts maliciosos. Isso existe. Principalmente, isso é para coisas que são gratuitas. Sempre dê uma olhada em quantas avaliações eles têm e também quantas avaliações positivas são metade, certo? Então, algo que seja 91% positivo e tenha mais de 100 avaliações, provavelmente vai ficar bem. Portanto, tenha isso em mente e podemos encerrar isso. Você pode adicionar uma grade que agora é uma força à grade; podemos fazer uma grade de dois tipos ou também uma grade de 16ª nota. Isso só ajuda você a ver o que está acontecendo. renderização em wireframe basicamente desliga todos os sólidos, apenas fornece um wireframe de tudo. Isso pode economizar uma certa quantidade de poder de processamento do seu PC, basicamente, muito lento. E aqui estão os plug-ins, por enquanto, não usaremos nenhum plug-in para a série de palestras, porque geralmente podemos fazer quase tudo o que precisamos manualmente ou sozinhos. No entanto, existem alguns plug-ins muito legais que estão disponíveis. Mas, por enquanto, não vamos nos concentrar nisso, certo? E essa é uma visão geral. Como eu disse, poderíamos entrar em detalhes malucos sobre todo tipo de coisa por enquanto, vamos ficar bem com isso. E então, basicamente, partiremos daqui e daremos um passo de cada vez. Mas isso vai acabar com esta palestra aqui até a próxima vez. Então, sim. 16. (Roblox) Referência a uma parte: Tudo bem, bem-vindo de volta ao básico do Roblox aqui para o curso de robótica. E nesta palestra, vamos dar uma olhada nas peças e como referenciá-las. Então, o que são partes, enquanto poros são tudo que existe no espaço de trabalho, por assim dizer. Então, se clicarmos nessa parte aqui, você verá que estamos criando uma nova porta. Podemos excluir isso novamente. Também podemos usar o ponto positivo na área de trabalho e descer até a porta ou podemos simplesmente colocar uma parte e você pode ver a parte e, em seguida, ela também cria uma nova peça para nós, se tivermos essa porta. Agora podemos arrastar isso e movê-lo. E podemos fazer todas as coisas que vimos até agora, certo? Podemos nos movimentar e escalar esse porto. Podemos fazer isso maior, podemos fazer isso menor. Podemos mover isso de um lado para o outro. Portanto, há muitas coisas que podemos fazer com essa porta em particular. E vai ser muito interessante fato, agora este se chama porto. E o que talvez queiramos fazer é referenciar isso dentro de um script, certo? Então, há várias maneiras de fazer isso. Por enquanto. Vamos criar quase todos os nossos scripts em vez do serviço de script do servidor, o que tornará isso um, bem, um script de servidor, certo? Isso só será executado no servidor. As diferenças entre servidores e clientes falarão um pouco mais sobre isso nos próximos anos, pois uma pequena visão geral em geral, o servidor é basicamente o que o Roblox controla. É como se em algum lugar em um servidor, em algum lugar no Roblox Land, você não tivesse nada a ver com isso. Você é o cliente, então seu PC é o cliente. Quando você se conecta a um jogo, você se conecta a um desses servidores e seu cliente obviamente não pode fazer tudo, certo? Assim, o cliente pode alterar o número de moedas que você tem. Porque se você fosse capaz de fazer isso, você poderia simplesmente apertar um botão ou criar um script personalizado e dizer : Oh, eu tenho 1.000 moedas e os servidores , sim, com certeza. Você tem 1.000 moedas. Portanto, deve haver uma dissociação, independentemente disso, neste momento, uma espécie de serviço de script. Vamos criar um novo script, vou chamar isso. Vamos escolher esse traço F2 O2 e chamaremos isso de referência. Ligo ampliará isso mais uma vez e chamaremos isso referência a uma parte do espaço de trabalho. Isso vai ser muito interessante, de fato. Então, há algumas coisas que podemos fazer. Então, digamos que queremos fazer referência à placa base. Nós podemos fazer isso. Vamos criar uma placa base variável local e isso é igual ao jogo. Então, sempre queremos começar com o jogo em letras minúsculas. Isso é muito importante, e agora você pode ver que estou recebendo tudo o que está em vez de aqui. Então, basicamente, o jogo é a raiz do explorador. Você pode ver que eu tenho jogadores, que é esse cara aqui. Eu consigo espaço de trabalho com esse cara. E há um monte de outras coisas agora, eu me pergunto se você tem um espaço de trabalho. Mais uma vez, muito importante. O invólucro é importante aqui. Sempre tenha isso em mente. Um espaço de trabalho com um w minúsculo pode parecer que pode funcionar, mas não funcionará. Portanto, tenha isso em mente. Sempre verifique se o invólucro está correto. Isso e agora, de repente, você pode ver que há um monte de coisas, mas também há uma câmera, que está aqui. E há a primeira parte. Olha isso. Essa é a parte legal, é a mesma porta? De fato, é. E o nome aqui tem que corresponder exatamente. Se eu renomear isso, se eu clicar nele, pressione F2 e renomeie para a porta p minúscula. Isso não funcionará mais. Agora, você pode até ver, isso nos sugere uma porta com letras minúsculas porque esse é o nome da parte que estamos referenciando. Tem que corresponder exatamente. Sei que estou insistindo nesse ponto, mas é extremamente importante porque tenho visto repetidamente que as pessoas acabaram de trocar o invólucro. O invólucro é importante. Ok, então agora estamos referenciando a peça com p minúsculo, certo? Ok, tudo bem. Como placa de base, não é isso que queremos. Na verdade, queremos referenciar as placas de base. Então, basicamente, aí está. Eu posso preencher isso automaticamente com a guia. Agora eu mencionei a placa base. Eu posso fazer coisas com ele. Bem, tudo bem. Mas e a minha parte que eu quero referenciar? Bem, vamos dizer local novamente. E então vamos chamá-la de minha parte pois é apenas o nome da variável, que é diferente do nome do objeto da peça. Isso também é muito importante. Isso é o que está representado. Insira o código enquanto essa é a parte real do objeto físico. E mais uma vez, vamos dizer espaço de trabalho do jogo e depois portar, não pai. Na verdade, queremos estacionar. Aí está. E agora podemos fazer coisas com uma porta porque a peça tem diferentes tipos de propriedades. Podemos alterar essas propriedades de dentro do script. Então, podemos dizer minha parte, que é a variável que aponta para essa parte em particular. Isso, e agora você pode ver que eu posso mudar a posição, eu posso mudar o nome, a rotação, a cor. No nosso caso, vamos apenas mudar a transparência para 0,5. E então também faremos minha parte: cor de pontos. E então podemos mudar isso para uma cor de três pontos nu. E então faremos algo como se pudéssemos realmente mudar a cor aqui. Então, vamos escolher um lindo azul. Sim, isso é bom. Então, isso é apenas gerar automaticamente essas cores. Você pode ver se eu clicar na altura disso, se eu clicar no sábado, como você pode ver, na cor aqui, e você pode clicar na roda de cores para mudar a cor, que é muito, muito legal. Agora, o que vai acontecer quando realmente começarmos o jogo? Bem, vamos entrar na visualização do jogo. Ouvimos a porta agora , parece completamente normal, mas se eu começar o jogo, deve ficar transparente em 50 por cento. Portanto, ele deve ser 50% transparente e deve ficar azul. Vamos jogar o jogo e ver onde, em vez do jogo. E se eu for por aqui, você pode ver que agora é um pouco transparente e é azul, exatamente o que queríamos. Se entrarmos no espaço de trabalho, podemos até ver a peça aqui. Agora ele tem uma cor diferente e a transparência é 0,5. Muito legal, eu posso ver que quando não estamos mais jogando o jogo, ele basicamente redefine suas propriedades originais nesse caso, porque alterá-las em vez do script, isso não as altera permanentemente. Então, essa seria uma forma de referenciar uma peça em um espaço de trabalho por meio do nome aqui. Agora, mais uma vez, é extremamente importante que se eu mudar os nomes aqui para, por exemplo, minha parte legal, certo? Agora, se eu jogasse isso agora, o que você acha que acontece? Bem, estamos nos referindo a algo que é chamado de parte. Vamos apenas jogar. E veremos que essa parte não é um membro válido das obras ou não desenvolve um membro do espaço de trabalho. espaço de trabalho não mudou sua cor nem sua transparência porque agora a peça é chamada de Mike cool part. Portanto, tenha isso em mente. Se você receber esse erro aqui, significa simplesmente que você provavelmente está se referindo a algo que teve um nome alterado. Se tivermos certeza de que estamos fazendo isso, de repente, se jogarmos isso, agora podemos ver que não estamos recebendo nenhum erro. E mais uma vez, obtemos nossa parte azul que é transparente. Muito legal, certo, resumir, como eu disse, garante nomear as coisas corretamente. Você pode usar o game dot workspace dot, qualquer que seja o nome da sua porta que você deseja referenciar. Certifique-se de que eles garantam que o invólucro esteja sempre correto. E então você pode acessar as propriedades fazendo sua parte variável dot. E então você pode acessar todos os tipos de propriedades que fazem parte dessa parte específica. E você pode alterá-los com um roteiro, mas isso vai ser o suficiente para esta palestra aqui. Espero que tenham achado isso útil , os alertas e o novo vemos na próxima palestra. Então, sim. 17. (Roblox) Tipos de scripts: Vamos continuar com os obstáculos básicos aqui, siga o curso Roblox e, nesta palestra, daremos uma olhada nos diferentes tipos de scripts. Então, já vimos isso anteriormente quando criamos um novo script no serviço de script do servidor, ele é basicamente usado com frequência como script e script de módulo. Há, no entanto, outro tipo de roteiro. Se digitarmos isso aqui, você verá que também existe um script local. Infelizmente, o script normal aparentemente não tem uma dica de ferramenta, no entanto, o script local tem. Assim, você pode ver que um script local é executado no cliente e não nos servidores. Portanto, os scripts do logotipo podem ser colocados sob os seguintes itens. A mochila de um jogador, o modelo do personagem do jogador, o uso da GUI, o script do jogador e o primeiro serviço replicado, o script do módulo, à direita, é um fragmento de script e só é executado quando outros scripts usam os Requisitos nele. Então essa é interessante. E o roteiro, bem, isso é apenas um roteiro normal. Até agora, usamos scripts normais no serviço de script do servidor. E isso então foi executado no servidor e no cliente. Essa é a ideia geral. Agora, há algumas coisas que você só quer que o cliente aconteça. Essas são principalmente coisas que são basicamente específicas do cliente. Então, talvez visuais, certo? Talvez você queira adicionar imagens a um determinado cliente. Isso é basicamente algo que você quer fazer com o cliente. Scripts locais ou scripts de clientes. Eles podem se comunicar com um servidor por meio de eventos remotos. Mas esse é um tópico muito mais parecido com um tópico intermediário e avançado, sobre o qual não falaremos agora. Mas a ideia geral é que sim, podemos ter scripts locais. Então, se formos, mais uma vez, dar uma olhada em onde podemos adicionar isso, uma mochila, um modelo de personagem, um GYE, os scripts de um jogador replicarão o primeiro serviço. Então, o que podemos fazer é adicionar isso ao replicado primeiro. Você pode ver que até diz: “Ei, roteiro local”. E se fizéssemos isso, e disséssemos apenas imprimir, imprimir, Hello, World está totalmente bem. Vamos renomear isso e eu direi script local O3 neste caso. E então, apenas um exemplo de script local, neste caso vamos imprimir hello world, e vamos ver se jogarmos isso, ele será produzido. Mas agora, e isso é uma coisa crucial. Agora temos um cliente aqui. Então isso é o que não tínhamos antes, certo? Agora, na verdade, obtemos algo produzido pelo cliente. E isso é extremamente importante se entrássemos na referência aqui e fizéssemos um HelloWorld impresso, exatamente a mesma coisa, só por uma exatamente a mesma coisa, só por questão de argumento e tocarmos isso. Você vai ver que agora está no servidor. Você pode ver que lá está. Então o HelloWorld está no servidor da O2 referenciando a linha oito e o outro, certo, o HelloWorld, este é do cliente ou de três scripts locais para escrever. Agora você pode dizer, bem, qual é a grande diferença, certo? Não há nada louco acontecendo. Bem, agora este é meu cliente e eu posso realmente mudar para o servidor e o servidor. O servidor basicamente controla tudo, certo? Então, o servidor, em teoria, eu poderia simplesmente dizer: Ei, você sabe o que, não, eu vou mudar meu cara para cá e vou movê-lo. Agora, você pode seguir as regras normais de movimento. Mas se você tentasse mudar sua posição em relação ao cliente, isso não funcionaria, porque é aí que entram as coisas anti-trapaça. Portanto, a separação cliente-servidor é muito importante. Então, essa é basicamente a ideia geral de um script local. E como eu disse, você pode se comunicar com o servidor, mas isso é algo para um nível intermediário. E então um script de módulo é um pouco mais complicado. Então, vamos criar um módulo de teste O3 de script de módulo aqui. Nesse caso, vamos realmente chamar esse depoimento. Aí está. Então, no script do módulo, a ideia geral é colocar funções ou certas funções, basicamente, que você vai usar muitas vezes, certo? Então, multiplicadores diferentes, funções de bônus diferentes, alguns cálculos que você pode estar usando. Muitas vezes, o que você pode usar é criar uma nova função. E a maneira de fazer isso é pegar essa mesa aqui. Eu vou dizer módulo. Então esse é o nome da tabela que soma. Então esse será o nome do método e, em seguida, o que quisermos. Então, basicamente, vamos fazer um método de soma novamente e vamos retornar esse caso, não repetir, vamos retornar x mais y. Então, mais uma vez, isso é apenas um exemplo. Escreva um método de soma. Você realmente não criaria um script de módulo personalizado para ele, mas só para ver, ok, é assim que você criaria um método em um script de módulo e o referenciaria posteriormente. Então, se tivermos isso, agora podemos, no script do servidor, os servidores mais uma vez criar um script normal e chamaremos isso de módulos de teste de 03 traços. Por que não? Tudo bem. Aí está. E o que vamos fazer é agora conectar de alguma forma esse script de módulo a esse script específico. A maneira de fazer isso é que precisamos usar o método require aqui, mas na verdade queremos fazer uma variável local. Então, vamos chamar isso de soma. Claro, e isso é igual ao método exigido. E então precisamos referenciar o script do módulo. Então, este é o serviço de script do servidor Game Dot e seguida, o módulo de testes.o3 exatamente assim. E então, na verdade , o representará assim, porque podemos começar uma referência de um ponto com um número, mas tudo bem. Podemos usá-lo assim, tudo bem. E então podemos dizer, vamos imprimir isso. Então, vamos imprimir o ponto de soma e você pode ver que agora até nos diz, ei, soma, podemos usar essa tecla Tab para preencher automaticamente e podemos dizer uma camisa 50,23. Por que não? Então, isso seria 73 que estamos imprimindo aqui. Então, vamos jogar. E vamos ver se o servidor imprime 73 aqui. Muito incrível, de fato. E, claro, isso é mais uma vez, apenas um exemplo. A ideia aqui é que você sabe, se você tem certos, se você tem certos números, certo? Então você pode adicionar coisas como, você sabe, você pode adicionar tabelas diferentes. Você poderia acrescentar que talvez exista uma experiência, um multiplicador de experiência ou algo parecido, certo? E então você poderia simplesmente adicionar uma nova tabela e você diria , você sabe, talvez seja fácil, você ganha mais experiência, certo? Então você ganha cerca de 25 pontos. Mais experiente, médio, você fica como uma experiência normal. E então, no máximo, talvez você tenha menos experiência. Isso é apenas mais uma vez, como apenas um exemplo do que você poderia usar aqui. Agora, essa não estaria disponível apenas no módulo, é extremamente importante porque agora é uma variável local, certo? Vamos dar uma olhada. Se fôssemos imprimir a soma R e tentássemos usá-la. Não seríamos capazes de fazer isso. Só usamos alguns aqui, o que é interessante. Agora, se não fizéssemos o local, o que aconteceria agora? Você acha que agora poderemos usar isso? Bem, vamos dar uma olhada, certo, resumo de que ainda não podemos usar isso, porque para usar isso, precisaremos fazer o módulo dot. E agora, de repente, é meio adicionado a essa tabela em particular. E agora, se entrarmos aqui, de repente temos, temos o multiplicador de experiência disponível para nós que é realmente incrível e pode, basicamente , fazer muito sentido, certo? Você pode armazenar muitas coisas em vez de módulos, scripts que você usará em, bem, em todos os scripts diferentes. Talvez um jogador especial nomeie certas coisas para se conectar a determinados serviços posteriormente. Portanto, um script de módulo extremamente útil para muitas coisas. E só para mostrar, você pode ver experiência de soma, meio multiplicador. Se você imprimisse isso , obteríamos um ou aqui, porque esse é exatamente o meio que definimos aqui. Agora, isso é realmente incrível. Então, para resumir, há três tipos de scripts diferentes que são scripts locais que são executados somente no cliente. Depois, há scripts normais que podem ser executados tanto no servidor quanto no cliente, e eles são meio que síncronos automaticamente. E também há módulos, scripts que são usados para armazenar variáveis ou funções que você poderá usar em qualquer lugar do seu código. E isso basicamente ajuda você a não se repetir. De qualquer forma, espero que você tenha achado isso útil e aprenda algo novo e nos vemos na próxima palestra. Então, sim. 18. Visão geral de propriedades: Vamos continuar com a parte inicial do curso de bloqueios de estradas. E nesta palestra, vamos dar uma olhada nas propriedades. Então, vamos fazer um mergulho profundo nas propriedades. Então, vamos expandir essa janela e pegar nossa parte interessante e dar uma olhada em todas as propriedades loucas e diferentes que temos disponíveis. Então, a primeira é a cor do tijolo em geral, a cor do tijolo e a cor, ou quase a mesma coisa. Então, se escolhermos uma cor de tijolo diferente aqui, digamos, como um azul escuro, você pode ver que a cor aqui muda. E a ideia geral da bricolagem é que são cores predefinidas e fáceis de usar. Embora a cor possa ser literalmente como qualquer cor, certo? Se eu escolher uma cor aleatória aqui , ela não vai ter um nome. Então você pode ver que diz que é marrom, verde amarelado. Então, vai se aproximar dessa, mas não é exatamente dessa cor, certo? Então você pode ver que tudo isso é amor. E então eu não sei se essa é olivina, mas se eu mudasse um pouco os números aqui, certo, não mudaria muito em sua aparência, certo? Talvez isso seja como dois aqui. E então será uma violeta de areia. Mas você pode ver que está , não está exatamente aqui. É exatamente como onde está a areia, violeta. Eu não tenho ideia. Não consigo encontrá-lo. Bem, de qualquer forma, essa é a ideia geral, certo? Então você pode colocar um número aqui. Então isso seria um feitiço, certo? Algo parecido. Então agora é preto metálico, mas isso não é realmente uma mentalidade negra. Você pode ver essa cor e essa cor, elas não são iguais. Portanto, é a ideia geral da cor do tijolo e da cor quando se trata de projetar sombras que deve ser bastante autoexplicativa. Neste momento, projeta uma sombra e agora não. Ou seja, isso é praticamente tudo o que existe , o material. Assim, você pode escolher diferentes tipos de material. Portanto, certos materiais têm certas propriedades. Portanto, você pode escolher metal, por exemplo que será um pouco refletivo de luz. Então você pode ver que isso agora realmente se parece muito com metal. O plástico simplesmente não seria nada. Então, se escolhermos o vidro, certo, ele não é 100% translúcido porque é claro que a transparência não existe. Mas se fôssemos tornar isso transparente, agora seria como se um copo Shine n também fosse transparente. Muito legal. Portanto, há vários materiais diferentes que você pode escolher. plástico é o normal sem textura real, certo? Portanto, a variante de material, neste caso, não temos nenhuma variação de material e, na verdade, nem tenho certeza de qual dos materiais tem uma. Podemos ir até o gerente de materiais aqui e podemos realmente dar uma olhada em todos os materiais que existem aqui. Campo de força, por exemplo, poderíamos escolher o campo de força. Então, é assim que o campo de força ficaria. E então podemos entrar aqui e escolher o campo de força, por exemplo, campo de força. E agora isso é um campo de força. Então você pode ver que é muito transparente de todos os lados. Então, isso é realmente interessante. E há um monte de outras coisas. Temos metal aqui, diferentes tipos de metal, folha de diamante, corrosão. Metal é realmente incrível que você possa fazer com algumas dessas coisas, certo? Se escolhermos metal corroído, por exemplo se eles puderem ver a cor aqui muda o que muda na textura em si, certo? Agora você pode ver que a cor aqui é como a cor base. Se escolhêssemos esse vermelho, de repente ele ficaria vermelho, verde, coisas assim. Então, é muito legal o que você gostaria de mudar aqui, e é realmente incrível. Então, é altamente recomendável brincar um pouco com isso e dar uma ideia desse tijolo também é muito legal e você obtém uma textura de tijolo logo em cima dele. Realmente incrível, refletância vermelha e transparência. Já falamos sobre isso antes, certo? refletância basicamente torna a coisa real mais refletida. Agora você pode ver que isso depende do material, porque agora o material do tijolo, na verdade, não pode ser refletido. Se voltarmos para o plástico, que pode ser basicamente qualquer coisa que você quiser, podemos fazer com que isso seja o reflexo que você quiser. 100% seria literalmente, ele reflete toda a luz. Então agora tem um, agora é um espelho, certo? E isso reflete perfeitamente isso. Mas como nosso script torna a transparência de 0,5, na verdade não queremos isso. E agora temos um espelho novamente. Agora você pode ver que não reflete o player. Isso será muito intenso para grande parte do processamento. Mas essa é a ideia geral para a reflexão e depois para a transparência. Já vimos isso , basicamente o quão transparente é essa parte específica. Então, arquivística, uma coisa muito importante sobre todas as propriedades diferentes. E isso é realmente muito importante. Você pode passar o mouse sobre isso e ele fornecerá uma breve descrição do que essa coisa em particular faz. Então, você pode ver que o arquivo é basicamente como : “Isso vai ser salvo aqui? Então, temos um nome de classe que geralmente está bloqueado porque, nesse caso, é uma porta. Também podemos fazer com que isso seja bloqueado. Então, se fizermos essa fechadura, poderemos movê-la por mais tempo. Então, se bloquearmos isso e agora eu nem consigo como se eu não pudesse mais tentar selecionar isso. E agora eu posso voltar aqui e desbloqueá-lo, e agora eu posso selecioná-lo novamente, posso movê-lo novamente. Muito interessante. De fato, o nome aqui e o pai devem ser bastante autoexplicativos. E então esses geralmente também não são mutáveis. No entanto, o tamanho é variável, então talvez queiramos dimensioná-lo, talvez fazer 758, talvez algo que não seja demais. Aí está. Então, isso é muito legal. Então você pode ver que agora ele está dimensionado e também podemos mudar a posição. Então, quando mudamos a posição, você pode ver a posição tanto na origem quanto no quadro C. Portanto, você também pode fazer isso manualmente. Então eu poderia fazer -25,20 novamente, e você pode ver como ele se moveu e isso é muito legal. Agora, o ponto de origem é basicamente, você pode passar o mouse sobre isso, certo? Ele contém as informações da posição e da matriz da rotação. Você pode mudar isso e ler a partir dele. A origem, se você já pensou nisso, é basicamente aqui que isso gira. Então, a ideia geral é que, se eu girar, ele gira em torno de um certo ponto no espaço e você pode ver que aponta, ele gira exatamente no meio dessa parte em particular, certo? No entanto, se eu fosse mudar a posição da origem, vamos assumir o controle Z para tornar a rotação zero novamente, se eu mudasse isso para 000 aqui, certo? Agora, a coisa realmente vem com ela. Não é isso que queremos. Queremos compensar o pivô, certo? Agora, se compensássemos o pivô 20 menos cinco e -20, seria com isso que queremos compensá-lo. De repente, o pivô está em zeros, zeros. Então você pode ver agora que a posição é 00 porque nós compensamos o pivô. E se eu girasse, agora giraríamos em torno dessa posição específica. Então, agora vamos girar em torno disso. Então, isso é muito legal, na verdade, porque o que você pode fazer é compensar isso. E se você quiser, por exemplo , ter uma plataforma giratória, bem, eles podem simplesmente mudar a rotação aqui e agora, mudar a rotação aqui e agora de repente, você tem uma plataforma giratória. Você pode enlouquecer à distância. Mas sim, isso é muito legal e pode ser usado para muitas coisas diferentes. Nesse caso, pode colidir e tocar deve ser bastante autoexplicativo, certo? É só se uma interação física pode acontecer ou não aqui, pode tocar. Basicamente, se o evento Touched for chamado assim, também há diferentes grupos de colisões que você pode definir. Uma ancorada significa que não, que não é afetada pela gravidade. Então, se tivéssemos isso, vamos colocar isso no ar e não está ancorado. Se jogarmos, ele vai cair no chão. Então, podemos realmente ver isso. Então você pode ver que agora está no chão, mesmo que nós o coloquemos no ar. E se ancorássemos isso corretamente, se descêssemos aqui e ancorássemos isso , isso significaria que ele permanecerá nessa posição específica e não será afetado pela gravidade. Então você pode ver agora que está no ar. Muito legal, certo? Propriedades físicas personalizadas, sem massa, coisas assim. Normalmente eu recomendo ficar um pouco longe deles, porque aí você se mete em coisas malucas, certo? As propriedades físicas personalizadas que você pode ver podem alterar o atrito, a elasticidade, a densidade. Então, há algumas coisas legais que você pode fazer com ele. Mas isso definitivamente é um pouco mais para usuários intermediários e avançados, certo? E o resto com eu não mexeria por enquanto. No entanto, você sempre pode passar o mouse sobre as coisas e dar uma olhada no que as diferentes propriedades significam basicamente. E agora essas são, obviamente, propriedades específicas de propriedades específicas uma peça, dependendo do que você está criando aqui. Se clicarmos em criar uma textura ou vaca D, ou uma taxa de diálogo ou um aviso de proximidade. Todas essas coisas malucas, todas elas terão propriedades diferentes. No entanto, você deve pensar, simplesmente perceber que uma propriedade nada mais se parece com uma variável ou um atributo anexado a um determinado objeto. Nesse caso, não deveria ser nada louco. Mas se você tiver uma propriedade, é algo como taxa de geração, por exemplo, também pode ser uma propriedade personalizada. E então você diria, oh, esse é provavelmente um número que tem uma certa relação com a taxa de geração de uma determinada coisa, certo? Portanto, esta é a visão geral das propriedades que pode ser muito útil e muito legal para brincar um pouco com isso. E então você verá que há muitas coisas que você pode fazer com propriedades e até propriedades personalizadas, que veremos mais adiante para resumir cada um dos seus objetos que existem tem propriedades. Algumas delas são propriedades que todas as coisas diferentes compartilham. se isso fosse uma coisa em vez de um espaço 3D, Por exemplo, se isso fosse uma coisa em vez de um espaço 3D, sempre tivesse uma moldura C e uma origem, significado e tamanho. Então, essa é basicamente a transformação que significa a posição real do objeto no espaço 3D. E há outras coisas, como colisões, coisas que descendem de peças também podem ser ancoradas sem massa, todo tipo de coisa. Portanto, existem várias propriedades. Eu recomendo experimentar um pouco com isso, apenas adicionando uma nova porta, brincando com algumas das propriedades que existem aqui. E você pode até mesmo adicionar seus próprios atributos por enquanto. Não vamos nos aventurar nisso agora. Mas basta dizer que, com propriedades, você poderia fazer muitas coisas legais. Tudo bem, será isso para esta palestra aqui, ou achamos isso útil e aprendemos algo novo. Vejo todos vocês na próxima palestra. Então, sim. 19. (Roblox) Vector3 e posição: Tudo bem, bem-vindo ao básico do Roblox para o curso Roblox. E nesta palestra vamos falar sobre vetores e mudar a posição de uma peça. Então, falamos sobre referenciar peças antes. Falamos sobre módulos, scripts e falamos sobre as propriedades. E agora vamos realmente alterar essas propriedades corretamente dentro de um script. Então, vamos fazer um novo roteiro aqui. Ele precisa do serviço de script do servidor. Vamos chamá-la de 05 posições de traço. E então vamos ver. Então, chamaremos isso de vetor três e posições. Comente aqui e depois falaremos sobre o que é isso. Então, primeiro de tudo, vamos realmente fazer nossa parte. Então, minha parte aqui será igual ao espaço de trabalho do jogo, minha parte legal. Então, vimos isso anteriormente na palestra de referência. Então isso não deve ser nada louco. E agora, o que podemos fazer minha parte e agora podemos mudar o que quero dizer praticamente todas as diferentes propriedades que estão lá, incluindo algumas coisas que são como um raio aqui. E temos até coisas estranhas do tipo gabinete de arquivos. Por enquanto, vamos usar apenas os cubos azuis e, por exemplo a posição que você pode ver é do tipo vetor três, e isso descreve a posição dessa parte dentro do mundo. Atualmente, se fizermos isso e imprimirmos isso apenas por uma questão de argumento. Vamos imprimir isso. Devemos obter um vetor que seja -21,8 e assim por diante até 0,4, 99,1, 17,93. Então essa é basicamente essa posição. E se eu mudasse isso, nada mudaria na saída porque estamos produzindo apenas de uma vez. Então, se eu entrar na posição aqui e fizer 50, 50, 50, como se a posição real mudasse. Então agora está lá. Mas isso não atualizaria a saída porque, embora ela já tenha sido produzida e nós a produzamos apenas uma vez, isso é justo. E se mudássemos essa posição, certo? Então, e se produzirmos a posição e, em seguida estivermos dizendo y parte dessa posição, e então quisermos mudar isso. Como podemos mudar isso? Bem, mudamos isso dando a ele um novo vetor três, certo? Então, queremos dizer menu vetorial de três pontos. E aqui colocamos um número X, um número e um número Z. Agora, o importante aqui é que um vetor três escreva um vetor. Talvez você tenha feito isso em matemática. Talvez você tenha tido isso em matemática em geral. É muito fácil de entender. O que você provavelmente já viu antes é vamos fazer algo assim. Então você provavelmente já viu uma grade bidimensional antes com um eixo y e um eixo x, certo? E com isso, você pode descrever cada ponto com dois números. Agora é a mesma coisa em três direções, assim como em outra direção, certo? Então, essa posição, como vimos antes, é deixar isso um pouco mais agradável. 2015 e -17 por uma questão de argumentação, certo? Agora está aqui e agora podemos mudar essa posição apenas dando a ela coordenadas diferentes. Então, digamos que em vez de -21, teremos, vamos fazer 50, 50, 50 novamente. E isso agora está ancorado nas peças, então vai ficar no ar. Então, o que esperaríamos encontrar é que isso gera -20, 15, -17, então vamos mudar a posição para 50, 50, 50. Então, quando realmente entramos no jogo, mesmo que isso produza os números antigos, isso agora é alterado para 50, 50, 50. E podemos confirmar isso, estamos apenas descendo e podemos ver posição é 50, 50, 50. Muito interessante, mas só podemos mudar isso. É claro que podemos mudar, quero dizer, praticamente tudo isso. Podemos até mudar a rotação, que também é um vetor três. Agora, há algumas coisas interessantes sobre a rotação no espaço tridimensional. Por enquanto, vamos apenas fazer o vetor aqui. Então, por exemplo, poderíamos fazer 4500, digamos, e agora, na direção x, giramos 45 graus. Então, vamos dar uma olhada e podemos ver, se dermos uma olhada nisso, você pode ver que agora está girado em torno de 45 graus. E se realmente dermos uma olhada nisso, você também pode ver que a orientação agora não é exatamente 45, mas basicamente 45. Às vezes, há problemas de arredondamento. Portanto, lembre-se de que às vezes o arredondamento pode ser um pouco estranho, especialmente com esses vetores porque há muitos cálculos que precisam ser feitos. Então, às vezes, eles arredondam para baixo ou para cima de uma forma um pouco estranha. Também podemos fazer algo muito interessante e talvez queiramos mover a peça, certo? Então, talvez queiramos realmente dizer: Você sabe o que? Na verdade, quero que a posição mude. Então, eu quero assumir a posição real da minha parte e talvez eu só quisesse prosseguir com alguns estudos. Então, digamos que faça um novo vetor aqui. Não queremos mover o eixo x. Queremos movê-lo talvez 25 para baixo no eixo z. E talvez queiramos fazer mais cinco no eixo z. Na verdade, não mais cinco, apenas 5 anos no eixo z. Você pode ver que tudo isso funciona porque se você fizer um vetor, vetor menos um vetor, tudo funcionará perfeitamente bem. Então, se jogarmos isso, agora veremos que o cubo se moveu para onde se moveu. Bem, vale a pena, está aí. E se dermos uma olhada nesse micro à parte , agora está em 50, 75, 45. Agora você fica tipo, isso é meio estranho. Sim, isso é meio estranho. Como isso aconteceu? Bem, subtraímos esse vetor, certo? Então, pegamos 50 menos zero, isso é 50. É justo. Fizemos 50 menos -25. Oh, bem, menos, menos, isso é uma vantagem, o que significa que há um 75. E aqui subtraímos cinco. Então, essa é uma questão interessante em que, se subtrairmos algo, na verdade não queremos nenhum número negativo aqui. E então, se fôssemos executar isso novamente, agora você pode ver que cada um estará mais abaixo e lá está. Então, agora está bem mais abaixo. E agora nossos cálculos funcionam totalmente bem. Então essa é a ideia geral do cálculo dos vetores, certo? Então, basicamente, é sempre o primeiro elemento menos ou mais a taxa, por exemplo, isso funcionará. Então, faríamos se mantivéssemos o sinal negativo, esse seria o primeiro elemento. Os novos elementos serão 50 menos zero. E então o segundo seria 50 -25, e o último seria 50 menos cinco. Essa é a ideia geral disso. O que aconteceria se disséssemos Você sabe o que, vamos cronometrar isso”. Isso vai funcionar? Bem, vamos fazer 22.2 aqui. E vamos ver o que acontece. Portanto, não há erros. E se dermos uma olhada, agora está muito, muito longe. E se você der uma olhada nisso, você pode ver 150, 90. Então, exatamente o que esperaríamos que acontecesse aqui. A mesma ideia, certo? Em vez de fazer um menos, agora fazemos vezes dois. E então fazemos isso basicamente para todos eles, certo? Então fazemos isso e depois fazemos isso. Agora isso é na verdade 45 e isso era 25. E é por isso que temos 150,90 como partes aqui. Muito interessante, de fato. Agora, há algumas outras coisas que são interessantes, por exemplo se quisermos avaliar algo, certo? Então, temos o tamanho aqui. Podemos, por exemplo, fazer um vezes igual e , em seguida, podemos aumentá-lo em 50% a mais. Isso vai apenas multiplicar ou dimensionar números por 1,5 aqui neste caso. Então, se olharmos isso de novo, você pode ver que agora é maior , agora não parece muito. Mas se formos aqui e vermos que o tamanho agora é 10,57 ponto 5,12. E se não estivermos correndo, o tamanho é de apenas 75,8. Mas esses são alguns dos exemplos aqui de mudar a posição, a rotação, o tamanho. Isso já é muito legal, certo? Em resumo, a posição ou rotação é representada por um vetor. E um vetor é simplesmente três números aqui, com um x e y e o valor z. E você pode alterá-los com as operações normais, certo? Multiplicando, subtraindo todo esse trabalho. Então isso é muito legal e você faz assim. Bem, isso é tudo para esta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo . Nos vemos na próxima palestra. Então, sim. 20. (Roblox) A função de espera: Tudo bem, vamos continuar com os conceitos básicos de robótica aqui para um curso robusto. Nesta palestra, falaremos sobre a função do peso. Portanto, a função de peso é uma coisa extremamente importante que você encontrará muitas vezes ao longo do script e do Roblox. E vamos criar um novo script aqui, chamá-lo de 06 dash waiting. E vamos chamar isso função de peso porque se trata da função peso. Digamos que eu tenha um for-loop. Comecei do zero, vou até dez e incremento em um. Vamos fazer isso. E digamos que eu imprima o número. Então, se fizéssemos isso, ele imprimirá os números, certo? Imediatamente. Você pode ver zero até dez em questão de, quero dizer, literalmente, quase todos eles, mesmo no mesmo tique-taque, como nos mesmos milissegundos. Isso é o quão rápido foi. Mas digamos que não, não, não, não. Quero que isso seja impresso a cada segundo. Bem, vamos usar apenas a função de peso aqui. Vou passar em um. Então, o que ele realmente faz é gerar o thread atual até que o tempo especificado seja decorrido em segundos. Agora, é muito importante que isso possa ter, digamos, consequências negativas se houver muitos roteiros em andamento. Portanto, a função de peso não é o fim de tudo, você deve usá-la em qualquer lugar. Também existem outras maneiras de esperar que as coisas aconteçam. Portanto, esse não é o fim de tudo. Mas nesse caso, se executássemos esse 012 e você pudesse ver que ele continua funcionando. Continua, eu posso correr por aí, está tudo bem. E continua exatamente 1 s após o outro e nosso atendimento e agora o peso acabou. Então isso é muito legal. Isso é legal para certas coisas como para contar coisas, coisas assim. Isso é realmente incrível. Este é um exemplo de onde a função de peso pode ser realmente útil. Às vezes, também pode ser importante importar certas coisas e às vezes você pensa “Vou esperar um pouco para continuar executando algo”. Mas, como eu disse, a coisa real que ele faz é basicamente produzir o tópico atual. Agora, esse é o discurso de alto nível do computador , basicamente por dizer que ele meio que interrompe tudo o que está fazendo nesse tipo específico de carga de trabalho e continua após decorridos segundos. Portanto, há coisas que, quando você usa isso, podem quebrar certas coisas em seu jogo. Portanto, tenha cuidado e não use seus pesos em todos os lugares. Nós pensamos, oh, isso não funciona. Vamos esperar aqui que isso geralmente não seja o que você quer fazer. Eu só quero enfatizar isso mais uma vez. O que vou comentar a impressão e isso é praticamente tudo o que há na função de peso. Realmente não há nada para resumir. Ele só espera alguns segundos e você não deve usá-lo em todos os lugares em seus scripts. Haverá alguns exemplos de onde vamos usá-lo, que serão interessantes. E há alguns exemplos em que poderíamos usá-lo, mas talvez queiramos usar outra coisa. Bem, isso vai ser o fim desta palestra aqui, ou achamos isso útil e vocês aprenderão algo novo e nos vemos na próxima palestra. 21. Movimento de parte básica: Tudo bem, bem-vindo de volta aos conceitos básicos de robótica aqui para o curso Roblox. E nesta palestra, veremos como mover uma peça. Então, isso vai ser muito interessante, de fato. Então, para isso, no serviço de scripts do servidor, mais uma vez, criamos um novo script e chamaremos isso de 07, e chamaremos esse movimento. Então, isso basicamente abordará algumas das coisas que aprendemos até agora. É claro que, para se separar, existem muitas maneiras de fazer isso. A propósito, este é apenas um exemplo que podemos usar com o entendimento atual que temos. Portanto, existem diferentes maneiras pelas quais seria melhor até mesmo mover peças, mas é possível fazer isso dessa maneira. Então, eu só quero enfatizar essa não é a única maneira e pode não ser a maneira correta para cada coisa que você quer fazer. Mas vamos dar uma olhada nisso. Então, basicamente, vamos colocar nossa parte legal aqui. Órgão, digamos que local é minha parte. E diremos que este é o espaço de trabalho do jogo, ponto minha parte legal. Aí está. Então, o que faremos é fazer um for-loop. Mais uma vez, vamos começar isso da primeira vez. Vamos então passar para, digamos, 15 e aumentaremos em um. E o que faremos então é dentro disso, pois o loop dirá minha parte, essa posição agora será igual à minha parte, aquela posição. Então, a posição real que está em mais um novo vetor. Então, eles serão o vetor três novos. E então vamos dizer, vamos fazer IO aqui, 0.0. Então, estamos definindo a posição atual para si mesma mais I. Então, estamos começando com um. E então, se fizéssemos isso e começássemos, basicamente obteríamos a posição mais 15, porque é isso. Mas e se agora esperássemos um segundo entre isso, o que aconteceria então? Bem, vamos dar uma olhada. Vamos parar com isso. E se encontrarmos nossa parte e corrermos em direção a ela, você pode ver, oh, veja isso. Ele está se movendo um passo por segundo porque está esperando 1 s e depois aumentando e depois esperando 1 s e esperar 1 s e aumentar e esperar 1 s e aumentando até atingir seu destino final, que seria mais 15 na direção x. E podemos ver isso. Agora sua posição é 220, então deveria ter sido 205 antes, por causa de todos os recrutas, das coisas que fizemos antes com os roteiros. Então essa é a ideia geral. Portanto, você pode usar a função de espera nesse caso para atrasar a configuração da posição e isso, fazendo com que pareça que está realmente fazendo alguma coisa. Então você poderia, por exemplo, também fazer, você também pode fazer isso, talvez 50 e então talvez você coloque adicionar um pouco menos. Então, talvez um quarto de segundo. E se você olhar isso agora, ficará muito mais suave. Então, se olharmos para isso, você pode ver agora que não é um movimento suave, mas é um movimento quase suave, certo? E poderíamos fazer isso ainda mais suavemente. Agora eu tenho que aumentar isso porque é claro que ele vai se mover mais rápido se eu aumentar isso ou diminuir o tempo de espera. E se eu olhasse assim, agora, você pode ver que é quase suave. Então, para resumir, embora essa seja uma maneira possível de fazer isso, veremos também veremos outras formas em palestras futuras. Isso ocorre porque há algumas coisas que precisamos abordar antes de realmente fazermos isso. Porque há apenas mais algumas coisas interessantes que precisam ser adicionadas ao seu kit de ferramentas, por assim dizer. Mas, por enquanto, foi isso que aconteceu com esta palestra aqui. Espero que você tenha achado isso útil e tenha aprendido algo novo. Vejo todos vocês na próxima palestra. Então, sim. 22. (Roblox) o evento tocado: Tudo bem, bem-vindo de volta ao básico do Roblox aqui para o curso robusto. E nesta palestra, falaremos sobre o evento Touched. Agora, vimos muitas coisas que podemos mudar no código e nos scripts. No entanto, ainda não chegamos a nenhuma parte em que possamos realmente inserir algo ou fazer algo acontecer enquanto isso está prestes a mudar Vamos criar um novo script aqui no serviço de script do servidor. Vamos chamar esse evento de 08 tocados. E isso vai ser muito interessante, de fato. Portanto, o evento Touched é um evento, como o nome sugere. E eventos são basicamente, bem, coisas que acontecem. , esses são eventos que podem acionar determinadas funções para serem executadas. O evento In the Touched é basicamente chamado toda vez que uma peça toca outra parte. Então, só para fins de argumentação, vamos realmente nos livrar de todas as minhas mudanças de posicionamento aqui. Porque na verdade não queremos esses dois. Bem, não queremos que isso afete mais a parte central R aqui. Então, vamos jogar isso e então nossa parte legal deve ficar onde está. Bem, vai diminuir o zoom, mas na verdade é meio engraçado. Então isso por causa do movimento aqui. Então, vamos nos livrar do nosso movimento também. E agora devemos ter uma ficha limpa. Então, para o evento Touched, primeiro lugar, vamos receber nossa parte novamente. Então, minha parte é, mais uma vez, espaço de trabalho do jogo. E então, minha parte legal neste caso, aí está. E então teremos eventos emocionantes. Então, vamos dizer minha parte ponto e depois podemos dizer tocado. E você pode ver que isso é um raio. Então, um raio, ou seja, um evento. Assim, você pode ver que isso é acionado quando uma peça entra em contato com outra peça. Muito legal. Você também pode dar uma olhada em todos os outros relâmpagos. Há também uma mudança, um direito, acionada imediatamente após a alteração de uma propriedade de um objeto. Pode ser interessante que queiramos ver isso destruindo incêndios imediatamente antes que uma instância seja destruída. Ok, o toque final é quando você para de tocar em outra parte, e assim por diante. Agora queremos usar o evento Touched aqui. E o que queremos fazer é fazer dois pontos e depois nos conectar. Isso é muito interessante. Então você também pode fazer outras coisas. Você também pode fazer uma vez , isso chamaria algo uma vez. Este conecta uma função a um evento, basicamente dizendo: Ei, esse evento específico é chamado, então queremos realmente chamar essa função onde também há um peso que espera por algo. E aqui conectar em paralelo é ainda mais complicado, basicamente uma vez e conectar são coisas interessantes. Então, digamos que um está aqui, dentro dessa função específica, a função das unidades, podemos colocar outra função, certo? E então dizemos outra parte, e vamos fazer essa função em vez desta. Então você pode ver que essa é a função aqui, e esses são os parênteses finais de uma vez. E então podemos simplesmente dizer imprimir, e então podemos dizer, por exemplo, outra parte, certo? Então, o que acontece aqui é que essa outra parte é a parte que ela tocou na minha parte. Então, se tocarmos essa coisa em particular, o que aconteceria? Placa de base, você pode dizer o que? Bem, olha isso. A micropeça está tocando a placa base, certo? E se eu pulasse aqui, nada aconteceria. Por que isso? Bem, porque uma vez significa uma vez, acontece uma vez. E então eu disse, no entanto, se conectássemos isso, certo, se disséssemos conectar, o que aconteceria agora? Bem, vamos jogar isso e você verá que vai enviar spam para a placa base aqui até que não abranja mais a placa base. Ok, interessante, o que aconteceria se eu agora pulasse para isso? Bem, vamos fazer isso. E você pode ver a parte da raiz humanóide, pé esquerdo, pé direito. E também as perguntas: por que isso para? Bem, no evento Touched, basicamente, você precisa começar a tocar e não gostar de tocar continuamente. Isso é algo um pouco diferente. Mas você pode ver que agora, dependendo de como eu o move, ele fica como diferentes partes do meu corpo. Porque se entrarmos na contagem de espaços de trabalho e Joe, eu sou representado por uma série de partes diferentes, como pequenas. O pé esquerdo, a mão esquerda e assim por diante. E não como todo o meu corpo, por assim dizer. Ok, então isso é muito interessante. Mas agora podemos realmente fazer as coisas acontecerem tocando em um objeto específico. Então, poderíamos, por exemplo , na parte micro , fazer isso ancorado para que fique no ar. Então agora está flutuando. Então, nunca vai tocar o chão. E então podemos fazer o que quisermos. Podemos imprimir algo. Podemos deixá-lo começar a se mover. Podemos atirar no jogador para o céu. Quero dizer, há todo tipo de coisa por causa dessa outra parte, certo? Sempre temos acesso ao que afetou nossa parte. Portanto, devemos ter acesso ao jogador de alguma forma ou ao personagem, certo? Portanto, também podemos fazer algo com isso. Em nossos propósitos, a única coisa que vamos fazer é diminuir a transparência do objeto. Então, vamos dizer que vamos fazer com que a transparência seja igual a um. Então basicamente, vai mudar 2,5 de qualquer maneira, e então vamos mudar para um quando isso realmente tocar em alguma coisa. Então, assim que eu pular sobre esse objeto ou simplesmente escove-lo, ele basicamente desaparecerá porque a transparência será uma. Pronto, aí está. Desapareceu. Agora é claro que não desapareceu, certo? Ainda está lá, mas é invisível. Então é muito legal que você possa alterar certas propriedades agora, pois, você sabe, algo está acontecendo dentro do jogo. Então, agora não estamos mais apenas mudando propriedades, estamos realmente respondendo às coisas que acontecem dentro de um jogo. E agora, só porque é uma coisa muito divertida de se fazer, o que vamos fazer é usar o que temos até agora. Vou fazer com que uma propriedade booleana se mova para cá. E eu vou perguntar, bem, se mover é igual a falso, então eu realmente quero fazer o seguinte. Eu então quis, antes de tudo, transformar a mudança em realidade. E então eu quero dar uma volta aqui. Eu é igual a um e então faremos dez e faremos um, e então faremos. E o que faremos aqui é esperar 1 s. E então eu realmente quero dizer minha parte dessa posição. E então eu quero mudar sua posição. Então, vamos simplesmente usar mais igual. Digamos que mais seja igual e, em seguida, diga menu vetorial de três pontos e , em seguida, apenas um zeros, zeros. Então, mais uma vez, vamos movê-lo para a direção X em um n no final. Depois que isso for loop terminar, queremos dizer que mover é igual a falso caso contrário, nunca poderemos reiniciá-lo basicamente. E então vai funcionar, não vai funcionar basicamente a ideia geral, mas isso, tudo funcionar basicamente a ideia geral, mas isso, bem, se fizermos isso, agora, quando tocarmos a peça, ela começará a se mover para a direção x, dez blocos por 10 s, e então ela vai parar e então podemos realmente movê-la novamente. Então, vamos ver por uma questão de discussão aqui, certo? Então, nada deveria acontecer tão bem. Eu toquei isso depois de 1 s. Você pode ver como ele começa a se mover. Agora eu não sei o que vai acontecer quando ele chegar aqui nesta plataforma de spawn. Na verdade, estou muito, Oh, o que vai acontecer? E isso vai parar. Agora está parado. E eu posso tocá-lo novamente e ele continuará se movendo. Como você pode ver. Isso está claro, não é? Porque é feito de novo. E se eu tocá-lo novamente depois de um segundo, você poderá vê-lo contínuo. Então isso é muito, muito legal. Isso é uma coisa incrível que está basicamente funcionando aqui, neste caso, é na verdade um exemplo de como você pode responder a algo que está acontecendo em vez do mundo. Para resumir, um evento é anexado a um determinado objeto. E se esse objeto, se esse evento for acionado, dependendo do que acontece, você pode realmente conectar uma função a ele e chamar essa função toda vez que esse evento específico for capturado. No caso do evento Touched, por exemplo, isso realmente permite que você agora responda às coisas que o jogador possa fazer, insira o mundo e faça certas coisas com ele. Bem, isso vai ser o fim desta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo. Nos vemos na próxima palestra. Então, sim. 23. (Roblox) Criando instâncias a partir de scripts: Tudo bem, vamos continuar com os obstáculos básicos aqui para o curso Roblox. E nesta palestra, vamos dar uma olhada na geração de novas peças. Então, o que significa gerar novas peças? Bem, vamos gerar corações por meio de scripts. Então, primeiro de tudo, nos servidores de scripts do servidor, vamos criar um novo script e vamos chamá-lo de 09 dash spawning. Que tal isso? E chamaremos isso de objetos de desova. Aí está. E o que faremos é simplesmente gerar um novo objeto. Então, vamos apenas gerar novas peças. E, antes de tudo, vamos fazer isso no próprio roteiro. E então faremos isso em contato daqui a pouco. Então, como criaríamos um novo porto? Bem, vamos criar uma peça local e chamá-la de nova parte. E isso vai ser uma nova peça, como podemos criá-la? Vamos dizer exemplo, e você pode ver que ele já sugere isso para nós. Podemos preencher isso automaticamente pressionando a tecla Tab new. E então, dentro daqui, temos que pegar o nome da classe. Então, temos que colocar o nome da classe como uma string assim que eu começar a digitar as aspas, você pode ver que podemos realmente escolher, bem, muitas classes diferentes que existem aqui. Assim, podemos adicionar um novo controlador de ar, um novo vetor de três valores, novo script de módulo, se assim escolhermos. Mas, no nosso caso, queremos um novo coração. Nesse caso, vamos escolher apenas uma nova peça. E o que aconteceria se eu fizesse isso? Vamos jogar e ver o que acontece. E o que você descobrirá é que, bem, nada realmente acontece. Vamos ver. Não há, não há peças novas. Então, nada realmente aconteceu porque essa parte, nesse caso, meio que não foi criada em lugar nenhum. Assim, podemos alterar as propriedades dessa peça. Então, podemos dizer, por exemplo, que o nome é igual a uma nova parte aqui, certo? Então, agora nós lhe demos um novo nome e podemos até mudar de posição, certo? Podemos dizer que a posição agora é o vetor três novo e digamos 0150 ou algo parecido. E também queremos ancorá-lo, certo? Então, vamos apenas fazer essa âncora. E agora, em teoria, se tudo isso estiver bem, então devemos vê-lo pairando aproximadamente acima do spawn. E você não pode ver nada. E se olharmos no espaço de trabalho, você também pode ver que minha nova parte não é, não faz parte disso, porque na verdade também precisamos definir os pais. Isso é extremamente importante. Então, ser pai, literalmente, é apenas a ideia se você olhar para o explorador aqui, mas para o roteiro de referência ou para a referência e todos os meus outros scripts. O pai disso são os servidores de scripts do servidor. Então você acabou de ver que esse é o relacionamento. Você também pode ver o pai aqui. E se entrarmos no espaço de trabalho, você poderá ver a microparte, essa parte principal é o espaço de trabalho. E se você entrar na placa base, se você descer mais um pouco, a textura aqui, aquela mãe, é a placa base. Quais placas de base? O pai é o espaço de trabalho. Essa é a ideia geral. Isso realmente não deve ser nada confuso. Basicamente, mostra a estrutura hierárquica do explorador, e é basicamente isso. E agora, se dissermos nova parte, pai é igual ao espaço de trabalho de pontos do jogo. De repente, estamos configurando-o para o espaço de trabalho. E agora vamos ver se podemos realmente ver nossa nova parte. E o que você vai descobrir de repente, aí está, aí está nossa nova peça. Se entrarmos no espaço de trabalho, veremos uma nova porta, exatamente com o mesmo nome que demos a ela aqui. E nós o geramos completamente por meio de um script. E geralmente esse é sempre o pedido que você deseja receber. Então, basicamente, você quer criar o novo objeto, então você quer definir algumas das variáveis aqui, certo? Então, vamos mudar as propriedades. E então isso é sempre importante. Queremos definir o pai, certo? E isso é algo muito, muito importante que queremos colocar aqui como pai. Caso contrário, ele não será exibido de forma alguma. Agora, e se fizéssemos algo interessante, certo? E se tivéssemos que começar o evento Touched, certo? Então, estamos fazendo a mesma coisa aqui, mas em vez de se mover, ele realmente fará algo diferente. Então, o que faremos é simplesmente copiar isso e eu vou apenas comentar isso porque bem, nesse caso, eu realmente não quero que a coisa esteja conectada a outra coisa. Vamos fazer isso na desova. Então, vamos gerar apenas um objeto. E então vamos dizer, bem, você sabe o que vamos fazer, em vez de movermos, realmente geraremos algo. Então, no evento Touched, quando estávamos tocando minha parte interessante, agora quero que novas portas sejam criadas. Então, estamos apenas criando um Newport local e podemos fazer quase a mesma coisa que este, certo? Podemos apenas dizer, Ei, em Newport, e vamos chamar isso, vamos chamar isso de outro Newport. E vamos colocar um 015. Vamos telefonar e, na verdade, eu gostaria de algo como 20 e, nesse caso, não vou fazer com que seja ancorado. E então vamos realmente colocar isso, empurrar isso um pouco para trás. 525, tudo bem? E ainda precisamos associá-lo ao espaço de trabalho. E também adicionaremos uma pequena função de peso aqui, digamos meio segundo, porque, caso contrário, ficaremos inundados com peças novas e novas, com um pequeno atraso aqui. Mas agora o que isso deve fazer é, enquanto eu ficar na minha parte legal, certo, vai colocar novas peças. Então, vamos ver se isso faz qualquer coisa, mas tenho certeza de que funcionará. Mais uma vez, temos nossa parte que tínhamos antes. E se pudéssemos pular sobre isso, você pode ver, de repente, que eles podem ver. E agora você pode se perguntar: Espere, por que isso gerou tantos? Nós fizemos isso especificamente para que a função de peso estivesse lá. Então, se eu insistisse nisso, mas para que você possa ver que não está estragando nada. E se eu me mudasse e você pudesse ver que está funcionando. E a razão, é claro, é que o evento Touched, nesse caso, é na verdade chamado para cada parte, certo? Então, basicamente, estamos dizendo que nem importa qual a parte que está tocando nossa microparte aqui. Para cada um deles, estamos criando uma nova peça. E vimos anteriormente que o player é feito de pequenas partes diferentes. Portanto, isso vai ser chamado de uma quantidade insana de tempo. Então, para resumir rapidamente, quando geramos uma nova peça, nesse caso, podemos criar ponto novo e importante neste caso. Ou também podemos gerar quase qualquer outra coisa. Podemos gerar uma série de tipos diferentes de classes, como elas são chamadas. Eles estão basicamente dizendo, ok, que tipo de peça ou que tipo de objeto é esse? No nosso caso, só queremos transportar e existem outros, certo? O local de desova tem sua própria classe, coisas assim. Então, também poderíamos gerar essas coisas. No nosso caso, estamos apenas nos limitando às partes neste momento. Podemos então alterar as propriedades. E então é muito importante que definamos o pai da nova parte que acabamos de criar no espaço de trabalho de pontos do jogo, caso contrário, ela não será exibida. E no final, vimos que também podemos conectar isso ao evento Touched, o que é realmente incrível. Então, agora estamos gerando coisas quando estamos realmente interagindo com o mundo. Muito legal, mas isso vai acabar com esta palestra aqui. Espero que tenham achado esse desodorante útil e , no novo, vejo todos vocês na próxima palestra. Então, sim. 24. (Roblox) Clique no detector: Tudo bem, vamos continuar com o Robo space X aqui, seguir o curso de livros de regras e, nesta palestra, falaremos sobre detecção de cliques. O que isso poderia ser? Bem, bem, vamos criar um novo script no serviço de script do servidor. E chamaremos isso de detecção de cliques de dez e traços. E isso vai ser muito interessante. Então, detecção de cliques, o que isso significa? Bem, você provavelmente já jogou um ou dois jogos em que conseguiu clicar em algo. E isso é exatamente o que faremos também. Então, vamos apenas criar uma nova peça no espaço de trabalho. Primeiro de tudo, vamos criar uma nova peça aqui, pegamos isso e vamos dimensioná-la um pouco, só para sabermos que essa é uma parte diferente. Na verdade, vamos fazer isso 55,5. Aí está. E então também vamos colorir de forma um pouco diferente. Vamos fazer isso. Azul é meio bom, mas vamos torná-lo um pouco mais azul. Sim, aí está. Também fazemos isso ancorado para que continue flutuando no ar assim e eu realmente estou bem com isso. Então, agora temos uma porta flutuante e vamos renomeá-la para clicker. E o que essa parte precisa é que ela realmente precisa de um subobjeto. Então, vamos clicar nesse sinal aqui. E você pode até ver se o uso frequente detector de cliques é exatamente o que precisamos acrescentar a isso. E o detector de cliques tem apenas algumas coisas, a saber, a distância máxima de ativação. Falaremos sobre isso em apenas um momento. Mas agora temos um detector de cliques nisso. O que queremos fazer é realmente obter isso como uma variável. Então, vamos pegar o detector de cliques, e isso é uma variável. E agora vamos para o ponto do jogo, ponto do espaço de trabalho. E então precisamos tentar encontrar o clicker. Então, vamos usar a parte do clicker. E então, como o detector de cliques aqui é um objeto secundário do clicker, podemos realmente obter o detector de cliques, como você pode ver. Incrível. Agora temos o detector de cliques aqui, e isso se refere a esse detector de clipes em particular. E agora podemos simplesmente criar uma nova função. Então, vamos criar uma nova função ao clicar. E também colocaremos o player porque na verdade é isso que vamos conseguir para a função, certo? Quando você clica em algo, na verdade, pegamos o jogador real que clica nisso. Então, primeiro de tudo, vamos imprimir esse player. Clique em Eu e depois imprima o player, só isso é tudo o que vamos fazer. E como conectamos isso? Bem, mais uma vez, o detector de cliques neste caso tem certos eventos aqui, certo? Então nós temos, e na verdade temos alguns. Então, destruidores, esses são eventos normais, mas também há evento de clique com o mouse e o mouse, o mouse sobre sair e o evento de clique com o botão direito. E então, eu acredito que esses são os principais. E isso é muito incrível. Na verdade. Vamos usar o evento mouseClicked mais uma vez usando connect here. E então podemos simplesmente colocar o método onClick dentro dele sem os parênteses. Então, nós só queremos passar isso assim. E então, quando clicarmos nisso, vamos realmente executar essa função. Essa é a mesma ideia que vimos anteriormente no evento Touched, onde conectamos uma função embutida aqui. Acabamos de criar a função aqui. Mas, neste caso, criamos a função antes e depois a colocamos lá. É a mesma ideia. Agora, se for esse o caso, então vamos jogar e quando realmente vamos até lá. Então, a primeira coisa que você poderá ver é que quando eu passo o mouse sobre isso, você pode ver que ele se transforma em uma mão porque, bem, isso agora é clicável. Se eu clicar com o botão esquerdo, você pode ver esse jogador clicar na câmera. Então, de repente, o servidor fica tipo, sim, o jogador clica nesse detector de clipes em particular. Então isso é realmente incrível, porque agora, de repente , podemos interagir com o jogo em um nível totalmente diferente. Nesse caso, há realmente uma segunda maneira fazer isso de forma viável. Ou seja, você pode adicionar um script ao próprio clicker. Então você pode chamar isso de script de clickers, digamos, certo. E então vamos pegar a mesma coisa que temos aqui. E vamos adicionar isso ao script aqui. Agora esse é o detector de cliques, mas podemos realmente fazer algo diferente. Podemos dizer roteiro. Isso é levar nosso script para dentro de nossa hierarquia. E eu vou dizer pai. E então vamos dizer detector de cliques porque nesse script, certo, vamos até o pai, que é o clicker, e depois clicaremos na textura. Isso também funcionará. Então, se eu fosse, digamos, vamos realmente comentar isso, porque é um pouco melhor se fizermos isso. Lá vamos nós. Então, isso é comentado e, em seguida, temos o script do clicker como filho do clicker. E também podemos fazer isso. E vamos ver, em teoria, isso ainda deveria funcionar. E se formos até aqui, você pode ver que ainda estamos obtendo essa saída e isso às vezes pode ser melhor. Então, antes, é claro, colocamos tudo no serviço de script do servidor. Portanto, pode fazer sentido realmente ter o script abaixo da nossa parte do clicker. Porque talvez se duplicássemos isso, e então tivéssemos um segundo aqui. Agora, este também funciona sem que eu precise fazer nada. Agora, existem dois scripts diferentes e, claro, agora surge o problema de que você precisa acompanhar qual script é qual e tudo isso. Mas, independentemente disso , é meio legal. Você também pode ter esse script abaixo da parte real. Isso não é o principal. É claro que o principal é a detecção de cliques em si, que é outra forma de você interagir com o mundo agora e agora podemos usar o que você aprendeu até agora, certo? Movendo coisas, enviando a posição e você pode tornar algo clicável e mudar de posição, por exemplo, para a direita. Então, só para fins de argumentação, eu criei algo aqui que pode ser meio interessante. Então, se eu jogar isso e vamos, eu vou te mostrar. Então, se eu for até aqui, certo, temos esse cubo vermelho no topo. E se eu clicar nesse, o cubo vermelho passa para cima. E se eu clicar no botão esquerdo , ele volta para trás. Então, basicamente, apenas uma maneira de mudar a posição desses cubos específicos. Isso é uma coisa muito legal. Agora, na verdade, não vou mostrar o código. O código estará disponível para que você possa baixá-lo e baixar o arquivo Excel com essa parte móvel específica exibida nele. O que eu diria é que, antes de tudo, tente criar isso sozinho. E se você puder fazer isso, seria absolutamente incrível. Se você estiver preso, você sempre pode dar uma olhada. São basicamente dois cliques aqui no botão esquerdo e no direito. E são dois roteiros. No entanto, os scripts são literalmente exatamente os mesmos. Portanto, pode haver uma maneira de condensar isso em um script por enquanto, apenas tentando ver se você consegue descobrir como criar isso. Porque essa já seria uma maneira muito legal de solidificar algumas das coisas que aprendemos até agora. Então, em resumo, o detector de cliques é uma ferramenta muito útil que você pode usar para interagir ainda mais com o mundo e com o Roblox. E pode ser usado para qualquer coisa, na verdade. Você pode simplesmente criar uma nova função que é chamada quando o jogador clica em um detector de cliques. E isso pode fazer o que você quiser, certo? Mas isso vai ser o suficiente para esta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo . Nos vemos na próxima palestra. Então, sim. 25. (Roblox) aplicando forças: Tudo bem, vamos continuar com os conceitos básicos do Roblox aqui para o curso de robótica. E nesta palestra, vamos dar uma olhada na força e em tudo que tem a ver com isso, basicamente. Então, o que a força forçará é basicamente adicionar uma força a uma peça específica. E vamos dar uma olhada em um exemplo disso. Então, estamos apenas adicionando uma nova parte aqui, e chamaremos isso de parte contundente para fins de argumentação aqui. E o que queremos fazer para essa parte, bem, queremos mudar isso. Em primeiro lugar, porém, queremos avaliar isso. Vamos dimensionar isso para 444 novamente. E então podemos adicionar um, bem, podemos adicionar muitas coisas, como vimos, mas se procurarmos por força, você poderá ver um campo de força. Agora, na verdade, não queremos adicionar um campo de força. Queremos adicionar uma força linear ou uma força vetorial. Agora, são quase a mesma coisa. Há uma pequena diferença, mas primeiro daremos uma olhada na força vetorial e depois veremos a linha de força em um momento. A força vetorial, em teoria, simplesmente aponta para um vetor e basicamente dispara essa parte para um vetor específico. No entanto, precisamos de um anexo. Então você pode ver que este é um anexo necessário. E a força que está sendo aplicada aplicada, neste caso, a 1.000 na direção x. Então, de repente, dispararia nessa direção. Então, vamos colocá-lo aqui. E se jogássemos isso, você poderá ver que, bem, nada acontece. Então você pode ver a parte aqui, nada acontece. Vamos mudar a cor para amarelo nesse caso. E poderemos ver que, em teoria, ele deveria disparar nessa direção. No entanto, isso não acontece porque não temos um anexo. Então, na verdade, a esse relatório de força, precisamos adicionar um anexo. Você pode ver que podemos simplesmente pesquisar isso e adicionar um anexo. E agora o anexo faz parte dessa parte específica. Agora, se movêssemos o anexo, você pode vê-lo. Tudo bem, agora esse apego está diretamente no meio disso, que geralmente é o que realmente queremos. Então, podemos apenas dizer apego. Podemos clicar nele, clicar no anexo e você pode ver agora que ele está anexado. Agora, se quisermos ter certeza de que esse é o correto, também podemos renomear esse anexo de peça forte. E se olharmos na força vetorial, podemos ver a fixação forçada da peça. Ok, vamos jogar isso e ver o que acontece agora. O que você verá é que isso ainda não está se movendo. Então você pode dizer, isso é meio estranho, certo? Porque podemos movê-lo, mas ele não está se movendo. Bem, o problema é que há atrito entre essa peça e a placa de base porque, é claro, há toques. E você pode imaginar isso se você tiver um cubo colocado exatamente como em uma mesa para movê-lo. Isso não vai ser tão ruim. Mas se for como uma superfície emborrachada, vai ser um pouco mais difícil porque há uma quantidade diferente de atrito. Então, se formos aumentar essa força para, digamos, algo como 3.500 aqui neste caso. Tenho certeza de que isso deve ser suficiente para que ele comece a se mover na direção x. E você verá, lá vai. E ele frequentemente sobe para o céu até, bem, até que basicamente desapareça. Então isso já é muito legal. Vamos tentar fazer 2.500. Talvez isso o torne um pouco mais lento. E talvez então possamos realmente ver outra pessoa também. Aparentemente, 2.500 não são suficientes aqui, como você pode ver. Então, precisamos fazer um pouco mais, mas tudo bem. Vamos fazer 3.000 e espero que não seja muito rápido. E então podemos realmente expandir isso. Podemos ver uma parte forte. Você pode ver que a velocidade realmente é alguma coisa porque está se movendo nessa direção, certo? Na verdade, está tendo uma velocidade porque uma força está sendo aplicada se eu aumentasse isso. Então, digamos que foram 50. Agora a peça sumiu porque voou do chão do céu. E se quisermos apenas reiniciar isso e entrar rapidamente no espaço de trabalho e mudar a força aqui, digamos 5.000, certo? De repente, obtemos uma quantidade insana de velocidade agora e ela é muito mais rápida. Agora, essa é uma maneira de mover uma peça, certo? Com uma força. Isso já é muito interessante. Para ter isso, há um tipo diferente de força. Também podemos ter, vimos isso. Há uma força de leão. Portanto, a diferença aqui é sutil. força vetorial basicamente aplica uma força em uma determinada direção. Nesse caso, a direção x agora faz isso em relação ao anexo. Você também pode fazer isso em relação ao mundo. A diferença aqui é que se girássemos isso, certo, agora estamos usando a direção x, que é essa estrutura aqui. O que é bom. Porque a extração do mundo é dessa maneira e a direção x do anexo também é dessa maneira. Se fôssemos girar os acessórios. Então, agora selecionei o acessório e o estou girando em 90 graus, certo? Então, vamos dar uma olhada aqui. Rotação modal de 90 graus. Acabei de verificar isso. E se eu girasse 90 graus, de repente o x do acessório está nessa direção. Agora estamos ficando meio confusos porque, bem, a força, certo, vamos nos livrar da linha primeiro por um momento. A força vetorial está sendo usada em relação à fixação. Então, agora vamos diminuir o zoom nessa direção. Se você quiser, espere o que diabos está acontecendo? Bem, vamos dar uma olhada e você verá que agora não está ampliando nessa direção, mas nessa direção. Porque a força está sendo aplicada localmente, porque temos coordenadas mundiais. Então, o mundo nessa direção é x, essa direção é z, e a direção ascendente é a razão pela qual tudo deveria estar mais ou menos bem. Mas você também tem instruções para suas próprias peças, certo? Porque se você se afastar, de repente ele é girado. Veja, agora é x, isso é x, isso é z, isso é y. Está tudo bem. Mas se fôssemos girá-lo em torno de 90 graus em torno da direção x, certo? De repente, y agora é diferente porque mudamos a rotação. Então, se você mudar a rotação de algo, mudar seu sistema de coordenadas locais 3D funcionou de forma muito louca , mas no geral, espero que seja compreensível que haja uma diferença entre um sistema de coordenadas local e o sistema de coordenadas global. E essa foi a força vetorial. Na verdade, vamos falar sobre a outra força também. Essa é a força da linha. Vamos apenas desativar a força vetorial aqui. E a força da linha precisa de acessórios, como você pode ver. Então, o que podemos fazer é criar um novo porto. Esse vai ser o, esse aqui, e vamos fazer isso amarelo, mas como laranja, tudo bem. Vamos ampliar isso um pouco . Algo parecido com isso. Na verdade, estou bem com. E se fôssemos, digamos que gire isso um pouco e mova isso cerca de dois, algo assim. O que poderíamos fazer é acrescentar que essa será a parte da linha de força. Só para demonstrar isso, queremos adicionar um outro anexo a isso. Agora, esse anexo, mais uma vez, está no meio disso. Podemos mover o anexo e você deve ser capaz de ver se fazemos isso. Vamos renomear isso também. Fixação de força de linha. Agora também podemos mover isso. E você pode ver que é um pequeno ponto aqui que você será C. Você também pode tornar isso visível e sempre estará visível, mesmo que não o tenhamos selecionado, às vezes pode ser útil. Então, se movêssemos isso como no topo aqui, o que podemos fazer agora é pegar a fixação da peça forçada e anexá-la ao outro acessório, o acessório da força de trabalho fazer uma linha e, em seguida esse objeto em particular se moverá através dessa linha. Então, basicamente, ele vai puxar o primeiro anexo aqui. Então, se formos para a linha de força, à direita, ela puxará a fixação forçada em direção à fixação da linha. Se fizermos uma força de reação ativada, isso é importante. E então a magnitude, mais uma vez, é apenas a ideia de quão rápido ela está indo. Então, se fôssemos executar isso, vamos ver se isso faz alguma coisa que alguém verá, nada acontece, mas 1.000 provavelmente não era alto o suficiente. Vamos fazer 4.500, algo assim. Talvez isso seja suficiente neste caso. E isso é realmente suficiente. E você pode ver que está tentando chegar a isso. No entanto, ele realmente não consegue se levantar devido à gravidade neste caso. Então, o que podemos fazer é também aumentar isso para que possamos tornar a força da linha ainda mais forte. Então, poderíamos fazer algo como 7.500, talvez não 75 K, isso é um pouco mais 7.500, talvez algo assim. E podemos ver se isso faz alguma coisa. E agora é como se tivesse realmente derrubado o pavilhão auricular, o que também é meio engraçado. Mas você pode ver que basicamente está desenhando uma linha do meio desse cubo até este. Então, do apego vigoroso ao outro. Então, esses são os dois tipos de forças, neste caso, força vetorial e força de alinhamento, ambas usadas com acessórios, que também são bastante interessantes porque você pode fazer muitas coisas com o apego , na verdade, e veremos algumas coisas com elas em palestras futuras. Então, para resumir, no geral, existem dois tipos de forças, a força vetorial e a força linear. A força vetorial simplesmente aplica uma força em uma determinada direção vetorial para um determinado acessório, a direção do vetor pode ser relativa ao próprio acessório. Portanto, ele mudará a direção dependendo da rotação do próprio acessório. Ou pode ser em relação ao mundo, o que significa que os objetos, a orientação ou rotação dos objetos não influenciam em qual direção a força está sendo aplicada. Também existe uma força de linha que, na verdade, usa dois acessórios. Então, basicamente, aplica uma força de um acessório para o outro. Portanto, desenha uma linha de um acessório ao outro e aplica uma força nessa linha. E isso vai ser o suficiente para esta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo . Nos vemos na próxima palestra. Então, sim. 26. Restrições (Roblox): Tudo bem, vamos continuar com a seção para iniciantes do Roblox aqui para o curso Roblox. E nesta palestra, vamos dar uma olhada nas restrições. As restrições são algo muito, muito interessante que você pode adicionar novamente ao seu espaço de trabalho, o que restringirá o movimento de suas peças. Agora, esta será uma visão geral muito superficial como uma introdução aqui, ou seja, pode ser, quero dizer, isso poderia ter sua própria palestra teórica de duas horas. Então, vamos adicionar uma nova parte e vamos fazer isso, digamos, um pouco de laranja mais escuro, talvez um pouco de laranja mais escuro. Aí está. E vamos aumentar um pouco isso e adicionar um anexo a isso. Então, essa vai ser a parte descarregada e isso vai ter uma restrição. Em primeiro lugar, ele vai ter um anexo. Na verdade. Este será o engodo, anexo transmitido, só para sabermos o que é isso. E então podemos pesquisar para que possamos, para que possamos adicionar algo a ela e simplesmente procurar por restrições. E você pode ver que há várias restrições. Como você pode ver claramente, a balsa pode restringir. Há uma dobradiça de consentimento cilíndrica, nenhuma colisão é prismática, rígida, como se houvesse todo tipo de coisa que você pode ter aqui, e essas fazem coisas diferentes. Por exemplo, a restrição de corda uma corda entre dois acessórios. Então, no nosso caso, teremos o primeiro anexo B, nosso próprio anexo. E então vamos ver. O segundo apego é o apego à nossa parte forte. E então você pode ver, de repente, que ele forma uma corda entre eles. Então, se eu realmente habilitar a visibilidade, você pode ver que agora é uma corda que está girada entre esse acessório e esse acessório. E a corda é muito legal. Então você pode ter diferentes espessuras. Então isso seria uma corda muito grossa e grossa. Então, vamos colocá-lo de volta em 0,1. Você também pode mudar a cor, é claro, certo? Então, se você quiser uma cor de corda diferente , isso também funciona. E depois há algumas coisas interessantes que são o comprimento aqui, a restituição, bem como o guincho ativado. Se habilitarmos o guincho, então há mais alguns atributos que podemos usar. Mas vamos ver, vamos fazer o comprimento para você possa ver se eu aumentar o comprimento, dez não é nada, mas se eu fizer dois, Wendy, por exemplo, se eu fizer 50, vamos lá. Ok, então 20 não é o suficiente, mas 30, não exatamente 40. E então começa a ficar meio frouxo aqui porque é mais longo do que realmente precisa ser, certo? Então, se eu fosse fazer 32, algo assim, ainda é ensinado. 35 já está meio que caindo. Então você pode ver isso porque a corda tem um certo comprimento. Se eu movê-lo, você poderá vê-lo. Na verdade, é. É levar em consideração o comprimento da corda ao exibi-la. Então isso é muito, muito legal, certo? E o que acontecerá agora? Digamos que eu faça com que essa parte em particular seja ancorada aqui. Isso significa que esse cara não se move como qualquer coisa que você faz. Mas o que vai acontecer é que eu vou reativar minha força vetorial aqui. Então, o cubo quer diminuir o zoom nessa direção. O que você acha? O que vai acontecer? Vamos dar uma olhada e ver o que vai acontecer. Então, descobriremos que o cubo está tentando se mover nessa direção. Mas é claro que pode, porque é limitado pela restrição da corda. Isso é realmente incrível. E você pode fazer algumas coisas interessantes com isso. Então esse é um exemplo da restrição de corda. Como se houvesse tantas restrições , como você viu claramente, certo? Outra restrição interessante é a restrição de mola. Este é esse aqui, e é um pouco complicado de usar, mas uma vez que você entende, é muito legal. Em primeiro lugar, para isso, na verdade, vou mover o anexo de restrição um pouco para baixo só porque é só para que fique no mesmo nível do outro. Então isso seria, onde está? Isso é menos quatro. Portanto, a palavra posição é na verdade 1,5 no y e a posição mundial aqui é dois. Então, vamos apenas adicionar, fazer isso 12. Aí está. E agora deve estar no mesmo nível. E então podemos realmente anexar esse anexo zero é mais uma vez a parte da restrição e o anexo um é a porta forçada. Você pode ver que há uma mola agora e podemos mudar a aparência aqui adicionando mais algumas bobinas. Podemos mudar o raio aqui para loucura e a espessura para algo muito grosso. Novamente, vamos tornar isso sempre visível para que tenhamos isso por enquanto. E isso são apenas aparências. Portanto, isso não muda nada quando se trata da funcionalidade. A funcionalidade é então feita aqui com a mola. Portanto, o comprimento atual é 16. Então, digamos que o comprimento dos três é basicamente o comprimento que você deseja. Isso, você pode ver, na verdade, é o comprimento no qual a mola não exerce força de rigidez. Isso significa que ele não vai mais empurrar esse objeto em particular. E tudo bem. Se você disser 16, então se fizéssemos isso, nada acontecerá. E também é zero rigidez, então nada acontecerá de qualquer maneira. Mas se definirmos a rigidez para 1.000, digamos que vamos colocar o amortecimento em até cinco, algo assim. E vamos jogar isso. Ah, mas antes de começarmos, vamos desativar a força vetorial, só que a temos desativada. E então vamos realmente entrar aqui e você poderá ver isso quando eu estiver dentro, certo. Então, agora, nada acontece se eu tentar colocar isso aqui e ver isso, certo. De repente, ele se recupera, certo? Então eu posso mover isso. Rumo à primavera. E sempre tentará obter a distância definida na restrição aqui. Então você pode ver que a distância atual é 17. Eu posso tornar isso menor basicamente pressionando isso para a direita. E então vai se estender novamente. Agora, o comprimento atual aqui não muda. Provavelmente só muda no servidor, o que na verdade é uma coisa meio interessante. Então, vamos realmente ver se esse é realmente o caso. E você pode ver que você pode fazer algumas coisas bem insanas por aqui. Mas sim, isso muda no servidor. Então é bom saber isso. Mas sim, então essa é uma daquelas coisas que você pode fazer, algumas coisas realmente interessantes para que isso funcione. Obviamente, a restrição de mola precisa uma rigidez alta o suficiente e de um certo comprimento de três, basicamente, certo? Então, se diminuíssemos esse comprimento livre, de repente, isso diminuiria porque, bem, agora o comprimento livre é 12 e ele tentará fazer com que o comprimento atual seja aproximadamente o comprimento livre. Não exatamente, mas o máximo possível. E porque a mola, nesse caso, uma vez que realmente mantém um equilíbrio, ambas as coisas, ela não quer ser muito longa e também não quer ser muito curta. Você também pode ativar limites. Então esse seria o comprimento máximo, certo? Então você pode, o comprimento máximo é menor que o comprimento livre, realmente não faz nenhum sentido. Então você pode dizer algo como 20 e minlength, você pode dizer algo como cinco e então você não pode nem mesmo aproximá-lo disso. Então, se fôssemos agora mover isso para cá, um pouco mais. Vamos ver algo assim que vai ser mais fácil do que se você tentasse menos de cinco, vamos realmente fazer dez. Talvez isso seja um pouco mais fácil e isso nem funcione. Então você pode ver lá, eu realmente vejo, eu nem gosto mais de empurrar isso porque esse é o comprimento mínimo real. Se for zero, pode ser tão curto quanto você quiser. Então, o que eu faço é altamente recomendável com as restrições, especialmente a restrição de mola, porque às vezes pode ser que há muitas coisas que você pode mudar aqui. Eu recomendo brincar um pouco com isso, incluindo algumas das outras restrições. Portanto, a restrição de linha é provavelmente uma das mais fáceis de trabalhar. A restrição da mola é um pouco mais complicada, e algumas outras são ainda mais complicadas. No entanto, eles permitem quase todos os tipos de coisas baseadas na física. Então, em teoria, com a restrição da mola e algumas das outras, as dobradiças e a cilíndrica, ela restringe. Você pode realmente construir como física, carros simulados e coisas assim. Na verdade, é como o nosso simulado com física real. É insano que isso funcione, mas funcione. Mas isso é algo para pessoas avançadas e avançadas, certo? Como se isso não fosse nada para nós no momento, mas é muito legal. Portanto, recomendo que você experimente um pouco as restrições e veja o que você cria, essa é basicamente sempre uma das melhores ideias para aprender como tudo isso funciona. Para resumir, há várias restrições que você pode adicionar às suas peças e depois adicionar dois anexos. E isso pode restringir as partes sobre como elas são capazes de se mover. Há muitos tipos diferentes de restrições. Vimos a corda e a restrição da mola como dois exemplos aqui. E, mais uma vez, mencionaremos que eu sugiro que você brinque com alguns deles e, então espero que também possamos encontrar alguns usos interessantes para eles. Mas isso vai ser o suficiente para esta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo . Nos vemos na próxima palestra. Então, sim. 27. Pontos de geração (Roblox): Tudo bem, vamos continuar com os conceitos básicos de obstáculos aqui seguir o curso de robótica e, nesta breve palestra, falaremos sobre como adicionar novos locais de desova. Então, é claro, adicionar um novo local de desova. Isso não é nada disso, é insano, certo? Você pode literalmente fazer isso indo para modelar spawn e depois há outro spawn, ou você pode duplicar o spawn já existente. O que acontece se você tiver dois desses no mesmo lugar? Bem, vamos jogar. E obviamente veremos que eu apareço aqui. Então, eu crio os próximos dois clicando em Jogo aqui. Vamos parar e jogar de novo. E vamos ver onde ela nasceu agora. Agora eu também apareço ao lado do jogo de cliques. Então isso é muito legal. E vamos nascer de novo. E espero que as forças da aleatoriedade estejam do meu lado , porque agora eu nasci não ao lado do jogo de cliques, mas na verdade ao lado da fonte aqui, o que é muito legal. Então, a ideia é que, se você tiver vários spawns da mesma equipe, o que acontecerá é que você receberá um deles aleatoriamente. Se você selecionar um dos locais de desova e descer até o fim, verá que há algo chamado mudança permitida ao toque e também a cor da equipe. Então, para isso, você realmente precisa de equipes. Vamos apenas dar uma olhada nisso. Então, em nosso Explorer, podemos realmente adicionar algumas equipes. Assim, podemos adicionar uma equipe. Vamos apenas chamar essa equipe de vermelha. E então também adicionaremos outra equipe, que será a equipe azul. Equipe azul. Vamos apenas fazer com que seja uma cor azulada. E o outro, vamos fazer disso uma cor avermelhada. Muito pronto, eu gosto disso, isso é muito legal. E isso é praticamente tudo o que você precisa fazer. Podemos ativar ou desativar o atribuível automaticamente. Vamos mantê-los ligados para os dois. E se agora formos para o pequeno local, certo? E nós descemos, podemos mudar a cor da equipe, realmente vermelha, e podemos dizer: Permitir que a equipe mude. E então podemos ir aqui e também podemos dizer isso, e esse será o azul. Acho que foi assim, azul elétrico. Tenho certeza de que temos nossas duas equipes. No entanto, neste momento, as colheres ou neutras, queremos que elas não sejam neutras. Então, quando você surge, você tem certas equipes associadas a isso. Então, vamos entrar aqui. Então, agora eu estou na equipe vermelha porque eu apareço aqui. Se eu for até o outro spawn e tocar no outro vão, de repente eu sou Tim Blue. Vamos e eu posso voltar e ir para a equipe vermelha novamente. E você pode até ver que você muda as equipes. Agora, isso nem sempre é o que você quer, certo? Talvez você realmente não queira que as pessoas mudem de equipe. Então você diz: Ei, você não pode permitir que a mudança de equipe apareça em nós. Então isso funciona. Então você pode simplesmente desligar isso. E também o que é importante é que, se mudássemos isso para, digamos, muito azul agora em vez de azul elétrico, certo? Mas se eu tiver isso ativado, a cor da equipe será azul elétrico, mas o azul da equipe na verdade terá a cor da equipe muito azul. O que vai acontecer agora? Vamos ver, vou para a pequena equipe vermelha. E se eu for até aqui, isso agora está mudando a equipe. Você pode ver que isso me transforma neutro porque não encontra a cor da equipe. Isso é muito importante. Portanto, essa é uma parte importante disso. Então, basicamente, se entrarmos aqui, a cor da equipe diretamente no local do spawn, isso na verdade tem que ser exatamente a mesma cor da equipe. Então, isso seria azul elétrico. E então isso também tem que ser azul elétrico. Essas cores da equipe são basicamente iguais. É também por isso que você pode ter duas equipes com a mesma cor. Na verdade, essa é uma parte muito importante disso, mas essa é a ideia geral de adicionar equipes e novos locais de desova. Agora, o que você gostaria de fazer é, na verdade, criar todas essas equipes e todos esses quatro locais por meio de um script. Essa também é uma ideia inteligente. Não vamos fazer isso por enquanto. Eu só queria mostrar basicamente como adicionar outro local e também como dar uma olhada na equipe. Então, isso vai ser o fim desta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo. Nos vemos na próxima palestra. Então, sim. 28. Jogador (Roblox) vs personagem: Vamos continuar com os conceitos básicos do Roblox aqui para o curso de obstáculos. E nesta palestra, falaremos sobre personagem versus jogador. Então, o que é um jogador e o que é um personagem? Vimos os jogadores aqui no Explorer. E se nos juntarmos, então podemos realmente ver que há algo adicionado e que é contável. Então, eu sou adicionado como jogador, mas se entrarmos no espaço de trabalho, eu também sou adicionado ao espaço de trabalho, o que é muito interessante. Vamos dar uma olhada nisso da perspectiva do servidor. Então, no servidor, podemos ver que também temos o jogador entrando e também temos o quilômetro modal. Então eles podem ver que isso é um modelo, enquanto isso aqui é um jogador. Então, qual é agora a diferença entre o jogador aqui e o modelo ou o personagem, como o que faz cada uma dessas coisas. Então, o player realmente contém quais dados do jogador, certo? Então, isso será algo exclusivo para mim no meu ID de usuário Eu tenho uma equipe, certo? Então, isso é específico para o meu jogador. Embora o personagem ou o modelo sejam apenas a representação física aqui, certo? Então isso vai ser, esse é o modelo ou o personagem, e isso tem cores diferentes. Tem, tem um conjunto de saúde , tem um componente humanóide. E os componentes humanóides são responsáveis, como você pode ver por parte da escala, por parte da largura, por essa descrição uniforme. Então você pode ver que há acessórios diferentes. Então, essas são todas as coisas visuais. Isso também inclui scripts, como você pode ver, scripts locais como o animate. Então, essas são basicamente todas as animações que você vê quando eu me mudo para cá. Essas animações, certo? A animação de caminhada, a animação de salto, tudo isso, tudo isso é feito por meio da animação aqui, esse cara, que eu realmente posso ver . Então você pode realmente ver, esse é o script animado que já está aqui. E você pode ver que há muitas coisas aqui. Então, como você pode ver claramente, alguns desses esfoliantes podem ficar muito loucos. Então, no geral, quando você realmente pensa sobre isso, o importante é que o jogador, se quisermos adicionar qualquer tipo de valor, eles sejam adicionados com o jogador enquanto qualquer outra coisa é adicionada ao personagem. Então você pode ver, se, você pode ver se eu expando o player aqui, há uma mochila aqui, há algum equipamento inicial. Então, se você tivesse equipamento, certo, você o salvaria no player e ele seria exibido no personagem ou no modelo. Então, se por algum motivo você quisesse mudar a aparência do nosso personagem, você precisaria realmente referenciar o personagem e não o jogador. Agora você pode obter o personagem por meio do jogador, certo? Porque se eu clicar no controle aqui, você pode realmente ver que temos uma referência de personagem aqui, que é colegial, que é exatamente esse cara aqui, certo? Então, eles estão vinculados. Você pode obter o personagem do jogador. Mas essa é a ideia geral. Então, para resumir, o personagem é tudo o que é visual. Basicamente, ele tem uma referência a todos os modelos e todo o material humanóide, e está disponível dentro do espaço de trabalho. Em teoria, no entanto, você sempre usaria o player. Você sempre esperava até que o jogador carregasse ou algo parecido, e depois passava do jogador até o personagem, porque o jogador tem uma referência ao personagem e o próprio jogador é basicamente o cliente real e tem todo tipo de inflamação, incluindo alguma reserva de valor, que na verdade veremos na próxima aula. Bem, isso vai ser para esta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo. Nos vemos na próxima palestra. Então, sim. 29. (Roblox) poupando variáveis no jogador: Vamos continuar com o básico sobre robôs aqui para o curso de robótica. E nesta palestra, vamos dar uma olhada em como você pode salvar certas variáveis no seu player. Agora, isso à primeira vista pode parecer um pouco, e isso meio que não é realmente útil, mas na verdade é muito, muito interessante. Então, onde podemos adicionar esses valores? Queremos adicionar esses valores ao pacote inicial. Então, o que você pode fazer é adicionar valores, como você pode ver, se eu pesquisar valores, você adicionará valores de cor em números de valores. Então, há um monte de coisas que podemos adicionar aqui. Digamos que adicionamos um valor final e vamos chamar isso de. Eu experimentei apenas por uma questão de discussão aqui, só para que tenhamos algo com que trabalhar. Se fôssemos começar a jogar agora, certo? E se olharmos para o jogador e acalmarmos Joel, e depois para a mochila, você pode ver que tenho alguma experiência na minha mochila. Agora, é claro, nesse caso, experimentar a mochila não faz muito sentido conceitualmente, mas pense nisso, pois, tudo bem, agora você terá alguma experiência adicionada ao seu jogador. Veremos isso na próxima palestra de uma forma um pouco mais agradável. Mas só por uma questão de discussão, vamos continuar assim por enquanto. Agora, neste momento, podemos realmente fazer qualquer coisa com a experiência, como se ela não mudasse sua mente. Acho que podemos mudar isso aqui, mas isso não faz nada, certo? Mas o que queremos fazer é dizer que queremos mudar a experiência toda vez eu mudo de posição aqui. Digamos que quando eu pulei no outro quarteirão aqui, certo? Então esse seria o bloco de toque, certo? Se eu começar com isso, em vez de explorar 1 bilhão de coisas, eu realmente gostaria de imprimir a experiência real desse jogador em particular. Ok, isso parece, isso parece muito interessante. Agora, em teoria, você já deveria ser capaz de fazer isso sozinho. Mas vamos passar por isso. Agora, primeiro, vou realmente criar um novo objeto aqui e abordaremos isso de forma um pouco diferente. Então, vamos colorir isso com uma cor um pouco diferente, talvez um pouco mais de vermelho escuro. Sim, isso é bom. Borgonha. Absolutamente. Isso é cor de vinho. Vamos manter isso como um clicker com outro script. Na verdade, esse será o clique da experiência. E esse será o script de clique de experiência, porque isso realmente resultará na resultará experiência real dos jogadores. Então agora temos o jogador aqui, certo? Quando clica nisso, podemos realmente fazer o ponto do jogador e, em seguida, podemos fazer a experiência de mochila e depois pontos. Isso vai funcionar? Bem , vai procurar isso. E desde que tenhamos escrito tudo aqui corretamente , isso deve funcionar, certo? Então, devemos ser capazes de dizer esse jogador, certo? E então podemos realmente fazer com que o jogador mostre o nome do jogador como XB, certo? Então, isso deve ser produzido por esse conselho de jogadores e, em seguida, qualquer experiência que tenhamos realmente dentro da mochila. Vamos ver se isso realmente faz alguma coisa, certo? Então, vamos entrar aqui e ver, onde está aqui. Então, se eu clicar nisso, poderemos ver essa contagem, essa linha de contagem de jogadores já experimentou XP. Ok, bem, isso não é exatamente um treino como queríamos, porque nossa experiência aqui, certo, é um valor int. Na verdade, precisamos calcular o valor do ponto e depois obter o valor, porque, é claro, quando somos experientes, simplesmente entendemos o nome, certo. Portanto, o padrão é o nome e, na verdade, queremos obter o valor. Então, agora, em teoria, se eu fizer isso de novo, se entrarmos aqui e clicarmos aqui, poderemos ver esse jogador sair, sem experiência. Esse é um primeiro passo muito, muito bom. Agora vamos ver como podemos aumentar a experiência. Para isso. Queremos mudar o clique esquerdo e o direito. Aí está. E por isso, mais uma vez, temos o jogador. Então, podemos simplesmente mudar a experiência, certo? Então, basicamente, podemos considerar valor da experiência de mochila desse jogador. Então essa é a experiência. E quando isso, quando o jogador clica, só queríamos aumentar o valor em um. Isso é literalmente tudo o que queremos fazer. Ok, vamos fazer isso aqui, e vamos fazer a mesma coisa aqui. E isso deve ser basicamente o que precisamos. Então, agora o valor da experiência aumenta toda vez que clicamos na esquerda e na direita. Então, vamos ver se isso realmente faz alguma coisa. Em primeiro lugar, só para verificar se alguém verifica a experiência do HasZero, que está absolutamente correta. Se formos até o jogador aqui, veja a experiência da mochila. Agora, eu clico nesse. Você pode ver, de repente, que eu tenho uma experiência. Agora eu tenho 3456 e posso realmente clicar no mesmo e obter várias experiências, é claro, mas este é apenas um exemplo neste caso. Se eu clicar agora, você verá que tenho 16 experiências. Sim, isso é muito legal, certo? Então, se salvou o valor no player e agora está sendo armazenado. Agora, se eu parasse e classificasse novamente, é claro que ela será reiniciada, certo? Se eu voltar aqui, bem-vindo de volta. Isso é zero mais uma vez porque não o estamos salvando em nenhum lugar. Na verdade, vamos analisar isso em uma etapa intermediária porque, na verdade, precisamos salvá-la na nuvem de obstáculos, que é um pouco mais complicada, pois também vem com outras coisas que você realmente precisa observar. Mas agora, você salvou um valor específico no player com um valor int aqui. E mais uma vez, posso te mostrar que há valores diferentes que você pode ter. Valores booleanos, valores de cores e números de valores. Você pode até ter valores de objeto, valores vetoriais de três. Portanto, é muito legal o tipo de valores que você pode armazenar no player. E você pode basicamente aprimorar seu jogo com estatísticas ou atributos do jogador. Agora, isso já é muito legal, mas na próxima palestra, veremos como você pode adicionar os conjuntos de líderes. Então, isso seria adicionar as estatísticas na tabela de classificação no canto superior direito, à direita. Se eu entrar aqui, nós vimos a tabela de classificação porque temos equipes diferentes e eu posso adicionar certos valores a essa tabela de classificação como estatística e depois alterá-los também. E então podemos realmente vê-los como mais ou menos no jogo. Portanto, não precisamos basicamente ir como uma pedra aleatória e clicar nela para ver quanta experiência temos. Na verdade, poderemos ver isso no jogo. Então, mais uma vez, isso é muito incrível. Nossa, isso vai ser o suficiente para esta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo . Nos vemos na próxima palestra. Então, sim. 30. Quadro de liderança com Leaderstats: Tudo bem, vamos continuar o curso básico do Roblox aqui para que o mundo funcione. E nesta palestra, vamos dar uma olhada nas tabelas de classificação, ou também chamadas de estatísticas de líderes. Isso é muito interessante. Então, isso realmente excluirá a experiência que colocamos no pacote inicial, porque dessa vez, na verdade, geraremos todos os nossos valores diferentes por meio de um script. Então, nos servidores de scripts do servidor, vamos criar um novo script e serão estatísticas de 16 traços por litro. E vamos acrescentar que isso é uma tabela de classificação ou estatísticas de líderes. Essa é a ideia geral e, na verdade, é muito importante que façamos tudo isso corretamente. Então, primeiro de tudo, teremos jogadores locais e isso é igual aos jogadores do jogo. Então, isso vai dar uma olhada nesse aqui. Então, os jogadores estão aqui, e vai conseguir isso. E o que podemos fazer é criar uma função local aqui. E essa função será a configuração da tabela de classificação. E isso vai acontecer com todos os jogadores e vai ficar assim. Então, criaremos uma nova pasta. Em primeiro lugar, será chamado de estatísticas do líder e depois de pasta em si. Então, esta é uma nova pasta e esta é uma instância dot nu, e esta é uma nova pasta. Como você pode ver. Esta é apenas uma nova pasta que será criada para que cada um de nossos jogadores veja como elas serão adicionadas para cada jogador em apenas um momento. Mas antes de tudo, e isso é extremamente importante. O nome aqui tem que ser exatamente estatísticas de litros. Por favor, preste atenção a isso. Tem que ser escrito exatamente assim. L minúsculo, estatísticas em litros. Não há espaço no meio, não há traço, exatamente assim. Já vi isso tantas vezes que as pessoas dizem : Oh, eu não sei onde isso não funciona. É porque tem que ser escrito exatamente assim. Quando for esse o caso, você pode então definir o ponto principal de estatísticas do líder igual ao próprio jogador. Então, isso vai definir as pastas principais do player, que é exatamente o que queremos. E agora podemos adicionar valores diferentes. Então, por exemplo, podemos devolver o valor experimentado. Então, podemos experimentar a mesma instância dot nu, e isso agora será um valor int. E então podemos ver que o nome do ponto experiente é, é claro, experiência. Aí está. Então, o valor do ponto experimentado será zero. Então, vamos começar com zero, o que faz sentido. Então é muito importante aqui no final. Experimente que o pai é então igual às estatísticas de litros. Então, queremos classificar cada uma de nossas variáveis de acordo com as estatísticas do líder. E, em teoria, podemos simplesmente duplicar isso ou copiar isso e depois mudar isso para, por exemplo ouro também, certo? Então, basta mudar tudo isso para ouro. E digamos que comecemos com algo como dez de ouro. E agora temos isso. Agora, isso ainda não está frio em nenhum lugar, porque de onde chamamos isso? Bem, vamos dizer que os jogadores adicionaram o jogador ponto. Este é um evento aqui, como você pode ver, e é chamado toda vez um jogador é adicionado ao jogo. E vamos conectar isso à configuração da tabela de classificação. E agora, toda vez que um novo jogador entrar em nosso jogo, ele receberá a pasta de estatísticas do líder com a experiência de valor int e o valor do ouro com zero de experiência e dez volts. Então, isso é muito legal. Vamos jogar e ver se isso funciona. E garanto que funcionará. Você pode ver que agora, contando, Joel tem zero de experiência e dez de ouro. E se abrirmos o player aqui, podemos realmente ver que há uma pasta de conjuntos de líderes. E em vez disso, você tem a experiência e o ouro. E, basicamente, a tabela de classificação aqui sempre procura uma pasta de estatísticas do líder e a exibe. Agora, é claro, o que não podemos mais fazer é clicar nela porque, no momento não há nada em nossa mochila, então podemos realmente exibir isso. Então, vamos voltar aqui e clicar na experiência. E então vamos também colocar os dois cliques aqui. Então, o esquerdo e o direito, e vamos mudar isso aqui. Estávamos mudando o valor da experiência na mochila e agora, na verdade, a mudamos nos conjuntos de líderes. Então, como isso funciona? Bem, há algumas maneiras de fazer isso. Se não quisermos verificar nada, podemos literalmente dizer que o valor do ponto dourado é igual a mais um, por exemplo, ou experimentamos, quero dizer, o que quisermos. Vamos fazer a experiência aqui, e vamos fazer a experiência aqui também. Então, podemos fazer isso. Agora vamos fazer isso apenas por uma questão de argumentação, certo? Então, vamos entrar aqui e devemos ser capazes de descobrir que, se eu fizer isso, você pode ver que nossa experiência aqui aumenta. Isso é muito legal. Mas e se, digamos, isso for propenso a flechas muito fáceis? Porque nesse caso, eu cometo um erro de digitação aqui. E, de repente, pensamos, eu escrevo um texto aqui e, de repente clico nele e recebo um erro porque, ei, a experiência não é um membro válido. Eu digo: “O que diabos está acontecendo?” Sinto falta de digitar isso. Portanto, há um pouco de validação aqui que você pode fazer. E isso vai ser algo assim. Então, podemos, por exemplo, dizer: Ei, me dê as estatísticas de líder do jogador aqui. Então, vamos fazer com que a posição do líder seja uma variável. Isso não gerará erros, mesmo que não haja litros. Isso porque, bem, isso não importa. E então podemos fazer um local e isso é realmente muito interessante. Então, o que podemos fazer é dizer experiência estatística, e isso é loucura. Podemos dizer estatísticas de litros. E então coloque em litros na posição de cólon, encontre o primeiro filho, isso é uma função e isso buscará experiência. Isso pode parecer absolutamente insano. O que faremos então é dizer, se experimentarmos isso , então, podemos realmente aumentar isso. E podemos usar isso usando a experiência. Isso é o que podemos dizer, experimentamos isso, que o valor é mais igual a um. Por que isso é melhor do que isso? Bem, antes de tudo, isso garante que os dois conjuntos de líderes existam, além de encontrar a experiência real aqui com um bom primeiro filho, ela é validada usando a declaração if aqui. E a ideia geral dessa taxa de linha é que isso é verdade e então ela retorna o que está aqui, certo? Então, basicamente, estamos dizendo: Ei, isso não é nulo? Geralmente, essa é a ideia, certo? Então, o líder diz que não é nulo. E então descobrimos que essa criança, que é então salva na experiência, essa experiência, esse valor mais igual a um é o mesmo que isso. Então, se quiséssemos, apenas por uma questão de argumento, copiá-lo também para o botão vermelho e mudaríamos isso. Você, veremos que tudo isso funcionará. Então, vamos entrar aqui e clicar aqui e você pode ver que a experiência ainda aumenta. Nesse caso, esse script é muito melhor e apenas garante que tudo exista. Agora, e a saída? Isso ainda não funciona bem, vamos até a experiência, clique aqui. E aqui, a mesma coisa se aplica, certo? Basicamente, podemos simplesmente conseguir isso. E então, em vez de fazer o mais igual, podemos simplesmente dizer que vamos imprimir o valor dos dados experimentados aqui neste caso. E então podemos realmente fazer o mesmo. Podemos fazer outra declaração. Então, se a experiência não existe por qualquer motivo, podemos dizer que esse jogador não tem experiência por uma questão de argumento, certo? E então, se jogarmos isso e entrássemos aqui, agora não temos experiência, certo? E então podemos aumentar essa experiência. Agora temos seis, então agora temos seis experiências. Tudo isso funciona, certo, então isso já é muito legal. Agora, podemos ficar ainda mais loucos só por uma questão de argumentos. Então, por exemplo, o que poderíamos fazer é dizer, bem, se você clicar aqui, nós realmente queremos saber se você não tem ouro suficiente ou não, certo? Talvez custe ouro mover a coisa. Então, o que podemos dizer é que podemos fazer isso. E então também podemos dizer, encontre também o ouro para mim, certo? E então podemos dizer o seguinte. Se não há experiência que isso agora será uma estrela dourada, certo? Então, essa é a estatística dourada. Então, podemos dizer se a estatística dourada, então vamos verificar qual é o valor. Se a estatística dourada e valor dos dados padrão-ouro forem maiores que um, porque vamos diminuí-lo. Então, podemos continuar com isso e aumentar o valor da experiência. E vamos diminuir o valor padrão-ouro. Então, agora estamos ficando absolutamente loucos por aqui. Vamos copiar isso para o outro também, como eu já mencionei anteriormente. Agora, há uma maneira melhor de fazer isso. Em vez de ter dois scripts como esse, você pode ter apenas um script e fazer a mesma função OnClick para os dois. Por enquanto, vamos continuar assim. Tudo vai ficar bem. Mas a ideia geral é que estamos verificando, ok, também temos uma estatística dourada? E se o fizermos, é o valor maior que um ou maior ou igual? Na verdade, é isso que queremos. Sim. E se for esse o caso, estamos verificando a experiência de que estamos aumentando a experiência ao diminuir o ouro. E também podemos rastrear aqui em vez de, se, podemos fazer outra coisa aqui. E então podemos realmente imprimir algo como se o jogador não tivesse ouro suficiente para fins de discussão. Então, se o jogador tiver zero de ouro ou menos de cerca de zero, seria o que ele provavelmente teria. Então, vai imprimir que o jogador não tem ouro suficiente. Então, vamos dar uma olhada nisso. Então, vamos jogar, e poderemos ver que, se eu continuar aqui, certo, não tenho experiência com dez medalhas de ouro. Eu clico aqui. Agora eu tenho uma experiência e nove de ouro e eu posso, eu posso clicar na mesma. Estou com zero Gold, tudo ainda está funcionando bem. Se eu fizer isso agora, de repente, o computador não tem ouro suficiente. Agora, a coisa ainda está em movimento. O que podemos fazer é mudar isso para dizer: Bem, você sabe o que, ela só vai se mover se a meta for realmente subtraída, certo? Então, vamos mover isso só para aparecer. E então, de repente, só podemos mover a peça se realmente tivermos ouro. Bem, isso é muito interessante, certo? Então, podemos mover isso de um lado para o outro. Está tudo bem, certo? Aí está. E mudamos isso mais uma vez, e agora eu clico aqui e de repente, não, não funciona certo? Como se você tivesse clicado em mim, mas você não tem ouro suficiente. Na verdade, é muito interessante que essa já seja uma funcionalidade muito legal. Para resumir, usamos o evento adicionado pelo jogador para que os jogadores criem uma pasta na tabela classificação para cada jogador que entra em nosso jogo. E essa pasta conterá a quantidade de variáveis diferentes que quisermos. E eles podem representar qualquer tipo de número ou qualquer tipo de valor. Aqui, em nosso caso, adicionamos experiência e ouro, e usamos isso para validar. Precisamos dele em um certo número de ouro aqui para mover uma peça. E então também teríamos experiência. Isso é realmente incrível e permite que você faça muitas coisas. Agora, as coisas estão realmente se abrindo e veremos muito mais coisas que podemos fazer. Mas isso vai ser o suficiente para esta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo . Nos vemos na próxima palestra. Então, sim. 31. (Roblox) peças colecionáveis: Tudo bem, vamos continuar com o básico do Roblox aqui, seguir o curso de obstáculos. E nesta palestra, vamos fazer peças que você pode pegar. Então, como isso vai ficar? Bem, primeiro de tudo, vamos fazer uma nova peça aqui e depois vamos ver. Então, primeiro de tudo, vamos fazer disso nosso 333. Ou seja, acho que rotatória, do tamanho correto que eu quero. Eu quero ancorá-los e só quero movê-los para cima apenas um pouquinho do chão. Então, vamos ter algo assim. Agora vamos realmente colori-los de um amarelo mais brilhante. Então, talvez esse amarelo, eu acho que é diferente dele, certo? Não, isso é amarelo novo e isso também é novo amarelo. Vamos então fazer com que o laranja escuro também esteja bem. Agora temos essa porta e vamos chamá-la de fila dourada, porque isso vai ser, bem, um cubo de ouro. Este vai ter um novo script anexado a ele, e esse será o roteiro Gold Pickup. Agora vamos fazer tudo isso por aqui por enquanto. E então eu vou te mostrar como você pode tornar isso, muito melhor. Por enquanto, um roteiro de coleta dourado, só para verificar isso e do que precisamos? Bem, precisamos realmente saber o que esse ouro em particular é cubista, então precisamos de um cubo de ouro local que seja igual ao ponto principal da escrita. E então também precisamos ter jogadores locais, que sejam iguais aos jogadores de pontos do jogo. Mais uma vez, essa é a mesma ideia que estamos recebendo para esses jogadores. E agora temos uma função local chamada parte tocada porque estamos usando o evento Tocado aqui em apenas um momento para pegar esse item de ouro em particular ou esse ouro. Basicamente, existem várias etapas, é claro, a primeira seria vamos conectar essa conexão de cólon tocado com pontos cúbicos dourados . E então vamos colocar a parte retocada aqui sem parênteses. Então, assim, e agora essa função ou essa função local será chamada toda vez que o evento Touched for acionado. Mas só queremos ter certeza de que isso seja disparado quando o jogador tocar nele. Então, para este que vamos fazer é obter um, o pai da outra parte. Então essa será a outra parte desse pai. E então obteremos o humanóide desse humanóide, certo? Então esse vai ser o pai. Então, o pai da outra parte, cólon, encontra o primeiro filho, que é um e depois humanóide. Humanóide. Aí está. Há uma longa chamada de função. Certifique-se de escrever isso corretamente. Portanto, encontre o primeiro filho, que também está escrito exatamente assim na mesma caixa. E se isso existir, então podemos fazer se um humanóide naquela época e agora tudo dentro daqui só fosse executado. Se a outra parte que toca esse cubo dourado for um jogador um humanóide preso a ele. Então, a primeira coisa que faremos é destruir dois pontos na fila dourada, que significa que isso destruirá esse cubo de ouro. Em apenas um momento. Na verdade, veremos que podemos fazer isso de uma maneira um pouco diferente. Mas, por enquanto, faremos isso e então poderemos fazer a mesma coisa que já fizemos com o clique aqui, certo? Então, estamos basicamente fazendo exatamente tudo isso para Leary , certo? Então, obteremos as estatísticas do jogador, então diremos camada local. Em primeiro lugar, nós realmente precisamos pegar o jogador. Então, para isso, precisamos fazer dois pontos entre jogadores, diferenciar jogador por personagem , porque falamos sobre isso de personagem. E colocamos o cabelo e aqui, colocamos o pai aqui, porque vamos pensar sobre isso. Precisamos do jogador agora mesmo, mas só temos acesso ao personagem por meio do pai aqui. Porque o personagem é a coisa que realmente tocou, certo? Essa é a representação 3D do modelo e, na verdade, toca a outra parte. E precisamos tirar o jogador disso. Essa é a maneira de fazer isso. Em seguida, obteremos as estatísticas do líder. Portanto, litros iguais ao litro de pontos do jogador definem as estatísticas do líder. Aí está. E então, mais uma vez, obteremos as estatísticas douradas, neste caso, estrela dourada igual a estatísticas de litros. E isso é exatamente a mesma coisa que vimos aqui até agora. Vamos apenas obter as estatísticas de líder, cólon, encontrar o primeiro filho. E o primeiro teste que queremos encontrar é ouro. Nesse caso, se as estatísticas de ouro forem verdadeiras, estatística de ouro é verdadeira. Esse aqui. Aí está. Então, o que queremos fazer é querer, bem, não o nome, mas aí está. Queremos dizer que o valor do ponto da estrela dourada é mais igual a um. Com isso, agora temos uma porta de coleta de ouro, então temos uma dessas aqui. Então isso é muito legal. Vamos jogar isso e ver se eu realmente consigo entender isso. Mas tenho certeza de que eu deveria ser capaz de fazer isso. Então, se eu caminhar em direção a ele e tocá-lo, o cubo vai desaparecer e eu vou pegar um ouro. E aí está, o cubo desapareceu e eu ganhei 1 v. Agora o cubo desapareceu para sempre. E, em teoria, poderíamos simplesmente duplicá-lo, Controle D, e podemos duplicá-lo e adicionar mais cubos. Mas em algum momento você tem um problema, digamos que, por exemplo , você sabe que, na verdade, todos esses cubos vão te levar ao ouro. Ok, bem, vamos mudar isso. Bem, espere um segundo. Isso mudou tudo em um desses, certo? Isso mudou esse em particular, mas este não foi alterado e esse script não foi alterado, e os outros também não foram alterados. Isso é meio certo, isso não é muito bom. Então, o que poderíamos fazer para mitigar isso? Há algumas opções que temos à nossa disposição para mitigar isso. Uma delas seria usar um script de módulo. Digamos que, para fins de argumentação, crie um script de módulo aqui, e chamaremos isso de 17 traços. E essa seria a picape dourada. Vamos chamá-lo assim. Aí está. E então o que poderíamos fazer é dizer, bem, vamos pegar quase a totalidade disso e ver o que obteremos como função, certo? Então, vamos fazer uma função aqui. E vamos chamar esse módulo de captação de meta por pontos. E veremos que tipo de parâmetros precisaremos. Então, precisamos da outra parte. Então esse será o primeiro parâmetro. E então também precisamos do cubo de ouro, esse será o segundo parâmetro. E os últimos serão os jogadores. Esse será o terceiro parâmetro. E agora isso deveria, em teoria, funcionar como ponto de interrogação. Bem, quero dizer, vamos ver, certo, então poderemos fazer dois aqui, e então só precisamos exigir isso para podermos dizer que coleta local, digamos que é igual a exigir. E então queremos dizer pontos de jogo, uma espécie de serviço de script e, em seguida, um colchete entre aspas 17 e captação dourada. Você pode preencher automaticamente com a tecla Tab. E agora devemos ser capazes de chamar pickup dark gold pickup, passando a outra parte como primeiro parâmetro, passar o cubo dourado como segundo e depois os jogadores como o terceiro. E agora, isso não é apenas um pouco mais fácil de ler e escrever, como sempre podemos falar sobre isso. Na verdade, você pode segurar Control e clicar nele e , em seguida, você será trazido para esta função aqui. Então isso é muito legal. E agora temos isso dentro dessa parte específica. Então, isso é muito incrível. Agora, ainda precisaríamos mudar todos eles novamente. Mas se tivéssemos esse foi o que mudamos. Sim. Então, vamos apenas para fins de argumentação, deletar o resto e, se agora duplicarmos isso, certo? Agora temos mais uma vez algumas dessas, então temos quatro delas, mas agora todas elas chamam a picape dourada de uma. Bem, agora, se eu quiser mudar o valor, eles mudarão de andar ou de noite. Se eu agora alterar o valor nesse script de módulo, eles mudarão para todos eles. Então, se eu jogasse isso direito, e entrássemos aqui, deveríamos pegar esse. De repente, eu ganho seis de ouro e recebo seis de ouro por este e esse e esse também. Então, agora o que aconteceu é que o ouro, na verdade, porque todos eles compartilham a mesma função aqui, todos podem usar essa. Isso é muito legal porque, caso contrário, estaríamos usando a mesma função de qualquer maneira. Não há nenhuma razão real para não mudar isso. Agora, isso já é muito legal e simples. No entanto, digamos que, para fins de discussão na escolha do gol, agora vou dizer, sabe o que? Em vez de ter a estatística dourada como essa, como o aumento, eu realmente quero fazer uma variável de aumento aqui. E eu vou colocar isso aqui que eu possa basicamente mudar, ok? Na verdade, a conquista de um gol pode ter valores diferentes. Agora vamos nos deparar com a questão de ser nulo, certo? E então, se eu jogar isso por enquanto, nada vai acontecer. No entanto, assim que eu pegar um desses, será como se fosse nulo porque não está definido. E agora estamos de volta ao mesmo problema. Se eu mudar aqui para dois, tudo bem. Mas agora eu tenho um monte de outros em que esse não é o caso. Então, obviamente, o que você quer ter no final aqui é, de alguma forma, todos os seus cubos de ouro terem um script em vez de cada um deles ter seu próprio roteiro, certo? Agora, a maneira de fazer isso é selecionar todos eles, clicar com o botão direito do mouse e agrupá-los como uma pasta. Isso vai subir até o topo aqui. Vou chamar isso de captadores dourados. Aí está. E então eu também colocarei o script dentro da pasta aqui. Isso não é estritamente necessário, mas é um pouco melhor. Agora vamos mudar um pouco esses captadores dourados. Então, no momento , não temos um cubo. Escrever o roteiro aqui é, na verdade, agora o pai. Então essa vai ser a pasta de coleta. Digamos que, certo, aí está. E o que vamos fazer agora é analisar todos os filhos dessa pasta em particular. Então, isso é um for-loop agora, então isso vai ser quatro. E então o que podemos fazer é fazer um I e um pickup aqui em, e isso vai ser um i pares. Então, o que isso faz, você pode realmente ver, ele realmente diz que retorna uma função iteradora e a tabela para uso em loop. Então agora você pode estar pensando o que o **** está acontecendo aqui. Não se preocupe, espere um momento. Então, vamos usar isso apenas para o seguinte, e vamos usar isso para a pasta de coleta, dois pontos para obter crianças. Então isso vai levar todas as crianças, certo? Isso é bom. E então vamos fazer alguma coisa. O que vamos fazer aqui? Em primeiro lugar, vamos dizer que, se eu for igual a um, quero que você continue porque esse será o roteiro de captação dourada. Ok, isso é justo. Então eu quero que você pegue aquela conexão do cólon tocado. E então eu quero usar o on-board touch. Ok, eu quero fazer isso em primeiro lugar. Agora, faz mais sentido, em vez de fazer assim, literalmente pegar essa função aqui e colocá-la dentro daqui. Porque agora o problema é que você vai, não vamos nomear isso agora. Então, vamos ter uma função aqui chamada assim, porque o acesso ao porque o acesso cubo dourado e aos jogadores é um pouco mais difícil. Então, vamos mover os jogadores para cá, e ainda precisaremos recomeçar por aqui. E também precisamos do cubo de ouro. No entanto, temos o cubo dourado que acabou de ser coletado. Então, esta é uma duplicação infeliz aqui. Então esse é o script de coleta. Vamos chamá-lo assim. Aí está. E então a picape é na verdade o cubo dourado. E então não precisamos de nada disso. E eu passei por isso talvez um pouco rápido. Então, vamos passar de cima para baixo novamente. Então eu tenho uma pasta de coleta, certo? Esta será essa foto que agora está chamada, pois eu acidentalmente ligo para isso. Isso é chamado de captadores. Leve-nos. Aí está, certo? Porque vamos fazer o script dot parent, que é o script pai, ok? E então temos os jogadores, ainda restam ser esses jogadores. E então temos o script de coleta aqui, que é o requisito para isso. Agora, se olharmos para isso, podemos realmente reduzir a complexidade disso ainda mais simplesmente dizendo, simplesmente cortando isso. Porque, por que passamos os jogadores para cá? Poderíamos apenas dizer: Ei, você precisa pegar os jogadores. E aí está. Nós temos os jogadores. Podemos fazer isso e ele tem acesso aos jogadores. Então você pode ver que, dessa forma, estamos separando certas coisas de certos scripts para torná-los um pouco mais fáceis de ler. E número dois, para reduzir as coisas que precisamos fazer para continuar trabalhando nesse jogo em particular, certo? Porque vamos imaginar que estamos tendo. Se tivermos um campo gigante de, não sei quantos cubos de ouro por aqui, certo? Fazer com que cada um deles tenha seu roteiro separado e precisamos alterá-lo para todos eles. Isso tudo é ridículo. Isso é loucura. É por isso que uma escrita dourada seria incrível se tudo funcionasse. Agora, nesse caso, todos eles terão o mesmo número aqui. E mesmo que pudéssemos mudar, vamos manter as duas coisas agora. E vamos ver o que acontece se fizermos isso. Então, a primeira coisa é que não precisamos pegar, ir buscar. Provavelmente porque, na verdade, estamos vendo isso às 11 aqui. Então, o problema é que, no momento, ele realmente tenta usá-lo para o script de coleta de ouro aqui, o que na verdade é meio interessante. Eu esperava que o olho dissesse: Ei, esta é a coleta de ouro, então não faça isso. Neste momento em que na verdade é zero. Isso vai ser interessante. Mas eu não acho que seja. Não, ainda está, ainda vai estar lá. Ok? Tudo bem, então o I igual a um não funcionou. Então, vamos fazer o seguinte. Basta dizer que se o nome do ponto de coleta for igual ao nome do ponto de coleta dourado, então queremos continuar. Agora, em teoria, isso deveria realmente superar isso, e de fato acontece. Portanto, não há mais erros aqui. E se nos depararmos com esse 2222, vamos embora. Agora você pode ver, embora os captadores reais, certo, os cubos de ouro em si não tenham seus próprios scripts. Eles estão sendo destruídos adequadamente. E tudo isso é feito por meio de um script. Então, isso é absolutamente incrível. Agora, poderíamos dar um passo adiante, certo? Agora esse é o último passo que vamos dar. Ou seja, são dois aqui, ainda é um pouco estranho, certo? Então você pode adicionar outro valor a esse cubo de ouro em particular. Em teoria, poderíamos chamar isso de valor do ouro, certo? Então, poderíamos chamar isso de valor do ouro para fins de argumentação. E poderíamos chamar isso de, digamos assim. E então poderíamos dizer, ei, quando a coleta estiver pronta, eu realmente quero obter o valor do ouro, o valor do ponto. Agora, ele vai procurar esse valor aqui e ler o valor que está escrito dentro do cubo de ouro. Você tem quase o mesmo problema que tem com os outros, Você tem quase o mesmo problema que em que precisa alterá-lo novamente. Então você também pode fazer algo interessante. Isso é mais uma vez, isso é apenas um exemplo. Isso é só para fazer você pensar sobre isso. Não é necessariamente assim que você faria isso, mas o que ele poderia fazer também é dizer: Você sabe o que? Vamos pegar o tamanho x e depois torná-lo dependente, como a quantidade de ouro que você ganha, dependendo do tamanho do bloco real. Então, digamos que esse bloco agora seja de dois a dois. E então podemos simplesmente deletar um monte de cubos. E digamos que temos um monte de cubos pequenos e um monte de cubos grandes, e então temos um monte de cubos ainda menores. Então, serão cubos que são 111. Então, por uma questão de discussão aqui, certo? Então, vamos ter um monte de cubos muito, muito pequenos e um monte de cubos de tamanho médio. E talvez haja um cubo gigante como 999, certo? Só por uma questão de argumentação. Agora a pergunta é: isso funciona? Bem, quero dizer, estamos literalmente considerando o tamanho x da porta de coleta como valor. Por que isso não funcionaria? Certo? Então, vamos entrar aqui e poderemos ver se eu pego um desses pequenos. Nós recebemos um ouro. Há dois, há três de ouro, certo? 311, são dois. Isso é um dois. E há três de novo, três de novo, e este é um gigante e aquele é nove. Então, mais uma vez, só para fazer você pensar em como você pode empilhar todas as coisas sobre as quais falamos até agora em uma coisa gigante. Agora vou admitir que havia muitas coisas aqui. Então, eu entendo que, se ainda estiver um pouco confuso, o que eu recomendo que você faça é o número um, você tem o arquivo RB Excel disponível para download, para que você possa baixá-lo. Dê uma olhada no roteiro. Número um, o script de captação dourada, e número dois, o script do módulo. Veja como eles trabalham juntos. Estou tentando mudar algumas coisas aqui. E talvez você possa adicionar alguns de seus próprios captadores. Talvez um pequeno exemplo que você mesmo possa adicionar, talvez você possa adicionar, talvez danificar coisas ou curar coisas, certo? Captadores de cura e captadores e captadores de feridas ou algo parecido, só para ter uma ideia do que realmente está acontecendo. Mas, no geral, isso é absolutamente incrível. Então, para resumir, temos uma coleta que fizemos com o evento Touched. Começamos com um script para cada um dos nossos cubos e chegamos ao ponto de agora um script aqui que controla os cubos, que basicamente adiciona o evento Touched a esses cubos. E, em seguida, um script de módulo em que todas as funcionalidades estão incluídas. E essa é uma das coisas destacadas em que um script de módulo é absolutamente incrível para isso, certo? Mas isso vai ser o suficiente para esta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo. Nos vemos na próxima palestra. Então, sim. 32. (Roblox) Adicionando trilhas para o jogador: Tudo bem, vamos continuar com os conceitos básicos de robôs aqui, seguir o curso de rubricas. E nesta palestra, vamos dar uma olhada em como você pode adicionar uma trilha ao seu jogador. Antes de adicionarmos a trilha, o que é mesmo uma trilha? Então, vamos adicioná-lo à minha parte legal aqui. Podemos simplesmente apertar o sinal de mais n. Vamos procurar por trilha e vamos selecioná-la. E agora tem uma trilha, certo? Agora adicionamos a trilha, agora precisamos adicionar dois anexos. Então, em teoria, à nossa parte interessante aqui, só precisamos adicionar dois anexos. Então, vamos fazer esse anexo e então eu dupliquei isso com o Controle D. E vamos mover isso para cerca de dois, digamos que alguém assim, tudo ficará bem. E depois o outro, nós também vamos passar para o outro lado. Aí está. E agora eu posso usar o primeiro e o segundo anexo. E agora, como está ligado a isso, o que podemos fazer agora é, quando movemos isso, veremos que lá está, uma trilha aparece exatamente uma trilha aparece exatamente a partir desses dois acessórios específicos. E você pode mudar as trilhas para fazer todo tipo de coisa, certo? Você pode ver na trilha aqui, nós temos que fazer com que ela esteja sempre voltada para a câmera. Temos até emissões de luz. Podemos dar uma textura a ele. Há diferentes modos que você pode fazer. Então, um invólucro estático, você pode adicionar uma transparência a ele e também pode ter algumas emissões aqui. Portanto, o comprimento máximo da vida útil, você pode obter a largura. Então, há muitas coisas e você também pode fazer muito legal se adicionar uma cor na cor aqui. Você pode adicionar uma sequência de cores. Então, por exemplo, você pode simplesmente mudar a cor vermelha no início da leitura. E então, no meio talvez seja azul e então você o muda aqui para um verde diferente e aqui você muda para outra cor para que você possa obter cores do arco-íris ou todo tipo de coisa maluca. Então você pode ver que agora ele tem o formato mais ou menos assim. E se agora fizéssemos esse cara se mover, então se mudarmos isso agora, você pode ver, agora está mudando com o tempo, como já é muito legal. Você pode ver que agora está mudando a trilha , está mudando de cor e permaneça com algumas das propriedades. Então, por exemplo, ou diminuindo a emissão, você pode adicionar coisas diferentes, como ter mais vida útil, para que ele permaneça vivo por mais tempo. Você pode ter um comprimento mínimo e um comprimento máximo e até mesmo ajustar a largura. Então, se fôssemos fazer, sei lá, cinco anos para toda a vida, então ficaria lá por muito mais tempo, como você pode ver. Como se permanecesse vivo por muito mais tempo até se decompor. Então, isso também é muito legal. Embora pareça legal aqui, verdade não faz nada por nós. Então, vamos adicioná-lo ao player. A primeira coisa que queremos fazer é na verdade, no armazenamento desses servidores , na verdade, no armazenamento desses servidores, adicionar uma trilha e essa será a trilha do jogador. Então, essa será a trilha adicionada ao jogador. E para fins de discussão aqui, vamos mudar isso para, mais uma vez, uma cor maluca aqui. Por que não? Então, vamos para o vermelho e, um pouco mais tarde, para o rosa e depois para o azul. E então aqui vamos para turquesa, ish, digamos, e depois verde, talvez um pouco mais tarde. E então vamos para um verde mais claro e depois amarelo. E aqui, no final, vamos para uma laranja e, no final, vamos para o vermelho mais escuro novamente. Agora temos uma cor de arco-íris legal aqui, o que é incrível. E vamos usar isso e entregá-lo ao jogador. Tudo isso está bem. Vamos então dar uma olhada neste aqui, bem aqui. Então, vamos fazer um comprimento máximo disso, porque senão vai ser, quero dizer, caso contrário, o comprimento é infinito e não necessariamente queremos isso. E então vamos anexar isso ao player. Bem, na verdade, vamos anexá-lo ao personagem, mas porque o personagem é, obviamente, o que é realmente visível, certo? Essa é a coisa visível pela já passamos por isso antes. Mas vamos adicionar um script novamente no serviço stub do servidor. E chamaremos isso de 18 traços e também chamaremos isso de trilha do jogador. Aí está. E vamos ampliar aqui. Essa é a trilha do jogador e criaremos jogadores locais. Então esse vai ser o nosso jogo, jogadores de novo. E então queremos que os jogadores joguem nisso. Então, queremos verificar quando o player foi adicionado e conectá-lo a um determinado, conectá-lo a uma função específica aqui onde pegamos o player e, dentro daqui, oh, esses são os jogadores. Claro, aí está. Jogadores adicionados, aí está. Então, em vez de aqui, queremos conectar o ponto do jogador, adicionar dois pontos e conectar isso a outra função, desta vez obtendo o personagem. Então, temos dois eventos aqui, um dentro do outro. Está tudo bem e agora queremos continuar. Então, agora queremos clonar a trilha. Então, queremos dizer servidores de jogos, armazenamento, ponto, ponto, ponto, trilha do jogador, este, clone de dois pontos. Então, agora nós clonamos essa trilha. Portanto, temos um crédito, um segundo objeto desse objeto em particular. Então, literalmente, como se fôssemos fazer o controle C, o controle V, e agora o duplicamos. Então essa é a ideia geral do que o clone faz. Basicamente. Em seguida, queremos dizer que a trilha Don parent agora é igual à do personagem. Então, queremos esperar cerca de meio segundo porque isso é necessário. Pelo que descobri de outra forma, os anexos e coisas assim não funcionam muito bem. E então vamos fazer novos acessórios. Então, vamos fazer um novo anexo. Será tocado com zero e isso será igual a um ponto de instância novo, é claro, um novo anexo. E podemos dizer imediatamente que isso vai ficar abaixo da cabeça do personagem. Então, isso vai para a cabeça do personagem. E então podemos dizer que o nome de zero ponto dos anexos será apenas para que tenhamos esse anexo de trilha zero. Não é necessário mudar o nome, mas apenas manter tudo organizado. E então podemos fazer um segundo anexo como anexo um. E isso também é Instance that new again e , em seguida, um novo anexo. E esses são dois personagens que fazem parte da raiz humanóide. Aí está. E depois mudaremos o nome disso também. E esse nome será seguido pelo anexo 1, neste caso. E agora ainda temos que atribuir isso. Portanto, ainda temos que dizer que o anexo zero do ponto de trilha é igual a um zero tangente e o anexo um do ponto de trilha é igual ao anexo um. Vamos jogar e ver o que isso vai fazer. Então, aí estamos nós. E se eu começar a me mover, você pode ver, de repente, que temos uma trilha muito, muito incrível que nos segue bem com uma certa extensão. E é claro que podemos mudar isso, certo? Se formos para o Workspace, conte e mandíbula. E então, aqui embaixo, devemos ser capazes de encontrar a trilha do jogador. E, em teoria, poderíamos mudar esse peso para que quiséssemos ficar de frente para a câmera. Então, agora ele sempre vai ficar de frente para a câmera, como você pode ver, o que também parece muito legal. Assim, você pode ativar ou desativar isso. Há influências leves. Então, você pode alterá-lo aqui e, basicamente dar uma olhada no que isso, o que muda aqui. Então, talvez queiramos tornar isso um pouco mais brilhante ou talvez uma mulher, como você sabe? Não, na verdade, o brilho será zero e, de repente, ficará completamente escuro, é claro. Portanto, há várias coisas que você pode fazer aqui e alterá-las para atender basicamente às suas necessidades. E isso pode adicionar uma capa à sua matriz de personagens. Isso pode ser algo que você queira adicionar aos seus personagens. Talvez você queira adicionar isso ao seu jogo para que as pessoas possam comprá-lo, por exemplo, com obstáculos como exemplo aqui. Mas essa é a ideia geral de uma trilha. Então, apenas por uma questão de argumento de aditivo para o pé esquerdo e o pé direito do personagem. E vamos ver como fica essa. Vai parecer um pouco louco, mas por que não? Você pode ver que ainda funciona. Então você tem uma trilha basicamente por onde o personagem pisa. E isso também é muito legal. Eu posso, eu posso imaginar talvez isso para um animal de estimação ou algo parecido. Como um animal de estimação muito raro que poderia ter uma daquelas trilhas que parecerão muito, muito incríveis. Mas sim, isso é uma trilha e é assim que você a adiciona especificamente ao personagem. Mas, honestamente, você pode adicionar isso para significar qualquer coisa, na verdade. Então, para resumir, uma trilha pode ser adicionada com dois anexos diferentes. Agora, no nosso caso, estamos na verdade clonando-o do armazenamento do servidor e depois adicionando-o ao personagem por meio de dois anexos que também estamos criando dentro de um script neste caso. E isso não é possível apenas para um personagem, você também poderia, em teoria, adicionar isso a Kaslow. Pense que mova modelos diferentes. Você pode realmente fazer isso em qualquer lugar onde tenha dois acessórios. Robô, isso vai ser o suficiente para esta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo . Nos vemos na próxima palestra. Então, sim. 33. (Roblox) três tipos de GUIs: Tudo bem, vamos continuar com os conceitos básicos do Roblox aqui para o curso de robôs. E nesta palestra, faremos uma breve visão geral da Grécia. Grécia ou GUIs são basicamente interfaces gráficas de usuário. E eles permitem que o usuário interaja bem com uma interface gráfica de usuário. E existem basicamente dois tipos diferentes. Podemos criar algo na interface gráfica padrão aqui ou também podemos criar algo no mundo. Vamos começar com a GUI padrão. E se pressionarmos o botão de adição aqui, você pode ver que ele já nos sugere a interface gráfica da tela e é exatamente isso que queríamos criar. Então, vamos criar uma interface gráfica de tela. E com isso, podemos fazer outra vantagem. E então você pode ver que podemos adicionar certamente objetos de interface de usuário, por exemplo, um quadro. quadro. E você verá isso no canto superior esquerdo aqui. Agora temos uma moldura branca e podemos até movê-la, para que possamos movê-la. Você pode ver que temos algumas diretrizes. Esse é o meio horizontal, e então podemos até colocá-lo no centro exato da tela. Podemos então redimensionar isso para que possamos redimensioná-lo assim, certo? Então isso é muito legal. Então, podemos basicamente redimensionar isso como muitas coisas. Até mesmo coloque algumas linhas orientadoras de onde ela está, como quantos pixels ela é grande e quantos pixels ela tem da parte superior, por exemplo , e dentro disso, vamos aumentar o tamanho aqui um pouco mais. E então o que podemos fazer, quando centralizamos novamente, aí está. Na verdade, também podemos adicionar coisas a esse quadro. Então, podemos, por exemplo, adicionar um rótulo de texto e agora adicionamos um rótulo. Podemos mandar isso para ela também. Talvez possamos dimensionar isso um pouco e podemos, por exemplo , dizer, ok, queremos alterar o texto exibido no rótulo. Podemos clicar nesse rótulo e depois ir até os textos aqui, você pode ver que não só podemos mudar o estilo do texto, deixando-o em negrito e talvez até cursivo, certo? Nós podemos fazer muitas coisas. Podemos criar um rótulo de texto rico e alterar o texto. Então, por exemplo, podemos dizer que este é um exemplo de texto, certo? E se eu enviar isso, aí está, bam, pronto. Podemos alterar o tamanho do texto. Eu quero aqueles maiores. Vamos tornar isso um pouco maior. 32, absolutamente incrível. Podemos até mesmo fazer a escala, para que ela seja dimensionada automaticamente, como você pode ver. Então, se eu dimensionar esse elemento em particular ele será dimensionado automaticamente, o que é muito legal. Mas vamos tirar isso daqui. E você também pode alterar os textos. Os textos também são coloridos. Então, você pode ver neste texto que há muitas, muitas propriedades que você pode basicamente alterar para mudar isso. Na verdade, vamos também colocar esse “y” em negrito. E então temos um, bem, um elemento de texto aqui. Muito legal. E você pode ver que existem alguns outros. Então, botão de texto, por exemplo, é apenas um botão com um texto nele. Na verdade, você também pode ter um botão de imagem. Portanto, isso também funcionará no botão Imagem, que terá uma imagem para que você possa clicar nesse botão e certas coisas acontecerão. Na verdade, veremos apenas um pequeno exemplo aqui para os botões de texto. Então, esse será apenas o botão de fechar. Então, vamos mudar isso de botão para fechar. E vamos avaliar isso também. Algo como talvez, talvez 50 fique bem. E então nós também vamos fazer essa bola. Aí está. E se eu clicar nesse botão agora, nada aconteceria porque podemos simplesmente jogar isso, certo? Se eu fosse jogar, o que aconteceria é que a GUI vai aparecer porque o GYE sempre aparece. E embora eu possa clicar neste botão, como se nada acontecesse e o GY persistisse. Mas é claro, certo, isso é meio chato. Então, o que você pode fazer é parar com isso. E se quisermos realmente desabilitar isso, o que podemos fazer é simplesmente adicionar um script local ao nosso botão de texto aqui, e então podemos adicionar algo. Então, por exemplo, este é o exemplo de script de botões, certo? Isso é apenas um script de botão. Agora, esse é um script local porque a GUI é relevante apenas para nosso cliente, certo? Somente para nosso jogador em particular. Só precisamos fazer isso com o cliente local. Então, vamos pegar o botão. O botão em si serve para criar o script dot parent porque, é claro, estamos referenciando esse script e agora ele está referenciando esse botão como pai. E então também podemos obter o painel real. Então, haverá o painel e isso é igual ao botão, aquele pai, certo? Portanto, esse seria o quadro em si, assim como o chamaria de quadro sem moldura. E se quisermos dar um passo adiante e realmente ir para a interface gráfica da tela, podemos então dizer frame dot parent. Então, esses são todos os três que temos. E quando realmente queríamos fazer algo, bem, o botão nos oferece um evento. Claro, isso seria o botão “Ativar”, “ Ativar”. Na verdade, aí está. Então, este é um evento aqui, vamos ver o evento ativado aqui. E podemos fazer a conexão de dois pontos e, em seguida, criar uma nova função aqui. E, na verdade, não estamos recebendo nada dentro dela, ou não precisamos obter nada. E então podemos dizer, por exemplo, que o botão de impressão clicou aqui só para ter isso. E então também podemos dizer tela. Então, nosso ponto de tela habilitado é igual a falso e isso basicamente desativará a tela. Isso é muito legal. Vamos ver se isso já funciona, mas já deveria funcionar. Então, vamos entrar e você pode ver, se eu clicar agora em fechar, você pode ver ButtonClicked e a GUI agora foi desativada porque ela começou, estamos aqui, esta basicamente foi desativada agora, ela não foi desativada aqui historicamente, porque a GUI também está salva em algum lugar aqui no espaço de trabalho ou em outro lugar, provavelmente em outro lugar, mas é replicado. E essa é a ideia geral. É por isso que ele é então desativado para o nosso jogador. Muito legal. Então esse será um exemplo de uma GUI. Agora, uma coisa importante a observar, se você quiser, por exemplo, ter uma imagem, certo? Então, se quisermos adicionar um rótulo de imagem aqui e apenas centralizá-lo, você deseja alterar essa imagem para outra coisa. O problema será que você realmente não poderá alterá-lo para nada. Então, no momento, nosso jogo não está publicado no Roblox. Isso é deliberado, e é por isso que realmente podemos adicionar uma imagem personalizada aqui agora. A partir desse momento, assim que publicarmos nosso jogo. Então, podemos acessar a capacidade de também adicionar imagens e, em seguida, também podemos adicionar uma imagem aqui. Portanto, tenha isso em mente. Vamos mantê-lo assim por enquanto. E, na verdade, iremos até a interface gráfica da tela e ativaremos, desativaremos. E então vamos ver as outras duas GUIs. Portanto, há outro tipo de GUI. Digamos que queremos adicionar isso a, digamos, esse bloco específico aqui, o clicker. E o que podemos fazer é simplesmente fazer uma vantagem aqui e digitar a GUI, e você pode ver que podemos adicionar uma GUI de outdoor e uma GUI de superfície. Em primeiro lugar, vamos adicionar uma interface gráfica de superfície e vamos realmente dar uma olhada no que é isso. Então eu acho que só há um clicker. Agora também podemos adicionar certas coisas a ele. Então você pode ver que está desse lado. Agora, vamos mudar o rosto. Isso vai ser uma fachada. Provavelmente queremos a direita ou a esquerda. De fato, aí está. E agora temos isso neste site específico. Então você pode ver que há um rótulo lá. Se eu diminuir o zoom, então é pouco legível. Se eu ampliar um pouco e ficar muito mais legível, podemos mudar isso. Então, no rótulo de textos aqui, podemos entrar aqui e mudar algumas coisas, pois antes de tudo, mudar os textos aqui. Então, isso é apenas um texto de exemplo. Aí está. Se quisermos mover isso, podemos fazer isso. Então, pela posição aqui em relação ao X e Y, agora esteja ciente de que a escala e o deslocamento aqui são muito grandes. Então, por exemplo, se fizermos um deslocamento de 50, na verdade nos movemos. Se você fizer uma escala, então você deve fazer como 0,1 e coisas assim. Porque , caso contrário, será como tirá-lo do serviço. Então, digamos, por exemplo, 25, de repente temos isso centralizado na tela aqui. Vamos também tornar isso um pouco maior, para que seja um pouco mais fácil de ler. 32, talvez um pouco grande demais, talvez 26. Sim, aí está. E agora temos isso aqui. Então, se agora jogássemos e realmente seguíssemos em frente, e você pudesse ver onde está? Aí está. Então, é difícil de ler e , em algum momento, fica um pouco mais agradável de ler. Portanto, isso pode nem sempre ser a coisa correta que você quer fazer. No entanto, é uma GUI de superfície, portanto, é uma GUI que você pode colocar em uma superfície. Mas, por último, temos o terceiro. E se adicionarmos isso, esta é a interface gráfica do outdoor. Agora, a interface gráfica do outdoor é meio interessante, pois às vezes é meio estranha, mas vamos adicionar uma moldura nela. E você pode ver agora que está no meio desse objeto. Podemos mudar a posição usando essas estatísticas de compensação aqui. Então, digamos que eu quero fazer isso dez vezes mais alto, e agora está lá. Agora, quando eu amplio e diminuo o zoom, você pode ver que ele muda de tamanho porque basicamente sempre quer manter bem seu tamanho nessa tela. Então, se nos certificarmos de que tudo isso está configurado, então, no quadro, queremos usar como tamanho um, vírgula zero e 10 aqui também. Porque sempre nos perguntamos o, aí está. Sempre queremos que o quadro preencha perfeitamente a GUI. A ideia geral é que, se você usar a escala de tamanho aqui, ela fará 100% disso. Se eu quisesse metade, eu poderia fazer 0,10, 0,05 seria 5%, 0,5 seria metade. Então, agora está ocupando metade da interface gráfica do outdoor , como você pode ver, certo? E então, é claro, isso significaria que eu estou ocupando 100 por cento dela. Se eu adicionar um rótulo de texto aqui, certo? Agora que temos o rótulo do texto, vamos mudar o rótulo do texto em si. Então, digamos que será um pouco maior. Temos 32 anos, talvez, talvez façamos 28 e tudo bem. E então o texto realmente será clicado em mim. Aí está, certo? E se eu fosse me juntar , agora, vamos dar uma olhada em como isso vai ficar. Então, se eu trocar minha câmera aqui, tudo ficará bem. Na verdade, esta é uma interface gráfica de outdoor muito boa. Agora é afetado pela luz aqui. Também podemos mudar isso, mas no geral isso é muito legal. Mas agora vamos ver o que acontece se eu continuar me afastando e continuando me afastando. E você pode ver que isso é uma coisa estranha que acontece, certo? Então, neste momento, fica enorme, idiotas, bem grande. Agora, ainda podemos lê-lo, o que é realmente incrível, mas fica bem grande. E talvez, para ser honesto, precisamos mesmo saber o que o sapo está acontecendo aqui daqui a cerca de 100 estudos de distância. Na verdade, não. Talvez devesse acontecer como se aparecesse em qualquer lugar aqui, isso provavelmente seria suficiente. E podemos mudar isso acessando a interface gráfica do outdoor novamente e descendo até a distância máxima. No momento, é infinito, então basicamente mostra em qualquer lugar do mundo. E talvez digamos 50 aqui e vamos ver se isso faz alguma coisa e definitivamente fará alguma coisa, mas ia, bem, aí está. Na verdade, ele faz exatamente o que queríamos. Então, se estamos longe disso, isso não aparece. E também não temos esse problema estranho de tamanho. E se entrarmos em um determinado raio , sendo 50 estados dele. Então a câmera tem que ser, então eu posso realmente fazer com que isso apareça às vezes e às vezes não, mas isso não deve ser totalmente bom. E então, se estivermos aqui, você pode ver isso claramente e isso é muito legal. Mas o tamanho aqui é, na verdade, o importante. Portanto, ter a escala e as coordenadas x e y serem uma. Então, basicamente, para preencher a GUI do outdoor, e geralmente o dimensionamento fará exatamente o que você basicamente deseja. E essas são as três GUIs, a GUI da tela, a interface de superfície e a GUI do outdoor. Muito interessante, isso realmente conclui esta palestra aqui. Espero que você tenha achado isso útil e tenha aprendido algo novo. Nos vemos na próxima palestra. Então, sim. 34. Referências de API (Roblox): Tudo bem, vamos continuar com os conceitos básicos de robôs aqui para o curso. E nesta palestra, na verdade, estamos nas referências da API Roblox Engine vez de no Roblox Studio. Porque é basicamente aqui que eu mostro uma visão geral de como você pode usar create robots.com. Também vou vincular isso aos recursos. E esse é um recurso muito bom para você, bem, como você pode ver, a lógica de suas experiências, obstáculos. Então, basicamente, você tem acesso a todas as diferentes classes e tipos de dados e tudo o que possa estar lá e que você queira dar uma olhada. Então, por exemplo, o que vimos antes, vimos antes do detector de peste, por exemplo, então vamos clicar nele e você poderá vê-lo. Um detector de cliques permite que um script e um script local receba uma entrada de ponteiro de um objeto 3D por meio do evento de clique do mouse. Absolutamente insano. Basicamente , mostra muitas coisas. Isso mostra um exemplo aqui e explica muito de como isso funciona, certo? Existem alguns exemplos de código aqui que você pode então entender. E há até um resumo em que ele fornece as propriedades dessa classe em particular. Ele fornece os métodos e os eventos que você pode usar. E isso é absolutamente incrível. Então, eu não quero entrar em detalhes insanos, mas eles também têm hiperlinks. Então, por exemplo, se eu disser, oh, qual é o roteiro? Clique aqui. Bam, isso é um roteiro. Isso é absolutamente incrível e eu não posso recomendar isso o suficiente. Se você não tiver certeza do que algo faz ou como isso funciona? O que é esse dual? Acabamos de falar sobre as GUIs, por exemplo, certo. Então, vamos até aqui para a GUI do outdoor, por exemplo, BAM. Mas eles são contêineres para objetos GUI. Você pode ver que a posição deles é relativa a um adorno. Se não há adoração no joelho, então o pai é colocado como a parte inferior, coisas assim. Há tantas coisas interessantes que você pode dar uma olhada aqui. Na verdade, é uma loucura. Eu quero basicamente tornar isso curto e gentil se houver alguma coisa que você queira aprender com alguns dos fundamentos sobre os quais falamos até agora, certo? Se você já leu a introdução do banheiro, você entende um pouco Lewis. Se você já passou pelos obstáculos básicos e está no padrão. A maioria dos princípios básicos pelos quais passamos. Você quase pode passar por qualquer aula aqui e entender aproximadamente o que está acontecendo. Agora, é claro, talvez algumas delas estejam um pouco acima, talvez algumas coisas de animação e outras coisas possam estar um pouco distantes demais no momento, certo? Com uma nuvem, além armazenar determinados serviços, algo ainda pode estar além de você, mas ainda é muito, muito incrível que você tenha isso disponível para você. E é muito legal que você possa simplesmente ler isso e obter mais e mais informações. O que você também descobrirá em alguns deles é que estão, eles podem estar obsoletos. Então eu acredito que tudo bem, a velocidade angular na verdade não está obsoleta. Bem, há certas coisas que estão obsoletas, certo? Então, podemos realmente ver as coisas aqui, por exemplo, a posição do corpo aqui está obsoleta e não deve ser usada, mas sempre diz o que você deve usar, certo? Então esse é antigo e isso é muito, muito legal. Portanto, não consigo expressar o suficiente o quão legal é a API do motor aqui. Como eu disse, vou vincular isso. Tem um recurso muito bom. Por favor, dê uma olhada, certo? Mas isso conclui esta palestra e também os conceitos básicos sobre obstáculos. Na próxima etapa, criaremos nosso primeiro jogo próprio, que será um ABI. Então, espero ver você lá. Sim. 35. (Roblox) Introdução e como esta seção é construída: Tudo bem, bem-vindo aqui para a primeira palestra na seção do exército. E eu só quero mencionar rapidamente que tipo de OB vamos construir. Então, este é o RB finalizado que basicamente será feito. E se eu desovar, na verdade vou desovar no final aqui, mas tudo bem. Podemos então basicamente ver o Avi no final. Então você pode ver que temos algumas formas diferentes aqui. Temos coisas móveis, então temos tijolos móveis que você não pode tocar. Eles se movem em coisas diferentes. Isso é feito com o serviço de interpolação aqui. Temos escadas que vão desaparecer quando você as tocar. E aqui temos apenas alguns tijolos mortais e outras coisas também. Então, isso é realmente incrível e isso vai ser um RB muito, muito legal. Agora, é claro que estou fazendo isso da maneira errada, mas tudo bem. E aí está. Então, essa é a ideia geral do trailer que vamos criar. Coisas muito legais aqui, altamente recomendáveis de assistir. E cada palestra, é claro, terá um arquivo RB Excel para você baixar. Portanto, você pode basicamente baixar o RB em qualquer estado em que queira continuar usando. Eu realmente espero que você goste de fazer o trailer e nos vemos na próxima palestra. Então, sim. 36. (Roblox) Modelagem no Obby: Tudo bem, bem-vindo de volta ao curso Roblox. E nesta palestra, vamos realmente criar uma ABI para isso. Como você pode ver, na verdade estamos no Roblox Studio, onde podemos criar um novo local. Nesse caso, eu realmente quero que você escolha RB para isso, porque isso nos permite basicamente copiar pelo menos três ou quatro coisas diferentes que já foram criadas para nós. E isso só vai tornar a vida muito mais fácil para nosso obstetra. Então, vamos escolher RB e então você verá que a jogada começa e você pode ver que este é o nosso exemplo. Eu estarei aqui. Então, a ideia geral é essa, que esse é o modelo do próprio Roblox. E você pode ver que tem uma estrela aqui. Já temos alguns postos de controle aqui, bem como esses roxos e depois os vermelhos brilhantes que são tijolos mortos. E sim, isso é basicamente o que temos. E a primeira coisa que vamos fazer é salvar isso como um arquivo. Eu só vou chamar isso de RB1. E esse será o arquivo que poderá ser baixado para você após esta palestra. Bem, de qualquer forma, quais são as partes que queremos salvar. Bem, para fins de discussão, basta jogar e ver o que esse RB pode fazer. Obviamente, vamos aparecer aqui no início e depois poderemos seguir até aqui na primeira parte. E a única coisa é que, se não tocarmos na parte central aqui, na verdade não obtemos esse posto algo que vamos consertá-lo imediatamente. E então, se continuarmos por aqui, aí está. Você pode ver esses. Eles definem a velocidade aqui, então você deve ter cuidado ao se mover sobre eles e pular deles. Aí está. E então os tijolos da morte, é claro, eles vão te matar se você os acertar. Então você tem que ter cuidado com isso. E aí está. Na verdade, foi isso que fiz aqui, mas não se preocupe. Bem, não se preocupe. Vamos tentar isso de novo. Então, algo assim. Aí está. Agora entendemos. Vamos embora. E então o último é apenas uma plataforma de salto aqui. Então você pode ver se você pular sobre isso, então aí está. E agora basicamente terminamos o RB. Agora não há nada acontecendo, certo? Não há uma grande fanfarra ou algo parecido. Mas é uma coisa básica muito boa para começar a construir. E é por isso que eu queria isso. Basicamente, quando você estiver de volta aqui, você deve ir até a seleção e o que você pode fazer é licitar, basicamente exclua essas partes aqui e então podemos dimensioná-las. Então, agora vamos basicamente projetar o OB. E teremos certos recursos ainda não implementados porque agora eu só queria criar uma forma aproximada para a ABI, certo? Eu só quero colocar alguns postos de controle. Quero colocar alguns tijolos mortais, quero colocar alguns obstáculos interessantes e, basicamente, continuaremos a partir daí. Então, a primeira coisa que eu recomendo aqui para os postos de controle é , na verdade, apenas dimensioná-los. Então, o que você pode fazer é selecioná-los, acessar a ferramenta de escala e pressionar Shift. E então ele vai ampliá-los basicamente em todas as direções simultaneamente. E queremos ampliá-los até, vamos realmente dar uma olhada em onde estamos. Com isso 0,92, 0,5, e que tal 99 vírgula três, vírgula nove. Eu acho que isso deveria estar bem. E então temos um grande problema. Agora você também pode dizer, bem, talvez isso seja realmente muito grande para nós, do que também podemos mudar isso. Talvez queiramos que isso seja mais plano, então é um. E aí está. Eu acho que um nove por nove é realmente muito bom. Agora, se o jogador acertar a coisa toda , ele realmente registrará esse posto de controle, que é esse. É meio estranho que eles tenham feito isso, mas tudo bem. Além disso, por que não comprar dois desses transportadores, então queremos que um possa variar. Vamos para a esquerda e um transportador que vai para a direita. Então, podemos simplesmente selecionar um deles, segurar Shift e selecionar o outro. E então podemos simplesmente recortá-los pressionando Control X e Control V para colá-los novamente. Agora, observe que eles estarão na parte inferior da área de trabalho, mas podemos corrigir isso em apenas um momento. Por enquanto. Eu só quero salvá-los aqui logo no início. A mesma coisa que vou fazer com um kill brick. Vou apenas copiar esse Controle C e depois o Controle V para colá-lo novamente. E então eu tenho o tijolo da morte aqui também. E então podemos usar isso mais tarde para todos os tipos de coisas diferentes. E então a mesma coisa que vou fazer com o trampolim. Você pode realmente ver que existe uma superfície G. E essa superfície judia, eu realmente vou se desativar dentro do jogo. Eu acredito que é isso que o roteiro é. Quatro, como você pode ver, a interface gráfica de superfície ativada é igual a falsa. É por isso que tem um roteiro e é por isso que isso realmente não aparece. Então, isso é só para você, enquanto você está criando o jogo real, que é incrível, na verdade. Então, vamos copiar isso também. Aí está. E vamos colocar isso aqui. E então podemos quase excluir todo o resto, porque todo o resto não é realmente necessário para nós no momento, certo? Então, vamos deletar tudo, exceto isso. Aí está. Então, agora temos um estoque de um exército e excluímos quase tudo. Isso é bom. E você pode ver no espaço de trabalho que agora tudo está configurado aleatoriamente. Então, os postos de controle, este é o ponto de verificação um. Isso é bom. Na verdade, vamos mudar isso também. Vamos tornar isso um pouco mais interessante. Então, vamos começar com, então talvez algo assim. Talvez queiramos ampliar isso um pouco. E vamos mudar isso. E o que eu quero fazer é fazer uma rampa aqui. Então, vamos apenas duplicar esse Controle D para duplicar. E então podemos girar isso. E vamos ter certeza de que lá está. Sim, isso é algo que um daqueles que pensam em alguém assim que você pode fazer é talvez você possa fazer algo assim. Então isso é um pouco mais complicado, certo? Você tem que pular de um lado aqui, abaixar um pouco mais, que seja quase o mesmo. Aí está. E então recebemos isso. Então agora você tem que ir até aqui e depois, na verdade. Mais um. Sim, aí está. Então você vai aqui, pula até aqui. E o que é muito importante com o trailer aqui também são os testes frequentes porque às vezes você pensa, oh, isso deve ser muito fácil de fazer. E então você descobre, espere um segundo, essa é realmente uma fase muito difícil e não é bem isso que você quer fazer. E então vamos fazer uma rampa que desce até aqui. Então, vamos fazer isso e isso e algo assim. E aí está. Tudo bem? Então, essa é uma daquelas coisas em que você só precisa experimentar várias coisas diferentes. E é aqui que a modelagem é muito subjetiva. Você pode acompanhar tudo exatamente como eu estou. Ou você pode simplesmente assistir a esta palestra e, em seguida, copiar o arquivo do arquivo finalizado ou simplesmente dar uma olhada no arquivo finalizado. E a ideia, então, também é uma grande coisa. Você quer tornar isso mais colorido. Se você mantiver esses tijolos com uma pedra cinza aqui, isso é muito, muito chato, certo? Então você pode simplesmente selecioná-los e dizer: Ei, isso deveria ser talvez como um azul aqui, azul elétrico. Sim. E então esse pode ser como um ciano, certo? E então esse talvez devesse ser um azul pastel. E então, de repente, você tem um estado azul. E aí está. Nós podemos jogar isso. E você verá que poderá jogar isso imediatamente. Lá vamos nós. Então, podemos simplesmente caminhar até aqui e pular aqui, ir até aqui, e então eles terminam a primeira etapa. Agora, é claro, depende do tipo de RB que você quer fazer, certo? Se você quiser formar um exército incondicional, isso é muito difícil e, claro, você pode fazer isso. Normalmente, as pessoas preferem um RB um pouco mais fácil e um tempo mais fácil com ele, mas tudo bem que depende de você. Você pode projetá-lo como quiser. Então, vamos continuar e realmente criar algo aqui. Então, vamos criar uma espécie de passarela. Então, vamos ampliar isso novamente e um pouco mais e talvez um pouco mais amplo também. Então, um em cada direção. Eu acho que isso é muito bom. E agora aqui eu quero usar o tijolo da morte. Então, como eu os usaria enquanto vou duplicá-los, Controle D, vou me certificar de que estou escolhendo o que acabei de criar. Estou colocando isso embaixo dos tijolos mortos aqui. A forma como o espaço de trabalho é organizado aqui é basicamente por meio de funções, certo? Então, temos todos os blocos da morte juntos. Temos toda a estrutura do OB em conjunto, embora os trampolins, os transportadores, todos os postos de controle, você também possa fazer isso por etapas. No entanto, geralmente acho que essa é uma configuração melhor porque alguns hobbies têm cerca de 500 páginas. E geralmente é melhor assim porque dentro do jogo, certo, em vez da visualização do jogo aqui, você sempre pode clicar em algo e isso vai destacar isso no Explorer de qualquer maneira. Portanto, você realmente não precisa configurá-lo uma forma que mostre cada estado individualmente. Então, o que vamos fazer é fazer isso para que você tenha que pular os tijolos mortais aqui. Vamos apenas duplicar isso de novo e depois ir aqui. Não, não lá embaixo, isso seria meio estranho. E depois outro, duplique-o. E então talvez algo assim. Aí está. E depois um no final aqui também. Vamos tornar isso um pouco maior para que possamos ampliá-lo ainda mais. E então podemos simplesmente mover esse cara para aqui. Eu acho que isso deve ser bonito, sim, isso deve ser muito bom. E aqui, é claro, também mudando a cor novamente, porque isso só vai te dar um bom contraste. Talvez mexa um pouco com esse cara. Aí está. Então, na verdade, eu meio que gosto disso agora. É claro que, quando você terminar esta etapa, você quer um outro posto para poder duplicar o posto de controle, clicar no controle D do posto de controle e, em seguida, vamos movê-lo para cá, para garantir que , quando estiver movê-lo para cá, para garantir que , quando não esteja muito alto, certo? Porque se você duplicar algo, sempre será como colocar mais alto, o que às vezes é meio estranho, mas aí está. E isso é basicamente isso. Agora, a próxima coisa que geralmente é vista e realmente apreciada, então vou copiar a parte aqui, que é a escada. Então, vamos tentar fazer escadas. Agora. Na verdade, pode ser muito difícil acertar 100% deles. Mas eles são incríveis de qualquer maneira. Então, vamos apenas fazer escadas. E depois poderíamos, por exemplo, se quiséssemos fazê-los desaparecer, certo? Assim, você pode fazer com que, quando você sobe as escadas onde elas desapareçam atrás de você, isso seja sempre um efeito interessante e as pessoas pareçam gostar disso. Então, como faríamos de fato fazer isso? Há algumas maneiras de fazer isso. O que eu basicamente quero fazer é, antes de tudo, criar uma nova, na verdade, clicar com o botão direito do mouse na parte e criar uma nova pasta. E eu vou chamar isso de escada. Vou chamar a escada de 90 porque vamos fazer uma escada de 90 graus. Basicamente, vamos fazer escadas que vão dessa orientação para uma orientação perfeita , certo? Então, isso basicamente significa que vamos subir e depois vamos acabar nessa direção. E eu quero isso porque então você pode combinar essas escadas com outro conjunto de escadas e então você pode ter 180 degraus e até 270 escadas. E mesmo que seja 360 escadas e continue subindo, em teoria, se você quiser. Então, vamos apenas duplicar esse. E o que você quer fazer é girar isso. No entanto, agora, por padrão, se girarmos isso, giraremos isso em 48, 25 graus. Sim, 25,5 graus, o que é um pouco demais, certo. Então você pode ver se deveríamos mover isso como se fosse uma abertura muito grande para escadas, certo? Então você quer desligar a rotação aqui e fazer uma rotação livre. Então, agora você pode girá-lo tão pouco ou quantos graus quiser, basicamente. E é aqui que tudo se resume à sua preferência pessoal, aonde você quer ir. Então, o mesmo vale para a mudança agora, vamos desligar a mudança aqui para que possamos movê-los no lago. Quantidades minúsculas de estudos. E você sempre pode verificar isso, certo? Você sempre pode olhar isso de frente e dizer: Ok, isso parece uma escada, certo? Eu realmente gosto um pouco, ok, aqui, esse cume parece certo. Ok? Talvez queiramos expandir isso um pouco mais e então podemos duplicar isso. E porque está sempre no topo, nós, na verdade, isso é muito legal. Então, podemos girar isso um pouco mais e movê-lo novamente e fazer isso de novo e girá-lo um pouco mais. E você pode fazer com que as escadas sejam tão grandes ou tão pequenas quanto quiser. Agora, no nosso caso, vamos dar uma outra olhada. Vamos dar uma olhada. Para fins de depuração. O que eu recomendo fortemente é que você duplique o início. Isso é meio estranho, mas tenha paciência comigo por um momento. Você pega o Stuart original e simplesmente o desativa para tornar habilitado como falso, e depois volta para o outro e o move para qualquer estágio que você queira testar aqui. Porque senão você sempre tem que jogar o RB inteiro. E isso geralmente é muito estranho, muito estranho. Então, podemos ver que isso funcionaria. Então, as escadas, o trabalho deles, tudo bem. Não precisamos, não precisamos ir até lá e depois eles vão, então podemos continuar com isso e continuar girando isso. Como eu disse, você pode torná-los tão grandes ou tão pequenos quanto quiser. Você pode adicionar o máximo de escadas, certo? Você pode dizer: Oh, você sabe o que, eu só quero um pouco de rotação a cada vez ou talvez um pouco menos, pouco mais, algo assim. Além disso, basta movê-los para que nem sempre tenham a mesma aparência ou que você possa fazer com muita precisão. Então isso também é algo às vezes você quer muito preciso. Se você quiser uma forma muito precisa, você sempre pode ir até a transformação aqui e alterar a orientação manualmente por números, em vez de apenas a olho nu, certo? Porque agora eu estou fazendo isso meio que olhando para o que diz: “Sim, isso soa quase certo”. Parece quase certo. Então, isso é algo que você também pode sempre ter em mente. E estamos nos aproximando da rotação que queremos muito, muito rápido aqui. Então você pode ver que vamos continuar com isso, exatamente como eu disse. E depois outro. E então, no final , definitivamente precisamos usar os números lá, mas tudo bem. Porque, no final , podemos fazer isso. Então, vamos fazer outro e outro aqui. Às vezes, a vista é um pouco louca. Só gostaríamos de voltar um pouco. Pronto, escale isso e depois gire novamente. Na verdade, pode recuar um pouco. Então, podemos girar isso um pouco mais para trás para que não tenha uma lacuna, porque eu basicamente não quero nenhuma lacuna aqui. Talvez um pouco mais de rotação onde adicionamos neste ponto -98 Isso é realmente muito bom. Então, estamos quase em nossos -90 graus, porque assim que chegamos a 90 graus, sabemos que alcançamos aonde queremos ir, mas ainda não chegamos lá. Então, provavelmente mais alguns. Onde estamos agora? -92. Ok. Eu acho que agora esse vai ser o -90. Agora queremos fazer a transformação para a orientação e só queremos fazer zero menos 90. E você pode ver agora que isso realmente está perfeitamente nessa direção. Então, se fôssemos escalar isso, você pode ver que agora é um ângulo exato de 90 graus, o que é incrível. Então, podemos pegar esse posto de controle novamente, movê-lo para cima, ir até aqui, e agora temos um posto de controle depois da escada. Agora, talvez você queira adicionar outro salto aqui antes de entrar lá. Isso também pode ser o caso, certo? Então, basta configurar isso. Aí está. Vamos escalar isso um pouco. Algo assim pode ser muito bom, e então você deve ficar bem. Essas são escadas. Vamos nos certificar de tirar esse, porque isso não faz parte da escada e agora temos uma escada de 90 graus. O que eu recomendo aqui também é duplicar isso, certo? Então, basta o Controle D e então você pode simplesmente movê-lo. E o que você pode fazer é realmente incrível. Porque agora você poderia, em teoria, simplesmente duplicar isso novamente. Eu subo todas essas escadas, apenas as movo para cima e as movo para cima. Aí está. E você pode girar a escada inteira por aqui. Mas é importante que realmente giremos isso em 90 graus. Agora, vamos girar isso em 90 graus. E, de repente, veja isso, certo? Eu posso simplesmente colocá-los por um ano e colocá-los aqui. E eles quase se encaixam. É só que precisamos fazer isso um pouco. Aí está. Só um pouco mais alto, um pouco alto ou não. Certifique-se de que ele não tenha se movido individualmente. Você quer movê-los juntos e depois eles vão embora. E agora temos uma escada. Agora eles parecem um pouco estranhos, mas vamos ver eu, aí está. Na verdade, isso é quase perfeito. Você nem vai notar isso. E agora temos, na verdade, 180 graus de inclinação , então podemos pegar todas essas partes, colocá-las na outra, deixar a pasta vazia e então podemos chamar isso, basta renomear essas duas escadas como 180. Porque agora temos que querer escadas AT e vamos mais uma vez salvar isso aqui no início, onde basicamente temos tudo salvo. Isso vai ficar bem. Aí está. Então, essa é uma participação realmente incrível. Em teoria, também podemos ter 180 degraus. Agora pode ser um pouco estranho subir neles, mas, mais uma vez, as escadas ou simplesmente uma coisa que você simplesmente não vai tentar um monte de coisas, certo? Então, essas escadas podem ser um pouco íngremes e um pouco estranhas, mas no final, elas devem funcionar. Então, se eu entrar aqui, certo, e atravessá-los, aí está. Consegui subir. Então, isso é muito incrível. Na verdade, vamos aumentar o, aumentar um pouco a diferença aqui. E vamos, na verdade, começar um estudo novamente. Aí está, talvez algo assim e depois algo assim. Então você tem que pular aqui. Então isso vai ser muito interessante, de fato. E depois desaparecendo. Na verdade, veremos isso em uma palestra posterior. Porque, por enquanto, na verdade, só queríamos criar outras coisas interessantes. A próxima coisa, certo? Então isso é muito legal, certo? Temos alguns, temos um pouco disso, temos alguns tijolos mortais aqui. Temos algumas escadas que vão desaparecer na próxima aula. E agora eu quero continuar por aqui, certo? Então, agora eu quero continuar e quero apenas criar algumas formas básicas. Então, vamos dar uma olhada no tamanho disso. O tamanho disso é 616, é o que eu quero. E eu acho que isso está realmente bem. Na verdade, estou tornando isso um pouco maior. Faça isso 818. Sim, isso é perfeito. Isso é ótimo. Isso é exatamente o que eu tinha em mente. E você pode até mesmo mudar a posição. Então, eu, pessoalmente, sempre gosto de ter as posições agora com todos esses valores de vírgula. Então, vou mudar a posição para 20. Eu vou mudar isso para 14, e nós vamos mudar isso para 105. Acho que tudo vai ficar bem. E então vamos mudar essa posição, 2105 também. E isso vai deixar isso um pouco torto, mas tudo bem. Porque então o que você pode fazer é se certificar de que isso é, você pode simplesmente escondê-lo deixando isso um pouco torto também e depois aumentando pouco torto também a escala e dizendo: Sim, isso é na verdade uma passarela torta e então ninguém deveria se preocupar com isso. Se as pessoas se importam, geralmente não é grande coisa. E você também pode alterá-lo mais tarde. Porque a modelagem disso, como você pode ver, certo? Então, até agora, eu estou modelando há uns bons 20 minutos e já temos alguns estágios lá dentro. E a melhor coisa é que, se você tiver alguns cedros feitos, certo? Então, nesse estado aqui, você pode copiar esse estágio exato e reutilizá-lo posteriormente, também de uma forma um pouco diferente. Então, isso é sempre algo que você também deve ter em mente : você sempre pode reutilizar os estágios. Agora, eu realmente não quero que isso seja girado. Na verdade, acho que o zero menos zero está bem. Nós vamos fazer assim. Vamos apenas tornar isso maior. Sim. Algo parecido com isso. Talvez seja apenas uma grande plataforma. Aí está. Ok, isso é bom. E agora podemos prosseguir com este. Então, o que esse vai fazer? Bem, este vai matar tijolos no meio. Selecione um tijolo mortal. Ok, eu não sei o que aconteceu, mas por alguma razão essas portas estão sob o tijolo da morte. Não sei como isso aconteceu, mas tudo bem. Queremos, é claro, fazê-los sob a estrutura OB. Aí está. E agora podemos duplicar esse Kubrick. Não sei como isso aconteceu. Se isso tivesse acontecido, eu não sei, mas se algo assim acontecer, você deveria descobrir isso bem rápido. E então você sempre pode corrigir que nossas plataformas individuais e entre essas plataformas, eu quero ter o alicerce aqui. E eu quero que eles sejam assim ou não quero que eles se estendam dessa maneira. Eu quero que eles se movam um pouco assim. Agora não vamos implementar o movimento nesta palestra novamente, agora estamos apenas modelando tudo. Porque a parte mais importante sobre isso e isso também é, quero dizer, eu já falei sobre isso antes, é que você quer apenas ter certeza de que, ao criar algo assim, especialmente, você está dando um passo de cada vez. Você não precisa necessariamente fazer tudo de uma vez. Basta modelar primeiro o RB e depois todas as funcionalidades, o movimento de certas partes, o desaparecimento de outra parte, forma como você exibe algo, certo e na tabela de classificação e tudo mais, você sempre pode fazer isso mais tarde. Então, que tal isso? Eu acho que isso é muito bom. E eu acho que podemos então simplesmente copiar a coisa aqui e vamos basicamente substituir essa. Então, vamos substituir este por nosso antigo e confiável posto de controle, onde, de fato, também no futuro teremos que mudar as coisas no posto de controle. Mas, mais uma vez, nada disso importa agora, por enquanto, só queremos modelar algo e isso já é muito bom. Então, estou muito feliz com isso. Temos algum movimento aqui, temos algum outro movimento por aqui. E a última coisa que vamos fazer, em primeiro lugar, vamos recolorir isso porque para os estágios verdes, na verdade, são na verdade três estágios verdes neste momento. Bem, embora isso não aguente, vamos recolorir tudo isso também. Vamos entrar aqui e fazer isso, que tal fazer com que não seja vermelho, talvez uma espécie de caqui rosa claro. Tudo bem. Ok, essa é a cor da costa do caqui. E então vamos nos certificar de pegar todos esses e saberemos que não quero movê-los. Você está louco? Eu só queria selecioná-los e depois queremos recolorí-los, talvez um amarelo, tudo bem. O amarelo e o vermelho realmente funcionam muito bem juntos. E então temos que verificar o ponto aqui e depois o que pode vir a seguir. Então, que tal copiarmos um desses. E o que eu quero fazer é realmente ter uma forma um pouco mais interessante aqui. Então, o que vamos fazer é pegar essa parte e eu vou descer e fazer com que ela não seja colecionável. Agora, a razão para isso é porque, se eu duplicá-la, posso realmente mover a mesma parte para dentro de si mesma. E eu posso então girar isso. E você pode ver se eu realmente faço esses 45 graus na rotação, agora posso fazer uma pequena estrela. Então, isso parece muito mais interessante do que apenas ter uma plataforma normal aqui. Mas espere um segundo. Agora, esses, na verdade, eles, eles realmente não funcionam porque agora eles podem colidir. Então, o jogador simplesmente vai passar por eles. Isso é verdade. No entanto, se eu pegar essas duas partes agora, se eu apenas selecionar as duas partes e passar para um modelo como esse, eu posso fazer a união. E se eu fizer união, isso criou um novo tipo de peça que é uma união e agora eles estão juntos. Então, basicamente , todas as duas partes estão fundidas. Eles não estão soldados, eles são na verdade uma peça agora. E se eu souber, posso simplesmente ativar a luz das velas novamente. E agora o jogador pode colidir com essa nova peça. Então, isso é uma coisa muito legal que você pode fazer. Você pode realmente ir mais longe com isso, o que é muito interessante. Então você pode fazer isso, por exemplo vamos fazer isso com outra parte. Podemos fazer uma luz de vela falsa. Vamos fazer um novo porto. E então, digamos, por exemplo I. Pegue isso e eu vou fazer isso um pouco menor, certo? Como algo assim e esse filho tem uma parte menor em cima da parte maior. E o que eu costumo fazer é sugerir que isso seja um pouco maior para que fique como, na verdade, você pode ver que ele passa por toda a matriz. E se fizermos disso uma parte negativa, certo? E então selecionamos os dois e unimos essa camada, isso, de repente, temos um grande buraco nessa parte e isso está totalmente bem, certo? Então você pode entrar aqui e podemos fazer uma colisão de lata e o jogador cairá no todo . Então, na verdade, isso torna isso muito mais interessante de se ver, certo? Então, vamos colocar nosso armazém aqui e na verdade, movê-lo para cima, para cima. Porque eu realmente quero, não quero jogar todo o resto do nível agora. Eu só quero que você mostre a união e as peças. Lá vamos nós. Então, vamos entrar aqui e ver. Então aí estamos. E se eu continuar aqui, você pode ver que estamos fazendo isso e aqui eu posso passar por isso, sem se preocupar, o que é muito legal, certo? Então, com a união e depois a negação, você pode criar partes tão legais que são completamente diferentes dos basicamente completamente diferentes dos retângulos normais do lago. E, claro, você também pode adicionar cilindros, cunhas, cunhas, esferas e esferas aqui. Você também pode adicioná-los e apenas com eles e um pouco de união e negação, você pode realmente criar algumas coisas bem interessantes. Então, vamos chamar isso apenas para que agora possamos acompanhar isso. Este é apenas o quadrado com furo, certo? E essa é a estrela. Que tal isso? Certo? Agora temos uma loja e uma praça aqui. Então, isso é muito legal. Vamos usar outro tipo aqui. Então, vamos pegar um cilindro. E vamos pegar o cilindro e nos certificar que ele esteja dentro da estrutura do ego. Agora, na verdade, queríamos girar isso em 90 graus nessa direção. E podemos ampliar isso um pouco. Então você pode ver que agora chegamos a um círculo ou um cilindro aqui. E agora também podemos obter um tamanho em forma de círculo. Então, vamos ver, isso é do mesmo tamanho? É. Agora também temos um círculo. Isso é muito legal. Lá vamos nós. Agora podemos transformar isso em amarelo também. Isso era amarelo, vermelho, amarelo brilhante? Sim, é. Esse é o objetivo. Você tem que armazenar. um quadrado com queda e temos um, vamos chamá-lo de círculo, mesmo sendo um cilindro, mas aí todo mundo sabe o que é, certo? Então, isso é realmente incrível. Você pode ver com isso que você pode criar algumas formas mais interessantes que estão surgindo, que só tornam o jogo muito mais interessante. Agora, por exemplo, em nossas formas aqui, o que podemos fazer é simplesmente movê-las. Talvez pegue o, pegue a loja aqui, talvez gire um pouco. Então, é claro, se girarmos 45 graus, não vai funcionar bem, mas vamos girá-lo em 22,5 graus e então, na verdade , vai parecer um pouco diferente. Aí está. Então, agora isso vai parecer um pouco diferente. Também podemos pegar este. Também podemos girar o quadrado porque por que não escrever? Então, vamos também parecer interessantes. Aí está. E, a propósito, você também pode escalar isso e isso vai fazer algumas coisas estranhas, mas você pode escalá-lo. Então, isso também é muito legal, pois o dimensionamento geralmente funciona apenas em todas as direções ao mesmo tempo, em vez de apenas uma. Então aí está. Agora temos esse. E então podemos obter outro círculo. Rotear o círculo ao redor do eixo y não fará nada por nós, mas tudo bem. E aí está. Agora temos algumas formas malucas aqui e podemos adicionar um novo posto de controle no final, apenas nos certificando de que temos espaço suficiente. Aí está. E então é isso. Agora temos o posto de controle aqui, e agora temos nossas formas malucas. Exatamente assim. Acho que isso é demonstração suficiente para mostrar a você. Ok? Você pode basicamente adicionar peças individuais, certo? E talvez você também queira usar essas formas em um nível posterior, o que você pode, é claro, agora mesmo, você pode usá-las e talvez você realmente queira girá-las para ter que subir sobre elas. E tudo isso. , você pode fazer muitas coisas Nesse caso, você pode fazer muitas coisas com um objeto personalizado. Agora, modelando aqui, eu realmente acho que estamos muito bem com isso. Então, vamos excluir o início e a outra estrela se certifica de reativá-lo. Caso contrário, podemos ter alguns problemas. Vamos salvar isso e entrar no jogo. E vamos ver se podemos realmente executar isso. Isso é absolutamente bom. Temos isso bloqueado, isso é ótimo. E agora vamos ver se eu consigo pular esses e eu consigo. Isso é incrível. Vamos subir as escadas. Oh, temos um pequeno soluço aqui. Então, essa é interessante. Então, sim, esse é o método que realmente funciona. Mas neste estágio, agora eles não se movem, então você só precisa pular aqui. No entanto, é realmente mais difícil do que você imagina encontrar o momento certo. E agora aqui temos esses. Agora você pode ver que os cilindros realmente sumiram. Isso é um pouco problemático, mas podemos realmente dar esse salto. Mas a razão pela qual os cilindros sumiram, é claro, é se realmente entramos aqui porque eles não estão ancorados. Então, podemos ver agora que eles não estão ancorados. Portanto, verifique se eles estão ancorados. Toda vez que você adiciona uma nova peça aqui, você quer ter certeza de que ela está ancorada e pronto. E isso é basicamente o RB básico que vamos manter por enquanto. O que vamos fazer. Não trabalhamos com os transportadores porque eles usam a velocidade aqui, mas usam a propriedade da velocidade. E, na verdade, isso não existe mais. Ainda funciona. Mas eu, pessoalmente, diria que provavelmente é melhor não usar isso desnecessariamente, mas tudo bem. Você pode usá-lo. Mas esteja ciente de que isso pode não funcionar da maneira que você esperava. Independentemente disso, porém, estou muito feliz com isso nas próximas palestras As coisas específicas que faremos são fazer com que essas coisas girem. Como eu já discuti. Vamos fazê-los girar. E talvez façamos girar algumas dessas formas aqui também. não tenho certeza disso , mas algo parecido. Também vamos garantir que os postos realmente sejam exibidos em que estágio você está. E também faremos com que você tenha uma tabela de classificação com os diferentes estágios. E isso é basicamente o que faremos com todo o áudio. Nesse caso, vai ser muito interessante. Portanto, o arquivo finalizado da criação aqui está, obviamente, disponível para download. Caso contrário, espero que você tenha achado isso útil e aprenda algo novo. Nos vemos na próxima palestra. Então, sim. 37. (Roblox) Adicionando pontos de verificação no Obby: Tudo bem, vamos continuar aqui com o curso RB for Roblox. E nesta palestra, vamos basicamente mudar a forma como os postos de controle funcionam. E para isso, o que realmente precisamos fazer é dar uma olhada no script atual do checkpoint. Então, temos um roteiro aqui, e você vai ver isso e dizer: Oh meu Senhor, o que é essa loucura? Não se preocupe nem um pouco. Para a primeira parte disso, diminua um pouco a velocidade. Isso é muito ao mesmo tempo. Você tem que seguir linha por linha. Estou apenas dizendo que amplie e o que você pode fazer é até mesmo fazer que você possa literalmente ver linha por linha, apenas para entender. Porque, no geral, isso não é tão louco quanto você pensa. Você ficará impressionado no primeiro momento em que ver isso, mas depois dirá : Ok, espere um segundo. Você sabe, tudo isso, você sabe, quando é declaração, você sabe, e você sabe o que isso significa. Ok? Se for atingido, é um evento tocado, ok? Então você está conectando essa função a ela, ok? Nós já vimos isso. Então, estamos dizendo que se algo atingiu isso e há um pai, e o pai tem um humanóide basicamente dizendo, se o jogador atingiu esse spawn em particular, certo? Se o jogador atingiu a parte do checkpoint, então estamos dentro disso, ok, então estamos fazendo tudo isso. Ok, isso é bom. Na próxima parte, pegaremos o jogador que já vimos isso antes e, em seguida, obteremos os dados do posto de controle. Agora, se esses dados do ponto de verificação não existirem, estamos criando novos dados de ponto de verificação, como você pode ver. Então, se os dados do ponto de verificação, se não os dados do ponto de verificação, significam que não existem, estamos apenas criando uma nova instância deles e a configurando no armazenamento desses servidores. Bem, então também os chamamos de dados dos pontos de verificação e seja, no ponto de verificação local, então, estamos basicamente verificando se os dados do ponto de verificação já têm um ponto de verificação salvo. E se não for esse o caso, mais uma vez estamos apenas criando um novo valor de objeto com esse player. E então estamos conectando uma nova função aqui que basicamente espera até respondermos e, em seguida, responderemos no local do novo posto de controle. E isso é basicamente tudo o que estamos fazendo. Agora. Mais uma vez, algumas partes podem ser confusas, especialmente a moldura C aqui. Basicamente, a estrutura C é a maneira pela qual você pode definir a posição de uma peça. Isso é praticamente tudo o que você precisa saber por enquanto. E a primeira coisa que quero fazer aqui é transformar isso em um modelo de script porque esse é o mesmo script em cada ponto de verificação, só precisamos mudar um pouco como uma coisa, basicamente, e pronto. Então, por que, na verdade, não teríamos isso? Então, o que queremos fazer é acessar nosso antigo e confiável serviço de script de servidor e criar um novo modelo de script. Vou chamar isso de script de checkpoint. Eu gosto disso, isso é bom. E o que faremos é pegar tudo aqui, tudo isso. E vamos colocar isso aqui. Então, vamos dizer que este é o módulo dot add player, Check Point, claro, igual à função. E precisamos do golpe e na verdade, também precisamos do local de desova. Vou mostrar isso em um momento, e aí está. Agora essa é a função. E, na verdade, também para ter certeza de que está tudo bem, também queremos copiar a declaração if aqui, porque descobri que isso funciona um pouco melhor. Se fizermos assim, podemos simplesmente chamar isso. Podemos simplesmente pegar esse módulo e exigi-lo no script aqui, e pronto. Isso é tudo que precisamos fazer. Portanto, ponto de verificação local, módulo de ponto de verificação é igual a e, em seguida, exigiremos apenas o script de ponto de verificação do serviço de script do servidor game dot . Aí está. E então podemos chamar uma função aqui, certo, ponto de proteção da camada de aplicativo atingido e o local acabou de aparecer. E então é isso. Isso é tudo o que precisamos fazer neste caso para que isso funcione. E podemos ver que ainda funciona se eu entrar aqui e mudar todas elas. Certo. Então, o primeiro é o que muda e todos os outros que vamos excluir. Vamos apenas selecionar todos eles. Se você selecionar algo, mantenha o controle, então você pode simplesmente selecionar vários. E então vamos duplicar isso algumas vezes e mover todos os novos scripts para os outros pontos de verificação. E o que vamos descobrir é quando começarmos o jogo e formos para o próximo posto de controle, certo? Então, a coisa realmente só deveria acontecer quando a tocamos, mas você pode ver que, na verdade, obtemos uma propriedade não atribuída. Então, isso é realmente uma coisa muito interessante. Agora, a razão pela qual entendemos isso, como você pode ver, que estamos obtendo isso no valor aqui agora. A razão para isso é que este é o spawn aqui. Porque é claro que precisamos usar a localização da colher. Então, vamos parar com essa e outras coisas incríveis de antes Se tivéssemos uma tabela como essa, teríamos que alterá-la em cada um dos nossos scripts. Mas agora eu posso simplesmente acessar nosso script de módulo e dizer, bem, em vez de colher, nós realmente queremos a pequena localização aqui. Salve, jogue. E agora vai funcionar para todos os nossos diferentes postos de controle. Isso é o que são os scripts do módulo, tão incrivelmente poderosos. Então, vamos dar uma olhada e pronto, sem mais problemas. E se eu pulasse até aqui, responderia naquele local específico. E você pode ver, aí está. Eu respondo aqui. E a mesma coisa acontecerá se eu entrar aqui, e eu for aqui e, mais uma vez, simplesmente pular. Então você poderá ver e então desovar ali mesmo. Então, todos os postos de controle agora estão funcionando totalmente bem, como você pode ver, o que é muito, muito incrível. E bem, isso é basicamente tudo o que precisamos fazer para torná-los mais robustos. E agora, a melhor coisa é que se adicionássemos um novo ponto de verificação, porque agora ele tem o mesmo script de checkpoint, ele simplesmente continuaria facilmente. Então, depois de configurarmos isso, agora, cada novo ponto de verificação que adicionarmos usará o script do módulo. E se quisermos mudar alguma coisa aqui, por exemplo na próxima aula , o que vai acontecer é que isso simplesmente vai funcionar. E isso é, na verdade, com tudo o que aprendemos até agora. O evento Touched, já vimos isso antes, exigindo um script de módulo com visto isso antes no próprio script de outros módulos, a função aqui é um pouco mais complicada, vou te dar isso. Mas, no geral, quando você realmente o interpreta linha por linha , deve ser compreensível. E com isso, isso é realmente o suficiente para esta palestra aqui. Espero que você tenha achado isso útil e tenha aprendido algo novo. Te vejo na próxima palestra. Então, sim. 38. (Roblox) Adicionando um quadro de liderança com Leaderstats: Tudo bem, vamos continuar com a ABA aqui para o curso Roblox. E nesta palestra, vamos criar não apenas uma tabela de classificação, mas também o sistema de numeração para nossos pontos de verificação. Então, isso vai ser muito interessante de fato. Então, a primeira parte disso será, bem, basicamente adicionar números aos nossos postos de controle. Agora vou fazer isso de uma forma um pouco atrevida. Na verdade, vou criar um novo roteiro em vez de nossos postos de controle aqui. E nós vamos simplesmente chamar isso. Em primeiro lugar, haverá um roteiro, certo. Aí está. E vamos realmente renomear isso para a numeração do posto de controle. Porque, curiosamente, se entrarmos aqui, se garantirmos que nossos postos de controle estejam configurados na ordem correta, certo? Então você pode ver esse ponto de verificação 123, isso é quatro e isso é cinco. Se eles estiverem definidos na ordem correta aqui , podemos simplesmente numerá-los de cima para baixo e ficaremos totalmente bem. Então, isso é realmente o que eu vou fazer com esse script. Então é isso que esse script basicamente exige. Se eles estiverem em uma ordem aleatória , isso não vai funcionar. Mas, geralmente, se você os duplicar, eles devem estar em uma ordem definida e tudo bem. Então, para isso, o que queremos fazer é primeiro encontrar a pasta. Portanto, é claro que esse é um roteiro em que pais devem ser bastante autoexplicativos. Então temos uma contagem, certo? Esse vai ser um. Vamos começar com um e depois usar um loop for. E o loop for que vamos usar é fazer com que os filhos dessa pasta em particular sejam desmamados, vamos pegar todos esses. Então, o que vamos fazer é dizer posto de controle. Então eu e Check Point. E a razão pela qual eu tenho duas coisas é porque se eu fizer a pasta dois pontos, pegar filhos, obteremos todas as instâncias, que é esse ponto de verificação. Mas a primeira coisa na verdade será um valor int ou, neste caso, apenas o índice. Então, pegue crianças. E então o que queremos fazer é fazer isso. Em primeiro lugar, queremos chamar esse número e isso é igual a uma nova instância com um ponto novo. E vamos chamar isso de valor int. Vou dizer que o nome do ponto numérico é igual ao ponto de verificação, número do ponto de verificação, vou dizer que o valor do ponto numérico é igual à contagem porque queremos definir isso como um no início, eles querem dizer que o número ponto pai é igual ao ponto de verificação. E, no final, queremos dizer que contar mais é igual a um. Porque, é claro, a cada novo posto de controle, queremos aumentar a contagem e isso é basicamente tudo o que precisamos fazer, certo? Então, vamos realmente jogar isso e dar uma olhada nos postos de controle aqui. Agora, o que é importante observar se realmente abrirmos os postos de controle, certo? Você pode ver que, em primeiro lugar, temos todos os postos de controle. Na verdade, vamos mudar para o servidor para que possamos nos movimentar. Este posto de controle está aqui. Você pode ver que agora é o valor um, este ponto de verificação, pois na verdade mudou a posição aqui, mas isso não é um problema porque ele ainda tem valor. Às vezes, as posições você muda, mas elas não deveriam mudar. Eles só devem mudar depois que o jogo for carregado. Então essa é a única coisa que esse script pode estragar. Se eles mudarem por qualquer motivo antes de todos esses grunhidos, então sim, você pode ter problemas e também pode adicioná-los manualmente. Mas eu gosto de adicionar isso pessoalmente a um roteiro, esse modo, é uma preferência pessoal minha. Não vou mentir. Eles agora têm isso. E o que poderíamos fazer, por exemplo, apenas para fins de discussão, é dizer: Ei, basta imprimir minha, minha coisa. Então, no script do módulo que criamos da última vez, vamos apenas imprimir o ponto de localização do spawn. E isso deve ter algo chamado número do posto de controle. Então nasceu o número do ponto de verificação da localização, esse valor. Então, toda vez que o jogador agora toca no local do spawn, devemos imprimir o valor. Então, vamos ver, certo, então devemos ser capazes de nos mover para cá, e talvez devêssemos nos mudar para cá. E se tocarmos nisso, você pode ver um. Então, ele vai imprimir um. Ok, interessante. Vamos continuar e ver se chegamos à próxima. Agora temos dois. E se continuarmos aqui, agora temos três. E isso vai continuar até que, basicamente , eu fique sem postos de controle. Então, se atingirmos este, temos quatro, e se continuarmos aqui, então aqui temos cinco. Então, isso é realmente incrível. Então, agora podemos obter o valor ou qualquer estágio em que estamos. Na verdade, podemos obter isso por meio do valor aqui. E vamos fazer duas coisas. A primeira coisa que vamos fazer é criar uma pequena interface gráfica. Então, essa será uma GUI inicial, e vamos chamá-la de GUI de tela. Vamos adicionar um rótulo de texto. E nós vamos tornar isso um pouco maior, algo assim. Então, é claro que isso é apenas para fins de demonstração, certo? Quero dizer, na realidade, você provavelmente quer deixar isso um pouco mais bonito, mas mais bonito. Você sempre pode mudar isso. Essa é a grande coisa. A parte interessante disso é a funcionalidade para mim no momento. Então, vamos chamar isso de, quero dizer, talvez algo como zero, tudo bem. Vamos fazer com que seja ainda maior. Então isso deveria ser algo parecido com isso. Talvez chame isso de 69. Bom. Sim, isso é bom. E então é basicamente isso, certo? E podemos mudar isso em um momento. Então, o que vamos fazer é voltar ao script do nosso módulo e adicionar algo novo. E essa será uma função local que nem mesmo será chamada de fora dela. Na verdade, ele será chamado por essa função aqui. Esta será a GUI do Add Player. E essa será apenas a função. Vamos precisar de um número e um número, ok? Então vamos trazer o jogador até aqui. Podemos levantar o jogador fazendo a mesma coisa que fizemos aqui. Então, agora temos o jogador nessa função. Podemos então dizer jogador, jogador gy, Gy. Esta é a nossa interface gráfica de tela, na verdade. Então, queremos renomear isso para GUI. Sim, certo, então esse nome deve corresponder ao número do ponto de verificação do nome. Vamos renomear isso também. Então esse é o número do posto de controle. Então, o rótulo do texto, vamos renomeá-lo para o ponto de verificação, o ponto txt é igual a, e então vamos fazer com que seja igual ao estágio e, em seguida , mais quaisquer que sejam os números e que serão, e esse será o nosso texto. Sempre escrevemos palco deles e depois o que temos. Então, na verdade, vamos mudar isso também. Então, digamos que agora está no estágio zero. Acho que isso faz sentido, certo? Estágio zero. Aí está. E toda vez, toda vez que queremos atingir isso, queremos mudar isso. Então, em vez de imprimir isso, podemos literalmente dizer adicionar jogador em uma GUI posterior passando o hit. E depois o número, que é exatamente o valor do número do ponto de verificação do local de desova . E isso é tudo o que precisamos fazer para adicionar isso já. E isso é realmente incrível. Porque agora, se entrarmos aqui, você pode ver que estamos no estágio zero. Agora, mais uma vez, como eu disse, isso não parece ótimo. É claro que você pode mudar a aparência disso, certo? Já falamos sobre GUIs antes, se continuarmos, e eu vou aqui, é claro, espere um segundo. Eu fiz um OOP, veja aqui, eu fiz uma vantagem aqui. Isso, isso deve ser ponto, ponto. Aí está. Isso é realmente o que você precisa fazer. Às vezes, o lower faz as coisas de forma um pouco diferente de outras linguagens de programação, mas tudo bem. E aí está. E agora chegamos ao primeiro estágio e podemos continuar aqui. E você encontrará o estágio dois e o estágio três e assim por diante. Absolutamente incrível. Agora você tem uma tela na academia, mas isso não é tudo o que queremos. Obviamente, também queremos uma tabela de classificação para comparar nossas próprias estatísticas com as estatísticas de outros jogadores. Agora, quanto às estatísticas do líder, podemos praticamente copiar o mesmo script que fizemos anteriormente. Então, nos servidores de scripts do servidor, queríamos apenas criar um novo script e vamos chamá-lo do líder, estatísticas de litros. Aí está. E, na verdade, vou copiar os scripts anteriores. Então, este é o script da Parte 16 dos fundamentos básicos do Roblox, onde adicionamos a postura de líder. Agora, não queremos um valor experiente e certamente não queremos um valor em ouro. Mas o que queremos é que queremos um valor int aqui. Então, vamos renomear isso para, vamos chamar esse estágio, e esse é o valor zero. Tudo bem. E então é literalmente isso, certo, isso é tudo o que precisamos fazer aqui. É claro que ainda precisamos mudar isso, mas tudo bem, podemos fazer isso. Então, no script do checkpoint aqui, quando adicionamos a interface do jogador, o que podemos fazer é criar um novo método e chamar essa mudança de estatísticas posteriores, certo? Tornando-a uma nova função mais uma vez com o calor e o número. E aí está. E o que podemos fazer então é pegar o jogador novamente, porque sempre precisaremos dele. E o que podemos fazer agora? Bem, agora podemos, em teoria, simplesmente acessar nossa coleta de metas que fizemos mais uma vez nas coisas anteriores. E podemos tirar partes disso. Então, podemos, antes de tudo, obter as estatísticas corretas do líder? Portanto, litros são iguais aos conjuntos de pontos líderes do jogador , porque esse sempre será o mesmo nome. Então, podemos dizer palco local. O estágio é igual a litros e litros estatísticos do cólon, encontre o primeiro filho. Vou chamar isso de palco porque é assim que chamamos aqui, certo? Esse é o mesmo nome desse, palco. E então, se o palco está realmente presente, oh, não, são estágios presentes. Então, o que vamos fazer é que o valor do ponto de estágio seja igual ao número que estamos obtendo da chamada da função de estatísticas do líder de mudança. E podemos simplesmente chamar isso de forma brilhante aqui. E podemos chamar de mudança as estatísticas do líder que passa no acerto. E então a mesma coisa aqui, local de desova, esse número do posto de controle, esse valor e pronto. Isso é literalmente tudo o que precisamos fazer. E agora também temos uma tabela de classificação personalizada. Então, se fôssemos fazer isso de novo, o que você descobrirá é que agora temos os grupos de líderes aqui. Então, não só eu posso ver meu estágio atual, mas todos na instância também podem ver meu palco. E você pode ver que os dois foram atualizados praticamente ao mesmo tempo. E podemos continuar com esse número dois, e assim por diante. Absolutamente incrível. Então, este é praticamente um Abi quase funcional neste momento. Agora, trata-se apenas de adicionar mais e mais estágios e mais e mais coisas. E você pode ver como cada parte individual parece muito pequena e meio que uma coisa que contém. Mas agora você pode ver que, se você combinar certas coisas, poderá criar muito, muito legal. Bem, basicamente os efeitos do jogo são sobre isso. É para esta palestra aqui? Espero que você tenha achado isso útil e aprenda algo novo. Nos vemos na próxima palestra. Então, sim. 39. (Roblox) Adicionando escadas desaparecidas no Obby: Ou vamos continuar com o RB aqui, seguir o curso de robótica e nesta palestra vamos fazer nossas escadas desaparecerem. Sim. Então, eu mencionei anteriormente que quando você sobe as escadas, talvez o que deva acontecer é que cada escada individual realmente desapareça quando o jogador a toca. Agora, há algumas maneiras de fazer isso. Vamos apenas adicionar um script à nossa parte. E então vamos adicionar esses scripts específicos a todas as nossas diferentes partes principais. Basicamente, para isso, vamos colocar aqui um roteiro e chamaremos esse roteiro de escada que desaparece. Agora, esse roteiro, em primeiro lugar , é claro que terá a parte em si e isso é apenas o script dot parent deve ser bastante autoexplicativo, certo? Vamos pegar o pai do roteiro. E então também queríamos fazer com que um desaparecimento local fosse igual a falso. Isso é um booleano. Isso só vai garantir que nosso evento Touched, que implementaremos em apenas um momento, não seja chamado basicamente várias vezes por segundo. Agora, queremos usar algo que não usamos antes, que é o serviço de interpolação. Então, este é realmente um momento muito bom em que podemos basicamente testar isso. E a ideia do serviço de interpolação é simplesmente passar suavemente de um valor de uma determinada coisa para outra. Então, estamos basicamente mudando uma propriedade específica. No nosso caso, vamos mudar a transparência de zero para um. E então, uma vez feito isso, vamos mudar de volta para um, 1-0. Então, como seria se eu jogasse o jogo por apenas um momento e mudássemos para o servidor aqui. Selecionaremos essa parte. E então a ideia seria que a transparência, certa, passasse de zero para um de forma suave. E então, quando for um, vamos esperar 6 s e depois vai voltar para zero. Agora, isso pode ser feito como vimos anteriormente com um for-loop e uma pequena chamada de função de peso, e então você simplesmente altera por, sei lá, 0,1 ou 0,01 ou quanto você quiser alterá-lo, isso funciona. No entanto, não é a melhor maneira. A melhor maneira seria usar o serviço de interpolação aqui. E a forma como isso funciona é que você tem uma variável de serviço dupla. Isso é igual ao serviço de obtenção de dois pontos do jogo. E dentro daqui, precisamos especificar os servidores. Agora você pode ver que há muitos serviços. verdade, não falamos em detalhes sobre isso e vamos dar uma olhada em apenas alguns serviços. Mas agora eu quero usar a superfície intermediária aqui. Isso é entre o serviço e então também queremos uma inflamação. Então, isso é informação entre interpolações. Na verdade, isso é bastante simples. Eu vou explicar isso também. Então, isso vai ser entre as informações. Vamos fazer isso. Chame assim. Vou chamá-lo com um t pequeno, não um grande, porque senão usaremos a classe aqui. Queremos transformar isso em um t minúsculo. E desta vez haverá uma interpolação entre informações com um T maiúsculo ponto nu. E então aqui podemos especificar a hora. Portanto, o tempo é exatamente quanto tempo será necessário para obter do valor que você está adicionando atualmente às propriedades Kronecker ao valor que você deseja alcançar. Vamos dizer apenas 1 s. E, em seguida, o estilo de atenuação, podemos dizer que esse será o estilo de atenuação de pontos enum, como você pode ver, e depois ponto e então você pode ver que há vários estilos diferentes. Portanto, linear é o mais fácil de entender. É apenas um gráfico desenhado linearmente, certo? Então, de um ponto para o outro, também há um equilíbrio, basicamente se recuperando um pouco. Isso realmente não se aplica ao nosso caso, porque, embora você não possa ultrapassar um ou zero em termos de transparência. E depois há outras coisas, certo? Então você pode ver que há um cúbico. Então, basicamente, ele começa com uma velocidade e qualidade mais baixas. Você pode ver que isso é determinado por uma interpolação quadrática. Então, há várias maneiras de você basicamente facilitar a entrada e a saída. O que eu recomendo aqui é que você experimente vários deles e veja o que eles fazem. Mais uma vez, neste exemplo específico, na verdade não é a melhor maneira de dar uma olhada nisso. Interpolar a transparência aqui não vai realmente fazer essa loucura, mas qualquer outra coisa pode ser interessante de fato. Então, vamos escolher o linear por enquanto. Não precisamos tornar isso muito complicado. Como eu disse, você pode simplesmente experimentar vários deles e ver o que eles fazem. E agora nós realmente queremos fazer uma nova interpolação, certo? Então, vamos chamar essa parte. Isso ativará a peça e fará com que a transparência passe de quaisquer valores reais para zero. Significa que transparência zero significa apenas que ela é completamente sólida. E podemos ver que isso será feito fazendo um serviço de interpolação. Então, nossa variável aqui, criar dois pontos, então queremos dizer qual instância. Então, qual parte real será treinada e a parte que fará parte deve fazer sentido, certo? Então, queremos mudar a peça. Agora. Queremos fornecê-lo entre as informações. Agora já fizemos isso, é perfeito. E então queremos fazer uma mesa aqui. Portanto, a tabela, é claro, será apenas entre colchetes. E aqui dentro, queremos saber o que vamos mudar. Queremos mudar a transparência, garantindo que escrevamos isso corretamente, certo? Então, transparência e segundo, o que queremos mudar isso? Queremos mudar isso para zero nesse caso. Então, certificando-se de que essa palavra aqui seja exatamente igual ao nome dentro das propriedades, certo? Portanto, este tem que corresponder exatamente a este. Então, por favor, preste atenção a isso. Se houver mesmo um pequeno cibercrime como esse, ele não funcionará. Se você se certificar de que está tudo bem , podemos simplesmente copiar esta linha. Então, basta selecionar isso, pressionar Control C e Control V para colá-lo novamente. E vamos cancelar a outra parte aqui. E, nesse caso, queremos que a transparência seja uma. Então, se participarmos do que vai acontecer em 1 s, mude a transparência. Além de qualquer valor real, zero. E se fizermos parte do valor da transparência, será alterado para um de qualquer valor de transparência que ela tenha no momento. Então, vamos dizer parte do ponto tocado. Então, usaremos o evento Touched. Vamos conectar isso com uma função. É claro que queremos saber o que vamos fazer e o que vamos fazer é entrar em nosso antigo e confiável serviço de scripts de servidor e, na verdade, vamos usar a declaração if, esta aqui, porque ela basicamente verifica se um jogador acertou ou um personagem atingiu essa parte específica. E também vamos acrescentar outra coisa e isso está desaparecendo. Mas queremos dizer que não está desaparecendo, certo? Então, a ideia é que isso se torne realidade imediatamente, certo? Então, vamos definir isso como verdadeiro imediatamente porque basicamente não queremos chamar isso se já tivermos o serviço Twin em funcionamento. Agora você pode fazer isso de várias maneiras diferentes. Você também pode verificar se uma interpolação está funcionando. Acho que o booleano aqui está totalmente bom. A ideia então é que vamos esperar, digamos, por um quarto de segundo. E então vamos dizer que faz parte do jogo de cólon. E isso agora representará a diferença entre os serviços , tornando a transparência de qualquer peça para uma. E isso realmente funcionará imediatamente. Então, se entrarmos aqui e formos para as peças, vamos dar uma olhada em quais parceiros são essa, essa parte. Ok, vamos pegar nosso armazém novamente. Vamos apenas duplicar isso e colocá-lo aqui para que tenhamos um pouco mais para que tenhamos um pouco de facilidade de chegar lá, desabilitar a parte inicial, e então poderemos aparecer imediatamente ao lado da escada. Então, nós pequenos ao lado da escada. E se eu tocar na escada, o que você descobrirá é que lá ela vai embora. Agora isso é realmente muito legal. Agora aí está. Portanto, ainda há colisão. Então, como você pode ver, estou praticamente de pé ou nada porque, bem, nós apenas mudamos a transparência. Mas mudamos a transparência, que já é realmente incrível. Então você viu que assim que subimos as escadas, certo, a intuição de serviço do The Twin começou. Então, essa aqui, aquela parte desligada, mudou a transparência de 0 a 1 de forma linear em 1 s. Agora, o que vamos fazer para, como vamos fazer isso desaparecer? Talvez possamos dizer aqui, bem, parte que pode colidir e então poderíamos simplesmente dizer falsa. Isso não está certo. Porque se fizermos isso, assim que começarmos a jogar, a coisa realmente vai acontecer: Bem, vamos cair dentro de um quarto de segundo, o que pode ser um pouco rápido demais. Então, podemos simplesmente dar uma olhada nisso e ver o que isso realmente faz. Então, se entrarmos aqui e tentarmos prosseguir com cuidado até essa parte, você pode ver que agora já é como se não houvesse mais colisão. Então isso tem sido muito, muito rápido. Então, eu diria que essa provavelmente não é a melhor maneira de fazer isso. O que você quer fazer é dizer, ei, se a interpolação aqui estiver pronta, certo? Então, uma vez feito isso, queremos desligar a peça. Então, basicamente, quando a peça desaparecer completamente e o que poderíamos fazer é simplesmente dizer parte. Então, esta é a interpolação que criamos, não a complete. Basicamente, você pode ver o evento completo de um interpolação disparar quando o gêmeo termina de jogar. Então é exatamente isso que queremos, certo? E queremos conectar isso a uma nova função aqui. Agora também podemos obter o estado. Nós realmente não precisamos do estado neste caso porque vamos ficar bem. E então podemos dizer que, nesse caso, peça pode colidir é igual a falsa. Então, tudo vai ficar bem. Então, vamos esperar outro, digamos 0,25 s. Então, vamos dizer que parte do jogo de dois pontos quando eles dizem que desaparecer é igual a falso. E então podemos dizer que uma parte pode colidir com a verdade aqui. Agora, eu não colocaria o cálculo verdadeiro aqui , porque então ocorre o mesmo problema que tínhamos antes. Quando isso se tornar visível, você poderá colidir com ele novamente. Agora, isso pode ser algo que você quer. Pode ser o caso, certo? Então, se você quiser fazer com que ele colida imediatamente com o Hubble, depois de mal conseguir ver a peça, você pode fazer isso. Ou se você quiser colecionável apenas quando a peça estiver totalmente pronta, você pode dizer que a porta em dois pontos completou a função de conexão de dois pontos mais uma vez com um estado aqui. E então, uma vez feito isso, você pode dizer que o tesouro pode colidir. A lógica aqui deve ser bastante sólida, certo? Só temos um serviço ou uma interpolação, certo? Nesse caso, ao mudar um valor de um para o outro, ele atingiu seu valor alvo. O evento concluído é chamado e estamos apenas conectando outra função a ele. Isso é literalmente tudo o que estamos fazendo aqui. Então, na verdade, é uma coisa muito, muito legal e incrível que podemos fazer. E se tivermos isso agora, o que podemos fazer é entrar aqui e ver se eu toquei a primeira escada aqui. Você pode ver isso agora que eu caí e vamos voltar lá. Vamos tocar na primeira série e depois continuar subindo. Então, vamos embora. Aí está. E agora você pode ver que ele se recupera e lá está novo e eu posso ficar de pé nele novamente e depois seguir em frente novamente. Então isso é muito, muito legal. Agora temos esse script de escada que desaparece em uma escada acima. Como podemos adicioná-lo a todas as nossas escadas? Não sei se existe uma maneira fácil de fazer isso. Eu estava basicamente duplicando todos eles. Então, basicamente, basta selecionar um deles, comparar o Controle D, e então, basicamente movê-los para as outras partes. Agora, se há uma maneira mais fácil de fazer isso , tenho o prazer de me esclarecer. Ainda não encontrei uma maneira mais fácil de duplicar peças e configurá-las facilmente para pais diferentes. Mas olhe para nós, basicamente já terminamos. Então não demorou muito. Então, isso deve estar muito bem. E então vamos fechar as portas se você quiser preparar isso para o futuro. Você também pode criar um script de módulo com essa alteração em aproximadamente e usá-lo e, em seguida, fazer com que as portas se conectem ao script do módulo, o que, obviamente, é possível. Mas no nosso caso, acho que tudo vai ficar bem. E vamos ver como isso vai ficar, porque isso realmente vai parecer muito, muito incrível. Então, se agora subirmos as escadas e você puder ver que agora tudo está desaparecendo e aparecendo novamente. Isso é absolutamente incrível. E a outra forma também funciona. Isso é muito legal. Agora, mais uma vez, mais uma vez, as escadas podem não ser a melhor forma em termos de modelagem, certo? Talvez a escada pudesse ser um pouco maior, um pouco mais larga, coisas assim. Você sempre pode alterá-lo porque agora a funcionalidade está lá. Certo? Agora você tem uma das partes do roteiro. E se você quiser refazer as escadas, absolutamente sem palavras. Você pode excluir todas as outras escadas. Você pode mudar a modelagem, como ela funciona. E aí está. Uma última coisa, eu já mostrei isso antes, mas o serviço de interpolação aqui, eu definitivamente recomendo você dê uma olhada nisso porque é uma parte muito importante de fazer muitas coisas em obstáculos que basicamente parecem legais. E também usaremos isso na próxima palestra. Portanto, eu recomendo fortemente que você dê uma olhada na documentação aqui. Você também pode fazer isso simplesmente indo até a superfície intermediária aqui, eu acredito, e depois exibindo. De qualquer forma, pode ser uma coisa muito interessante de se dar uma olhada. Então, isso vai ser o fim desta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo . Nos vemos na próxima palestra. Então, sim. 40. (Roblox) Adicionando peças móveis para o Obby: Vamos continuar com o RB aqui, seguir o curso de robótica e nesta palestra, vamos começar a mover nossos tijolos mortos, certo? Então, eu já brinquei e falei sobre a movimentação dos tijolos mortais há algum tempo. E a ideia é que o que queremos fazer é criar um script que mude a rotação dos blocos mortais, algo assim, certo? E vimos anteriormente na palestra anterior que vimos o serviço de interpolação das escadas, certo? Então isso tornou a transparência das escadas indo de 0 a 1 ou 1 a 0. E agora queremos fazer a mesma coisa com nossos tijolos mortos aqui, apenas com a rotação. Então, para isso nos blocos de matar, certo, podemos simplesmente deixar o script de eliminação. Basicamente, podemos manter isso lá. E o que queremos fazer é apenas adicionar outro script e esse será nosso script rotativo aqui. Isso é perfeito. E agora isso vai ficar em primeiro lugar, uma parte, certo? Essa vai ser nossa parte, script dot parent. E então vamos entrar novamente entre os serviços. Então, isso é entre um serviço igual a, vimos esses dois pontos do jogo anteriormente obterem serviço e, em seguida, colocarem a string de serviço de interpolação aqui. Agora também queremos informações. Então, isso pode ser algo como a informação rotativa, a informação rotativa. Aí está. E isso vai ser igual a interpolação e pés são novos. E aqui queremos o tempo novamente. Então, digamos apenas um por enquanto. Enum, esse estilo de flexibilização, esse linear por enquanto também. Eu recomendo fortemente aqui, você pode definitivamente conferir diferentes estilos de flexibilização e faremos isso em breve. Quando tudo estiver funcionando, a questão é, ok, como podemos resolver isso? Agora, isso é um pouco mais complicado do que o que você viu anteriormente, porque há um pouco mais de matemática envolvida. Mas digamos que vamos transformar isso, certo? Então esse não vai ser nosso adolescente. Portanto, haverá criação de dois pontos do serviço de interpolação. E é claro que isso funcionará da parte que deveria ser, o que deve fazer sentido. Vamos adicionar as informações rotativas. E aqui queremos adicionar o que está mudando como uma tabela. Agora, o que vai mudar para o kill brick será o quadro C, certo? E o que vai mudar para o quadro C é especificamente a orientação. Agora, como posso mudar a orientação do quadro C com isso? Bem, primeiro de tudo, vamos dizer quadro C. E então será igual aos quadros C reais. Esse será o quadro da Parte C. Então, estamos configurando-o para a mesma porta e depois multiplicando-o pelos ângulos dos pontos do quadro C. E a ideia aqui é que isso é igual a partir dos ângulos XYZ de Euler. Então, Angles basicamente retorna um novo quadro C a partir de números radiantes. Então isso pode ser um pouco, oh, isso é loucura. Em geral. As rotações no espaço 3D são, na verdade, bastante complicadas. Você pode dizer, bem, quero dizer, são como três números aqui. Bem, não é tão fácil. Na verdade, três números não podem ser suficientes para fazer orientação e rotação. É por isso que às vezes, quando você muda esses números, eles fazem coisas estranhas, certo? Então, talvez você tenha alterado essa seleção -90 e, de repente, essa mudança para -90, como o valor y, na verdade alterou isso para 70 e você está tipo, bem, como isso aconteceu? Bem, no geral, o que queremos fazer aqui nos ângulos é dizer radianos matemáticos de pontos. Então, queremos colocar o radiante aqui, 45. E então queremos dizer que fechando os parênteses é zero vírgula zero. Vou diminuir o zoom aqui e você pode ver o quadro C. O valor real deve ser o valor atual vezes qualquer que seja o ângulo matemático radiano 45s. O que isso significa? Bem, vamos ver isso em apenas um momento. O que vamos fazer é dizer “ spin colon play”. E isso é tudo o que vamos fazer agora. Então, vamos continuar assim, certo? Então, vamos dizer: Ei, dê volta e depois veremos, uma volta e depois veremos, começaremos aqui e vamos movê-la para cá. Devemos ser capazes de ver nossa primeira parede de tijolos matadores fazer alguma coisa. E você vai ver o que ele faz, certo? Então, vamos fazer aqui e você pode ver que ele realmente gira, mas gira em torno do eixo errado ou girou em torno de seu próprio eixo. Então, para realmente girá-lo em torno desse eixo, o que, neste caso , não está correto. Então, queremos mudar a matemática por lá. Então, na verdade, queríamos girar em torno do eixo azul, que na verdade é z. Então, queremos mudar esses dois aqui, isso não tem nenhuma preocupação. Então, basicamente, você pode conferir, se você quiser, espere, como você sabe que queremos girar em torno desse eixo? De repente, você pode ver que se eu mudar o azul aqui, certo, isso vai nos levar ao resultado desejado. E o azul aqui no canto superior direito é z. Isso significa que precisamos mudar o último porque isso é x, y, z. Espero que seja meio compreensível. Agora que mudamos isso, à direita e entramos aqui, agora devemos ser capazes de ver isso girar lentamente e pronto. Então, na verdade, nem percebemos isso, mas ele escreveu nessa direção. E se formos ao servidor e selecionarmos isso, podemos realmente ver na orientação que isso muda o valor aqui, 245. Então, isso é literalmente praticamente tudo o que isso faz, certo? Então, basicamente, diz: Ei, queremos mudar essa coisa em particular para 45. E se fôssemos para cinco, por exemplo , 5 s, então demoraria um pouco mais e então poderíamos realmente vê-lo se mover também. Então você pode ver agora que está se movendo. E agora atingimos o ângulo de 45 graus, e isso é tudo o que ele faz. Então, a ideia aqui é que, literalmente, isso apenas muda o ângulo de tudo o que você coloca aqui. A maioria dessas coisas é uma espécie de cálculo. Agora, é interessante dar uma olhada nisso. E se você estiver realmente interessado nisso, eu recomendo fortemente verificar as referências da API C frame. Sim, são muito importantes, são muito interessantes. No entanto, envolve muita matemática. Isso é o que você pode ter em mente. Então, agora ele vai girar de 0 a 45. E se agora quisermos que ele gire novamente? Bem, não se preocupe. Vamos apenas dar uma segunda volta. Então, vamos dizer que isso é girar um giro para ele, tudo bem. E este vai para -45. Então, primeiro vamos para 45 e depois vamos voltar para -45. Então, agora, o giro deve ser jogado, e agora isso é absolutamente genial. Agora, o que queremos fazer é que, uma vez feito isso, queremos dizer concluído. Então, mais uma vez, usamos o evento concluído. Queremos conectar uma nova função e vamos apenas dizer função. E na mesma linha , vamos dizer “ spin to dois-pontos”, e depois terminaremos na mesma linha. Espaçar até isso também não é uma rotação correta. Aí está, certo. Agora, ainda mais louco, vamos copiar isso também. Vou dizer que um, o giro dois está concluído, vamos colocar o giro um agora. Isso agora fará com que ele passe de quatro, 0-45 para -45 e vá e volte para sempre. Se jogarmos isso, você poderá ver isso. Em primeiro lugar, vai para 45 e, uma vez atingido esse bam , volta e agora vai para -45, menos 45. E quando atinge isso, volta novamente para 45. Absolutamente espetacular. E eu adoro isso e estou aqui, ou chega, é o estilo diferente de flexibilização. Então, talvez, vamos mudar a hora aqui para três. E agora, aqui, se obtivermos algo como um exponencial, certo? Portanto, isso reduz a resistência muito rapidamente à medida que um alvo se aproxima. Isso pode ser interessante. Então, vamos dar uma olhada neste. Isso vai parecer loucura, certo? Então, se dermos uma olhada nisso, de repente, parece completamente diferente. No entanto, esse também é um efeito muito legal , como você pode ver. E é isso que estou dizendo. Esteja aberto à experimentação em coisas como o estilo de flexibilização, porque isso realmente parece muito legal e pode basicamente adicionar alguma imprevisibilidade alguma imprevisibilidade aos seus elementos de dois anos, certo? Então, podemos fazer isso. Também podemos dizer que talvez queiramos dizer que vemos uma onda senoidal. Claro, por que não? Vamos dar uma olhada na placa. Como isso vai parecer? Bem, vamos ver, certo. Então, isso vai ficar bem parecido com isso. Então, é diferente. Mais uma vez, não é linear. É uma onda senoidal, certo? Então ele desacelera, acelera um pouco. Também podemos dar uma olhada em outra que é meio interessante. É o, é a parte de trás? Sim, esse que na verdade também é muito legal porque na verdade ultrapassa um pouco. Então, vamos ver que vai um pouco além de 45 graus, na verdade. E então ele meio que se recuperou, como você pode ver. Então ultrapassa um pouco e depois volta e continua voltando. É realmente incrível. Não posso enfatizar isso o suficiente. Brinque um pouco com o estilo de flexibilização aqui e você ficará surpreso com o que pode fazer. Agora que concluímos o script rotativo. Bem, podemos basicamente dar uma olhada em todos os nossos tijolos mortos aqui. Vamos nos certificar de que temos todas as corretas. Então, são todos os que estão acima dele. Tudo bem, e então vamos pegar o script rotativo e adicioná-lo a todos eles. Aí está. Roteiro de anotação, roteiro rotativo, roteiro rotativo N. Na verdade, mais um, e precisamos de mais um. Aí está. Aí está. Outra tentativa. Tudo vai girar. Agora. Agora, para ser justo, todos eles girarão na mesma velocidade e bem, basicamente em uníssono. Agora, o que você pode fazer é alterar a rotação original de alguns deles, certo? Para que a rotação fique fora de sincronia ou isso funcione. Então, podemos fazer com alguém assim. E então talvez mudemos esse cara para algo assim. E eu vou continuar aqui. Talvez esse cara tenha uma coisa absolutamente insana. Talvez esse cara esteja realmente em cima e então esse cara já esteja com 45. Então, vamos ver o que tudo isso faz quando todos se movem simultaneamente, certo? Então, vamos dar uma olhada nisso. E você pode ver agora todos se movendo, mas estão todos se movendo ao mesmo tempo. Parece muito legal, certo? Eu vou te dizer que eles, eles, eles parecem muito legais e você pode ver que o que é 45 graus realmente muda para cada um deles, certo? Porque o quadro C é, nesse caso, uma espécie de direitos locais. Então, basicamente, estamos mudando para 45 graus. Mas o que é 45 graus muda, o que na verdade tem um efeito muito, muito legal. Agora, há uma pequena coisa que eu quero acrescentar e que será a seguinte. Então, vamos abrir a Escritura rotativa superior para que tenhamos a correta. E vamos fazer disso um horário local de interpolação aqui. Isso vai ser, digamos, igual a um e nós vamos mudar isso aqui para que possamos mudar aqui para que possamos mudar o tempo de interpolação para que cada um dos nossos tijolos mortos seja girando tijolos mortais aqui. E a ideia aqui é que, na verdade, faremos isso por meio de novos valores int. Então, vamos apenas adicionar um valor int aqui ao kill brick. E esta vai ser a vez dos gêmeos, certo? Então, vamos dizer ponto de porta, tempo duplo, valor do ponto. Aí está. E agora temos o tempo a partir daqui. Então, vamos chamar isso de dois. E então podemos simplesmente excluir os antigos scripts rotativos. Então, mais uma vez, essa é uma daquelas coisas em que talvez um script de módulo seja meio bom, mas não é absolutamente necessário. E vou apenas duplicar isso e adicioná-lo a todos os nossos tijolos rotativos mortos. E também há um ponto em possivelmente renomeá-los para blocos de eliminação rotativos apenas para sabermos o que são, certo? Então, esses serão os tijolos rotativos ou, digamos, destruídos por tumultos, tudo bem. Espero que isso seja suficiente para pensarmos, ok, esses serão os rotativos. Aí está. Essa também é uma. E então esse também. E lá vamos nós. E agora podemos realmente mudar isso. Então, digamos que queremos mudar isso para seis e queremos mudar isso para um, e queremos mudar isso para três. E isso também deveria ser três, digamos. Agora, todos eles ficarão completamente fora de sincronia porque alguns deles serão mais rápidos, outros serão mais lentos. E aqui, é claro que você também pode mudar os estilos de flexibilização e ver agora que existem todos os tipos de simplesmente fazem suas próprias coisas. Basicamente. Eles nem se importam. E vai ser muito mais interessante contornar isso, quero dizer, esse vai ser interessante. Aí está, mas eu fiz isso. É simplesmente incrível, certo? Então você pode fazer muitas coisas agora, mudando a célula de atenuação de algumas delas, você pode, em teoria, você também mudaria a célula de atenuação em algum momento durante o tempo em que isso está acontecendo, você muda entre o tempo. Há um monte de coisas que você pode fazer. Essas ideias. Espero ter basicamente inspirado você a brincar com isso, porque essa é a coisa mais importante. Porque o máximo de aprendizado que você aprenderá é: espere, como posso fazer isso, isso ou isso? E sim, geralmente você pode fazer isso. Isso equivale a experimentar e ver o que você pode fazer. Mas esse é basicamente o movimento pelos nossos tijolos mortos por aqui. E isso resume muito bem a coisa geral que eu queria fazer com o RB. Teremos mais uma palestra em que falei sobre algumas coisas que talvez você possa acrescentar. Mas, independentemente disso, por enquanto, esse será o fim desta palestra aqui. Serei honesto, útil e você aprenderá algo novo. E vejo todos vocês na próxima palestra. Então, sim. 41. (Roblox) ideias adicionais para o Obby: Tudo bem, bem-vindo de volta ao RB aqui para o curso Row Box. E nesta palestra, eu só quero falar brevemente sobre algumas coisas que você poderá adicionar ao seu OB quando continuar a desenvolvê-lo. Então, é claro, em nosso exemplo aqui, temos apenas cinco fases e elas estão sendo jogadas, enquanto você pode jogar muito, muito rapidamente, certo? Mas a ideia do exército era ser uma ilustração do que você é capaz de fazer. Certas coisas que você poderia expandir seriam algo como talvez tirar a raiz quadrada do buraco no meio, certo? Talvez tornando-os um pouco maiores. E então você pode colocá-los assim, certo. Então você pode colocá-los para pegar um cigarro, um corredor. O corredor está se movendo com um serviço de interpolação. Então isso pode parecer muito, muito legal, certo? E talvez possa até ser uma coisa de arco-íris. Talvez não fosse uma fase difícil, mas nem sempre se trata de ter dificuldade no status. Também se trata de apenas ter palcos divertidos e fazer com que pareçam legais, certo? Porque, honestamente, você sabe, procurar um RB é, eu diria, algo entre 30 a 60% do que é o legal disso, certo? E se tiver muitos estágios, basta continuar e adicionar estágios diferentes que ainda são semelhantes. Assim, você pode adicionar mais formas em teoria, você pode adicionar as formas e fazer com que elas sejam inclinadas de uma maneira diferente. Eu escrevi isso de uma forma diferente. Você pode adicionar mais escadas, certo? Você pode adicionar escadas que talvez se separem da direita para a esquerda ou algo parecido. Você pode adicionar certas partes onde você tem que escolher direita ou esquerda, direita Então, semelhante a esta, mas na verdade uma delas é calcular suas falhas. Então você vai passar por essa, coisas assim. Há várias maneiras de fazer isso e tornar isso realmente incrível. E eu só quero que você experimente se estiver realmente interessado em continuar com isso, eu realmente acho que se você experimentar qualquer ideia que você possa ter, você também pode, é claro, olhar para outras Abby, ver o que elas têm e talvez dizer: Ok, como posso implementar isso? Essa é uma ótima maneira de continuar aprendendo mais e mais obstáculos sobre scripts. Além disso, terminamos com isso. Agora, na verdade, voltaremos com esse RB em particular porque, no restante do curso, abordaremos alguns tópicos mais intermediários. E a maioria deles, eu basicamente quero te mostrar o interior desse RB neste caso. E espero que isso também ajude você a criar seu próprio jogo Roblox personalizado. Também há algumas ideias de adições futuras, como podemos melhorar isso, como você pode continuar aprimorando seu hobby nesse caso. E o que quero dizer, seria isso para esta palestra nesta seção do curso. Espero que você tenha achado isso útil. E se você fizesse até agora, eu realmente apreciaria uma avaliação sua. Caso contrário, nos vemos na próxima palestra. Então, sim. 42. (Roblox) Publicando seu jogo: Tudo bem, bem-vindo de volta aos tópicos intermediários aqui, siga o curso Roblox e, nesta breve palestra mostrarei como você pode realmente publicar seu RB ou qualquer jogo no próprio Roblox. Então, para fazer isso, queremos apenas ir para Arquivo e então você verá que publicou uma no Roblox aqui. Agora vamos escolher o publicado no Roblox , pois isso basicamente abrirá uma nova janela aqui. Agora, essas são algumas das coisas que já foram publicadas. Nem todos eles são privados neste caso, mas eu posso criar um novo jogo, e isso basicamente criará um jogo completamente novo. Agora vamos chamar isso de nosso exemplo, OBE, por exemplo alguém assim, nada muito louco. Eu sou o autor aqui. Você pode até mesmo mudar o gênero nesse caso. Agora, você pode ficar com ele de qualquer jeito. Ou você pode dizer, isso é uma espécie de tema medieval ou B, algo parecido. Está tudo bem. Vamos simplesmente manter isso de jeito nenhum. Agora, geralmente os dispositivos, nós só testamos isso realmente para o computador. Então, se você quiser ser totalmente salvo, pode desligar o telefone e o tablet porque, bem, definitivamente sabemos que isso funcionará no computador. No entanto, você também pode mantê-los ligados, mas certifique-se de testar seu jogo também se eles funcionarem corretamente no telefone e na parte superior. Se você quiser, você pode adicionar uma descrição aqui. Caso contrário, você pode simplesmente clicar em Criar e isso agora fará o upload do RBA para o obstáculo. Então você pode ver que já estamos carregando nossa casa. Apenas seja paciente com isso. E aí está. Agora temos o arquivo aqui com um pouco de nuvem, e isso significa que agora estamos no servidor. Agora, basta navegar para criar que os obstáculos sejam criações com barra. E eu vou recarregar isso e você encontrará nosso exemplo, ainda que bem aqui embaixo, como uma nova experiência que foi criada. Isso é muito legal. E você pode ver que isso não é o problema. Se eu for editar no Studio, na verdade ele abrirá o Roblox Studio para nós. Então, isso realmente abriria uma nova janela. Então, agora você pode ver que o Roblox Studio está abrindo novamente. Agora, no nosso caso, já temos isso aberto. Então vai ser como, meu Deus, já abrimos. Então aí está. Vamos apenas fechar isso. E agora também o temos aberto aqui. Então isso é muito, muito incrível, mas isso não é tudo. Então, é claro que você pode entrar aqui. Vamos simplesmente entrar. Também podemos mudar essas coisas para que você possa ver que podemos torná-las públicas, podemos encerrar tudo. Podemos criar emblemas. Há estatísticas diferentes que você pode dar uma olhada. Você pode até mesmo configurar o final das localizações. Então, primeiro de tudo, podemos abrir isso em uma nova guia. Então essa será nossa criação aqui. Como você pode ver, essa é apenas a visão geral. Existem outras configurações básicas para que você possa alterar o nome, se quiser, torná-lo privado. Isso também é muito importante. Então, permite o acesso aos serviços de API. É a isso que voltaremos daqui a pouco. Eu recomendo fortemente que você já ative isso e salve as alterações. No entanto, vamos passar por isso mais uma vez. Isso é necessário para determinadas APIs, como a API de armazenamento de dados que veremos em breve. Existem lugares. Então, agora só há um lugar, certo? Então, é apenas esse RB neste caso. E, normalmente, para uma abadia, você só tem um lugar, mas você teria vários lugares conectados por meio certas plataformas de teletransporte ou certos gateways ou o que você basicamente quiser. E também veremos isso nas etapas intermediárias aqui. Existem outros itens para que você possa criar emblemas, criar passes e até mesmo criar um desenvolvedor. Os produtos não serão incluídos neste curso. Mas ainda há uma coisa interessante. Há diferentes tipos de acesso. Portanto, os tipos de acesso aqui seriam se é necessário ou não um pagamento para criar um servidor privado. Então você pode dizer que requer x robótica, coisas assim. Então, há uma coisa muito legal que você pode fazer. Há um questionário que não era elegível no momento. Há localização, então isso realmente traduziria certas coisas. Isso é absolutamente louco. Não analisamos a localização do serviço, mas é muito legal que isso exista. Também podemos adicionar alguns links sociais. Então, seriam apenas plataformas sociais aqui. Podemos receber algumas atualizações. Portanto, essa é uma ótima maneira de notificar o usuário. Basicamente, você sabe, algo aconteceu. Há notificações. Assim, podemos criar sequências de notificação e, em seguida, publicidade e o patrocínio realmente vão para uma janela diferente. E no final, aqui estão as estatísticas dos desenvolvedores que basicamente dizem quantas pessoas em qual plataforma estão jogando? Quais são os dados históricos? Há muitas coisas aqui, o que é realmente incrível. Mas se voltarmos à experiência aqui, o que você pode fazer é ver no Roblox. E o que vai acontecer é que você provavelmente verá, como já viu várias vezes, essa janela em particular. E o que é muito legal é que você pode mais uma vez ir até aqui para Editar e depois abri-lo novamente no Roblox Studio. Agora, na verdade, não vamos querer isso, certo. Então, há um monte de coisas, certo, configurei este lugar para que possamos realmente configurar esta é a versão antiga. Se voltarmos para a nova versão, você pode ver aqui que agora também podemos alterar o ícone e outras coisas. Então, na verdade, havia uma grande coisa que eu queria dar uma olhada e a maneira como você faz isso por meio das criações, certo? Então, se estivermos nessa tela de criação, você vai até sua Abby , depois vai para lugares, clica no local e pode alterar os detalhes, certo? Assim, você pode alterar o ícone aqui mesmo. Você pode fazer a imagem automatizada ou até mesmo alterá-la. Você pode alterar a miniatura. Então, a miniatura, é claro, seria essa coisa aqui, certo? Você pode realmente ver em bloqueios de estradas. Então, se você usa robôs, essa grande coisa está aqui, e então há acesso a isso. Quantos visitantes estão disponíveis? Normalmente, você quer que todos sejam como as configurações do serviço. Todos vocês querem um histórico de versões otimizado do Roblox. Então, quais são as versões que foram implementadas? E, por fim, algumas permissões. No momento, a maioria delas não é importante. Eu sugiro que você mantenha a maior parte dessa taxa de inadimplência. Então, se agora clicarmos em Jogar, certo, ele não abrirá de verdade. O Roblox Studio realmente abrirá o próprio Roblox. Então vamos lá, nosso exemplo de OB contando com Joel e agora estamos nos juntando, e aí estamos. Agora estamos dentro do jogo e isso é, na verdade, um obstáculo. Este não é o Roblox Studio. E se entrarmos aqui e formos até aqui, bam, estágio um, isso funciona. Ainda podemos morrer aqui. E isso é praticamente tudo o que existe. Quero dizer, isso é muito bom. Então, definitivamente funciona. Eu recomendo fortemente testes frequentes. Vamos ver as escadas. Eles também desapareceriam e também caíam. Não era bem isso que eu tinha em mente. Por favor, desculpe o fato de que não havia volume. Eu desliguei isso, mas aí está. Então agora você tem as serras aqui que estão girando, certo? Aí está. Oh, esse é louco. Esse é um, esse é um louco . Esse é realmente bom. Eu gosto disso. E então pegamos nossas formas, e lá vamos nós. Então, agora nós realmente temos o jogo aqui. Agora, é claro, ainda é um pouco simples, mas este é o começo da criação do jogo e agora ele foi publicado, ainda não é público, mas você pode, é claro, escolher tornar público ou não. Quando terminarmos com isso, podemos voltar. Mais uma vez. A grande delas são as criações. E aí você pode basicamente acessar todas as suas criações. Então, você pode ir para o seu exemplo ou B e mudar tudo o que quiser. Agora, a razão pela qual é tão importante publicarmos isso é porque, na verdade, exigimos que nosso local seja publicado antes de podermos usá-lo. Bem, todas as coisas sobre as quais falaremos nas próximas palestras. Mas isso basicamente vai ser o suficiente para esta palestra aqui. Espero que tenham achado isso útil e tenham aprendido o Novo, e nos vemos na próxima palestra. Então, sim. 43. (Roblox) Adicione fotos para sua GUI: Tudo bem, bem-vindo de volta aos tópicos intermediários aqui, mais um curso sobre obstáculos. E nesta breve palestra, veremos como você pode adicionar uma imagem à sua GUI. Então, a razão pela qual não conseguimos fazer isso quando analisamos as GUIs pela primeira vez é porque as imagens realmente precisam ser o que elas exigem em seu lugar para serem publicadas, certo? Então, se eu adicionar uma imagem aqui, certo, adicionaremos um rótulo de imagem, como você pode ver agora, temos uma imagem aqui. Vamos apenas adicionar isso dentro do tamanho aqui. Isso vai ficar totalmente bem. Isso vai mudar. Agora. Para alterar esse direito, você clica na imagem e depois desce até a imagem aqui. E você pode ver, agora podemos adicionar uma imagem. Agora, para adicionar uma imagem, vamos escolher um arquivo. Eu preparei um botão de polegar para cima aqui. Eu acho que isso vai ficar totalmente bem. Vamos chamá-lo de polegar para cima e vamos criar, isso realmente fará o upload do botão de polegar para cima para o próprio Roblox. Então, você pode ver que a net agora tem um ID de obstáculos, e esse ID é realmente importante e agora estará disponível. Vamos tornar isso um pouco mais agradável. Talvez, na verdade, vamos tornar isso um pouco menor, um número par como esse. E então vamos fazer isso. Aí está. Então agora nós temos isso. Vamos também remover a borda porque eu realmente não quero nenhuma borda. Não, eu não gostaria de fronteira zero aqui. Aí está. Então, agora temos um sinal de positivo aqui ao lado do seu palco. No momento, não estamos fazendo nada com isso, mas é muito legal, certo? Então é basicamente assim que você pode adicionar a imagem. Se agora salvarmos, você pode ver que agora mudamos, agora salvamos essas alterações no Roblox, certo? Então, se voltarmos para nossas criações e seguirmos nosso exemplo, eu ficarei no final dos lugares vez de em um lugar no histórico de versões Você pode ver que acabamos de lançar a versão mais recente porque é segura. E se publicássemos isso agora, publicaremos novamente Roblox e, na verdade, ela também publicará isso. Então, agora estamos publicando as mudanças. Há duas operações diferentes, certo? Mas se você voltar ao histórico de versões novamente, agora você pode ver que agora esta é uma versão publicada. Portanto, há uma diferença entre salvar suas alterações na publicação das alterações. Isso é uma coisa muito importante a ter em mente. Ok? Então, quando eu adiciono isso e salvei, certo? Então eu pressionei Control S ou você vai para Arquivo e Salvar. Isso significa que ele está salvo na nuvem Roblox. Você pode restaurar versões anteriores e salvá-las como uma versão anterior. Este é um resumo de todas as alterações que você fez. No entanto, só porque você salvou, isso não significa que as pessoas que jogam seu jogo sofrerão essas alterações. Para fazer as mudanças nas pessoas que estão jogando seu jogo, você realmente precisa publicar a versão que é muito, muito importante e é uma diferença muito importante saber quando está basicamente tentando fazer isso. Mais uma pequena coisa é que você provavelmente vai perguntar, bem, como posso mudar essa imagem se algo acontecer? Bem, vamos apenas para fins de discussão, enviar outra imagem, certo? E isso vai ser o polegar para baixo. Aí está. Também vai ser um polegar para baixo. Vamos criar isso também. Isso vai ser carregado e vai receber um novo ID aqui. Então, agora temos um polegar para baixo e digamos que, para fins de argumentação, vamos adicionar um script local aqui. Os serviços locais serão o trocador de imagem, amplie um pouco e só queríamos obter a imagem. Portanto, a imagem é, obviamente, que o script dot parent deve ser bastante autoexplicativo. E então vamos dizer ImageView.image. Lembre-se de que a variável é chamada de imagem com um I minúsculo e a imagem I maiúscula é, na verdade, a propriedade aqui que aponta para qualquer imagem que temos que seja igual a. E isso é muito importante. Basicamente, queremos obter o URL de ribulose para que a imagem seja igual à barra HTTP de dois pontos www dot. Bloqueios de estradas são ativos com barra, esse ID de ponto de interrogação é igual e, em seguida, você pode fazer um ponto e, em seguida , obter o ID da imagem para obter o ID da imagem. Mas eu apenas seleciono o rótulo da imagem e depois seleciono a imagem que você deseja, certo? Você pode, basta selecioná-lo e copiar o ID aqui mesmo. E então vamos nos certificar de que a imagem padrão seja, na verdade, o polegar para baixo. E então, basicamente, queremos mudar isso. Então, vamos voltar aqui. Vamos apenas adicionar isso aqui. E isso deve estar bem. Então podemos salvar isso. E você pode ver que estou realmente aplicando as edições aqui. E isso mais uma vez salva dois obstáculos na nuvem e devemos começar com o polegar para baixo. No entanto, na verdade, isso mudará para um sinal positivo quando começarmos o jogo, porque a imagem muda, seu script será executado. E lá vamos nós. Agora, na verdade , entendemos porque, bem, é claro que isso mudou a imagem aqui. Você pode mudar a imagem aqui, certo? Quando, quando algo realmente acontece, se você é um jogador morre, quem talvez mude para um polegar para baixo, certo? E quando chegarem ao próximo posto de controle, você pode alterá-lo para um polegar para cima. Agora, esteja ciente de que esse é um script local e que a GUI padrão é local. Então, se você está tentando fazer isso por meio de um script normal aqui, pode ser um pouco mais difícil fazer com que isso funcione corretamente por enquanto, mas é assim que você muda uma imagem, certo? E isso realmente vai ser o suficiente para esta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo. Nos vemos na próxima palestra. Então, sim. 44. (Roblox) armazenando dados de jogador com DataStoreService: Tudo bem, vamos continuar com os tópicos intermediários aqui para as pontuações dos robôs. E nesta palestra, vamos dar uma olhada no serviço de armazenamento de dados. Portanto, o serviço de armazenamento de dados é um serviço incrivelmente poderoso que permite armazenar dados de jogadores na Roblox Cloud. Agora, isso não é apenas muito legal, mas também permite que você faça coisas como, bem, digamos que seu jogador tenha realmente jogado sua ABI antes de chegar à segunda fase. Agora, o que vai acontecer é que se eles saírem do jogo e entrarem novamente, bem, eles serão gerados novamente no início, certo? Então, eles perderam todo o seu progresso porque seu progresso não foi salvo. Mas com o serviço de armazenamento de dados, podemos realmente salvar o progresso em e em um arquivo online, em uma tabela em algum lugar, e depois recuperá-lo quando o jogador entrar e novamente, e é exatamente isso que vamos fazer. Então, vamos dar uma olhada em como podemos fazer isso. Portanto, a superfície em si não é realmente tão complicada nesses servidores, servidores web, vamos apenas criar um novo script e chamá-lo script de ponto de verificação de carga. E do jeito que isso funciona é bom. Antes de tudo, é claro que precisamos de um longo serviço de armazenamento de dados. Então, haverá um serviço local de armazenamento de dados. Isso é igual ao serviço de obtenção de dois pontos do jogo. E queremos o serviço de armazenamento de dados aqui mesmo. Isso é incrível. Essa é a primeira coisa. A segunda coisa é que queremos uma loja específica. Portanto, a ideia é que, no serviço de armazenamento de dados, você tenha vários compartimentos diferentes, digamos. E nesses compartimentos, você salva todos os dados. Então, o que isso vai fazer é que precisamos de um local e vamos chamá-lo de posto de controle, loja de postos de controle. E isso é igual ao serviço de armazenamento de dados colon get Datastore. E então queríamos dar um nome a isso. Agora, isso é incrivelmente importante. Vamos chamar isso de loja do posto de controle. Toda vez que quisermos acessar a loja, precisamos dessa string específica. Essa é nossa chave exclusiva para identificar qual armazenamento de dados queremos acessar. E é extremamente importante que tenhamos acertado, mas temos um serviço de armazenamento de dados e temos o posto de controle aqui que armazena todas as informações. Então, a próxima coisa que queremos fazer é fazer a mesma coisa que é feita na tabela de classificação. E essa é a ideia do jogador adicionado aqui. Então, vamos pegar os jogadores também. Isso geralmente é algo que você quer. E então o que queremos fazer é copiar o evento adicionado pelo jogador aqui. Quero dizer, também podemos simplesmente digitar, mas às vezes você pode simplesmente copiar isso da melhor maneira possível. E isso vai ser uma função. E a função aqui é obter dados do ponto de verificação, certo? Vamos fazer isso e colocar isso na conexão aqui. Então, vamos obter um ponto de verificação de dados e também podemos realmente contratar o jogador por isso. Claro, aí está. Então agora temos o jogador aqui também. E isso é realmente muito importante porque precisamos do ID do jogador, certo? Portanto, precisamos de uma chave com a qual salvamos tudo isso. Então, a ideia é que vamos fazer uma chave. Então essa será a chave do ponto de verificação. E isso é igual a, geralmente o que você quer fazer é dizer ponto do jogador, ID do jogador, e ele fará ponto, ponto, e então faremos traço. E então você pode, por exemplo, dizer ponto ponto novamente. E então você pode dizer checkpoint, por exemplo e isso fará com que a chave seja específica para cada jogador, porque a ID do jogador é exclusiva para cada jogador, portanto, isso não deve ser problema algum. Mais uma vez, porém, essa chave sempre tem que ser a mesma. Caso contrário, você não conseguirá recuperar os dados ou obtê-los. Vai ser muito interessante. Então, vamos fazer com que um dado local igual a zero agora e, seja igual a zero agora e, em seguida, faremos o seguinte leite, uma mensagem local de sucesso ou erro que é igual à chamada P. Vou explicar isso em apenas um momento. Em vez da chamada P, criará uma nova função. E isso vai ser “data” igual a “checkpoint store”. Agora vamos entrar, entrar na loja, colocar dois pontos e ficar assíncronos. Então, vamos obter todos os dados que estão lá de forma assíncrona. Portanto, não vamos esperar até que isso carregue. Vamos dizer que compre sempre que puder. E vamos obter os dados da chave do checkpoint do jogador que acabou de se juntar a nós. Essa é a ideia geral. Agora, depois que isso for feito, certo, isso é muito importante. Queremos verificar se tudo funcionou ou não. Então, vamos dizer que se tivermos sucesso, podemos devolver algo ou podemos, podemos fazer o que queremos dizer de outra forma, certo? Mas isso significaria que não foi bem-sucedido, então, na verdade, queríamos cometer um erro. E queremos dizer que foi um erro no armazenamento de dados. Não precisa ser chamado exatamente assim, mas por precaução. E então queremos colocar a mensagem de erro aqui, certo? E se for bem-sucedido, podemos basicamente prosseguir. Vamos chamar isso agora mesmo. Prossiga com a mudança, mude a loja, mude, mude o posto de controle, farei isso em apenas um momento. Mas a ideia aqui é que vamos ler essa chave aqui e ela vai dizer: Ei, basta puxar a função get async aqui com essa chave específica, que basicamente nos dá o que está armazenado sob essa chave dentro do nosso armazenamento de dados. O motivo pelo qual estamos usando o peek hole você pode realmente ver, executa a função do provedor e detecta quaisquer erros. Então, a ideia geral é que é por isso que temos esse sucesso e esse erro aqui, o código P basicamente garante que, se ocorrer algum erro ao iniciar, não estiver conectado corretamente à Internet ou houver uma interrupção, os servidores travarem ou o que quer que seja, ele bloqueará isso na mensagem de erro. E se tudo fosse bem-sucedido e nós apenas conseguíssemos uma verdade sobre o sucesso. Isso é Leary, tudo o que fazemos. Então, agora, por enquanto. Eu só queria imprimir um sucesso aqui. Se isso for bem-sucedido e uma seta branca aqui, se não for. Então, vamos guardar isso para fins de argumentação. Vamos executar isso dentro do jogo e você verá que coisa interessante acontecerá se jogarmos isso agora, assim, você pode ver primeiro que o ID do jogador nem mesmo é membro da conta de um jogador e tudo ID do jogador nem mesmo é membro da conta de um bem porque na verdade se chama ID de usuário. Eu fiz um loop, vi o líder deles, que deveria ser o ID do usuário. Isso é o que queríamos usar. E então é a mesma ideia do ID do jogador. E se fizermos isso agora? Agora, recebemos mais esse erro e obtemos realmente um sucesso. Agora isso é muito legal, certo? Então, carregamos alguns dados . Isso é interessante. Agora, a verdadeira questão é: o que inserimos, certo? Então, se dissermos apenas dados de sucesso aqui, obteremos algo interessante, certo? Então, quais dados ele realmente carregou do get async? Bem, vamos dar uma olhada. E ficou, porque você pode ver que teve um zero, certo? Então, como à vista dos dados aqui, escrevemos moinho, isso não está certo. Não é exatamente isso que queremos. Não queremos que isso seja nulo. Então, o que podemos fazer é dizer n dados basicamente dizendo, bem, deveria haver algo escrito em vez dos dados. Caso contrário, não teremos muito sucesso. Como se não fosse um sucesso. Se os dados forem nulos, isso não está certo, nós queremos, então vamos fazer isso, certo? Portanto, somente se o sucesso e os dados estiverem presentes, queremos imprimir com sucesso. Caso contrário, queremos imprimir a mensagem de erro. E se fôssemos carregar isso agora, você pode ver que ainda estamos recebendo um nulo, mas agora estamos recebendo o nó da mensagem de erro porque, curiosamente, não há mensagem de erro, certo? Ok, então isso é interessante. Queremos parar e mudar isso para outra coisa, se não for sucesso, então faça isso e vamos agora que fizemos isso. Eu fiz isso especificamente dessa forma para que você possa entender a lógica de por que precisa de cada etapa individual, certo? Você não quer realmente ter sucesso se os dados forem nulos, certo? Isso não está certo, isso não está correto. Você só quer enviar a mensagem de erro se ela não for bem-sucedida, porque então sabemos que está tudo bem. Então, se ficar um pouco mais complicado, essa é apenas a natureza das etapas intermediárias agora, porque estamos usando muito mais coisas e conectando muito mais coisas. Mas, por enquanto, vamos continuar assim. Agora, mudei o posto de controle. Agora, como faríamos isso, certo? Portanto, o ponto de verificação é feito no script do ponto de verificação aqui. E isso é realmente muito legal porque o script de checkpoint realmente cria um, como você pode ver, um ponto de verificação de dados aqui. Agora podemos literalmente pegar isso e realmente mudar isso. Então, podemos fazer isso, podemos pegar isso, e vamos fazer a mesma coisa, certo? Então, se lermos algo com sucesso, criaremos uma nova instância. Agora, neste caso, o, isso é um, esses são os dados do ponto de verificação aqui. Então, o que vamos fazer é realmente querer fazer exatamente a mesma coisa aqui. Então eu vou até isso , certo? Então, esse aqui mesmo. Agora, o que vamos fazer é colocar isso em outra função, porque acho que manter a tela é um pouco melhor. Este será o sistema de checkpoint de criação. Talvez sistema não seja a palavra certa aqui, mas tudo bem. Podemos mudar o nome disso em um momento. Dados do ponto de verificação. Claro, tudo bem. Classifique os dados do ponto de verificação. Então, vamos chamar isso aqui. E a ideia é que isso só seja chamado uma vez, certo? Porque se os dados do ponto de verificação já tiverem sido criados pela primeira pessoa que está sendo adicionada ao servidor. Não queremos criá-lo novamente, mas se não for, então vamos criá-lo. E se essa é a coisa certa, depois de criarmos isso, agora queremos fazer exatamente a primavera, certo? Então, queremos mudar isso. Queremos colocar o filho do ID do usuário aqui. E mais uma vez, o que podemos realmente fazer é basicamente conseguir tudo isso, exceto o player adicionado aqui. Não queremos isso, só queremos isso. E então essa será outra função. E essa função será um ponto de verificação ou jogador de obter ou criar. E isso vai ficar assim e , em seguida, basta adicionar uma extremidade aqui. E isso é muito importante. Aí está. Agora não temos os dados do posto de controle. Isso é bom. Podemos passar isso para dentro. Não temos o jogador. Nós podemos, podemos definitivamente passar o jogador. Isso não vai ser absolutamente nenhuma preocupação. Então, se chamássemos isso, adquira ou crie o nome longo, mas tudo bem. Então, podemos passar o jogador para cá. Aí está. Isso é bom. E então os dados do posto de controle que não transmitimos. Então, vamos pensar em como podemos basicamente conseguir isso. Então, poderíamos fazer uma coisa muito interessante e isso poderia ser a volta disso, certo? Assim, podemos retornar os dados do posto de controle aqui. E podemos retornar aos dados do posto de controle aqui. E podemos criar dados de pontos locais, certo? E então podemos simplesmente passar isso para dentro. Aí está. E então vamos apenas dizer dados pontuais aqui. Então, por exemplo, essa pode ser uma maneira muito fácil de fazer isso. Talvez você não tenha pensado assim, mas eles poderiam, é claro , isso seria totalmente bom, certo? Ou criamos os dados do ponto de verificação aqui, ou nós os lemos a partir dos dados do armazenamento do servidor. E se for esse o caso, então nós apenas devolvemos isso. E como é necessário nessa função, podemos simplesmente passar isso aqui. Isso é tudo o que existe. No entanto, a única coisa que, obviamente, também precisamos fazer é garantir que o valor do ponto de verificação seja igual a qualquer dado que acabamos de ler. Este será o posto de controle armazenado. Eu acho que esse nome é bom. Isso vai ser bom. E vamos definir isso como igual ao valor do ponto de verificação da loja. E vamos passar isso aqui também. Serão dados. Agora, nesse caso, não precisamos verificar se um dado é nulo ou não. Porque dissemos que, se forem bem-sucedidos e dados, já estamos verificando se os dados são nulos ou não, certo? Porque se os dados N significam basicamente que não são nulos, essa é a ideia geral. Então, para isso, basicamente obtemos tudo o que precisamos. Nesse caso. Então, se estivermos lendo algo, na verdade estamos obtendo os dados corretos por meio dos servidores de checkpoint. Se tivermos sucesso e os dados provavelmente tiverem sido lidos, teremos um sucesso impresso. Em seguida, criaremos os novos dados do ponto de verificação no armazenamento do servidor. Essas são as lojas de servidores locais. Então esse é o próprio servidor em que estamos jogando agora, não o mesmo armazenamento de dados. Essas são duas coisas totalmente diferentes. Agora eles têm um nome muito parecido, certo? Nesse caso, eles realmente têm o mesmo nome, certo? Temos os dados, os dados do posto de controle aqui, a loja do Check Point aqui. E temos o posto de controle com os dados aqui da loja. Eu entendo que há alguns níveis de abstração que você precisa ter em mente. Ao mesmo tempo, o armazenamento de dados é basicamente como um grande arquivo antigo. Esse é o arquivo que, em algum lugar do servidor, muito, muito distante, você nem sabe onde está, certo? Esse é o arquivo. Você pode acessar o arquivo obtendo o serviço e, em seguida, obtendo uma loja específica. É como obter um gabinete de arquivos específico. Digamos que você retire um arquivo específico desse gabinete de arquivos verificando o ID do usuário com o ponto de verificação aqui, essa é a chave. E então você obtém esses dados diretamente nesses dados, por exemplo, se são três por uma questão de argumento, se forem três, então você está criando no servidor que está jogando agora, toda essa loucura aqui, e depois dizendo, ok, nosso valor de e depois dizendo, ok, verificação de que o jogador deve ser pequeno, , três, e isso é basicamente o que somos fazendo aqui. No entanto, uma grande coisa, e isso é o que não é feito. Não estamos salvando nada. Estamos agora, estamos apenas lendo isso, ok, então também podemos ler alguma coisa. Então, vamos criar outra função aqui, e vamos chamar isso de dados do ponto de verificação definido. Na verdade, vamos fazer isso. Lá está você com o jogador específico da floresta mais uma vez, e isso fará com que a camada escura do jogador seja removida. Isso é acionado quando um jogador está prestes a sair do jogo. Muito importante, remover a conexão do cólon. E esse será o conjunto de dados do posto de controle aqui. E sem os parênteses, é claro, aí está. Então, como definimos os dados do ponto de verificação? Bem, primeiro de tudo, precisamos do mesmo ponto aqui. Então isso é o que precisamos. Agora, na verdade, já precisamos do nome do posto de controle. Então, digamos que esse seja o ponto de partida ou criação, o ponto de verificação para o jogador. Agora, isso realmente define o valor para nós, o que não é bem o que queremos. Então, o que podemos fazer é colocar essa parte específica aqui. Portanto, devemos fazer com que este seja o verdadeiro posto de controle. Agora não temos os dados no momento. Isso é bom. Podemos criar os dados do ponto de verificação agora, na verdade, quero renomeá-los para também obter ou criar dados do ponto de verificação porque isso é muito mais preciso. E vamos simplesmente mudar isso aqui. E mais uma vez, podemos simplesmente obter os dados do posto de controle. Ao fazer isso, podemos simplesmente dizer que obtenha ou crie dados do ponto de verificação, encontre o primeiro filho do ID do usuário aqui. E agora temos o ponto de verificação e o valor será, esses serão os dados que deveriam ser salvos. O valor do ponto de verificação e o ego. Agora, como podemos salvar isso? Enquanto fazemos a mesma coisa, fazemos uma mensagem de erro de sucesso local igual à chamada P, criando uma nova função aqui. E então vamos dizer loja Check Point. Esse é nosso conjunto de dois pontos assíncrono do Datastore. Vamos passar a chave do ponto de verificação e, em seguida, passaremos os dados. E aí está. E isso deve ser tudo o que precisamos. Agora, é claro, você também deve fazer um sucesso, se não for bem-sucedido. Em seguida, queremos gerar um erro e diremos que não é possível salvar os dados corretamente e, possível salvar os dados corretamente em seguida, emitir a mensagem de erro aqui Só para que tenhamos isso, é sempre muito importante bloquear seus erros. E agora, quando um jogador é removido, certo, ao sair do jogo, em teoria, ele deve salvar o posto e, ao voltar ao jogo, ele deve obter o posto de controle que foi salvo, certo, os dados que foram salvos, e isso deve ser praticamente tudo o que precisamos aqui. Agora, isso pode parecer muito complicado por enquanto. Agora está, certo? Temos várias funções. Estamos fazendo muitas coisas diferentes. Temos alguma lógica de ramificação aqui. Eu entendo que isso é basicamente muita coisa ao mesmo tempo. É por isso que esses são os tópicos intermediários. Fica cada vez mais complicado à medida que avançamos. Mas espero que a lógica geral seja sólida. Então, vamos salvar isso e ver se tudo funciona. Pode haver uma flecha aqui ou ali, mas acho que, no geral, isso deve ser bom. E então eu vou explicar outra coisa que é muito importante aqui. Então, vamos nos juntar a nós. Em teoria, devemos participar no estágio zero, tudo deve estar bem e nenhum erro está presente, e isso é absolutamente incrível. Então, se fôssemos agora continuar aqui e ir aqui, agora estamos no estágio um. Se pararmos com isso agora, salve os dados. Agora, na verdade, entendemos isso e isso é meio que salvar os dados, não podemos armazenar a instância no armazenamento de dados. Eles recorrem a aceitar apenas caracteres UTF-8 válidos. Ok, tudo bem. Então, a questão aqui é: qual é o valor real que ele está tentando economizar? Então essa é a próxima coisa. Ah, sim, na verdade, eu sei qual é o problema. Obviamente, se realmente voltarmos à lógica aqui do script do ponto de verificação, o valor no ponto de verificação aqui são apenas os locais de desova. Na verdade, queremos o valor do número do ponto de verificação aqui, porque isso não é algo que esteja realmente salvo. Então, se fizermos o seguinte, se entrarmos aqui e salvarmos o valor do ponto de verificação do ponto, agora estamos realmente fazendo isso corretamente. E a mesma coisa acontece de outra forma. Agora, estamos apenas enfrentando um problema. Economizar não é absolutamente uma preocupação. Então, salvando, podemos fazer isso, sem nenhum problema, mas o carregamento agora é um pouco mais difícil. Simplesmente pelo fato de que, bem, agora temos o número do posto de controle. Ok. Isso é bom. Mas como você consegue esse posto de controle? Como você obtém o ponto de verificação correto para o número? Agora, o que você pode fazer é ter esse script de numeração de postos de controle muito útil aqui, certo? E essa pode realmente ser muito mais útil do que você imagina, porque aqui colocamos as crianças de todos os postos de controle com isso. Portanto, isso deve ser tudo o que realmente precisamos. Estou pensando na ideia de fazer uma mesa aqui, certo? Então, esses seriam nossos pontos de verificação, o que é igual a uma tabela que está vazia agora. E então você pode inserir pontos de verificação na tabela. E então o valor será, haverá contagem e o valor será o próprio ponto de verificação. Então isso vai ser o jackpot. Acredito que a maneira mais inteligente de realmente fazer isso é entrar no serviço de script do servidor aqui e criar um script de módulo, certo? Vamos fazer uma nova, essa será nossa tabela de controle. Digamos que também vamos renomear isso para pontos de verificação, certo? Não virar os postos de controle aqui. E agora, o que devemos ser capazes de fazer é em vez de o posto de controle numerar corretamente, quando podemos exigir isso. Então essa vai ser a nossa mesa. Vamos chamar isso de posto de mesa de costa. Isso é obrigatório. Esta será a tabela do ponto de verificação de pontos de verificação do serviço de scripts do servidor de jogos . E na tabela de pontos de verificação, devemos ser capazes de fazer o seguinte. Agora, insira o ponto de verificação do contador da tabela de pontos de verificação. Então, agora estamos inserindo coisas na tabela, que é o script do módulo, certo? E o que podemos fazer, vamos guardar isso por um momento. E dentro do posto de controle de carga aqui, também podemos obter isso. Há a tabela de pontos de verificação de pontos de verificação de pontos de verificação de pontos de verificação de pontos do serviço de scripts do servidor de jogos. E isso seria então postos de controle, colchetes, posto de controle da loja. Aí está. E eu acredito que essa é provavelmente a maneira mais limpa de realmente fazer isso. Então, o Success One está carregado, tudo bem. Só para fins de discussão, estamos aqui e vamos fazer isso. Então, agora que temos um carregado, vamos parar. Isso é um cofre, tudo bem. Vamos jogar novamente e ainda estamos surgindo no início, o que é muito interessante. No entanto, não estamos recebendo nenhum erro, o que na verdade é muito bom. Acontece um inesperado. Na verdade, talvez tenhamos que incluir o caractere branco aqui em nosso script de carregamento. E eu colocaria isso logo após definirmos o valor aqui. Acredito que essa seria a ideia disso e deveria bastar, porque o personagem adicionado aqui deve ser chamado após a adição do jogador. Então, vamos tentar adicionar isso abaixo do valor de que você já alterou o local de desova porque essa é a única coisa que realmente precisamos fazer, certo? Só precisamos gastar para mudar o local de desova. Lá vamos nós. Funciona imediatamente. Isso é absolutamente incrível. Então você pode ver que às vezes há um pouco do ***** aqui. Então, se você for para dois, eu posso pular e responder aos dois enquanto estou no jogo, certo? Então, vamos responder na segunda etapa. Aí está. E se eu parar com isso direito, agora estamos salvando os dois novamente. Mais uma vez, sem erros. Absolutamente incrível. E se eu jogasse novamente, não só veremos o sucesso aparecer, mas também começaremos imediatamente na segunda fase. Absolutamente incrível. Então, o que é muito importante aqui é que às vezes você pode ver que existem conexões. Há muitas conexões que às vezes são difíceis de desvendar. Você pode ver como fizemos isso, certo? Nós tínhamos uma, agora temos uma tabela de pontos de verificação aqui como um script de módulo. E estamos salvando os pontos de verificação por meio do script de numeração dos pontos de verificação aqui. E também há o script do ponto de verificação de carregamento que faz muitas coisas, certo? Então, vou tentar resumir isso em cerca 2 minutos para que seja compreensível. Portanto, temos um serviço de armazenamento de dados. Este é um arquivo, e o arquivo armazena muitos, muitos gabinetes de arquivos diferentes. Agora, a acomodação final, você pode pensar nisso como um armazenamento de dados. O armazenamento de dados é um gabinete de arquivos. Isso pode conter muitos arquivos diferentes. Agora, quando tivermos nosso Datastore, podemos acessar determinados arquivos por meio de uma chave, certo? Então, podemos pegar essa chave. No nosso caso, estamos criando uma chave usando o ID do usuário e, em seguida, apenas marcando o ponto de verificação até aqui, apenas para que você tenha isso. Em seguida, estamos obtendo os dados desse gabinete de arquivos específico dizendo que os pontos de verificação armazenam, este é o armazenamento de dados, dois pontos ficam assíncronos e, em seguida, passando a chave quando ela retorna os dados específicos armazenados com essa chave. Agora, no nosso caso, esse será o número associado ao nosso posto de controle, certo? Então, ou será o primeiro posto de controle, o segundo posto de controle, assim por diante e assim por diante. É verdade, certo? E se tivermos recuperado esses dados com sucesso, estamos criando os dados do ponto de verificação e, em seguida, criando o ponto de verificação para o jogador real. Agora, essas duas funções aqui são muito semelhantes às funções dentro do ponto de verificação real. Se olharmos o script do ponto de verificação e chegarmos ao módulo de ponto de verificação aqui. Vai ser esse aqui, exatamente onde basicamente criamos o mesmo modelo, certo? E, em seguida, chamar os dados de um posto de controle e recrutar o mesmo valor de objeto também. E a ideia do valor do objeto é que ele salva a porta real, lê a parte real do ponto de verificação, a porta física dentro do jogo. Então, se entrarmos aqui, ela salva essa parte específica como o ponto de verificação em que o jogador deve responder. E agora queremos obter isso com o número. Agora, o problema é o número e a porta real do talão de cheques ou estão completamente separados um do outro. Eles realmente não têm nada a ver um com o outro, o que é meio que um problema. A maneira de resolvermos isso é enquanto numeramos os pontos de verificação, certo? Enquanto numeramos os pontos de verificação, adicionando o valor int a eles, também os adicionamos a uma tabela que tem a contagem. E se tivermos a contagem, podemos obter a parte do posto de controle. E ao fazer isso, podemos então exigir os pontos de verificação aqui, o script do módulo da tabela de pontos de verificação. Podemos usar postos de controle, armazenar pontos de verificação para obter a parte real dele aqui, certo, o objeto do jogo, o objeto real. E então estamos apenas dizendo, ei, uma vez o personagem é adicionado, basta mudar a moldura do personagem, que é basicamente a posição do personagem no próprio posto de controle, mais para cima. Então, basicamente, vamos aparecer um pouco mais alto do que o posto de controle cair nele. Aí estamos nós. Quando estamos saindo do jogo, quando o jogador está sendo removido, pegamos a mesma chave, estamos basicamente desbloqueando o gabinete de arquivos. Novamente, é como desbloquear o gabinete de arquivos, pegar o início do arquivo e dizer, ei, agora defina esse arquivo com os dados que eu especifiquei aqui. E a ideia é que vamos obter o novo objeto, o objeto que atualmente é nosso ponto de verificação. Vamos obter o valor do número e pronto , vamos lá. Vamos pegar o número disso e depois salvá-lo em nossa chave mais uma vez, mais uma nota importante aqui. Agora estamos falando sobre salvar dados. E é extremamente importante que você tenha muito cuidado com a forma como salva os dados e que provavelmente adicione cofres, pontos de verificação, erros e tudo isso. Porque quando os dados desaparecem por causa de sua negligência , as pessoas podem não ficar felizes, especialmente se houver certeza de que há robôs envolvidos. No momento, não temos robôs envolvidos, então não deve ser tão ruim. Mas eu só estou dizendo que seja cauteloso e tenha muito cuidado com isso. Também recomendo ler sobre o serviço de armazenamento de dados, sobre as referências de API no próprio Roblox. Essa é uma leitura altamente recomendada para isso. Mas, além disso, isso vai ser o suficiente para esta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo . Nos vemos na próxima palestra. Então, sim. 45. (Roblox) vários lugares em um único jogo: Tudo bem, bem-vindo de volta à seção intermediária aqui para o curso de robótica. E nesta palestra, vamos dar uma olhada em como você pode adicionar vários lugares a uma experiência. Então, para isso, a ideia geral é que, quando voltamos ao nosso painel de criação aqui, certo, nossas criações, temos nosso exemplo aqui. Só como exemplo, vamos usar isso. Podemos entrar nessa experiência específica, nessa criação, e podemos adicionar lugares diferentes. Agora, se formos a lugares, podemos literalmente adicionar um novo lugar aqui. Vai me dar alguns lugares que eu já publiquei anteriormente. Você pode ver alguns deles que podem ser adicionados porque são locais armazenados e alguns deles podem ser adicionados. Então, como podemos basicamente fazer isso? Bem, o que você pode fazer é dentro do Roblox Studio. Então, se voltarmos aqui, o que podemos fazer, por exemplo, é que talvez tenhamos um terreno plano, então vai parecer um pouco diferente, que eles não tenham algo um pouco diferente para brincar com isso, como o gramado aqui, neste caso, você vai dizer, bem, ok, o que vamos fazer com isso? Então, vamos salvar isso. E o que você pode fazer é criar um novo jogo, podemos salvá-lo como um novo jogo se eu pressionar Control S, ou posso dizer atualizar um jogo existente e eu posso entrar aqui e dizer adicioná-los como um novo local. Então, eu vou dizer isso, eu vou criar. Agora, o nome será literalmente um jogo sem título, mas tudo bem, porque todos nós podemos mudar isso um pouco. Isso não é nada com que se preocupar. Agora podemos voltar ao nosso painel se eu realmente recarregar isso. Veja carpinteiros, por favor, número dez. Agora, é claro que esse não é um bom nome. O que vamos fazer é clicar no botão Editar no Studio e ele deve abrir o Roblox Studio novamente. Agora, uma teoria, essa deveria ser uma instância diferente dessa. Na verdade, eles não deveriam colidir. Você pode ver que agora estamos carregando o local e esse é o lugar real, a experiência do RB ou a criação do RB, certo? Agora você pode ver que se chama contagem de minerais e joga o número dez. Agora, esse não é bem o nome que eu tinha em mente. Então, podemos acessar as configurações do jogo e agora você pode ver que, em alguns lugares, também podemos mudar isso. Então você pode ver que há jogadores diferentes, também jogadores. E aqui podemos configurar o jogo. Então, digamos que também temos apenas 16 anos, e isso vai fazer com que a grama fique mais verde. Aí está. E você pode ver que há várias coisas diferentes que você também pode fazer. Nós vamos apenas salvar isso. E se guardarmos isso, nada mudará, ok, tudo bem. Mas podemos então publicar isso e ele vai realmente publicar, certo? Então você pode ver que publicamos as mudanças, no entanto, agora, se voltarmos às correlações aqui, nosso exemplo será se recarregarmos isso, você poderá ver que agora o nome real é uma grama é mais verde e também mudamos algumas dessas coisas aqui e agora. Não há nada acontecendo aqui agora, é claro, porque nada foi adicionado aqui, mas é um lugar diferente dentro do mesmo jogo. Então, como sempre, lembre-se de que você pode ter vários lugares dentro de um portão. Na próxima palestra, veremos como você pode diferenciar os dois lugares diferentes. Caso contrário, espero que você tenha achado isso útil e aprenda algo novo. Nos vemos na próxima palestra. Então, sim. 46. Teleporte entre diferentes lugares: Tudo bem, bem-vindo de volta à seção intermediária aqui para o curso robusto. E nesta palestra, veremos como nos teletransportar de um lugar para o outro lado é, na verdade, bastante simples usando o serviço de teletransporte. Então, para isso, o que eu vou fazer é copiar meu círculo aqui apenas para que tenhamos algo para basicamente abordar. E quando você chegar a esse círculo, vamos nos teletransportar para o lugar que basicamente adicionamos à nossa experiência, ao nosso RB aqui da última vez, isso aconteceu na última palestra, esse será o círculo de teletransporte e vamos clicar na pequena vantagem aqui adicionando um script. E o roteiro será o roteiro de teletransporte. E isso vai nos teletransportar. Para o teletransporte, precisamos do serviço de teletransporte. Isso será igual ao serviço de obtenção de dois pontos do jogo. Então, é claro que essa é a maneira de obter um serviço, e esse é o serviço de teletransporte. Também queremos conseguir os jogadores, serão apenas jogadores do jogo. E então queremos um teletransportador. Então, os teletransportadores são o verdadeiro objeto do jogo, certo? Eles circulam neste caso. Então, essa será a ordem do caixa e será igual ao script dot parent. E então queremos a identificação do local. Então isso é importante, certo? O ID do local é um ID exclusivo para o seu local. E você deve conseguir isso indo até aqui, certo? Então, este é o nosso lugar para o qual queremos ir. E você pode ver, bem, como conseguimos isso? Bem, basta entrar aqui. Você também pode mudar o nome aqui, a descrição aqui são gêneros, tudo isso, e tudo bem. No entanto, precisávamos do ID do local. Como podemos conseguir isso? Bem, você pode ver o URL aqui e ver que essa é a experiência e esse é o lugar. Então esse seria nosso ID de lugar. Vamos apenas copiar isso e depois voltaremos aos obstáculos por aqui. E você verá que podemos simplesmente transformar isso em uma string. Na verdade, não queremos transformar isso em uma string. Queremos fazer disso um número que seja realmente muito importante. E aqui vamos fazer uma função local com um toque parcial. Então, vamos fazer um evento de toque aqui, neste caso, outra parte, e isso vai funcionar, isso vai primeiro nos levar até o personagem. Essa é apenas outra parte, pai, esse é o nosso personagem. E então vamos dizer que o jogador é igual aos dois pontos do jogador, separe jogador por personagem, passando o personagem aqui. E então, se houver um jogador, o que vamos fazer é dizer serviço de teletransporte de cólon teletransporte. Quando você se teleporta para o ID do local aqui, você pode ver que esse é o ID do local e nós vamos teletransportar, é claro, o jogador agora é jogador, mas o jogador singular que acabou de tocar nessa parte específica. E vamos dizer que se teleporte ou toque na Polônia e se conecte. E então vamos adicionar a parte tocada sem os parênteses. E esse será o roteiro de teletransporte. Então, vamos salvar isso. E isso é praticamente tudo o que precisamos fazer neste caso. Mas se jogarmos agora, eu deveria estar aparecendo na segunda fase, porque essa foi a última vez, bem, a última coisa que foi salva, e você pode ver que estou na segunda fase, então essa é a coisa legal sobre a taxa de poupança. Na verdade, isso salva todos os dados diferentes, mesmo depois de vários dias. Então essa é a coisa mais incrível agora, claro que eu tenho que derrotar o nível aqui, mas acho que vou ficar bem aqui. Aí está. E uma hora no estágio cinco. E agora, quando eu toco isso, eu deveria ser teletransportado. Então, vamos ver. Então, estamos recebendo um erro aqui. Isso é totalmente bom porque, e você pode ver o teletransporte falhar porque não pode se teletransportar no Roblox Studio. Essa é a primeira coisa muito interessante em que pensar, mas não há problema nisso, porque o que podemos fazer é simplesmente parar isso e depois publicar isso na Roblox. As tarifas publicarão isso por enquanto. Todas as nossas alterações são publicadas no Roblox. E se você voltar agora às nossas criações aqui, podemos voltar à experiência, ao RB aqui. E vamos apenas dizer visão sobre bloqueios de estradas. E o modo vai jogar isso agora, Roblox o abrirá. Isso não é mais o Roblox Studio, mas obstáculos. Você também precisará testá-lo no Roblox. Portanto, é muito importante anotar isso, certo? Se você tiver, quanto mais complexo for o seu jogo, basicamente, mais você também precisará fazer em vez de obstáculos. E fora do Roblox Studio, quero dizer, é claro que faz sentido, certo? Você também quer testar continuamente seu jogo em busca de bugs e coisas assim. Então, o que você pode ver é que eu ainda estou no estágio cinco porque, bem, eu ainda estou no estágio cinco, isso é muito legal. E agora, se eu entrar aqui, boop, certo, vai levar um momento. E você pode ver que a grama é mais verde. Bam. Demorou um pouco. Às vezes, demora um pouco para carregar. Mas lá vamos nós. Agora estamos em um lugar diferente. É claro que não há nada aqui, mas isso é realmente incrível, porque é assim que você pode basicamente conectar vários lugares diferentes. Você pode criar vários níveis diferentes ou criar várias instâncias diferentes. Basicamente, há muitas maneiras de usar isso, mas você pode criar várias Abby que se interconectem umas com as outras. Você pode fazer, quero dizer, há muitas coisas que você pode fazer basicamente com isso adicionando vários lugares diferentes. É muito legal. E essa é basicamente a ideia de se teletransportar para lugares diferentes em sua experiência. Muito legal. Na verdade, isso vai ser o suficiente para esta palestra aqui. Espero que você tenha achado isso útil e aprenda algo novo . Nos vemos na próxima palestra. Então, sim. 47. (Roblox) Para onde ir daqui: Tudo bem, bem-vindo de volta à seção intermediária aqui, mais um curso sobre Roblox. E nesta palestra, vamos falar sobre onde ir a seguir, pois essa é basicamente a última palestra aqui neste curso. E a ideia é: o que, para onde você quer ir a seguir? Então, uma coisa em particular que eu simplesmente não posso recomendar o suficiente, e eu já falei sobre as referências da API Roblox Engine aqui, que tem todas as classes, certo , como referência, você tem todos os tipos de dados. Basicamente, tudo o que você gostaria de ter está aqui. Há também alguns guias que podem ser muito úteis. Isso basicamente ajudará você a construir uma base ainda melhor do que a que você já tem depois de passar por todas as palestras anteriores. Além disso, é claro, uma grande coisa é que você aprenderá mais fazendo. Então. Isso basicamente significa que continue experimentando coisas diferentes. Ou eu quero adicionar isso, quero fazer com que o jogador seja atirado para o céu. E então o XYZ acontece, dando passos contínuos você poderá aprender ainda mais no futuro. Eu também quero fazer um curso intermediário a avançado. No entanto, isso ainda não estará disponível assim que estiver disponível. Você será notificado, é claro, e adereços a você por manter essa perseverança são a melhor coisa que você pode ter ao aprender algo assim. Porque, no final das contas, script e a programação do Roblox em si podem ser bastante desafiadores e complicados, mas você é péssimo. Então, estou muito orgulhoso de você e estou empolgado ver qual jogo de obstáculos você vai criar . Além disso, muito obrigado por assistir. Mais uma vez, se isso fosse útil para você, eu agradeceria muito sua avaliação. Caso contrário, espero ver você no próximo curso. Então, sim.