언어:
페이지 정보
엔진 버전:
언리얼 엔진

13. 데코레이터 생성

언리얼 엔진

Decorator, 데코레이터는 다른 비헤이비어 시스템에서 조건절이라고도 알려져 있는데, Composite 또는 Task 노드에 붙어 트리 내 분기 또는 단일 노드의 실행 여부를 결정합니다.

데코레이터 는 AI 의 폰이 타깃에 충분히 가까이 가면 비헤이비어 트리의 Rapid Move To 분기 실행을 중지합니다. Rapid Move To 태스크나 그냥 Move To 태스크를 사용해서 처리할 수는 있지만, 이 데코레이터는 아무 액터나 받아 어느 분기의 실행을 막을 수도 있습니다. 여러가지 상황에서 재사용할 수 있게 되는 것입니다.

Steps

  1. 콘텐츠 브라우저 에서 FollowerBT 비헤이비어 트리에 더블클릭 하여 엽니다.

  2. 새 데코레이터 버튼을 클릭합니다.

    비헤이비어 트리와 같은 폴더에 생성됩니다.

  3. 콘텐츠 브라우저 에서 그 이름을 "CloseEnough" 로 변경합니다.

  4. 에디터에 이미 편집가능한 상태로 열릴테지만, 열리지 않은 경우 콘텐츠 브라우저 에서 더블클릭해 줍니다.

  5. 내 블루프린트 탭의 함수 부분에서 PerformConditionCheck 를 "오버라이드" 합니다.

    override_button.png

  6. 새 함수에서 다음 그래프를 생성합니다:

    Copy Example

    이미지를 클릭하면 확대, 또는 여기 를 클릭하면 새 창에서 엽니다.

    variables.png

    이 블루프린트에 대한 변수 이름, 유형, 값입니다:

    변수 이름

    유형

    AI_CON_Ref

    Follower_AI_CON_C

    None

    AcceptableDistance

    Float

    0.0 - 하지만 이 값은 "편집가능" 옵션이 True 로 설정되어 있어서, 비헤이비어 트리에서 인스턴스별로 변경 가능합니다.

    TargetToFollow

    BlackboardKeySelector

    None - 하지만 이 값은 "편집가능" 옵션이 True 로 설정되어 있어서, 비헤이비어 트리에서 인스턴스별로 변경 가능합니다.

    함수 그래프이기 때문에, 위 그림에서 코드 스니펫 을 사용하면 그래프의 가운데 부분만 나올 뿐, 시작과 끝 노드는 연결되지 않을 것입니다. 이미지에 표시되는 것처럼 선을 연결해 주기만 하면 정상 작동할 것입니다.

  7. Receive Condition Check 이벤트는 비헤이비어 트리가 이 조건이 달려있는 노드에 걸렸을 때 이 블루프린트에 전송되는 이벤트입니다.

  8. 다시 한 번, AI Controller 를 저장하여 나중에 쉽게 레퍼런싱하도록 합니다.

  9. 따라가고자 하는 액터(플레이어 폰)를 구합니다.

  10. 액터와 AI 폰 사이의 거리를 구합니다.

  11. 거리가 설정된 양보다 크면, 조건이 True 를 반환합니다. 크지 않으면, False 를 반환하고 해당 비헤이비어 트리 부분 실행을 막습니다.

그러면 비헤이비어 트리가 RapidMoveTo 를 계속 순환하지 않고 다시 빠져나올 수 있게끔 만듭니다. 근본적으로 플레이어를 따라잡았으면 멈추는 것입니다.