본문 바로가기
게임 개발/유니티 게임 개발 일지

#5 캐릭터 구현하기 - 캐릭터의 손으로 지팡이 잡기

by FlowTree 2020. 2. 19.
반응형

먼저 글을 작성하기 전에... 반성

몇 주 전에 이 기능을 구현했지만, 블로그에 글을 작성하지 않았다. 이유는 해당 기능을 구현하고 정리해서 올리기가 너무 귀찮았고 그 다음 기능인 Field Of View 구현을 하다가 의욕이 감소했고 관련 정보를 얻기 위해서 영상, 책을 읽으며 시간을 보냈기 때문이다.

 

꾸준하게 한다는 건 정말 어려운 일이다. 배운 것을 정리해서 올리는 것은 더욱!!

그렇지만 정리를 해야 머리 속에 잘 기억이 되니까 귀찮아도 정기적으로 글을 작성하자.

개발 일지를 미루니까 어차피 나중에 해야하지만 안하니까 더욱 귀찮아지고 하기 싫어진다.

 

현재 손으로 지팡이 잡기 구현했고, Field Of View도 구현했고, 이제 특정 공격 애니메이션 프레임에서 매직미사일을 날리기를 구현해야하는 데 못하고 있다.(관련 정보는 어느정도 찾아 놓은 상태)

 

빠른 게임 개발을 위해서라도 기능 하나 구현하면 다음 기능 공부, 구현하지말고 블로그에 정리하고 하자. 그게 나한테 더욱 도움이 될 것이다. = 정보 복습, 꾸준함 습관화

 

지팡이를 손으로 잡기

캐릭터와 지팡이(주무기)를 분리하여 다양한 무기를 착용할 수 있도록 확장성을 고려했다.

그래서 캐릭터와 지팡이를 분리했고 IK를 이용해서 지팡이를 착용하고자 했다.

 

IK (Inverse kinematics) = 역운동학

https://docs.unity3d.com/kr/530/Manual/InverseKinematics.html


IK는 자식 조인트의 위치를 먼저 결정하고 부모 조인트가 거기에 맞춰 변형됩니다.

어떤 오브젝트를 손으로 잡을 때 손가락이 오브젝트에 맞춰 변형되어 집는다.

오브젝트를 사용자에 의해 선택된 점을 터치 시키거나 평탄하지 않은 땅에 발을 붙이는 것 같은 포즈를 캐릭터가 해주길 바랄 때 유용합니다.

 

문제 발생

IK를 이용하면 지팡이가 손 위치로 이동하여 잡은 것처럼 보이지만 손 관절이 꺽이고, 부자연스럽게 보인다. 그리고 공격애니메이션을 실행하면 지팡이는 그냥 서있다. 현재로써는 IK를 사용하긴 어렵다고 판단했고, 새로운 장비 착용 영상을 유튜브에서 찾았다.

 

IK 지식이 부족해서 공부가 필요하지만 현재로써는 필요하지 않으니 잠시 접어두고, 필요할 때 공부하도록하자.

유니티 책을 보고 이렇게 변형하면 되지않을까? 생각으로 구현하려고 했지만 생각보다 내가 원하는 대로 구현이 안되고 관련 정보도 부족하다. 이런 것들을 찾아서 공부하다보면 개발 진행이 늦춰지니 다음에 정리해서 올리도록하자.

 

https://www.youtube.com/watch?v=yU9pGmseJCk

 

문제 해결

캐릭터의 손 바이패드에 지팡이를 넣고 캐릭터의 손 모양에 맞게 지팡이의 위치, 회전을 조절하니

자연스럽게 지팡이를 잡았고 공격 애니메이션 실행 시 지팡이 또한 자연스럽게 움직였다.

 

▲캐릭터의 손 바이패드에 지팡이 오브젝트 넣기
▲캐릭터의 손 모양에 맞게 지팡이 위치, 회전 조절

 https://www.youtube.com/watch?v=0SMIaOsKPf4

 

#관련 정보를 얻을 수 있었던 인벤 유니티 강좌(절대 강좌 유니티!의 저자 이재현님)

https://www.youtube.com/watch?v=7Xy7nRDdDHI&list=PL5kjuqWePlOoR6OJy8Ula_14FzMb9Zpnc&index=9

 

희망 구현 사항

이번 기능을 구현하면서 손의 바이패드에 빈 게임오브젝트를 넣고 스크립트로 무기 오브젝트를 넣고 뺄 수 있다면, 다양한 무기를 착용할 수 있을 것 같다. 마치 작은 인벤토리처럼 말이다.

나중에 인벤토리 기능을 배워서 무기 착용 인벤토리를 구현해보자.

반응형

댓글