diff --git a/server/gameserver/buff/sprint.cc b/server/gameserver/buff/sprint.cc index c2414c25..2bd41b38 100644 --- a/server/gameserver/buff/sprint.cc +++ b/server/gameserver/buff/sprint.cc @@ -92,18 +92,19 @@ void SprintBuff::CoCollisionCheck() void SprintBuff::Check(Position& pre_pos, std::map& hited_objects) { + pre_pos = owner->GetPos(); if (pre_pos.ManhattanDistance2D(owner->GetPos()) < 2) { - pre_pos = owner->GetPos(); return; } - std::set enemys; - glm::vec3 dir = owner->GetPos().ToGlmVec3() - pre_pos.ToGlmVec3(); + dir.y = 0.0f; GlmHelper::Normalize(dir); + float distance = owner->GetPos().Distance2D2(pre_pos); for (int i = 0; i < (distance + 6); i += 5) { glm::vec3 center = owner->GetPos().ToGlmVec3() + dir * (float)i; + std::set enemys; owner->GetHitEnemys(enemys, center, meta->_param4); for (auto& enemy : enemys) { if (enemy->IsEntityType(ET_Car)) { @@ -121,7 +122,6 @@ void SprintBuff::Check(Position& pre_pos, std::map& hited_object } } - pre_pos = owner->GetPos(); } void SprintBuff::OnEnemyHit(Creature* enemy)