Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

RayCast2D

Inherits: Node2D < CanvasItem < Node < Object

A ray in 2D space, used to find the first CollisionObject2D it intersects.

Description

A raycast represents a ray from its origin to its 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 Area2Ds (collide_with_areas) or PhysicsBody2Ds (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 force_raycast_update.

To sweep over a region of 2D space, you can approximate the region with multiple RayCast2Ds or use ShapeCast2D.

Tutorials

Properties

bool

collide_with_areas

false

bool

collide_with_bodies

true

int

collision_mask

1

bool

enabled

true

bool

exclude_parent

true

bool

hit_from_inside

false

Vector2

target_position

Vector2(0, 50)

Methods

void

add_exception ( CollisionObject2D node )

void

add_exception_rid ( RID rid )

void

clear_exceptions ( )

void

force_raycast_update ( )

Object

get_collider ( ) const

RID

get_collider_rid ( ) const

int

get_collider_shape ( ) const

bool

get_collision_mask_value ( int layer_number ) const

Vector2

get_collision_normal ( ) const

Vector2

get_collision_point ( ) const

bool

is_colliding ( ) const

void

remove_exception ( CollisionObject2D node )

void

remove_exception_rid ( RID rid )

void

set_collision_mask_value ( int layer_number, bool value )


Property Descriptions

bool collide_with_areas = false

  • void set_collide_with_areas ( bool value )

  • bool is_collide_with_areas_enabled ( )

If true, collisions with Area2Ds will be reported.


bool collide_with_bodies = true

  • void set_collide_with_bodies ( bool value )

  • bool is_collide_with_bodies_enabled ( )

If true, collisions with PhysicsBody2Ds will be reported.