If you’ve been following the context clues of my previous post, I’m writing a custom Humanoid. Now, this being my first time I’m not sure if I’m just doing it wrong, but it seems that the SeatPart property of Humanoids is never cleaned up while the Humanoid is under the Physics state.
This is a big problem because there is nothing I can do to make them sit in any seats again. The property is read-only (arbitrarily, in my opinion), so I can’t even circumvent this bug because I can’t set it to nil myself.
The Humanoid still sits upon contact with SeatParts just fine, and it is expected under the restrained Physics behavior that leaving the seat must be manually coded since the SeatWeld is not automatically destroyed. The SeatPart property remains regardless of any method (see repro steps below) to reset the Humanoid’s sitting state.
Curiously, by leaving the seat with server-sided code, the SeatPart becomes nil on the server but remains as is on the client. A very frustrating case of reverse replication. See edit.
Steps to repro
- Set state of player’s Humanoid to Physics
- Lug the player onto to a SeatPart
- Using a LocalScript, separate them from the seat either by destroying the SeatWeld or setting the Disabled property of the SeatPart to true
The Humanoid’s SeatPart should still be registered as the previous seat.
EDIT: I’ve found a workaround that cleans up the SeatPart, but the behavior is still terribly inconsistent and should be looked into.
To clean up the SeatPart property, you can use server-sided code to momentarily disable the SeatPart. Only deleting the SeatWeld does not work.