Advertisement
ERROR_CODE

zoom frame

Dec 12th, 2024
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.79 KB | None | 0 0
  1. -- Создание экрана GUI
  2. local screenGui = Instance.new("ScreenGui")
  3. screenGui.Name = "ZoomExample"
  4. screenGui.Parent = game.Players.LocalPlayer:WaitForChild("PlayerGui")
  5.  
  6. -- Создание большого фрейма
  7. local bigFrame = Instance.new("Frame")
  8. bigFrame.Name = "BigFrame"
  9. bigFrame.Size = UDim2.new(0, 300, 0, 300)
  10. bigFrame.Position = UDim2.new(0.5, -150, 0.5, -150)
  11. bigFrame.BackgroundColor3 = Color3.new(1, 0, 0) -- красный цвет
  12. bigFrame.Parent = screenGui
  13.  
  14. -- Создание 10 маленьких фреймов внутри большого фрейма
  15. for i = 1, 10 do
  16.     local smallFrame = Instance.new("Frame")
  17.     smallFrame.Name = "SmallFrame" .. i
  18.     smallFrame.Size = UDim2.new(0, 50, 0, 50)
  19.     smallFrame.Position = UDim2.new(math.random(), 0, math.random(), 0)
  20.     smallFrame.BackgroundColor3 = Color3.new(0, 1, 0) -- зелёный цвет
  21.     smallFrame.Parent = bigFrame
  22. end
  23.  
  24. -- Создание кнопки для переключения зума
  25. local zoomButton = Instance.new("TextButton")
  26. zoomButton.Name = "ZoomButton"
  27. zoomButton.Size = UDim2.new(0, 100, 0, 50)
  28. zoomButton.Position = UDim2.new(0.5, -50, 0.9, -25)
  29. zoomButton.Text = "Zoom In"
  30. zoomButton.Parent = screenGui
  31.  
  32. local zoomedIn = false -- флаг для отслеживания состояния зума
  33.  
  34. -- Функция для зума большого фрейма с параметрами силы и скорости
  35. local function zoomStep(zoomFactor, zoomTime)
  36.     local startTime = tick()
  37.     local initialSize = bigFrame.Size
  38.     local targetSize = UDim2.new(initialSize.X.Scale * zoomFactor, initialSize.X.Offset * zoomFactor,
  39.                                  initialSize.Y.Scale * zoomFactor, initialSize.Y.Offset * zoomFactor)
  40.     local initialPosition = bigFrame.Position
  41.     local targetPosition = UDim2.new(initialPosition.X.Scale, initialPosition.X.Offset - (targetSize.X.Offset - initialSize.X.Offset) / 2,
  42.                                      initialPosition.Y.Scale, initialPosition.Y.Offset - (targetSize.Y.Offset - initialSize.Y.Offset) / 2)
  43.  
  44.     local function step()
  45.         local elapsedTime = tick() - startTime
  46.         if elapsedTime < zoomTime then
  47.             local alpha = elapsedTime / zoomTime
  48.             bigFrame.Size = UDim2.new(initialSize.X.Scale * (1 - alpha) + targetSize.X.Scale * alpha,
  49.                                       initialSize.X.Offset * (1 - alpha) + targetSize.X.Offset * alpha,
  50.                                       initialSize.Y.Scale * (1 - alpha) + targetSize.Y.Scale * alpha,
  51.                                       initialSize.Y.Offset * (1 - alpha) + targetSize.Y.Offset * alpha)
  52.             bigFrame.Position = UDim2.new(initialPosition.X.Scale * (1 - alpha) + targetPosition.X.Scale * alpha,
  53.                                           initialPosition.X.Offset * (1 - alpha) + targetPosition.X.Offset * alpha,
  54.                                           initialPosition.Y.Scale * (1 - alpha) + targetPosition.Y.Scale * alpha,
  55.                                           initialPosition.Y.Offset * (1 - alpha) + targetPosition.Y.Offset * alpha)
  56.             wait()
  57.             step()
  58.         else
  59.             bigFrame.Size = targetSize
  60.             bigFrame.Position = targetPosition
  61.         end
  62.     end
  63.  
  64.     step()
  65. end
  66.  
  67. -- Обработчик нажатия на кнопку
  68. zoomButton.MouseButton1Click:Connect(function()
  69.     if zoomedIn then
  70.         zoomStep(1 / 1.5, 2) -- уменьшение зума в 1.5 раза за 2 секунды
  71.         zoomButton.Text = "Zoom In"
  72.     else
  73.         zoomStep(1.5, 2) -- увеличение зума в 1.5 раза за 2 секунды
  74.         zoomButton.Text = "Zoom Out"
  75.     end
  76.     zoomedIn = not zoomedIn -- переключение состояния зума
  77. end)
  78.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement