I’ve made a quick wall running tech demo a while back. It’s not too hard. It’s not perfect, but it’s the best I could have done within the hour I’ve made it.
How I did it was shoot two raycasts to the right and left of the player’s humanoidrootpart. If one of the raycasts doesn’t return nil, then it may be a wall. If both raycasts hits a solid, I just take the ray with the shortest length. To check if it is a wall, I make sure the raycast normal’s Y is equal to 0, which will mean it is perpendicular to the floor. This will make sure you are running on an actual wall and not a slanted slope. Using the wall normal with a cross product of Vector3.new(0, 1, 0), it will give the direction of the wall. Then I use a BodyVelocity to make the player travel along this direction. I would continually raycast the same function (two sides, in front, etc) in case I hit slanted walls so the player can smoothly transition to different walls. This type of wallrunning is heavily inspired by titanfall 2.
Basically, on your Raycast, You want to cross product your Y normal with Vector3.new(0,1,0)
so Raycast.Normal.Y:Cross(Vector3.new(0,1,0)) Set that number as a BodyVelocity’s Velocity and then multiply it by how fast you want it to go.
How did u handle the jump? did u set the jumpheight to something? also for moving up and down, how did u make it so smooth? mine just makes the char fling
What I believe he did is used is a force(body position,body velocity, etc) to fling the character to the direction of the ray’s normal and maybe allowing them to jump in the air like using; Humanoid:changestate(Enum.HumanoidStateType.Jumping) and that might have given it the up boost but still falling naturally with Roblox physics.