PhysicsDirectSpaceState3D¶
继承: Object
派生: PhysicsDirectSpaceState3DExtension
提供对PhysicsServer3D中物理空间的直接访问。
描述¶
提供对PhysicsServer3D中物理空间的直接访问。它主要用于对驻留在给定空间中的对象和区域进行查询。
方法¶
cast_motion(parameters: PhysicsShapeQueryParameters3D) |
|
collide_shape(parameters: PhysicsShapeQueryParameters3D, max_results: int = 32) |
|
get_rest_info(parameters: PhysicsShapeQueryParameters3D) |
|
intersect_point(parameters: PhysicsPointQueryParameters3D, max_results: int = 32) |
|
intersect_ray(parameters: PhysicsRayQueryParameters3D) |
|
intersect_shape(parameters: PhysicsShapeQueryParameters3D, max_results: int = 32) |
方法说明¶
PackedFloat32Array cast_motion(parameters: PhysicsShapeQueryParameters3D) 🔗
检查Shape3D可以在不发生碰撞的情况下移动多远。查询的所有参数(包括形状)都通过PhysicsShapeQueryParameters3D对象提供。
返回运动的安全和不安全比例(介于0和1之间)的数组。安全比例是在不发生碰撞的情况下可以进行的运动的最大分数。不安全比例是碰撞必须移动的距离的最小分数。如果没有检测到碰撞,将返回[1.0,1.0]的结果。
注意:任何形状已经与之碰撞的Shape3Ds,例如在里面,将被忽略。使用collide_shape()来确定形状已经与之碰撞的Shape3Ds。
Array[Vector3] collide_shape(parameters: PhysicsShapeQueryParameters3D, max_results: int = 32) 🔗
根据空间检查通过PhysicsShapeQueryParameters3D对象给出的形状的交点。结果数组包含该形状与另一个形状相交的点列表。与intersect_shape()一样,可以限制返回结果的数量以节省流转时长。
返回点是接触点对的列表。对于每对,第一个是传入PhysicsShapeQueryParameters3D对象的形状,第二个是物理空间中的碰撞形状。
注意:此方法不考虑对象的运动属性。
Dictionary get_rest_info(parameters: PhysicsShapeQueryParameters3D) 🔗
根据空格检查通过PhysicsShapeQueryParameters3D对象给出的形状的交点。如果它与多个形状冲突,则选择最近的一个。返回的对象是包含以下字段的字典:
collider_id:碰撞对象的ID。
linear_velocity:碰撞物体的速度Vector3。如果对象是AreaTrigger,则结果为(0,0,0)。
法线:查询形状在交叉点的碰撞法线,指向远离相交对象。
point:交叉点。
rid:相交对象的RID。
形状:碰撞形状的形状索引。
如果形状没有与任何东西相交,则返回一个空字典。
注意:此方法不考虑对象的运动属性。
Array[Dictionary] intersect_point(parameters: PhysicsPointQueryParameters3D, max_results: int = 32) 🔗
检查一个点是否在任何实体形状内。位置和其他参数通过PhysicsPointQueryParameters3D定义。点在其中的形状在包含字典的数组中返回,字典包含以下字段:
碰撞器:碰撞对象。
collider_id:碰撞对象的ID。
rid:相交对象的RID。
形状:碰撞形状的形状索引。
可以使用max_results限制交叉点的数量,以减少流转时长。
Dictionary intersect_ray(parameters: PhysicsRayQueryParameters3D) 🔗
与给定空间中的光线相交。光线位置和其他参数通过PhysicsRayQueryParameters3D定义。返回的对象是具有以下字段的字典:
碰撞器:碰撞对象。
collider_id:碰撞对象的ID。
法线:物体在交叉点的表面法线,或者Vector3(0,0,0)如果光线从形状内部开始并且PhysicsRayQueryParameters3D.hit_from_inside是true。
位置:交叉点。
face_index:交叉点的面索引。
注意:仅当相交形状为ConcavePolygonShape3D时才返回有效数字。否则返回-1。
rid:相交对象的RID。
形状:碰撞形状的形状索引。
如果射线没有与任何东西相交,则返回一个空字典。
Array[Dictionary] intersect_shape(parameters: PhysicsShapeQueryParameters3D, max_results: int = 32) 🔗
根据空格检查通过PhysicsShapeQueryParameters3D对象给出的形状的交点。相交的形状在包含以下字段的字典的数组中返回:
碰撞器:碰撞对象。
collider_id:碰撞对象的ID。
rid:相交对象的RID。
形状:碰撞形状的形状索引。
可以使用max_results限制交叉点的数量,以减少流转时长。
注意:此方法不考虑对象的运动属性。