Climbing a.la Assassin's Creed?

Basically what it says on the box.

I am looking into ways to create a climbing mechanism, where the player moves to a climbable surface of some sort, say a wall, and pressing a key to engage climb-mode, moves up it.

My idea is to adjust the slopeLimit variable on the Character Controller with pseudocode something like:

Animation would then handle looking like I am climbing a wall, and while I hold the Climb Key I can move around normally.

But the immediate question is how to handle cresting the lip of a cliff…

Any ideas?

Don’t know if it can be of some help :
Use the raycast function , when the character is near a border , raycast from the border lower distance in Y.
If there is enought height, play the animation and place the character at the border.

Thanks Dex!

The more I think of it, though, the more I think I might use a “tomb-raider” style climbing solution - where specific areas are climbable. I’ve found one or two other solutions around the place for how to do that - but basically it will be about game-objects that mark the tops and bottoms of things.

Navmesh.

“I’ve found one or two other solutions around the place for how to do that”

Can you kindly point me to those two solutions you found?

I am really interested in implementing a full platforming system in Unity. With features like:

  • Jump and grab a ledge and stay hangging
  • Press up to climb.
  • Press down to drop to the ground/lower level
  • press left/right to move sideways

Although they might sound simple those features are still at the core of games like Prince of Persia and Uncharted. I would really appreciate it if someone can help me add something like this (say to a project like the 3D Platformer tutorial)

I ended up looking at this code example.

My design concept evolved away from needing really complex climbing, so a ladder-based system turned out to be what I needed.

My other idea was based on changing animations and control schemes based on collisions and conditions. But I never got it to work.

Sorry for not being able to help.