Menu
CoddyTech

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.

challenge icon

Desafío

Fácil
  1. Escribe pickStage(): devuelve un elemento secundario aleatorio de stages.
  2. En buildTower, apila pickStage() en lugar de stages.Steps.
  3. Después del bucle, apila ServerStorage.Finish en 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()
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Juego de Roblox: Torre infinita