언리얼4 보스 Behavior Tree 원거리 돌진 패턴
Intro
- 거리에 따른 패턴 추가
거리 측정 서비스 생성
UBTService_Distance::UBTService_Distance()
{
NodeName = TEXT("Distance");
Interval = 1.0f;
}
void UBTService_Distance::TickNode(UBehaviorTreeComponent & OwnerComp, uint8 * NodeMemory, float DeltaSeconds)
{
Super::TickNode(OwnerComp, NodeMemory, DeltaSeconds);
APawn* ControllingPawn = OwnerComp.GetAIOwner()->GetPawn();
if (nullptr == ControllingPawn) return;
auto Grux = Cast<AGrux>(OwnerComp.GetAIOwner()->GetPawn());
bool bResult;
auto Target = Cast<ARaidPlayer>(OwnerComp.GetBlackboardComponent()->GetValueAsObject(AGruxAIController::TargetKey));
if (nullptr == Target)
return;
bResult = (Target->GetDistanceTo(ControllingPawn) >= 1000.0f);
OwnerComp.GetBlackboardComponent()->SetValueAsBool(AGruxAIController::Distance, bResult);
}
캐릭터와 몬스터의 거리가 1000이 넘으면 true를 반환하는 서비스
Behavior Tree 구성
공격 할수없는 상태일때 서비스는 거리에따라 블랙보드의 Distance bool변수를 변화시키고 false 상태일땐 추격을 true 상태일땐 돌진하여 공격애니메이션을 재생하도록 구성
돌진 할때 WalkSpeed를 2000으로 변경하는 서비스 추가
이동속도가 1000이 넘을때 돌진 애니메이션을 재생하도록 AnimBlueprint 수정
Distance
가 1000이하일때 거리가 1000이상 벌어지면 중단하고 바로 돌진패턴을 시작하도록 On Value Change
로 수정
댓글남기기