lua中for循环需要两个变量

我在尝试使用Lua代码制作roblox游戏,我想让圆柱体每隔0.0625秒变大,以制造一种震波效果,脚本的父级是圆柱体部件。

for i = 0,5,1 a = 1,0,-0.1 do
    script.Parent.Transparency = a
    script.Parent.Size = Vector3.new(script.Parent.Size.X, script.Parent.Size.Y = i, script.Parent.Size.Z = i)
end
点赞
用户2858170
用户2858170

你在 for 循环中只能有一个控制变量。如果你需要更多,你需要更多的循环或在循环体中管理另一个变量。

Lua 参考手册 3.3.5:for 语句 中可以看出:

for v = e1, e2, e3 do block end

等价于以下代码:

 do
   local var, limit, step = tonumber(e1), tonumber(e2), tonumber(e3)
   if not (var and limit and step) then error() end
   var = var - step
   while true do
     var = var + step
     if (step >= 0 and var > limit) or (step < 0 and var < limit) then
       break
     end
     local v = var
     block
   end
 end

请确保你理解了这个语法并从中派生出你的问题的解决方案。

假设你想在每次尺寸增加时降低透明度值,那么你应该使用嵌套循环。

for size = 1, 5 do
  script.Parent.Size = Vector3.new(script.Parent.Size.X, size, size)
  for transparency = 1, 0, -0.1 do
    script.Parent.Transparency = transparency
  end

end

我跳过了尺寸为 0 的情况,因为我假设尺寸为 0 的对象是不可见的,所以为什么要改变它们的透明度呢?

请注意,我修正了你代码中的语法错误。

script.Parent.Size = Vector3.new(script.Parent.Size.X,
                       script.Parent.Size.Y = i, script.Parent.Size.Z = i)

会导致一个 ')' expected near '=' 错误,因为你不能在一个函数调用中赋值。

2020-06-15 06:27:41