2
0
Эх сурвалжийг харах

Merge pull request #54607 from nekomatata/fix-intersect-shape-motion-3.x

Rémi Verschelde 3 жил өмнө
parent
commit
965f7a6df9

+ 1 - 2
doc/classes/Physics2DDirectSpaceState.xml

@@ -100,8 +100,7 @@
 			<argument index="0" name="shape" type="Physics2DShapeQueryParameters" />
 			<argument index="1" name="max_results" type="int" default="32" />
 			<description>
-				Checks the intersections of a shape, given through a [Physics2DShapeQueryParameters] object, against the space.
-				[b]Note:[/b] This method does not take into account the [code]motion[/code] property of the object. The intersected shapes are returned in an array containing dictionaries with the following fields:
+				Checks the intersections of a shape, given through a [Physics2DShapeQueryParameters] object, against the space. The intersected shapes are returned in an array containing dictionaries with the following fields:
 				[code]collider[/code]: The colliding object.
 				[code]collider_id[/code]: The colliding object's ID.
 				[code]metadata[/code]: The intersecting shape's metadata. This metadata is different from [method Object.get_meta], and is set with [method Physics2DServer.shape_set_data].

+ 1 - 0
servers/physics_2d/space_2d_sw.cpp

@@ -210,6 +210,7 @@ int Physics2DDirectSpaceStateSW::intersect_shape(const RID &p_shape, const Trans
 	ERR_FAIL_COND_V(!shape, 0);
 
 	Rect2 aabb = p_xform.xform(shape->get_aabb());
+	aabb = aabb.merge(Rect2(aabb.position + p_motion, aabb.size)); //motion
 	aabb = aabb.grow(p_margin);
 
 	int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, Space2DSW::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);