RayCast

Inherits: Spatial < Node < Object

查询与射线相交的最近物体。

描述

RayCast 表示从起点到终点位置的线,cast_to。它用于检测 3D 空间,以便找到沿光线路径最近的对象。

RayCast 可以忽略某些对象,方法是通过 add_exception 将它们添加到例外列表中,或者通过使用碰撞层和掩码设置,进行适当的过滤。

RayCast 可以配置为报告与 Area(collide_with_areas) 和/或 PhysicsBody(collide_with_bodies) 的碰撞。

只有启用的光线投射才能检测空间并报告碰撞。

RayCast 计算每个物理帧的交集(参阅 Node),并将结果缓存起来,以便稍后使用,直到下一帧。如果物理帧之间(或同一帧期间)需要多次检测,请在调整光线投射后使用force_raycast_update

教程

属性

Vector3

cast_to

Vector3( 0, -1, 0 )

bool

collide_with_areas

false

bool

collide_with_bodies

true

int

collision_mask

1

Color

debug_shape_custom_color

Color( 0, 0, 0, 1 )

float

debug_shape_thickness

2.0

bool

enabled

false

bool

exclude_parent

true

方法

void

add_exception ( Object node )

void

add_exception_rid ( RID rid )

void

clear_exceptions ( )

void

force_raycast_update ( )

Object

get_collider ( ) const

int

get_collider_shape ( ) const

bool

get_collision_mask_bit ( int bit ) const

Vector3

get_collision_normal ( ) const

Vector3

get_collision_point ( ) const

bool

is_colliding ( ) const

void

remove_exception ( Object node )

void

remove_exception_rid ( RID rid )

void

set_collision_mask_bit ( int bit, bool value )

属性说明

Default

Vector3( 0, -1, 0 )

Setter

set_cast_to(value)

Getter

get_cast_to()

光线相对于光线投射的 position的目标点,。


  • bool collide_with_areas

Default

false

Setter

set_collide_with_areas(value)

Getter

is_collide_with_areas_enabled()

如果 true,将反馈与 Area 的碰撞。


  • bool collide_with_bodies

Default

true

Setter

set_collide_with_bodies(value)

Getter

is_collide_with_bodies_enabled()

如果 true,将反馈与 PhysicsBody 的碰撞。


  • int collision_mask

Default

1

Setter

set_collision_mask(value)

Getter

get_collision_mask()

The ray’s collision mask. Only objects in at least one collision layer enabled in the mask will be detected. See Collision layers and masks in the documentation for more information.


  • Color debug_shape_custom_color

Default

Color( 0, 0, 0, 1 )

Setter

set_debug_shape_custom_color(value)

Getter

get_debug_shape_custom_color()

如果在 Debug 菜单中启用了可见碰撞形状 Visible Collision Shapes,则可用于在编辑器中和运行时绘制形状的自定义颜色。如果 RayCast 与某物体发生碰撞,此颜色将在运行时突出显示。

如果设置为 Color(0.0, 0.0, 0.0)(默认),则使用 ProjectSettings.debug/shapes/collision/shape_color 中设置的颜色。


  • float debug_shape_thickness

Default

2.0

Setter

set_debug_shape_thickness(value)

Getter

get_debug_shape_thickness()

如果设置为 1,则将一条线用作调试形状。否则,将绘制一个截断的金字塔来表示 RayCast。需要在 调试 菜单中启用可见碰撞形状 Visible Collision Shapes,以便调试形状在运行时可见。


Default

false

Setter

set_enabled(value)

Getter

is_enabled()

如果 true,将报告碰撞。


  • bool exclude_parent

Default

true

Setter

set_exclude_parent_body(value)

Getter

get_exclude_parent_body()

如果 true,则此 RayCast 的直接父级的碰撞将被忽略。

方法说明

  • void add_exception ( Object node )

添加碰撞例外,这样射线就不会报告与指定节点的碰撞情况。


  • void add_exception_rid ( RID rid )

添加碰撞例外,这样射线就不会报告与指定 RID 的碰撞。


  • void clear_exceptions ( )

删除此射线的所有碰撞例外。


  • void force_raycast_update ( )

更新射线的碰撞信息。

使用此方法立即更新碰撞信息,而不是等待下一个 _physics_process 调用,例如,如果光线或其父级已更改状态。

注意: enabled不需要此功能。


  • Object get_collider ( ) const

返回射线相交的第一个对象,如果没有对象与射线相交,则返回 null(即 is_colliding 返回 false)。


  • int get_collider_shape ( ) const

返回射线相交的第一个对象的形状 ID,如果没有对象与射线相交,则返回 0(即 is_colliding 返回 false)。


  • bool get_collision_mask_bit ( int bit ) const

如果通过的位索引被打开,则返回true

注意: 位指数范围为0-19。


  • Vector3 get_collision_normal ( ) const

返回碰撞点相交物体形状的法线。


  • Vector3 get_collision_point ( ) const

返回射线与最近的物体相交的碰撞点。

注意:这个点是在全局坐标系中。


  • bool is_colliding ( ) const

返回是否有任何对象与射线的向量相交(考虑向量长度)。


  • void remove_exception ( Object node )

移除碰撞例外,这样射线就会报告与指定节点的碰撞。


  • void remove_exception_rid ( RID rid )

移除碰撞例外,这样射线就会报告与指定的 RID 的碰撞。


  • void set_collision_mask_bit ( int bit, bool value )

将传递的位索引设置为传递的

注意: 位索引的范围是0-19。