This commit is contained in:
aozhiwei 2022-12-07 15:14:53 +08:00
parent 8e54caefc2
commit 483e3b9c55
4 changed files with 6 additions and 10 deletions

View File

@ -116,7 +116,7 @@ behaviac::EBTStatus AndroidAgent::DoAttack()
if (status_ == behaviac::BT_RUNNING) { if (status_ == behaviac::BT_RUNNING) {
return DoRunningCb(); return DoRunningCb();
} }
Human* enemy = GetOwner()->room->FindEnemy(GetOwner()->AsHuman()); Human* enemy = GetOwner()->room->FindEnemy(GetOwner()->AsHuman(), 300);
if (!enemy) { if (!enemy) {
return behaviac::BT_FAILURE; return behaviac::BT_FAILURE;
} }
@ -154,7 +154,7 @@ behaviac::EBTStatus AndroidAgent::DoPursuit()
if (status_ == behaviac::BT_RUNNING) { if (status_ == behaviac::BT_RUNNING) {
return DoRunningCb(); return DoRunningCb();
} }
Human* enemy = GetOwner()->room->FindEnemy(GetOwner()->AsHuman()); Human* enemy = GetOwner()->room->FindEnemy(GetOwner()->AsHuman(), 500);
if (!enemy) { if (!enemy) {
return behaviac::BT_FAILURE; return behaviac::BT_FAILURE;
} }

View File

@ -21,12 +21,8 @@ bool BaseAgent::IsGameOver()
bool BaseAgent::HasTarget(float range) bool BaseAgent::HasTarget(float range)
{ {
Human* enemy = GetOwner()->room->FindEnemy(GetOwner()->AsHuman()); Human* enemy = GetOwner()->room->FindEnemy(GetOwner()->AsHuman(), range);
if (enemy) { return enemy != nullptr;
float distance = enemy->GetPos().Distance(GetOwner()->GetPos());
return distance <= range;
}
return false;
} }
behaviac::EBTStatus BaseAgent::DoRunningCb() behaviac::EBTStatus BaseAgent::DoRunningCb()

View File

@ -413,7 +413,7 @@ void Room::CreateAndroid(int robot_num)
NotifyUiUpdate(); NotifyUiUpdate();
} }
Human* Room::FindEnemy(Human* hum) Human* Room::FindEnemy(Human* hum, float range)
{ {
std::vector<Human*> enemys; std::vector<Human*> enemys;
enemys.reserve(50); enemys.reserve(50);

View File

@ -138,7 +138,7 @@ public:
Player* NewPlayer(); Player* NewPlayer();
void AddPlayer(Player* hum, BornPoint* init_born_point = nullptr, bool no_matchteam = false); void AddPlayer(Player* hum, BornPoint* init_born_point = nullptr, bool no_matchteam = false);
Human* FindEnemy(Human* hum); Human* FindEnemy(Human* hum, float range);
void AddTeam(class MatchTeam* team); void AddTeam(class MatchTeam* team);