Download

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:

https://youtube.com/watch?v=4yjcwZLQqlE

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”:

AlignToWallFunction.PNG

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:

https://youtube.com/watch?v=ClplpwPGrt4

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):

GrabLedgeModification.PNG

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

ClimbLedgeModification.PNG

LetGoModification.PNG

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).

EventTick.PNG

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.

(If you’re wondering what the black regions are for, it’s to save on compression space. The uploader on the forums is limited to 585.9 KB :slight_smile: )

[ATTACH=JSON]{“data-align”:“none”,“data-size”:“custom”,“data-tempid”:“temp_124064_1512168234071_393”,“height”:“517”,“width”:“914”}[/ATTACH]

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.

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: