Hello, I have a problem with a script. It works perfectly, but when my script starts to write a dialog, some letters are not positioned correctly
Script function: The script divides the text into separate parts, and puts them into a holder (the holder contains UIList, which puts the letters in order).
dialogue File:
dialogueGui.rbxm (8.9 KB)
When my script capitalizes a letter, or the letter is too big, it doesn’t look nice in my dialog script. How can I fix this?
When I put TextScaled - it doesn’t help, the letters become not beautiful and even more not even. And if I use TextSize - I need to make the letters too small - to make it look normal.
Script:
local TS = game:GetService("TweenService")
local GUI = script.Parent
local Holder = GUI:FindFirstChild("DialogueHolder")
local writeSettings = {
["waitToNext"] = .05,
["Style"] = 3,
}
local ignoreSplitedTXT = {
[1] = "",
[2] = " "
}
local currText = "While searching for a list of english words (for an auto-complete tutorial) I found:"
local function writeEffect(txt)
local createEffect = coroutine.wrap(function()
if writeSettings.Style == 1 then
local t1 = TS:Create(txt:FindFirstChild("UIScale"),TweenInfo.new(writeSettings.waitToNext * 1.4,Enum.EasingStyle.Quad,Enum.EasingDirection.Out),{Scale = .88})
t1:Play()
t1.Completed:Wait()
local t2 = TS:Create(txt:FindFirstChild("UIScale"),TweenInfo.new(writeSettings.waitToNext * 1.2,Enum.EasingStyle.Quad,Enum.EasingDirection.Out),{Scale = 1})
t2:Play()
t2.Completed:Wait()
elseif writeSettings.Style == 2 then
local t1 = TS:Create(txt:FindFirstChild("UIScale"),TweenInfo.new(writeSettings.waitToNext * 2.4,Enum.EasingStyle.Quad,Enum.EasingDirection.Out),{Scale = .88})
t1:Play()
t1.Completed:Wait()
local t2 = TS:Create(txt:FindFirstChild("UIScale"),TweenInfo.new(writeSettings.waitToNext * 2.2,Enum.EasingStyle.Quad,Enum.EasingDirection.Out),{Scale = 1})
t2:Play()
t2.Completed:Wait()
elseif writeSettings.Style == 3 then
local t1 = TS:Create(txt:FindFirstChild("UIScale"),TweenInfo.new(writeSettings.waitToNext * 1.4,Enum.EasingStyle.Quad,Enum.EasingDirection.Out),{Scale = .88})
t1:Play()
t1.Completed:Wait()
local t2 = TS:Create(txt:FindFirstChild("UIScale"),TweenInfo.new(writeSettings.waitToNext * 1.2,Enum.EasingStyle.Quad,Enum.EasingDirection.Out),{Scale = 1.15})
t2:Play()
t2.Completed:Wait()
local t3 = TS:Create(txt:FindFirstChild("UIScale"),TweenInfo.new(writeSettings.waitToNext * 1.7,Enum.EasingStyle.Quad,Enum.EasingDirection.Out),{Scale = 1})
t3:Play()
t3.Completed:Wait()
end
end)
createEffect()
end
local function soundEffect(splitedTxt)
if not table.find(ignoreSplitedTXT,splitedTxt) then
script:FindFirstChild("SoundEffect"):Play()
end
end
local function printThis()
local SplitedText = string.split(currText,"")
for _,v in SplitedText do
local txt = script:FindFirstChild("Clone"):Clone()
txt.Text = v
txt.Parent = Holder
soundEffect(v)
writeEffect(txt)
if v == "," then
task.wait(writeSettings.waitToNext + .17)
elseif v == "." then
task.wait(writeSettings.waitToNext + .25)
elseif v == ":" then
task.wait(writeSettings.waitToNext + .20)
elseif v == "-" then
task.wait(writeSettings.waitToNext + .15)
elseif v == " " then
task.wait(writeSettings.waitToNext + .015)
else
task.wait(writeSettings.waitToNext)
end
end
end
wait(1)
printThis()