Los arrays se pueden combinar con bucles, como mientras que y para , para repetir el mismo código para cada valor indexado. Por ejemplo, teletransportar a cada jugador de un array a un nuevo lugar o hacer que un array de partes se desencadenar.
Para explorar el bucle a través de las matrices, crea un camino de puente que desaparece donde las partes se colocan en una matriz y luego se hacen desaparecer una por una.
Recorrido a través de una matriz
Para el proyecto, encuentra o crea un conjunto de tres partes para hacer que desaparezcan. Las partes deben estar todas ancladas.
Crea tres partes. Ponle nombre a las partes en el orden en que deberían desaparecer, Parte1, Parte2, Parte3.
En ServerScriptService, inserte un nuevo script y cree un array para almacenar las partes.
local pathArray = {}En una sola línea cada una, escriba el nombre de las partes en el orden en que deberían desaparecer. Usar una nueva línea para cada valor hace que sea más fácil de leído.
local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}
Usando un para bucle con una matriz
Usa un bucle para pasar por el conjunto y controlar qué tan rápido deberían desaparecer las partes en el orden en que están indexadas dentro del matriz/lista.
Para controlar la frecuencia con la que una parte desaparece en segundos, crea una variable llamada VANISH_RATE . Para probar, es mejor mantenerlo en un número pequeño.
local VANISH_RATE = 1.5local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3}Crea un bucle para con lo siguiendo: Inicio: partIndex = 1 , el índice del primer valor en la matriz/lista. Fin: #pathArray , el tamaño de esa matriz/lista.
for partIndex = 1, #pathArray doendEntonces hay un retraso antes de que una parte desaparezca, en el bucle, agregue un task.wait() usando VANISH_RATE .
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)endPara que una parte desaparezca, crea una nueva variable llamada whichPart y ponla igual a partsArray[partIndex] . Luego, para que esa parte desaparezca, pon su propiedad CanCollide en falso y Transparency en 1.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endComprueba que partes del camino desaparezcan con el tiempo.
Consejos para solucionar problemas
Si el puente no desaparece, comprueba los posibles problemas a continuación: Problema: Las partes desaparecen demasiado rápido o se han ido al iniciar.
- Dependiendo de lo rápido que se cargue tu personaje en la experiencia, las primeras partes ya pueden ser invisibles. Para hacer frente a esto, agregue una pequeña espera, como task.wait(2) , al comienzo del script.
Codificación del Segundo Círculo
En este momento, las partes desaparecen para siempre. Para hacer que reaparezcan, crea un segundo bucle que pasará por cada parte e instantáneamente hará que cada pieza sea caminable.
Después del primer bucle, agregue un task.wait() para crear un breve retraso antes de que reaparezca el camino.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endtask.wait(1)En tu propio , intenta codificar un segundo para el bucle que haga que la ruta sea utilizable de nuevo cambiando la propiedad CanCollide de cada parte a true y Transparencia a 0. Cuando termines, comprueba tu trabajo contra el código de abajo.
-- Reinicia el camino haciendo que todas las partes sean caminables de nuevofor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endPrueba el proyecto para confirmar que una vez que todas las partes desaparezcan, volverán.
Repetir con un bucle de un tiempo
Las partes desaparecen y reaparecen, pero solo una vez. Para que el código se siga repitiendo, anida todo el código dentro de un bucle.
En la parte inferior del script, crea un nuevo bucle while true do. Luego, mueve ambos para los bucles al bucle while.
while true do-- Haz que una parte desaparezca del conjunto en ordenfor partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- Espera un segundo antes de hacer que el camino reaparezcatask.wait(1)-- Reinicia el camino haciendo que todas las partes sean caminables de nuevofor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endendComprueba que una vez que todas las partes desaparezcan, reaparecerán.
Se puede descargar una versión terminada del proyecto.
scriptCompletado
local VANISH_RATE = 1.0local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}while true do-- Haz que una parte desaparezca del conjunto en ordenfor partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- Espera un segundo antes de hacer que el camino reaparezcatask.wait(1.0)-- Reinicia el camino haciendo que todas las partes sean caminables de nuevofor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endend
Arrays y ipairs ()
ipairs() se usa con matrices . La "i" en ipairs() significa "index." ipairs () se puede usar para repetir rápidamente una operación en muchos objetos, como, por ejemplo, una carpeta llena de partes.
Esto se demostrará agregando rápidamente partículas a una carpeta completa de piezas.
En Workspace, crea una carpeta llamada PartsFolder. Agrega tantas partes como quieras.
En ServerScriptService, cree un nuevo script y haga referencia a la carpeta.
Usa GetChildren () para obtener automáticamente un array que liste todos los objetos en la carpeta.
local partsFolder = workspace.PartsFolder-- Obtiene un conjunto que enumera las piezas en la carpeta de piezaslocal partsArray = partsFolder:GetChildren()Usa in ipairs(ArrayToUse) con el bucle for para pasar por partsArray y añadir partículas.
scriptCompletado-- Obtiene un conjunto que enumera las piezas en la carpeta de piezaslocal partsArray = partsFolder:GetChildren()-- Añade partículas a todas las partes del matriz/listafor index, part in ipairs(partsArray) dolocal particles = Instance.new("ParticleEmitter")particles.Parent = partend
Reproduce la prueba y mira las partículas flotar desde cada parte de la carpeta.
Resumen
Los bucles se pueden combinar con matrices para trabajar con cualquier número de valores rápidamente. Si desea tener control exacto sobre lo que sucede con algunas partes y en qué orden, una matriz debe estar codificada con valores específicos.
Para trabajar con muchas partes donde el orden no importa, GetChildren () puede crear una matriz de los hijos de un objeto. Usando ipairs(), la lista se puede iterar rápidamente sin saber el tamaño de la matriz/lista.