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(“”)) |
枚举
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(“”)) 🔗
设置表面顶点的固定状态。当设置为 true
时,可选的 attachment_path
可以定义一个 Node3D,该固定顶点将被附加到该节点。