diff --git a/server/gameserver/collision.cc b/server/gameserver/collision.cc index 1c4a26e2..6291a60d 100644 --- a/server/gameserver/collision.cc +++ b/server/gameserver/collision.cc @@ -15,11 +15,20 @@ bool Collision::CheckBullet(IBullet* bullet, Creature* c) { glm::vec3 bullet_real_pos = bullet->GetPos().ToGlmVec3() - bullet->GetDir() * bullet->GetHitRadius(); - return a8::IntersectCylinderCylinder + bool ret = a8::IntersectCylinderCylinder ( bullet_real_pos, bullet->GetHitRadius() * 1.0, 10, c->GetPos().ToGlmVec3(), c->GetHitRadius(), 10 ); + if (!ret) { + bullet_real_pos = bullet->GetPos().ToGlmVec3() - bullet->GetDir() * (bullet->GetHitRadius() - 2); + ret = a8::IntersectCylinderCylinder + ( + bullet_real_pos, bullet->GetHitRadius() * 1.0, 10, + c->GetPos().ToGlmVec3(), c->GetHitRadius(), 10 + ); + } + return ret; } bool Collision::CheckBullet(IBullet* bullet, Entity* e)