You could raycast from the player in different directions, for example to the side, to detect if a player is near a wall. Than you could use the dotproduct to check if the player is oriented correctly and should do a wall climb. With landing you can also use raycast and velocity to calculate damage and maybe the timing to negate fall damage as in the game Parkour you are talking about. Hopefully that gives you an idea for how you should approach this.
4 Likes