This has only been tested in R6! May require additional work for R15.
I’ve been seeing a lot of games have this issue where sometimes jumping into different directions is different in speed. This issue is caused by a mass problem with the HumanoidRootPart, where the center of mass has been offset. Usually stems from animations that distance the Torso from the RootPart.
This issue seems to be a Roblox issue, but this bandage fix should be fine until they fix it themselves.
I wrote a script which should automatically solve it, but you may need to add exceptions to it, as it will affect animations that build distance from the HumanoidRootPart.
If this script is used, credit would be helpful:
LocalScript in StarterCharacterScripts
--stephex_s
local RunService = game:GetService("RunService")
local Character = script.Parent
local HumanoidRootPart : Part = Character:WaitForChild("HumanoidRootPart")
local Threshold = 0.65 -- Mininum mass offset digit (Should be extremely low)
local FixTimer = 0.35 -- refresh time (so if it finds offset this will act as a cooldown)
local FixCooldown = false
local FixTick = nil
RunService.RenderStepped:Connect(function()
if HumanoidRootPart and (HumanoidRootPart.AssemblyCenterOfMass - HumanoidRootPart.Position).Magnitude >= Threshold then
if FixCooldown == true and (FixTick and tick() - FixTick >= FixTimer) then
FixCooldown = false
FixTick = nil
end
if FixCooldown == false then
FixTick = tick()
local anchored = HumanoidRootPart.Anchored
if not anchored then
HumanoidRootPart.Anchored = true
task.wait()
HumanoidRootPart.Anchored = false
end
end
end
end)
What problem this aims to solve:
Footage of it solving: