# I want to know how to calculate distance from one object to another

I am making a tool that changing colors of the player’s body parts with a tool, I have not made the server-side part yet but I want to know how I can calculate the distance between the player and the target.

Script:

``````
script.Parent.Parent.Activated:Connect(function()
local mouse = game.Players.LocalPlayer:GetMouse()
if mouse.Target and mouse.Target.Parent:FindFirstChild("Humanoid")  then
mouse.Target.BrickColor = BrickColor.Random()
mouse.Target.Parent.Humanoid:TakeDamage(1)
end
end)
``````

I WILL SETUP SERVER-SIDE LATER.

This is the ideal use for `Magnitude`:

``````local self = game.Players.LocalPlayer.HumanoidRootPart.Position
local target = mouse.Target.Position
local distance = (target - self).Magnitude
``````

I haven’t done a benchmark for it in literal years, but as Magnitude involves a square-root calculation, it can (and definitely used to be!) significantly more efficient to manually calculate the sum of the Vector’s components’ squares. I.e.:

``````local maxDistanceSq = 25^2
local t = (target - self)
local distanceSq = t.X^2 + t.Y^2 + t.Z^2
if distanceSq > maxDistanceSq then
print("Distance more than 25 studs")
else
print("Distance less than or equal to 25 studs")
end
``````

This is almost never a problem, and I stress that I have not checked if this is actually better in years.

A similar micro-optimization that I’m almost certain you never need to do is replacing that exponentiation with multiplication. I.e. `25*25` instead of `25^2`

4 Likes