Why is my humanoid state type never FallingDown?

I want to make something happen when my player is falling down, I’m doing something like this rn

if Humanoid:GetState() == Enum.HumanoidStateType.FallingDown then
   print("Humanoid is falling")
end

This never prints though, I tried with Freefall instead of FallingDown but it prints even if I’m jumping (and not falling down)

If you’re attempting to detect when a player is falling from a jump, I don’t think that’s what HumanoidStateType.FallingDown does apparently. I recently needed this and it seems as though FallingDown isn’t what I think it is? It’s either fired when it’s in a ragdoll state or something along the lines of that, I don’t remember exactly what I read.

But basically how I worked around this is using CFrame. Whenever a player jumps, store that CFrame inside a variable, then inside a renderstep, calculate the distance between the current CFrame and the stored CFrame.

--Sorry if there's any error in the code, I wrote directly from here.

local Connection;
local StartCFrame;
local HumanRP = path.HumanoidRootPart;

local function renderFalling()
    local toWorld = StartCFrame:toWorldSpace(HumanRP.CFrame); 
if (toWorld.p.Y < 1) then
    print("Landed"); Connection:Disconnect();
else
print("Humanoid 'Falling Down'");
    end;
end;

local function onJumpRequest()
    StartCFrame = HumanRP.CFrame;
    Connection = game:GetService("RunService").RenderStepped:Connect(renderFalling)
end;

2 Likes