diff --git a/server/gameserver/app.cc b/server/gameserver/app.cc index 91683f7..a048772 100644 --- a/server/gameserver/app.cc +++ b/server/gameserver/app.cc @@ -31,6 +31,8 @@ #include "framework/cpp/tglog.h" #include "framework/cpp/httpclientpool.h" +#include "collider.h" + struct MsgNode { SocketFrom_e sockfrom; @@ -92,6 +94,15 @@ static void SavePerfLog() bool App::Init(int argc, char* argv[]) { + #if 0 + { + AabbCollider a_collider; + AabbCollider b_collider; + a8::Vec2 new_pos; + bool ret = a_collider.CalcSafePoint(&b_collider, new_pos); + int i = 0; + } + #endif signal(SIGPIPE, SIG_IGN); this->argc = argc; this->argv = argv; diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 212a9d0..d1a92ce 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -2320,8 +2320,12 @@ void Creature::FindLocationWithTarget(Entity* target, ColliderComponent* target_ } } } - a8::Vec2 new_pos_dir = new_pos - old_pos; - new_pos_dir.Normalize(); + a8::Vec2 new_pos_dir = a8::Vec2::UP; + //特殊情况处理 + if (new_pos.ManhattanDistance(old_pos) > 0.0001f) { + new_pos_dir = new_pos - old_pos; + new_pos_dir.Normalize(); + } float distance = (new_pos - old_pos).Norm(); for (int i = distance; i < 10000000; i += 5) { SetPos(old_pos + new_pos_dir * i);