From a4f68c914720a355c144a35eb0305ecc9bcd4650 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 21 Nov 2023 11:12:07 +0800 Subject: [PATCH] 1 --- server/gameserver/collision.h | 3 ++- server/gameserver/roomobstacle.cc | 15 +++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/server/gameserver/collision.h b/server/gameserver/collision.h index d97e0f69..07d2cf85 100644 --- a/server/gameserver/collision.h +++ b/server/gameserver/collision.h @@ -22,7 +22,8 @@ class Collision --dw dh 矩形长宽 --dro 矩形旋转角度 */ - static bool Check2dRotationRectangle(float rx, float ry, float r, float dx, float dy, float dw, float dh, float dro); + static bool Check2dRotationRectangle(float rx, float ry, float r, + float dx, float dy, float dw, float dh, float dro); static bool InSquare(const glm::vec3& center, const glm::vec3& pos, float side_len); diff --git a/server/gameserver/roomobstacle.cc b/server/gameserver/roomobstacle.cc index c8b43775..d714462a 100644 --- a/server/gameserver/roomobstacle.cc +++ b/server/gameserver/roomobstacle.cc @@ -901,24 +901,27 @@ void RoomObstacle::RemoveSameSkillObstacle() void RoomObstacle::ActiveFlameSurface() { ForceGridList(); + glm::vec3 dir = GlmHelper::UP; + GlmHelper::RotateY(dir, rotate_); + glm::vec3 adjusted_pos = GetPos().ToGlmVec3() + dir * (meta->height() / 2.0f); auto cb = - [this] () + [this, adjusted_pos] () { std::set human_list; room->grid_service->TraverseAllLayerHumanList (room->GetRoomIdx(), *grid_list_, - [this, &human_list] (Human* hum, bool& stop) + [this, &human_list, &adjusted_pos] (Human* hum, bool& stop) { if (Collision::Check2dRotationRectangle ( hum->GetPos().GetX(), hum->GetPos().GetZ(), hum->GetHitRadius(), - 0, - 0, - 0, - 0, + adjusted_pos.x, + adjusted_pos.z, + meta->width() / 2.0f, + meta->height() / 2.0f, GetRotate() * 180.f )) { }