IKControl

사용되지 않는 항목 표시

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

IKControl 인스턴스는 역방향 기네마틱(IK)을 사용하여 절차 애니메이션 포즈를 생성합니다.캐릭터가 환경에 실감 있게 반응하도록 허용합니다.

예를 들어, 캐릭터가 문 손잡이에 정확히 손을 올릴 수 있고, 캐릭터는 위치와 독립적으로 그렇게 할 것입니다.IKControls는 게임에 대한 애니메이션을 훨씬 적게 만들어야 하고 경험에 더 현실적이고 세련된 느낌을 주는 장점을 제공합니다.

IKControls 는 자식이어야 하며 Humanoid 또는 AnimationController 와 함께 있어야 하며 Animator 와 모든 필수 속성이 올바르게 설정되어야 하고, 그렇지 않으면 효과가 없습니다.필수 속성은 Type , EndEffector , Target , ChainRoot 입니다.이들이 설정되자마자 IkControl은 지정한 대로 캐릭터의 포즈를 수정합니다.다음 코드 샘플은 첫 번째 IKControl를 설정하고 게임에 대한 더 현실적인 애니메이션을 만들기 시작하는 방법을 보여줍니다.

IKControls를 사용하여 캐릭터를 만들 수 있습니다:

  • 머리와 몸통을 회전하여 세계의 관심 지점을 보세요.
  • 동적 지형에 반응하여 발 위치를 변경합니다. 바위와 경사로가 있는 지형에 발과 다리를 배치하도록 다리와 발을 조정합니다.
  • 총을 들고 게임의 각 총에 대한 애니메이션을 만들 필요 없이 그립에 적절하게 손을 배치하십시오.
  • 세계의 한 지점을 조준하여 총의 팁이 정확히 당신이 쏘고 싶은 것에 맞게 됩니다. 특히 세 번째 인싸 슈터에서 유용합니다.
  • 차의 조종 장치에 손을 대고 회전할 때 따라가세요.
  • 훨씬 더!

IKControlChainRootEndEffector 사이의 모든 부품에 대한 애니메이션을 재정의할 것입니다.Enabled 또는 Weight 을 사용하여 활성화/비활성화할 수 있거나 기본 애니메이션에 대한 효과를 변경할 수 있습니다.주의하세요: 제대로 설정하지 않으면 IKControls 나쁘고 비현실적인 포즈를 생성할 수 있습니다!

코드 샘플

This sample shows the basic setup for an IKControl that moves a character's left arm to reach for a point in the world.

IKControl setup

local character = script.Parent.Character
local humanoid = character.Humanoid
local root = character.HumanoidRootPart
-- Create a new attachment to use as the IKControl.Target
local target = Instance.new("Attachment")
target.CFrame = CFrame.new(-1, 0, -1)
target.Parent = root
local ikControl = Instance.new("IKControl")
ikControl.Type = Enum.IKControlType.Position
ikControl.EndEffector = character.LeftHand
ikControl.ChainRoot = character.LeftUpperArm
ikControl.Target = target
ikControl.Parent = humanoid

요약

속성

  • 병렬 읽기

    캐릭터를 이동하려는 마지막 부분.예를 들어, 상완입니다.조상이 EndEffector 이어야 하고 캐릭터에서 BasePart 또는 Bone 이어야 합니다.

  • 병렬 읽기

    컨트롤을 켜고 끕니다. 기본값은 참입니다.

  • 병렬 읽기

    이동하여 Target 도달하는 데 관심이 있는 부분.예를 들어, 캐릭터의 손.ChainRoot 의 후손이어야 하고 캐릭터에서 BasePart 또는 Bone 이어야 합니다.

  • 이동할 위치를 변경하기 위해 로컬 공간에서 EndEffector 위에 추가 오프셋을 적용합니다.

  • 병렬 읽기

    Target에 추가 오프셋을 적용하여 이동하는 EndEffector의 위치를 변경함.

  • 병렬 읽기

    체인이 구부러지는 방향을 결정하는 선택적 인스턴스입니다. 이를 사용하여 엘보 또는 무릎이 구부러지는 방향을 지정할 수 있습니다.

  • 병렬 읽기

    컨트롤이 해결되는 순서를 지정합니다. 더 높은 값은 우선 순위가 더 높습니다.

  • 병렬 읽기

    EndEffector에서 Target에 원활하게 도달하는 데 걸리는 평균 초 수를 지정합니다.

  • 병렬 읽기

    EndEffector에서 도달하거나 가리키는 개체.세계에서 위치를 가진 모든 것, 예를 들어 BasePart , Attachment , Bone 또는 Motor6D 일 수 있습니다.

  • 솔버가 이 컨트롤을 만족시키는 방법을 지정합니다.

  • 병렬 읽기

    IK 컨트롤 대상의 무게를 지정합니다. [0, 1] 범위여야 합니다.

