SoftBulk

继承: MeshRender < GeometryRender < VisualRender < Item3D < Item < Object

可变形的3D物理网格。

描述

可变形的三维物理网格。用于创建弹性或可变形的物体,如布、橡胶或其他柔性材质。

此外,SoftBulk受到AreaTrigger中定义的风力的影响(参见AreaTrigger.wind_source_pathAreaTrigger.wind_force_magnitudeAreaTrigger.wind_attenuation_factor)。

注意:SoftBulk中存在许多已知错误。因此,不建议将它们用于可能影响应用性的事物(例如蹦床)。

属性

方法

void

add_collision_exception_with(body: Item)

Array[PhysicsBulkBase]

get_collision_exceptions()

bool

get_collision_layer_value(layer_number: int) const

bool

get_collision_mask_value(layer_number: int) const

RID

get_physics_rid() const

Vector3

get_point_transform(point_index: int)

bool

is_point_pinned(point_index: int) const

void

remove_collision_exception_with(body: Item)

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: ItemPath = ItemPath(""), insert_at: int = -1)


枚举

enum DisableMode: 🔗

DisableMode DISABLE_MODE_REMOVE = 0

Item.process_mode设置为Item.PROCESS_MODE_DISABLED时,从物理模拟中删除以停止与此SoftBulk的所有物理交互。

再次处理Item时自动重新添加到物理模拟中。

DisableMode DISABLE_MODE_KEEP_ACTIVE = 1

Item.process_mode设置为Item.PROCESS_MODE_DISABLED时,不影响物理模拟。


属性说明

int collision_layer = 1 🔗

  • void set_collision_layer(value: int)

  • int get_collision_layer()

SoftBulk中的物理层。碰撞对象可以存在于32个不同层中的一个或多个中。另见collision_mask

注意:只有当对象B位于对象A扫描的任何图层中时,对象A才能检测到与对象B的接触。有关详细信息,请参阅文档中的碰撞图层和掩码


int collision_mask = 1 🔗

  • void set_collision_mask(value: int)

  • int get_collision_mask()

SoftBulk扫描的物理层。碰撞对象可以扫描32个不同层中的一个或多个。另见collision_layer

注意:只有当对象B位于对象A扫描的任何图层中时,对象A才能检测到与对象B的接触。有关详细信息,请参阅文档中的碰撞图层和掩码


float damping_coefficient = 0.01 🔗

  • void set_damping_coefficient(value: float)

  • float get_damping_coefficient()

身体的阻尼系数。当施加力时,更高的值会更明显地减慢身体的速度。


DisableMode disable_mode = 0 🔗

定义Item.process_mode设置为Item.PROCESS_MODE_DISABLED时的物理行为。有关不同模式的更多详细信息,请参阅DisableMode


float drag_coefficient = 0.0 🔗

  • void set_drag_coefficient(value: float)

  • float get_drag_coefficient()

身体的阻力系数。更高的值会增加身体的空气阻力。

注意:i3D的默认物理实现当前未使用此值。


float linear_stiffness = 0.5 🔗

  • void set_linear_stiffness(value: float)

  • float get_linear_stiffness()

较高的值会导致身体更僵硬,而较低的值会增加身体的弯曲能力。该值可以在0.01.0(包括)之间。


ItemPath parent_collision_ignore = ItemPath("") 🔗

  • void set_parent_collision_ignore(value: ItemPath)

  • ItemPath get_parent_collision_ignore()

ItemPathColliderObjectBase这个SoftBody3D应该避免剪切。


float pressure_coefficient = 0.0 🔗

  • void set_pressure_coefficient(value: float)

  • float get_pressure_coefficient()

这个软体的压力系数。模拟这个身体内部的压力积累。更高的值会增加这种效果的强度。


bool ray_pickable = true 🔗

  • void set_ray_pickable(value: bool)

  • bool is_ray_pickable()

如果trueSoftBulk将响应RayCasts。


int simulation_precision = 5 🔗

  • void set_simulation_precision(value: int)

  • int get_simulation_precision()

增加此值将改善生成的模拟,但可能会影响性能。小心使用。


float total_mass = 1.0 🔗

  • void set_total_mass(value: float)

  • float get_total_mass()

SoftBody3D的质量。


方法说明

void add_collision_exception_with(body: Item) 🔗

将主体添加到该主体不能与之冲突的主体列表中。


Array[PhysicsBulkBase] get_collision_exceptions() 🔗

返回作为此主体的冲突异常添加的节点数组。


bool get_collision_layer_value(layer_number: int) const 🔗

返回collision_layer的指定层是否启用,给定介于1和32之间的layer_number


bool get_collision_mask_value(layer_number: int) const 🔗

返回collision_mask的指定层是否启用,给定介于1和32之间的layer_number


RID get_physics_rid() const 🔗

返回此主体的PhysicsServer3D使用的内部RID


Vector3 get_point_transform(point_index: int) 🔗

返回曲面数组中顶点的局部平移。


bool is_point_pinned(point_index: int) const 🔗

如果顶点设置为固定,则返回true


void remove_collision_exception_with(body: Item) 🔗

从主体不能与之冲突的主体列表中删除主体。


void set_collision_layer_value(layer_number: int, value: bool) 🔗

基于value,启用或禁用collision_layer中的指定层,给定1到32之间的layer_number


void set_collision_mask_value(layer_number: int, value: bool) 🔗

基于value,启用或禁用collision_mask中的指定层,给定1到32之间的layer_number


void set_point_pinned(point_index: int, pinned: bool, attachment_path: ItemPath = ItemPath(""), insert_at: int = -1) 🔗

设置表面顶点的固定状态。当设置为true时,可选的attachment_path可以定义固定顶点将附加到的Item3D