Physics2DDirectSpaceState

Inherits: Object

Direct access object to a space in the Physics2DServer.

Description

Direct access object to a space in the Physics2DServer. It's used mainly to do queries against objects and areas residing in a given space.

Tutorials

Methods

Array

cast_motion ( Physics2DShapeQueryParameters shape )

Array

collide_shape ( Physics2DShapeQueryParameters shape, int max_results=32 )

Dictionary

get_rest_info ( Physics2DShapeQueryParameters shape )

Array

intersect_point ( Vector2 point, int max_results=32, Array exclude=[ ], int collision_layer=2147483647, bool collide_with_bodies=true, bool collide_with_areas=false )

Array

intersect_point_on_canvas ( Vector2 point, int canvas_instance_id, int max_results=32, Array exclude=[ ], int collision_layer=2147483647, bool collide_with_bodies=true, bool collide_with_areas=false )

Dictionary

intersect_ray ( Vector2 from, Vector2 to, Array exclude=[ ], int collision_layer=2147483647, bool collide_with_bodies=true, bool collide_with_areas=false )

Array

intersect_shape ( Physics2DShapeQueryParameters shape, int max_results=32 )


Method Descriptions

Array cast_motion ( Physics2DShapeQueryParameters shape )

Checks how far a Shape2D can move without colliding. All the parameters for the query, including the shape and the motion, are supplied through a Physics2DShapeQueryParameters object.

Returns an array with the safe and unsafe proportions (between 0 and 1) of the motion. The safe proportion is the maximum fraction of the motion that can be made without a collision. The unsafe proportion is the minimum fraction of the distance that must be moved for a collision. If no collision is detected a result of [1.0, 1.0] will be returned.

Note: Any Shape2Ds that the shape is already colliding with e.g. inside of, will be ignored. Use collide_shape to determine the Shape2Ds that the shape is already colliding with.


Array collide_shape ( Physics2DShapeQueryParameters shape, int max_results=32 )

Checks the intersections of a shape, given through a Physics2DShapeQueryParameters object, against the space. The resulting array contains a list of points where the shape intersects another. Like with intersect_shape, the number of returned results can be limited to save processing time.


Dictionary get_rest_info ( Physics2DShapeQueryParameters shape )

Checks the intersections of a shape, given through a Physics2DShapeQueryParameters object, against the space. If it collides with more than one shape, the nearest one is selected. If the shape did not intersect anything, then an empty dictionary is returned instead.

Note: This method does not take into account the motion property of the object. The returned object is a dictionary containing the following fields:

collider_id: The colliding object's ID.

linear_velocity: The colliding object's velocity Vector2. If the object is an Area2D, the result is (0, 0).

metadata: The intersecting shape's metadata. This metadata is different from Object.get_meta, and is set with Physics2DServer.shape_set_data.

normal: The object's surface normal at the intersection point.

point: The intersection point.

rid: The intersecting object's RID.

shape: The shape index of the colliding shape.


Array intersect_point ( Vector2 point, int max_results=32, Array exclude=[ ], int collision_layer=2147483647, bool collide_with_bodies=true, bool collide_with_areas=false )

Checks whether a point is inside any solid shape. The shapes the point is inside of are returned in an array containing dictionaries with the following fields:

collider: The colliding object.

collider_id: The colliding object's ID.

metadata: The intersecting shape's metadata. This metadata is different from Object.get_meta, and is set with Physics2DServer.shape_set_data.

rid: The intersecting object's RID.

shape: The shape index of the colliding shape.

The number of intersections can be limited with the max_results parameter, to reduce the processing time.

Additionally, the method can take an exclude array of objects or RIDs that are to be excluded from collisions, a collision_mask bitmask representing the physics layers to check in, or booleans to determine if the ray should collide with PhysicsBody2Ds or Area2Ds, respectively.

Note: ConcavePolygonShape2Ds and CollisionPolygon2Ds in Segments build mode are not solid shapes. Therefore, they will not be detected.


Array intersect_point_on_canvas ( Vector2 point, int canvas_instance_id, int max_results=32, Array exclude=[ ], int collision_layer=2147483647, bool collide_with_bodies=true, bool collide_with_areas=false )

Checks whether a point is inside any solid shape, in a specific canvas layer given by canvas_instance_id. The shapes the point is inside of are returned in an array containing dictionaries with the following fields:

collider: The colliding object.

collider_id: The colliding object's ID.

metadata: The intersecting shape's metadata. This metadata is different from Object.get_meta, and is set with Physics2DServer.shape_set_data.

rid: The intersecting object's RID.

shape: The shape index of the colliding shape.

The number of intersections can be limited with the max_results parameter, to reduce the processing time.

Additionally, the method can take an exclude array of objects or RIDs that are to be excluded from collisions, a collision_mask bitmask representing the physics layers to check in, or booleans to determine if the ray should collide with PhysicsBody2Ds or Area2Ds, respectively.

Note: ConcavePolygonShape2Ds and CollisionPolygon2Ds in Segments build mode are not solid shapes. Therefore, they will not be detected.


Dictionary intersect_ray ( Vector2 from, Vector2 to, Array exclude=[ ], int collision_layer=2147483647, bool collide_with_bodies=true, bool collide_with_areas=false )

Intersects a ray in a given space. The returned object is a dictionary with the following fields:

collider: The colliding object.

collider_id: The colliding object's ID.

metadata: The intersecting shape's metadata. This metadata is different from Object.get_meta, and is set with Physics2DServer.shape_set_data.

normal: The object's surface normal at the intersection point.

position: The intersection point.

rid: The intersecting object's RID.

shape: The shape index of the colliding shape.

If the ray did not intersect anything, then an empty dictionary is returned instead.

Additionally, the method can take an exclude array of objects or RIDs that are to be excluded from collisions, a collision_mask bitmask representing the physics layers to check in, or booleans to determine if the ray should collide with PhysicsBody2Ds or Area2Ds, respectively.


Array intersect_shape ( Physics2DShapeQueryParameters shape, int max_results=32 )

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:

collider: The colliding object.

collider_id: The colliding object's ID.

metadata: The intersecting shape's metadata. This metadata is different from Object.get_meta, and is set with Physics2DServer.shape_set_data.

rid: The intersecting object's RID.

shape: The shape index of the colliding shape.

The number of intersections can be limited with the max_results parameter, to reduce the processing time.