import { _decorator, PhysicsSystem2D, EPhysics2DDrawFlags, Vec2 } from 'cc'; import { BaseSingleton } from './BaseSingleton'; const { ccclass, property } = _decorator; @ccclass('PhysicsManager') export class PhysicsManager extends BaseSingleton { // 仅用于类型声明,实例由 BaseSingleton 维护 public static _instance: PhysicsManager; /** 是否启用调试绘制 */ @property public debugDraw: boolean = false; /** * BaseSingleton 首次实例化回调 * 在此处完成物理系统初始化,确保全局仅执行一次。 */ protected init() { // 启用物理系统 PhysicsSystem2D.instance.enable = true; // 设置物理系统的重力为零(因为是2D平面游戏) PhysicsSystem2D.instance.gravity = new Vec2(0, 0); // 调试绘制 // PhysicsSystem2D.instance.debugDrawFlags = this.debugDraw ? // (EPhysics2DDrawFlags.Aabb | // EPhysics2DDrawFlags.Pair | // EPhysics2DDrawFlags.CenterOfMass | // EPhysics2DDrawFlags.Joint | // EPhysics2DDrawFlags.Shape) : // EPhysics2DDrawFlags.None; } /** * 获取底层 PhysicsSystem2D 单例,避免脚本直接引用 PhysicsSystem2D.instance。 */ public getSystem(): PhysicsSystem2D { return PhysicsSystem2D.instance; } }