Roblox Studio пропускает петли - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть сценарий, который постепенно телепортирует игрока в часть:

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 для цикла и цикл Z для и запускает только X дляпетля.Есть идеи почему?

1 Ответ

0 голосов
/ 01 октября 2018

Как сказал @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 просто избавится от отрицательного символа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...