SoftBody3D
继承: MeshInstance3D < GeometryInstance3D < VisualInstance3D < Node3D < Node < Object
可形变的 3D 物理网格。
描述
可形变的 3D 物理网格。用于创建弹性或可形变的对象,例如布料、橡胶或其他柔性材质。
此外,SoftBody3D 受 Area3D 中定义的风力影响(参见 Area3D.wind_source_path、Area3D.wind_force_magnitude 和 Area3D.wind_attenuation_factor)。
注意:SoftBody3D 中有许多已知的问题。因此,不建议用于可能影响游戏玩法的东西上(例如蹦床)。
教程
属性
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
方法
void |
add_collision_exception_with(body: Node) |
get_collision_layer_value(layer_number: int) const |
|
get_collision_mask_value(layer_number: int) const |
|
get_physics_rid() const |
|
get_point_transform(point_index: int) |
|
is_point_pinned(point_index: int) const |
|
void |
|
void |
set_collision_layer_value(layer_number: int, value: bool) |
void |
set_collision_mask_value(layer_number: int, value: bool) |
void |
set_point_pinned(point_index: int, pinned: bool, attachment_path: NodePath = NodePath(""), insert_at: int = -1) |
枚举
enum DisableMode: 🔗
DisableMode DISABLE_MODE_REMOVE = 0
当 Node.process_mode 被设置为 Node.PROCESS_MODE_DISABLED 时,从物理仿真中移除,停止与此 SoftBody3D 的所有物理交互。
当该 Node 再次被处理时,会自动重新加入到物理仿真中。
DisableMode DISABLE_MODE_KEEP_ACTIVE = 1
当 Node.process_mode 被设置为 Node.PROCESS_MODE_DISABLED 时,不影响物理仿真。
属性说明
该 SoftBody3D 所在的物理层。碰撞对象可以存在于 32 个不同层中的一个或多个层中。另见 collision_mask。
注意:只有当对象 B 位于对象 A 扫描的任意层中时,对象 A 才能检测到与对象 B 的接触。有关更多信息,请参阅文档中的《碰撞层与掩码》。
该 SoftBody3D 扫描的物理层。碰撞对象可以扫描 32 个不同层中的一个或多个层。另见 collision_layer。
注意:只有当对象 B 位于对象 A 扫描的任何层中时,对象 A 才能检测到与对象 B 的接触。有关更多信息,请参阅文档中的《碰撞层与掩码》。
float damping_coefficient = 0.01 🔗
物体的阻尼系数。当施加力时,较高的值会更明显地减慢物体的速度。
DisableMode disable_mode = 0 🔗
void set_disable_mode(value: DisableMode)
DisableMode get_disable_mode()
定义 Node.process_mode 为 Node.PROCESS_MODE_DISABLED 时的物理行为。不同模式详见 DisableMode。
float drag_coefficient = 0.0 🔗
物体的阻力系数。较高的值会增加该物体的空气阻力。
注意:Godot 的默认物理实现当前未使用该值。
float linear_stiffness = 0.5 🔗
值越大得到的物体约坚硬,较低的值会提高物体的弯曲能力。取值范围为 0.0 到 1.0 之间(含端点)。
NodePath parent_collision_ignore = NodePath("") 🔗
指向 CollisionObject3D 的 NodePath,这个 SoftBody3D 应该避免穿过它。
float pressure_coefficient = 0.0 🔗
该软体的压力系数。模拟物体内部的压力积聚。较高的值会增加该效果的强度。
如果为 true,则该 SoftBody3D 会响应 RayCast3D。
int simulation_precision = 5 🔗
增加这个值会改善模拟结果,但会影响性能。请小心使用。
该 SoftBody3D 的质量。
方法说明
void add_collision_exception_with(body: Node) 🔗
将一个物体添加到这个物体不能碰撞的物体列表中。
Array[PhysicsBody3D] get_collision_exceptions() 🔗
返回该物体的碰撞例外节点数组。
bool get_collision_layer_value(layer_number: int) const 🔗
返回 collision_layer 中是否启用了指定的层,给定的 layer_number 应在 1 和 32 之间。
bool get_collision_mask_value(layer_number: int) const 🔗
返回 collision_mask 中是否启用了指定的层,给定的 layer_number 应在 1 和 32 之间。
返回 PhysicsServer3D 用于该实体的内部 RID。
Vector3 get_point_transform(point_index: int) 🔗
返回表面数组中顶点的局部平移。
bool is_point_pinned(point_index: int) const 🔗
如果顶点设置为固定,则返回 true。
void remove_collision_exception_with(body: Node) 🔗
将一个物体从该物体不能碰撞的物体列表中移除。
void set_collision_layer_value(layer_number: int, value: bool) 🔗
根据 value,启用或禁用 collision_layer 中指定的层,给定的 layer_number 应在 1 和 32 之间。
void set_collision_mask_value(layer_number: int, value: bool) 🔗
根据 value,启用或禁用 collision_mask 中指定的层,给定的 layer_number 应在 1 和 32 之间。
void set_point_pinned(point_index: int, pinned: bool, attachment_path: NodePath = NodePath(""), insert_at: int = -1) 🔗
设置表面顶点的固定状态。当设置为 true 时,可选的 attachment_path 可以定义一个 Node3D,该固定顶点将被附加到该节点。