/* * @Author: your name * @Date: 2021-09-22 10:36:41 * @LastEditTime: 2021-09-26 20:37:09 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: \zombie-food\assets\script\manager\PhysicsManager.js */ /** * 物理引擎管理组件 */ cc.Class({ extends: Script, properties: { active: { default: true, tooltip: '是否启用物理引擎', }, aabb: { default: true, tooltip: '是否显示包围盒', }, pair: { default: true, }, centerOfMass: { default: true, tooltip: '是否显示中心点' }, joint: { default: true, tooltip: '是否显示关节连接线' }, shape: { default: true, tooltip: '是否填充形状' }, gravity: { default: cc.v2(0, -960), tooltip: '重力' } }, onLoad() { window.PhysicsManager = this; // 物理步长,默认 FIXED_TIME_STEP 是 1/60 cc.PhysicsManager.FIXED_TIME_STEP = 1 / 2; // 位移计算迭代次数 迭代的次数越多,解决刚体重叠的速度越快 cc.PhysicsManager.POSITION_ITERATIONS = 8; // 速度计算迭代次数 迭代的次数越多,碰撞传导的速度越快 cc.PhysicsManager.VELOCITY_ITERATIONS = 2; }, open() { this.active = true; this.onEnable(); }, close() { this.active = false; this.onDisable(); }, onEnable() { //开启或关闭物理系统 let physicsManager = cc.director.getPhysicsManager(); if (physicsManager.enabled && this.active) { cc.warn('The physical system is enabled!'); } physicsManager.enabled = this.active; // Get the collision manager. let manager = cc.director.getCollisionManager(); // Enabled the colider manager. manager.enabled = true; if (!this.active) { return; } //设置物理系统的重力属性 physicsManager.gravity = this.gravity; //设置调试标志 let drawBits = cc.PhysicsManager.DrawBits; if (CC_PREVIEW) { physicsManager.debugDrawFlags = (this.aabb && drawBits.e_aabbBit) | (this.pair && drawBits.e_pairBit) | (this.centerOfMass && drawBits.e_centerOfMassBit) | (this.joint && drawBits.e_jointBit) | (this.shape && drawBits.e_shapeBit); } else { physicsManager.debugDrawFlags = 0; } }, onDisable() { let physicsManager = cc.director.getPhysicsManager(); physicsManager.debugDrawFlags = 0; physicsManager.enabled = false; } });