Inertia movement system?

  1. What do you want to achieve? I want to make a inertia movement system similar to games title like Escape from Tarkov or SCUM, and be a lightweight system so I can port it to my other game that uses the default humanoid for movement, basically what I want is just:
    -Player have to build up speed to the desired speed
    -When stopping from fast speed they should be slowed down while still being pushed forward a little.
    -Making sharp turn at fast speed should slow them down and pull them in the direction they were running in before turning.

  2. What is the issue? With how the humanoid work its hard to make a proper inertia system.

  3. What solutions have you tried so far? I’ve tried looking around DevForum and was able to make player accelerate, but with the default humanoid I still can’t figure out how to make my 2 other objective.

I don’t really have anything else to write so thanks in advance!

(You don’t have to write a whole script, just give me an idea on what I should do)

3 Likes

Could you show an example of this movement? I’ve never heard of these games before.

Something like this

Unfortunately the default character system isn’t great for extending using physics, but I think you can pull this off without changing it and instead using a custom ControlScript. It should constantly be calling Humanoid:Move(moveDir, true) with some moveDir that only changes slowly over time according to the players input. For example by lerping the moveDir towards some targetMoveDir that gets instantaneously set according to the players input. You could get more complicated and use a PID controller instead of lerping, to give you more control over how it feels. Or do lots of other tweaks to get it just right. But lerping should be good enough to get started.

1 Like

So if I understand you correctly, I have to make another TargetMoveDirection that changes depending on player’s input while leaving the .MoveDirection in the Humanoid to lerp to TargetMoveDirection?