Sorry for the confusing title. What I am trying to do is get the general speed at which the part is moving at. For example if the part’s velocity is Vector3.new(5, -5, 5) the general speed of the part would be 15. math.abs(x) + math.abs(y) + math.abs(z)

However when I try to do that to my character by accessing the HumanoidRootPart velocity (yes I know about MoveDirection I can’t use that for this) I run into a problem. When moving at the same speed in different directions the general speed is inconsistent. Am I doing something wrong with the calculation?

local Velocity = (HumanoidRootPart.Velocity * Vector3.new(1,0,0)).Magnitude
for checking speed of car
local Velocity = (HumanoidRootPart.Velocity * Vector3.new(0,0,1)).Magnitude
for checking helicopters speed of going sideways

No, all the multiplication is doing is devaluing different axises for the .Magnitude calculation.

If you look at a plane then you can see that a car could move diagonally thus changing the X & Z velocities. So it would be pretty safe to ignore the Y Axis * Vector3.new(1,0,1) but if you were monitoring a rocket ship then how fast it is going up is probably the most import thing to you * Vector3.new(0,1,0)