# Velocity based dashing, is heightended while jumping

I use assembly linear velocity (applyimpulse) on the root part to launch the player, only issue: when jumping you get like 3x velocity. I don’t want you to gain that much velocity, on the dash when jumping. I do want the dash to retain velocity.

Final issue: Need velocity to retain longer, have no idea how to do this. i just want it to stay longer without increasing the speed.

No bodymovers or velocities since it’s a important mechanic to retain velocity.

As of rn im using body position to do the dash, if any issues arise i’ll write them here. maybe someone else has a better solution…

Could you send the math in the code or the section of code that calculates the dash velocity?

I’m not sure what other way you could do this without using an external forces.

I assume the original error is due to friction with the ground.

rn im using body position to do the dash,

My guess best would be:

• Create a direction for the player to dash towards (this could be based off of the direction the player is currently facing, the direction the player is currently moving, based off of input whatever)
• Multiply that vector by some distance
• Set the body position’s position property to that point

IF the body positions “MaxForce” is high enough, then it should be able to overcome the friction problem - obviously, if the max force is too high, your character will be flung when it collides with something during the dash, so you’ll have to tinker a bit.

i fixed this 4 days ago, basically the ground has friction and air doesnt, so thats why the dash is faster on air

but removing the friction on every part is bad, so i used LinearVelocity, more complicated but this fix alot of problems

``````local velocity = Instance.new("LinearVelocity", HumanoidRootPart)
local attach = Instance.new("Attachment", HumanoidRootPart) --set both Velocity and attachment parents to HumanoidRootPart
velocity.MaxForce = math.huge --dont worry
velocity.Attachment0 = attach
velocity.VelocityConstraintMode = Enum.VelocityConstraintMode.Vector
velocity.RelativeTo = Enum.ActuatorRelativeTo.Attachment0
attach.WorldPosition = hrp.AssemblyCenterOfMass

if uis:IsKeyDown(Enum.KeyCode.W) then

velocity.VectorVelocity = Vector3.new(0,0,30) --i prefer something like 30 and 50
end

``````

idk why linearvelocity fix this problem, i think because is not deprecated

I tried using linear, it did not disable the friction, is it because of my low maxforce?

edit: i literally just tried this, and it doesn’t work. maybe im doing it wrong.

Video:

``````local Dash = function()

local Character = Player.Character
if Character == nil then return end

local SF = Character.SF
local Cooldowns = Character.Cooldowns

if SF:FindFirstChild("Stun") then return end
if Cooldowns:GetAttribute("Dash") then return end

Cooldowns:SetAttribute("Dash",true)

Cooldowns:SetAttribute("Dash",nil)
end)

local Hum = Character.Humanoid :: Humanoid
local Root = Character.HumanoidRootPart :: Part

local MoveDirection = Vector3.new()

local RootCFrame = Root.CFrame

local Direction

if UserInputService:IsKeyDown(Enum.KeyCode.W) then
MoveDirection = RootCFrame.LookVector
Direction = "Front"
elseif UserInputService:IsKeyDown(Enum.KeyCode.D) then
MoveDirection = RootCFrame.RightVector
Direction = "Right"
elseif UserInputService:IsKeyDown(Enum.KeyCode.A) then
MoveDirection = -RootCFrame.RightVector
Direction = "Left"
elseif UserInputService:IsKeyDown(Enum.KeyCode.S) then
Direction = "Back"
MoveDirection = -RootCFrame.LookVector
else
MoveDirection = RootCFrame.LookVector
Direction = "Front"
end

local Velocity = Vector3.new(MoveDirection.X,0,MoveDirection.Z) * DashVelocity

local BodyPosition = Instance.new("LinearVelocity")
BodyPosition.MaxForce = math.huge
BodyPosition.Attachment0 = Root.RootAttachment
Velocity = Velocity
BodyPosition.VectorVelocity = Velocity

local NewDashSpeed = DashVelocity

BodyPosition.Parent = Root

BodyPosition:Destroy()

end

``````

Final edit: I copied his code 1-1 and it still doesn’t work, it’s just less obvious since the distance is basically nothing

That’s the system im currently using, it works fine, i just prefer linear velocity instead.
The maxforce doesn’t overcome friction from what i’ve tested.

tsb also has the same problem, it’s just not very noticeable in there.

The current version is working, just asking for alternatives, since i don’t like body position, and would like to use linear velocity instead, (or bodyvelocity)

used a linear velocity and just added a divided version of the assemblylinearvelocity onto it.

maybe try to put this at 80000 or lower

Didn’t work, sadly. I don’t understand how a maxforce could possibly “overpower friction”, the force isn’t changing, it just doesn’t have a limit, the only thing i could imagine working is lowering the max force to where the air velocity is the same as the ground one, but i don’t know.

I’m not entirely sure if this would work, as I haven’t tested it myself, but if friction is the problem, instead of disabling friction on all parts, couldn’t you instead set the friction of the player to 0 for the duration of the dash with `CustomPhysicalProperties`?

That doesn’t work, since it only accounts for the thing it’s sliding on, not the thing it’s sliding with. I already tried this, and it didn’t work. and even if it did it would look bad since 0 friction makes it too zoomy.

The thing that it’s sliding with? is there anything dragging along the player? If so, can’t you set its friction to 0 as well? Or am I missing something?
For the zoomy part, I think you could just add some drag to make sure that it slows down.

1 Like

yes, what i mean by the thing “it’s sliding with” i mean the floor that the player is touching, you could set the friction of the interacted floor to 0, that is another solution so i’ll mark it as that. although i use body position as my solution instead.