Directional Movement Works Weird

I want to achieve right directional movement system.
The issue is when I start moving forward left or backward right, my character’s legs start to move so weird
I tried changing my code but it doesn’t helped actually, I tried playing with values a bit but the problem is the same anyways.
Also is it possible that the problem is with the animations?

Script:

local RS = game:GetService("ReplicatedStorage")
local TS = game:GetService("TweenService")
local RunService = game:GetService("RunService")

local Char = script.Parent
local Hum = Char:FindFirstChildOfClass("Humanoid")
local HRP = Char:FindFirstChild("HumanoidRootPart")

local Animations = {}

for i, v in pairs(script.Animations:GetChildren()) do
	
	Animations[v.Name] = Hum:LoadAnimation(v)
	Animations[v.Name]:Play(0, 0.01, 0)
end

RunService.RenderStepped:Connect(function()
	
	local DirOfMovement = HRP.CFrame:VectorToObjectSpace(HRP.AssemblyLinearVelocity)
	
	local Forward = math.abs(math.clamp(DirOfMovement.Z / Hum.WalkSpeed, -1, 0.001))
	local Backwards = math.abs(math.clamp(DirOfMovement.Z / Hum.WalkSpeed, 0.001, 1))
	local Right = math.abs(math.clamp(DirOfMovement.X / Hum.WalkSpeed, 0.001, 1))
	local Left = math.abs(math.clamp(DirOfMovement.X / Hum.WalkSpeed, -1, 0.001))
	
	if DirOfMovement.Z / Hum.WalkSpeed < 0.1 then
		
		Animations.WalkForward:AdjustWeight(Forward)
		Animations.WalkRight:AdjustWeight(Right)
		Animations.WalkLeft:AdjustWeight(Left)
		
		Animations.WalkForward:AdjustSpeed(DirOfMovement.Magnitude / Hum.WalkSpeed + 0.5)
		Animations.WalkRight:AdjustSpeed(DirOfMovement.Magnitude / Hum.WalkSpeed + 0.5)
		Animations.WalkLeft:AdjustSpeed(DirOfMovement.Magnitude / Hum.WalkSpeed + 0.5)
	
	else
		
		Animations.WalkForward:AdjustWeight(Backwards)
		Animations.WalkRight:AdjustWeight(Left)
		Animations.WalkLeft:AdjustWeight(Right)
		
		Animations.WalkForward:AdjustSpeed((DirOfMovement.Magnitude / Hum.WalkSpeed + 0.5) * -1)
		Animations.WalkRight:AdjustSpeed((DirOfMovement.Magnitude / Hum.WalkSpeed + 0.5) * -1)
		Animations.WalkLeft:AdjustSpeed((DirOfMovement.Magnitude / Hum.WalkSpeed + 0.5) * -1)
	end
end)

2 Likes

Did you ever fix this? Im having the same issue right now

maybe multiply by Torso.CFrame:Inverse() to the hip joints so the legs rotate independently from the torso

The issue is more so with the legs and arms, they seem to have some kind of isue with the forward left and backwards rights specifically along that diagonal but forwards right and backwards left works fine