본문 바로가기
언리얼엔진

[UE5.1] 언리얼C++로 캐릭터 움직이기!-1탄

by 송파감자 2023. 4. 28.

이번주 학원에서 드디어 언리얼C++ 스크립트를 배우게 됐다.
비행기가 제일 간단해서 비행기를 WASD키로 움직이고, F키로 로켓을 쏘는 것을 해보았다.
(에티버스러닝에서 국비지원 K-Digital과정을 듣고 있고, 두달이 이젠..넘어버렸다.. 시간 왕왕 빠르다.)
 
어제, 오늘은 애니메이션, 블렌드 스페이스를 써보아서 나는 좀 더 응용해보고자 캐릭터를 이용해서 연습해보고자 한다.
 

진행 순서!

  1. 프로젝트 생성
  2. 맵 저장(얘는 포스팅 생략함)
  3. C++ 클래스 추가
    • 게임모드베이스
    • 플레이어컨트롤러
    • 캐릭터
  4. 위 클래스를 블루프린트로 상속
  5. 셋팅 

 

1. 프로젝트 생성

C++로 생성하는 것보다 블루프린트로 생성한 다음 C++로 바꾸는 게 좀 더 빨라서 아래와 같이 작업했다.

 

3. C++클래스 추가

젤 먼저 할 작업은 맵 저장 후, C++클래스로 게임모드베이스를 만드는 것이다.

툴-> New C++ Class로 열어서 게임모드베이스 상속받아서 MyGameMode를 만들어준다
그럼 비주얼스튜디오에 내가 만든 게임모드 베이스가 보인다!
에디터에서는 이렇게 보인다

동일하게 

  • 플레이어컨트롤러
  • 캐릭터

를 만들어주겠다.
 
만들고 나서 월드셋팅에 게임모드를 지정해주면 아래 Selected GameMode 비활성화 되어있다.
얘는 코드로 쳐서 바꿔줘야 한다.

 

3_1. 게임모드설정

얘네를 설정하는 방법은 MyGameModeBase에서 생성자를 만들어서 그 생성자 안에서 셋팅해주면 된다!

짜잔! 마이게임모드베이스의 디폴트폰클래스와 플레이어컨트롤러클래스가 셋팅 되었다!

3_2. 캐릭터 설정

일단 캐릭터에서 쓸 스켈레탈메쉬가 필요해서 3인칭애를 가져왔다

Add-> Add Feature or Content Pack눌러서 삼인칭을 선택한다

BP_ThirdPersonCharacter의 디테일 패널의 Mesh를 눌러서 에셋 위치를 찾은 후

이 에셋을 Ctrl C + Ctrl V해서 주소를 복사해둔 다음에

MyCharacter.cpp에 있는 생성자에 아래와 같이 타이핑 후 넣어준 다음

얘를 상속받은 블루프린트 BP_MyCharacter를 만든 후 열어보면!

짜잔! 어쨌든 스켈레탈 메쉬 들고 왔다!  다른 애셋 스켈레탈 메쉬 레퍼런스 복붙하면 마네퀸 대신 그 애셋 캐릭터가 들어간다

뷰포트에서 재생 해보면 아무것도 안나오는 것 처럼 보이나 F8버튼을 눌러서 돌려보면 허공에 떠있는 마네퀸을 볼 수 있당

왜 안 보이느냐? 그건 카메라 셋팅을 안 해줘서기 때문에 캐릭터에 카메라 셋팅을 해줘보겠다.
 
그건 MyCharacter.h에서 일단 스프링암과 카메라 컴포넌트 클래스를 각각 전방선언해준 후에 cpp에서 추가 작성해준다.
(어디서나 보이게, 블루프린트에서는 수정말고 보기만 가능하게, 카테고리 = 컴포넌트)

#include "GameFramework/SpringArmComponent.h"
#include "Camera/CameraComponent.h"
#include "Components/CapsuleComponent.h" 를 추가해준다. 

 
위에서 코드로 쳤던게 BP_MyCahracter( MyCharacter자식 ) 뷰포트로 보면 아주 정확히 알 수 있다!

눌러서 꼭 키워서 보세요!
이건 아까 둥뚱 떠나니던 SKM를 땅바닥에 놓아주려고 위에서 셋팅한거다

움직이는 건 향상된 입력 매핑으로 해보려고 하는데...
오늘은 이만 줄이고 내일 포스팅에서 계속됩니다 ^.^~