unreal 5기

250811 언리얼엔진 본캠프 6일차 캐릭터 카메라를 다뤄보자!

parkjinnam 2025. 8. 11. 17:49

지난주에 하던 Game Animation Sample을 이용한 애니메이션 모션 구성 파악을 하던 중 한 가지 난관에 봉착했다. 당연한 얘기겠지만 GAS는 블루프린트로만 구성된 게 아닌 c++을 이용한 코딩도 포함되어 있다는 것이다. 그렇기에 하나하나 노드를 뜯어보면서 이해하기에는 c++내용을 모르면 어떻게 생겨먹은 노드인지도 파악하기 힘들다는 것이고 나는 자랑은 아니지만 c++에 대해서 아는 게 없다! 본캠프 과정 3주 차에서부터 c++의 기초부터 하나하나 배워갈 예정이기에 잠시 GAS 씹고 뜯기는 미뤄두고 내가 해볼 수 있는 일부터 하는 게 맞다고 생각이 들어 주제를 한번 바꿔보자

MMORPG를 하다보면 자연스럽게 자신의 캐릭터에 애착이 생기게 마련이고 여러 구도로 내 캐릭터를 보고 싶어지는 마음이 드는 것은 필연이다. 그러한 유저의 니즈를 개발자도 당연히 알고 있기에 실제 게임에서는 다양한 카메라 각도로 캐릭터를 볼 수 있게끔 줌 인, 줌 아웃 등의 기능이 포함되어 있다. GAS에도 이러한 기능이 존재하지만 첫 번째, 부드럽게 줌 인, 아웃이 되는 게 아닌 정해진 길이만큼만 스위치 되듯 변한다는 점이 있고 두 번째, 연습용 프로젝트로 마이그레이션 하면서 기존 Thirds person 프로젝트와 충돌이 있는 건지 막상 줌 인, 줌 아웃이 안된다는 점이다. 그렇기에 해당 부분을 수정해 보도록 하자.

문제의 CBP_SandboxCharacter의 카메라 관련 블루프린트 노드이다

 

far, balanced, close의 형식으로 정해진 길이만큼 바뀌게 되어있고, 바뀔때 마다 소리와 String이 출력되도록 되어있는 것을 볼 수 있다. 필요 없으니 과감하게 지워주도록 하자

마우스 휠 동작에 각각 스프링 암의 Target Arm Length를 변화하도록 노드를 가져오자

 

자 이제 동작을 생각해보자 내가 휠을 다운한다면 카메라는 멀어져야 하고 휠을 업한다면 카메라는 가까워져야 할 것이다. 그러면 휠 다운 동작 1번당 특정 값만큼 기존 Target Arm Length에 더해지도록 하면 되지 않을까? add를 써보도록 하자

10씩 더해지고 빼지게 설정해 보았다.
줌 인, 줌 아웃이 잘된다!

 

근데 여기서 하나 짚고 넘어가야하는게 있다. 최소, 최대 값을 정해두지 않았기에 최대로 줌을 당긴다면 캐릭터 안으로 들어가고, 최대로 줌 아웃을 한다면 아예 지구가 보인다. 그렇기에 최대, 최소를 정해주도록 Clamp 노드를 쓰도록 하자

1회당 수치도 조정해주고 최대, 최소값도 지정해주면 된다

 

이렇게 휠 조작으로 쉽게 줌 인, 줌 아웃을 구현해 보았다. 카메라를 다룬김에 다른 것도 구현해 보도록 하자 펄어비스의 MMORPG인 검은 사막에는 특별한 기능이 존재한다 그것은 바로 줌 인을 통해서 캐릭터의 얼굴을 확대하면 특정 구간에서 캐릭터가 카메라를 쳐다보는 기능이 존재한다.

출처 - dc incide 검은사막 하이델 갤러리

 

이 기능도 구현할 수 있을까? 한번 도전해보자