언리얼 공부

2024.12.19[블루프린트와 입력액션으로 플레이어 캐릭터 조작하기]

jeongchanhyo 2024. 12. 19. 20:24

오늘 공부한 내용은 사실 어렵진 않지만 블루프린트를 이해하는데 도움이 확실히 많이 되고 중요한 기본 개념정리였다!

1. 플레이어캐릭터 조작하기

우선 우리가 움직여야하는 대상을 만들었다(콘텐츠 브라우저 우클릭 → 블루프린트 클래스 → 캐릭터)

그 후 실행을 하면 이런 비어있는게 나오는데. 이건 캐릭터다! 다만 겉에 옷을 안입혀준 것 뿐! 그럼 눈으로 보고 알 수 있게 옷을 입혀주자

디테일 탭에서 스켈레탈 메시 SKM_Bot을 입혀준다.

그럼 이 캐릭터 옷이 입혀지는데 내 캐릭터의 중심에 이 옷의 발이 있는 모습을 볼 수 있다. 이대로 실행하면 발이 땅에서 50cm는 떨어져있는 내 캐릭터를 볼 수 있다

메시를 아래로 잡아당겨 발 위치를 맞춰주자! 이러면 외형은 준비 끝!

이제 이 친구가 세상을 바라볼 수 있게 해주자

블루프린트에 스프링 암을 추가시켜준다.

스프링 암(spring arm)이란? 상황에 따라 거리를 조절해주는 아주 편리한 도구라고 보면 된다. 

컴포넌트에서 카메라 컴포넌트를 추가시켜준다.

그럼 이렇게 되는데 이대로 이 블루프린트 캐릭터를 뷰포트에 적용시켜 실행해보면 이친구는 항상 세상을 삐딱하게 보게된다. 메시가 삐뚤어져있기 때문인데 회전시켜 메시를 교정해주자.(SIUUUUUUUU)

교정하고 실행하면 멋진 소방관을 뒤에서 바라보는 뷰가 된다.... 카메라를 좀만 올려주고 뒤로 물러나도록 하자.

※이 때 카메라를 움직이면 안되고 스프링 암을 옮겨주도록 하자! 카메라를 옮기면 나중에 벽같은데서 벽 내부를 보게된다.

스프링암의 디테일에서 위치의 Z를 45만큼 올렸고 타깃 암 길이를 350으로 늘렸다.

이제 카메라와 캐릭터는 준비가 됐고 캐릭터 조작과 시점조작만 할 수 있게되면 평범한 게임의 캐릭터처럼 플레이할 수 있게된다.

우선 입력액션을 만들어준다. 입력액션이란 점프, 웅크리기, 때리기 등의 특정 사용자 입력에 이름을 붙여 프로그램 내에서 쉽게 참조하고 관리할 수 있도록 하는 기능이다.

총 2개를 만들건데 1번째는 "IA_NBCMove" 라는 캐릭터 이동조작을 위한 액션을 만들것이고, 2번째는 "IA_NBCLook"라는 카메라 시점조작을 위한 액션을 만들것이다.

그리고 입력 매핑 컨텍스트를 IMC_NBC로 만들어준다. 입역 매핑 컨텍스트는 유저의 키 입력등을 입력 액션에 매핑(연결)시켜주고 관리할 수 있는것이다. 여기저기 보니 우선순위를 정해줘 충돌을 해결하는 등의 여러 기능이 있었다.

이제 각 액션들이 역할을 할 수 있게 해줘야한다.

IA_NBCMove에 들아가서 액션에서 값 타입을 Axis2D(Vector2D)로 바꿔준다.1D, 2D, 3D는 대충 사용하는 축이라고 보면 된다. 우리는 앞뒤 좌우 사용할거기 때문에 2D IA_NBCLook도 시야를 상하좌우만 사용하니까 2D로 해준다.

그 후 IMC_NBC에서 각 입력을 키와 지정해줬고 모디파이어를 만들어서 구분해줬다.

Move는 W에는 아무것도 안넣었고 뒤로가는 S에는 부정, D에는 스위즐 입력 축 값 반대쪽인 A에는 스위즐 입력 축 값과 부정을 넣어줬다.

Look는 2D마우스 축을 넣어줬고 모디파이어에서 Y축을 부정해줬다. 이걸 안해주면 Y축이 반대로간다.(GTA 비행기 조종)

 

이제 마지막으로 블루프린트로 플레이어 키 입력을 IMC_NBC에 전달해주면 된다.

이 친구를 이용해

이렇게 내가 입력한 값이 IMC_NBC에 잘 전달되도록 해준다.

그 후 IA_NBCLook에서 설정한 마우스XY축을 움직이면 트리거가 돼서 Yaw와 Pitch에 연결시켜준다.

Roll, Pitch, Roll 관련 : https://en.wikipedia.org/wiki/Aircraft_principal_axes

이제 마우스를 돌리면 잘 돌아간다.

 

그럼 캐릭터 이동만 시켜주면 완성!

캐릭터 이동도 비슷한데 Get Control Rotation을 Get Forward Vector(앞으로 가는거)로 변환. Return Value는 World Direction으로 연결시켜서 방향을 바꿔서 월드값의 방향 좌표를 내 캐릭터로 바꿔준다.

이걸 다 하고 나면 내 캐릭터가 잘 움직이는걸 볼 수 있다!

 

오늘 사용한 에셋

https://www.fab.com/ko/listings/709924e0-3128-4d23-9d36-fe35991d03c0

https://www.fab.com/ko/listings/235d006c-4627-4d77-857e-3f9dbb88f147