본문 바로가기
Unreal Engine

Unreal Engine 액터 해즈 태그 (Actor Has Tag) 노드 설명

by hfgraphic 2025. 11. 10.
반응형

액터 해즈 태그 (Actor Has Tag) 노드 설명

 

이번에는 액터 해즈 태그(Actor Has Tag) 노드에 대해 이야기해 보겠습니다. 이 노드는 오버랩(Overlap) 이벤트가 발생했을 때, 실제로 겹친 액터가 우리가 원하는 특정 액터인지 선택적으로 구별하여 코드를 실행하게 해줍니다.


 

1. 문제 상황: 불필요한 액터의 오버랩 방지

 

이전 강의에서 만든 BP_LightPoleTrigger Box는 어떤 액터든 겹치면 Begin Overlap 이벤트를 실행하고 액터를 파괴합니다.

  • 예시: 레벨에 **적(Enemy)**이 돌아다닌다고 가정해 봅시다. 이 적이 우연히 땅에 있는 코인 (Trigger Box를 가진 액터)을 밟고 지나가면, 코인이 사라지는 (파괴되는) 이벤트가 발생할 것입니다.
  • 우리는 플레이어만이 코인을 획득하고 사라지게 만들고 싶고, 적이 밟았을 때는 아무 일도 일어나지 않게 하고 싶습니다.

 

2. 액터 해즈 태그를 이용한 필터링

이러한 경우에 액터 해즈 태그 노드를 사용하여 오버랩을 일으킨 액터가 특정 태그를 가지고 있는지 확인하고 코드를 실행하도록 조건을 추가할 수 있습니다.

  1. BP_LightPole이벤트 그래프로 돌아갑니다.
  2. Actor Has Tag 노드 추가:
    • On Component Begin Overlap 노드의 Other Actor 핀에서 드래그하여 Actor Has Tag 노드를 검색하거나 단순히 Has Tag을 검색하여 연결합니다.
    • Other Actor는 현재 Trigger Box겹친 액터(예: 우리가 테스트에 사용한 큐브)를 의미하며, 이 노드의 Target 핀에 자동으로 연결됩니다.
  3. 태그 설정:
    • Tag 입력 필드에 우리가 원하는 태그를 입력합니다. 예를 들어, Player라고 입력합니다.
    • 결과: 이 노드는 겹친 액터가 **"Player"**라는 태그를 가지고 있으면 True를, 아니면 False를 출력합니다.
  1. Branch 노드를 이용한 조건부 실행:
    • Actor Has Tag의 출력 (Boolean)을 Branch 노드의 **조건(Condition)**에 연결합니다.
    • BranchTrue 핀에만 기존의 DelayDestroy Actor 로직을 연결합니다.
    • 로직: "오버랩이 발생했는가?" → "겹친 액터가 'Player' 태그를 가지고 있는가?" → (True일 경우) 액터를 파괴한다.

 

3. 테스트 액터에 태그 부여

 

이제 우리가 제어하는 액터(테스트용 큐브)에 실제로 이 태그를 부여해야 합니다.

  1. 레벨에서 움직이는 큐브 (Other Actor)를 선택합니다.
  2. 디테일 패널의 상단에 있는 Tags (태그) 섹션을 찾습니다.
  3. Actor Tags (액터 태그) 옆의 + 아이콘을 클릭하고, 문자열 입력 필드에 정확히 **"Player"**라고 입력합니다.
  4. 테스트:
    • Play를 누릅니다.
    • R 키를 눌러 큐브를 이동시켜 라이트 폴과 겹치게 합니다. → 큐브가 "Player" 태그를 가지고 있으므로, Self Destruction이 발생하고 액터가 사라집니다.
  5. 태그 미일치 테스트:
    • 큐브를 선택하고 태그를 **"Enemy"**와 같이 다른 것으로 변경합니다.
    • Play를 누릅니다.
    • R 키를 눌러 큐브를 겹치게 합니다. → 태그가 **"Player"**가 아니므로, BranchFalse로 실행되어 아무 일도 일어나지 않습니다.

 

결론: 액터 해즈 태그 노드는 특정 **행동(Behavior)**을 특정 종류의 액터에게만 허용하도록 제어할 때 매우 유용하며, 일반적으로 **플레이어(Player)**가 아이템을 획득하는 등의 상황에서 사용됩니다.

 

반응형