Roblox · Дополнительное

Трамплин

Наступил — подбрасывает высоко вверх, разбег сохраняется. Наклони трамплин — и он бросит в сторону наклона.

Структура

Синим — что нужно создать.

Workspace
└─ Trampoline (Model) — PrimaryPart = Frame; наклон модели = направление броска
   ├─ Frame (Part) — рама, Anchored
   ├─ Pad (Part) — сетка сверху рамы, Anchored
   │  └─ Boing (Sound) — звук пружины
   ├─ Configuration (Configuration)
   │  └─ Power (NumberValue) — сила подброса, 100
   └─ TrampolineServer (Script)

Шаги

  1. Workspace → «+» → Model, переименуй в Trampoline. Трамплин — модель: рама и сетка, поворачиваются и переносятся вместе.
  2. В Trampoline: «+» → Part, переименуй в Frame — рама. Size — 6, 1, 6; Anchored — вкл.; тёмный цвет.
  3. В Trampoline: «+» → Part, переименуй в Pad — упругая сетка. Size — 5, 0.3, 5; Anchored — вкл.; яркий цвет. Поставь сверху на раму, по центру. Можно добавить ножки и пружины — это просто украшение, скрипт следит только за Pad.
  4. Выдели модель Trampoline → в Properties PrimaryPart → нажми на Frame в Explorer: за главную деталь модель поворачивают целиком.
  5. Configuration — папка для настроек (как Folder, значок шестерёнки): наведи на Trampoline → «+» → Configuration. Внутри создай по списку: «+» → NumberValue (если в скобках другой тип — его) → переименуй → в Properties впиши Value:
    • Power = 100 — сила подброса: 100 — около 25 studs вверх, 150 — около 55
  6. Звук: Toolbox → вкладка Audio → «Boing» или «Spring» → перетащи в Pad, переименуй в Boing.
  7. В Trampoline: «+» → Script, переименуй в TrampolineServer, вставь текст TrampolineServer из «Скриптов».
  8. Как работает: касание ловит Pad; толкает LinearVelocity 0,15 секунды — так сервер может подбросить и игрока, чью физику считает его компьютер.
  9. Направление — «верх» сетки (UpVector): выдели модель Trampoline и поверни её целиком на 30–45° инструментом Rotate —рама и сетка наклонятся вместе, получится катапульта в сторону.
  10. Высота прыжка примерно Power² ÷ 400: Power 100 — около 25 studs, Power 150 — около 55.

Скрипты

TrampolineServer

Где: Workspace → Trampoline · Script
Зачем: Подбрасывает наступившего вверх по наклону трамплина.

-- трамплин — модель: рама Frame и сетка Pad
local trampoline = script.Parent
-- упругая сетка: на неё прыгают
local pad = trampoline:WaitForChild("Pad")
-- сила подброса
local config = trampoline:WaitForChild("Configuration")
-- звук пружины — в сетке
local boing = pad:WaitForChild("Boing")
-- удаление по таймеру
local Debris = game:GetService("Debris")

-- на трамплин что-то наступило
pad.Touched:Connect(function(otherPart)
    -- модель, которой принадлежит деталь
    local model = otherPart:FindFirstAncestorOfClass("Model")
    -- живая?
    local humanoid = model and model:FindFirstChildOfClass("Humanoid")
    -- центр персонажа
    local root = model and model:FindFirstChild("HumanoidRootPart")
    -- не живая — пропускаем
    if not humanoid or not root or humanoid.Health <= 0 then return end
    -- только что подбросило — не повторяем
    if os.clock() - (model:GetAttribute("BouncedAt") or 0) < 0.5 then return end
    -- запоминаем время
    model:SetAttribute("BouncedAt", os.clock())
    -- точка приложения
    local attachment = Instance.new("Attachment")
    -- в центр персонажа
    attachment.Parent = root
    -- толчок; работает и на игроках
    local push = Instance.new("LinearVelocity")
    -- куда приложен
    push.Attachment0 = attachment
    -- без ограничения силы
    push.MaxForce = math.huge
    -- скорость бега по земле — сохраняем её
    local run = root.AssemblyLinearVelocity * Vector3.new(1, 0, 1)
    -- вверх по наклону сетки + разбег
    push.VectorVelocity = pad.CFrame.UpVector * config.Power.Value + run
    -- толкаем
    push.Parent = root
    -- толчок короткий
    Debris:AddItem(push, 0.15)
    -- убираем и точку
    Debris:AddItem(attachment, 0.15)
    -- звук
    boing:Play()
-- конец обработчика
end)

Проверка

Запусти Play (или Run) и убедись:

Собрать трамплин одной командой