Ver código fonte

Merge pull request #26103 from nekomatata/area2d-rectangle-collision-fix

Fixed Area2d input events ignoring the top and left edge of rectangle shape
Rémi Verschelde 6 anos atrás
pai
commit
cac1a93d1b
1 arquivos alterados com 5 adições e 2 exclusões
  1. 5 2
      servers/physics_2d/shape_2d_sw.cpp

+ 5 - 2
servers/physics_2d/shape_2d_sw.cpp

@@ -369,8 +369,11 @@ void RectangleShape2DSW::get_supports(const Vector2 &p_normal, Vector2 *r_suppor
 }
 
 bool RectangleShape2DSW::contains_point(const Vector2 &p_point) const {
-
-	return Math::abs(p_point.x) < half_extents.x && Math::abs(p_point.y) < half_extents.y;
+	float x = p_point.x;
+	float y = p_point.y;
+	float edge_x = half_extents.x;
+	float edge_y = half_extents.y;
+	return (x >= -edge_x) && (x < edge_x) && (y >= -edge_y) && (y < edge_y);
 }
 
 bool RectangleShape2DSW::intersect_segment(const Vector2 &p_begin, const Vector2 &p_end, Vector2 &r_point, Vector2 &r_normal) const {