This commit is contained in:
aozhiwei 2020-07-14 15:24:53 +08:00
parent 3f0a482ea2
commit 9c7bcc4db0
3 changed files with 63 additions and 9 deletions

View File

@ -10,18 +10,25 @@
const int SHUA_RANGE = 580; const int SHUA_RANGE = 580;
enum ShotType_e
{
kShotNone = 0,
kShotClick = 1,
kShotHold = 2,
};
/* /*
ai可切换/() ai可切换/()
ai级别 ai级别
1: () 1: ()
2: param1: param2: 2:
3: param1: 3:
4: () param1: 4: ()
5: param1: param2: 5:
6: param1: 6:
7: param1: 7:
8: param1: 8:
*/ */
AndroidNewAI::~AndroidNewAI() AndroidNewAI::~AndroidNewAI()
@ -459,10 +466,44 @@ void AndroidNewAI::UpdateThinking()
void AndroidNewAI::UpdateAttack() void AndroidNewAI::UpdateAttack()
{ {
Human* myself = (Human*)owner;
if (node_.target->dead) { if (node_.target->dead) {
ChangeToStateNewAI(ASE_Thinking); ChangeToStateNewAI(ASE_Thinking);
return; return;
} }
float distance = myself->GetPos().Distance(node_.target->GetPos());
if (distance > GetAttackRange()) {
if (ai_meta->i->pursuit_radius() <= 0) {
//站桩
ChangeToStateNewAI(ASE_Idle);
} else {
if (distance < ai_meta->i->pursuit_radius()) {
//追击
ChangeToStateNewAI(ASE_Pursuit);
} else {
ChangeToStateNewAI(ASE_Thinking);
}
}
return;
}
//攻击逻辑
switch (ai_meta->i->attack_type()) {
case kShotClick:
{
}
break;
case kShotHold:
{
}
break;
default:
{
ChangeToStateNewAI(ASE_Idle);
}
break;
}
} }
void AndroidNewAI::UpdateRandomWalk() void AndroidNewAI::UpdateRandomWalk()
@ -576,3 +617,14 @@ Human* AndroidNewAI::GetTarget()
}); });
return target; return target;
} }
float AndroidNewAI::GetAttackRange()
{
float attack_range = 0;
Human* myself = (Human*)owner;
if (myself->curr_weapon && myself->curr_weapon->meta) {
attack_range = myself->curr_weapon->meta->i->range();
}
attack_range = std::min(500.0f, attack_range);
return attack_range;
}

View File

@ -8,7 +8,8 @@ enum AndroidStateEx_e
ASE_Idle = 0, ASE_Idle = 0,
ASE_Thinking = 1, ASE_Thinking = 1,
ASE_Attack = 2, ASE_Attack = 2,
ASE_RandomWalk = 3 ASE_RandomWalk = 3,
ASE_Pursuit = 4
}; };
class AINode class AINode
@ -65,6 +66,7 @@ private:
void ChangeToStateNewAI(AndroidStateEx_e to_state); void ChangeToStateNewAI(AndroidStateEx_e to_state);
Human* GetTarget(); Human* GetTarget();
float GetAttackRange();
private: private:
OldAiData old_ai_data_; OldAiData old_ai_data_;

View File

@ -238,7 +238,7 @@ message KillPoint
message AI message AI
{ {
optional int32 ai_level = 1; optional int32 ai_level = 1;
optional int32 pursuit_distance = 2; optional int32 pursuit_radius = 2;
optional int32 attack_interval = 3; optional int32 attack_interval = 3;
optional int32 attack_times = 4; optional int32 attack_times = 4;
optional int32 attack_type = 5; optional int32 attack_type = 5;