Roblox Studio跳过for循环

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

for y = 0math.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 = 0math.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,00)
end
for z = 0math.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(00,steps)
end

每当我在roblox studio上运行脚本时,它会跳过Y的循环和Z的循环,仅运行X的循环。任何想法为什么?

点赞
用户5373986
用户5373986

正如 @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 只是去掉了负号。

2018-10-01 08:53:10