如何在LUA中同时迭代多个范围

我有这种情况:

n1 = variable_1 -- 0,154
n2 = variable_2 -- 335565,418338
n3 = variable_3 -- -0.2,-3.2

for n1 = 0,154 do -- n1的范围
    -- 在n2和n3的范围内按比例增加/减少
end

我想在它们各自的范围内增加/减少n2和n3与n1一起变化,请问for循环是否是最好的解决方案?

原文链接 https://stackoverflow.com/questions/70951685

点赞
stackoverflow用户2858170
stackoverflow用户2858170

线性差值

function lerp(v0, v1, t)
  return (1 - t) * v0 + t * v1;
end

local n1 = {0, 154}
local n2 = {335565, 418338}
local n3 = {-0.2, -3.2}

for i = n1[1], n1[2] do
  local t = i / n1[2]
  print(i, lerp(n2[1], n2[2], t), lerp(n3[1], n3[2], t))
end

编辑

在我的实际脚本中,n1是一个已经声明变量的范围,命名为 the_speed, n2 的命名为 eng_pow_max,n3 的名称为 sidecant。我如何读取 the_speed 的值并将其写入 i?

for 循环只是打印整个间隔内的值。

你需要知道几件事情。

  1. 假设速度从 0 开始,最大速度
  2. eng_pow_max 的范围
  3. sidecant 的范围
  4. 要计算其他值的实际速度

首先,我们要计算速度比率。the_speed / max_speed 给出了介于 0 和 1 之间的值。

0 / 1540(0% 速度) 77/1540.5(50% 速度)

我希望你明白这个观点。

现在,我们可以使用 lerp 函数来计算其他两个值

local eng_pow = lerp(eng_pow_min, eng_pow_max, the_speed / max_speed)

local sidecant = lerp(side_cant_min, sidecant_max, the_speed / max_speed)
2022-02-02 07:56:06