local TweenService = game:GetService("TweenService") local AnimateObject = {} AnimateObject.__index = AnimateObject local AnimateStyles = { Hover = { ["Grow"] = function(Object, ChangeAmount) local OriginalSize = Object.Size local Amount = ChangeAmount or 0.01 Object.MouseEnter:Connect(function() Object:TweenSize( UDim2.new(Object.Size.X.Scale + Amount, 0, Object.Size.Y.Scale + Amount, 0), "In", "Quad", 0.1, true ) end) Object.MouseLeave:Connect(function() Object:TweenSize(OriginalSize, "In", "Quad", 0.1, true) end) end; ["Shrink"] = function(Object, ChangeAmount) local OriginalSize = Object.Size local Amount = ChangeAmount or 0.01 Object.MouseEnter:Connect(function() Object:TweenSize( UDim2.new(Object.Size.X.Scale - Amount, 0, Object.Size.Y.Scale - Amount, 0), "In", "Quad", 0.1, true ) end) Object.MouseLeave:Connect(function() Object:TweenSize(OriginalSize, "In", "Quad", 0.1, true) end) end; ["TextColor"] = function(Object, NewColor) local OriginalColor = Object.TextColor3 local Color = NewColor or Color3.fromRGB(0, 255, 0) Object.MouseEnter:Connect(function() Object.TextColor3 = Color end) Object.MouseLeave:Connect(function() Object.TextColor3 = OriginalColor end) end; ["BackgroundColor"] = function(Object, NewColor) local OriginalColor = Object.BackgroundColor3 local Color = NewColor or Color3.fromRGB(0, 255, 0) Object.MouseEnter:Connect(function() Object.BackgroundColor3 = Color end) Object.MouseLeave:Connect(function() Object.BackgroundColor3 = OriginalColor end) end; ["Rotate"] = function(Object, RotationAmount) --I will start by making a few variables: local OriginalRotation = Object.Rotation Object.MouseEnter:Connect(function() TweenService:Create(Object, TweenInfo.new(0.1,Enum.EasingStyle.Linear, Enum.EasingDirection.InOut, 0, false, 0), {Rotation = RotationAmount} ):Play() end) Object.MouseLeave:Connect(function() TweenService:Create(Object, TweenInfo.new(0.1,Enum.EasingStyle.Linear, Enum.EasingDirection.InOut, 0, false, 0), {Rotation = OriginalRotation} ):Play() end) end; }; LeftClick = { ["BackgroundColor"] = function(Object, NewColor) local OriginalColor = Object.BackgroundColor3 local Color = NewColor or Color3.fromRGB(0, 255, 0) Object.MouseButton1Down:Connect(function() Object.BackgroundColor3 = Color end) Object.MouseButton1Up:Connect(function() Object.BackgroundColor3 = OriginalColor end) end; ["Grow"] = function(Object, ChangeAmount) local OriginalSize = Object.Size local Amount = ChangeAmount or 0.01 Object.MouseButton1Down:Connect(function() Object:TweenSize( UDim2.new(Object.Size.X.Scale + Amount, 0, Object.Size.Y.Scale + Amount, 0), "In", "Quad", 0.1, true ) end) Object.MouseButton1Up:Connect(function() Object:TweenSize(OriginalSize, "In", "Quad", 0.1, true) end) end; ["Shrink"] = function(Object, ChangeAmount) local OriginalSize = Object.Size local Amount = ChangeAmount or 0.01 Object.MouseButton1Down:Connect(function() Object:TweenSize( UDim2.new(Object.Size.X.Scale - Amount, 0, Object.Size.Y.Scale - Amount, 0), "In", "Quad", 0.1, true ) end) Object.MouseButton1Up:Connect(function() Object:TweenSize(OriginalSize, "In", "Quad", 0.1, true) end) end; }; RighClick = { ["BackgroundColor"] = function(Object, NewColor) local OriginalColor = Object.BackgroundColor3 local Color = NewColor or Color3.fromRGB(0, 255, 0) Object.MouseButton2Down:Connect(function() Object.BackgroundColor3 = Color end) Object.MouseButton2Up:Connect(function() Object.BackgroundColor3 = OriginalColor end) end; ["Grow"] = function(Object, ChangeAmount) local OriginalSize = Object.Size local Amount = ChangeAmount or 0.01 Object.MouseButton2Down:Connect(function() Object:TweenSize( UDim2.new(Object.Size.X.Scale + Amount, 0, Object.Size.Y.Scale + Amount, 0), "In", "Quad", 0.1, true ) end) Object.MouseButton2Up:Connect(function() Object:TweenSize(OriginalSize, "In", "Quad", 0.1, true) end) end; ["Shrink"] = function(Object, ChangeAmount) local OriginalSize = Object.Size local Amount = ChangeAmount or 0.01 Object.MouseButton2Down:Connect(function() Object:TweenSize( UDim2.new(Object.Size.X.Scale - Amount, 0, Object.Size.Y.Scale - Amount, 0), "In", "Quad", 0.1, true ) end) Object.MouseButton2Up:Connect(function() Object:TweenSize(OriginalSize, "In", "Quad", 0.1, true) end) end; }; } function AnimateObject.new(Object) local self = setmetatable({}, AnimateObject) self.Object = Object return Object, self end function AnimateObject:Configuire(Action, Style, Change) local Object = self.Object local ChosenTween = AnimateStyles[Action][Style] ChosenTween(Object, Change) end return AnimateObject