Unreal Engine 5/UE5 최종프로젝트 일기

(21) 총을 든 상태로 비 사격 자세 ↔ 사격 자세 전환

언리얼배우기 프로젝트 2025. 7. 7. 22:51

게임에 디테일적 요소를 더하기 위해서 캐릭터가 총을 들고 있으면 비 사격자세와 사격 자세에 전환을 구현하려고 하였다.

 

총기류 애니메이션을 보다가 비사격 자세용 무기 애니메이션이 있고, 사격 자세용 애니메이션이 있었는데 사격 자세용 애니메이션만 사용하기에는 뭔가 부족하다고 느꼈으며 

캐릭터가 사격을 안할때는 비사격 자세로있고, 사격을 할때는 사격 자세로 있는것이 어떨까란 생각이 들게 되었다.

(권총)비 사격 자세                                                                         (권총) 사격 자세

 

여기서 사격을 할때만 사격 자세로가고 사격을 안할때만 비 사격 자세를 바로 설정해주면 되는 간단한 문제는 아니었는데

 

우선 가장 큰 문제가 비 사격 자세에서 사격 자세로 넘어가는 애니메이션 경과 시간이 문제였다.

 

만약 애니메이션이 넘어가는 경과시간을 생각하지 않고, 바로 비 사격자세에서 사격 버튼을 누르면 사격 자세로 넘어가는 순간에 총은 이미 발사가 될 것이며 그럼 비사격 자세에서 총구가 정면을 향하지도 않았는데 총알이 발사되는것처럼 보여 일종에 버그처럼 보이게 되는 문제였다.

 

이것을 해결하기 위해서 캐릭터가 사격하는 로직에 조금 추가를 해주었는데

 

캐릭터가 사격하는 키를 누르게 되면 

 

bool타입에 변수인 NowFire을 만들었고, 이값이 true와 false인지를 판단하여 true일때는 바로 사격이 가능하고,

false일때는 0.4초에 딜레이를 주어 애니메이션이 전환되는 경과시간만큼에 시간동안은 사격이 안되도록 구현하였다.

 

 

이렇게 되면 총을 처음 획득하고 손에 들었을 때 NowFire은 false인 상태이며 사격 버튼을 눌렀다면 당연히 false상태이므로 NowFire을 true로 변경해주고, delay를 0.4초간 주어 캐릭터가 0.4초간은 사격이 불가능해지며 이 시간동안은 사격이 불가능 하니 애니메이션이 전환되는 시간을 벌어주게 될 것이다. 

 

이후에 로직들은 지난번에 작성한 글인 

https://parkcy723.tistory.com/150

 

(19) 원거리 무기 연발/단발 구현

참고한 유튜브 영상https://youtu.be/tLt1N2ZD_1o?si=NahxCKhqELbPHGhO 대부분에 로직은 유튜브에 내용을 참고하여 구현하였다. 그리고 캐릭터가 공격하는 키를 눌렀을때 근거리 무기, 원거리 무기, 던지는 액

parkcy723.tistory.com

이 글에 내용대로 진행이 된다.

 

이제 중요한 점은 비 사격자세에서 사격자세로 넘어가는 조건은 완료되었으니 사격자세에서 비 사격자세로 넘어가는 조건을 추가해줘야한다.

 

총을 다 쐈다면 

 

NowFire에 변수를 false로 만들기 위한 타이머핸들을 실행 시키며

 

1번만 실행시킬 것이기에 반복은 활성화하지 않는다.

 

근데 이렇게만 하면 생기는 문제가 타이머핸들을 사격할 때 마다 초기화 해 주지 않는다면 총을 쏠 때 마다 타이머핸들이 실행 될 것이므로 

 

사격을 할 때마다 NowFire에 타이머핸들을 초기화하여 다시 0초부터 시작하도록 구현하여야한다.

 

이를 위해 총기마다 실제로 사격하게 되는 함수 안에서

P1911 Fire Total Function 내부 속

 

총을 사격하는 함수 안에서 NowFire에 타이머핸들을 초기화 해준다.

 

이렇게 되면 총알을 발사할때마다 NowFire에 타이머핸들이 초기화되며

 

탄환이 없을때는 사격이 안될것이니 NowFire타이머핸들이 초기화되지않아 정상적으로 NowFire에 타이머핸들이 작동되며 5초 뒤에 NowFire이 false로 변하게 될 것이다.

 

이제 애니메이션 전환은 

비 사격자세 → 사격 자세 전환 규칙
사격자세 → 비 사격자세 전환 규칙

 

그리고 각각 애니메이션 경과시간은 0.2초로 설정해 주었다.

 

이렇게 되면 정상적으로 비 사격자세와 사격자세를 사격중인지를 판단하여 애니메이션이 전환되고 총알이 정상적으로 사격자세에서 발사가 될 것이다.


정상 작동 영상