본문 바로가기

레트로의 유니티 게임프로그래밍 에센스

유니티 탑다운 슈터 게임 좀비서바이버 개발일지 5일차

코루틴을 사용해서 Reload 까지 완료 하면서 Gun 스크립트가 완료 되었습니다.

 

FK와 IK의 차이

 

FK(Foward Kinematics)

전진 운동학이라고 하며 큰관절에서부터 움직임이 이루어 집니다.

몸통에 가까운 큰 관절부터 움직임이 시작됩니다.

 

IK(Inverse Kinematics)

역 운동학이라고 합니다.

자식 관절에서 부터 움직임이 시작됩니다.

예를들어 검을 들고있는 상태라면 손부터 움직임이 시작됩니다.

 

반대로 FK 라면 몸에서 가까운 어깨부터 팔뚝, 손, 아이템 순으로 움직이기 때문에 어색해집니다.

 

총을 움직일 때는 총과 가까운 관절부터 움직이는게 맞겠죠

IK를 사용해야 합니다.

 

 

 

IK를 사용하려면 애니메이터컨트롤러 에셋에서 좌측 메뉴에 적용시킬 레이어

설정 아이콘 IK Pass가 켜져 있어야 합니다.

IK Pass가 켜진 모습

 

PlayerShooter 스크립트를 작성 하겠습니다.

PlayerMovement가 움직임을 담당했다면 PlayerShooter는 이름처럼 사격을 담당합니다.(사격, 재장전 등)

 

IK 대상의 위치와 회전을 SetIKPosition()과 SetIKRotation으로 결정 합니다.

IK 가중치를 SetIKPositionWeight()와 SetIKRotationWieght()로 결정 합니다.

IK의 대상은 AvatarIKGoal 타입으로 나타냅니다.

AvatarIKGoal.RightHand // AvatarIKGoal.LeftHand 이런식으로맴버들을 사용해서 매개변수를 채웁니다.

RightHand나 LeftHand같은 맴버들은 enum으로 되어있는데 유니티에서 캐릭터의 손, 발 정보를 저장하는 기능이 따로 있는것 같습니다.

 

IK의 메서드 들을 저자가 깊게 다루지 않으므로 일단 넘어가겠습니다.

 

컴포넌트 설정을 마친 후 총이 발사되고, 파티클 이벤트가 발생하며, 재장전까지 작동되는것을 확인했습니다.