언리얼 엔진

UE5 커스텀 유틸리티: PlacementHelperActor로 정렬·랜덤·토글을 한 번에

로안님 2025. 7. 18. 17:09

 

레벨 디자인 하다 보면, 스태틱 메시 하나 배치할 때도 정렬, 회전, 재질 변경, 콜리전 설정 등 반복적인 수작업이 쌓이기 쉽습니다.
이런 작업을 조금이라도 줄이고자, Unreal Engine 5.5에서 에디터 전용 PlacementHelperActor를 구현했습니다.

💡 한 줄 요약: 메시 배치에 필요한 7가지 기능을 버튼 하나로 끝냅니다.


기능 요약

기능 설명

AlignToGround Z 위치를 자동으로 지면에 정렬 (피벗 or 메시 하단 기준)
AlignSlope 지면 노멀에 맞게 Pitch·Roll 회전 정렬
RandomYaw 지정 간격 기반으로 무작위 Yaw 회전 적용
RandomLocationInRadius XY 평면 내 무작위 이동 (반경 설정 가능)
ResetLocation / ResetRotation 인스턴스별 초기 위치·회전으로 복구
CycleMaterial 슬롯 0 머티리얼을 리스트 순서로 순환 적용
ToggleCollision No → Overlap → Block 순서로 콜리전 토글

시각 피드백 강화

각 기능 호출 시 결과를 즉시 확인할 수 있도록 다음과 같은 시각적 요소를 추가했습니다.

  • 🖥 On-Screen HUD 메시지 (액터 이름 + 상태 정보)
  • 🧭 DrawDebugLine / Arrow (정렬, 이동, 회전 시 시각화)
  • 🔵 DrawDebugSphere (랜덤 반경 표시)
  • 🏷 DrawDebugString (충돌 상태, 머티리얼명 등 텍스트 표시)
DrawDebugDirectionalArrow(GetWorld(), Loc, Loc + Dir, 80.f, FColor::Orange, false, 1.5f);
GEngine->AddOnScreenDebugMessage(MsgKey, 1.5f, FColor::Cyan, TEXT("[MyActor] Collision: Block"));

이 모든 출력은 Editor 전용이라 런타임에는 영향이 없습니다.


개발 의도

기본 Transform 도구만으로는 반복되는 작업을 자동화할 수 없어,
레벨 아티스트와 디자이너를 위한 “반자동 유틸리티 액터”를 제작하게 됐습니다.

  • 디자이너: 파라미터만 지정하고 버튼만 누르면 정확한 정렬·랜덤 배치 가능
  • 개발자: 완전히 C++ 기반이므로 유지보수와 확장도 쉽습니다

향후 RotationAlignToSpline 등도 추가 고려.


설치 경로 및 사용

  • 위치: Content/Editor/PlacementHelperActor.cpp
  • 액터 이름: BP_PlacementHelperActor
  • 에디터에서 직접 배치 후 Details 패널에서 조작 가능

마무리

PlacementHelperActor는 작은 유틸리티지만, 레벨 디자인 시 상당한 시간을 줄여줍니다.
개발팀에서도 반복 배치를 할 때 “손이 많이 가는 작업” 들을 자동화하고, 시각 피드백으로 편의성을 늘릴 수 있었습니다.

 

PlacementHelperActor 기능 가이드 & 전체 소스코드