Version: 2020.1
언어: 한국어
레이어 기반 충돌 감지
조준 제약

제약

제약(Constraint) 컴포넌트는 게임 오브젝트의 포지션, 회전 또는 확대/축소를 다른 게임 오브젝트에 연결합니다. 제약된 게임 오브젝트는 연결된 게임 오브젝트처럼 이동, 회전 또는 확대/축소됩니다.

Unity에서 지원하는 제약 컴포넌트 타입은 다음과 같습니다.

  • 조준(Aim): 제약된 게임 오브젝트를 연결된 게임 오브젝트 방향으로 회전시킵니다.

  • LookAt: 제약된 게임 오브젝트를 연결된 게임 오브젝트 방향으로 회전시킵니다(간소화된 조준 제약).

  • 부모(Parent): 제약된 게임 오브젝트를 연결된 게임 오브젝트와 함께 이동 및 회전시킵니다.

  • 포지션(Position): 제약된 게임 오브젝트를 연결된 게임 오브젝트처럼 이동시킵니다.

  • 회전(Rotation): 제약된 게임 오브젝트를 연결된 게임 오브젝트처럼 회전시킵니다.

  • 스케일(Scale): 제약된 게임 오브젝트를 연결된 게임 오브젝트처럼 확대/축소합니다.

게임 오브젝트에 연결

제약 컴포넌트의 소스(Sources) 리스트를 사용하여 연결할 게임 오브젝트를 지정합니다.

예를 들어 2D 슈팅 게임에서 십자 기호가 플레이어의 우주선을 따라 이동하게 하려면 포지션 제약(Position Constraint) 컴포넌트를 십자 기호에 추가합니다. 십자 기호를 우주선에 연결하려면 포지션 제약(Position Constraint) 컴포넌트로 이동하여 우주선 게임 오브젝트를 소스(Sources) 리스트에 추가합니다. 플레이어가 우주선을 움직이면 십자 기호가 따라 움직입니다.

십자 기호의 포지션 제약. 십자 기호가 플레이어의 우주선(빨간색)을 따라 움직입니다.
십자 기호의 포지션 제약. 십자 기호가 플레이어의 우주선(빨간색)을 따라 움직입니다.

제약을 사용하여 여러 소스 게임 오브젝트를 연결할 수 있습니다. 이 경우 소스 게임 오브젝트의 평균 포지션, 회전 또는 확대/축소가 제약에 사용됩니다. 예를 들어 조명이 게임 오브젝트 그룹을 향하게 하려면 조준 제약(Aim Constraint) 컴포넌트를 조명 게임 오브젝트에 추가합니다. 그런 다음 조명을 비출 게임 오브젝트를 소스(Sources) 리스트에 추가합니다. 조준 제약 에 따라 조명의 방향이 광원의 평균 포지션 쪽으로 지정됩니다.

Unity는 소스 게임 오브젝트를 소스(Sources) 리스트에 표시된 순서대로 평가합니다. 순서는 포지션 또는 스케일 제약 에 영향이 없지만, 부모, 회전조준 제약 에는 영향을 미칩니다. 원하는 결과를 얻으려면 항목을 드래그하여 놓는 방법으로 소스(Sources) 리스트의 순서를 변경하십시오.

일련의 게임 오브젝트를 제약할 수 있습니다. 예를 들어 아기 오리들이 엄마 오리를 일렬로 따라가게 하려면 포지션 제약(Position Constraint) 컴포넌트를 Duckling1 게임 오브젝트에 추가합니다. 소스(Sources) 리스트에서 MotherDuck 에 연결합니다. 그런 다음, 포지션 제약Duckling1 에 연결되는 Duckling2 에 추가합니다. MotherDuck 게임 오브젝트가 씬에서 이동하면 Duckling1MotherDuck 을 따라가고 Duckling2Duckling1 을 따라갑니다.

제약의 주기를 생성하지 않도록 주의하십시오. 게임플레이 중에 업데이트가 불규칙해집니다.

제약 프로퍼티 설정

