Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

시작은 0부터

11. 애니메이션 이벤트 본문

Unity 학습일지

11. 애니메이션 이벤트

0base 2022. 8. 22. 02:33

Animation Event

: 유니티 애니메이션 프레임에 함수를 호출할 수 있는 기능이다. 특정 애니메이션에만 어떠한 이벤트를 처리하고 싶을 때 사용할 수 있다.

 

메탈슬러그 모작 만들기를 시도하고 있는데, 구글링으로 구한 리소스파일이 간격이 일정하지 않아 스프라이트가 프레임마다 위치를 다르게 조정해야 위치가 맞는 문제가 생겼다. 처음부터 간격이 맞는 리소스를 구하는게 제일 완벽하겠지만 구하지 못해서 안맞는 리소스 파일을 수정해서 간격을 맞추려고 포토샵으로 노가다를 했지만 시간투자대비 진전이 너무 없는 것 같아서 차라리 포토샵 노가다가 아닌 유니티 노가다로 위치값을 조정해보았다. 프레임마다 위치값이 안맞아서 캐릭터가 사방팔방 튀어서 각 프레임마다 애니메이션 이벤트로 올바른 위치값으로 이동시켜주는 함수를 호출하여 위치값을 강제로 맞추는 방법을 시도했는데, 잘 되는 것 같다가도 가끔씩 캐릭터가 튄다.(위치값 부정확)

 

메탈슬로그는 이동하면서 공격도 하고 폭탄도 던지고 앉기도 하고 다양한 모션이 존재한다. 이러한 다양한 모션들을 구현하기 위해서 플레이어 오브젝트 안에 자식 오브젝트로 상반신 하반신을 각각 나누어 스프라이트가 따로 작동하게 만들었고 앉았을 때는 기존 상반신 하반신을 지우고 앉았을 때 전용 스프라이트가 보이게 만들었다. 앉은 스프라이트와 상반신 하반신의 변환 방법은 3개의 오브젝트(상체, 하체, 앉은자세)를 만들어 각각 경우에 따라 스프라이트 랜더의 컬러 알파값을 조정하여 구현했다.

 

앉았을 때와 일어섰을 때의 위치값이 서로 맞지 않아서인지 각 동작마다 애니메이션 이벤트로 위치값을 지정해주었는데도 간혹 애니메이션 위치가 튀는 경우가 발생하는데 아직 해당 부분은 원인을 찾는 중이다. 동기와 서로 기획서를 만들어 과제를 진행하는 수업이었는데, 스프라이트 위치 맞추는데 대부분의 시간을 할애했고, 내부 기능보다는 스프라이트를 어떻게 자연스럽게 출력하는데에 본의아니게 중점을 두다보니 제작 진행이 더뎠다.

 

플레이어 이동, 공격, 폭탄 던지기, 점프, 앉기, 앉은 채로 공격 및 폭탄던지기까지 구현하는데 시간이 많이 걸렸고, 적이 랜덤하게 좌우에서 생성되서 플레이어에게 다가오다가 일정 거리가 되면 총을 쏘고 리젠되는 건 금방 구현했다. 플레이어가 자연스럽게 움직이게 하는데 중점을 두었지만 만족스러운 결과를 얻진 못했다. 시간이 될 때 수정작업을 더 거쳐야겠다.