Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How would I repeat GetTouchingParts() until it is not touching a part?

Asked by
Ashedee 43
3 years ago

I made a script that spawns trees and then moves them if the leaves are touching other leaves. It spawns trees but I need it to repeat until the leaves are not touching

Excerpt of script

if Grnd.Material == Enum.Material.Grass and Grnd.BrickColor == BrickColor.new("Forest green") then
    for i = 1,10 do
    wait()
    treecopy = basetree:clone()
    treecopy.Parent = frm
    treecopy:SetPrimaryPartCFrame(Grnd.CFrame * CFrame.new(math.random(-25, 25), 0 + 5, (math.random(-25, 25))))
    local results = treecopy.Leaves:GetTouchingParts()
    local trees = {}
    for i, treeCluster in pairs(results) do
    table.insert(trees, treeCluster)
        if treeCluster.Name == "Leaves" then
            wait()
            treecopy:SetPrimaryPartCFrame(treecopy.Trunk.CFrame * CFrame.new(math.random(-5, 5), 0, (math.random(-5, 5))))
            treecopy.Leaves.BrickColor = BrickColor.new("Lime green")
            end
        end         
    end
end

I tried adding this after changing the color on line 14 but it doesn't work

repeat
treecopy:SetPrimaryPartCFrame(treecopy.Trunk.CFrame * CFrame.new(math.random(-5, 5), 0, (math.random(-5, 5))))
wait()
until treeCluster.Name ~= "Leaves"

And tried this also

until results ~= "Leaves"

This script does move it and change the color(so I can see which ones were moved) but it will still place the trees intersecting with other trees.

Answer this question