我有一个脚本,可以逐步将玩家传送到一部分:
$ 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循环。知道为什么吗?
答案 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