How to sit in roblox without chair

For a little thing I am making.

I've seen click-to-(action) things in the past and thought they were much cooler.

For chairs, I think it's just kind of "buggy" to just walk up to a chair and walk ontop of it to sit. Does anyone have any idea how to work this?

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 JointInstance/C0|C0 and JointInstance/C1|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.

When sitting the Seat/Occupant property is set to the Humanoid that is ‘sitting’ in the seat. Furthermore the Humanoid/SeatPart property of the humanoid is set 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:

seat:FindFirstChild("SeatWeld"):Destroy()

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

bool

Whether or not the seat is usable. If set to true, the seat will act as a normal part.

Humanoid [ReadOnly] [NotReplicated]

The humanoid that is sitting in the seat

Inherited from BasePart: Show Hide

bool

Determines whether a part is immovable by physics

Vector3 [NotReplicated]

The angular velocity of the part’s assembly

Vector3 [ReadOnly] [NotReplicated]

The center of mass of the part’s assembly in world space

Vector3 [NotReplicated]

The linear velocity of the part’s assembly

float [ReadOnly] [NotReplicated]

The total mass of the part’s assembly

BasePart [ReadOnly] [NotReplicated]

A reference to the root part of the assembly

float [Hidden] [Deprecated]

Determines the first parameter for the SurfaceType on the Back face of a part (+Z direction)

float [Hidden] [Deprecated]

Determines the second parameter for the SurfaceType on the Back face of a part (+Z direction)

SurfaceType

Determines the type of surface for the Back face of a part (+Z direction)

InputType [Hidden] [Deprecated]

Determines the kind of input for the Back face of a part (+Z direction)

float [Hidden] [Deprecated]

Determines the first parameter for the SurfaceType on the Bottom face of a part (-Y direction)

float [Hidden] [Deprecated]

Determines the second parameter for the SurfaceType on the Bottom face of a part (-Y direction)

SurfaceType

Determines the type of surface for the Bottom face of a part (-Y direction)

InputType [Hidden] [Deprecated]

Determines the kind of input for the Bottom face of a part (-Y direction)

BrickColor [NotReplicated]

Determines the color of a part.

CFrame

Determines the position and rotation of a part in the world

bool

Determines whether a part may collide with other parts.

bool

Determines whether the part is considered during spatial query operations

bool

Determines if the part will trigger BasePart/Touched|Touched/BasePart/TouchEnded|TouchEnded events on other BasePart|BaseParts with TouchTransmitter|TouchTransmitters

bool

Determines whether or not a part casts a shadow.

Vector3 [ReadOnly] [NotReplicated]

Describes the world position in which a part’s center of mass is located.

int

Describes the automatically-set ID number of a part’s collision group

Color3 [NotReplicated]

Determines the color of a part.

PhysicalProperties

Determines several physical properties of a part

float [Hidden] [NotReplicated] [Deprecated]

Used to control the Elasticity of the part, but it no longer does anything

float [Hidden] [NotReplicated] [Deprecated]

Used to control the Friction of the part, but now it no longer does anything.

float [Hidden] [Deprecated]

Determines the first parameter for the SurfaceType on the Front face of a part (-Z direction)

float [Hidden] [Deprecated]

Determines the second parameter for the SurfaceType on the Front face of a part (-Z direction)

SurfaceType

Determines the type of surface for the Front face of a part (-Z direction)

InputType [Hidden] [Deprecated]

Determines the kind of input for the Front face of a part (-Z direction)

float [Hidden] [Deprecated]

Determines the first parameter for the SurfaceType on the Left face of a part (-Z direction)

float [Hidden] [Deprecated]

Determines the second parameter for the SurfaceType on the Left face of a part (-Z direction)

SurfaceType

Determines the type of surface for the Left face of a part (-X direction)

InputType [Hidden] [Deprecated]

Determines the kind of input for the Left face of a part (+X direction)

float [Hidden] [NotReplicated]

