Roblox Studio跳过循环

时间:2018-09-29 21:43:53

标签: lua roblox

我有一个脚本,可以逐步将玩家传送到一部分:

$ time (clang -O0 -o loop10g loop10g.c && ./loop10g)
Sum is -9877432110

real    4m15.352s
user    3m47.232s
sys     0m3.252s

每当我在roblox studio上运行脚本时,它都会跳过Y for循环和Z for循环,而仅运行X for循环。知道为什么吗?

3 个答案:

答案 0 :(得分:0)

正如@Egor Skriptunoff所说,如果部件Y,X或Z值小于玩家的Y,X或Z值,则循环将不会运行。

解决此问题的一种简单方法是像这样在减法周围使用math.abs()方法,

for y = 0, math.floor(math.abs(part.Y-player.Y)/steps), 1 do
    wait(0.3)
    print "1"
    game.Players:FindFirstChild(username).Character.HumanoidRootPart.CFrame = game.Players:FindFirstChild(username).Character.HumanoidRootPart.CFrame + Vector3.new(0, steps, 0)
end

这可以确保结果始终为正,因为math.abs刚刚摆脱了负号。

答案 1 :(得分:0)

使用一个名为“ math.abs”的命令,它实际上将每个值转换为其绝对值。 如果您的for I循环以1为增量递增,则永远不会达到该值/永远不会开始该循环,以下代码可能会为您提供帮助:

对于y = 0,math.floor(math.abs(part.Y-player.Y)/ steps),1做 等待(0.3) 打印(“ 1”) game.Players:FindFirstChild(用户名).Character.HumanoidRootPart.CFrame = game.Players:FindFirstChild(用户名).Character.HumanoidRootPart.CFrame + Vector3.new(0,步骤,0) 结束

答案 2 :(得分:0)

for y = 0, math.floor(math.abs(part.Y-player.Y)/steps), 1 do
    wait(0.3)
    print "1"
    game.Players:FindFirstChild(username).Character.HumanoidRootPart.CFrame = game.Players:FindFirstChild(username).Character.HumanoidRootPart.CFrame + Vector3.new(0, steps, 0)
end