언리얼4 보스 Behavior Tree 랜덤 패턴
Intro
- 몬스터 랜덤 패턴
난수를 이용한 랜덤 패턴
AI 컨트롤러에 키 추가
static const FName SelectAttackNumber; // 헤더
const FName AGruxAIController::SelectAttackNumber(TEXT("SelectAttackNumber"));
난수를 통해 정수를 저장하는 서비스
UBTService_RandomNumber::UBTService_RandomNumber()
{
NodeName = TEXT("CreateRandomNumber");
Interval = 1.0f;
bNotifyBecomeRelevant = true;
}
void UBTService_RandomNumber::OnBecomeRelevant(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory)
{
Super::OnBecomeRelevant(OwnerComp, NodeMemory);
int x = 0;
x = FMath::RandRange(1, 100);
if (x <=10)
{
OwnerComp.GetBlackboardComponent()->SetValueAsInt(AGruxAIController::SelectAttackNumber, 1);
}
else if (x <= 20)
{
OwnerComp.GetBlackboardComponent()->SetValueAsInt(AGruxAIController::SelectAttackNumber, 2);
}
else if (x <= 50)
{
OwnerComp.GetBlackboardComponent()->SetValueAsInt(AGruxAIController::SelectAttackNumber, 3);
}
else if (x <= 80)
{
OwnerComp.GetBlackboardComponent()->SetValueAsInt(AGruxAIController::SelectAttackNumber, 4);
}
else
{
OwnerComp.GetBlackboardComponent()->SetValueAsInt(AGruxAIController::SelectAttackNumber, 5);
}
}
1부터 100사이의 난수를 발생시켜 블랙보드 SelectAttackNumber
키에 10이하는 1, 10~20은 2, 20~50은 3, 50~80은 4, 나머지는 5를 저장한다.
데코레이터 추가
블랙보드 데코레이터를 추가한다음 자주 사용하게할 패턴은 자주나오는 3번과 4번값과 같을때 Select되도록 한다.
마찬가지로 원거리 패턴에도 똑같이 적용시켜준다.
서비스 추가
난수를 발생시키는 서비스는 트리 위쪽에 배치한다.
댓글남기기