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
descob