Joints: Difference between revisions
From Legacy Roblox Wiki
Jump to navigationJump to search
>Outofspace mNo edit summary |
m Text replacement - "</SyntaxHighlight>" to "</syntaxhighlight>" Tags: mobile web edit mobile edit |
||
(17 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
A '''joint''', called a "connection" while a game is loading, is something that connects two parts together. Common types of joints are [[Weld]]s, [[Snap]]s, and [[Hinge]]s. Joints are represented using a [[JointInstance]] object, which has four important properties: [[C0]], [[C1]], [[Part0]], and [[Part1]]. | |||
== Automatic creation == | |||
<!-- mention how they're automatically created here --> | |||
== Advanced == | |||
=== Fixed Joints === | |||
Joints have a conceptual origin coordinate frame, to which both parts are attached. | |||
<syntaxhighlight lang="lua"> | |||
jointOrigin == joint.Part0.CFrame * joint.C0 == joint.Part1.CFrame * joint.C1 | |||
</syntaxhighlight> | |||
In the case of fixed joints, this origin position is not important. <!--Or do explosions only act on joint origins? --> | |||
It is sufficient to make the origin position the center of Part1, and C1 the identity CFrame. For example: | |||
<syntaxhighlight lang="lua"> | |||
local cf = ... --The transformation from A to B | |||
local weld = Instance.new("Weld") | |||
weld.Part0 = workspace.A | |||
weld.Part1 = workspace.B | |||
weld.C0 = cf | |||
weld.C1 = CFrame.new(0,0,0) | |||
</syntaxhighlight> | |||
Will ensure that {{`|=workspace.A * cf == workspace.B}} | |||
=== Rotating Joints === | |||
In a rotating joint, the conceptual origin is important. This dictates the position, and in some cases, the axis around which the joint rotates. | |||
<!-- Which axis does it rotate around? jointOrigin * Vector3.new(1,0,0), jointOrigin * Vector3.new(0,1,0), or jointOrigin * Vector3.new(0,0,1)? --> |
Latest revision as of 06:02, 27 April 2023
A joint, called a "connection" while a game is loading, is something that connects two parts together. Common types of joints are Welds, Snaps, and Hinges. Joints are represented using a JointInstance object, which has four important properties: C0, C1, Part0, and Part1.
Automatic creation
Advanced
Fixed Joints
Joints have a conceptual origin coordinate frame, to which both parts are attached.
jointOrigin == joint.Part0.CFrame * joint.C0 == joint.Part1.CFrame * joint.C1
In the case of fixed joints, this origin position is not important.
It is sufficient to make the origin position the center of Part1, and C1 the identity CFrame. For example:
local cf = ... --The transformation from A to B
local weld = Instance.new("Weld")
weld.Part0 = workspace.A
weld.Part1 = workspace.B
weld.C0 = cf
weld.C1 = CFrame.new(0,0,0)
Will ensure that workspace.A * cf == workspace.B
Rotating Joints
In a rotating joint, the conceptual origin is important. This dictates the position, and in some cases, the axis around which the joint rotates.