【问题标题】:Is there a way to always start at 0 using math.sin() Lua有没有办法使用 math.sin() Lua 总是从 0 开始
【发布时间】:2016-05-02 11:24:56
【问题描述】:

编辑:这个问题是关于 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 之间的任意数字开始。

【问题讨论】:

  • tick 到底是什么?这不是标准的 Lua 函数。
  • @Nicol 这是一个 ROBLOX 函数,它返回自 1970 年 1 月 1 日以来的秒数(我认为)。也有一些小数位。
  • @NicolBolas 返回本地 UNIX 时间。
  • 基本上更精确的os.time
  • 如果你在第一次迭代时保存了tick()的值,你可以将tick() - start_time传递给math.sin()。这将以1.0 而不是0.0 开头,但它应该为您提供解决方案的起点。

标签: math lua roblox


【解决方案1】:

我采取了不同的方法并想出了这个。它完全符合我对 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

【讨论】:

  • 这不完全相同。如果您绘制打印值,您将看到三角波而不是正弦波。如果这符合您的目的,那很好。
  • 我明白了。这确实符合我的目的,但是是的,它并不完全相同。我正在对其进行编辑并添加一个 smoothstep 函数以使其更接近真正的正弦波。
【解决方案2】:

对于非 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

【讨论】:

  • 谢谢你,xaxa。这是使用 math.sin(tick()) 的有效解决方案。 @KeithThompson 提出了同样的建议,并且有效。它从 1 开始而不是 0,但最重要的部分是它每次都以相同的数字开始。完美的。我将把这个作为答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-03
相关资源
最近更新 更多