Hey everyone! So I don’t have a script but I do have a question. I am making a tycoon right now and I want when a button is touched, another button fades in so they can buy more things. I have thought about, how to do it but I could never come to a solution. Does anyone know what I could do to make this happen?
A quick example:
local button1 = part
local button2 = part
local button2On = false
local button1On = true
button1.Touched:Connect(function()
if button1On == true then -- Checks if it's on
do stuff
button1On = false -- turns it off
button2On = true -- turns 2nd button on
end)
button2.Touched:Connect(function()
if button2On == true then -- checks if it's on
do stuff
button2On = false -- turns 2nd button off
end)
Also, if you want things to fade in use tweens. Tween is short for inbetween, it’s basically interpolation. An example:
local result = {}
result.Transparency = 0 -- Makes our goal transparency 0
local info = TweenInfo.New(time) -- Creates tween info, much more options but they are optional
local tween = game:GetService("TweenService"):Create(button, info, result) -- Creates a tween for button with info as the TweenInfo and result as the goal
tween:Play()
I was thinking about using TweenService, but is there a way to make a tween and use it for all of the buttons? Because I don’t want to have to make 40 tweens.
Well, you could make one goal table and one info table. But you have to do Service:Create for each one. For example you could do:
local goal = {}
etc etc
local info = TweenInfo.New(etc etc)
-- Then make multiple for different buttons
local tween1 = Service:Create(button1, info, goal)
local tween2 = Service:Create(button2, info, goal)
Assuming you’re using a different script for every single button, I would use a module to Tween. If you created a TweenHandler module, you could create one method to tween everything.
Setup
local TweenHandler = {}
--// Services
local TweenService = game:GetService("TweenService")
--// Functions
function TweenHandler:TweenPart(part) --// Tween given instance
local Tween = TweenService:Create(part, TweenInfo.new(--[[Whatever tweeninfo you want for all of them]]--, {--[[Whatever tween value you are using--]]
end
return TweenHandler
This module would fire the same exact tween for all of your buttons. As long as it’s required.
Usage
--// Modules
local TweenHandler = require(game.ReplicatedStorage.TweenHandler)
--// Constants
local CURRENT_PART = game.Workspace.p1
local NEXT_PART = game.Workspace.p2
--// Event handler
CURRENT_PART.Touched:Connect(function(hit)
if game.Players:GetPlayerFromCharacter(hit.Parent) then
CURRENT_PART:Destroy()
TweenHandler:TweenPart(NEXT_PART)
end
end)
This is a super rough example, but it should get the point across of how to make the fade you want.
ohhhhh, that makes a lot of sense, I didn’t even know that tweenhandler was a thing, thanks :))
For some odd reason, it doesn’t fade out.
This is the script I made
local TweenHandler = {}
local TweenService = game:GetService("TweenService")
function TweenHandler:TweenPart(part)
local info = TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out)
local Tween = TweenService:Create(part, info, {Transparency = 1})
end
return TweenHandler
Then this one
local TweenHandler = require(game.ReplicatedStorage.TweenHandler)
local part = game.Workspace.button
part.Touched:Connect(function(hit)
if game.Players:GetPlayerFromCharacter(hit.Parent) then
TweenHandler:TweenPart(part)
end
end)
I know I didn’t add the other part i just wanted to test out the fade.
Where is the TweenHandler and what type of script is it?
I put the tween info and all of that in the module in rep then I made a script inside of the part.