Area
Inherits: CollisionObject < Spatial < Node < Object
用于检测和物理及音频影响的3D区域。
描述
检测CollisionObject节点重叠、进入或退出的3D区域。还可以改变或覆盖局部物理参数(重力、阻尼),并将音频路由到自定义音频总线。
教程
属性
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|
方法
get_overlapping_areas ( ) const | |
get_overlapping_bodies ( ) const | |
overlaps_area ( Node area ) const | |
overlaps_body ( Node body ) const |
信号
- area_entered ( Area area )
当另一个 Area 进入这个 Area 时触发。需要将监控 monitoring 设置为 true
。
area
参数是另外一个 Area。
- area_exited ( Area area )
当另一个区域退出这个区域时发出的。要求监控monitoring被设置为true
。
area
参数是另外一个Area。
当另一个区域的一个Shape进入这个区域的一个Shape时发出的。要求monitoring 被设置为true
。
area_rid
PhysicsServer使用的其他区域的CollisionObject的RID。
area
其他区域。
area_shape_index
PhysicsServer使用的其他区域的Shape的索引。用area.shape_owner_get_owner(area_shape_index)
获得CollisionShape节点。
local_shape_index
是PhysicsServer使用的该区域的Shape的索引。用self.shape_owner_get_owner(local_shape_index)
获得CollisionShape节点。
当另一个区域的一个Shape进入这个区域的一个Shape时发出的。要求monitoring 被设置为true
。
area_rid
PhysicsServer使用的其他区域的CollisionObject的RID。
area
其他区域。
area_shape_index
PhysicsServer使用的其他区域的Shape的索引。用area.shape_owner_get_owner(area_shape_index)
获得CollisionShape节点。
local_shape_index
是PhysicsServer使用的该区域的Shape的索引。用self.shape_owner_get_owner(local_shape_index)
获得CollisionShape节点。
- body_entered ( Node body )
当PhysicsBody或GridMap进入这个区域时发出的。需要将监控monitoring设置为true
。如果MeshLibrary有碰撞形状Shape,就会检测到GridMap。
body
, 如果它存在于场景树中, 是另一个PhysicsBody或GridMap节点Node。
- body_exited ( Node body )
当PhysicsBody或GridMap离开这个Area时发出的。需要将监控monitoring设置为true
。如果MeshLibrary有碰撞形状Shape,就会检测到GridMap。
body
, 如果它存在于场景树中, 是其他PhysicsBody或GridMap的Node。
当PhysicsBody或GridMap的一个Shape进入这个区域的一个Shape时触发。需要将monitoring设置为true
。如果MeshLibrary有碰撞Shape,就会检测到GridMap。
body_rid
PhysicsServer使用的PhysicsBody或MeshLibrary的CollisionObject的RID。
body
PhysicsBody或GridMap的Node,如果它存在于树中的话。
body_shape_index
PhysicsServer使用的PhysicsBody或GridMap的Shape的索引。用body.shape_owner_get_owner(body_shape_index)
获取CollisionShape节点。
local_shape_index
这个区域的Shape的索引,由PhysicsServer使用。用self.shape_owner_get_owner(local_shape_index)
获得CollisionShape节点。
当PhysicsBody或GridMap的一个Shape进入这个区域的一个Shape时触发。需要将monitoring设置为true
。如果MeshLibrary有碰撞Shape,就会检测到GridMap。
body_rid
PhysicsServer使用的PhysicsBody或MeshLibrary的CollisionObject的RID。
body
PhysicsBody或GridMap的Node,如果它存在于树中的话。
body_shape_index
PhysicsServer使用的PhysicsBody或GridMap的Shape的索引。用body.shape_owner_get_owner(body_shape_index)
获取CollisionShape节点。
local_shape_index
这个区域的Shape的索引,由PhysicsServer使用。用self.shape_owner_get_owner(local_shape_index)
获得CollisionShape节点。
枚举
enum SpaceOverride:
SPACE_OVERRIDE_DISABLED = 0 —- 这个区域不影响重力/阻尼。
SPACE_OVERRIDE_COMBINE = 1 —- 该区域将其重力/阻尼值加到迄今为止计算出的任何值上(按 priority 排序)。
SPACE_OVERRIDE_COMBINE_REPLACE = 2 —- 该区域将其重力/阻尼值添加到到目前为止已计算的任何内容(按 priority 顺序),而忽略任何较低优先级的区域。
SPACE_OVERRIDE_REPLACE = 3 —- 该区域将替换所有重力/阻尼,甚至是默认值,而忽略任何较低优先级的区域。
SPACE_OVERRIDE_REPLACE_COMBINE = 4 —- 这个区域取代了到目前为止计算出的任何重力/阻尼(按 priority 顺序),但继续计算其余的区域。
属性说明
- float angular_damp
Default |
|
Setter | set_angular_damp(value) |
Getter | get_angular_damp() |
物体在此区域停止旋转的速度。代表每秒损失的角速度.
关于阻尼的更多细节,见ProjectSettings.physics/3d/default_angular_damp。
- String audio_bus_name
Default |
|
Setter | set_audio_bus(value) |
Getter | get_audio_bus() |
该区域音频总线的名称。
- bool audio_bus_override
Default |
|
Setter | set_audio_bus_override(value) |
Getter | is_overriding_audio_bus() |
为 true
时该区域的音频总线将覆盖默认的音频总线。
- float gravity
Default |
|
Setter | set_gravity(value) |
Getter | get_gravity() |
该区域内的重力强度(单位:m/s^2)。这个值是重力向量的倍数。这个量在改变引力大小而不改变其方向很有用。
- float gravity_distance_scale
Default |
|
Setter | set_gravity_distance_scale(value) |
Getter | get_gravity_distance_scale() |
点重力的衰减系数。该值越大,重力值随距离下降的速度就越快。
- bool gravity_point
Default |
|
Setter | set_gravity_is_point(value) |
Getter | is_gravity_a_point() |
如果 true
,则从一个点计算重力(通过 gravity_vec 设置)。参阅 space_override。
- Vector3 gravity_vec
Default |
|
Setter | set_gravity_vector(value) |
Getter | get_gravity_vector() |
区域的未归一化的重力向量。如果重力作用在一个点上,则它将是引力点。请参阅 gravity_point。
- float linear_damp
Default |
|
Setter | set_linear_damp(value) |
Getter | get_linear_damp() |
物体在此区域减速的速率。代表每秒损失的线速度。
关于阻尼的更多细节,见ProjectSettings.physics/3d/default_linear_damp。
- bool monitorable
Default |
|
Setter | set_monitorable(value) |
Getter | is_monitorable() |
为 true
时其他监测区域可以检测到这个区域。
- bool monitoring
Default |
|
Setter | set_monitoring(value) |
Getter | is_monitoring() |
为 true
时该区域能够检测到进入和退出该区域的实体或区域。
- float priority
Default |
|
Setter | set_priority(value) |
Getter | get_priority() |
该区域的优先级。将优先处理优先级较高的区域。
- float reverb_bus_amount
Default |
|
Setter | set_reverb_amount(value) |
Getter | get_reverb_amount() |
该区域对其相关音频应用混响的程度。范围从 0
到 1
,精度为 0.1
。
- bool reverb_bus_enable
Default |
|
Setter | set_use_reverb_bus(value) |
Getter | is_using_reverb_bus() |
为 true
时该区域会将混响应用于其相关音频。
- String reverb_bus_name
Default |
|
Setter | set_reverb_bus(value) |
Getter | get_reverb_bus() |
该区域的相关音频要使用的混响总线名称。
- float reverb_bus_uniformity
Default |
|
Setter | set_reverb_uniformity(value) |
Getter | get_reverb_uniformity() |
该区域的混响效果均匀的程度。范围从 0
到 1
,精度为 0.1
。
- SpaceOverride space_override
Default |
|
Setter | set_space_override_mode(value) |
Getter | get_space_override_mode() |
该区域内重力和阻尼计算的覆盖模式。可能的值见SpaceOverride。
方法说明
- Array get_overlapping_areas ( ) const
返回相交的Area
的列表。重叠区域的CollisionObject.collision_layer必须是这个区域CollisionObject.collision_mask的一部分,这样才能被检测到。
出于性能的考虑,因碰撞都是同时处理的,这个列表在物理步骤中只修改一次,而不是在物体被移动后立即修改。考虑使用信号来代替。
- Array get_overlapping_bodies ( ) const
返回相交的PhysicsBody的列表。重叠物体的CollisionObject.collision_layer必须是这个区域CollisionObject.collision_mask的一部分,这样才能被检测到。
出于性能的考虑,因碰撞都是同时处理的,这个列表在物理步骤中只修改一次,而不是在物体被移动后立即修改。考虑使用信号来代替。
如果 true
,则给定区域与该区域重叠.
注意:在移动物体后,这个测试的结果不是即时的。为了性能,重叠列表在每一帧和物理步骤之前更新一次。可以考虑用信号代替。
如果为true
,则给定的物理体与该区域重叠.
注意:在移动物体后,这个测试的结果不是即时的。为了提高性能,重叠列表在每一帧和物理步骤之前更新一次。可以考虑使用信号来代替。
body
参数可以是一个PhysicsBody或一个GridMap实例(虽然GridMaps本身不是物理体,但它们用碰撞形状注册它们的瓦片(tiles)作为一个虚拟物理体)。