RayCast2D
继承
简要描述
查询与射线相交的最近对象。
描述
RayCast代表一条从其起点到其目的地位置的直线,即cast_to
。它用于查询2D空间,以便沿着射线路径找到最接近的对象。
通过add_exception
将它们添加到例外列表中,通过使用碰撞层设置适当的过滤或通过类型掩码过滤对象类型,RayCast2D可以忽略某些对象。
可以将RayCast2D配置为反馈与Area2D(collide_with_areas)和/或PhysicsBody2D(collide_with_bodies)的碰撞。
只有启用的raycast2D才能查询并反馈碰撞。
RayCast2D在每个物理帧中计算相交(请参见Node),并将结果缓存起来,以便到下一帧之后可以使用。如果在物理框架之间(或在同一框架期间)需要多个查询,请在调整射线投射后使用force_raycast_update。
成员
类型 | 属性名 | 默认值 |
---|---|---|
Vector2 | cast_to | Vector2( 0, 50 ) |
bool | collide_with_areas | false |
bool | collide_with_bodies | true |
int | collision_mask | 1 |
bool | enabled | false |
bool | exclude_parent | true |
方法
返回值类型 | 方法名称 |
---|---|
void | add_exception(node: Object) |
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(bit: int) const |
Vector2 | get_collision_normal() const |
Vector2 | get_collision_point() const |
bool | is_colliding() const |
void | remove_exception(node: Object) |
void | remove_exception_rid(rid: RID) |
void | set_collision_mask_bit(bit: int, value: bool) |
常量
成员说明
- Vector2 cast_to
Default | Vector2( 0, 50 ) |
---|---|
setter | set_cast_to(value) |
getter | get_cast_to |
- bool collide_with_areas
Default | false |
---|---|
setter | set_collide_with_areas(value) |
getter | is_collide_with_areas_enabled |
- bool collide_with_bodies
Default | true |
---|---|
setter | set_collide_with_bodies(value) |
getter | is_collide_with_bodies_enabled |
- int collision_mask
Default | 1 |
---|---|
setter | set_collision_mask(value) |
getter | get_collision_mask |
- bool enabled
Default | false |
---|---|
setter | set_enabled(value) |
getter | is_enabled |
- bool exclude_parent
Default | true |
---|---|
setter | set_exclude_parent_body(value) |
getter | get_exclude_parent_body |
方法说明
- add_exception add_exception(node: Object)
添加碰撞异常,因此光线不会反馈与指定节点的碰撞。
- add_exception_rid add_exception_rid(rid: RID)
添加碰撞异常,因此射线不会反馈与指定的RID碰撞。
- clear_exceptions clear_exceptions()
删除此射线的所有碰撞例外。
- force_raycast_update force_raycast_update()
更新射线的碰撞信息。使用此方法可立即更新碰撞信息,而不是等待下一个_physics_process
调用,例如,如果射线或其父级的状态已更改。
注意: enabled == true
不需要此功能。
- get_collider get_collider() const
返回光线相交的第一个对象,如果没有对象与光线相交,则返回null
(即is_colliding返回false
)。
- get_collider_shape get_collider_shape() const
返回光线相交的第一个对象的形状ID,如果没有对象与光线相交,则返回0
(即is_colliding返回false
)。
- get_collision_mask_bit get_collision_mask_bit(bit: int) const
返回碰撞掩码上的单个位。
- get_collision_normal get_collision_normal() const
返回相交对象在碰撞点处的形状的法线。
- get_collision_point get_collision_point() const
返回光线与最近的对象相交的碰撞点。
注意:这一点在全局坐标系中。
- is_colliding is_colliding() const
返回是否有任何对象与射线的矢量相交(考虑矢量长度)。
- remove_exception remove_exception(node: Object)
移除碰撞异常,以便射线确实反馈与指定节点的碰撞。
- remove_exception_rid remove_exception_rid(rid: RID)
移除碰撞异常,以便射线确实反馈与指定的RID碰撞。
- set_collision_mask_bit set_collision_mask_bit(bit: int, value: bool)
设置或清除碰撞掩码上的各个位。