How to make a slow fall ability without side effects?

Greetings,

I am trying to make an ability that would slow your fall speed like you see in World of Warcraft.

local mass = 0

local Humanoid = player.Character.Humanoid

for i,v in pairs(player.Character:GetChildren()) do
if v:IsA(“BasePart”) then
mass = mass + v:GetMass()
end
end

mass *= .70

local Float2 = Instance.new(“VectorForce”)
Float2.Parent = player.Character.HumanoidRootPart
Float2.Force = Vector3.new(0,196.2,0) * mass
Float2.ApplyAtCenterOfMass = true
Float2.Attachment0 = player.Character.HumanoidRootPart.RootRigAttachment
Float2.RelativeTo =“World”

this is my current script. It calculates the mass of the character, reduces it by 30% then multiplies it with gravity to get a force value.

It works, however, it has the side effect of higher jumping which is inconvenient seeing as i already have an ability that increases jump power

Any suggestions and advice would be greatly appreciated, thank you for your time

An event bound to Humanoid.StateChange:Connect would allow you to check if the player was falling and only then set the change in gravity

local mass = 0

local Humanoid = player.Character.Humanoid

for i,v in pairs(player.Character:GetChildren()) do
	if v:IsA(“BasePart”) then
		mass = mass + v:GetMass()
	end
end
mass *= .70

humanoid.StateChanged:Connect(function(oldState, newState)
	if newState == Enum.HumanoidStateType.Freefall then		-- Not sure if it is Freefall or Freefalling
		local Float2 = Instance.new(“VectorForce”)
		Float2.Parent = player.Character.HumanoidRootPart
		Float2.Force = Vector3.new(0,196.2,0) * mass
		Float2.ApplyAtCenterOfMass = true
		Float2.Attachment0 = player.Character.HumanoidRootPart.RootRigAttachment
		Float2.RelativeTo =“World”
	else
		-- Set mass back to normal
	end
end)

That might get you somewhere close.

1 Like

thank you, that didn’t work exactly how i wanted but it did