본문 바로가기

언리얼엔진/C++슈팅프로젝트제작

플레이어 제작하기

플레이어 클래스 제작하기

C++ 폴더에 C++클래스를 만듭니다. 부모클래스는 Pawn으로 하고 Public 이름을 PlayerPawn으로 합니다.

Visual Studio로 가서 리로딩하고 언리얼로 돌아와 라이브코딩을 합니다. 혹시 리컴파일 하라는 메세지가 나타나면   언리얼에디터를 끄고

오른쪽 화살표를 눌러 리빌드 해줍니다.

잘되었으면 언리얼에디터가 다시 로딩 됩니다. 앞으로도 C++클래스의 생성자가 새로 생성되거가 변경되면 이 과정을 반복합니다.

playerPawn을 생성했으니 박스충돌체를 추가해 봅시다.

playerPawn.h에 맨아래 다음코드를 추가해서 boxComp의 포인터를 준비합니다.

public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;

	// Called to bind functionality to input
	virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;

	UPROPERTY(EditAnywhere)
	class UBoxComponent* boxComp;

playerPawn.cpp로 가 포인터에 컴포넌트 객체를 연결해줍니다.

#include "PlayerPawn.h"
#include "Components/BoxComponent.h"

// Sets default values
APlayerPawn::APlayerPawn()
{
 	// 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;
	boxComp = CreateDefaultSubobject<UBoxComponent>(TEXT("boxCollision Component"));
	SetRootComponent(boxComp);
}

BoxComponent.h를 추가하고 CreateDefaultSubobject를 이용해서 UBoxComponet를 추가해줍니다.

방금만든 boxComp를 RootComponent로 설정해 줍니다.

 

콜리전박스를 추가했으니 외형을 담당하는 스태틱메시를 컴포넌트를 playerPawn.h에 추가해 보겠습니다.

	//박스콜리전 포인터 선언
	UPROPERTY(EditAnywhere)
	class UBoxComponent* boxComp;
	//스태틱메시 포인터 선언
	UPROPERTY(EditAnywhere)
	class UStaticMeshComponent* meshComp;

playerPawn.cpp에 스태틱메시컴포넌트를 추가하고 boxComp의 자식으로 연결합니다.

	//스태틱컴포넌트메시추가
	meshComp = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMesh Component"));
	meshComp->SetupAttachment(boxComp);
}

잘 만들어졌는지 확인하기 위해 컴파일을 해야하는데 생성자를 수정했기때문에 라이브코딩이 아니라 언리얼에디터를 끄고 Visual Studio 에서 맨 오른쪽 빈 삼각형을 클릭해 컴파일해야 합니다.

문제없다면 언리얼이 다시 로딩됩니다.

PlayerPawn C++클래스를 우클릭후 블루프린트를 만듭니다 이름을 BP_PlayerPawn으로 하고 BP폴더에 저장합니다. 폴더가 없으면 하나 만드세요. 저장후 열어보면 다음과 같이 컴포넌트들이 생성되어 있습니다. 그런데 Box콜라이더는 보이는데 아직 아무 모양이 없네요 

MeshComp를 선택하고 디테일에서 Mesh에 Basic Cube와 적당한 머터리얼를 선택해줍니다.

이제 모양이 보입니다.

Basic Cube의 크기가 50,50,50이어서 Box 충돌체의 BoxExtent를 똑같이 맞춰줍니다. 이제 BoxComp를 선택해도 외곽선이 보입니다.

playerPawn.cpp 생성자에 코드를 추가해도 같은 효과가 있습니다.

	boxComp->SetBoxExtent(FVector(50, 50, 50));

 

'언리얼엔진 > C++슈팅프로젝트제작' 카테고리의 다른 글

적 방향 결정  (0) 2023.10.19
적 제작하기  (0) 2023.10.19
총알 발사 효과음 구현  (1) 2023.10.19
UE5 플레이어 키입력 바인딩하기  (0) 2023.10.19
슈팅프로젝트 환경 구성  (1) 2023.10.19