From 496e9a11eb40889bc18e530de33f8106f283b8c0 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 12 May 2021 18:42:12 +0800 Subject: [PATCH] 1 --- server/gameserver/room.cc | 16 +++++++++++----- server/gameserver/room.h | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index a65e711..1b734c5 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -1746,7 +1746,9 @@ void Room::AirDrop(int appear_time, int box_id, int airdrop_id) }, &xtimer_attacher_.timer_list_); ++airdrop_times_; - ShuaMon(box_pos, thing_meta->airdrop_mon_list); + ShuaMon(box_pos, + thing_meta->airdrop_mon_list, + std::max(thing_meta->i->width(), thing_meta->i->height())); } } @@ -3788,8 +3790,9 @@ void Room::ForwardGasRing(int n) } } -void Room::ShuaMon(const a8::Vec2& center, std::vector& airdrop_mon_list) +void Room::ShuaMon(const a8::Vec2& center, std::vector& airdrop_mon_list, float radius) { + int last_hero_idx = 0; for (int hero_id : airdrop_mon_list) { MetaData::Player* hero_meta = MetaMgr::Instance()->GetPlayer(hero_id); if (hero_meta) { @@ -3797,12 +3800,14 @@ void Room::ShuaMon(const a8::Vec2& center, std::vector& airdrop_mon_list) Creature* master = nullptr; for (int i = 0; i < 10; ++i) { a8::Vec2 born_dir = center; - a8::Vec2 born_offset(10, 10); + a8::Vec2 born_offset(hero_meta->i->radius() + 1 + radius + (50 * i), + hero_meta->i->radius() + 1 + radius + (50 * i)); born_offset.Rotate(born_dir.CalcAngle(a8::Vec2::UP)); - born_offset.Rotate(i * 0.5); + born_offset.Rotate((last_hero_idx + i) * 0.5); a8::Vec2 hero_pos = center + born_offset; - a8::Vec2 dir = center; + a8::Vec2 dir = born_offset; + dir.Normalize(); CircleCollider collider; collider.pos = hero_pos; @@ -3822,6 +3827,7 @@ void Room::ShuaMon(const a8::Vec2& center, std::vector& airdrop_mon_list) if (!hero) { abort(); } + last_hero_idx = i; } }//end for i }//end if diff --git a/server/gameserver/room.h b/server/gameserver/room.h index c61ab3e..cff00a6 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -255,7 +255,7 @@ private: size_t GetRoomMaxPlayerNum(); void InitAndroidAI(); void ForwardGasRing(int n); - void ShuaMon(const a8::Vec2& center, std::vector& airdrop_mon_list); + void ShuaMon(const a8::Vec2& center, std::vector& airdrop_mon_list, float radius); #ifdef DEBUG void InitDebugInfo();