Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

My script that judges distance of blocks in a group and the closest one is printed is not working?

Im trying to make something judging by the distance of the parts, here is what I have so far,

local lastdist, lastv, closestdist
group = script.Parent

for i,v in pairs(group:GetChildren()) do
    lastdist = distance
    distance = (game.Players.LocalPlayer.Character.Torso.Position - v.Position).magnitude
    if lastv ~= nil then
        lastdist = (game.Players.LocalPlayer.Character.Torso.Position - lastv.Position).magnitude
    end
    if lastdist ~= nil and distance < lastdist then
        closestdist = distance
    end
    lastv = v
end
print(closestdist)

There is no error but it isnt printing it. Please help!

PS: it's in a local script

1 answer

✓ Accepted answer

You have no defined distance so lastdist = distance will be nil each time. Since you check that lastdist ~= nil closestdist is never assigned a value meaning it will be nil each time.

I feel that you are over complicating this. We only need to store the players position, the closest part part and distance ( so we do not need to calculate it each time) then loop and check each parts position.

Example:-

-- you should make a function if you use the code more than once
local function findClosestPart(group, position)
	local closestPart, closestPartMagnitude
	
	local tmpMagnitude -- to store our calculation 
	for i, v in pairs(group:GetChildren()) do
		if closestPart then -- we have a part
			tmpMagnitude = (position - v.Position).magnitude
			
			-- check the next part
			if tmpMagnitude < closestPartMagnitude then
				closestPart = v
				closestPartMagnitude = tmpMagnitude 
			end
		else
			-- our first part
			closestPart = v
			closestPartMagnitude = (position - v.Position).magnitude
		end
	end
	return closestPart, closestPartMagnitude
end

print(findClosestPart(script.Parent, game.Players.LocalPlayer.Character.Torso.Position))

I hope this helps.

1 comment

0

thanks!

This discussion is preserved as it was. New answers, comments, and votes are closed.