Stop setting humanoid limb CanCollide on RenderStepped

Enough is enough. I get the feeling you already have scriptable humanoids on your bucket list since we’ve been heading in that direction, but the direction we’re heading also tells me it won’t be done any time soon. I, and I’m sure countless others who have posted threads regarding humanoid collisions would strongly appreciate if you made humanoids less greedy. They shouldn’t be setting CanCollide to true/false on RenderStepped – CanCollide should be set once, and no more than that, when collisions need to change in order to give us proper control. It was impossible for Osyris to make a character that bent its torso forward/backward properly because he couldn’t set the torso’s collisions to off, it’s been almost impossible to create characters you can walk through because of humanoids (Spacek found a way but it’s more work than we should have to be doing), and here I am unable to make a proper first-person body because I can’t turn collisions off for something that’s purely aesthetical. Bye bye humaoid collision overwrites and good riddance please.

23 Likes

That’s quite an odd behavior in general too, considering the event-based nature of Roblox.

3 Likes

Here’s the thread he’s referring to. (Scroll down) One of the most hacky things I’ve ever made. The issue in the end was that, if a player aimed their gun downwards, causing the player to bend over forwards, the Torso would collide with any wall in front of them.

While the game was intended to be forced third person and this wouldn’t be an issue if players clipped through walls partially, the issue was that I couldn’t turn off collisions for the Torso. Basically this meant, if you aimed up and then down fast enough when you’re close to a wall, you’d fling yourself across the map.

3 Likes

Bump.

I am being bothered by this. I want to be able to turn off Roblox’s auto-everystep-CanCollide setting for parts inside a humanoid. Maybe if it was a bool on the humanoid, or if it was in lua so that I could adjust it. That would be fantastic.

3 Likes

A year already?

Nobody wants it and nobody depends on it. For the love of all that is holy, please remove it.

It doesn’t need to be exposed through the API. Just remove this behavior and end the madness.

I can’t think of a real situation where you’d want CanCollide to revert after setting it, so it’s very unlikely that this change would break anything on our side. No setting is needed.

8 Likes

Well, there does need to be an API or controller, because the collisions do change depending on the humanoid state. But it is absolutely maddening that these parts are unavoidably having CanCollide set every frame.

1 Like

clarify

1 Like

I believe that when a character enters a tripped state, the arms are being set to CanCollide true, but when walking around, the arms are continually having CanCollide set to false so that the character can walk through doorways easier.

I just want to set the character rig to CanCollide false so that I make a custom collider depending on the game. Or make my own custom ragdoll state where I can set certain pieces to certain collisions. Or locally set other players’ characters’ parts to CanCollide false so that you can walk through them. I’ve had so many problems that his would solve.

1 Like

Roblox is adding collision filters in the near-ish future, which should hopefully help you work around this.

2 Likes

Bumping this. This has been a problem for far too long. Workarounds always either involve having to create a collision group or disable collision on stepped, this is just unacceptable.

I’ll provide an example. Take a look at this below example.

Player dies and ragdolls,
Player’s arm gets chopped off (Cloning the arm and cframing it), because of this we disable the collision.
This cloned arm will collide with the original arm, making it float in the air.

The only workarounds consist of breaking the original arm joint (which could not or may not be done in some work cases), setting collision of the original arm on stepped.

I dont consider creating a collision group as an acceptable solution though, because if the developer was to adopt that approach they would have to create 6 collision groups (Torso, Arms, Legs and Head) to prevent collision. Imagine if it was R15, that would be 15 collision groups going to waste and that is nearly HALF of the maximum group count of 32.

It’s been nearly a decade now, it’s time for Humanoids to be reworked in some way shape or form as there is far too much backend logic that is too hacky for developers to fix (NetworkOwnership for player characters automatically resetting, CanCollide on renderstepped, Humanoid.Died only firing on the Client and not the Server on reset, ETC).

2 Likes

This is already possible with workspace.HumanoidOnlySetCollisionOnStateChange (it’s something along the lines of that)
(Oops, probably should have replied to the post above since it’s newer)

4 Likes

Workspace property HumanoidOnlySetCollisionsOnStateChange it the official way to not have this happen. After that, it’s a simple Humanoid.StateChanged script, quite a lot less hacky and far easier.

No? I’m pretty sure you can use one collision group for all of the characters objects.

2 Likes

This would create unintended behaviors like cloned Left Arms colliding with other limbs, something I may not want to happen.

This is the first time I’m hearing about this, thanks for sending that. Still though, I dont think this should be something left as a property in workspace, but rather a feature that just does not exist, having collisions set on RenderStepped just makes no sense

1 Like

This property should default to true. There is, like everyone has said for years, no need for this current behavior. If a game needs this behavior, they should change it to every frame.
Current behavior makes it infinitely harder to just set the property in a script and go with it without worrying about a property that can only be changed in studio. The documentation even states that this property is going to be changed to default Enabled, but has yet to happen.

3 Likes

Sorry for the bump, but I can’t find the “HumanoidOnlySetCollisionsOnStateChange” property anywhere, not in workspace nor in humanoids. Can’t seem to find anything about it in documentation either. So is this a mistake of mine or did this get removed? Thanks!

I support this feature, it would make it a lot easier to make ragdolls and whatnot this way.

The property was removed, it used to be a Workspace setting. The collision is now only set whenever the Humanoid’s state changes.

1 Like

Oh, thank you!!! I was really confused lol

late bump, would really help if this was a opt,

if you setnetworkowner to character baseparts and remove the motors.

then, if you heartbeat or use statechanged event to turn cancollide back to true - this breaks the physics in the game with a repeat on cancollide setting true to false - [returning back to false to true].

i remember this being a thing - but i wonder why this was taken down? Humanoid Part Collision Changing - 'Only On State Change'