PhysicsDirectSpaceState
Inherits: Object
直接访问PhysicsServer中空间的对象。
描述
直接访问PhysicsServer中空间的对象。它主要用于对驻留在特定空间的对象和区域进行查询。
教程
方法
cast_motion ( PhysicsShapeQueryParameters shape, Vector3 motion ) | |
collide_shape ( PhysicsShapeQueryParameters shape, int max_results=32 ) | |
get_rest_info ( PhysicsShapeQueryParameters shape ) | |
intersect_point ( Vector3 point, int max_results=32, Array exclude=[ ], int collision_layer=2147483647, bool collide_with_bodies=true, bool collide_with_areas=false ) | |
intersect_ray ( Vector3 from, Vector3 to, Array exclude=[ ], int collision_mask=2147483647, bool collide_with_bodies=true, bool collide_with_areas=false ) | |
intersect_shape ( PhysicsShapeQueryParameters shape, int max_results=32 ) |
方法说明
- Array cast_motion ( PhysicsShapeQueryParameters shape, Vector3 motion )
检查 Shape 可以移动多远而不会发生碰撞。查询的所有参数,包括形状,都是通过 PhysicsShapeQueryParameters 对象提供的。
返回一个包含运动的安全和不安全比例(0 到 1 之间)的数组。安全比例是在没有碰撞的情况下可以进行的运动的最大比例。不安全比例是碰撞必须移动的距离的最小部分。如果未检测到碰撞,将返回 [1.0, 1.0]
的结果。
注意: 任何已经碰撞的Shape2D(比如内部的)会被忽略。使用 collide_shape 确定形状已经碰撞的 Shape。
- Array collide_shape ( PhysicsShapeQueryParameters shape, int max_results=32 )
通过PhysicsShapeQueryParameters对象给出的形状与空间检查交点。结果数组包含一个形状与另一个形状相交的点的列表。与intersect_shape一样,可以限制返回结果的数量,以节省处理时间。
- Dictionary get_rest_info ( PhysicsShapeQueryParameters 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
位掩码表示要检查的物理层,或者布尔值来确定射线是否应该分别与 PhysicsBody 或 Area 发生碰撞。
- Dictionary intersect_ray ( Vector3 from, Vector3 to, Array exclude=[ ], int collision_mask=2147483647, bool collide_with_bodies=true, bool collide_with_areas=false )
在给定的空间中与一条射线相交。返回的对象是具有下列字段的字典:
collider
:碰撞的对象。
collider_id
:碰撞对象的ID。
normal
:物体在相交点的表面法线。
position
:交叉点。
rid
:相交物体的RID。
形状
:碰撞形状的形状索引。
如果射线没有与任何物体相交,那么将返回空的字典。
此外,该方法可以接受一个exclude
对象或RID数组,该数组将被排除在碰撞之外,collision_mask
位掩码表示要检查的物理层,或者布尔值来确定射线是否应该分别与PhysicsBody或Area发生碰撞。
- Array intersect_shape ( PhysicsShapeQueryParameters shape, int max_results=32 )
通过PhysicsShapeQueryParameters对象给出的形状与空间检查交点。相交的形状会以数组的形式返回,该数组包含有以下字段的字典:
collider
:碰撞的对象。
collider_id
:碰撞对象的ID。
rid
:相交物体的RID。
shape
:碰撞形状的形状索引。
可以用max_results
参数限制相交的数量,以减少处理时间。