Replicated Ladder Climbing

This project allows you to easily and quickly add fully replicated and animated Ladder Climbing with toggle-able abilities such as sliding, jumping off and jumping on ladder mid-air as well Ladder Hand and Feet IK through Blueprint Actor Components and Modular Ladder Actors.

Customize it, Make it yours - Allows you to customize the system even in real-time.
Plug & Play - Simple Actor Components to be initialized and the rest is history.
Simple Blueprints - The entire system is in blueprints, coded with optimized industry standards. It is also compatible with C++.
Fully Replicated - The entire system is replicated over the network and can be played in multiplayer.
Modular Ladder Actors - No need to make a thousand different ladder meshes. Simply use our modular ladders (even with your own meshes!) and control the width, height and gap between each ladder step.
Ladder Climbing - Fully customizable ladder climbing. Control everything from how many steps to go up every animation or on every climb in/out and to your velocity when jumping off the ladder.
Ladder Sprint Climbing - Want to use the ladder faster? Simply hold SHIFT. Want to go even faster? You can modify the speed multiplier to your liking.
Ladder Sliding - Don’t like sprinting down a ladder? Just slide your way down. You control how fast.
Ladder Usage Mid-air - The ability to attach jump on and attach to a ladder
Interpolation System - Use our optimized custom-made interpolation system and avoid all the overhead of Timelines and Component managers!
Ladder Hand and Foot IK System - A simple Foot and Hand IK system so that your character’s hand and feet are always on the ladder. Easily removable and toggle-able.

Initial Setup

Collision Setup for Existing Projects
Open your Project Settings and head into Collision under the Engine category
Create a New Object Channel called LadderStep set to Ignore
Under AuroraDevs_RLC/Blueprints/Actors, open BP_ModularLadder
Click on StepInstance in the Components panel
Scroll down until the Collision category in the Details panel
Set the Collision Presets to Custom and the Object Type to LadderStep
Under AuroraDevs_RLC/Blueprints/Components, open BP_LadderComponent
Under the Variables panel, expand Utilities - Traces and click on TraceObjectTypes
Under the Details panel, click on the + sign to add an array element if it doesn’t already exist and set its default value to LadderStep
Compile, Save and Exit

Modular Ladders
BP_ModularLadder is an actor which you can drop into your world to get the ladder of the dimensions of your choosing. You can customize the rail and step meshes as well as the height and width of the ladder and even the gap between each step.

Component Setup
The project comes of course with its own character class ready for usage for those who want to start a fresh project. Nonetheless, adding the components to your own character classes is as simple as ABC.
Open you character blueprint
Click on Add Component
Search for and select BP_InterpolationComponent
Initialize it in the construction script ❗BEFORE THE OTHER COMPONENTS❗
Search for and select BP_LadderComponent
6. Initialize the components in the Construction Script or On Begin Play by using the OnInitialize function of the corresponding component and plugging in the character (Reference to self). You can also copy these scripts from our BP Character class
7. Plug in your inputs. You can either define these in your Project Settings under Input or directly use the Input Event Keys for testing. You can also copy these scripts from our BP Character class
8. Make sure to add this function after your MoveForward axis input in order to be able to move up/down a ladder

9. Go to your animation blueprint, get a reference to the ladder component. You can do this in any manner of your choosing but if you want to avoid casts and interfaces, simply get the component on Begin Play
10. In the Event Blueprint Update Animation, use the initialized Ladder Component to check if the character is on a ladder
11. In your AnimGraph, add a state called Ladder with two transitions going to and from your Idle/Run (ground animations) State.
12. In the newly added Ladder state, add a Linked Anim Graph and set its Instance Class to the ThirdPerson_AnimBP_Ladder. Make sure to expose the LadderComponent property and plug in your variable.
⚠️If you are not using the Unreal Mannequin Rig, you will need to retarget this animation blueprint or make a new one and copy the scripts.
13. Add a DefaultSlot to your AnimBP in order to play animation montages

What is Dominant Foot or Using left/right side?
During ladder climbing, the character will alternate between right and left legs to do a climb/idle animation. If the character is resting on their left leg, the code refers to it as “using left side”, with the “dominant foot” being the left one in this case, and will use the climb animation for the left side (symmetrical logic for the right side).

Ladder Hand and Foot IK Setup
If you are using a character rigged to the Unreal Mannequin, you can use our ThirdPerson_AnimBP_Ladder to save you some trouble. Otherwise you can simply retarget it to your own rig or copy the scripts. Furthermore, modifying IK to your own animations is extremely simple.

You have a number of variables at your disposition in ThirdPerson_AnimBP_Ladder

1. Ladder Foot IK
Dominant Foot Trace Offset: Vertical trace offset for the foot that is currently being used/anchored on by the character. This is used to compensate for the foot’s location during idle animation.
Non-Dominant Foot Trace Offset: Vertical trace offset for the foot that NOT is currently being used/anchored on by the character. This is used to compensate for the foot’s location during idle animation.
IK Foot Z Offset: A constant that is added to the feet offset to avoid them clipping through the floor
2. Ladder Hand IK
Hand IK Trace Offset: Vertical trace offset for the hands. This is used to compensate for the hands’ location during idle animation.
Hand IK Z Offset: A constant that is added to the hand IK location vertically to attach correctly to the ladder
Hand IK Forward Offset: A constant that is added to the hand IK location forward/backward to attach correctly to the ladder

Component Settings
bLadderClimbingEnabled: Toggle ladder climbing ability
bAutoAttachToLadderWhenFalling: Should character automatically attach to the ladder if he hits it while falling
StepsToClimbUpOnStart: The amount of steps to climb up when we grab onto the ladder. This prevents the character from getting attached to a step too low.
StepsToClimbDownOnStart: The amount of steps to climb down when we grab onto the ladder. This prevents looking like the character is attached to a step too high.
StepsToClimbUpPerAnim: The amount of step to climb up every time the LadderClimbUpMontage is played
StepsToClimbDownPerAnim: The amount of step to climb down every time the LadderClimbDownMontage is played
Ladder Actions
SprintSpeedMultiplier: Amount by which speed of climbing is multiplied when sprinting
bShouldSlideDownInsteadOfSprint: Whether character should slide down ladder or sprint-climb down instead
SlideDownSpeed: Speed when sliding down the ladder
LadderJumpOffVelocity: Velocity by which the character jumps off the ladder
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
) instead.