I have a speed boost which speeds you up for a jump, but its only meant to last .7 seconds. but the speed doesn’t change until he touches the floor. the speed boost changes player walkspeed to 500 and uses a for loop to decrease it gradually up to regular speed. it works fine while walking but midair he remains the same speed.
is there a way to decelerate the player instead of changing the walkspeed?
Try using a BodyForce and mess with the properties. You’d probably only mess with the Force property.
You can create something similar to anti-gravity body forces where you take body parts’ mass into consideration and the gravity (workspace.Gravity) but modify it to work in your way. Basically, low gravity.
Here is a script that I haven’t tested but could probably prove useful to mess with to figure it out. Make sure to define the character of course:
local effectiveness = 0.5 -- half as effective (change this variable to what you want)
local bodyForce = Instance.new("BodyForce")
local totalMass = 0
for _, descendant in pairs(character:GetDescendants()) do
if descendant:IsA("BasePart") then
totalMass += descendant:GetMass()
end
end
bodyForce.Force = Vector3.new(0, workspace.Gravity * totalMass * effectiveness, 0)