So I have a script below which is supposed to separate parts when the spawn in to ensure they will not be clumped together, and while it does this partly, for some reason there is a set of parts that have only part of the check complete and they were still placed.
Cords of parts: Part1: (35, 3.5, 32) [] Part2: (31, 3.5, 77) [] As you can see, only the Z-Cords are not within the range I set, while the X-Cords are too close together. I would reccomend checking out line 21 as this is where the check is to see the ranges.
Script in question:
local players = game:GetService("Players") local replstor = game:GetService("ReplicatedStorage") local orb = replstor.PointOrb local redorb = replstor.RedPointOrb local blueorb = replstor.BluePointOrb players.PlayerAdded:Connect(function() local function Orbspawn(OrbType, MinOrb, MaxOrb, MinRad, MaxRad) local lastorbpos local orbnum = 1 local orbamount = math.random(MinOrb,MaxOrb) for i = 1, orbamount do local orbclone = OrbType:Clone() orbclone.Parent = workspace.Orbs if orbnum == 1 then orbclone.Position = Vector3.new(math.random(MinRad,MaxRad), 3.5, math.random(MinRad,MaxRad)) lastorbpos = orbclone.Position orbnum += 1 else local chosen = false while not chosen do local randpos = Vector3.new(math.random(MinRad,MaxRad), 3.5, math.random(MinRad,MaxRad)) if randpos.X > lastorbpos.X + 16 or randpos.X < lastorbpos.X - 16 then if randpos.Z > lastorbpos.Z + 16 or randpos.Z < lastorbpos.Z - 16 then orbclone.Position = randpos lastorbpos = randpos orbnum += 1 chosen = true else chosen = false end else chosen = false end end end end end Orbspawn(orb, 5, 10, -200, 200) Orbspawn(redorb, 3, 5, -200, 200) Orbspawn(blueorb, 1, 2, -200, 200) end)