This 3D Character Movement System was developed during my second year at Gateshead College (Games Development, 2023). I wanted to explore 3D environments more deeply after primarily focusing on 2D during my first year. My goal was to provide a comprehensive character controller featuring walking, sprinting, jumping, and crouching, with initial plans to develop a parkour system inspired by games like Assassin's Creed.
Engineered a custom character controller, designing core logic necessary for traversing a 3D environment.
Walking/Sprinting: Implemented a standard walking state, if "shift" was held during this state the player's movement speed would increase; commencing the sprint.
Jumping: Added a jump mechanic, employing an "Is Grounded" check. Which through a trigger box would detect objects tagged as "floor", and if triggered would allow the player to jump.
Crouching: Programmed crouching, when the player holds "control" the player's mesh is halved allowing them to fit under smaller gaps.
Camera Control: Developed a first-person camera controller with vertical clamping, limiting the camera's rotation preventing it from flipping and ensuring it remains natural.
Language: C#
Engine: Unity
Core Concepts: 3D Character Controller, Physics (Collisions/Triggers), Boolean Logic (Input Handling), Vector Math (Camera Rotation)
IDE: Visual Studio
Transitioning from 2D to 3D development proved an initial challenge, but one that was ultimately overcome, bringing with it plenty of experience in that environment.
Crouching Logic: Implementing a smooth crouch was unexpectedly difficult. My initial approach involved halving the player's mesh, but this resulted in the player being briefly in the air before promptly falling. Solving this required proper research and understanding before just jumping into the problem inexperienced.
Camera Clamping: Ensuring the first-person camera felt natural was initially a problem I was unaware of, but through my own experience playing games, I quickly found the issue—and the solution. It involved clamping the player's camera to ensure it couldn't flip on itself when rotating vertically. Whilst this did take a while to solve, through use of online tutorials, a solution was eventually found which worked perfectly with my project.
Scoping: Scoping was a problem present throughout this project; initial plans were to also implement a parkour system and to further the current movement system with sliding. But due to the short timeframe of the project, dependencies with other projects, and technical issues, these never happened. This was an important lesson in effectively planning for the time allotted as well as understanding my skillset and what I am able to achieve.