RayCast
继承
简要描述
查询与射线相交的最近对象。
描述
RayCast代表一条从其起点到其目的地位置的直线,即cast_to
。它用于查询3D空间,以便沿着射线路径找到最近的对象。
RayCast可以通过add_exception
将某些对象添加到例外列表中,或者通过使用碰撞层和掩码设置适当的过滤来忽略某些对象。
可以将RayCast配置为反馈与Area(collide_with_areas)和/或PhysicsBody(collide_with_bodies)的碰撞。
只有启用的RayCast才能查询并反馈碰撞。
RayCast在每个物理帧中计算相交点(请参见Node),并将结果缓存起来,以便到下一帧之后可以使用。
成员
类型 | 属性名 | 默认值 |
---|---|---|
Vector3 | cast_to | Vector3( 0, -1, 0 ) |
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 |
Vector3 | get_collision_normal() const |
Vector3 | 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) |
常量
成员说明
- Vector3 cast_to
Default | Vector3( 0, -1, 0 ) |
---|---|
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
调用,例如,如果射线或其父级的状态已更改。
注意:启用== 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
如果所传递的位索引已打开,则返回true
。
注意:位索引的范围是0-19。
- 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)
移除碰撞异常,以便ray确实反馈与指定节点的碰撞。
- remove_exception_rid remove_exception_rid(rid: RID)
移除碰撞异常,以便射线确实反馈与指定的RID碰撞。
- set_collision_mask_bit set_collision_mask_bit(bit: int, value: bool)
设置传递给value
的位索引。
注意:位索引的范围是0-19。