Files
18xchat/assets/Scripts/Main/Manager/PhysicsManager.ts
T
2025-09-25 11:20:03 +08:00

49 lines
1.8 KiB
TypeScript

import { _decorator, Node, AudioClip, AudioSource, director, PhysicsSystem2D, EPhysics2DDrawFlags, Vec2, PHYSICS_2D_PTM_RATIO, v2 } from "cc";
const { ccclass, property } = _decorator;
//物理系统管理器
//通过编辑器主菜单中的 项目 -> 项目设置 -> 功能裁剪 切换物理模块的使用。轻量 Builtin 物理系统和强大的 Box2D 物理系统
@ccclass('PhysicsManager')
export default class PhysicsManager {
private static _I: PhysicsManager = null;
public static get I(): PhysicsManager {
if (!PhysicsManager._I) {
PhysicsManager._I = new PhysicsManager();
PhysicsManager._I.init();
}
return PhysicsManager._I;
}
private init(){
// const system = PhysicsSystem2D.instance;
// system.fixedTimeStep = 1/30;// 物理步长,默认 fixedTimeStep 是 1/60
// system.velocityIterations = 8;// 每次更新物理系统处理速度的迭代次数,默认为 10
// system.positionIterations = 8;// 每次更新物理系统处理位置的迭代次数,默认为 10
// this.setPhysicsEnable(false)
}
//设置是否开启物理系统
public setPhysicsEnable(swt: boolean) {
PhysicsSystem2D.instance.enable = swt; //是否启用物理系统
}
//设置物理调试信息是否显示
public setDrawFalgEnable(swt: boolean) {
if (swt) {
this.setPhysicsEnable(true);
PhysicsSystem2D.instance.debugDrawFlags = EPhysics2DDrawFlags.Shape | EPhysics2DDrawFlags.Joint
} else {
PhysicsSystem2D.instance.debugDrawFlags = EPhysics2DDrawFlags.None;
}
}
//设置重力方向
public setPhysicsGravity(dir: Vec2) {
PhysicsSystem2D.instance.gravity = v2(dir.x * PHYSICS_2D_PTM_RATIO, dir.y * PHYSICS_2D_PTM_RATIO);
}
}