PhysicalBone¶
继承: PhysicsBulkBase < ColliderObjectBase < Item3D < Item < Object
一个用来制造骨骼的物理体对物理做出反应。
描述¶
PhysicalBone节点是一个物理体,可用于使SkeletonMesh中的骨骼对物理做出反应。
注意:为了使用光线投射检测物理骨骼,父PhysicalBoneSimu的SkeletonRevamp.active属性必须为true,并且SkeletonMesh的骨骼必须正确分配给PhysicalBone;这意味着get_bone_id()应该返回一个有效的id(>=0)。
属性¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
方法¶
void |
_integrate_forces(state: PhysicsDirectBodyState3D) virtual |
void |
apply_central_impulse(impulse: Vector3) |
void |
apply_impulse(impulse: Vector3, position: Vector3 = Vector3(0, 0, 0)) |
get_bone_id() const |
|
枚举¶
enum DampMode: 🔗
DampMode DAMP_MODE_COMBINE = 0
在这种模式下,身体的阻尼值被添加到区域中设置的任何值或默认值。
DampMode DAMP_MODE_REPLACE = 1
在此模式下,机身的阻尼值将替换区域中设置的任何值或默认值。
enum JointType: 🔗
JointType JOINT_TYPE_NONE = 0
没有联合应用于物理Bone3D。
JointType JOINT_TYPE_PIN = 1
引脚接头应用于物理Bone3D。
JointType JOINT_TYPE_CONE = 2
锥形接头应用于物理Bone3D。
JointType JOINT_TYPE_HINGE = 3
铰链接头应用于物理骨3D。
JointType JOINT_TYPE_SLIDER = 4
将滑块接头应用于物理Bone3D。
JointType JOINT_TYPE_6DOF = 5
一个6自由度的关节应用于物理骨3D。
属性说明¶
阻尼身体的旋转。默认情况下,身体将使用ProjectSettings.physics/3d/default_angular_damp项目设置或身体所在的AreaTrigger设置的任何值覆盖。根据angular_damp_mode,您可以设置angular_damp以添加或替换身体的阻尼值。
有关阻尼的更多详细信息,请参见ProjectSettings.physics/3d/default_angular_damp。
DampMode angular_damp_mode = 0 🔗
定义如何应用angular_damp。有关可能的值,请参阅DampMode。
Vector3 angular_velocity = Vector3(0, 0, 0) 🔗
以每秒弧度为单位的物理骨3D旋转速度。
Transform3D body_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) 🔗
void set_body_offset(value: Transform3D)
Transform3D get_body_offset()
设置身体的变换。
身体的弹性。值的范围从0(无反弹)到1(完全弹性)。
注意:即使将bounce设置为1.0,也会由于线性和角度阻尼而随着时间的推移损失一些能量。要使PhysicalBone随着时间的推移保留所有能量,请将bounce设置为1.0,linear_damp_mode设置为DAMP_MODE_REPLACE,linear_damp设置为0.0,angular_damp_mode设置为DAMP_MODE_REPLACE,以及angular_damp设置为0.0。
如果true,则身体在没有运动时停用,因此在被外力唤醒之前不会参加模拟。
bool custom_integrator = false 🔗
如果true,则该物体的标准力积分(如重力或阻尼)将被禁用。除了碰撞响应,如果该虚拟方法被覆盖,则该物体将仅根据_integrate_forces()方法确定的方式移动。
设置此属性将在内部调用方法PhysicsServer3D.body_set_omit_force_integration()。
身体的摩擦力,从0(无摩擦力)到1(最大摩擦力)。
这乘以ProjectSettings.physics/3d/default_gravity来产生这个物体的重力。例如,1.0的值将应用正常重力,2.0将应用两倍的重力,0.5将应用一半的重力。
Transform3D joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) 🔗
void set_joint_offset(value: Transform3D)
Transform3D get_joint_offset()
设置关节的变换。
Vector3 joint_rotation = Vector3(0, 0, 0) 🔗
设置关节的弧度旋转。
设置关节类型。有关可能的值,请参阅JointType。
阻尼身体的运动。默认情况下,身体将使用ProjectSettings.physics/3d/default_linear_damp或身体所在的AreaTrigger设置的任何值覆盖。根据linear_damp_mode,linear_damp可以添加或替换身体的阻尼值。
有关阻尼的更多详细信息,请参见ProjectSettings.physics/3d/default_linear_damp。
DampMode linear_damp_mode = 0 🔗
定义如何应用linear_damp。有关可能的值,请参阅DampMode。
Vector3 linear_velocity = Vector3(0, 0, 0) 🔗
以每秒为单位的身体线速度。可以零星使用,但是不要每帧都设置这个,因为物理学可能在另一个线程中运行,并且以不同的颗粒度运行。使用_integrate_forces()作为您的过程循环,以精确控制身体状态。
身体的质量。
方法说明¶
void _integrate_forces(state: PhysicsDirectBodyState3D) virtual 🔗
在物理处理期间调用,允许您读取并安全地修改对象的模拟状态。默认情况下,它在标准力集成之前调用,但custom_integrator属性允许您禁用标准力集成并为主体进行完全自定义的力集成。
void apply_central_impulse(impulse: Vector3) 🔗
在不影响旋转的情况下应用方向脉冲。
脉冲是与时间无关的!每帧应用一个脉冲将导致帧速率相关的力。因此,它应该只在模拟一次性撞击时使用(否则使用“_integrate_forces”功能)。
这相当于在身体质心处使用apply_impulse()。
void apply_impulse(impulse: Vector3, position: Vector3 = Vector3(0, 0, 0)) 🔗
将定位脉冲应用于物理Bone3D。
脉冲是与时间无关的!每帧应用一个脉冲将导致帧速率相关的力。因此,它应该只在模拟一次性撞击时使用(否则使用“_integrate_forces”功能)。
position是全局坐标系中物理骨原点的偏移量。
返回TonicsBone3D的唯一标识符。
如果允许MediicsBone3D模拟物理,则返回true。
bool is_simulating_physics() 🔗
(C++11起)返回true如果物理Bone3D当前正在模拟物理。