# Humanoids

## Move Direction

Humanoid.MoveDirection always returns a unit vector. If you want to get the actual raw input direction, you have to get it from the base controlmodule

```lua
local LocalPlayer = game:GetService('Players').LocalPlayer
local ControlModule = nil
game:GetService('RunService').Heartbeat:Connect(function()
	if not ControlModule then
		ControlModule = require(LocalPlayer:WaitForChild("PlayerScripts"):WaitForChild("PlayerModule"):WaitForChild("ControlModule"))
	end
	local MoveVector = ControlModule:GetMoveVector()
	print(MoveVector)
end)
```

{% hint style="warning" %}
The Magnitude of MoveVector is inconsistent between mapping schemes, so you have to cap it yourself, or risk having inconsistent values.\
\
<https://devforum.roblox.com/t/controlmodules-getmovevector-should-not-return-a-vector-with-a-length-greater-than-1/2316795>\
It is believed this may never get patched as some legacy games may require this odd behaviour
{% endhint %}

***

## States don't stay Disabled

Some Humanoid States, even when disabled Humanoid:SetStateEnabled(..., false), can still be set to this state internally. There's no guarantee when disabling the state that internally it won't try to go to that state anyways.<br>

Such states include: running, jumping, landed, freefall
