1) C++ Classes 폴더 선택한 상태에서 Add/Import - New C++ Class 선택하고 Pawn 클래스 상속 받아 새로운 C++ Class 생성
2) 플레이어의 외형 및 충돌 영역 설정을 위한 컴포넌트 추가 (콜라이더 및 매쉬)
헤더 파일에 UBoxComponent와 UStaticMeshComponent 클래스를 할당하기 위한 포인터 변수 선언

컴포넌트 클래스들을 사용하기 위해 소스 파일에 먼저 해당 클래스들을 include 해준다.

CreateDefaultSubobject<클래스 이름>(TEXT("컴포넌트 별명")) : 액터에 컴포넌트 추가SetRootComponent(컴포넌트 변수) : 해당 컴포넌트를 최상단 컴포넌트로 지정컴포넌트 변수 1->SetUpAttachment(컴포넌트 변수 2) : 변수 1을 변수 2의 자식 컴포넌트로 지정SetBoxExtent(FVector 변수) : FVector 크기로 BoxComponent의 Box Extent 설정CreateDefaultSubobject<UBoxComponent>()로 BoxComponent 타입의 오브젝트가 생성되고, 포인터 변수인 boxComp는 이 오브젝트를 가리켜 클래스를 참조한다.
✔️ int 포인터와 비교
int a = 3;
int* b = &a;
*b = 3;
UBoxComponent object = 오브젝트에 달린 UBoxComponent 클래스;
class UBoxComponent* boxComp = &object;
*UBoxComponent = 오브젝트에 달린 UBoxComponent 클래스
이런 느낌이라고 보면 될 듯?
❗ 소스 파일 내의 기본 함수 실행 순서
: APlayerPawn == 클래스이름(기본값 설정) -> BeginPlay(시작할 때) -> Tick(프레임마다)

1) Project Settings -> Input에서 Axis로 키 입력을 바인딩한다.
2) 헤더 파일에 키 입력 값을 받을 변수 및 입력 값을 처리할 함수를 선언한다.

3) 소스 파일에서 함수를 구현한다.(입력 값을 받아서 변수에 넣는다.)

4) Pawn이나 Character 클래스를 상속 받는 클래스를 생성하면 SetUpPlayerInputComponent() 함수가 자동으로 구현되어 있음. 이 함수가 언리얼 엔진 시스템에서 입력 값을 함수에 넘겨주는 역할을 한다. 이 함수의 매개변수인 PlayerInputComponent 변수의 멤버 함수인 BindAxis를 사용해 바인딩 되어있는 Axis 입력을 사용자가 만든 함수(== MoveHorizontal, MoveVertical)에 연결한다.
연결할 Axis 이름, 연결할 함수가 있는 클래스, 연결할 함수의 주소)
5) 소스 파일의 Tick() 함수에서 프레임 단위로 액터의 위치를 변경한다.
FVector dir = FVector(0, h, v))y축에 h, z축에 v 지정dir.Normalize())GetActorRocation() : 액터의 현재 좌표 반환SetActorRocation(FVector) : 인수로 들어온 Fvector 위치로 액터의 좌표 변경