Actor와 Scene Component
6강. Actor와 Scene Component
1. 이번 강의에서 해결할 문제
Actor 안의 Mesh와 감지 영역 위치를 각각 수동 계산하면 Actor를 이동할 때 구성 요소가 어긋납니다. Scene Component 계층으로 상대 Transform을 구성합니다.
2. 학습 목표
3. 핵심 개념
Actor는 World에 존재하는 컨테이너입니다. Actor Component는 체력처럼 위치가 필요 없는 기능을, Scene Component는 위치·회전·크기를 가진 계층 노드를 표현합니다. Primitive Component는 Scene Component에 충돌과 렌더링 기능을 더합니다.
기본 Subobject는 생성자에서 만들어 모든 C++ 자식과 Blueprint 자식이 같은 구조를 갖게 합니다. 런타임마다 달라지는 임시 Component를 생성자에 조건부로 만들지 않습니다.
4. 단계별 실습
파일 경로: Source/TopDownSurvival/Actors/SurvivalTarget.h
#include "Components/SceneComponent.h"
#include "Components/StaticMeshComponent.h"
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Components")
TObjectPtr<USceneComponent> SceneRoot;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Components")
TObjectPtr<UStaticMeshComponent> TargetMesh;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Components")
TObjectPtr<USceneComponent> MarkerPoint;
파일 경로: Source/TopDownSurvival/Actors/SurvivalTarget.cpp
#include "Components/SceneComponent.h"
#include "Components/StaticMeshComponent.h"
ASurvivalTarget::ASurvivalTarget()
{
PrimaryActorTick.bCanEverTick = true;
SceneRoot = CreateDefaultSubobject<USceneComponent>(TEXT("SceneRoot"));
SetRootComponent(SceneRoot);
TargetMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("TargetMesh"));
TargetMesh->SetupAttachment(SceneRoot);
MarkerPoint = CreateDefaultSubobject<USceneComponent>(TEXT("MarkerPoint"));
MarkerPoint->SetupAttachment(SceneRoot);
MarkerPoint->SetRelativeLocation(FVector(0.0, 0.0, 100.0));
}
Blueprint Editor
BP_SurvivalTarget의 TargetMesh에 Engine/BasicShapes/Cube를 지정합니다. Show Engine Content가 꺼져 있다면 Content Browser 설정에서 켭니다. MarkerPoint의 상대 위치를 바꾸고 Actor 전체를 이동해 계층이 함께 움직이는지 확인합니다.
5. 코드가 동작하는 이유
SceneRoot가 Actor Transform의 기준이 되고 자식 Component는 부모에 대한 상대 Transform을 저장합니다. SetupAttachment는 기본 구성 단계에서 부모를 선언합니다. TObjectPtr는 UObject 멤버 참조를 표현하며 UPROPERTY와 함께 GC와 에디터 직렬화가 참조를 추적하게 합니다. 자세한 수명 규칙은 10강에서 다룹니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
Actor와 Scene Component 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.