[UE5]장애물 공격-2

칼든개구리·2024년 12월 9일
0

[언리얼TO리얼]

목록 보기
16/42


먼저 새로운 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에 큐브를 추가하고 실행 시키면

위치에 큐브가 보이는 것을 볼 수 있다.

profile
메타쏭이

0개의 댓글