인스펙터(Inspector) 창을 사용하여 제약의 일반적인 프로퍼티를 변경합니다.

포지션 제약의 가중치 및 제약 설정
포지션 제약의 가중치 및 제약 설정

가중치(Weight) 를 사용하여 제약의 영향을 다양하게 설정할 수 있습니다. 가중치가 1이면 제약에 따라 게임 오브젝트가 소스 게임 오브젝트와 같은 속도로 업데이트됩니다. 가중치가 0이면 제약의 영향이 완전히 제거됩니다. 각 소스 게임 오브젝트에도 개별 가중치가 있습니다.

제약 설정(Constraint Settings) 에서 휴식 상태(At Rest) 프로퍼티를 사용하여 가중치(Weight) 가 0인 경우나 축 고정(Freeze Axes) 에서 해당 프로퍼티가 선택되지 않은 경우에 사용할 X, Y, Z 값을 지정합니다.

제약 설정(Constraint Settings)오프셋(Offset) 프로퍼티를 사용하여 게임 오브젝트를 제약하는 경우에 사용할 X, Y, Z 값을 지정합니다.

축 고정(Freeze Axes) 설정을 사용하여 제약에 따라 실제로 수정될 수 있는 축을 토글합니다.

제약 활성화 및 잠금

제약을 사용하여 수행하는 작업에는 활성화와 잠금이라는 두 가지 요소가 있습니다.

제약을 활성화하여 제약된 게임 오브젝트의 포지션, 회전 또는 스케일을 평가할 수 있습니다. Unity는 비활성 제약을 평가하지 않습니다.

제약이 게임 오브젝트를 이동, 회전 또는 확대/축소할 수 있도록 하려면 제약을 잠급니다. 잠근 제약은 게임 오브젝트 트랜스폼의 관련 부분을 제어합니다. 제약이 잠긴 게임 오브젝트를 수동으로 이동, 회전 또는 확대/축소할 수 없으며, Constraint Settings 를 편집할 수도 없습니다.

게임 오브젝트의 포지션, 회전 또는 스케일을 수동으로 편집하려면 제약을 잠금 해제합니다. 잠겨 있지 않은 제약이 활성화된 경우 제약된 게임 오브젝트 또는 소스 게임 오브젝트를 이동, 회전 또는 확대/축소할 때 제약 설정(Constraint Settings) 이 자동으로 업데이트됩니다.

제약 컴포넌트를 게임 오브젝트에 추가하면 제약이 기본적으로 비활성화되고 잠금 해제됩니다. 이 경우 제약을 활성화하고 잠그기 전에 제약된 게임 오브젝트와 소스 게임 오브젝트의 포지션, 회전 및 스케일을 미세 조정할 수 있습니다.

편의를 위해, 활성화(Activate)영점(Zero) 버튼을 누르면 제약 설정(Constraint Settings) 이 업데이트됩니다.

  • 활성화(Activate): 소스 게임 오브젝트의 현재 오프셋을 저장한 후 제약된 게임 오브젝트를 활성화하고 잠급니다.

  • 영점(Zero): 포지션, 회전 또는 스케일을 소스 게임 오브젝트와 일치하게 재설정한 후 제약된 게임 오브젝트를 활성화하고 잠급니다.

제약 애니메이션화 및 결합

애니메이션 클립을 사용하여 제약된 게임 오브젝트가 연결되는 소스 게임 오브젝트를 변경할 수 있습니다. 애니메이션에서 소스 게임 오브젝트가 변경되면 제약 컴포넌트를 통해 제약된 게임 오브젝트가 변경됩니다.

제약 컴포넌트의 프로퍼티를 애니메이션화할 수도 있습니다. 예를 들어 부모 제약을 사용하여 캐릭터의 검을 손에서 등 뒤로 옮길 수 있습니다. 먼저 부모 제약을 검 게임 오브젝트에 추가합니다. 소스(Sources) 리스트에서 제약을 캐릭터의 손과 캐릭터의 척추에 연결합니다. 검을 애니메이션화하려면 각 소스의 가중치마다 키프레임을 추가합니다. 검이 등 뒤에서 손으로 이동하는 동작을 애니메이션화하려면 키프레임을 추가하여 손의 가중치를 0에서 1로 변경하고 척추 가중치의 키프레임을 1에서 0으로 변경합니다.

