A type of BasePart that a player character can 'sit' in. When a character touches an enabled Seat object, it will be attached to the part by a Weld and the default character scripts will play a sitting animation.
How do Seats work?
When a model containing a Humanoid and a BasePart called 'HumanoidRootPart' (generally a player character) touches a seat, a Weld is created between the seat and the part. The C0 and C1 properties are configured so that the character is welded 2 studs above the seat. This weld is named 'SeatWeld' and parented to the seat.
A character can also be forced to sit in a seat using the Seat:Sit() function.
There are two ways for a character to get out of a seat. When a player jumps, they are removed from the seat. However this can also be done manually by destroying the seat weld, for example:
Note seats have a cooldown (currently 3 seconds) that is on a per-character per-seat basis. This means once a character has gotten out of a seat they cannot sit back on the same seat for 3 seconds. This cooldown behavior may change and should not be relied upon by developers.
What can Seats be used for?
Seats have a diverse range of uses, ranging from the obvious to the more unconventional.
- Creating chairs or benches without the need for any programming
- Allowing characters to 'sit' in moving objects such as vehicles without getting flung around
- Creating interfaces that are controlled by the character in the seat using the Seat.Occupant property
local Players = game:GetService("Players")local seat = Instance.new("Seat")seat.Anchored = trueseat.Position = Vector3.new(0, 1, 0)seat.Parent = workspacelocal currentPlayer = nillocal function onOccupantChanged()local humanoid = seat.Occupantif humanoid thenlocal character = humanoid.Parentlocal player = Players:GetPlayerFromCharacter(character)if player thenprint(player.Name .. " has sat down")currentPlayer = playerreturnendendif currentPlayer thenprint(currentPlayer.Name .. " has got up")currentPlayer = nilendendseat:GetPropertyChangedSignal("Occupant"):Connect(onOccupantChanged)
Whether or not the seat is usable. If set to true, the seat will act as a normal part.
The humanoid that is sitting in the seat