A beginner-friendly Character Controller for Unity that recreates the smooth, responsive movement from the popular game Celeste.
Add a GIF showcasing your controller in action
This controller gives your Unity game that satisfying, precise platformer feel with easy setup. Perfect for anyone making their first platformer or experienced developers who want Celeste's polished movement without building it from scratch.
- 😊 Easy to Set Up: Just add to your player and configure in the Inspector
- 🎮 Feels Amazing: Responsive controls that feel great from the first jump
- 🎯 Precise Movement: That tight, snappy movement Celeste is famous for
- 🔄 Beginner Friendly: Clearly commented code you can learn from
- Smooth Movement: Your character speeds up and slows down naturally
- Jump Like Celeste: Hold for higher jumps, release early for shorter hops
- Better Mid-Air Control: Easier to maneuver at the peak of your jump
- Custom Gravity: Falls feel natural and controllable
- Unity 2020.1 or newer
- Unity's New Input System package (free from the Package Manager)
- Add the
PlayerController.cs
script to your player character - Make sure your player has a
CharacterController
component - Set up your controls with two actions:
move
action (for left/right movement)Jump
action (for jumping)
That's it! Your character should now move with that Celeste-like feel.
All settings can be adjusted in the Unity Inspector - no coding required!
- Acceleration: How quickly your character reaches full speed
- Deceleration: How quickly your character stops when you release the controls
- Max Move Speed: How fast your character can run
- Apex Bonus: Extra control at the peak of your jump
- Jump Height: How high your character jumps
- Ended Jump Early Modifier: How much shorter your jump is when you tap (instead of hold)
- Jump Apex Threshold: Adjusts the "peak" of your jump for better control
- Max/Min Gravity: Controls how your character falls
- Max Fall Speed: Prevents falling too fast
- Your First Platformer: Perfect for beginners making their first game
- Precision Platformers: Great for challenging, Super Meat Boy-style games
- Metroidvanias: Provides responsive movement for exploration games
- Speedrun Games: The tight controls make this ideal for speed-based games
Looking at examples helps beginners understand. Here are some ways to use the controller:
// Example: How to check if the player is grounded
if (_isGrounded) {
// Do something when the player lands
// Maybe play a sound or animation
}
// Example: How to detect when the player jumps
if (_isJumping) {
// Do something when the player jumps
// Like spawn a particle effect
}
Once you're comfortable, you can add more features:
- Double jumping
- Wall jumping
- Dashing
- Climbing
- Check the commented code for explanations
- Open an issue on GitHub if you're stuck
- Feel free to ask questions!
- Inspired by the amazing platformer Celeste by Extremely OK Games
- If you found this repo useful, star it so you can comeback to it always! Thanks!
This project is available under the MIT License - use it in any project, even commercial ones!
Note: This is not an official Celeste product. Celeste is a game by Extremely OK Games, Ltd.