데코레이터
데코레이터 : 비헤이비어 트리에 분기를 나누기 위한 용도로 사용이 된다.
추가 방법은 2가지 있다.
1. 해당 태스크 우클릭 후 데코레이터 선택을 통해 추가
2. 새 데코레이터로 사용자의 새로운 데코레이터를 추가해 적용.(보통 여기서 자신이 원하는 데코레이터를 만들어 적용할 수 있다.)
근접 무기를 들고있는 적 AI를 만들어보기
BT_Enemy_Melee 추가
BB_Enemy_Melee(블랙보드) 추가
BB_Enemy_Melee(블랙보드)에 플레이어의 정보를 담을 수 있는 Target(Object)라는 새 키를 추가한다.
Target 키의 디테일에서 KeyType 세부정보 Base Class를 Character로 지정해 준다.
이후 내가 적용하고 싶은 BP_Enemy의 디테일에 Behavior Tree를 BT_Enemy_Melee 트리로 지정해 준다.
Blackboard Based Condition(데코레이터)
본격적으로 BT_Enemy_Melee을 활용해 보자.
- Blackboard : 블랙보드의 Target을 Key로 설정하여 Is Set(Target에 값이 Set 되어있을 때) 일 때만 성공한다.
* Target이 Set 되어있다면 Sequence 쪽으로, 아니라면 Wait 쪽으로 분기가 갈릴 것이다.
- wait 태스크는 0.5초로 설정했으며 selector 순서 조정으로 가장마지막으로 작동되게 하였다.
BTD_IsArmed
Enemy가 무기(weaponA)를 호출하여 무기를 장착할 수 있도록 해보자.
새 서비스를 추가해 BTD_IsArmed을 만든다.
CompareTo(Boolean) 변수를 추가하고 인스턴스 편집 가능을 킨다.
오버라이드 함수 Perform Condition Check AI 이벤트를 추가하고 Enemy의 isArmed상태에 따라 CompareTo의 값이 And를 통해 결여를 return(반환)하도록 한다.
이후 BTT_Arm에 BTD_IsArmed를 데코레이터로 추가해 준다.
캐릭터가 무기를 꺼내지 않는 상태는 변수가 아무것도 없어 False이니, isArmed는 변수가 False일시 무기를 꺼내 장착할 수 있도록 하였다.
Enemy가 Player에게 바라보도록 설정
ToBeContinued
'[unrealengine4]' 카테고리의 다른 글
2023-07-13 언리얼(AN_MakeNoise, Enemy사운드 인지) (0) | 2023.07.18 |
---|---|
2023-07-12 언리얼(Ai 타겟 인식, AIPerception) (0) | 2023.07.13 |
2023-07-07 언리얼(AI(비헤이비어 트리)) (0) | 2023.07.11 |
2023-07-05 언리얼(LIfeGauge(피통 바), ProgressBar) (0) | 2023.07.06 |
2023-07-04 언리얼(Zoom, CrossHair) (0) | 2023.07.04 |