From 2b3dcd723e2440787f149773fbffb1ea3c84a7c8 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 26 Jun 2023 19:42:54 +0800 Subject: [PATCH] 1 --- server/gameserver/movement.cc | 19 +++++++++++++++++++ server/gameserver/movement.h | 3 +++ 2 files changed, 22 insertions(+) diff --git a/server/gameserver/movement.cc b/server/gameserver/movement.cc index 74c3aed2..80431b39 100644 --- a/server/gameserver/movement.cc +++ b/server/gameserver/movement.cc @@ -44,7 +44,9 @@ bool Movement::UpdatePosition() }); } #endif + #if 0 curr_point.tar_pos.SetY(curr_point.curr_pos.GetY()); + #endif owner_->SetPos(curr_point.tar_pos); ++path_index_; if (path_index_ < paths_.size()) { @@ -245,5 +247,22 @@ bool Movement::FindPath(const glm::vec3& target_pos, float distance) owner_->SetAttackDir(paths_.at(0).dir); } } + AdjustLastPath(distance); return !paths_.empty(); } + +void Movement::AdjustLastPath(float distance) +{ + if (paths_.empty()) { + return; + } + if (distance < 0.01f) { + return; + } + MovePathPoint& point = paths_.at(paths_.size() - 1); + if (point.distance + 3 < distance) { + return; + } + point.distance -= distance; + point.tar_pos.FromGlmVec3(point.src_pos.ToGlmVec3() + point.dir * point.distance); +} diff --git a/server/gameserver/movement.h b/server/gameserver/movement.h index 9338498a..f2eadee4 100644 --- a/server/gameserver/movement.h +++ b/server/gameserver/movement.h @@ -29,6 +29,9 @@ class Movement bool IsFindPath() { return is_find_path_; } bool FindPath(const glm::vec3& target_pos, float distance); +private: + void AdjustLastPath(float distance); + private: std::vector paths_; int path_index_ = 0;