Lua 使数字过渡平滑

Lua 使数字过渡平滑,lua,Lua,我有一个变量,当调用函数时,它会乘以1.01。我想要的是,不要仅仅看到变量“跳跃”到另一个值,而是看到它平稳地逐渐增加,直到它达到那个值 例如: x = 1000 function gets called x = x * 1.01 --> x value is now 1010, but when I show it on screen, I would like it to go 1000, 1001, 1002,...,1010 in certain amou

我有一个变量,当调用函数时,它会乘以1.01。我想要的是,不要仅仅看到变量“跳跃”到另一个值,而是看到它平稳地逐渐增加,直到它达到那个值

例如:

    x = 1000
    function gets called
    x = x * 1.01 
--> x value is now 1010, but when I show it on screen, I would like it to go 1000, 1001, 1002,...,1010 in certain amount of time
--> instead of just 1000 -> 1010
到目前为止,我的代码是:

function Multiply()
                local random = math.random(1, 102)
                    if random ~= 1 then
                        Multiplier = Multiplier * 1.01
                        MultiplierDisplay.text = "x" .. string.format("%.3f", Multiplier)

                        Gain = Multiplier * PlaceYourBetTextField.text - PlaceYourBetTextField.text
                        GainDisplay.text = "Gain: " .. string.format("%.0f", Gain)
                    else
                        timer.cancel(MultiplyTimer)
                        Multiplier = 1
                    end
                end
                MultiplyTimer = timer.performWithDelay(125, Multiply, 0)

您必须选择完成此转换所需的时间。 我假设,因为你在乘法,你会想要一个恒定的几何变化,而不是一个恒定的算术变化

你会的

local x=1000

local x0=0
local x1=0
local time0=0
local time1=0

local function changex(newx,time)
    x0=x
    x1=newx
    time0=os.clock()
    time1=time0+time
end
然后是主循环:

while true do
    local t=os.clock()
    if t<time0 then
        x=x0
    elseif t<time1 then
        local tratio=(t-time0)/(time1-time0)
        x=x0*(x1/x0)^tratio
    else
        x=x1
    end
    pause()
end
为true时执行
本地t=os.clock()

如果曹。。。编辑:我重新措辞了我的问题,我问错了,很抱歉。我不知道该怎么做。。。当我的函数将大数相乘时,它只是从10000跳到10100。我想一个接一个去。这有点难以解释。。。希望有人能做到。我完全理解你的问题。我的问题是你做了什么来试图解决它?显然,您不会认为数字会神奇地接受中间值,因此显然您需要编写一些代码来实现这一点。您试图编写什么代码来实现这一点?你尝试过什么算法?我尝试过使用transition.to,但显然不起作用。我还试着把定时器的延迟时间改为50毫秒,但这对我的需要来说太快了。我将编辑我的帖子,这样你们就可以检查我的函数了。for循环应该是一个相当简单但非常有效的解决方案。