Matrizes podem ser combinadas com loops, como enquanto e para , para repetir o mesmo código para cada valor indexado. Por exemplo, teletransportar cada jogador em uma matriz para um novo lugar ou fazer uma matriz de peças Iniciar / executar.
Para explorar o looping através de matrizes, crie um caminho de ponte desaparecente onde as peças são colocadas em uma matriz e, em seguida, feitas para desaparecer uma a uma.
Girando através de uma matriz
Para o projeto, encontre ou crie um conjunto de três partes para fazer desaparecer. As partes devem estar todas ancoradas.
Crie três partes. Nomeie as partes na ordem em que deveriam desaparecer, Parte1, Parte2, Parte3.
No ServerScriptService, insira um novo script e crie uma matriz para armazenar as peças.
local pathArray = {}Em uma única linha cada, digite o nome das peças na ordem em que deveriam desaparecer. Usar uma nova linha para cada valor torna mais fácil de ler.
local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}
Usando um para Loop com um Array
Use um loop para passar pela matriz e controlar o quão rápido as peças devem desaparecer na ordem em que as peças são indexadas dentro da matriz / lista.
Para controlar a frequência com que uma peça desaparece em segundos, crie uma variável chamada VANISH_RATE. Para testes, é melhor mantê-la em um número pequeno.
local VANISH_RATE = 1.5local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3}Crie um loop de for com o seguindo: Começo: partIndex = 1 , o índice do primeiro valor na matriz / lista. Fim: #pathArray , o tamanho dessa matriz / lista.
for partIndex = 1, #pathArray doendEntão há um atraso antes de uma parte desaparecer, no loop, adicione um task.wait() usando VANISH_RATE .
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)endPara que uma parte desapareça, crie uma nova variável chamada whichPart e defina-a como partsArray[partIndex] . Então, para que essa parte desapareça, defina sua propriedade CanCollide como falsa e Transparency como 1.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endVerifique se partes do caminho desaparecem com o tempo.
Dicas de solução de problemas
Se a ponte não desaparecer, verifique os possíveis problemas abaixo: Problema: Partes desaparecem muito rápido ou desapareceram todas no iniciar.
- Dependendo de quão rápido seu personagem carregue na experiência, as primeiras partes já podem ser invisíveis. Para resolver isso, adicione uma pequena espera, como task.wait(2) , no início do script.
Codificando o Segundo Loop
Agora, as peças desaparecem para sempre. Para fazê-las reaparecer, crie um segundo para o loop que passará por cada parte e instantaneamente tornará cada peça andável.
Após o primeiro loop, adicione um task.wait() para criar um pequeno atraso antes que o caminho reapareça.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endtask.wait(1)Em seu próprio , tente codificar um segundo para o loop que torne o caminho utilizável novamente alterando a propriedade CanCollide de cada parte para true e Transparência para 0. Quando estiver pronto, verifique seu trabalho com o código abaixo.
-- Reinicie o caminho tornando todas as partes caminháveis novamentefor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endTeste o projeto para confirmar que, uma vez que todas as peças desaparecem, elas voltar.
Repetindo com um ciclo de um tempo
As partes desaparecem e reaparecem, mas apenas uma vez. Para fazer com que o código continue se repetindo, anote todo o código dentro de um loop.
Na parte inferior do script, crie um novo loop while true do. Então, mova ambos os loops para o loop while.
while true do-- Faça uma parte desaparecer da matriz em ordemfor partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- Espere um segundo antes de fazer o caminho reaparecertask.wait(1)-- Reinicie o caminho tornando todas as partes caminháveis novamentefor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endendVerifique se, uma vez que todas as peças desaparecem, elas reaparecem.
Uma versão finalizada do projeto pode ser baixada.
scriptconcluído
local VANISH_RATE = 1.0local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}while true do-- Faça uma parte desaparecer da matriz em ordemfor partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- Espere um segundo antes de fazer o caminho reaparecertask.wait(1.0)-- Reinicie o caminho tornando todas as partes caminháveis novamentefor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endend
Matrizes e ipairs ()
ipairs() é usado com matrizes . O "i" em ipairs() significa "index." ipairs () pode ser usado para repetir rapidamente uma operação em muitos objetos, como, por exemplo, uma pasta cheia de peças.
Isso será demonstrado adicionando rapidamente partículas a uma pasta inteira de peças.
No Workspace, crie uma pasta chamada PartsFolder. Adicione quantas peças você quiser.
No ServerScriptService, crie um novo script e faça referência à pasta.
Use GetChildren () para obter automaticamente uma matriz listando todos os objetos na pasta.
local partsFolder = workspace.PartsFolder-- Obtém uma matriz listando as peças na Pasta de Peçaslocal partsArray = partsFolder:GetChildren()Use in ipairs(ArrayToUse) com o loop for para passar por partsArray e adicionar partículas.
scriptconcluído-- Obtém uma matriz listando as peças na Pasta de Peçaslocal partsArray = partsFolder:GetChildren()-- Adiciona partículas a todas as partes da matriz / listafor index, part in ipairs(partsArray) dolocal particles = Instance.new("ParticleEmitter")particles.Parent = partend
Jogue o teste e observe as partículas flutuarem de todas as partes da pasta.
Resumo
Loops podem ser combinados com matrizes para funcionar com qualquer número de valores rapidamente. Se você quiser ter controle exato sobre o que acontece com algumas peças e em que ordem, uma matriz deve ser codificada com valores específicos.
Para trabalhar com muitas partes onde a ordem não importa, GetChildren () pode criar uma matriz de filhos de um Objeto. Usando ipairs(), a lista pode ser rapidamente iterada sem saber o tamanho da matriz / lista.