PhysicsDirectSpaceState

Inherits: Object

直接访问PhysicsServer中空间的对象。

描述

直接访问PhysicsServer中空间的对象。它主要用于对驻留在特定空间的对象和区域进行查询。

教程

方法

Array

cast_motion ( PhysicsShapeQueryParameters shape, Vector3 motion )

Array

collide_shape ( PhysicsShapeQueryParameters shape, int max_results=32 )

Dictionary

get_rest_info ( PhysicsShapeQueryParameters shape )

Array

intersect_point ( Vector3 point, int max_results=32, Array exclude=[ ], int collision_layer=2147483647, bool collide_with_bodies=true, bool collide_with_areas=false )

Dictionary

intersect_ray ( Vector3 from, Vector3 to, Array exclude=[ ], int collision_mask=2147483647, bool collide_with_bodies=true, bool collide_with_areas=false )

Array

intersect_shape ( PhysicsShapeQueryParameters shape, int max_results=32 )

方法说明

检查 Shape 可以移动多远而不会发生碰撞。查询的所有参数,包括形状,都是通过 PhysicsShapeQueryParameters 对象提供的。

返回一个包含运动的安全和不安全比例(0 到 1 之间)的数组。安全比例是在没有碰撞的情况下可以进行的运动的最大比例。不安全比例是碰撞必须移动的距离的最小部分。如果未检测到碰撞,将返回 [1.0, 1.0] 的结果。

注意: 任何已经碰撞的Shape2D(比如内部的)会被忽略。使用 collide_shape 确定形状已经碰撞的 Shape


通过PhysicsShapeQueryParameters对象给出的形状与空间检查交点。结果数组包含一个形状与另一个形状相交的点的列表。与intersect_shape一样,可以限制返回结果的数量,以节省处理时间。


检查通过PhysicsShapeQueryParameters对象给出的形状与空间的交点。如果它与一个以上的形状发生碰撞,则选择最近的。返回的对象是包含以下字段的字典:

collider_id:碰撞对象的ID。

linear_velocity:碰撞对象的速度Vector3。如果对象是一个Area,结果是(0, 0, 0)

normal:物体在交点处的表面法线。

:相交点。

rid:相交物体的RID

shape:碰撞形状的形状索引。

如果该形状没有与任何物体相交,那么将返回空的字典。


  • Array intersect_point ( Vector3 point, int max_results=32, Array exclude=[ ], int collision_layer=2147483647, bool collide_with_bodies=true, bool collide_with_areas=false )

检查一个点是否位于任何实体形状内。该点所在的形状会以字典数组的形式返回,字典包含以下字段:

collider:碰撞的对象。

collider_id:碰撞对象的 ID。

rid:相交物体的 RID

shape:碰撞形状的形状索引。

为了减少处理时间,可以通过 max_results 参数限制相交数量。

此外,该方法可以接受一个 exclude 对象或 RID 数组,该数组将被排除在碰撞之外,collision_mask 位掩码表示要检查的物理层,或者布尔值来确定射线是否应该分别与 PhysicsBodyArea 发生碰撞。


在给定的空间中与一条射线相交。返回的对象是具有下列字段的字典:

collider:碰撞的对象。

collider_id:碰撞对象的ID。

normal:物体在相交点的表面法线。

position:交叉点。

rid:相交物体的RID

形状:碰撞形状的形状索引。

如果射线没有与任何物体相交,那么将返回空的字典。

此外,该方法可以接受一个exclude对象或RID数组,该数组将被排除在碰撞之外,collision_mask位掩码表示要检查的物理层,或者布尔值来确定射线是否应该分别与PhysicsBodyArea发生碰撞。


通过PhysicsShapeQueryParameters对象给出的形状与空间检查交点。相交的形状会以数组的形式返回,该数组包含有以下字段的字典:

collider:碰撞的对象。

collider_id:碰撞对象的ID。

rid:相交物体的RID

shape:碰撞形状的形状索引。

可以用max_results参数限制相交的数量,以减少处理时间。