Roblox Studio 跳过循环
Posted
技术标签:
【中文标题】Roblox Studio 跳过循环【英文标题】:Roblox Studio skipping for loops 【发布时间】:2019-03-05 11:34:53 【问题描述】:我有一个脚本可以逐渐将玩家传送到某个部分:
for y = 0, math.floor((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
for x = 0, math.floor((part.X-player.X)/steps), 1 do
wait(0.3)
print "2"
game.Players:FindFirstChild(username).Character.HumanoidRootPart.CFrame = game.Players:FindFirstChild(username).Character.HumanoidRootPart.CFrame + Vector3.new(steps, 0, 0)
end
for z = 0, math.floor((part.Z-player.Z)/steps), 1 do
wait(0.3)
print "3"
game.Players:FindFirstChild(username).Character.HumanoidRootPart.CFrame = game.Players:FindFirstChild(username).Character.HumanoidRootPart.CFrame + Vector3.new(0, 0, steps)
end
每当我在 roblox studio 上运行脚本时,它都会跳过 Y for 循环和 Z for 循环,只运行 X for 循环。知道为什么吗?
【问题讨论】:
因为part.Y < player.Y
和part.Z < player.Z
@EgorSkriptunoff 谢谢!
【参考方案1】:
正如@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
只是去掉了负号。
【讨论】:
【参考方案2】:使用名为“math.abs”的命令,它实际上将每个值转换为其绝对值。 虽然如果你的 for I 循环增加正 1,它永远不会达到那个值/永远不会开始那个循环,这里的代码可能对你有帮助:
对于 y = 0,math.floor(math.abs(part.Y-player.Y)/steps),1 做 等待(0.3) 打印(“1”) game.Players:FindFirstChild(username).Character.HumanoidRootPart.CFrame = game.Players:FindFirstChild(用户名).Character.HumanoidRootPart.CFrame + Vector3.new(0, 步骤, 0) 结束
【讨论】:
【参考方案3】: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
【讨论】:
请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助、质量更好,并且更有可能吸引投票以上是关于Roblox Studio 跳过循环的主要内容,如果未能解决你的问题,请参考以下文章