2017-09-12 22:42:36 +02:00
<?xml version="1.0" encoding="UTF-8" ?>
2023-07-06 10:08:05 +02:00
<class name= "RayCast2D" inherits= "Node2D" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation= "../class.xsd" >
2017-09-12 22:42:36 +02:00
<brief_description >
2023-04-28 22:59:03 +02:00
A ray in 2D space, used to find the first [CollisionObject2D] it intersects.
2017-09-12 22:42:36 +02:00
</brief_description>
<description >
2023-04-28 22:59:03 +02:00
A raycast represents a ray from its origin to its [member target_position] that finds the closest [CollisionObject2D] along its path, if it intersects any. This is useful for a lot of things, such as
[RayCast2D] can ignore some objects by adding them to an exception list, by making its detection reporting ignore [Area2D]s ([member collide_with_areas]) or [PhysicsBody2D]s ([member collide_with_bodies]), or by configuring physics layers.
[RayCast2D] calculates intersection every physics frame, and it holds the result until the next physics frame. For an immediate raycast, or if you want to configure a [RayCast2D] multiple times within the same physics frame, use [method force_raycast_update].
To sweep over a region of 2D space, you can approximate the region with multiple [RayCast2D]s or use [ShapeCast2D].
2017-09-12 22:42:36 +02:00
</description>
<tutorials >
2021-11-15 10:43:07 +01:00
<link title= "Ray-casting" > $DOCS_URL/tutorials/physics/ray-casting.html</link>
2017-09-12 22:42:36 +02:00
</tutorials>
<methods >
<method name= "add_exception" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2022-08-06 20:11:48 +02:00
<param index= "0" name= "node" type= "CollisionObject2D" />
2017-09-12 22:42:36 +02:00
<description >
2022-01-28 15:06:54 +01:00
Adds a collision exception so the ray does not report collisions with the specified [CollisionObject2D] node.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "add_exception_rid" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2022-08-06 20:11:48 +02:00
<param index= "0" name= "rid" type= "RID" />
2017-09-12 22:42:36 +02:00
<description >
Adds a collision exception so the ray does not report collisions with the specified [RID].
</description>
</method>
<method name= "clear_exceptions" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2017-09-12 22:42:36 +02:00
<description >
Removes all collision exceptions for this ray.
</description>
</method>
<method name= "force_raycast_update" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2017-09-12 22:42:36 +02:00
<description >
2023-08-29 16:33:45 +02:00
Updates the collision information for the ray immediately, without waiting for the next [code]_physics_process[/code] call. Use this method, for example, when the ray or its parent has changed state.
2020-07-13 20:13:38 +02:00
[b]Note:[/b] [member enabled] does not need to be [code]true[/code] for this to work.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "get_collider" qualifiers= "const" >
2021-07-30 15:28:05 +02:00
<return type= "Object" />
2017-09-12 22:42:36 +02:00
<description >
2019-05-24 04:15:43 +02:00
Returns the first object that the ray intersects, or [code]null[/code] if no object is intersecting the ray (i.e. [method is_colliding] returns [code]false[/code]).
2017-09-12 22:42:36 +02:00
</description>
</method>
2022-08-14 10:09:35 +02:00
<method name= "get_collider_rid" qualifiers= "const" >
<return type= "RID" />
<description >
Returns the [RID] of the first object that the ray intersects, or an empty [RID] if no object is intersecting the ray (i.e. [method is_colliding] returns [code]false[/code]).
</description>
</method>
2017-09-12 22:42:36 +02:00
<method name= "get_collider_shape" qualifiers= "const" >
2021-07-30 15:28:05 +02:00
<return type= "int" />
2017-09-12 22:42:36 +02:00
<description >
2018-08-30 16:28:48 +02:00
Returns the shape ID of the first object that the ray intersects, or [code]0[/code] if no object is intersecting the ray (i.e. [method is_colliding] returns [code]false[/code]).
2017-09-12 22:42:36 +02:00
</description>
</method>
2021-08-12 01:01:38 +02:00
<method name= "get_collision_mask_value" qualifiers= "const" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
2022-08-06 20:11:48 +02:00
<param index= "0" name= "layer_number" type= "int" />
2017-10-24 19:22:37 +02:00
<description >
2022-08-11 19:52:19 +02:00
Returns whether or not the specified layer of the [member collision_mask] is enabled, given a [param layer_number] between 1 and 32.
2017-10-24 19:22:37 +02:00
</description>
</method>
2017-09-12 22:42:36 +02:00
<method name= "get_collision_normal" qualifiers= "const" >
2021-07-30 15:28:05 +02:00
<return type= "Vector2" />
2017-09-12 22:42:36 +02:00
<description >
2021-11-10 23:57:11 +01:00
Returns the normal of the intersecting object's shape at the collision point, or [code]Vector2(0, 0)[/code] if the ray starts inside the shape and [member hit_from_inside] is [code]true[/code].
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "get_collision_point" qualifiers= "const" >
2021-07-30 15:28:05 +02:00
<return type= "Vector2" />
2017-09-12 22:42:36 +02:00
<description >
2019-06-22 01:04:47 +02:00
Returns the collision point at which the ray intersects the closest object.
2021-10-05 14:24:34 +02:00
[b]Note:[/b] This point is in the [b]global[/b] coordinate system.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "is_colliding" qualifiers= "const" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
2017-09-12 22:42:36 +02:00
<description >
2019-05-24 04:15:43 +02:00
Returns whether any object is intersecting with the ray's vector (considering the vector length).
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "remove_exception" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2022-08-06 20:11:48 +02:00
<param index= "0" name= "node" type= "CollisionObject2D" />
2017-09-12 22:42:36 +02:00
<description >
2022-01-28 15:06:54 +01:00
Removes a collision exception so the ray does report collisions with the specified [CollisionObject2D] node.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "remove_exception_rid" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2022-08-06 20:11:48 +02:00
<param index= "0" name= "rid" type= "RID" />
2017-09-12 22:42:36 +02:00
<description >
Removes a collision exception so the ray does report collisions with the specified [RID].
</description>
</method>
2021-08-12 01:01:38 +02:00
<method name= "set_collision_mask_value" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2022-08-06 20:11:48 +02:00
<param index= "0" name= "layer_number" type= "int" />
<param index= "1" name= "value" type= "bool" />
2017-10-24 19:22:37 +02:00
<description >
2022-08-11 19:52:19 +02:00
Based on [param value], enables or disables the specified layer in the [member collision_mask], given a [param layer_number] between 1 and 32.
2017-10-24 19:22:37 +02:00
</description>
</method>
2017-09-12 22:42:36 +02:00
</methods>
<members >
2019-06-29 12:38:01 +02:00
<member name= "collide_with_areas" type= "bool" setter= "set_collide_with_areas" getter= "is_collide_with_areas_enabled" default= "false" >
2023-08-29 16:33:45 +02:00
If [code]true[/code], collisions with [Area2D]s will be reported.
2018-08-29 22:25:11 +02:00
</member>
2019-06-29 12:38:01 +02:00
<member name= "collide_with_bodies" type= "bool" setter= "set_collide_with_bodies" getter= "is_collide_with_bodies_enabled" default= "true" >
2023-08-29 16:33:45 +02:00
If [code]true[/code], collisions with [PhysicsBody2D]s will be reported.
2018-08-29 22:25:11 +02:00
</member>
2019-06-29 12:38:01 +02:00
<member name= "collision_mask" type= "int" setter= "set_collision_mask" getter= "get_collision_mask" default= "1" >
2021-11-15 10:43:07 +01:00
The ray's collision mask. Only objects in at least one collision layer enabled in the mask will be detected. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information.
2017-09-12 22:42:36 +02:00
</member>
2020-07-03 16:09:12 +02:00
<member name= "enabled" type= "bool" setter= "set_enabled" getter= "is_enabled" default= "true" >
2019-06-29 15:24:23 +02:00
If [code]true[/code], collisions will be reported.
2017-09-12 22:42:36 +02:00
</member>
2019-06-29 12:38:01 +02:00
<member name= "exclude_parent" type= "bool" setter= "set_exclude_parent_body" getter= "get_exclude_parent_body" default= "true" >
2019-06-29 15:24:23 +02:00
If [code]true[/code], the parent node will be excluded from collision detection.
2017-09-12 22:42:36 +02:00
</member>
2021-11-10 23:57:11 +01:00
<member name= "hit_from_inside" type= "bool" setter= "set_hit_from_inside" getter= "is_hit_from_inside_enabled" default= "false" >
If [code]true[/code], the ray will detect a hit when starting inside shapes. In this case the collision normal will be [code]Vector2(0, 0)[/code]. Does not affect concave polygon shapes.
</member>
2019-09-24 19:45:03 +02:00
<member name= "target_position" type= "Vector2" setter= "set_target_position" getter= "get_target_position" default= "Vector2(0, 50)" >
2020-09-11 12:22:10 +02:00
The ray's destination point, relative to the RayCast's [code]position[/code].
</member>
2017-09-12 22:42:36 +02:00
</members>
</class>