먼저 새로운 c++ 파일인 MovingPlatform을 만들어줍니당
근본적으로 헤더파일인 .h 파일에 있는 함수와 변수를 추가할 수 있는 블루 프린트와 비슷하고 .cpp파일은 본질적으로 이벤트 그래프와 같다
이번엔 기본적으로 변수만 추가해보았다
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MovingPlatform.generated.h"
UCLASS()
class UNREALLEARNINGKIT_API AMovingPlatform : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
AMovingPlatform();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
UPROPERTY(EditAnywhere)
int32 MyInt = 99;
UPROPERTY(EditAnywhere)
float MyFloat = 2.2;
UPROPERTY(EditAnywhere)
bool MyBool = true;
};
언리얼에서 c++은 벡터를 선언 시 FVector라고 선언한다. F는 구조체라는 것을 나타낸다. 이는
엑터를 나타내는 AMovingPlatform과 똑같은 말이다.
UPROPERTY(EditAnywhere)
FVector MyFloat;
에디터의 디테일 패널에서 볼 수 있는 새 변수를 선언했다.
기본값말고 다른 값을 설정하고 싶다!
여기서 잠깐
c++에서 새 구조체나 클래스 값을 만드는데 생성자가 필요하다. 벡터에서 생성자를 만들 경우 작동할 수 있게 값을 할당해야 한다
UPROPERTY(EditAnywhere)
FVector MyFloat= FVector(1,2,3);
이런식으로 생성자를 사용하여 값을 할당할 수 있다
MovingPlatform을 맵에 놓고 디테일을 확인하면 벡터가 있는 것을 볼 수 있다.
void AMovingPlatform::BeginPlay()
{
Super::BeginPlay();
MyX = MyFloat.X;
SetActorLocation(FVector(1,2,3));
}
SetActorLocation은 엑터를 1,2,3에 위치하라는 소리 같은데 이를 맵에서 확인하면
엑터에 컴포넌트가 없는데, 사실상 위치를 가질 수 없다는 의미이다. 컴포넌트만 위치를 지정할 수 있기 때문이다.
MovingPlaform에 큐브를 추가하고 실행 시키면
위치에 큐브가 보이는 것을 볼 수 있다.