Lua Roblox Studio跳过循环
我有一个脚本,可以逐渐将玩家传送到一个角色:Lua Roblox Studio跳过循环,lua,roblox,Lua,Roblox,我有一个脚本,可以逐渐将玩家传送到一个角色: 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.CFr
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循环。知道为什么吗?正如@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
只是去掉了负号。使用名为“math.abs”的命令,它实际上会将每个值转换为其绝对值。
如果您的for I循环的增量为正1,则它永远不会达到该值/永远不会启动该循环,以下代码可能会帮助您:
对于y=0,math.floor(math.abs(part.y-player.y)/steps)为1
等待(0.3)
打印(“1”)
游戏。玩家:FindFirstChild(用户名)。Character.HumanoidRootPart.CFrame
=游戏。玩家:FindFirstChild(用户名)。Character.HumanoidRootPart.CFrame
+矢量3.新(0,步骤,0)
结束因为
part.Y
和part.Z
@EgorSkriptunoff谢谢!请不要只发布代码作为答案,还要解释代码的作用以及它是如何解决问题的。带有解释的答案通常更有帮助,质量更好,更容易吸引选票
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