본문 바로가기

언리얼엔진/c++클래스 만들어보기

MyPawn에서 키입력 받기

MyPawn은 부모 클래스를 Pawn으로 만들었다. Actor와 다른점은 코드를 보면 아래 함수가 추가되어져 있다

// Called to bind functionality to input
void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);
}

여기에 Edit>프로젝트세팅>Inputs Tab의 InputAxis를 연결해줘야 한다. 우선  InputAxis를 만들자.

 

MyPawn.h에 방금만든 Axis를 이벤트를 선언한다.

public:
	void UpDown(float Value);
	void LeftRight(float Value);

private:
	UPROPERTY(VisibleAnywhere)
	UStaticMeshComponent* Mesh;

	UPROPERTY(VisibleAnywhere)
	class UFloatingPawnMovement *Movement;

MyPawn.cpp에 AddMovementInput()  사용을 위해  프레임워크를 사용하기 위해 다음과 같이 선언하고 

#include "MyPawn.h"
#include "GameFramework/FloatingPawnMovement.h"

생성자에 UFloatingPawnMovemnt 인스턴스를 만들어 연결해준다.

AMyPawn::AMyPawn()
{
 	// Set this pawn to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;
	//GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, TEXT("Hello world"));
	Mesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MESH"));
	Movement = CreateDefaultSubobject<UFloatingPawnMovement>(TEXT("MOVEMENT"));
	ConstructorHelpers::FObjectFinder<UStaticMesh> SM(TEXT("/Game/StarterContent/Props/SM_Couch.SM_Couch"));
	if (SM.Succeeded()) {
		Mesh->SetStaticMesh(SM.Object);
	}
}

Updown, Leftright를 정의한다.

void AMyPawn::UpDown(float Value)
{
	if (Value == 0.f)
		return;
	UE_LOG(LogTemp, Error, TEXT("UpDown %f"), Value);
	AddMovementInput(GetActorForwardVector(), Value);
}

void AMyPawn::LeftRight(float Value)
{
	if (Value == 0.f)
		return;
	UE_LOG(LogTemp, Error, TEXT("UpLeftRight %f"), Value);
	AddMovementInput(GetActorRightVector(), Value);
}

Pawn을 움직이는데 SetActorLocation()을 사용하지 않고 Framework에서 구현되어 있는 AddMovementInput()를 사용하는 이유는 좀더 향상된 움직임을 제공하기 때문이다.

 

저장하고 라이브코딩후 플레이 해보면 WASD키를 사용하여 쇼파가 움직인다.

MyPawn.cpp
0.00MB
MyPawn.h
0.00MB

'언리얼엔진 > c++클래스 만들어보기' 카테고리의 다른 글

EnhancedInput 연습  (1) 2023.10.17
UE5 C++클래스 Character상속  (1) 2023.10.17
UE5 GameModeBase  (0) 2023.10.15
UE5 빌드 환경 설정 및 컴파일 방법  (0) 2023.10.14
언리얼 C++ StaticMesh 추가하기  (0) 2023.10.14