This commit is contained in:
aozhiwei 2022-12-02 14:30:19 +08:00
parent ff3e213d1b
commit 50d35e27aa
4 changed files with 51 additions and 14 deletions

View File

@ -404,6 +404,9 @@ void AndroidAI::UpdateAttack()
} }
float distance = myself->GetPos().Distance(node_->target.Get()->GetPos()); float distance = myself->GetPos().Distance(node_->target.Get()->GetPos());
if (distance > GetAttackRange()) { if (distance > GetAttackRange()) {
#ifdef MAP3D
ChangeToStateNewAI(ASE_Pursuit);
#else
if (ai_meta->i->pursuit_radius() <= 0) { if (ai_meta->i->pursuit_radius() <= 0) {
//站桩 //站桩
ChangeToStateNewAI(ASE_Thinking); ChangeToStateNewAI(ASE_Thinking);
@ -415,6 +418,7 @@ void AndroidAI::UpdateAttack()
ChangeToStateNewAI(ASE_Thinking); ChangeToStateNewAI(ASE_Thinking);
} }
} }
#endif
return; return;
} }
//攻击逻辑 //攻击逻辑
@ -469,11 +473,15 @@ void AndroidAI::UpdatePursuit()
ChangeToStateNewAI(ASE_Attack); ChangeToStateNewAI(ASE_Attack);
} else { } else {
#ifdef MAP3D #ifdef MAP3D
if (node_->exec_frame_num > 100 * 2) {
ChangeToStateNewAI(ASE_Thinking);
return;
}
a8::Vec3 center; a8::Vec3 center;
glm::vec3 random_pt; glm::vec3 random_pt;
center.x = myself->GetPos().x; center.x = myself->GetPos().x / 10.0f;
center.y = 0; center.y = 0;
center.z = myself->GetPos().y; center.z = myself->GetPos().y / 10.0f;
int ret = myself->room->map_instance->FindRandomPointAroundCircle int ret = myself->room->map_instance->FindRandomPointAroundCircle
(0, (0,
center, center,

View File

@ -75,6 +75,11 @@ bool MoveHelper::GetMovePosition(glm::vec3& out_pos)
void MoveHelper::CalcTargetPos(float distance) void MoveHelper::CalcTargetPos(float distance)
{ {
#ifdef DEBUG
if (paths_.size() > 1) {
a8::XPrintf("CalcTargetPos old_size:%d\n", {paths_.size()});
}
#endif
ClearPath(); ClearPath();
Creature* c = (Creature*)owner_; Creature* c = (Creature*)owner_;
glm::vec3 start; glm::vec3 start;
@ -173,30 +178,40 @@ void MoveHelper::ClearPath()
void MoveHelper::AddPaths(const a8::Vec3& start, std::vector<a8::Vec3>& paths) void MoveHelper::AddPaths(const a8::Vec3& start, std::vector<a8::Vec3>& paths)
{ {
glm::vec3 last_pos; glm::vec3 last_pos;
last_pos.x = start.x; last_pos.x = start.x * 10.f;
last_pos.y = start.y; last_pos.y = start.y * 10.f;
last_pos.z = start.z; last_pos.z = start.z * 10.f;
for (size_t i = 0; i < paths.size(); ++i) { for (size_t i = 0; i < paths.size(); ++i) {
MovePathPoint* p = new MovePathPoint(); MovePathPoint* p = new MovePathPoint();
p->src_pos = last_pos; p->src_pos = last_pos;
p->tar_pos.x = paths[i].x; p->tar_pos.x = paths[i].x * 10.f;
p->tar_pos.y = paths[i].y; p->tar_pos.y = paths[i].y * 10.f;
p->tar_pos.z = paths[i].z; p->tar_pos.z = paths[i].z * 10.f;
p->curr_pos = p->src_pos; p->curr_pos = p->src_pos;
glm::vec2 src_pos; glm::vec2 src_pos;
glm::vec2 tar_pos; glm::vec2 tar_pos;
src_pos.x = p->src_pos.x; src_pos.x = p->src_pos.x * 10.f;
src_pos.y = p->src_pos.y; src_pos.y = p->src_pos.y * 10.f;
tar_pos.x = p->tar_pos.x; tar_pos.x = p->tar_pos.x * 10.f;
tar_pos.y = p->tar_pos.y; tar_pos.y = p->tar_pos.y * 10.f;
//p->distance = glm::norm(tar_pos - src_pos); {
a8::Vec2 v1;
a8::Vec2 v2;
v1.x = tar_pos.x;
v1.y = tar_pos.y;
v2.x = src_pos.x;
v2.y = src_pos.y;
p->distance = v1.Distance(v2);
}
glm::vec2 dir = tar_pos - src_pos; glm::vec2 dir = tar_pos - src_pos;
glm::normalize(dir); glm::normalize(dir);
@ -204,6 +219,16 @@ void MoveHelper::AddPaths(const a8::Vec3& start, std::vector<a8::Vec3>& paths)
p->dir.y = 0; p->dir.y = 0;
p->dir.z = dir.y; p->dir.z = dir.y;
#ifdef DEBUG
a8::XPrintf("AddPaths size:%d i:%d src_pos:%f,%f tar_pos:%f:%f\n",
{
paths.size(),
i,
src_pos.x,
src_pos.y,
tar_pos.x,
tar_pos.y});
#endif
paths_.push_back(p); paths_.push_back(p);
} }
} }

View File

@ -3699,10 +3699,14 @@ int Room::GetOnlinePlayerNum()
size_t Room::GetRoomMaxPlayerNum() size_t Room::GetRoomMaxPlayerNum()
{ {
#ifdef MAP3D
return 2;
#else
if (pve_instance) { if (pve_instance) {
return pve_human_num; return pve_human_num;
} }
return map_meta_->i->player(); return map_meta_->i->player();
#endif
} }
void Room::InitAndroidAI() void Room::InitAndroidAI()

View File

@ -439,7 +439,7 @@ void InternalShot(Creature* c,
bullet_born_offset = a8::Vec2(v.z *10*1, v.x*10*-1); bullet_born_offset = a8::Vec2(v.z *10*1, v.x*10*-1);
bullet_born_pos = c->GetPos() + bullet_born_offset; bullet_born_pos = c->GetPos() + bullet_born_offset;
if (c->IsPlayer() || c->IsCar()) { if (c->IsPlayer() || c->IsCar()) {
#ifdef DEBUG #ifdef DEBUG1
a8::XPrintf("idx:%d offset:%f,%f angle:%f old_angle:%f angle_xy:%f,%f %f %f gun_muzzle_position:%f,%f,%f pos:%f,%f gun_id:%d t:%d\n", a8::XPrintf("idx:%d offset:%f,%f angle:%f old_angle:%f angle_xy:%f,%f %f %f gun_muzzle_position:%f,%f,%f pos:%f,%f gun_id:%d t:%d\n",
{ {
bulletIdx, bulletIdx,