속성

ChainRoot

병렬 읽기

ChainRootEndEffector 를 지정하여 모든 부품을 두 사이에서 이동하고 회전할 수 있도록 지시하고, IKControl 에서 EndEffector 을 이동하고 Target 로 이동하도록 지시합니다.예를 들어, LeftHand를 EndEffector로, LeftUpperArm을 ChainRoot로 지정하면 컨트롤이 3부분을 이동합니다: LeftHand, LeftLowerArm, 그리고 LeftUpperArm.실제 문자의 루트로 ChainRoot를 설정하지 않도록 하세요, 그렇지 않으면 비현실적인 결과가 생성됩니다.

Enabled

병렬 읽기

이 속성을 사용하면 IK 컨트롤을 끄기끌 수 있습니다.기본적으로 켜져 있습니다.Enabled가 거짓이면 IK 컨트롤이 꺼지고 기본 솔버에 의해 해결되지 않습니다.

EndEffector

병렬 읽기

EndEffector 는 당신이 영향을 주고 싶은 캐릭터의 체인의 마지막 부분을 설명합니다.예를 들어, 전체 팔을 움직여 포인트에 도달하려는 경우 손일 수 있습니다.그것은 문자에서 BasePart 일 수 있으며, 그 자식으로 Motor6D 가 있고, 직접 Motor6D 또는 Bone 또는 Attachment 일 수 있습니다.선택된 의 피벗이 이동하여 에 도달하는 지점을 수정할 수 있으므로 를 사용하여 어떤 가 도달해야 하는지를 수정할 수 있습니다.

EndEffectorOffset

병렬 읽기

최종 효과 오프셋은 최종 효과를 배치하기 위해 사용된 마지막 의 위에 추가로 적용된 것입니다.기본적으로 ID CFrame이므로 설정하지 않으면 효과가 없으며, 는 로컬 공간의 에서 직접 사용하는데, 이는 에 지정되어 있습니다.

대신, 첨부 파일을 사용하여 첨부 파일을 EndEffector로 설정하고 부착된 부품 대신 Target로 이동하여 동일한 결과를 효과적으로 얻을 수 있습니다.

또한 EndEffectorOffset를 사용하여 어떤 축이 EndEffector에서 가리키는지 수정할 수 있으며, TargetLookAt으로 사용할 때 어떤 축이 Type에 가리키는지 수정할 수 있습니다.

Offset

병렬 읽기

오프셋은 최종 배치에 사용된 최상위 의 위에 추가 적용된 오프셋으로, 최종 배치에 사용된 최상위 배치에 사용됩니다.기본적으로 식별자이므로 설정하지 않으면 효과가 없으며 는 직접 을 사용합니다.키보드에 입력하는 절차적 애니메이션과 같은 애니메이션을 만들기 위해 그것을 애니메이션할 수 있습니다.TargetEndEffector 가 정렬되지 않고 추가 회전이나 번역으로 수정해야 할 때 유용합니다.

병렬 읽기

The Pole 는 캐릭터의 중간 부품이 어떻게 구부러져야 하는지에 대한 제어를 제공하는 선택적 Instance입니다.세계에서 위치를 가진 모든 것, 예를 들어 BasePart , Attachment , Bone , Motor6D 일 수 있습니다.기본값은 nil.지정하면 기본 해결기가 부품을 그쪽으로 구부리게 합니다.When it is nil 일 때, 솔버는 캐릭터의 사지에 따라 적절하게 팔꿈치와 무릎을 구부리려고 시도합니다.선택하면 왼쪽 팔 또는 오른쪽 팔 중 하나가 "팔"이 되고, 해당 왼쪽 상완 또는 오른쪽 상완 중 하나 또는 해당 왼쪽 상완 또는 오른쪽 상완 중 하나가 "다리"가 되며, 선택하면 해당 왼쪽 상완 또는 오른쪽 상완 중 하나 또는 해당 오른쪽 상완 또는 오른쪽 상완 중 하나가 "다리"가 됩니다.다른 모든 경우에서, 봉을 지정하지 않으면 체인이 예상대로 구부러지지 않을 수 있습니다.

