SoftBody¶
Inherits: MeshInstance < GeometryInstance < VisualInstance < CullInstance < Spatial < Node < Object
A soft mesh physics body.
Description¶
A deformable physics body. Used to create elastic or deformable objects such as cloth, rubber, or other flexible materials.
Note: There are many known bugs in SoftBody. Therefore, it's not recommended to use them for things that can affect gameplay (such as a player character made entirely out of soft bodies).
Tutorials¶
Properties¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Methods¶
void |
add_collision_exception_with ( Node body ) |
get_collision_layer_bit ( int bit ) const |
|
get_collision_mask_bit ( int bit ) const |
|
get_point_transform ( int point_index ) |
|
is_point_pinned ( int point_index ) const |
|
void |
remove_collision_exception_with ( Node body ) |
void |
set_collision_layer_bit ( int bit, bool value ) |
void |
set_collision_mask_bit ( int bit, bool value ) |
void |
set_point_pinned ( int point_index, bool pinned, NodePath attachment_path=NodePath("") ) |
Property Descriptions¶
float areaAngular_stiffness = 0.5
There is currently no description for this property. Please help us by contributing one!
int collision_layer = 1
The physics layers this SoftBody is in.
Collidable objects can exist in any of 32 different layers. These layers work like a tagging system, and are not visual. A collidable can use these layers to select with which objects it can collide, using the collision_mask property.
A contact is detected if object A is in any of the layers that object B scans, or object B is in any layer scanned by object A. See Collision layers and masks in the documentation for more information.
int collision_mask = 1
The physics layers this SoftBody scans for collisions. See Collision layers and masks in the documentation for more information.
float damping_coefficient = 0.01
There is currently no description for this property. Please help us by contributing one!
float drag_coefficient = 0.0
There is currently no description for this property. Please help us by contributing one!
float linear_stiffness = 0.5
There is currently no description for this property. Please help us by contributing one!
NodePath parent_collision_ignore = NodePath("")
NodePath to a CollisionObject this SoftBody should avoid clipping.
bool physics_enabled = true
If true
, the SoftBody is simulated in physics. Can be set to false
to pause the physics simulation.
float pose_matching_coefficient = 0.0
There is currently no description for this property. Please help us by contributing one!
float pressure_coefficient = 0.0
There is currently no description for this property. Please help us by contributing one!
bool ray_pickable = true
If true
, the SoftBody will respond to RayCasts.
int simulation_precision = 5
Increasing this value will improve the resulting simulation, but can affect performance. Use with care.
float total_mass = 1.0
The SoftBody's mass.
float volume_stiffness = 0.5
There is currently no description for this property. Please help us by contributing one!
Method Descriptions¶
void add_collision_exception_with ( Node body )
Adds a body to the list of bodies that this body can't collide with.
Array get_collision_exceptions ( )
Returns an array of nodes that were added as collision exceptions for this body.
bool get_collision_layer_bit ( int bit ) const
Returns an individual bit on the collision mask.
bool get_collision_mask_bit ( int bit ) const
Returns an individual bit on the collision mask.
Vector3 get_point_transform ( int point_index )
Returns local translation of a vertex in the surface array.
bool is_point_pinned ( int point_index ) const
Returns true
if vertex is set to pinned.
void remove_collision_exception_with ( Node body )
Removes a body from the list of bodies that this body can't collide with.
void set_collision_layer_bit ( int bit, bool value )
Sets individual bits on the layer mask. Use this if you only need to change one layer's value.
void set_collision_mask_bit ( int bit, bool value )
Sets individual bits on the collision mask. Use this if you only need to change one layer's value.
void set_point_pinned ( int point_index, bool pinned, NodePath attachment_path=NodePath("") )
Sets the pinned state of a surface vertex. When set to true
, the optional attachment_path
can define a Spatial the pinned vertex will be attached to.