liko
    Preparing search index...

    Class RigidBody

    物理刚体组件,实现物理属性描述和碰撞区域定义。 物理坐标系以场景根节点为基础进行计算。两个物体相撞条件:

    1. 任意一方为 dynamic 类型
    2. maskBit & categoryBit !== 0

    注意:RigidBody 为一个脚本,挂载到节点后,需要添加到场景中才能被激活

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    category: string = ''

    物理分类,用于碰撞检测

    friction: number = 0.2

    摩擦系数,范围 0-1,默认为 0.2

    id: string = ''

    脚本唯一标识符,通常由编辑器指定

    isSensor: boolean = false

    是否为传感器,传感器只检测碰撞但不产生物理反馈

    joints: IJoint[] = []

    关节列表,描述刚体之间的连接关系

    label: string = ''

    脚本标签,用于快速识别和查找

    onCollisionEnd?: (e: ICollision) => void

    碰撞结束回调

    onCollisionStart?: (e: ICollision) => void

    碰撞开始回调

    restitution: number = 0

    弹性系数,范围 0-1,默认为 0

    rigidType: RigidType = 'static'

    物理类型,static(静态)、kinematic(运动学) 或 dynamic(动态),至少一个物体为 dynamic 才能产生碰撞

    shapes: IShape[] = []

    物理形状列表,描述碰撞区域,为空则默认使用与节点同大小的矩形

    Accessors

    • get allowRotation(): boolean

      是否允许旋转,设为 false 则物体保持固定方向

      Returns boolean

    • set allowRotation(value: boolean): void

      Parameters

      • value: boolean

      Returns void

    • get allowSleeping(): boolean

      是否允许休眠,休眠状态下物体不参与物理计算以提高性能

      Returns boolean

    • set allowSleeping(value: boolean): void

      Parameters

      • value: boolean

      Returns void

    • get angularDamping(): number

      角阻尼系数,影响物体旋转的减速率,值越大减速越快

      Returns number

    • set angularDamping(value: number): void

      Parameters

      • value: number

      Returns void

    • get angularVelocity(): number

      角速度,物体旋转速度,单位为弧度/秒

      Returns number

    • set angularVelocity(value: number): void

      Parameters

      • value: number

      Returns void

    • get awaked(): boolean

      脚本是否已被激活(添加到场景后触发)

      Returns boolean

    • get bullet(): boolean

      是否为子弹,高速物体设为 true 可减少穿透问题,但会增加性能开销

      Returns boolean

    • set bullet(value: boolean): void

      Parameters

      • value: boolean

      Returns void

    • get categoryAccepted(): undefined | string[]

      接受碰撞的分类列表,为空则与所有物体碰撞

      Returns undefined | string[]

    • set categoryAccepted(value: undefined | string | string[]): void

      Parameters

      • value: undefined | string | string[]

      Returns void

    • get destroyed(): boolean

      脚本是否已被销毁

      Returns boolean

    • get enabled(): boolean

      脚本是否启用,禁用时不执行更新且触发 onDisable

      Returns boolean

    • set enabled(value: boolean): void

      Parameters

      • value: boolean

      Returns void

    • get gravityScale(): number

      重力缩放系数,默认为 1,可设为负值使物体上浮

      Returns number

    • set gravityScale(value: number): void

      Parameters

      • value: number

      Returns void

    • get linearDamping(): number

      线性阻尼系数,影响物体线性运动的减速率,值越大减速越快

      Returns number

    • set linearDamping(value: number): void

      Parameters

      • value: number

      Returns void

    • get scene(): undefined | IScene

      目标节点所在的场景引用(建议缓存为局部变量以提高性能)

      Returns undefined | IScene

    Methods

    • 施加角冲量,立即改变物体角速度

      仅对 dynamic 类型且 allowRotation 为 true 的物体有效

      Parameters

      • impulse: number

        角冲量值

      Returns void

    • 施加力,会逐渐产生速度变化

      仅对 dynamic 类型物体有效,力量需足够大才能克服摩擦和重力

      Parameters

      • force: IPoint

        力向量,包含 x 和 y 分量

      • point: IPoint = ...

        作用点,默认为物体原点,相对于物体中心的偏移

      Returns void

    • 在物体中心点施加力,会逐渐改变物体速度

      仅对 dynamic 类型物体有效,力量需足够大才能克服摩擦和重力

      Parameters

      Returns void

    • 施加线性冲量,立即改变物体速度

      仅对 dynamic 类型物体有效,效果比施加力更直接

      Parameters

      • impulse: IPoint

        冲量向量

      • point: IPoint = ...

        作用点,默认为物体原点

      Returns void

    • 施加扭矩,会逐渐产生角速度变化

      仅对 dynamic 类型且 allowRotation 为 true 的物体有效

      Parameters

      • torque: number

        扭矩值

      Returns void

    • 销毁脚本实例

      Returns void

      销毁后脚本将不再可用,会自动:

      • 触发 onDestroy 回调
      • 清除在 target、scene、stage、timer 上的所有监听
      • 解除与目标节点的关联

      注意:如果使用了 Timer.system 的监听,需要手动清除

    • 销毁指定标签的关节

      Parameters

      • label: string

        关节标签

      Returns void

    • 获取刚体当前旋转角度

      Returns number

      旋转角度(弧度)

    • 组件唤醒时初始化物理刚体

      设置刚体类型、添加形状、设置初始位置和角度,并注册碰撞事件和关节

      Returns void

    • 每帧更新物体位置和旋转

      同步物理引擎计算结果到游戏对象,并检测边界。如果物体超出边界则销毁

      Returns void

    • 设置刚体线性速度

      Parameters

      • Optionalx: number

        x 方向速度,为 undefined 则保持当前速度

      • Optionaly: number

        y 方向速度,为 undefined 则保持当前速度

      Returns void

    • 设置刚体位置

      注意:如果物体使用了刚体,直接修改 node.position 是无效的,需要使用此方法

      Parameters

      • x: number

        x 轴坐标

      • y: number

        y 轴坐标

      Returns void

    • 通过数据设置属性

      Parameters

      • Optionalprops: Record<string, unknown>

        属性列表

      Returns this

      当前实例,支持链式调用

    • 设置刚体旋转角度

      Parameters

      • rotation: number

        旋转角度(弧度)

      Returns void

    • 向同场景的其他脚本发送信号

      Parameters

      • key: string

        信号类型标识符,不区分大小写

      • Optionalparams: Record<string, any>

        可选的信号参数对象

      Returns void

      发送的信号可以在同场景其他脚本的 onSignal 方法中被监听到,用于场景内脚本间通信。 注意:必须在脚本销毁前发送信号,否则无法正确触发。

    • 执行脚本的更新逻辑

      Parameters

      • delta: number

        距离上一帧的时间间隔(毫秒)

      Returns void

      每帧调用一次,用于更新脚本状态。如果脚本未启用或未激活则不会执行。