Overview
Write a paragraph here about the project in general — what it is, what the goal was, what the team set out to make.
A second paragraph about context — school project, game jam, personal project? What constraints did you work under?
My Contribution
Describe specifically what systems you owned. Be concrete — not "I worked on movement" but "I built the ground detection, coyote time, and a momentum-preserving dash that feeds into the slide."
What I Built
Write as much as you need here. Describe the full implementation: how does wall detection work, what raycasts or overlap checks are you doing, and on which axes?
Explain the adhesion itself. Is it a custom gravity override, a velocity clamp against the wall normal, or something else? What happens if the player holds away from the wall mid-run?
Describe the transition out — does the player get a speed boost on exit, does momentum carry into a jump? What edge cases did you have to handle?
Detection
Wall detection raycasts
Camera Tilt
Camera bank during run
Wall Jump
Jump redirect at exit
Edge Case
Internal corner handling
Describe how direction is sampled — is it from the input vector, camera forward, or a blend? What happens when no directional input is held?
Explain the cooldown and recovery system. Is it a single charge, multiple charges, or a timed reset? How does it communicate state to the player?
What makes the momentum handoff feel good? How does it chain into a slide or wall run? Any edge cases around mid-air dashes or overlapping abilities?
Dash trail VFX
Chaining into slide
Explain the speed gate — what's the minimum speed to trigger a slide vs a plain crouch? How is the threshold tuned and why?
Describe the capsule resize — how do you handle the transition, and what happens when the player tries to stand up under a low ceiling?
How does slope affect the slide? Does it accelerate on downhill surfaces? What happens at the end?
Slide under obstacle
Media
Technical Detail
Explain what this code does in plain English before showing it.
void APlayerCharacter::HandleDash()
{
if (!bCanDash) return;
// your code here
}