[ Unreal Engine 5 / #15 Enemy AI, Perception, BT Base ]

SeungWoo·2024년 9월 30일
0

[ Ureal Engine 5 / 수업 ]

목록 보기
16/31
post-thumbnail
  • Patrol 과 chase 상태의 Speed 값 조절

  • Blueprint Enum를 하나 만든다

  • Blueprint 와 C++ Enum 비교

  • Speed 에 따라서 속도 값을 반환해주는 인터페이스 함수 구현

  • Enemy에 만든 Interface를 상속하고 해당 값 변경을 로직을 짠다.
  • C++ Ovrride

  • 새로 BTT BlackBoard Blueprint를 하나 만들고, 해당 블루프린트를 짠다

  • BT 트리를 짜준다

  • Decorator는 자식 노드의 실행 여부를 조건에 따라 변경하거나 조절하는 역할( if문과 유사 )

  • 목표 : Patrol(Spline) 경로 여부에 따라서, 순찰 여부 결정

erform Condition Check : 데코레이터의 조건을 검사하고, 조건이 충족되면 true를 반환하여 자식 노드를 실행하거나, 그렇지 않으면 false를 반환하여 실행을 건너뜁니다.
Receive Execution Start : 자식 노드의 실행이 시작될 때 호출되는 함수로, 데코레이터가 실행되기 전에 이벤트를 처리하고자 할 때 사용합니다.
Receive Execution Finish : 자식 노드의 실행이 완료된 후 호출되는 함수로, 데코레이터가 실행된 후 추가적인 처리를 하고자 할 때 사용합니다.
Receive Observer Activated : 데코레이터가 감시자(observer)로 활성화될 때 호출되는 함수로, 특정 상황에서 데코레이터의 동작을 시작하고자 할 때 사용합니다.
~= Deactivated - 비활성화
Receive Tick : 데코레이터가 갱신될 때마다 호출되는 함수로, 주기적으로 데코레이터의 상태를 업데이트하고자 할 때 사용합니다.

  • AI가 함수명 뒤에 붙으면 해당 함수가 AI 관련 작업에 특화되어 AI 컨트롤러, Pawn 등과 직접적으로 상호작용하고 AI 상태를 감지하거나 제어하는 데 사용
  • AAIController* OwnerControllerAPawn* ControlledPawn을 인자로 받습니다. 이는 AI 관련 조건을 검사할 때 사용되며, AI 컨트롤러와 그에 연결된 Pawn에 대한 더 직접적인 접근을 제공

  • 순찰 Spline 유효 검토

  • 해당 State에 따른 BT 상태를 확인 한다

  • AI 의 상태를 구분 하고자 함 ( FSM )

  • BT에 BlackBoard key를 추가한다 이름은 State로 설정 한다

  • BlackBoardKey 값을 해당 State에 값을 가지고 와서 Name을 똑같이 적어둔다

  • On Result Change : Attack -> Attack (같은 상태의 새 변화로 간주)
  • On Value Change : Attack -> Attack (같은 것으로 간주, 변화 X)

  • None :
    이 옵션이 선택된 경우, 데코레이터가 감시 중에 자식 노드의 실행을 중단시키지 않습니다. 따라서 데코레이터가 조건을 검사하고 있는 동안에는 자식 노드가 계속 실행됩니다.
  • Self :
    이 옵션이 선택된 경우, 데코레이터 자체가 감시하고 있는 조건이 충족되면 자식 노드의 실행을 중단합니다. 즉, 데코레이터의 조건이 충족되면 자식 노드의 실행을 중단하고 다른 노드로 이동하게 됩니다.
  • Lower Priority :
    이 옵션이 선택된 경우, 데코레이터보다 낮은 우선 순위를 가진 다른 데코레이터가 감시하고 있는 조건이 충족되면 자식 노드의 실행을 중단합니다. 다른 데코레이터의 조건이 충족되면 해당 데코레이터로 인해 실행이 중단됩니다.
  • Both :
    이 옵션이 선택된 경우, 데코레이터 자체가 감시하고 있는 조건과 데코레이터보다 낮은 우선 순위를 가진 다른 데코레이터의 조건 둘 다 충족되면 자식 노드의 실행을 중단합니다. 두 가지 조건 중 하나만 충족되어도 실행이 중단됩니다.
  • On Result Change
    설명: 이 옵션은 해당 Decorator의 조건 결과가 변경될 때 AI가 이를 감지하도록 합니다.
    상세: 만약 Decorator가 특정 조건을 평가한 결과가 True에서 False로, 또는 그 반대로 변경되었을 때 행동 트리가 즉시 알림을 받습니다. 이 경우, 행동 트리는 그에 맞춰 다음 단계로 넘어가거나 행동을 중단할 수 있습니다.
    용도: 일반적으로 특정 조건이 충족되었을 때만 AI가 어떤 행동을 수행하게 하거나, 조건이 변동될 때 적절하게 대응하게 할 때 유용합니다. 예를 들어, 플레이어가 AI의 시야 안에 들어왔다가 다시 벗어나는 경우, AI는 그에 맞는 행동을 취할 수 있습니다.
  • On Value Change
    설명: 이 옵션은 Decorator에서 참조하는 변수의 값이 변경될 때 AI가 이를 감지하도록 합니다.
    상세: Decorator가 참조하는 블랙보드 변수의 값이 변하면, 그 값이 조건을 만족하든 말든 상관없이 AI가 바로 알림을 받습니다. 즉, 조건의 결과와는 관계없이 변수 값 자체의 변동에 즉각 반응하는 것입니다.
    용도: 변수가 변동될 때 즉시 AI가 이를 인지하고 행동하도록 하는 데 사용됩니다. 예를 들어, AI가 특정 목표의 위치 정보를 업데이트받아야 하는 경우 유용할 수 있습니다.
  • BTT_MovePatrol

  • (아포스트로피, apostrophe)
    • 실행하고 ", ' 키를 눌러서 확인 할수있고 1,2,3,4 등등으로 해당 DebugLine를 확인 할 수 있다

  • Sight Radius (시야 반경)
    AI가 시야 내에서 개체를 감지하는 범위를 나타냅니다. 시야 반경은 AI가 얼마나 먼 거리까지 시각적으로 감지할 수 있는지 결정합니다.
  • Lose Sight Radius (시야 손실 반경)
    AI가 대상을 잃는 거리를 나타냅니다. 이 거리를 벗어난 대상은 AI가 시각적으로 인식하지 못하게 됩니다.
  • Peripheral Vision Angle (주시 시야 각도)
    AI가 전방 이외의 주변 시야 각도를 나타냅니다. 시야 각도를 조절하여 AI의 시야가 좁거나 넓게 인식되도록 설정할 수 있습니다.
  • Peripheral Vision Angle Degrees (주시 시야 각도, 도 단위)
    주시 시야 각도를 도 단위로 설정합니다. 이 값은 AI의 전방 이외의 주변 시야 각도를 조절합니다.
  • Detection by Affiliation (소속에 따른 감지)
    이 옵션을 설정하면 AI가 특정 소속(팀, 그룹 등)에 속한 대상만을 감지하도록 설정할 수 있습니다. 즉, 이 옵션을 사용하여 특정 소속의 적 또는 아군만 감지하도록 구성할 수 있습니다.
  • Auto Success Range From Last Seen Location (마지막으로 본 위치로부터의 자동 성공 범위)
    AI가 대상을 마지막으로 본 위치에서 얼마나 멀리 있어도 자동으로 감지할 수 있는 범위를 설정합니다.
  • Max Age (최대 나이)
    AI가 대상을 마지막으로 본 후, 해당 정보를 유지하는 최대 시간을 설정합니다. 이 시간을 초과하면 해당 정보가 만료되어 감지에서 제외될 수 있습니다.

  • 청각(Hearing) 추가

  • 범위안에 들어오고 시야각에 들어오면 PrintSpring 으로 값이 출력된다

  • Noise 를 활용한 Detect 구현

profile
This is my study archive

0개의 댓글