Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
UBTService_DetectPlayer 클래스 참조

#include <BTService_DetectPlayer.h>

UBTService_DetectPlayer에 대한 상속 다이어그램 :
Inheritance graph
UBTService_DetectPlayer에 대한 협력 다이어그램:
Collaboration graph

Public 멤버 함수

 UBTService_DetectPlayer ()
 

Protected 멤버 함수

virtual void TickNode (UBehaviorTreeComponent &OwnerComp, uint8 *NodeMemory, float DeltaSeconds) override
 

Protected 속성

struct FBlackboardKeySelector TargetActorKey
 
struct FBlackboardKeySelector IsInAttackRangeKey
 

생성자 & 소멸자 문서화

◆ UBTService_DetectPlayer()

UBTService_DetectPlayer::UBTService_DetectPlayer ( )
15{
16 NodeName = TEXT("Detect Player");
17 Interval = 0.5f;
18}

멤버 함수 문서화

◆ TickNode()

void UBTService_DetectPlayer::TickNode ( UBehaviorTreeComponent &  OwnerComp,
uint8 *  NodeMemory,
float  DeltaSeconds 
)
overrideprotectedvirtual
21{
22 Super::TickNode(OwnerComp, NodeMemory, DeltaSeconds);
23
24 ACharacter* PlayerCharacter = UGameplayStatics::GetPlayerCharacter(GetWorld(), 0);
25
26 if (!PlayerCharacter)
27 {
28 OwnerComp.GetBlackboardComponent()->SetValueAsObject(TargetActorKey.SelectedKeyName, nullptr);
29 return;
30 }
31
32 bool bIsPlayerDead = false;
33 if (IAbilitySystemInterface* ASCInterface = Cast<IAbilitySystemInterface>(PlayerCharacter))
34 {
35 if (UAbilitySystemComponent* ASC = ASCInterface->GetAbilitySystemComponent())
36 {
37 if (ASC->HasMatchingGameplayTag(TAG_CHARACTER_STATE_ISDEAD))
38 {
39 bIsPlayerDead = true;
40 }
41 }
42 }
43
44 if (bIsPlayerDead)
45 {
46 OwnerComp.GetBlackboardComponent()->SetValueAsObject(TargetActorKey.SelectedKeyName, nullptr);
47 OwnerComp.GetBlackboardComponent()->SetValueAsBool(IsInAttackRangeKey.SelectedKeyName, false);
48 }
49 else
50 {
51 OwnerComp.GetBlackboardComponent()->SetValueAsObject(TargetActorKey.SelectedKeyName, PlayerCharacter);
52
53 if (APawn* ControllingPawn = OwnerComp.GetAIOwner()->GetPawn())
54 {
55 float Distance = FVector::Distance(ControllingPawn->GetActorLocation(), PlayerCharacter->GetActorLocation());
56
57 if (ACK_CharacterEnemy* EnemyPawn = Cast<ACK_CharacterEnemy>(ControllingPawn))
58 {
59 if (const UEnemyAttributeSet* EnemyAttributes = EnemyPawn->GetEnemyAttributeSet())
60 {
61 bool bInAttackRange = (Distance <= EnemyAttributes->GetAttackRange());
62 OwnerComp.GetBlackboardComponent()->SetValueAsBool(IsInAttackRangeKey.SelectedKeyName, bInAttackRange);
63 }
64 }
65 }
66 }
67}
Definition CK_CharacterEnemy.h:20
struct FBlackboardKeySelector IsInAttackRangeKey
Definition BTService_DetectPlayer.h:28
struct FBlackboardKeySelector TargetActorKey
Definition BTService_DetectPlayer.h:25
Definition EnemyAttributeSet.h:11

멤버 데이터 문서화

◆ IsInAttackRangeKey

struct FBlackboardKeySelector UBTService_DetectPlayer::IsInAttackRangeKey
protected

◆ TargetActorKey

struct FBlackboardKeySelector UBTService_DetectPlayer::TargetActorKey
protected

이 클래스에 대한 문서화 페이지는 다음의 파일들로부터 생성되었습니다.: