123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- /*
- * @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;
- }
- });
|