Source: Roblox Creator Hub · CC BY 4.0 · View source · Code samples: MIT Imported 2026-10-03. Formatting adapted for this site.
Attachment
Inherits from: Instance → Object
An Attachment defines a point and orientation relative to an ancestor PVInstance, Bone, or another Attachment. The offset is stored in the CFrame property. The offset can also be set through other properties, such as WorldCFrame.
If no ancestral PVInstance or Attachment exists, then CFrame and WorldCFrame are the same.
Attachments are used by several kinds of Constraints and are also valid alternatives to BasePart as a parent for objects such as:
ParticleEmitterswhich will emit particles from the attachment's specific position/orientation instead of theBasePartbounds.Light-emitting objects like
PointLightandSpotLightwhich will shine from the attachment's position/orientation instead of theBasePartcenter.AudioEmitterwhich will use the attachment's position as the audio's point of emission.
Inherits from: Instance
Descendants: Bone
Memory category: Instances
Properties
| Name | Type / Returns | Description |
|---|---|---|
| Attachment.Axis | Vector3 | Direction of the X axis of the attachment, represented as a unit Vector3. |
| Attachment.CFrame | CFrame | CFrame offset of the attachment. |
| Attachment.Orientation | Vector3 | Orientation of the attachment relative to the orientation of its parent. |
| Attachment.Position | Vector3 | Positional offset of the attachment, relative to the position and orientation of its parent. |
| Attachment.Rotation | Vector3 | Rotation of the attachment relative to the rotation of its parent. |
| Attachment.SecondaryAxis | Vector3 | Direction of the Y axis of the attachment, represented as a unit Vector3. |
| Attachment.Visible | boolean | Toggles the in-experience visibility of the attachment. |
| Attachment.WorldAxis | Vector3 | Direction of the X axis of the attachment relative to the world, represented as a unit Vector3 with a length of 1. |
| Attachment.WorldCFrame | CFrame | The exact CFrame of the attachment in world space coordinates. |
| Attachment.WorldOrientation | Vector3 | Orientation of the attachment relative to the world rather than its own parent. |
| Attachment.WorldPosition | Vector3 | Position of the attachment relative to the world rather than its own parent. |
| Attachment.WorldRotation | Vector3 | Rotation of the attachment relative to the world rather than its own parent. |
| Attachment.WorldSecondaryAxis | Vector3 | Direction of the Y axis of the attachment relative to the world, represented as a unit Vector3 with a length of 1. |
Inherited from Instance
| Name | Type / Returns | Description |
|---|---|---|
| Instance.Archivable | boolean | Determines if an Instance and its descendants can be cloned using Instance:Clone(), and can be saved/published. |
| Instance.archivable | boolean | |
| Instance.Capabilities | SecurityCapabilities | The set of capabilities allowed to be used for scripts inside this container. |
| Instance.IsInSandbox | boolean | Indicates whether the instance is inside a sandboxed container. |
| Instance.Name | string | A non-unique identifier of the Instance. |
| Instance.Parent | Instance | Determines the hierarchical parent of the Instance. |
| Instance.PredictionMode | PredictionMode | Reflects the client-side prediction mode applied to the instance under server-authoritative physics. |
| Instance.RobloxLocked | boolean | A deprecated property that used to protect CoreGui objects. |
| Instance.Sandboxed | boolean | When enabled, the instance can only access abilities in its Capabilities list. |
| Instance.UniqueId | UniqueId | A unique identifier for the instance. |
Inherited from Object
| Name | Type / Returns | Description |
|---|---|---|
| Object.ClassName | string | A read-only string representing the class this Object belongs to. |
| Object.className | string |
Attachment.Axis
Direction of the X axis of the attachment, represented as a unit Vector3. Together with SecondaryAxis, this property defines the orientation of the attachment. Setting Axis automatically re-projects SecondaryAxis onto the plane perpendicular to the new axis so the two always remain orthogonal.
The default value is (1, 0, 0).
| Field | Value |
|---|---|
| type | Vector3 |
| tags | ["NotReplicated"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Derived Data |
| serialization | {"can_load":true,"can_save":false} |
| capabilities | ["Basic"] |
| simulationAccess | true |
Attachment.CFrame
The CFrame offset of the attachment. Changes to this property will reflect onto the Position and Rotation properties of this object. Similarly, a change to either of those properties will reflect onto this property.
| Field | Value |
|---|---|
| type | CFrame |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Transform |
| serialization | {"can_load":true,"can_save":true} |
| capabilities | ["Basic"] |
| simulationAccess | true |
Attachment.Orientation
Orientation of the attachment relative to the orientation of its parent. Rotations are in Z, X, Y order.
| Field | Value |
|---|---|
| type | Vector3 |
| tags | ["Hidden","NotReplicated"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Transform |
| serialization | {"can_load":false,"can_save":false} |
| capabilities | ["Basic"] |
| simulationAccess | true |
Attachment.Position
Positional offset of the attachment, relative to the position and orientation of its parent. This value corresponds to the translational component of CFrame; changing either property updates the other. The offset is expressed in the local coordinate space of the parent BasePart, Bone, or Attachment.
The default value is (0, 0, 0).
| Field | Value |
|---|---|
| type | Vector3 |
| tags | ["Hidden","NotReplicated"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Transform |
| serialization | {"can_load":false,"can_save":false} |
| capabilities | ["Basic"] |
| simulationAccess | true |
Attachment.Rotation
Deprecated. This property is deprecated and should not be used in new work. See Orientation instead.
Rotation of the attachment relative to the rotation of its parent. Rotations are in Z, Y, X order.
| Field | Value |
|---|---|
| type | Vector3 |
| tags | ["Hidden","NotReplicated","Deprecated"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Transform |
| serialization | {"can_load":false,"can_save":false} |
| capabilities | ["Basic"] |
| simulationAccess | true |
Attachment.SecondaryAxis
Direction of the Y axis of the attachment, represented as a unit Vector3. Together with Axis, this property defines the orientation of the attachment. When set, the value is projected onto the plane perpendicular to Axis so the two axes always remain orthogonal; the resulting stored value may therefore differ from the value you assign.
The default value is (0, 1, 0).
| Field | Value |
|---|---|
| type | Vector3 |
| tags | ["NotReplicated"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Derived Data |
| serialization | {"can_load":true,"can_save":false} |
| capabilities | ["Basic"] |
| simulationAccess | true |
Attachment.Visible
Toggles the in-experience visibility of the attachment. When set to true, the attachment renders as a small green sphere at its world position during gameplay. This is useful for debugging constraint setups or verifying attachment placement without needing Studio's constraint detail overlays.
The default value is false.
| Field | Value |
|---|---|
| type | boolean |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Appearance |
| serialization | {"can_load":true,"can_save":true} |
| capabilities | ["Basic"] |
Attachment.WorldAxis
Direction of the X axis of the attachment relative to the world, represented as a unit Vector3 with a length of 1. This is the world-space equivalent of Axis, computed by transforming the local axis through the parent's CFrame. Setting this property converts the supplied direction into the parent's local space and updates Axis accordingly.
| Field | Value |
|---|---|
| type | Vector3 |
| tags | ["NotReplicated"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Derived World Data |
| serialization | {"can_load":true,"can_save":false} |
| capabilities | ["Basic"] |
| simulationAccess | true |
Attachment.WorldCFrame
The exact CFrame of the attachment in world space coordinates, independent of its parent. The value of this property is equivalent to multiplying the CFrame of the attachment's parent by its own CFrame.
| Field | Value |
|---|---|
| type | CFrame |
| tags | ["NotReplicated"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Derived World Data |
| serialization | {"can_load":true,"can_save":false} |
| capabilities | ["Basic"] |
| simulationAccess | true |
Attachment.WorldOrientation
Orientation of the attachment relative to the world rather than its own parent. Rotations are in Z, X, Y order.
| Field | Value |
|---|---|
| type | Vector3 |
| tags | ["Hidden","NotReplicated"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Derived World Data |
| serialization | {"can_load":false,"can_save":false} |
| capabilities | ["Basic"] |
| simulationAccess | true |
Attachment.WorldPosition
Position of the attachment relative to the world rather than its own parent. This is the world-space equivalent of Position, computed by transforming the local offset through the parent's CFrame. Setting this property converts the supplied position into the parent's local space and updates Position accordingly.
| Field | Value |
|---|---|
| type | Vector3 |
| tags | ["Hidden","NotReplicated"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Derived World Data |
| serialization | {"can_load":false,"can_save":false} |
| capabilities | ["Basic"] |
| simulationAccess | true |
Attachment.WorldRotation
Deprecated. This item has been superseded by WorldOrientation which should be used in new work.
Rotation of the attachment relative to the world rather than its own parent.
| Field | Value |
|---|---|
| type | Vector3 |
| tags | ["Hidden","ReadOnly","NotReplicated","Deprecated"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Derived World Data |
| serialization | {"can_load":false,"can_save":false} |
| capabilities | ["Basic"] |
| simulationAccess | true |
Attachment.WorldSecondaryAxis
Direction of the Y axis of the attachment relative to the world, represented as a unit Vector3 with a length of 1. This is the world-space equivalent of SecondaryAxis, computed by transforming the local secondary axis through the parent's CFrame. Setting this property converts the supplied direction into the parent's local space and updates SecondaryAxis accordingly.
| Field | Value |
|---|---|
| type | Vector3 |
| tags | ["NotReplicated"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Derived World Data |
| serialization | {"can_load":true,"can_save":false} |
| capabilities | ["Basic"] |
| simulationAccess | true |
Methods
| Name | Type / Returns | Description |
|---|---|---|
| Attachment:GetAxis | Vector3 | Returns the value of the attachment's Axis. |
| Attachment:GetConstraints | List | Returns a list of Constraints connected to the attachment. |
| Attachment:GetSecondaryAxis | Vector3 | Returns the value of the attachment's SecondaryAxis. |
| Attachment:SetAxis | () | Sets the value of the attachment's Axis. |
| Attachment:SetSecondaryAxis | () | Sets the value of the attachment's SecondaryAxis. |
Inherited from Instance
| Name | Type / Returns | Description |
|---|---|---|
| Instance:AddTag | () | Applies a tag to the instance. |
| Instance:children | Instances | Returns an array of the object's children. |
| Instance:ClearAllChildren | () | This method destroys all of an instance's children. |
| Instance:Clone | Instance | Create a copy of an instance and all its descendants, ignoring instances that are not Archivable. |
| Instance:clone | Instance | |
| 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:FindFirstAncestor | Instance? | Returns the first ancestor of the Instance whose Instance.Name is equal to the given name. |
| Instance:FindFirstAncestorOfClass | Instance? | Returns the first ancestor of the Instance whose Object.ClassName is equal to the given className. |
| Instance:FindFirstAncestorWhichIsA | Instance? | Returns the first ancestor of the Instance for whom Object:IsA() returns true for the given className. |
| Instance:FindFirstChild | Instance? | Returns the first child of the Instance found with the given name. |
| Instance:findFirstChild | Instance | |
| Instance:FindFirstChildOfClass | Instance? | Returns the first child of the Instance whose ClassName is equal to the given class name. |
| Instance:FindFirstChildWhichIsA | Instance? | Returns the first child of the Instance for whom Object:IsA() returns true for the given className. |
| Instance:FindFirstDescendant | Instance? | Returns the first descendant found with the given Instance.Name. |
| Instance:GetActor | Actor? | Returns the Actor associated with the Instance, if any. |
| Instance:GetAttribute | Variant | Returns the value which has been assigned to the given attribute name. |
| Instance:GetAttributeChangedSignal | RBXScriptSignal | Returns an event that fires when the given attribute changes. |
| Instance:GetAttributes | Dictionary | Returns a dictionary of the instance's attributes. |
| Instance:GetChildren | Instances | Returns an array containing all of the instance's children. |
| Instance:getChildren | Instances | |
| Instance:GetDebugId | string | Returns a coded string of the debug ID used internally by Roblox. |
| Instance:GetDescendants | Instances | Returns an array containing all of the descendants of the instance. |
| Instance:GetFullName | string | Returns a string describing the instance's ancestry. |
| Instance:GetStyled | Variant | Returns the styled or explicitly modified value of the specified property, or else the default property value if it hasn't been styled/modified. |
| Instance:GetStyledPropertyChangedSignal | RBXScriptSignal | Returns an event that fires when the given style property changes on the instance. |
| Instance:GetTags | Array | Gets an array of all tags applied to the instance. |
| Instance:HasTag | boolean | Check whether the instance has a given tag. |
| Instance:IsAncestorOf | boolean | Returns true if an Instance is an ancestor of the given descendant. |
| Instance:IsDescendantOf | boolean | Returns true if an Instance is a descendant of the given ancestor. |
| Instance:isDescendantOf | boolean | |
| Instance:IsPropertyModified | boolean | Returns true if the value stored in the specified property is not equal to the code-instantiated default. |
| Instance:QueryDescendants | Instances | Returns 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:WaitForChild | Instance | 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. |
Inherited from Object
| Name | Type / Returns | Description |
|---|---|---|
| Object:GetPropertyChangedSignal | RBXScriptSignal | Get an event that fires when a given property of the object changes. |
| Object:IsA | boolean | Returns true if an object's class matches or inherits from a given class. |
| Object:isA | boolean |
Attachment:GetAxis
Deprecated. This method is deprecated and should not be used in new work.
Returns the value of the attachment's Axis.
Returns
| Type | Description |
|---|---|
| Vector3 | The direction of the X axis as a unit Vector3 in the attachment's local space. |
| Field | Value |
|---|---|
| tags | ["Deprecated"] |
| security | None |
| thread safety | Unsafe |
| capabilities | ["Basic"] |
Attachment:GetConstraints
Returns a list of Constraints that use this attachment as either Attachment0 or Attachment1. The returned array is a snapshot at the time of the call; subsequent changes to constraint connections are not reflected in a previously returned array.
Returns
| Type | Description |
|---|---|
| List | An array of Constraint objects that are connected to this attachment. |
| Field | Value |
|---|---|
| security | None |
| thread safety | Unsafe |
| capabilities | ["Basic"] |
Attachment:GetSecondaryAxis
Deprecated. This method is deprecated and should not be used in new work.
Returns the value of the attachment's SecondaryAxis.
Returns
| Type | Description |
|---|---|
| Vector3 | The direction of the Y axis as a unit Vector3 in the attachment's local space. |
| Field | Value |
|---|---|
| tags | ["Deprecated"] |
| security | None |
| thread safety | Unsafe |
| capabilities | ["Basic"] |
Attachment:SetAxis
Deprecated. This method is deprecated and should not be used in new work.
Sets the value of the attachment's Axis.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
| axis | Vector3 | The Vector3 to set as the X-axis direction of the attachment. |
Returns
| Type | Description |
|---|---|
| () |
| Field | Value |
|---|---|
| tags | ["Deprecated"] |
| security | None |
| thread safety | Unsafe |
| capabilities | ["Basic"] |
Attachment:SetSecondaryAxis
Deprecated. This method is deprecated and should not be used in new work.
Sets the value of the attachment's SecondaryAxis.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
| axis | Vector3 | The Vector3 to set as the Y-axis direction of the attachment. |
Returns
| Type | Description |
|---|---|
| () |
| Field | Value |
|---|---|
| tags | ["Deprecated"] |
| security | None |
| thread safety | Unsafe |
| capabilities | ["Basic"] |
Events
Inherited from Instance
| Name | Type / Returns | Description |
|---|---|---|
| Instance.AncestryChanged | Fires when the Instance.Parent property of this object or one of its ancestors is changed. | |
| Instance.AttributeChanged | Fires whenever an attribute is changed on the Instance. | |
| Instance.ChildAdded | Fires after an object is parented to this Instance. | |
| Instance.childAdded | ||
| Instance.ChildRemoved | Fires after a child is removed from this Instance. | |
| Instance.DescendantAdded | Fires after a descendant is added to the Instance. | |
| Instance.DescendantRemoving | Fires immediately before a descendant of the Instance is removed. | |
| Instance.Destroying | Fires immediately before (or is deferred until after) the instance is destroyed via Instance:Destroy(). | |
| Instance.StyledPropertiesChanged | Fires whenever any style property is changed on the instance, including when a property is set to nil. |
Inherited from Object
| Name | Type / Returns | Description |
|---|---|---|
| Object.Changed | Fires immediately after a property of the object changes, with some limitations. |