| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- 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;
- }
- }
|