From 390c1c84a9eb1ec406ab032f1a08eb7c81d46943 Mon Sep 17 00:00:00 2001 From: pcyoung Date: Thu, 14 Dec 2023 12:46:52 +0900 Subject: [PATCH] =?UTF-8?q?[=EB=B0=95=EC=B9=98=EC=98=81]=20Gruntling=20Ene?= =?UTF-8?q?my=20Behavior=20Tree=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GruntlingEnemy/BT_GruntlingEnemy.uasset | Bin 41495 -> 42504 bytes .../T_TryGetRandomPatrolPoint.cpp | 44 ++++++++++++++++++ .../T_TryGetRandomPatrolPoint.h | 30 ++++++++++++ Source/D1/AI/GruntlingEnemy.cpp | 4 +- 4 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 Source/D1/AI/BehaviorTreeNodes/T_TryGetRandomPatrolPoint.cpp create mode 100644 Source/D1/AI/BehaviorTreeNodes/T_TryGetRandomPatrolPoint.h diff --git a/Content/CombatSystem/Blueprints/AI/GruntlingEnemy/BT_GruntlingEnemy.uasset b/Content/CombatSystem/Blueprints/AI/GruntlingEnemy/BT_GruntlingEnemy.uasset index bcdcbd167e34ee524ce5a1555067fb8a17a6344f..e5bea75cb027119753fd411d78ba6e71841a9adc 100644 GIT binary patch literal 42504 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 delta 7783 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 Ltn%>wug3fj9MT!5 diff --git a/Source/D1/AI/BehaviorTreeNodes/T_TryGetRandomPatrolPoint.cpp b/Source/D1/AI/BehaviorTreeNodes/T_TryGetRandomPatrolPoint.cpp new file mode 100644 index 00000000..afc77dda --- /dev/null +++ b/Source/D1/AI/BehaviorTreeNodes/T_TryGetRandomPatrolPoint.cpp @@ -0,0 +1,44 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "AI/BehaviorTreeNodes/T_TryGetRandomPatrolPoint.h" + +#include "AIController.h" +#include "NavigationData.h" +#include "NavigationSystem.h" +#include "BehaviorTree/BlackboardComponent.h" + +UT_TryGetRandomPatrolPoint::UT_TryGetRandomPatrolPoint() +{ + Radius = 500.f; + QueryExtent = {300.f, 300.f, 300.f}; +} + +EBTNodeResult::Type UT_TryGetRandomPatrolPoint::ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) +{ + EBTNodeResult::Type result = Super::ExecuteTask(OwnerComp, NodeMemory); + if(result == EBTNodeResult::Failed) + return EBTNodeResult::Failed; + + APawn* ControllingPawn = OwnerComp.GetAIOwner()->GetPawn(); + if(ControllingPawn == nullptr) + return EBTNodeResult::Failed; + + UNavigationSystemV1* NavSystem = UNavigationSystemV1::GetNavigationSystem(ControllingPawn->GetWorld()); + if(NavSystem == nullptr) + return EBTNodeResult::Failed; + + FVector CurLocation = ControllingPawn->GetActorLocation(); + FNavLocation RandomLocation, ProjectLocation; + if(NavSystem->GetRandomReachablePointInRadius(CurLocation, Radius, RandomLocation)) + { + if(NavSystem->ProjectPointToNavigation(RandomLocation.Location, ProjectLocation, QueryExtent)) + OwnerComp.GetBlackboardComponent()->SetValueAsVector(BlackboardKey_TargetLocation.SelectedKeyName, ProjectLocation.Location); + else + return EBTNodeResult::Failed; + } + else + return EBTNodeResult::Failed; + + return EBTNodeResult::Succeeded; +} diff --git a/Source/D1/AI/BehaviorTreeNodes/T_TryGetRandomPatrolPoint.h b/Source/D1/AI/BehaviorTreeNodes/T_TryGetRandomPatrolPoint.h new file mode 100644 index 00000000..4b7dc336 --- /dev/null +++ b/Source/D1/AI/BehaviorTreeNodes/T_TryGetRandomPatrolPoint.h @@ -0,0 +1,30 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "BehaviorTree/BTTaskNode.h" +#include "T_TryGetRandomPatrolPoint.generated.h" + +/** + * + */ +UCLASS() +class D1_API UT_TryGetRandomPatrolPoint : public UBTTaskNode +{ + GENERATED_BODY() +public: + UT_TryGetRandomPatrolPoint(); +public: + virtual EBTNodeResult::Type ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) override; + +private: + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="BlackBoard", meta=(AllowPrivateAccess="true")) + FBlackboardKeySelector BlackboardKey_TargetLocation; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="BlackBoard", meta=(AllowPrivateAccess="true")) + float Radius; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="BlackBoard", meta=(AllowPrivateAccess="true")) + FVector QueryExtent; +}; diff --git a/Source/D1/AI/GruntlingEnemy.cpp b/Source/D1/AI/GruntlingEnemy.cpp index 9ef06868..5974d3d4 100644 --- a/Source/D1/AI/GruntlingEnemy.cpp +++ b/Source/D1/AI/GruntlingEnemy.cpp @@ -61,8 +61,8 @@ void AGruntlingEnemy::BeginPlay() HealthBarComponent->SetWidget(HealthBarRef); } - if(IsValid(IntroAnimMontage)) - PlayAnimMontage(IntroAnimMontage); + //if(IsValid(IntroAnimMontage)) //Intro가 필요하지 않음. 필요할 경우 주석해제 + // PlayAnimMontage(IntroAnimMontage); } void AGruntlingEnemy::OnTargeted(bool bIsTargeted)