Maybe make a textlabel each time you collect money , set the text to the collected amount, randomise the position and tween it to move up. Also adding a coroutine can help so it doesn’t overlap.
I made a quick system, Its a bit scuffed, but you can change it however you want.
local TweenService = game:GetService("TweenService")-- Get TweenService
local info = TweenInfo.new(3)--Define tween info, edit this how you like.
local TextBox = script.Parent-- reference the template(text box)
local function moneytext()-- make a new function
local RandomCurrencyAmount = math.random(10, 250)--randomize the amount of money, set this to what you need
local Text = RandomCurrencyAmount.."$"-- add a dollar sign at the end
local TextBox2 = TextBox:Clone()-- clone the template
TextBox2.Parent = TextBox.Parent--set the parent to the screengui
TextBox2.Text = Text-- set the text to the amount
TextBox2.Position = UDim2.new(0, math.random(100, 700), 0, math.random(100, 300))--randomize the position on the screen
TextBox2.TextTransparency = 0-- make the text appear
task.wait(0.3)--wait a little
TweenService:Create(TextBox2, info, {Position = TextBox2.Position+UDim2.new(0,0,-1,0)}):Play()-- move the text up
task.wait(0.8)-- wait a little
TextBox2:Destroy()--destroy the text
TextBox:Destroy()-- destroy the template
end
while task.wait(0.5) do-- loop
moneytext()
end