Determines a multiplier for BasePart/Transparency that is only visible to the local client

bool

Determines whether a part is selectable in Studio.

float [ReadOnly] [NotReplicated]

Describes the mass of the part, the product of its density and volume

bool

Determines whether the part contributes to the total mass or inertia of its rigid body

Material

Determines the texture and default physical properties of a part

Vector3 [NotReplicated]

Describes the position of the part in the world

CFrame

Specifies the offset of the part’s pivot from its datatype/CFrame.

Vector3 [NotReplicated]

Describes the position of the part in the world

float [Hidden] [ReadOnly] [NotReplicated]

Time since last recorded physics update

float

Determines how much a part reflects the skybox.

int [ReadOnly] [NotReplicated]

Describes the smallest change in size allowable by the Resize method

Faces [ReadOnly] [NotReplicated]

Describes the faces on which a part may be resized

float [Hidden] [Deprecated]

Determines the first parameter for the SurfaceType on the Right face of a part (-X direction)

float [Hidden] [Deprecated]

Determines the second parameter for the SurfaceType on the Right face of a part (-X direction)

SurfaceType

Determines the type of surface for the Right face of a part (+X direction)

InputType [Hidden] [Deprecated]

Determines the kind of input for the Right face of a part (-X direction)

int

The main rule in determining the root part of an assembly

Vector3 [Hidden] [Deprecated]

Determines a part’s change in orientation over time

Vector3 [NotReplicated]

The rotation of the part in degrees for the three axes

Vector3 [NotReplicated]

Determines the dimensions of a part (length, width, height)

float [ReadOnly] [NotReplicated] [Deprecated]

The ratio of the part’s density to the density of water determined by the BasePart/Material

float [Hidden] [Deprecated]

Determines the first parameter for the SurfaceType on the Top face of a part (+Y direction)

float [Hidden] [Deprecated]

Determines the second parameter for the SurfaceType on the Top face of a part (+Y direction)

SurfaceType

Determines the type of surface for the Top face of a part (+Y direction)

InputType [Hidden] [Deprecated]

Determines the kind of input for the Top face of a part (+Y direction)

float

Determines how much a part can be seen through (the inverse of part opacity)

Vector3 [Hidden] [Deprecated]

Determines a part’s change in position over time

BrickColor [NotReplicated] [Deprecated]

Inherited from PVInstance: Show Hide

Vector3 [NotReplicated] [NotScriptable]

Editor-only property used to rotate the object around its pivot. Scripts must use PVInstance/PivotTo instead.

Vector3 [NotReplicated] [NotScriptable]

Editor-only property used to move the object. Scripts must use PVInstance/PivotTo instead.

Vector3 [NotReplicated] [NotScriptable]

Editor-only property to set the orientation of the pivot relative to a part. Scripts must use BasePart/PivotOffset instead.

Vector3 [NotReplicated] [NotScriptable]

Editor-only property to set the position of the pivot relative to a part. Scripts must use BasePart/PivotOffset instead.

Inherited from Instance: Show Hide

bool

Determines if an Instance can be cloned using /Instance/Clone or saved to file.

string [ReadOnly] [NotReplicated]

A read-only string representing the class this Instance belongs to

int [Hidden] [ReadOnly] [NotReplicated] [Deprecated]

The cost of saving the instance using data persistence.

string

A non-unique identifier of the Instance

Instance [NotReplicated]

Determines the hierarchical parent of the Instance

bool [Hidden]

A deprecated property that used to protect CoreGui objects

int64 [Hidden] [NotReplicated]
bool [Hidden] [NotReplicated] [Deprecated]
string [ReadOnly] [NotReplicated] [Deprecated]

void

Forces the character with the specified Humanoid to sit in the Seat.

Inherited from BasePart: Show Hide

void

Apply an angular impulse to the assembly

void

Apply an impulse to the assembly at the assembly’s BasePart/AssemblyCenterOfMass|center of mass

void