Priority

병렬 읽기

캐릭터에 여러 컨트롤이 활성화되어 있을 때, 기본 시스템에서 해결되는 순서는 최종 생성된 포즈에 영향을 줍니다.이 값을 변경하여 컨트롤이 만족하는 순서를 지정합니다.더 높은 값은 더 높은 우선 순위를 가지며, 더 높은 우선 순위의 컨트롤은 나중에 해결되므로 결과가 다른 제어이전 결과를 재정의할 수 있기 때문입니다.캐릭터에 여러 IK 컨트롤이 있고 그 중 하나가 다른 것보다 더 중요하면 우선 순위를 낮게 지정하십시오.기본적으로 0이므로 모든 컨트롤의 우선 순위가 동일합니다.

SmoothTime

병렬 읽기

이 값은 EndEffector에서 도달하기까지 평균 초 수를 지정합니다.This value specifies the average number of seconds that it takes for the to reach the Target .동작은 변화 속도가 대상에 대한 거리와 비례하고 대상에 접근할 때 진동이 없는 치명적으로 댐핑된 스프링의 동작입니다. The behavior is that of a critically-damped spring, where the rate of change is proportional to the distance to the target and no oscillations are present when approaching the target.더 작은 값은 더 빠른 융합을 만들고, 더 큰 값은 더 느린 융합을 만듭니다.0의 값은 부드러움을 비활성화합니다.기본값은 0.05로 움직임이 현실감 있게 느껴지도록 매우 약간의 부드러움을 제공합니다.

Target

병렬 읽기

Target 는 세계에서 귀하의 CFrame 가 도달하기를 원하는 지점(EndEffector)을 나타냅니다.도달의 정확한 동작은 Type 속성을 통해 설정할 수 있으며, 이 위에 추가 Offset 를 적용하여 수정할 수 있습니다.물리 또는 스크립트로 이동될 Target 를 설정하면, 각 프레임에서 IKControl 가 그것을 만족시키려고 시도하고, 도달할 점을 자동으로 업데이트합니다.

병렬 읽기

Type를 변경하여 컨트롤의 동작을 변경할 수 있습니다. 사용 가능한 옵션은 다음과 같습니다.

  • 변환: 전체 6축 제약 조건입니다. EndEffector``Datatype.CFrameTarget 의 것과 맞춥니다.
  • 위치: 위치 EndEffector 를 위치 Target 와 일치시킵니다.
  • 회전: 회전 EndEffector 을 회전 Target 과 일치시킵니다.
  • LookAt: 전체 체인을 이동하고 방향을 조정하여 축(기본적으로 앞쪽 축)을 지점에서 세계에서 지정된 위치에 배치합니다(기본적으로 앞쪽 축).

Weight

병렬 읽기

이 속성을 사용하여 지정된 컨트롤이 캐릭터 포즈에 미치는 영향을 얼마나 제어할 수 있습니다.값은 [0, 1] 범위에 있어야 합니다.0은 효과가 없음을 의미하고, 1은 IK 컨트롤의 전체 효과를 의미합니다.이 범위 외의 값은 잘립니다.이 값을 부드럽게 변경하면 특정 컨트롤을 혼합하거나 제거하여 흔들림을 방지할 수 있습니다.기본값은 1입니다.

무게는 엔드 이펙터와 IK 대상 사이의 인터폴레이션 요소 비율을 결정합니다.무게를 0으로 설정하면 IK 컨트롤이 비활성화되지 않으며, SmoothTime 부드러움 요소 및 봉과 같은 다른 요소가 여전히 포즈를 변경할 수 있기 때문입니다.IK 컨트롤을 완전히 비활성화하려면 Enabled 속성을 거짓으로 설정합니다.

메서드

GetChainCount


반환

GetChainLength


반환

GetNodeLocalCFrame

매개 변수

index: number
기본값: ""

반환

GetNodeWorldCFrame

매개 변수

index: number
기본값: ""

반환

GetRawFinalTarget


반환

GetSmoothedFinalTarget


반환

이벤트