Skip to content

物理系统配置

物理系统模块(PhysicsSystem)用于管理整个物理系统,负责同步物理元素、触发物理事件和调度物理世界的迭代。

物理配置

有两种办法可以配置物理系统,一种是在编辑器中配置,另一种是通过代码配置。

通过物理配置面板

通过 项目设置 -> 物理配置 可以对物理系统进行相关配置。

属性说明
Gravity X重力矢量,设置 x 分量上的重力值
Gravity Y重力矢量,设置 y 分量上的重力值
Gravity Z重力矢量,设置 z 分量上的重力值
AllowSleep是否允许系统进入休眠状态,默认值 true
SleepThreshold进入休眠的默认速度临界值,默认值 0.1,最小值 0
AutoSimulation是否开启自动模拟, 默认值 true
FixedTimeStep每步模拟消耗的固定时间,默认值 1/60,最小值 0
MaxSubSteps每步模拟的最大子步数,默认值 1,最小值 0
DefualtMaterial默认物理材质
CollisionMatrix碰撞矩阵,仅用于初始化

注意

注意:目前 2D / 3D 物理共用一个配置。

程序化配置

程序化配置目前可以通过直接访问 PhysicsSystem.instance 对物理系统进行配置。部分代码示例如下:

ts
import { _decorator, Component, Node, Vec3, PhysicsSystem } from "cc";
const { ccclass, property } = _decorator;
@ccclass("Example")
export class Example extends Component {
  start() {
    PhysicsSystem.instance.enable = true;
    PhysicsSystem.instance.gravity = new Vec3(0, -10, 0);
    PhysicsSystem.instance.allowSleep = false;
  }
}
  • 注意

注意

注意:物理系统是单例类,通过 PhysicsSystem.instance 获取物理系统的实例。

也可通过 PhysicsSystem.resetConfiguration 接口来重置物理配置,代码示例如下:

ts
let conf = game.config.physics;
conf.gravity = new Vec3(10, 10, 0);
PhysicsSystem.instance.resetConfiguration(conf);