Demo of walk/run states, wall climbing (up/down), and jump mechanics (direction locked mid-air, variable height/distance based on input duration).
This project, initially developed as a personal project, before adapting for college work, was a personal exploration into creating 2D parkour mechanics using Unity and C#. While the long-term vision involved 2.5D elements inspired by games like Assassin's Creed Chronicles, this prototype focuses specifically on implementing core 2D movement: walking, running, variable jumping (with no mid-air control), and wall climbing. The goal was to experiment with character controllers, physics (Rigidbody2D), and ray casting to build these complex interactions. The tile map used in the demo was created by AxulArt on Itch.io.
This prototype demonstrates foundational C# scripting for a 2D character control within Unity:
Basic Movement: Implemented distinct walking and running states with vastly different movement speeds, controlled through player input
Jump Logic: Developed specific jump mechanics where horizontal control is locked mid-air, while jump height/distance is influenced by input duration (variable jump).
Wall Climbing: Implemented the core mechanic, allowing the player to latch onto designated walls and move vertically along them
Tile Map Integration: Adapted the movement and collision systems to work correctly with Unity's Tile Map system for level geometry, thus simplifying the level creation process
Engine: Unity
Language: C#
Core Concepts: Character Control (Rigidbody2D), Player Input Handling, State Management (Walk, Run, Jump, Climb), Collision Detection (Colliders/Triggers), Tile Map System
IDEs: Visual Studio
Developing this parkour prototype involved tackling several specific technical hurdles:
Tile Map Integration: The most significant challenge arose when adapting the existing character controller (particularly the logic for wall climbing) to work reliably with Unity's Tile Map System. As my introduction to Tile Maps, this required considerable debugging and iteration, but ultimately resulted in a thorough understanding of the system, enabling more efficient level design approaches for future projects.
Custom Jump Mechanics: Implementing the specific jump requirements (no mid-air control, variable height/distance based on input duration) required careful tuning of physics parameters and input handling logic. Solving this involved patience and research into different character controller techniques.
Unimplemented Features: There are many unimplemented features I would've liked to include in this project but the main one related to the climbing system. While the core wall climbing was successful, the planned feature of transitioning the player smoothly onto the top of ledges remained unresolved due to time constraints and complexity. This remains an interesting technical challenge I would like to revisit and solve in the future.