Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Создание экрана GUI
- local screenGui = Instance.new("ScreenGui")
- screenGui.Name = "ZoomExample"
- screenGui.Parent = game.Players.LocalPlayer:WaitForChild("PlayerGui")
- -- Создание большого фрейма
- local bigFrame = Instance.new("Frame")
- bigFrame.Name = "BigFrame"
- bigFrame.Size = UDim2.new(0, 300, 0, 300)
- bigFrame.Position = UDim2.new(0.5, -150, 0.5, -150)
- bigFrame.BackgroundColor3 = Color3.new(1, 0, 0) -- красный цвет
- bigFrame.Parent = screenGui
- -- Создание 10 маленьких фреймов внутри большого фрейма
- for i = 1, 10 do
- local smallFrame = Instance.new("Frame")
- smallFrame.Name = "SmallFrame" .. i
- smallFrame.Size = UDim2.new(0, 50, 0, 50)
- smallFrame.Position = UDim2.new(math.random(), 0, math.random(), 0)
- smallFrame.BackgroundColor3 = Color3.new(0, 1, 0) -- зелёный цвет
- smallFrame.Parent = bigFrame
- end
- -- Создание кнопки для переключения зума
- local zoomButton = Instance.new("TextButton")
- zoomButton.Name = "ZoomButton"
- zoomButton.Size = UDim2.new(0, 100, 0, 50)
- zoomButton.Position = UDim2.new(0.5, -50, 0.9, -25)
- zoomButton.Text = "Zoom In"
- zoomButton.Parent = screenGui
- local zoomedIn = false -- флаг для отслеживания состояния зума
- -- Функция для зума большого фрейма с параметрами силы и скорости
- local function zoomStep(zoomFactor, zoomTime)
- local startTime = tick()
- local initialSize = bigFrame.Size
- local targetSize = UDim2.new(initialSize.X.Scale * zoomFactor, initialSize.X.Offset * zoomFactor,
- initialSize.Y.Scale * zoomFactor, initialSize.Y.Offset * zoomFactor)
- local initialPosition = bigFrame.Position
- local targetPosition = UDim2.new(initialPosition.X.Scale, initialPosition.X.Offset - (targetSize.X.Offset - initialSize.X.Offset) / 2,
- initialPosition.Y.Scale, initialPosition.Y.Offset - (targetSize.Y.Offset - initialSize.Y.Offset) / 2)
- local function step()
- local elapsedTime = tick() - startTime
- if elapsedTime < zoomTime then
- local alpha = elapsedTime / zoomTime
- bigFrame.Size = UDim2.new(initialSize.X.Scale * (1 - alpha) + targetSize.X.Scale * alpha,
- initialSize.X.Offset * (1 - alpha) + targetSize.X.Offset * alpha,
- initialSize.Y.Scale * (1 - alpha) + targetSize.Y.Scale * alpha,
- initialSize.Y.Offset * (1 - alpha) + targetSize.Y.Offset * alpha)
- bigFrame.Position = UDim2.new(initialPosition.X.Scale * (1 - alpha) + targetPosition.X.Scale * alpha,
- initialPosition.X.Offset * (1 - alpha) + targetPosition.X.Offset * alpha,
- initialPosition.Y.Scale * (1 - alpha) + targetPosition.Y.Scale * alpha,
- initialPosition.Y.Offset * (1 - alpha) + targetPosition.Y.Offset * alpha)
- wait()
- step()
- else
- bigFrame.Size = targetSize
- bigFrame.Position = targetPosition
- end
- end
- step()
- end
- -- Обработчик нажатия на кнопку
- zoomButton.MouseButton1Click:Connect(function()
- if zoomedIn then
- zoomStep(1 / 1.5, 2) -- уменьшение зума в 1.5 раза за 2 секунды
- zoomButton.Text = "Zoom In"
- else
- zoomStep(1.5, 2) -- увеличение зума в 1.5 раза за 2 секунды
- zoomButton.Text = "Zoom Out"
- end
- zoomedIn = not zoomedIn -- переключение состояния зума
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement