有没有办法在Lua中使用math.sin()始终从0开始?

我正在使用 math.sin(tick()) 获取变量数字,希望它始终从 0 开始。使用 math.sin 可以实现吗?除了 tick() 之外,还有其他方法可以实现这一点吗?

例如:

for i = 1, 10 do
    local a = math.sin(tick())+1
    print(a)
    wait()
end
wait(1)
for i = 1, 10 do
    local a = math.sin(tick())+1
    print(a)
    wait()
end

我的目标是每次从 0 开始,然后逐渐增加。因此,数字将从 0 开始,然后增加到 2,然后再减少到零,并继续在 0 和 2 之间调制,只要我继续调用它。在上面的例子中,该数字从 0 到 2 之间的任意数字开始。

点赞
用户4444615
用户4444615

我采用了不同的方法,并得出了这个结果。它完全实现了我想用 math.sin(tick()) 实现的功能。如果有人知道其他实现方法,请告诉我。

    local n = 0
    local m = 0
    local Debounce = true

    local function SmoothStep(num)
        return num * num * (3 - 2 * num)
    end

    while Debounce do
        for i = 1, 100 do
            wait()
            m = m+.01
            n = SmoothStep(m)
            print(n)
            if not Debounce then break end
        end

        for i = 1, 100 do
            wait()
            m = m+.01
            n = SmoothStep(m)
            print(n)
            if not Debounce then break end
        end
    end
2016-01-26 02:05:54
用户4804152
用户4804152

对于非 Roblox 用户:tick() 返回本地 UNIX 时间。wait(t) 会使当前线程暂停 t 秒,最小间隔约为 1/30 秒。

考虑到 math.sin(0) 等于 0,您需要在循环中通过减去循环开始时的时间和 tick() 来得到表达式内部的值,从而让 math.sin 在循环开始时大约从 0 开始。

local loopstart = tick()
for i = 1, 10 do
    local a = math.sin(tick() - loopstart)+1
    print(a)
    wait()
end
2016-01-27 08:14:38