16 min read

Source: Roblox Creator Hub · CC BY 4.0 · View source · Code samples: MIT Imported 2026-10-03. Formatting adapted for this site.

VehicleSeat

Inherits from: BasePart → PVInstance → Instance → Object

The VehicleSeat objects welds a player to the seat when the player touches the seat. It then forwards the movement inputs to any connected motor joints, allowing control of a vehicle.

While VehicleSeat is great for making simple vehicles they do have some limitations. Movement control will only detect motors connected directly to the vehicle seat, or through another rigid connection. This means that if you have a wheel connected to a beam which is then welded to the seat it will work fine, however if you have the wheel connected to a part, which is connected by a hinge to the rest of the car, it will not work.

Inherits from: BasePart

Memory category: Instances

Properties

NameType / ReturnsDescription
VehicleSeat.AreHingesDetectedintDisplays how many hinges are detected by the VehicleSeat. Useful for debugging vehicle designs.
VehicleSeat.DisabledbooleanToggles whether the VehicleSeat is active or not.
VehicleSeat.HeadsUpDisplaybooleanIf true, a UI speed bar will be displayed on screen that tells you what speed the vehicle is moving at.
VehicleSeat.MaxSpeedfloatThe maximum speed that can be attained.
VehicleSeat.OccupantHumanoidThe Humanoid that is sitting in the seat.
VehicleSeat.SteerintThe direction of movement, tied to left and right movement inputs.
VehicleSeat.SteerFloatfloatThe left-to-right movement float, tied to left and right movement inputs.
VehicleSeat.ThrottleintThe direction of throttle, tied to forward and backward movement inputs.
VehicleSeat.ThrottleFloatfloatThe forward-to-reverse throttle float, tied to forward and backward movement inputs.
VehicleSeat.TorquefloatHow fast the vehicle will be able to attain MaxSpeed.
VehicleSeat.TurnSpeedfloatThe speed at which the vehicle will turn. Higher numbers can cause problems and are not necessarily better.

Inherited from BasePart

