From 768d53549fa86f8c768da1fbfc598d91db7f5c6f Mon Sep 17 00:00:00 2001 From: PHILIP WHITE Date: Thu, 29 Feb 2024 02:57:55 +0000 Subject: [PATCH] Update AI for Improved Hit Detection & Projectiles --- .../AI/Enemy/Basic/BP_BasicEnemyCharacterSwat.uasset | 4 ++-- .../Content/AI/Enemy/Basic/BT_BasicEnemy.uasset | 4 ++-- .../Content/FirstPerson/Blueprints/WBP_Crosshair.uasset | 2 +- .../Levels/AITest/B/8N/O8PP5KE5USY7FTAE75J65R.uasset | 2 +- .../Levels/AITest/B/O6/IM2ZR0FZ5KH20UIRPAQT2P.uasset | 3 +++ .../EndlessVendetta/AI/Tasks/BTTask_AttackPlayer.cpp | 9 +++++---- 6 files changed, 14 insertions(+), 10 deletions(-) create mode 100644 EndlessVendetta/Content/__ExternalActors__/Levels/AITest/B/O6/IM2ZR0FZ5KH20UIRPAQT2P.uasset diff --git a/EndlessVendetta/Content/AI/Enemy/Basic/BP_BasicEnemyCharacterSwat.uasset b/EndlessVendetta/Content/AI/Enemy/Basic/BP_BasicEnemyCharacterSwat.uasset index 9c97d447..dda6854c 100644 --- a/EndlessVendetta/Content/AI/Enemy/Basic/BP_BasicEnemyCharacterSwat.uasset +++ b/EndlessVendetta/Content/AI/Enemy/Basic/BP_BasicEnemyCharacterSwat.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9c268b1483a8b92c1b103dd1efc9f354c17c31f92b6ef2af41a4893bb9b63062 -size 143554 +oid sha256:1623e6cc7c50058c9d5cfcb32f1ab42396db8741c8a32a846c16f478117cf071 +size 190013 diff --git a/EndlessVendetta/Content/AI/Enemy/Basic/BT_BasicEnemy.uasset b/EndlessVendetta/Content/AI/Enemy/Basic/BT_BasicEnemy.uasset index 4a874ddc..cdcb890d 100644 --- a/EndlessVendetta/Content/AI/Enemy/Basic/BT_BasicEnemy.uasset +++ b/EndlessVendetta/Content/AI/Enemy/Basic/BT_BasicEnemy.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:019e879ee15b4850fb9e601944cc2337663d20b4240b0cdf5006727321a0e496 -size 80128 +oid sha256:0476e9712ee5e2767e2a60ae4bfdf21ca085b391c0215095f4981c8b785c07b1 +size 78165 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/WBP_Crosshair.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/WBP_Crosshair.uasset index 276144b1..93b96ec7 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/WBP_Crosshair.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/WBP_Crosshair.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:84c4551cd32fceb432a89a46c007d93f56fb0d08dc5d7569f84980228e49e295 +oid sha256:05c687aa8ceac4bba8eecd8eedf6ef3f74095d2eacc9d079af5d249a31a77493 size 102918 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/AITest/B/8N/O8PP5KE5USY7FTAE75J65R.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/AITest/B/8N/O8PP5KE5USY7FTAE75J65R.uasset index ccb0acc7..c1e62052 100644 --- a/EndlessVendetta/Content/__ExternalActors__/Levels/AITest/B/8N/O8PP5KE5USY7FTAE75J65R.uasset +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/AITest/B/8N/O8PP5KE5USY7FTAE75J65R.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:461171dba6a85d0e829f1f673756b08af877379d651c7bfcd0028b6de32a36d7 +oid sha256:2ec8c02c25733c7a4a32c82f2d0e412cc84745c4400caf98507101420f833b0a size 6554 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/AITest/B/O6/IM2ZR0FZ5KH20UIRPAQT2P.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/AITest/B/O6/IM2ZR0FZ5KH20UIRPAQT2P.uasset new file mode 100644 index 00000000..7050f6f3 --- /dev/null +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/AITest/B/O6/IM2ZR0FZ5KH20UIRPAQT2P.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92f3335f7ae968df65871b3d98b5d6356b798575530420ef5dfaaf1c18979010 +size 6620 diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_AttackPlayer.cpp b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_AttackPlayer.cpp index 3b4ff281..2f61f52e 100644 --- a/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_AttackPlayer.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_AttackPlayer.cpp @@ -20,16 +20,17 @@ 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"); + USkeletalMeshComponent* const GunSKMesh = Cast(AIController->GetPawn()->GetComponentsByTag(USkeletalMeshComponent::StaticClass(), "Gun")[0]); + FVector const Origin = IsValid(GunSKMesh) ? GunSKMesh->GetComponentLocation() : AIController->GetPawn()->GetActorLocation() + FVector(0.f, 0.f, 30.f); + FVector const Start = Origin; + FVector const End = Origin + AIController->GetPawn()->GetActorForwardVector() * 10000.f; if (AEnemyCharacter* const EnemyCharacter = Cast(AIController->GetPawn())) { EnemyCharacter->FireWeapon.Broadcast(); EnemyCharacter->SetFiring(true); FCollisionQueryParams QueryParams; QueryParams.AddIgnoredActor(AIController->GetPawn()); - if (FHitResult HitResult; GetWorld()->LineTraceSingleByChannel(HitResult, Start, PlayerLocation, ECC_Pawn, QueryParams)) + if (FHitResult HitResult; GetWorld()->LineTraceSingleByChannel(HitResult, Start, End, ECC_Pawn, QueryParams)) { if (IsValid(HitResult.GetActor())) {