To run the project, simply build and execute it in Release mode.
All assets and systems are configured to work out of the box — no additional setup required.
⚠️ Make sure dependencies are correctly linked before building.
A simple character control system with animation switching, designed for intuitive movement and clean transitions between states.
| Key | Action | Animation Triggered |
|---|---|---|
W |
Move Forward | Walk Forward |
S |
Move Backward | Walk Backward |
A |
Strafe Left | Walk Left |
D |
Strafe Right | Walk Right |
SPACE |
Jump | Jump (plays once) |
ESC |
Quit Application | - |
The core animation system is built around an Animator class that handles various animation states such as idle, walk, and jump. Animations are stored in a map and triggered by input events.
-
State-Based Switching
Character begins in anidlestate and only transitions when a valid input is received (e.g., pressingWto trigger a walk forward). -
Single-State Priority (No Stacking)
When multiple keys are pressed (e.g.,W+A), one animation takes priority — for instance, forward walking overrides strafing. -
Non-Looping Animation Handling
Certain animations likejumpare played once and automatically return to theidlestate upon completion. -
Smooth Transitions via Matrix Decomposition
Blending is achieved by decomposing the transformation matrix into:- Position
- Rotation
- Scale
This allows more natural transitions between animations.
-
Performance Fallback Option
For lightweight builds, a simplifiedglm::mix()blending approach is available as an alternative.
⚙️ Built with extensibility in mind, this system can be expanded to include combat states, reaction animations, or full locomotion blending with root motion.