Roblox UtilitiesDevlHub Roblox Documentation

Class

Motor6D

Inherits
Motor › JointInstance › Instance › Object
Memory category
BaseParts

Creates an animatable joint between two BaseParts. Superseded by AnimationConstraint for avatar/character rigs. Motor6D is no longer used by default for player characters when AvatarJointUpgrade is enabled.

Description#

Motor6D joins two BaseParts (Part0 and Part1) together in an animatable way. The Transform property determines the offset between these parts. This can be set manually using RunService.PreSimulation or through an Animator.

Models whose parts are joined by Motor6D are usually referred to as rigs, typically for Humanoids. Motor6D remains appropriate for non-avatar mechanical rigs (doors, turrets, vehicles) where physical simulation is not needed.

Transitioning to AnimationConstraint for Avatar rigs#

As of the Avatar Joint Upgrade, R15 player characters spawn with AnimationConstraints instead of Motor6Ds when AvatarJointUpgrade is enabled (the default for new experiences). Code that assumes character joints are Motor6Ds — such as character:FindFirstChildOfClass("Motor6D") or joint:IsA("Motor6D") — will not find joints on upgraded characters. Use AnimationConstraint for new avatar rig code. See the migration notes on the AnimationConstraint page.

Properties 3#

ChildNamestringRead-only name of the joint's child part, mirroring the Name of Part1.ReadSafeReadOnlyNotReplicatedNotScriptable
ParentNamestringRead-only name of the joint's parent part, mirroring the Name of Part0.ReadSafeReadOnlyNotReplicatedNotScriptable
TransformCFrameDescribes the current animation offset of the Motor6D joint.ReadSafeHiddenNotReplicated

ChildName: string#

ReadOnlyNotReplicatedNotScriptableReadSafe

A read-only string that reflects the Name of the part assigned to Part1 (the joint's child). The value is derived from Part1, so writing to it has no effect. When Part1 is not set, this property is an empty string.

The animation system uses this name to match the joint against the corresponding pose channel in an animation, so a rig's part names must line up with the names authored in its animations.

ParentName: string#

ReadOnlyNotReplicatedNotScriptableReadSafe

A read-only string that reflects the Name of the part assigned to Part0 (the joint's parent). The value is derived from Part0, so writing to it has no effect. When Part0 is not set, this property is an empty string.

The animation system uses this name to match the joint against the corresponding pose channel in an animation, so a rig's part names must line up with the names authored in its animations.

Transform: CFrame#

HiddenNotReplicatedReadSafe

The internal CFrame that is manipulated when a Motor6D is being animated. It is recommended to use this property for custom animations rather than JointInstance.C0 and JointInstance.C1.

Timing#

Motor6D transforms are not applied immediately, unlike updating C0 and C1, but rather as a batch in a parallel job after RunService.PreSimulation, immediately before physics steps. The deferred batch update is much more efficient than many immediate updates.

If the Motor6D is part of an animated model with an Animator, then Motor6D.Transform will usually be overwritten every frame by the Animator after RunService.PreAnimation and before RunService.PreSimulation.

Inherited members#

Inherited from Motor 4
Methods (1)

SetDesiredAngle

Inherited from JointInstance 7
Properties (7)

Active, C0, C1, Enabled, Part0, Part1, part1

Inherited from Instance 58
Inherited from Object 6
Properties (2)

ClassName, className

Events (1)

Changed