[Release] Custom character controller

Check out the new post:


It’s been almost a year since I originally released this. It was met with a lot of support and ended up being a lot more popular than I ever expected it to be. However, even though the controller was useable and people liked it, it was messy and complicated. Ever since I released it back in August of 2018 I wanted to clean it up and make it more user friendly. Well I’m happy to announce that’s why I’m posting right now!

Two things have changed.

The first and probably more jarring is the camera now has the ability to rotate with the player. For this you can thank @goldenstein64 as he was the one who got this working in the original version.

The second is that the API got an overhaul. There’s now only 3 public methods and hopefully all are clear, concise and independant of each other. Furthermore I’ve written up some documention in the actual controller itself so any questions regarding what that API actually does will hopefully be answered there.

Here’s a few demo videos for those just checking out the post.

You can find the demo place in the videos here (Uncopylocked):

You can find a link to the module itself here:
https://www.roblox.com/library/3260504030/Wall-walking-character-controller

Thanks, enjoy, and don’t forget to share your creations with the module! I’d love to see them!

Old Post

Over the last week or so I’ve been working on a custom character controller that allows players to defy gravity and do things like walk on walls and upside down. It has been my intention to release this to the public because I think if used correctly it can open up a lot of creativity in map design.

Features:

Ability to walk on simple geometry (e.g. bricks, wedges, etc)

2018-08-28 14-41-08 GIF | Gfycat

Ability to walk on complex geometry (e.g. mesh parts, unions) not terrain though

2018-08-28 14-42-57 GIF | Gfycat

Ability to walk on rotating parts without getting flung off

2018-08-28 14-40-39 GIF | Gfycat

Filtering enabled friendly and supports both rig types!

2018-08-28 14-57-30 GIF | Gfycat

Here are two examples of using the controller:

Edit: New placefiles with the suggestions @EchoReaper gave
playground.rbxl (82.4 KB)
upside down buttons.rbxl (55.7 KB)

You’ll note that in one example the controller is updated based on what you’re standing on while the other is set by the developer.

People I want to thank

@edenojack - Helped me test and run ideas off him.
@LPGhatguy, @ContextLost, & Fraktality - I shamelessly stole your hack week custom humanoid cylinder cast (thanks!).

Want to contribute?

As I mentioned I’ve been working on this for about a week now and I’m starting to get tired of it. I know at the moment it’s not perfect, but as far as I’m aware there’s nothing like it open to the public right now. If you think you’ve found a way to improve it then please feel free to reach out to me via a PM.

Thanks and enjoy!

535 Likes

Open source? Awesome man this will help alot of devs!

45 Likes

Very cool but it works slow on some devices

7 Likes

Which devices?

11 Likes

on my phone wich is a Zenfone 4 and my tablet and even my laptop with a i3

i need to use a powerful pc for it

10 Likes

I think I have a good idea of the cause, but to narrow it down I need to know if the upside down buttons place runs any better?

9 Likes

Very cool! Just a warning to anyone using it, Be sure not to fall off the parts you’re walking on : )

38 Likes

You made a feature I wanted to implement in one of my games possible !! I remembered trying, but I always had issues like the character not moving.
Thank you !!

12 Likes

amazing work! thank you! :smile:

10 Likes
wait(.1);

local character = game.Players.LocalPlayer.Character;

hmmmmmm

19 Likes

I had to add that because for whatever reason in server test mode I was having problems without it. If you can find a better way to hook the character then be my guest.

9 Likes

This will be useful for anime developers making Naruto Based games :open_mouth:

20 Likes

local character = localPlayer.CharacterAdded:wait()

16 Likes

I think thats the main issue in my opinion, that you just go flying to space if you walk off something
I’m pretty sure it wcould be fixed with modification

6 Likes

Tried that as well and was also having difficulties with it in one game mode or another.

7 Likes

There’s another bug where if you walk on those spinny things and walk off you’d get slingshotted in an orbit
I think this code is great, but it needs to have some features patched

6 Likes

That’s actually intended.

Although unrealistic it’s a trade off between being able to have more control on moving platforms and not. If it didn’t do this then every time you climbed a ladder on a moving object or jumped then your character would suddenly stop moving with the platform. It doesn’t look good :frowning:

6 Likes

The dilemma of wall walking right xd

6 Likes

local character = players.LocalPlayer.Character or players.LocalPlayer.CharacterAdded:Wait()

9 Likes

One of the problems I had was in server mode where the character was not nil, but the code was unable to find the humanoid. I think it might have had something to do with a plugin I have.

Regardless, I think it’s fair to say if you find a way to avoid that wait then go ahead and use it.

5 Likes