Lua 是否可以同时更改不同数量的多个值?
我试图通过同时更改x、y和面积值来调整对象的大小和重新定位对象。 我可以通过运行3个单独的for循环一个接一个地执行这些操作,但是动画需要平滑,并且作为一个循环 我尝试在函数中嵌套另一个for循环,但这提供了与在下一个循环开始之前必须完成一个循环相同的结果。 我能找到的完成它的唯一方法是制作3个单独的脚本,并同时运行所有3个脚本Lua 是否可以同时更改不同数量的多个值?,lua,Lua,我试图通过同时更改x、y和面积值来调整对象的大小和重新定位对象。 我可以通过运行3个单独的for循环一个接一个地执行这些操作,但是动画需要平滑,并且作为一个循环 我尝试在函数中嵌套另一个for循环,但这提供了与在下一个循环开始之前必须完成一个循环相同的结果。 我能找到的完成它的唯一方法是制作3个单独的脚本,并同时运行所有3个脚本 SSxPOSA = 0.00 SSxPOSB = -12.00 SSyPOSA = 0.00 SSyPOSB = -6.55 SSsizeA = 1.00 S
SSxPOSA = 0.00
SSxPOSB = -12.00
SSyPOSA = 0.00
SSyPOSB = -6.55
SSsizeA = 1.00
SSsizeB = 0.2
function SSBox1X()
for i = SSxPOSA, SSxPOSB, 0.1
do
Object1X( i );
end;
end;
function SSBox1Y()
for i = SSyPOSA, SSyPOSB, 0.5
do
Object1Y( i );
end;
end;
function SSBox1Scale()
for i = SSsizeA, SSsizeB, 0.8
do
Object1Scale( i );
end;
end;
SSBox1X();
SSBox1Y();
SSBox1Scale();
很高兴阅读并学习最佳实践如果我正确理解了您的问题,类似的方法应该会奏效:
function xys()
local x, y, s = SSxPOSA, SSyPOSA, SSsizeA
return coroutine.wrap(
function()
while x >= SSxPOSB and y >= SSyPOSB and s >= SSsizeB do
coroutine.yield(x,y,s)
x = x - 0.1
y = y - 0.5
s = s - 0.8
end
end)
end
SSxPOSA = 0.00
SSxPOSB = -12.00
SSyPOSA = 0.00
SSyPOSB = -6.55
SSsizeA = 1.00
SSsizeB = 0.2
for x,y,s in xys() do
print(x,y,s)
--Object1X(x)
--Object1Y(y)
--Object1Scale(s)
end
而且,由于浮点比较并不总是产生预期的结果,因此在使用之前最好将其转换为整数并进行除法。像这样:
function xys()
local x, y, s = SSxPOSA, SSyPOSA, SSsizeA
return coroutine.wrap(
function()
while x >= SSxPOSB and y >= SSyPOSB and s >= SSsizeB do
coroutine.yield(x/100,y/100,s/100)
x = x - 10
y = y - 50
s = s - 80
end
end)
end
SSxPOSA = 0
SSxPOSB = -1200
SSyPOSA = 0
SSyPOSB = -655
SSsizeA = 100
SSsizeB = 20
for x,y,s in xys() do
print(x,y,s)
--Object1X(x)
--Object1Y(y)
--Object1Scale(s)
end
您也可以在不使用协同程序的情况下执行此操作:
function xys()
local x, y, s = SSxPOSA, SSyPOSA, SSsizeA
return function()
if x < SSxPOSB or y < SSyPOSB or s < SSsizeB then return end
local xx, yy, ss = x/100, y/100, s/100
x = x - 10
y = y - 50
s = s - 80
return xx,yy,ss
end
end
函数xys()
局部x,y,s=SSxPOSA,SSyPOSA,SSsizeA
返回函数()
如果x
这些函数都有什么作用?他们的结果何时可见?编写一个生成器函数来更改所有三个值,并在中用于。。。在
loop.BTW中,结束值低于开始值,因此步骤应为负数。