From 91c3e8163bbb064993f02de0d15c4abb4574f9ec Mon Sep 17 00:00:00 2001 From: PHILIP WHITE Date: Thu, 9 Nov 2023 13:14:28 +0000 Subject: [PATCH] Update AI Attack Task for Instigating Damage --- .../AI/Tasks/BTTask_AttackPlayer.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_AttackPlayer.cpp b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_AttackPlayer.cpp index 84e3240e..c86f70ca 100644 --- a/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_AttackPlayer.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_AttackPlayer.cpp @@ -5,7 +5,9 @@ #include "EndlessVendetta/AI/AI_EnemyController.h" #include "BehaviorTree/BlackboardComponent.h" +#include "EndlessVendetta/EndlessVendettaCharacter.h" #include "EndlessVendetta/AI/EnemyCharacter.h" +#include "Engine/DamageEvents.h" UBTTask_AttackPlayer::UBTTask_AttackPlayer(FObjectInitializer const& ObjectInitializer) { @@ -19,9 +21,22 @@ EBTNodeResult::Type UBTTask_AttackPlayer::ExecuteTask(UBehaviorTreeComponent& Ow if (const UBlackboardComponent* const Blackboard = OwnerComp.GetBlackboardComponent()) { FVector const Origin = AIController->GetPawn()->GetActorLocation(); + FVector const Start = Origin + FVector(0.f, 0.f, 30.f); FVector const PlayerLocation = Blackboard->GetValueAsVector("TargetLocation"); - //DrawDebugLine(GetWorld(), Origin, PlayerLocation, FColor::Green, false, 1.f, 0, 1.f); + DrawDebugLine(GetWorld(), Start, PlayerLocation, FColor::Black, false, 1.f, 0, 1.f); + FCollisionQueryParams QueryParams; + QueryParams.AddIgnoredActor(AIController->GetPawn()); + if (FHitResult HitResult; GetWorld()->LineTraceSingleByChannel(HitResult, Start, PlayerLocation, ECC_Pawn, QueryParams)) + { + if (IsValid(HitResult.GetActor())) + { + if (HitResult.GetActor()->ActorHasTag("Player")) + { + Cast(HitResult.GetActor())->TakeDamage(5.0f, FPointDamageEvent(), AIController->GetInstigatorController(), AIController->GetPawn()); + } + } + } if (AEnemyCharacter* const EnemyCharacter = Cast(AIController->GetPawn())) { EnemyCharacter->SetFiring(true);