12 min read

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:

Inherits from: Instance

Descendants: Bone

Memory category: Instances

Properties

NameType / ReturnsDescription
Attachment.AxisVector3Direction of the X axis of the attachment, represented as a unit Vector3.
Attachment.CFrameCFrameCFrame offset of the attachment.
Attachment.OrientationVector3Orientation of the attachment relative to the orientation of its parent.
Attachment.PositionVector3Positional offset of the attachment, relative to the position and orientation of its parent.
Attachment.RotationVector3Rotation of the attachment relative to the rotation of its parent.
Attachment.SecondaryAxisVector3Direction of the Y axis of the attachment, represented as a unit Vector3.
Attachment.VisiblebooleanToggles the in-experience visibility of the attachment.
Attachment.WorldAxisVector3Direction of the X axis of the attachment relative to the world, represented as a unit Vector3 with a length of 1.
Attachment.WorldCFrameCFrameThe exact CFrame of the attachment in world space coordinates.
Attachment.WorldOrientationVector3Orientation of the attachment relative to the world rather than its own parent.
Attachment.WorldPositionVector3Position of the attachment relative to the world rather than its own parent.
Attachment.WorldRotationVector3Rotation of the attachment relative to the world rather than its own parent.
Attachment.WorldSecondaryAxisVector3Direction of the Y axis of the attachment relative to the world, represented as a unit Vector3 with a length of 1.

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

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).

FieldValue
typeVector3
tags["NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryDerived Data
serialization{"can_load":true,"can_save":false}
capabilities["Basic"]
simulationAccesstrue

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.

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

Attachment.Orientation

Orientation of the attachment relative to the orientation of its parent. Rotations are in Z, X, Y order.

FieldValue
typeVector3
tags["Hidden","NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryTransform
serialization{"can_load":false,"can_save":false}
capabilities["Basic"]
simulationAccesstrue

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).

FieldValue
typeVector3
tags["Hidden","NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryTransform
serialization{"can_load":false,"can_save":false}
capabilities["Basic"]
simulationAccesstrue

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.

FieldValue
typeVector3
tags["Hidden","NotReplicated","Deprecated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryTransform
serialization{"can_load":false,"can_save":false}
capabilities["Basic"]
simulationAccesstrue

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).

FieldValue
typeVector3
tags["NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryDerived Data
serialization{"can_load":true,"can_save":false}
capabilities["Basic"]
simulationAccesstrue

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.

FieldValue
typeboolean
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryAppearance
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.

FieldValue
typeVector3
tags["NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryDerived World Data
serialization{"can_load":true,"can_save":false}
capabilities["Basic"]
simulationAccesstrue

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.

FieldValue
typeCFrame
tags["NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryDerived World Data
serialization{"can_load":true,"can_save":false}
capabilities["Basic"]
simulationAccesstrue

Attachment.WorldOrientation

Orientation of the attachment relative to the world rather than its own parent. Rotations are in Z, X, Y order.

FieldValue
typeVector3
tags["Hidden","NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryDerived World Data
serialization{"can_load":false,"can_save":false}
capabilities["Basic"]
simulationAccesstrue

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.

FieldValue
typeVector3
tags["Hidden","NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryDerived World Data
serialization{"can_load":false,"can_save":false}
capabilities["Basic"]
simulationAccesstrue

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.

FieldValue
typeVector3
tags["Hidden","ReadOnly","NotReplicated","Deprecated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryDerived World Data
serialization{"can_load":false,"can_save":false}
capabilities["Basic"]
simulationAccesstrue

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.

FieldValue
typeVector3
tags["NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryDerived World Data
serialization{"can_load":true,"can_save":false}
capabilities["Basic"]
simulationAccesstrue

Methods

NameType / ReturnsDescription
Attachment:GetAxisVector3Returns the value of the attachment's Axis.
Attachment:GetConstraintsListReturns a list of Constraints connected to the attachment.
Attachment:GetSecondaryAxisVector3Returns 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

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

Attachment:GetAxis

Deprecated. This method is deprecated and should not be used in new work.

Returns the value of the attachment's Axis.

Returns

TypeDescription
Vector3The direction of the X axis as a unit Vector3 in the attachment's local space.
FieldValue
tags["Deprecated"]
securityNone
thread safetyUnsafe
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

TypeDescription
ListAn array of Constraint objects that are connected to this attachment.
FieldValue
securityNone
thread safetyUnsafe
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

TypeDescription
Vector3The direction of the Y axis as a unit Vector3 in the attachment's local space.
FieldValue
tags["Deprecated"]
securityNone
thread safetyUnsafe
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

NameTypeDefaultDescription
axisVector3The Vector3 to set as the X-axis direction of the attachment.

Returns

TypeDescription
()
FieldValue
tags["Deprecated"]
securityNone
thread safetyUnsafe
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

NameTypeDefaultDescription
axisVector3The Vector3 to set as the Y-axis direction of the attachment.

Returns

TypeDescription
()
FieldValue
tags["Deprecated"]
securityNone
thread safetyUnsafe
capabilities["Basic"]

Events

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.