Roblox · Сбор-а-тон · урок 5
Карта большая — добавим быстрые перемещения: список мест с картинками, клик переносит туда.
Синим — что добавляем на этом уроке.
Workspace └─ Teleports (Folder) └─ Лес (Part) — площадка, имя = название места └─ Decal (Decal) — картинка места StarterGui └─ ListGui (ScreenGui) ├─ TeleportButton (TextButton) — «Карта» ├─ TeleportFrame (Frame) — Visible выкл. │ └─ ScrollingList (ScrollingFrame) — UIGridLayout │ └─ Sample (Frame) — шаблон: LocationImage (ImageButton), LocationName └─ TeleportLocal (LocalScript)
Где: StarterGui → ListGui · LocalScript
Зачем: Список мест и перенос.
-- игроки
local Players = game:GetService("Players")
-- этот игрок
local player = Players.LocalPlayer
-- точки телепорта
local teleports = workspace:WaitForChild("Teleports")
-- ListGui
local gui = script.Parent
-- кнопка карты
local button = gui:WaitForChild("TeleportButton")
-- список мест
local frame = gui:WaitForChild("TeleportFrame")
-- прокрутка
local scrolling = frame:WaitForChild("ScrollingList")
-- шаблон
local sample = scrolling:WaitForChild("Sample")
-- кнопка
button.MouseButton1Click:Connect(function()
-- открыть / закрыть
frame.Visible = not frame.Visible
-- конец функции
end)
-- каждое место
for _, point in ipairs(teleports:GetChildren()) do
-- копия шаблона
local card = sample:Clone()
-- имя
card.Name = point.Name
-- подпись
card.LocationName.Text = point.Name
-- картинка места
local decal = point:FindFirstChildOfClass("Decal")
-- на кнопку
card.LocationImage.Image = decal and decal.Texture or ""
-- фон — цвет площадки
card.LocationImage.BackgroundColor3 = point.Color
-- показываем
card.Visible = true
-- в список
card.Parent = scrolling
-- клик по месту
card.LocationImage.MouseButton1Click:Connect(function()
-- персонаж
local character = player.Character
-- он есть
if character and character:FindFirstChild("HumanoidRootPart") then
-- переносим целиком над площадкой
character:PivotTo(point.CFrame + Vector3.new(0, 4, 0))
-- закрываем список
frame.Visible = false
-- конец проверки
end
-- конец функции
end)
-- конец перебора
endЗапусти Play (или Run) и убедись: