물리 엔진에는 하나 이상의 조립체를 이동하기 위해 힘이나 토크를 적용하는 Constraints가 포함되어 있습니다. 또한, 다양한 기계적 제약 조건이 제공되며, 이들은 경첩, 스프링, 로프 등을 포함한 개념적 기계적 연결처럼 동작합니다.
제약 조건 시각화
제약 조건을 스튜디오에서 정확하게 시각화하기 위해, 보기 메뉴 또는 해당 바로 가기를 통해 다음 항목을 전환할 수 있습니다:
- 제약 조건 세부정보 표시 (AltD 또는 ⌥D) — 비용접 제약 조건의 완전한 시각적 세부정보를 표시합니다.
제약 조건 만들기
이동 제약 조건은 일반적으로 하나 또는 두 개의 Attachments 또는 Bones를 연결합니다. Bones에 연결되면 제약 조건은 이들의 애니메이션된 위치와 방향을 사용합니다.
기계적 제약 조건을 만들려면 제약 조건 선택기/버튼에서 하나를 삽입하거나 탐색기 창을 통해 삽입할 수 있습니다.
스튜디오의 모델 탭 도구 모음에서 제약 조건 버튼의 작은 모서리 화살표 위에서 클릭하여 선택기 메뉴를 열고 원하는 제약 조건을 선택합니다.

3D 뷰포트에서 임의의 Part 또는 MeshPart 위에 마우스를 올리고 클릭하여 시각화된 지점에서 파트에 새 Attachment를 추가합니다. 또는 기존의 Attachment 또는 Bone 위에 마우스를 올리고 클릭하여 제약 조건에 사용할 수 있습니다.
물리 시뮬레이션
부품을 이동하거나 회전 할 때 물리학을 시뮬레이션하려면 스튜디오의 도구 모음에서 기하학적 모드에서 물리적 모드로 전환할 수 있으며, 이렇게 하면 부품이 물리적 제한을 준수하도록 강제됩니다. 예를 들어, 두 개의 부품이 RopeConstraint로 연결되어 있고 한 부품을 장면에서 끌면, 다른 부품은 로프가 팽팽해지면서 따라오게 됩니다.

레거시 이동 변환
게임이 레거시 BodyMover 기반 제약 조건에 의존하는 경우 현대적인 이동 제약 조건으로 변환할 때 다음 메모를 검토하십시오.
AlignPosition는 더 이상 지원되지 않는 BodyPosition 이동자에서 다루어졌던 대부분의 사용 사례를 충족합니다. 레거시 이동자가 각 구성 요소를 독립적으로 처리하고 각 방향에 대해 서로 다른 힘을 허용했던 방식과 동기화하기 위해, AlignPosition의 ForceLimitMode 속성은 제약 조건이 Magnitude 모드 또는 PerAxis 모드에서 작동할 수 있게 허용합니다.
PerAxis 모드에서는 각 축을 따라 힘을 독립적으로 지정할 수 있습니다. 최대 힘이 벡터로 지정되므로, 힘의 기준 프레임은 ForceRelativeTo 속성을 통해 World, Attachment0, 및 Attachment1 옵션을 사용하여 지정할 수도 있습니다. 또한 내부 컨트롤러의 수식도 BodyPosition의 것과 일치하도록 수정됩니다.
AlignOrientation는 더 이상 지원되지 않는 BodyGyro 이동자에서 다루어졌던 대부분의 사용 사례를 충족합니다. AlignOrientation의 AlignType 모드는 대부분의 애플리케이션에 충분한 자유를 제공하며 여러 제약 조건의 조합으로 벡터 토크 한계를 복제할 수 있습니다. 또한, PrimaryAxisLookAt 모드는 제약 조건의 첫 번째 부착물(Attachment0)의 주 축이 항상 두 번째 부착물(Attachment1)을 가리키도록 강제하며, 이렇게 하면 보안 카메라나 유도 미사일과 같은 동작 추적 기능을 추가하는 것이 훨씬 쉬워집니다.
LinearVelocity는 더 이상 지원되지 않는 BodyVelocity 이동자에서 다루어졌던 대부분의 사용 사례를 충족합니다. 레거시 이동자는 MaxForce 벡터를 허용하지만, 이 벡터 힘의 일반적인 사용 예는 특정 구성 요소를 제로(zero)로 만들어 제약 조건이 해당 방향에서 비활성화되도록 하는 것이었습니다. LinearVelocity는 서로 다른 VelocityConstraintMode 모드에서 운영하여 비슷한 효과를 제공합니다. 이러한 모드는 각각 하나(Line), 두 개(Plane), 세 개(Vector)의 차원을 나타냅니다.
또한, ForceLimitMode 속성의 PerAxis 옵션은 모든 비영(zero) 구성 요소에 대해 벡터 힘의 모든 애플리케이션을 수용합니다. 예를 들어, 중력을 상쇄하기 위해 단일 축을 따라 힘을 증가시킵니다.
AngularVelocity는 더 이상 지원되지 않는 BodyAngularVelocity 이동자와 약간의 불일치가 있지만, 이러한 불일치와 관련된 특정 사례는 커뮤니티나 내부에서 강조되지 않았습니다.
별도의 개선 사항으로, AngularVelocity는 Attachments와 함께 작동하며 RelativeTo 속성을 사용하여 힘이 지정된 CFrame을 지정할 수 있습니다. 예를 들어 World 또는 Attachment1를 사용할 수 있습니다.
VectorForce는 더 이상 지원되지 않는 BodyForce와 BodyThrust 이동자에서 제공한 모든 사용 사례를 충족합니다. 현대 제약 조건은 Attachments와 함께 작동하며, RelativeTo 속성을 사용하여 중심에서 상대적 오프셋에 힘을 적용할 수 있습니다. 이는 BodyThrust.Location이 작동했던 방식과 유사합니다.
LineForce와 AlignOrientation의 조합은 더 이상 지원되지 않는 RocketPropulsion 이동자에서 다루어졌던 대부분의 사용 사례를 충족합니다. 유도 미사일의 경우, LineForce는 RocketPropulsion의 "대상 추적" 동작을 제어하는 데 사용될 수 있으며, AlignOrientation과 그 LookAtPosition 속성은 "대상 얼굴" 동작을 제어하는 데 사용될 수 있습니다.

