favicon Jay Lee DevLog

📚 목차

두번째 글에서는 이전 글에서 다운받은 맵에

간단한 캐릭터를 만들어 맵에 추가해보려 한다.

해당 맵에 기본 캐릭터가 있으면 좋았겠지만, 없어서

이전 글에서처럼 마켓플레이스를 이용하여 캐릭터도 받아두었다.

 

먼저, 다운 받은 맵을 사용하려면, 보통은 아래 사진처럼 Maps라는 폴더에 저장되어 있다.

사진에서 주황색으로 표시되어 있는 레벨을 더블클릭하면 해당 맵이 열린다.

(그냥 아무맵이나 받았더니 해당 맵은 사이즈가 엄청 커서 여는데 세월이니, 작은 맵을 다운받아서 하는걸 추천한다..)

위의 맵은 로딩이 너무 길어서 그냥 기존에 있던 다른맵으로 바꿨다..

추가로 해당 프로젝트가 시작하자마자 내가 선택한 맵으로 열리게 하려면,

편집-프로젝트 세팅에서

에디터 시작맵을 내가 선택한 맵으로 바꿔주면 됩니다.

여기까지 하면 이제 내가 선택한 맵이 에디터에 보이게 된다.

무료 맵이지만 이쁘다.

그러면 이렇게 이쁜맵을 그냥 이렇게만 보기는 아쉬우니

캐릭터를 만들어서 키보드를 이용해 이동하며 맵 구경을 해보려 한다.

 

먼저 틀-새로운 C++ 클래스를 클릭하면 아래와 같은 창이 나오는데,

여기서 캐릭터를 선택해서 클래스를 만들어준다.

그럼 포커싱이 자동으로 Visual Studio로 이동되는데, 이제 VS를 이용하여 

캐릭터에 대한 간단한 설정을 블루프린트에서 해줄 수 있도록 코딩하려 한다.

 

솔루션 탐색기에 보면 내가 만든 클래스가 생성되어 있는걸 확인할 수 있는데,

일단 헤더부분에 언리얼엔진 블루트린트에서 속성을 추가해보는 소스를 넣어준다.

 

UPROPERTY(VisibleAnywhere, Category = Camera) 

USpringArmComponent* SpringArm;

UPROPERTY(VisibleAnywhere, Category = Camera)
UCameraComponent* Camera;

 

해당 소스는 Camera라는 속성을 추가하는 소스인데,  VisibleAnywhere 같은 속성값은 인터넷에서 그때 그때 찾아 사용하면 된다. USpringArmComponent과 UCameraComponent 카메라 관련 컴포넌트인데 자세한 내용은 검색해서 찾아보는걸 추천한다. 대강 얘기하면 카메라 시점을 만든다고 생각하면 된다.

(추가로 include에 coreminimal.h 가 추가되어 있는데, 이 부분을 EngineMinimal.h로 바꿔주면 더 다양한 헤더들을 include하지 않고 사용할 수 있으니 미리미리 바꿔주는게 좋다.)

 

이후 cpp파일 생성자에 아래 코드를 넣어 USpringArmComponent와 UCameraComponent를 생성하고 위치를 설정해준다.

 

SpringArm = CreateDefaultSubobject<USpringArmComponent>(TEXT("SPRINGARM"));
SpringArm->SetupAttachment(GetCapsuleComponent());
SpringArm->TargetArmLength = 400.0f;
SpringArm->SetRelativeRotation(FRotator(-15.0f, 0.0f, 0.0f));

Camera = CreateDefaultSubobject<UCameraComponent>(TEXT("CAMERA"));
Camera->SetupAttachment(SpringArm);

 

이렇게 코딩을 한 후 컴파일을 해야하는데, 언리얼엔진이 실행 중일때

컴파일 하는 방법은 2가지인데,

하나는 언리얼엔진을 끈 상태에서(반드시 꺼놔야 한다.) VS에서 컴파일 하는 방법.

다른 하나는 언리얼엔진에서 제공하는 Live Coding을 이용하는 방법인데,

언리엘엔진 오른쪽 아래 끝부분을 보면 해당 아이콘이 있는데,

클릭하면 VS에서 컴파일하지 않아도 컴파일을 진행할 수 있다.

두 방법 모두 장단점은 있는데,

VS를 이용하면 당연한 거지만 디버깅 모드로 실행해서 직접 디버깅 및 컴파일 오류를 찾을 수 있고,

Live Coding의 경우 언리얼엔진을 끄지 않고 바로 컴파일 할 수 있다는 장점이 있지만, 컴파일 오류가 날 경우 오류 찾기가 쉽지 않다는 점이 있다.

 

이렇게 하면 일단 캐릭터에 대한 부모클래스 생성이 끝났다.

그럼 이제 캐릭터의 실체를 만들어줘야 하는데, 여기서 블루프린트를 이용하면 비교적 쉽게 만들 수 있다.

먼저 내가 만든 MyCharacter 클래스에서 마우스 우클릭을 하면,

MyCharacter 기반 블루프린트 클래스 생성이 있는데, 이를 클릭하여 블루프린트를 만들어준다.

보통 블루프린트 이름 앞에는 BP_를 붙여준다고 한다.

블루프린트를 만들면 아래와 블루프린터 편집 창이 뜰건데

처음엔 왠 원통 같은 화면이 뜰거다.

여기에 내가 선택한 캐릭터를 넣어줄건데,

위 화면에 보이는 메시를 누르면 오른쪽에 세부 셋팅 창이 뜬다.

위의 사진처럼 메시라는 항목을 찾아 스켈레탈 메시에 내가 선택할 캐릭터를 찾아 지정해주면

아까 위의 원통에 해당 캐릭터가 셋팅된다.

이후 캐릭터가 바라보는 방향과 카메라의 방향을 일치시켜 주기 위해

오른쪽 위의 빨간 네모박스 안의 기능을 이용해 위와 같이 방향을 맞춰주면 된다.

 

하다보니 원래대로면 메시를 선택하는 컴포넌트 탭에

내가 MyCharacter에 추가한 SpringArm과 Camera가 있어야하는데 없다..

확인해보니 cpp파일 저장을 안하고 컴파일을 했다. 멍청이..

이렇게 SpringArm과 Camera가 추가되어야 하는게 맞다. 다들 저장이 됐는지 꼭 확인하고 컴파일하자.

설정이 다 된 후에는 위 사진의 컴파일 버튼을 눌러 컴파일 해줘야 블루프린트가 적용된다.

위의 사진의 빨간 네모박스가 바로 SpringArm과 Camera이다. 해당 컴포넌트들을 이용하여 1인칭, 3인칭 등 다양한 카메라 각도에서  캐릭터를 조종할 수 있게 해줄 수 있다.

모니터가 커서 캡처화면이 작게 나오는데..어쨋든 위에 만들어둔 블루프린트를 드래그하여 맵에 넣어주면 위와 같이

드디어 나의 캐릭터가 맵에 들어간다. 오른쪽의 빨간 네모박스는 내가 게임을 플레이 했을 때의 카메라 시점을 보여준다.

 

여기까지 만들어놓고 플레이를 누르면

??????????? 내가 만든 캐릭터가 아닌 이상한 곳에서 카메라가 시작된다.

내 케릭터는 저 끝에 있다..

해당 문제는 다음 글에서 해결해 보도록 하자.

+ Recent posts

/ /

Contact

📧 dlwjdwls60@naver.com


블로그에 내용이 있으면 해당 글을 보여주며, 없으면 내용이 복사된 채로 ChatGPT로 연결됩니다.