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

Is there a way to always start at 0 using math.sin() Lua

编辑:这个问题是关于 Roblox Lua 的。

我正在使用 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 之间的任意数字开始。

我采用了不同的方法并想出了这个。它做的正是我想用 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

致 non-Roblox 用户:tick() returns the local UNIX time. 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