Apply an impulse to the assembly at specified position

void

Breaks any surface connection with any adjacent part, including Weld and other JointInstance.

bool

Returns whether the parts can collide with each other.

Tuple

Checks whether you can set a BasePart|part's network ownership

Objects

Returns a table of parts connected to the the object by any kind of rigid joint.

Objects

Return all Joints or Constraints that is connected to this Part.

float

Returns the value of the BasePart/Mass|Mass property.

Instance

Returns the current player who is the network owner of this part, or nil in case of the server.

bool

Returns true if the game engine automatically decides the network owner for this part.

CFrame [Deprecated]

(OBSOLETE) Returns a CFrame describing where the part is being rendered at

Instance

Returns the base part of an assembly of parts

Objects

Returns a table of all BasePart/CanCollide true parts that intersect with this part

bool

Returns true if the object is connected to a part that will hold it in place (eg an BasePart/Anchored part), otherwise returns false.

void

Creates a joint on any side of the object that has a surface ID that can make a joint

bool

Changes the size of an object just like using the Studio resize tool.

void

Sets the given player as network owner for this and all connected parts

void

Lets the game engine dynamically decide who will handle the part’s physics (one of the clients or the server).

Instance [Yields]

Creates a new UnionOperation which occupies the same space as the part minus the space(s) occupied by the parts in the given array.

Instance [Yields]

Performs a Union operation on the calling BasePart and the list of parts passed in as the first parameter

Inherited from PVInstance: Show Hide

CFrame

Gets the pivot of a PVInstance.

void

Transforms the PVInstance along with all of its descendant PVInstance|PVInstances such that the pivot is now located at the specified datatype/CFrame.

Inherited from Instance: Show Hide

void

This function destroys all of an Instance’s children.

Instance

Create a copy of an object and all its descendants, ignoring objects that are not Instance/Archivable|Archivable

void

Sets the Instance/Parent property to nil, locks the Instance/Parent property, disconnects all connections, and calls Destroy on all children.

Instance

Returns the first ancestor of the Instance whose Instance/Name is equal to the given name.

Instance

Returns the first ancestor of the Instance whose Instance/ClassName is equal to the given className.

Instance

Returns the first ancestor of the Instance for whom Instance/IsA returns true for the given className.

Instance

Returns the first child of the Instance found with the given name.

Instance

Returns the first child of the Instance whose Instance/ClassName|ClassName is equal to the given className.

Instance

Returns the first child of the Instance for whom Instance/IsA returns true for the given className.

Instance

Returns the first descendant found with the given Instance/Name.

Actor

Returns the Actor associated with the Instance, usually the first Actor ancestor

Variant

Returns the attribute which has been assigned to the given name

RBXScriptSignal

Returns an event that fires when the given attribute changes

Dictionary

Returns a dictionary of string → variant pairs for each of the Instance|Instance’s attributes

Objects

Returns an array containing all of the Instance’s children.

string [NotBrowsable]

Returns a coded string of the Instances DebugId used internally by Roblox.

Array [CustomLuaState]

Returns an array containing all of the descendants of the instance

string

Returns a string describing the Instance’s ancestry.

RBXScriptSignal

Get an event that fires when a given property of an object changes.

bool [CustomLuaState]

Returns true if an Instance’s class matches or inherits from a given class

bool

Returns true if an Instance is an ancestor of the given descendant.

bool

Returns true if an Instance is a descendant of the given ancestor.

void [Deprecated]

Sets the object’s Parent to nil, and does the same for all its descendants.

void

Sets the attribute with the given name to the given value

Instance [CustomLuaState] [CanYield]

Returns the child of the Instance with the given name. If the child does not exist, it will yield the current thread until it does.

Objects [Deprecated]

Returns an array of the object’s children.

bool [Deprecated] [CustomLuaState]

This code sample includes a demonstration of how the Seat/Occupant property can be used to track which player is sitting in a seat and when they sit down or sit up.