How do I create the Movement System I want?

I want to create a movement system but I just don’t know where to start.
Things I want to include:

  • Wall Jump (with cooldown)
  • Momentum
  • Dash
  • Slide

More detail:
I want the player to only be able to jump on the same wall once and then they have to either
a) jump off a different wall
b) touch the floor

I am a beginner scripter so I understand if explain this to me is to inconvenient.

2 Likes

there are many online tutorials on this topic, I’m sure if you just search online you can find a decent tutorial.

Ive actually spent ~2 months searching for decent wall jump tutorials, but I only found one, and its… choppy to say the least.

But I’ll keep looking and watching this post until a solution is found.

what about this?

3 Likes

Momentum, aka. slippery controls can be done using ControllerManager
But it’s just annoying, it’s better to slowly increase runspeeds instead and just custom make the part that sets the humanoid walkdirection.

Wall jump, keep it simple:

if humanoid.FloorMaterial == Enum.Materials.Air and hasDoubleJump then
if raycastLeft ~= nil then
hasDoubleJump = false
humanoid:ChangeState(Enum.HumanoidState.Jump, true)
elseif raycastRight ...

After walljump you can just wait til floormaterial is not air to reset the hasDoubleJump.
Keep it simple, doesn’t have to be perfect :slight_smile:

Edit:

This looks super promising though.

1 Like

Not sure what the best method is but a method I prefer for momentum and similar stuff is adding onto the PlayerScipt modules ‘Move’ function.

Normally the way it works is it calculates the direction based on your camera and keys pressed and then does Player.Move(direction, … , … ).
What I do is have a variable moveDirection that starts off as Vector3.zero and when the PlayerScript gets the direction, I do:

--Direction is the direction the script calculated
--moveDirection is a variable defined outside the move function
if Direction.Magnitude == 0 then
   moveDirection = moveDirection:Lerp(Direction,.1)
else
   moveDirection = direction
end

the lerping makes it slowly reach zero instead of automatically stop.

1 Like

Thanks for all the help everyone, I’ll apply some of these tonight and mess around a bit.

When I finish the demo for my project I’ll link it here.

I guess I just dont know how to work the search algorithm.

After further looking to it, I don’t know how to read EgoMoose’s controller and I cant configure it consequently.

If anyone has any other resources, please list them.