기본 언리얼 C++ 스크립트
UCLASS(Blueprintable)
class MYPROJECT_API AMyCharacter : public ACharacter
{
GENERATED_BODY()
public:
// 클래스의 생성자
AMyCharacter();
// 클래스의 속성과 메서드를 정의
};
CLASS()
Unreal Engine의 리플렉션(reflection) 시스템과 함께 사용됩니다. 이 매크로는 언리얼 엔진의 여러 시스템이 클래스에 대해 메타데이터( MetaInfo )
를 생성하고, 이를 기반으로 다양한 기능을 제공
언리얼 생성자가 하는 일
.h
public:
// box collision comp
// 메타데이터로 올려놓으면 메모리관리에 올라가 빠르게 가져온다
UPROPERTY(VisibleAnywhere)
class UBoxComponent* BoxComp;
UPROPERTY(VisibleAnywhere)
class UStaticMeshComponent* BodyMesh;
.cpp
ACPlayer::ACPlayer()
{
// 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("BoxComp"));
RootComponent = BoxComp;
// box 사이즈
BoxComp->SetBoxExtent(FVector(50));
// boxComp 충돌처리
BoxComp->SetCollisionProfileName(TEXT("OverlapAll"));
BodyMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("BodyMesh"));
BodyMesh->SetupAttachment(BoxComp);
// 에셋 등록
ConstructorHelpers::FObjectFinder<UStaticMesh> TempMesh
(TEXT("/Script/Engine.StaticMesh'/Engine/BasicShapes/Cube.Cube'"));
// 에셋이 정상 로드 되면
if (TempMesh.Succeeded())
{
// -> 스택틱메시 할당
BodyMesh->SetStaticMesh(TempMesh.Object);
}
// Matrial 로드하기
ConstructorHelpers::FObjectFinder<UMaterial> TempMat
(TEXT("/Script/Engine.Material'/Engine/BasicShapes/BasicShapeMaterial.BasicShapeMaterial'"));
if (TempMat.Succeeded())
{
// -> 스택틱메시 할당
BodyMesh->SetMaterial(0,TempMat.Object);
}
BodyMesh->SetCollisionProfileName(TEXT("NoCollision"));
}
오른쪽 움직이기
void ACPlayer::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
// 등속운동, 등가속운동
// P = P0 + vt
FVector newVector(0, 1, 1);
FVector P0 = GetActorLocation();
FVector vt = newVector * 500 * DeltaTime;
FVector P = P0 + vt;
SetActorLocation(P);
}