3rd Person Ledge Climb Movement System (Shimmy) with Accurate Control Input

Hello all,

Firstly I want to thank and give all credit to my Lord and Savior Jesus Christ for showing me a solution to achieve a reliable ledge movement system. This system can be expanded upon as new features are added.

The problem I had first began when I could not find any information in the ledge climbing tutorials out there on how to achieve accurate left/right movement while hanging from a ledge in relation to your camera’s current rotation. Everything worked fine when the camera was behind the character, but if you rotated the control 180 degrees so the camera would face the character, your character’s movement input would be** inverted** (ie. you would have to push the thumbstick right to move to screen left and vice versa). Additionally, when the camera was at 90 degrees to the character, the logical up/down thumbstick movement would not be available at all.

The function “LedgeMovement” I will show you solves both those problems. But first, you need to have a ledge climb system in place! I recommend starting with Crocopede’s excellent tutorial series and doing the first 2 videos at least:

You will want to substitute the AlignToWall macro created in the video with the following setup (which he created sometime after the first 2 videos were made). I used a function instead of a macro here, and set it to “Pure”:

Next, you will want to follow up with Medel Design’s excellent series. He bases Part 1 on Crocopede’s videos, however, I personally decided to stay with Crocopede’s original setup for this first portion, as the above AlignToWall function worked better for my character, and overall I had better stability. For Part 2 though, you will want to substitute a few things in Medel Design’s video:

First, you will want to Get your Character Movement component and disable Orient Rotation to Movement. Optionally you can reduce your Max Fly Speed here, if you want your character to move slower when shimmying on ledges. Insert the nodes where shown below (the setup below uses the WallGoToLocation and AlignToWall functions [or macros] from Crocopede’s series):

Next, you will want to re-enable it (and update your fly speed) in the following locations:

Now, we can substitute Medel Design’s function “MoveinLedge” for this new LedgeMovement function. But first, here’s how my Tick Event is currently setup. Again, it more closely resembles Crocopede’s original series with the addition of Medel Design’s Left and Right Tracer functions. The “Wall/Ledge Detect” event is a Custom Event connected to a Sequence node that fires both the Wall Trace and Ledge Trace setups (as shown in Crocopede’s video, or the equivalent of “Forward Tracer” and “Height Tracer” from Medel Design’s video).

Finally here is the new function itself (Right Click and open in new tab for Full Size). The CanMoveRight? and CanMoveLeft? booleans are from Medel Design’s 2nd video, and are set using the LeftTracer and RightTracer custom events in his video. The LedgeMoveInput variable is my own variable used to drive a blendspace in the AnimBP for moving left/right. All other variables are local variables that exist only in this function.

Imgur

That’s everything! As mentioned, this system may be modified as new features are added. I hope this helps someone!

-Adam

Praise God for guiding me to an extremely important update to the LedgeMovement function! (The original post has been edited to reflect this; the main change is in the purple comment box). Thanks to this helpful post by saeedc, now this new setup can accurately find the angle (-180 to 180) between the Actor and Control Rotations, allowing correct control inversion for both MoveForward and MoveRight inputs regardless of the character’s forward direction.

Very cool, thanks for working on this, I think it’ll be very useful for what I’m working on when I get to this point soon!

You are welcome, Earl! Glad you found it useful.

Can you please give me a download link? your website is down. I might even help you host it if you need help with hosting costs etc.

Hi Frostic, I was not hosting this system on any website. The system is simply based on the above YouTube tutorials with the addition of the function I added as shown above. I hope this helps!

-Adam

I love you lol, thank you so much for this tutorial. I was stuck on an issue with getting the rotation of the wall the player was grabbing and this helped me figure out my problem. Thanks again!

Hey thanks for that detailed tutorial on ledge movement based on the camera. I’m going to have to try and implement this in my character now. I’ll see how I go

You are very welcome, MStory and Abeysaurus! I’m glad you both found this post useful. Looking forward to seeing your progress. :smiley:

I just got it working in my system. I did the ledge movement completely different from Medel’s. Took a while to get it working properly

Very nice! Glad you could port it to your system. I think that was pretty fast, actually… :cool:

Hey, sorry to revive this old thread, but I’m having a similar issue after following the same tutorials and your guidance… but it seems that the last picture of the thread is gone, and thats the part I actually need the most… is there any chance you can send me this again, or maybe just hint at me the solution for the camera problem

1 Like

Hi @Voltaroth ! I’m so sorry that image disappeared, I just noticed that myself and then I saw your message! It probably had to do with the old limit on file sizes years ago. I have re-uploaded the image in the original post and it appears to work, but the site compresses so it’s not as clear. I’ll try to upload a higher resolution version tomorrow. Keep in mind this climb system (as described in this thread) is still a work in-progress and does not work on curved surfaces (yet). I have actually been out of game development for the past 4 years but I have recently resumed, so a lot of what I wrote here sounds “foreign” to me… :thinking: I’m having to redo tutorials to get back up to speed!

@Voltaroth I just uploaded a high-res composite image to Imgur which should be much clearer (visible in original post). Just right-click and open in a new tab to view the 4K image. I hope this helps!

Hey, I’m so glad that I reached out to ask, thanks so much for updating the thread! I wish you all the best for your gamedev future and hope that you get back on track :smiley:

1 Like

Oh and btw, the way I currently solve being able to climb around curved ledges is that I reposition my character with MoveComponentTo when I move to left or right, just the same as I do it when I grab a ledge and I stop that function when I exit ledge or climb up… Also works after I implemented your camera depended function

1 Like

@Voltaroth You’re very welcome! And thanks for the tip about climbing around curved ledges, I’m glad you were able to get that feature to work! If you’re willing to share a screenshot of the setup you used to make it work, that would be a big help to others (myself included!) who are building a ledge climb system of their own. But if you’d prefer not, that’s all right too – I understand there’s a certain degree of “trade secrets” in game design… :grinning: