Hinge Door too heavy?

Hi,

I’ve been going back and forth trying to figure out how to fix this door. I made a hinger constraint door, and it opens from one side easily, but the other it’s very heavy. What causes this?

5 Likes

This happen if the door has Maseless off or if it’s touching the floor

2 Likes

Massless is enabled for every part in the door as for the floor I moved the door away and decreased the height of the floor and the issue still persists :confused:

2 Likes

Set the ActuatorType to Servo and change these settings if needed
image

2 Likes

I set AngularResponsive to 5 and it somewhat fixed the issue, the door is still a bit stiff and it doesn’t return back to position.

I think for that you would have to set the AngularSpeed

I’m still not getting the desired result :confused:

Here are my current settings and how it acts:


image

I had a similar problem in the past, and a fix for it was to make sure both of your attachments’ CFrame (middle-value) positions are the same. See below for context.

Screenshot 2024-02-25 214331

Weirdly enough, every hinge constraint starts off as very stiff for some unknown reason. Usually, waiting about 20-30 seconds will fix the stiff hinge issue. This could very well be a potential network-related issue.

Pushing a door when starting up a game:

Pushing a door 20-30 seconds later:

If none of these work, I would try turning off ‘CanCollide’ on the door frame so your door has a little more room to open and close smoothly.

Usually, this is why people prefer doors to have an open animation rather than physically opening a door with their torso. Hinge constraints can be very unreliable.

Hope this helps!

6 Likes

Hey!

Thanks for your detailed response. I do agree that hinge constraints can be unreliable, but being able to push a door open with the torso seems like such a neat feature to me. I’ll see if I can find anything about it because sadly the door is still heavy for me.

This is because of NetworkOwnership. The door isn’t heavy, it’s delayed since the server has network ownership. You could try this script inside the biggest part of your door that a player will touch:

script.Parent.Touched:Connect(function(b)
	
	local Player = game.Players:FindFirstChild(b.Parent.Name)
	if Player then
		if Player == script.Parent:GetNetworkOwner() then
			
		else
			script.Parent:SetNetworkOwner(Player)
		end
	end
end)

not sure if it works I didn’t test it

17 Likes

absolute god send this fixed it for me

2 Likes

Well there are some properties you can modify but mostly you gotta wait like 30 seconds after launching, for some reason it’s not stiff and doesn’t feel heavy after you wait a bit after launching in game.

Try uploading the game and seeing how the door behaves in the game itself. I remember in my game, the physics can be a little wonky while in studio causing doors to do just that. While in the game itself, they behave fine

You’re a hero. I been trying to figure this out for hours. Wondering how brookhaven does it.

2 Likes

how did this work it makes no sense

1 Like

It’s hard to explain and the best explanation is probably the documentation for Roblox.

Another solution that would work the EXACT same but with more reliability is doing something like this in a client script:

local Door = PathToDoor
local Parent = Door.Parent
local Clone = Door:Clone()
Door:Destroy()
Clone.Parent = Parent
script:Destroy()

-- This creates a version of the door for each client. If a different client uses the door it will replicate to your client because of how roblox physics work. It's a simple but amazing solution, and you could do this automatically for exammple a dooor dfolder.
2 Likes

The server has network ownership, meaning that the physics of the object runs of the server. If a client tries interacting with it, it may be delayed or jittery because the physics do not run off of the client.

But if you give the client network ownership of the part, the physics will run off of the client. This makes it appear a lot smoother and more responsive on your end.