Add reworked Worker Enemy AI #3

Closed
baz wants to merge 24 commits from worker-ai into master
4 changed files with 36 additions and 3 deletions
Showing only changes of commit cc3b05d8b8 - Show all commits

View File

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

View File

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

View File

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

View File

@ -21,6 +21,12 @@ class NAKATOMI_API AEnemyCharacter : public ANakatomiCharacter
public:
UPROPERTY(EditAnywhere, Meta = (AllowPrivateAccess = "true"))
APatrolRoute* CurrentPatrolRoute;
UPROPERTY(EditAnywhere)
float AttackRadius = 300.0;
UPROPERTY(EditAnywhere)
float DefendRadius = 500.0f;
private:
UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true"))