I made a character controller that allows for a style of movement you would typically find in 3D platformer style games. It works with both keyboards and controllers and could easily be extended to mobile with a little extra work. I decided to release this to give those interested in making a game like this an idea of one way to put this together.
Move Set
Double jump: (Press jump twice)
High jump: (Crouch and jump while not moving)
Long jump: (Crouch and jump while moving)
Wall jumping: (Press jump while in air and near a wall)
Dive: (While in air press shift or the X button)
Slow fall: (Hold the jump button while falling)
Users can crouch by holding either left control or left trigger.
Placefile
The place can be found here:
It’s worth noting that the animations will not work for you upon entry because they are attached to my account. To get around this I added a module (game.ReplicatedStorage.CustomMovement.Utility.StudioAnim) that has some code commented out at the top which when run in the command bar will update the animations for use locally. You will have to do this every time you load up the place.
If you are looking to upload the animations yourself then the animation editor saves can be found under each animation object.
Seriously appreciate it. These are things I’ve wanted to learn for a long time but haven’t actually taken the time of day to teach them to myself. I look forward to unpacking and learning how each mechanic works.
Super cool! I’m so gonna use this for tons of games. Thanks!
Bit of a suggestion. I think the character should not be able to dive when they’re on a ladder. When they end their dive (come to a full stop), they should also jump back up. Super awesome work anyhow, I love how your making and open-sourcing lots of useful controllers.
This is a very nice way to get developers into making platformers (I think Roblox should have more platformers), however, I have some suggestions that I think could improve the system’s feel as a whole:
I think the running particles should only be dialed up as far as they are when the player is starting to run, stopping, and making sharp turns. When the player is running in a straight line, the particle should be less intense, this can add more weight to times of more dynamic movement.
I would telegraph when you can wall jump. Something like a wall-slide animation akin to Mario Sunshine.
I’m not sure if this is a problem that only I faced, but my position would often be shifted by a little whenever I would wall jump, which would eventually cause me to slide far enough off the walls I was jumping off of to cause me to fall to the ground.
As a whole, the controls feel rigid. The way humanoids instantly snap into position when turning doesn’t feel fluid for a platformer in my opinion. This personally gives simple movement less satisfaction for me. I know this isn’t an easy issue to fix with humanoids, but it’s something I would take into consideration.
I would also personally decrease the time it takes for your character to stop tilting when he turns, it looks awkward coming out of a 180 degree turn (this could also just be due to the fact that i’m using the rthro animations which don’t look good with this type of movement at all).
As a base for a project, it’s great. But personally if I was to use this system for a legitimate platformer game I would take these things into consideration
Oh for sure! If I were to make this a full game I would spend more time tuning and adding features.
This is more meant as a starting reference that has a decently robust set of moves that could be built upon or used to get an idea of what components you might need to design your own.
That being said the rigid controls were actually a deliberate choice. For some time I had the movement accelerate to full speed and stop, but it was my personal opinion that it felt worse. I won’t say how (because that ruins the fun!) but it would be a somewhat simple addition to put that back in.
I should have elaborated more on that point, but it has more to do with the way humanoids turn rather than starting and stopping. I often find turning while running in platformers more satisfying when your character turns smoothly to meet an angle than snapping to the angle it needs to go to instantly. Of course overdoing it can lead to controls feeling slippery, but finding a good median point can make the character’s movement feel more natural, which will in turn make controls feel more natural.