언리얼에서 자주 사용하는 연산자로 연산자를 정리해보겠습니다.
예시 코드
헤더 파일
#pragma once
#include "CoreMinimal.h"
#include "ItemSpawnRow.h"
#include "GameFramework/Actor.h"
#include "SpawnVolume.generated.h"
class UBoxComponent;
UCLASS()
class CPP_PROJECT_API ASpawnVolume : public AActor
{
GENERATED_BODY()
public:
ASpawnVolume();
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Spawning")
USceneComponent* Scene;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Spawning")
UBoxComponent* SpawningBox;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Spawning")
UDataTable* ItemDataTable;
UFUNCTION(BlueprintCallable, Category = "Spawning")
AActor* SpawnRandomItem();
FItemSpawnRow* GetRandomItem() const;
AActor* SpawnItem(TSubclassOf<AActor> ItemClass);
FVector GetRandomPointInVolume() const;
};
소스 파일
FVector ASpawnVolume::GetRandomPointInVolume() const
{
// 1) 박스 컴포넌트의 스케일된 Extent, 즉 x/y/z 방향으로 반지름(절반 길이)을 구함
FVector BoxExtent = SpawningBox->GetScaledBoxExtent();
// 2) 박스 중심 위치
FVector BoxOrigin = SpawningBox->GetComponentLocation();
// 3) 각 축별로 -Extent ~ +Extent 범위의 무작위 값 생성
return BoxOrigin + FVector(
FMath::FRandRange(-BoxExtent.X, BoxExtent.X),
FMath::FRandRange(-BoxExtent.Y, BoxExtent.Y),
FMath::FRandRange(-BoxExtent.Z, BoxExtent.Z)
);
}
::
FMath::FRandRange(-BoxExtent.X, BoxExtent.X)
- FRandRange는 FMath의 정적(static) 함수이므로 객체를 생성하지 않고 ::를 사용하여 호출합니다.
->
UBoxComponent* SpawningBox;
FVector BoxExtent = SpawningBox->GetScaledBoxExtent();
- -> 연산자는 포인터가 가리키는 객체의 멤버 함수를 호출할 때 사용됩니다.
.
FVector BoxExtent = SpawningBox->GetScaledBoxExtent();
FMath::FRandRange(-BoxExtent.X, BoxExtent.X)
- .은 객체 또는 구조체의 멤버에 접근할 때 사용합니다.
- BoxExtent 객체의 X
정리
연산자 | 사용 예시 | 의미 |
:: | FMath::FRandRange() | 정적(static) 함수 또는 네임스페이스의 멤버 호출 |
-> | SpawningBox->GetScaledBoxExtent() | 포인터가 가리키는 객체의 멤버 접근 |
. | BoxExtent.X | 객체(구조체)의 멤버 접근 |
'게임 개발 공부 > Unreal Engine' 카테고리의 다른 글
플레이어를 추적하고 공격하는 AI 적 (0) | 2025.02.21 |
---|---|
Cast<T>와 GetWorldTimerManager().SetTimer (0) | 2025.02.13 |
Widget에서 애니메이션 적용 (0) | 2025.02.10 |
HUD (0) | 2025.02.07 |
GameState & GameMode (0) | 2025.02.06 |