같은 게임 오브젝트에 두 가지 이상의 제약 컴포넌트를 추가할 수 있습니다. Unity는 게임 오브젝트를 업데이트할 때 제약 컴포넌트를 인스펙터(Inspector) 창에 표시되는 순서에 따라 첫 번째부터 마지막까지 평가합니다. 게임 오브젝트에는 종류가 같은 제약 컴포넌트가 하나만 포함될 수 있습니다. 예를 들어 포지션 제약을 두 개 이상 추가할 수 없습니다.

제약 임포트

FBX 파일을 Autodesk® Maya® 및 MotionBuilder®에서 Unity 에디터로 임포트하는 경우 제약을 포함할 수 있습니다. Import Settings 창의 애니메이션 탭을 클릭한 후 Import Constraints 를 선택합니다.

제약 임포트가 선택된 임포트 설정
제약 임포트가 선택된 임포트 설정

Unity는 FBX 파일의 모든 제약마다 자동으로 해당하는 제약 컴포넌트를 추가하고 올바른 게임 오브젝트에 연결합니다.

제약 추가 및 편집

제약 컴포넌트를 추가하는 방법:

  1. 제약할 게임 오브젝트를 선택합니다.

  2. 인스펙터(Inspector) 창에서 컴포넌트 추가(Add Component) 를 클릭하여 추가할 제약 타입을 검색한 후 클릭하여 추가합니다.

  3. 소스 게임 오브젝트를 새 제약에 추가하고 계층 구조(Hierarchy)에서 (또는 씬(Scene) 뷰에서) 소스(Sources) 리스트로 드래그합니다.

  4. 제약된 게임 오브젝트와 소스 게임 오브젝트를 이동, 회전 또는 확대/축소합니다.

  5. 제약을 활성화하려면 활성화(Activate) 또는 영점(Zero) 을 클릭하거나 액티브(Is Active)잠금(Lock) 을 선택합니다.

제약 컴포넌트 편집 방법:

  1. 에디터에서 제약된 게임 오브젝트를 선택합니다.

  2. 휴식 상태(At Rest) 또는 오프셋(Offset) 필드를 조정하려면 인스펙터(Inspector) 창에서 제약 설정(Constraint Settings) 을 확장하고 잠금(Lock) 을 선택 해제한 후 값을 편집합니다.

  3. 제약을 통해 업데이트되는 축을 지정하려면 제약 설정(Constraint Settings) 을 확장한 후 축 고정(Freeze Axes) 의 프로퍼티를 선택합니다.

  4. 소스 게임 오브젝트를 제약에 추가하려면 다음 작업을 수행합니다.

    • 소스 리스트에 빈 칸이 없으면 리스트 하단에서 + 버튼을 클릭합니다.

    • 제약 소스로 사용할 게임 오브젝트를 씬에서 소스(Sources) 리스트로 드래그합니다.

  5. 소스 게임 오브젝트를 제거하려면 소스(Sources) 리스트에서 해당 오브젝트를 선택한 후 리스트 하단에서 빼기 부호(-)를 클릭합니다.

  6. 소스(Sources) 리스트의 소스 게임 오브젝트 순서를 변경하려면 이동할 각 게임 오브젝트 왼쪽의 더블 바 아이콘을 클릭하여 위 또는 아래로 드래그합니다.

    참고: 소스(Sources) 리스트에서 순서는 포지션, 회전 및 확대/축소 제약에 영향이 없습니다. 하지만 순서는 부모 및 조준 제약이 게임 오브젝트를 이동 또는 회전하는 방법에 영향을 미칩니다.

  7. 액티브(Is Active)잠금(Lock) 을 선택합니다.


  • 2018–04–11 페이지 게시됨

  • 2018.1에 제약 추가됨NewIn20181

레이어 기반 충돌 감지
조준 제약