Gui stays still in position when clicking on close and open button fast. How to fix?

Hello,
I want to make it so that nothing goes wrong when you close and open the gui frames fast.

Video:

Screenshot of Explorer:
image

I’ve tried putting wait(0.5) but I don’t really want people to wait just to open a menu.

ShowSettingsGUI Script:

local SettingsCornerTextButton = script.Parent
local CornerButtonFrame = script.Parent.Parent
local TweenService = game:GetService("TweenService")

local button = script.Parent --makes life easier
local frame = script.Parent.Parent -- same thing above
local SettingsGUI = game.Players.LocalPlayer.PlayerGui.SettingsGUI

local Popup = SettingsGUI.Popup
local PopupBackground = SettingsGUI.PopupBackground


Popup.Position = UDim2.new(0.346, 0, 0.201, 550)
PopupBackground.Position = UDim2.new(0.353, 0,0.212, 550)


button.Activated:Connect(function()
	frame:TweenPosition(UDim2.new(0.899, 0, 0.949, 80), Enum.EasingDirection.Out, Enum.EasingStyle.Quint)

	Popup:TweenPosition(UDim2.new(0.346, 0, 0.201, 0), Enum.EasingDirection.Out, Enum.EasingStyle.Quint, 0.5)

	PopupBackground:TweenPosition(UDim2.new(0.353, 0,0.212, 0), Enum.EasingDirection.Out, Enum.EasingStyle.Quint, 0.5)

end)

CloseSettingsGUI Script

local SettingsGUI = game.Players.LocalPlayer.PlayerGui.SettingsGUI
local CornerButtonFrame = SettingsGUI.CornerButtonFrame
local TweenService = game:GetService("TweenService")

local closeButton = script.Parent

local Popup = SettingsGUI.Popup
local PopupBackground = SettingsGUI.PopupBackground


closeButton.Activated:Connect(function()
	Popup:TweenPosition(UDim2.new(0.346, 0, 0.201, 550), Enum.EasingDirection.Out, Enum.EasingStyle.Quint, 0.5)

	PopupBackground:TweenPosition(UDim2.new(0.353, 0,0.212, 550), Enum.EasingDirection.Out, Enum.EasingStyle.Quint, 0.5)

	CornerButtonFrame:TweenPosition(UDim2.new(0.899, 0, 0.949, 0), Enum.EasingDirection.Out, Enum.EasingStyle.Quint)

end)

Thanks for helping me out!

Edit: Also, sorry if my scripting is messy, I’m new.

1 Like

You can simply add a debounce to it.

1 Like

Do you mean a wait(1)? 30chaaracrters

The nice thing about calling TweenPosition, is that it provides a fifth optional parameter (Which would override the current Tween if it was still playing)

I believe this should work :thinking:

local SettingsGUI = game.Players.LocalPlayer.PlayerGui.SettingsGUI
local CornerButtonFrame = SettingsGUI.CornerButtonFrame
local TweenService = game:GetService("TweenService")

local closeButton = script.Parent

local Popup = SettingsGUI.Popup
local PopupBackground = SettingsGUI.PopupBackground


closeButton.Activated:Connect(function()
	Popup:TweenPosition(UDim2.new(0.346, 0, 0.201, 550), Enum.EasingDirection.Out, Enum.EasingStyle.Quint, 0.5)
	PopupBackground:TweenPosition(UDim2.new(0.353, 0,0.212, 550), Enum.EasingDirection.Out, Enum.EasingStyle.Quint, 0.5)
	CornerButtonFrame:TweenPosition(UDim2.new(0.899, 0, 0.949, 0), Enum.EasingDirection.Out, Enum.EasingStyle.Quint, 1, true)
end)

2 Likes

You can read about debounces here.

1 Like

Thank you, I didn’t know this feature existed. Thank you to all those that have helped out!

Yeah, here’s the parameters for reference in case you need it again :wink:

1 Like