本页内容

DynamicRigidBody QML Type

能够移动或被移动的实体。更多...

Import Statement: import QtQuick3D.Physics
Since: Qt 6.4
Inherits:

PhysicsBody

属性

方法

详细说明

该类型定义了一个动态刚体:作为物理场景组成部分的对象,其行为表现得如同具有质量和速度的物理实体。

注意: 当isKinematic 的值为false 时,triangle mesh 、height field 和plane 几何形状不允许作为碰撞形状。

属性文档

angularAxisLock : AxisLock

该属性将物体沿由DynamicRigidBody.AxisLock枚举所定义的轴锁定其角速度。若要锁定多个轴,只需对相应的枚举值进行按位或运算即可。

可用选项:

常量描述
DynamicRigidBody.None不锁定任何轴。
DynamicRigidBody.LockX锁定 X 轴。
DynamicRigidBody.LockY锁定Y轴。
DynamicRigidBody.LockZ锁定 Z 轴。

默认值:DynamicRigidBody.None

centerOfMassPosition : vector3d

定义质心相对于机体的位置。请注意,此参数仅在将massMode 设置为DynamicRigidBody.MassAndInertiaTensor 时才生效。

默认值:(0, 0, 0)

另请参阅 massMode 和inertiaTensor 。

centerOfMassRotation : quaternion

定义质心姿态的旋转,即指定物体主惯性轴相对于物体本身的取向。请注意,仅当massMode 设置为DynamicRigidBody.MassAndInertiaTensor 时,此参数才会生效。

默认值:(1, 0, 0, 0)

另请参阅 massMode 和inertiaTensor 。

density : real

此属性定义了物体的密度。仅当massMode 设置为DynamicRigidBody.CustomDensity 时,此属性才会生效。

默认值:0.001

取值范围:(0, inf]

另请参阅 massMode 。

gravityEnabled : bool

该属性用于定义对象是否受重力影响。

默认值:true

inertiaMatrix : list<real>

定义惯性张量矩阵。这是一个按列优先顺序排列的 3×3 矩阵。请注意,该矩阵应可对角化。请注意,仅当 `massMode ` 设置为 `DynamicRigidBody.MassAndInertiaMatrix` 时才会使用此参数。

默认值:一个 3×3 的单位矩阵

另请参阅 massMode 和inertiaTensor 。

inertiaTensor : vector3d

定义惯性张量向量,使用质量空间坐标系中指定的参数。

这是一个 3×3 对角矩阵的对角向量;若您拥有一个非对角的世界/角色空间惯性张量,则应改用inertiaMatrix 。

惯性张量的分量必须为正值,任何分量为 0 的情况将被解释为沿该轴的惯性为无穷大。请注意,此参数仅在massMode 被设置为DynamicRigidBody.MassAndInertiaTensor 时才会被使用。

默认值:(1, 1, 1)

另请参阅 massMode 和inertiaMatrix 。

isKinematic : bool

该属性用于定义对象是否为运动学对象。 运动学对象不受外力影响,可视为质量无限大的物体。若启用此属性,则在每个模拟帧中,物理对象都将被移动到其目标位置,无论存在何种外力。请注意,要移动和旋转运动学对象,需要使用kinematicPosition 、kinematicRotation 、kinematicEulerRotation 和kinematicPivot 属性。

默认值:false

另请参阅 kinematicPosition 、kinematicRotation 、kinematicEulerRotation 以及kinematicPivot 。

isSleeping : bool [since 6.9]

当角色处于睡眠状态时,该属性将设置为true 。虽然从技术上讲可以设置此属性,但应将其视为一个只读属性,该属性会在物理模拟运行的每一帧中被设置。

该属性在 Qt 6.9 中引入。

kinematicEulerRotation : vector3d [since 6.5]

定义物体处于运动学模式时的欧拉旋转,即当“isKinematic ”设置为“true ”时。在模拟的每次迭代中,物理物体都将根据此值进行更新。

