Class
Motor6D
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#
ChildNamestring | Read-only name of the joint's child part, mirroring the
Name of Part1.ReadSafeReadOnlyNotReplicatedNotScriptable |
ParentNamestring | Read-only name of the joint's parent part, mirroring the
Name of Part0.ReadSafeReadOnlyNotReplicatedNotScriptable |
TransformCFrame | Describes 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 Instance 58
Properties (10)
Archivable, archivable, Capabilities, IsInSandbox, Name, Parent, PredictionMode, RobloxLocked, Sandboxed, UniqueId
Methods (39)
AddTag, children, ClearAllChildren, Clone, clone, Destroy, destroy, FindFirstAncestor, FindFirstAncestorOfClass, FindFirstAncestorWhichIsA, FindFirstChild, findFirstChild, FindFirstChildOfClass, FindFirstChildWhichIsA, FindFirstDescendant, GetActor, GetAttribute, GetAttributeChangedSignal, GetAttributes, GetChildren, getChildren, GetDebugId, GetDescendants, GetFullName, GetStyled, GetStyledPropertyChangedSignal, GetTags, HasTag, IsAncestorOf, IsDescendantOf, isDescendantOf, IsPropertyModified, QueryDescendants, Remove, remove, RemoveTag, ResetPropertyToDefault, SetAttribute, WaitForChild