Una torre aleatoria
Lección 3 de 18 del curso Juego de Roblox: Torre infinita de Coddy.
Una torre con la misma etapa cinco veces no es divertida. ServerStorage.Stages contiene siete tipos: Steps, KillBricks, Conveyor, VanishingSteps, Bounce, Spinner y Lasers. Elige uno al azar para cada piso:
local all = stages:GetChildren()
local stage = all[math.random(1, #all)]math.random(1, #all) es un número entero del 1 al número de etapas, así que todas tienen la misma probabilidad. La mayoría todavía no hace nada: sus spinners, cintas y láseres cobrarán vida en el próximo capítulo.
Encima de la última etapa va ServerStorage.Finish, una plataforma dorada donde termina la subida. stack ya levanta cualquier Model, así que también levanta Finish.
Desafío
Fácil- Escribe
pickStage(): devuelve un elemento secundario aleatorio destages. - En
buildTower, apilapickStage()en lugar destages.Steps. - Después del bucle, apila
ServerStorage.Finishen la parte superior.
Pulsa Play varias veces: cada torre es diferente. Después, Check.
Pruébalo tú mismo
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Settings = require(game.ReplicatedStorage.Settings)
local stages = ServerStorage.Stages
local tower = nil
print("Each tower has " .. Settings.StageCount .. " stages")
-- Cada jugador recibe Wins en la tabla de clasificación
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local wins = Instance.new("IntValue")
wins.Name = "Wins"
wins.Parent = leaderstats
end)
-- Coloca una copia de un modelo encima de la torre; devuelve la copia y la nueva altura máxima
local function stack(template, bottom)
local copy = template:Clone()
local box, size = copy:GetBoundingBox()
local lift = bottom - (box.Position.Y - size.Y / 2)
copy:PivotTo(copy:GetPivot() + Vector3.new(0, lift, 0))
copy.Parent = tower
return copy, bottom + size.Y
end
-- Construye una torre con la etapa Steps
local function buildTower()
tower = Instance.new("Model")
tower.Name = "Tower"
tower.Parent = workspace
local top = 0
for i = 1, Settings.StageCount do
local stage, newTop = stack(stages.Steps, top)
top = newTop
end
end
buildTower()
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.