Misc Enemy Updates

This commit is contained in:
baz 2024-02-19 21:54:11 +00:00
parent 251f840a43
commit 412e3f1fc4
4 changed files with 36 additions and 3 deletions

View File

@ -12,4 +12,5 @@ enum class EPatrolMovementEnum : uint8
{ {
SLOWWALK UMETA(DisplayName = "Slow Walk"), SLOWWALK UMETA(DisplayName = "Slow Walk"),
WALK UMETA(DisplayName = "Walk"), WALK UMETA(DisplayName = "Walk"),
SPRINT UMETA(DisplayName = "Sprint"),
}; };

View File

@ -64,6 +64,9 @@ void AEnemyAIController::OnPossess(APawn* InPawn)
Blackboard->SetValueAsEnum("State", static_cast<uint8>(EAIState::PASSIVE)); Blackboard->SetValueAsEnum("State", static_cast<uint8>(EAIState::PASSIVE));
Blackboard->SetValueAsFloat("AttackRadius", enemy->AttackRadius);
Blackboard->SetValueAsFloat("DefendRadius", enemy->DefendRadius);
//ensure(enemy->GetMovementComponent()->UseAccelerationForPathFollowing()); //ensure(enemy->GetMovementComponent()->UseAccelerationForPathFollowing());
} }
@ -149,9 +152,24 @@ void AEnemyAIController::OnPerceptionUpdated(const TArray<AActor*>& actors)
continue; continue;
} }
FAISenseID SightID = SightConfig->GetSenseID(); FAISenseID SightID;
FAISenseID HearingID = HearingConfig->GetSenseID(); FAISenseID HearingID;
FAISenseID DamageID = DamageConfig->GetSenseID(); FAISenseID DamageID;
if (SightConfig)
{
SightID = SightConfig->GetSenseID();
}
if (HearingConfig)
{
HearingID = HearingConfig->GetSenseID();
}
if (DamageConfig)
{
DamageID = DamageConfig->GetSenseID();
}
if (stimulus.Type == SightID) if (stimulus.Type == SightID)
{ {
@ -229,6 +247,11 @@ void AEnemyAIController::SetStateAsAttacking(AActor* target)
SetState(EAIState::ATTACKING); SetState(EAIState::ATTACKING);
} }
AActor* AEnemyAIController::GetTargetActor()
{
return Cast<AActor>(Blackboard->GetValueAsObject("TargetActor"));
}
void AEnemyAIController::SensedSight(AActor* actor, FAIStimulus& stimulus) void AEnemyAIController::SensedSight(AActor* actor, FAIStimulus& stimulus)
{ {
EAIState CurrentState = static_cast<EAIState>(Blackboard->GetValueAsEnum("State")); EAIState CurrentState = static_cast<EAIState>(Blackboard->GetValueAsEnum("State"));

View File

@ -76,6 +76,9 @@ public:
UFUNCTION() UFUNCTION()
void SetStateAsAttacking(AActor* target); void SetStateAsAttacking(AActor* target);
UFUNCTION(BlueprintCallable)
AActor* GetTargetActor();
private: private:
void SensedSight(AActor* actor, FAIStimulus& stimulus); void SensedSight(AActor* actor, FAIStimulus& stimulus);

View File

@ -22,6 +22,12 @@ public:
UPROPERTY(EditAnywhere, Meta = (AllowPrivateAccess = "true")) UPROPERTY(EditAnywhere, Meta = (AllowPrivateAccess = "true"))
APatrolRoute* CurrentPatrolRoute; APatrolRoute* CurrentPatrolRoute;
UPROPERTY(EditAnywhere)
float AttackRadius = 300.0;
UPROPERTY(EditAnywhere)
float DefendRadius = 500.0f;
private: private:
UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true")) UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true"))
UBehaviorTree* BehaviourTree; UBehaviorTree* BehaviourTree;