默认值:(0, 0, 0)

该属性自 Qt 6.5 起引入。

另请参阅 isKinematic 、kinematicPosition 、kinematicEulerRotation 和kinematicPivot 。

kinematicPivot : vector3d [since 6.5]

定义了当对象处于运动学模式时(即当“isKinematic ”设置为“true ”时)的枢轴点。在模拟的每次迭代中,物理对象都将根据此值进行更新。

默认值:(0, 0, 0)

该属性在 Qt 6.5 中引入。

另请参阅 isKinematic 、kinematicPosition 、kinematicEulerRotation 以及kinematicRotation 。

kinematicPosition : vector3d [since 6.5]

定义物体处于运动学状态时的位置,即当“isKinematic ”设置为“true ”时。在模拟的每次迭代中,物理物体将根据此值进行更新。

默认值:(0, 0, 0)

该属性在 Qt 6.5 中引入。

另请参阅 isKinematic 、kinematicRotation 、kinematicEulerRotation 以及kinematicPivot 。

kinematicRotation : quaternion [since 6.5]

定义物体处于运动学模式时的旋转,即当“isKinematic ”设置为“true ”时。在模拟的每次迭代中,物理物体将根据此值进行更新。

默认值:(1, 0, 0, 0)

该属性在 Qt 6.5 中引入。

另请参阅 isKinematic 、kinematicPosition 、kinematicEulerRotation 以及kinematicPivot 。

linearAxisLock : AxisLock

此属性将物体的线速度锁定在由DynamicRigidBody.AxisLock枚举定义的轴上。若要锁定多个轴,只需对它们的枚举值进行按位或运算即可。

可用选项:

常量描述
DynamicRigidBody.None不锁定任何轴。
DynamicRigidBody.LockX锁定 X 轴。
DynamicRigidBody.LockY锁定Y轴。
DynamicRigidBody.LockZ锁定 Z 轴。

默认值:DynamicRigidBody.None

mass : real

该属性定义了物体的质量。请注意,该属性仅在massMode 的值既非DynamicRigidBody.CustomDensity 也非DynamicRigidBody.DefaultDensity 时才会被使用。另请注意,值为0将被解释为无限质量,且不允许使用负数。

默认值:1

取值范围:[0, inf]

另请参阅 massMode 。

massMode : MassMode

该属性存储了一个枚举,用于描述如何计算该刚体的质量和惯性。

可用选项:

常量说明
DynamicRigidBody.DefaultDensity使用PhysicsWorld 中defaultDensity 属性指定的密度,在假设密度均匀的情况下计算质量和惯性。
DynamicRigidBody.CustomDensity使用在“density ”中指定的密度来计算质量和惯量,并假设密度均匀。
DynamicRigidBody.Mass使用指定的质量值,在假设密度均匀的条件下计算惯性。
DynamicRigidBody.MassAndInertiaTensor使用指定的质量值和惯性张量。
DynamicRigidBody.MassAndInertiaMatrix使用指定的质量值,并根据指定的惯性矩阵计算惯性。

默认值:DynamicRigidBody.DefaultDensity

方法文档

void applyCentralForce(vector3d force)

在身体中央施放一个“force ”。

void applyCentralImpulse(vector3d impulse)

在身体中央施放impulse 。

void applyForce(vector3d force, vector3d position)

在身体的position 处涂抹force 。

void applyImpulse(vector3d impulse, vector3d position)

在车身某处(position )安装impulse 。

void applyTorque(vector3d torque)

在身体上施放torque 。

void applyTorqueImpulse(vector3d impulse)

对物体施加impulse 的扭矩。

void reset(vector3d position, vector3d eulerRotation)

重置体内的position 和eulerRotation 。

void setAngularVelocity(vector3d angularVelocity)

设置正文的angularVelocity 。

void setLinearVelocity(vector3d linearVelocity)

设置正文的linearVelocity 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.