[Release] Custom character controller


#1

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)

https://gfycat.com/AltruisticSeparateBittern

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

https://gfycat.com/NauticalEcstaticLeopard

Ability to walk on rotating parts without getting flung off

https://gfycat.com/BlandFelineKudu

Filtering enabled friendly and supports both rig types!

https://gfycat.com/CelebratedLegalHyracotherium

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!


Game Development Resources [MEGA THREAD]
Tilting a character?
Slope Orientation Issues
Making a HumanoidRootPart not standup straight
Most efficient way to simulate gravitational attraction in realtime?
#2

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


#3

Very cool but it works slow on some devices


#4

Which devices?


#5

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


#6

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?


#7

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


#8

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 !!


#9

amazing work! thank you! :smile:


#10
wait(.1);

local character = game.Players.LocalPlayer.Character;

hmmmmmm


#11

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.


#12

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


#13

local character = localPlayer.CharacterAdded:wait()


#14

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


#15

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


#16

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


#17

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:


#18

The dilemma of wall walking right xd


#19

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


#20

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.