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 위치로 액터의 좌표 변경