NameType / ReturnsDescription
BasePart.AnchoredbooleanDetermines whether a part is immovable by physics.
BasePart.AssemblyAngularVelocityVector3The angular velocity of the part's assembly.
BasePart.AssemblyCenterOfMassVector3The center of mass of the part's assembly in world space.
BasePart.AssemblyLinearVelocityVector3The linear velocity of the part's assembly.
BasePart.AssemblyMassfloatThe total mass of the part's assembly.
BasePart.AssemblyRootPartBasePartA reference to the root part of the assembly.
BasePart.AudioCanCollidebooleanDetermines whether the part will physically interact with audio simulation, similar to CastShadow for lighting.
BasePart.BackParamAfloatDetermines the first parameter for the SurfaceType on the Back face of a part.
BasePart.BackParamBfloatDetermines the second parameter for the SurfaceType on the Back face of a part.
BasePart.BackSurfaceSurfaceTypeDetermines the type of surface for the back face of a part.
BasePart.BackSurfaceInputInputTypeDetermines the kind of input for the Back face of a part.
BasePart.BottomParamAfloatDetermines the first parameter for the SurfaceType on the Bottom face of a part.
BasePart.BottomParamBfloatDetermines the second parameter for the SurfaceType on the Bottom face of a part.
BasePart.BottomSurfaceSurfaceTypeDetermines the type of surface for the bottom face of a part.
BasePart.BottomSurfaceInputInputTypeDetermines the kind of input for the Bottom face of a part.
BasePart.BrickColorBrickColorDetermines the color of a part.
BasePart.brickColorBrickColor
BasePart.CanCollidebooleanDetermines whether a part may collide with other parts.
BasePart.CanQuerybooleanDetermines whether the part is considered during spatial query operations.
BasePart.CanTouchbooleanDetermines if Touched and TouchEnded events fire on the part.
BasePart.CastShadowbooleanDetermines whether or not a part casts a shadow.
BasePart.CenterOfMassVector3Describes the world position in which a part's center of mass is located.
BasePart.CFrameCFrameDetermines the position and orientation of the BasePart in the world.
BasePart.CollisionGroupstringDescribes the name of a part's collision group.
BasePart.CollisionGroupIdintDescribes the automatically set ID number of a part's collision group.
BasePart.ColorColor3Determines the color of a part.
BasePart.CurrentPhysicalPropertiesPhysicalPropertiesIndicates the current physical properties of the part.
BasePart.CustomPhysicalPropertiesPhysicalPropertiesDetermines several physical properties of a part.
BasePart.ElasticityfloatUsed to control the Elasticity of the part, but it no longer does anything.
BasePart.EnableFluidForcesbooleanUsed to enable or disable aerodynamic forces on parts and assemblies.
BasePart.ExtentsCFrameCFrameThe CFrame of the physical extents of the BasePart.
BasePart.ExtentsSizeVector3The actual physical size of the BasePart as regarded by the physics engine.
BasePart.FrictionfloatUsed to control the Friction of the part, but now it no longer does anything.
BasePart.FrontParamAfloatDetermines the first parameter for the SurfaceType on the Front face of a part.
BasePart.FrontParamBfloatDetermines the second parameter for the SurfaceType on the Front face of a part.
BasePart.FrontSurfaceSurfaceTypeDetermines the type of surface for the front face of a part.
BasePart.FrontSurfaceInputInputTypeDetermines the kind of input for the Front face of a part (-Z direction).
BasePart.LeftParamAfloatDetermines the first parameter for the SurfaceType on the Left face of a part.
BasePart.LeftParamBfloatDetermines the second parameter for the SurfaceType on the Left face of a part.
BasePart.LeftSurfaceSurfaceTypeDetermines the type of surface for the left face of a part.
BasePart.LeftSurfaceInputInputTypeDetermines the kind of input for the Left face of a part.
BasePart.LocalTransparencyModifierfloatDetermines a multiplier for BasePart.Transparency that is only visible to the local client.
BasePart.LockedbooleanDetermines whether a part is selectable in Studio.
BasePart.MassfloatDescribes the mass of the part, the product of its density and volume.
BasePart.MasslessbooleanDetermines whether the part contributes to the total mass or inertia of its rigid body.
BasePart.MaterialMaterialDetermines the texture and default physical properties of a part.
BasePart.MaterialVariantstringThe name of MaterialVariant.
BasePart.OrientationVector3Describes the rotation of the part in the world.
BasePart.PivotOffsetCFrameSpecifies the offset of the part's pivot from its CFrame.
BasePart.PositionVector3Describes the position of the part in the world.
BasePart.ReceiveAgefloatTime since last recorded physics update.
BasePart.ReflectancefloatDetermines how much a part reflects the skybox.
BasePart.ResizeableFacesFacesDescribes the faces on which a part may be resized.
BasePart.ResizeIncrementintDescribes the smallest change in size allowable by the Resize() method.
BasePart.RightParamAfloatDetermines the first parameter for the SurfaceType on the Right face of a part.
BasePart.RightParamBfloatDetermines the second parameter for the SurfaceType on the Right face of a part.
BasePart.RightSurfaceSurfaceTypeDetermines the type of surface for the right face of a part.
BasePart.RightSurfaceInputInputTypeDetermines the kind of input for the Right face of a part (-X direction).
BasePart.RootPriorityintThe main rule in determining the root part of an assembly.
BasePart.RotationVector3The rotation of the part in degrees for the three axes.
BasePart.RotVelocityVector3Determines a part's change in orientation over time.
BasePart.SizeVector3Determines the dimensions of a part (length, height, width).
BasePart.SpecificGravityfloatThe ratio of the part's density to the density of water determined by the BasePart.Material.
BasePart.TopParamAfloatDetermines the first parameter for the SurfaceType on the Top face of a part.
BasePart.TopParamBfloatDetermines the second parameter for the SurfaceType on the Top face of a part.
BasePart.TopSurfaceSurfaceTypeDetermines the type of surface for the top face of a part.
BasePart.TopSurfaceInputInputTypeDetermines the kind of input for the Top face of a part (+Y direction).
BasePart.TransparencyfloatDetermines how much a part can be seen through (the inverse of part opacity).
BasePart.VelocityVector3Determines a part's change in position over time.

Inherited from PVInstance

NameType / ReturnsDescription
PVInstance.OriginCFrameEditor-only property that reads and sets the world CFrame of the PVInstance's pivot, moving the entire instance when changed from the Studio Properties window.
PVInstance.Pivot OffsetCFrameEditor-only property that displays and edits the pivot's CFrame relative to the instance, moving only the pivot and leaving the instance in place.

Inherited from Instance

