Godot 4.2 Wall Hugging Mechanic (80% complete already)

Job ID: 38150053

Budget: $250 – $750 USD

I'm looking a game developer who can implement a wall hug mechanic into a Godot 4.2 project

The main objective of the project is:

- To finish a wall hugging mechanic I have worked on by fixing two bugs (shown in images below)
1) If the player stops moving right when they are on the edge of a corner the fall backwards and the rotation is ruined. It only works if they constantly apply a direction through input
2) After the player stops wall hugging there is a crazy jitter and rotation problem from the camera
(Solution for this is probably not using lerp_angle() for the camera's yaw but I am not sure)

This feature is 80% complete but I am struggling with the math to fix the bugs.
Currently the player has a forward ray near the top of their head called "WallHug_Interact_RayCast". This detects wall geometry. It waits for the player to press the "To Interact" input to trigger the wall hug event.

The graphics container, not the CharacterBody3d is then rotated for face the wall normal which was gotten from the "WallHug_Interact_RayCast".

Using the dot-product I can tell if the graphics container is pointing in the same direction as the wall normal. If this is the case a Marker3d node known as "stick_point_holder" is then set to the "WallHug_Interact_RayCast" collision point. The CharacterBody3D's global_transform.origin.x and global_transform.origin.z is then set to the child of "stick_point_holder" stick_point.global_transform.origin.x and stick_point.global_transform.origin.z. This keeps the player fixed to the wall.


The ideal freelancer for this project would be someone with:

- Experience developing with Godot 4.2
- Strong knowledge of Trigonometry and Rotations

Your main job is to implement this mechanic and ensure that it blends well with the existing assets and the rest of the game-play. This will be done in the "MovementComponent" under the player. Understanding the genre and the mechanics of Metal Gear Solid would be a strong advantage.

I am willing to explain everything and go line by line to make sure you understand how it works :)

I am using:
GDscript for language
InputHelper - for help with gathering inputs (https://godotengine.org/asset-library/asset/2107)
Phantom Camera - for camera movements (https://godotengine.org/asset-library/asset/1822)
TrenchBroom - for 3d environment (https://trenchbroom.github.io/)

Please ensure that you can show previous work that is similar or relevant to this project.
Related categories: Python Godot