유니티 엔진 - 게임 프로젝트/Photon을 사용한 멀티 플레이어 게임

프로젝트 세팅 - 2) 무기 변경과 리깅

monstro 2026. 2. 23. 15:46
728x90
반응형

- 개요

숫자 키 1 / 2 / 3키를 눌러서 무기를 변경하고 변경된 무기에 따라 다른 리깅을 적용한다

유니티에서 리깅을 적용하기 위해서는 Animation Rigging 패키지를 사용하여 수행한다

리깅을 적용하는 절차는 다음과 같다

  • 1) 리깅을 적용할 무기들에 Rig Transform 컴포넌트 추가
  • 2) 무기를 사용하는 주체를 선택하고 상단 Animation Rigging - Rig Setup 선택
  • 3) 선택하면 해당 주체에게 Rig Builder 컴포넌트가 수식 + "Rig"라는 이름의 자식 오브젝트 생성
  • 4) 무기를 사용하는 손을 의미하는 GameObject를 Rig 오브젝트의 자식으로 생성
  • 5) 4)에서 생성한 손의 오브젝트Two Bone IK Constraint 컴포넌트 수식
  • 6) 무기를 선택하고 무기를 다루는 손을 의미하는 자식 오브젝트를 생성 + Animation Rigging 패널에 등록
  • 7) 6)에서 등록한 2개의 자식 오브젝트를 원하는 위치에 배치
  • 8) 4)에서 생성한 손의 오브젝트Two Bone IK Constraint 컴포넌트에서 다음의 동작 수행
    • 순서대로 동작할 본을 각각 Root - Mid - Tip에 배치
    • 순서대로 동작시키기 위한 기준이 되는 본Target에 배치

 

- 애셋 작업

1) InputActions 애셋

 

무기를 변경하는 Swap 액션을 추가한다

숫자패드 1 / 2 / 3 키를 눌러서 동작하도록 구성한다

 

 

바인딩되어 있는 키에는 Scale Processors를 추가하고 Factor를 설정하여 값을 부여한다

1 / 2 / 3 키에는 각각 0 / 1 / 2의 값을 부여한다

 

- 스크립트 작업 

1) PlayerWeaponChange 스크립트

 

무기를 변경하는데 사용PlayerWeaponChange 스크립트를 생성한다

멤버변수의 구성은 위와 같다

  • playerActionMap 멤버변수 + playerInput 멤버변수 : 입력에 따른 동작을 수행하기 위한 변수
  • 무기에 따른 애니메이션 리깅과 관련된 변수
    • leftHand 멤버변수 : Rig 오브젝트자식 오브젝트 + 무기를 사용하는 플레이어의 왼손
    • rightHand 멤버변수 : Rig 오브젝트자식 오브젝트 + 무기를 사용하는 플레이어의 오른손
    • rig 멤버변수 : 리깅 시스템의 최상위 컴포넌트 + Rig Setup이 설정된 대상에게 자동 수식
    • leftTargets 멤버변수 : 무기 오브젝트자식 오브젝트 + 왼손
    • rightTargets 멤버변수 : 무기 오브젝트자식 오브젝트 + 오른손
    • weapons 멤버변수 : 사용할 무기 오브젝트들
  • weaponNumber 멤버변수 : 현재 사용중인 무기 오브젝트의 인덱스

 

 

Awake 함수 + OnEnable 함수 + OnDisable 함수를 위와 같이 오버라이드하여

입력에 따른 동작을 수행하기 위한 절차를 진행한다

 

 

OnSwap 함수의 로직은 위와 같다

입력된 키의 factor를 읽어와 입력한 키에 해당하는 무기의 GameObject를 활성화하고

리깅의 기준이 되는 본을 설정한 후RigBuilder의 Build 함수를 호출하여 리깅을 적용한다

 

- 최종 실행 결과

 

728x90
반응형