NameType / ReturnsDescription
Instance.ArchivablebooleanDetermines if an Instance and its descendants can be cloned using Instance:Clone(), and can be saved/published.
Instance.archivableboolean
Instance.CapabilitiesSecurityCapabilitiesThe set of capabilities allowed to be used for scripts inside this container.
Instance.IsInSandboxbooleanIndicates whether the instance is inside a sandboxed container.
Instance.NamestringA non-unique identifier of the Instance.
Instance.ParentInstanceDetermines the hierarchical parent of the Instance.
Instance.PredictionModePredictionModeReflects the client-side prediction mode applied to the instance under server-authoritative physics.
Instance.RobloxLockedbooleanA deprecated property that used to protect CoreGui objects.
Instance.SandboxedbooleanWhen enabled, the instance can only access abilities in its Capabilities list.
Instance.UniqueIdUniqueIdA unique identifier for the instance.

Inherited from Object

NameType / ReturnsDescription
Object.ClassNamestringA read-only string representing the class this Object belongs to.
Object.classNamestring

VehicleSeat.AreHingesDetected

Displays how many hinges are detected by the VehicleSeat. Useful for debugging vehicle designs.

FieldValue
typeint
tags["ReadOnly","NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryControl
serialization{"can_load":false,"can_save":false}
capabilities["Basic","AvatarBehavior"]

VehicleSeat.Disabled

Toggles whether the VehicleSeat is active or not. If the seat is disabled, it will not automatically weld a character to it on collision and will not allow a character to control the connected vehicle.

FieldValue
typeboolean
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryControl
serialization{"can_load":true,"can_save":true}
capabilities["Basic","AvatarBehavior"]
simulationAccesstrue

VehicleSeat.HeadsUpDisplay

If true, a UI speed bar will be displayed on screen that tells you what speed the vehicle is moving at.

FieldValue
typeboolean
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryControl
serialization{"can_load":true,"can_save":true}
capabilities["Basic","AvatarBehavior"]

VehicleSeat.MaxSpeed

The maximum speed that can be attained.

FieldValue
typefloat
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryControl
serialization{"can_load":true,"can_save":true}
capabilities["Basic","AvatarBehavior"]
simulationAccesstrue

VehicleSeat.Occupant

The Humanoid that is sitting in the seat.

FieldValue
typeHumanoid
tags["ReadOnly","NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryControl
serialization{"can_load":false,"can_save":false}
capabilities["Basic","AvatarBehavior"]
simulationAccesstrue

VehicleSeat.Steer

Deprecated. This property is no longer replicated and has been deprecated in favor of SteerFloat which is a float variant and should be used instead.

The direction of movement, tied to left and right movement inputs. Can be either 1 (right), 0 (straight), or -1 (left). Will refresh back to 0 unless constantly set.

FieldValue
typeint
tags["NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryControl
serialization{"can_load":true,"can_save":true}
capabilities["Basic","AvatarBehavior"]
simulationAccesstrue

VehicleSeat.SteerFloat

The left-to-right movement float, tied to left and right movement inputs. Can range between 1 (right) and -1 (left). Will refresh back to 0 (straight) unless constantly set.

FieldValue
typefloat
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryControl
serialization{"can_load":true,"can_save":true}
capabilities["Basic","AvatarBehavior"]
simulationAccesstrue

VehicleSeat.Throttle

Deprecated. This property is not longer replicated and has been deprecated in favor of ThrottleFloat which is a float variant and should be used instead.

The direction of throttle, tied to forward and backward movement inputs. Can be either 1 (forward), 0 (null), or -1 (reverse). Will refresh back to 0 unless constantly set.

FieldValue
typeint
tags["NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryControl
serialization{"can_load":true,"can_save":true}
capabilities["Basic","AvatarBehavior"]
simulationAccesstrue

VehicleSeat.ThrottleFloat

The forward-to-reverse throttle float, tied to forward and backward movement inputs. Can range between 1 (forward) and -1 (reverse). Will refresh back to 0 (null) unless constantly set.

FieldValue
typefloat
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryControl
serialization{"can_load":true,"can_save":true}
capabilities["Basic","AvatarBehavior"]
simulationAccesstrue

VehicleSeat.Torque

How fast the vehicle will be able to attain MaxSpeed. The greater the number, the faster it will reach the maximum speed.

FieldValue
typefloat
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryControl
serialization{"can_load":true,"can_save":true}
capabilities["Basic","AvatarBehavior"]
simulationAccesstrue

VehicleSeat.TurnSpeed

The speed at which the vehicle will turn. Higher numbers can cause problems and are not necessarily better.

FieldValue
typefloat
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryControl
serialization{"can_load":true,"can_save":true}
capabilities["Basic","AvatarBehavior"]
simulationAccesstrue

Methods

NameType / ReturnsDescription
VehicleSeat:Sit()Forces the character with the specified Humanoid to sit in the VehicleSeat.

Inherited from BasePart

NameType / ReturnsDescription
BasePart:AngularAccelerationToTorqueVector3Returns the torque needed to achieve a given angular acceleration on this part's assembly, optionally accounting for gyroscopic effects.
BasePart:ApplyAngularImpulse()Apply an angular impulse to the assembly.
BasePart:ApplyImpulse()Apply an impulse to the assembly at the assembly's center of mass.
BasePart:ApplyImpulseAtPosition()Apply an impulse to the assembly at specified position.
BasePart:BreakJoints()Breaks any surface connection with any adjacent part, including Weld and other JointInstance.
BasePart:breakJoints()
BasePart:CanCollideWithbooleanReturns whether the parts can collide with each other.
BasePart:CanSetNetworkOwnershipTupleChecks whether you can set a part's network ownership.
BasePart:GetClosestPointOnSurfaceVector3Returns the closest point on the part's surface to the given point.
BasePart:GetConnectedPartsListReturns a table of parts connected to the object by any kind of rigid joint.
BasePart:GetJointsInstancesReturn all Joints or Constraints that is connected to this Part.
BasePart:GetMassfloatReturns the value of the Mass property.
BasePart:getMassfloat
BasePart:GetNetworkOwnerInstanceReturns the current player who is the network owner of this part, or nil in case of the server.
BasePart:GetNetworkOwnershipAutobooleanReturns true if the game engine automatically decides the network owner for this part.
BasePart:GetNoCollisionConstraintsInstancesReturns the enabled NoCollisionConstraint objects currently registered for this part in its physics world.
BasePart:GetRenderCFrameCFrameOBSOLETE. Returns a CFrame describing where the part is being rendered at.
BasePart:GetRootPartInstanceReturns the base part of an assembly of parts.
BasePart:GetTouchingPartsInstancesReturns a table of all BasePart.CanCollide true parts that intersect with this part.
BasePart:GetVelocityAtPositionVector3Returns the linear velocity of the part's assembly at the given position relative to this part.
BasePart:IntersectAsyncInstanceCreates a new IntersectOperation from the overlapping geometry of the part and the other parts in the given array.
BasePart:IsGroundedbooleanReturns true if the object is connected to a part that will hold it in place (eg an Anchored part), otherwise returns false.
BasePart:MakeJoints()Creates a joint on any side of the object that has a surface ID that can make a joint.
BasePart:makeJoints()
BasePart:ResizebooleanChanges the size of an object just like using the Studio resize tool.
BasePart:resizeboolean
BasePart:SetNetworkOwner()Sets the given player as network owner for this and all connected parts.
BasePart:SetNetworkOwnershipAuto()Lets the game engine dynamically decide who will handle the part's physics (one of the clients or the server).
BasePart:SubtractAsyncInstanceCreates a new UnionOperation from the part, minus the geometry occupied by the parts in the given array.
BasePart:TorqueToAngularAccelerationVector3Returns the angular acceleration that would result from applying a given torque to this part's assembly, optionally accounting for gyroscopic effects.
BasePart:UnionAsyncInstanceCreates a new UnionOperation from the part, plus the geometry occupied by the parts in the given array.

Inherited from PVInstance

NameType / ReturnsDescription
PVInstance:GetPivotCFrameGets the pivot of a PVInstance.
PVInstance:PivotTo()Transforms the PVInstance along with all of its descendant PVInstances such that the pivot is now located at the specified CFrame.

Inherited from Instance

NameType / ReturnsDescription
Instance:AddTag()Applies a tag to the instance.
Instance:childrenInstancesReturns an array of the object's children.
Instance:ClearAllChildren()This method destroys all of an instance's children.
Instance:CloneInstanceCreate a copy of an instance and all its descendants, ignoring instances that are not Archivable.
Instance:cloneInstance
Instance:Destroy()Sets the Instance.Parent property to nil, locks the Instance.Parent property, disconnects all connections, and calls Destroy() on all children.
Instance:destroy()
Instance:FindFirstAncestorInstance?Returns the first ancestor of the Instance whose Instance.Name is equal to the given name.
Instance:FindFirstAncestorOfClassInstance?Returns the first ancestor of the Instance whose Object.ClassName is equal to the given className.
Instance:FindFirstAncestorWhichIsAInstance?Returns the first ancestor of the Instance for whom Object:IsA() returns true for the given className.
Instance:FindFirstChildInstance?Returns the first child of the Instance found with the given name.
Instance:findFirstChildInstance
Instance:FindFirstChildOfClassInstance?Returns the first child of the Instance whose ClassName is equal to the given class name.
Instance:FindFirstChildWhichIsAInstance?Returns the first child of the Instance for whom Object:IsA() returns true for the given className.
Instance:FindFirstDescendantInstance?Returns the first descendant found with the given Instance.Name.
Instance:GetActorActor?Returns the Actor associated with the Instance, if any.
Instance:GetAttributeVariantReturns the value which has been assigned to the given attribute name.
Instance:GetAttributeChangedSignalRBXScriptSignalReturns an event that fires when the given attribute changes.
Instance:GetAttributesDictionaryReturns a dictionary of the instance's attributes.
Instance:GetChildrenInstancesReturns an array containing all of the instance's children.
Instance:getChildrenInstances
Instance:GetDebugIdstringReturns a coded string of the debug ID used internally by Roblox.
Instance:GetDescendantsInstancesReturns an array containing all of the descendants of the instance.
Instance:GetFullNamestringReturns a string describing the instance's ancestry.
Instance:GetStyledVariantReturns the styled or explicitly modified value of the specified property, or else the default property value if it hasn't been styled/modified.
Instance:GetStyledPropertyChangedSignalRBXScriptSignalReturns an event that fires when the given style property changes on the instance.
Instance:GetTagsArrayGets an array of all tags applied to the instance.
Instance:HasTagbooleanCheck whether the instance has a given tag.
Instance:IsAncestorOfbooleanReturns true if an Instance is an ancestor of the given descendant.
Instance:IsDescendantOfbooleanReturns true if an Instance is a descendant of the given ancestor.
Instance:isDescendantOfboolean
Instance:IsPropertyModifiedbooleanReturns true if the value stored in the specified property is not equal to the code-instantiated default.
Instance:QueryDescendantsInstancesReturns an array containing all descendants of the instance that match the selector string.
Instance:Remove()Sets the object's Parent to nil, and does the same for all its descendants.
Instance:remove()
Instance:RemoveTag()Removes a tag from the instance.
Instance:ResetPropertyToDefault()Resets a property to its default value.
Instance:SetAttribute()Sets the attribute with the given name to the given value.
Instance:WaitForChildInstanceReturns the child of the Instance with the given name. If the child does not exist, it will yield the current thread until it does.

Inherited from Object

NameType / ReturnsDescription
Object:GetPropertyChangedSignalRBXScriptSignalGet an event that fires when a given property of the object changes.
Object:IsAbooleanReturns true if an object's class matches or inherits from a given class.
Object:isAboolean

VehicleSeat:Sit

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

Parameters

NameTypeDefaultDescription
humanoidInstanceThe Humanoid being forced to sit in the VehicleSeat.

Returns

TypeDescription
()
FieldValue
securityNone
thread safetyUnsafe
capabilities["Basic","AvatarBehavior"]

Events

Inherited from BasePart

NameType / ReturnsDescription
BasePart.LocalSimulationTouchedFires on the local client when another part comes in contact with this part.
BasePart.OutfitChangedFires when the part's appearance changes due to a Shirt.
BasePart.StoppedTouchingFires on the local client when a part stops touching another part.
BasePart.TouchedFires when a part touches another part as a result of physical movement.
BasePart.TouchEndedFires when a part stops touching another part as a result of physical movement.

Inherited from Instance

NameType / ReturnsDescription
Instance.AncestryChangedFires when the Instance.Parent property of this object or one of its ancestors is changed.
Instance.AttributeChangedFires whenever an attribute is changed on the Instance.
Instance.ChildAddedFires after an object is parented to this Instance.
Instance.childAdded
Instance.ChildRemovedFires after a child is removed from this Instance.
Instance.DescendantAddedFires after a descendant is added to the Instance.
Instance.DescendantRemovingFires immediately before a descendant of the Instance is removed.
Instance.DestroyingFires immediately before (or is deferred until after) the instance is destroyed via Instance:Destroy().
Instance.StyledPropertiesChangedFires whenever any style property is changed on the instance, including when a property is set to nil.

Inherited from Object

NameType / ReturnsDescription
Object.ChangedFires immediately after a property of the object changes, with some limitations.