1. 데코레이터
행동트리에서 데코레이터는 일종의 조건문 같은 것이라고 보면 된다. 이러한 데코레이터를 통해 에너미가 이동을 해야할지 아니면 공격을 해야할지 아니면 또 다른 행동을 해야할지 등을 지정할 수 있다.
2. 데코레이터 설정하기
이제 데코레이터를 설정해보자. 블랙보드 키를 통해 조건을 확인할 것이다.
디테일 패널에서 키를 선택하거나 다양한 작업들을 할 수 있다.
이제 블랙보드 키를 우리가 원하는 오브젝트로 바꾸자.
이렇게 하면 해당 키가 존재할때만 다음 노드가 실행된다.
이번에는 다른 설정을 하려고 한다. 에너미가 공격 받을 때 동작을 멈춰보려고 한다. 불리언 타입의 블랙보드 키를 추가하도록 하자.
이제 이 값을 초기화 해야하는데 이는 C++에서 진행할 것이다.
3. C++에서 블랙보드 키 초기화하기
AI컨트롤러와 행동트리가 설정되어있는 에너미 클래스로 들어갔다.
아래의 구문을 통해 블랙보드 키를 초기화 할 수 있다.
AuraAIController->GetBlackboardComponent()->SetValueAsBool(FName("HitReacting"), false);
이제 이 변수를 히트시에는 true로 바꿔야 할 것이다.
void AAuraEnemy::HitReactTagChanged(const FGameplayTag CallbackTag, int32 NewCount)
{
bHitReacting = NewCount > 0;
GetCharacterMovement()->MaxWalkSpeed = bHitReacting ? 0.f : BaseWalkSpeed;
// 이 아래로 추가
if (HasAuthority())
{
AuraAIController->GetBlackboardComponent()->SetValueAsBool(FName("HitReacting"), bHitReacting);
}
}
이제 에디터로 들어가 데코레이터를 추가해주자.
이제 히트시에는 다음 노드로 가지 않게 막을 수 있다.
'게임프로그래밍 > 실습2' 카테고리의 다른 글
[실습2] 60. 환경 쿼리 (0) | 2024.12.29 |
---|---|
[실습2] 59. 행동트리 테스크 만들기 (0) | 2024.12.29 |
[실습2] 57. 블랙보드 키 만들고 가장 가까이 있는 원하는 액터 설정하기 (0) | 2024.12.28 |
[실습2] 56. 행동트리 커스텀 서비스 만들기 (0) | 2024.12.28 |
[실습2] 55. 블랙보드와 행동트리 (0) | 2024.12.28 |