Bullet:防止高度运动穿越,消耗性能
AllowSleep:一段时间物体的运动状态不改变,就休眠刚体
grivaity Sacle :重力比例
Friction :0.2 阻力
Restitution :弹性系数
sensor:物体系统不做碰撞反应
=========================
开启物理引擎:
1: 编写脚本来开启物理引擎;
2: 将这个脚本挂载到场景的根节点;
3: 编写调试接口决定是否打开物理引擎调试;
4: cc.director.getPhysicsManager().enabled = true; // 打开物理引擎
cc.director.getPhysicsManager().debugDrawFlags 调试标志;
var Bits = cc.PhysicsManager.DrawBits;
cc.director.getPhysicsManager().debugDrawFlags = Bits.e_jointBit | Bits.e_shapeBit;
5: cc.PhysicsManager:
enable: 开启 debugDrawFlags: 调试标志, gravity: 重力加速度,二维向量
=================================================
重力加速度:
1: 物理引擎会有一个重力加速度,来模拟物理环境,你可以可以把重力加速度改成0,不受重力影响;
2: 修改重力加速度:
cc.director.getPhysicsManager().gravity = cc.p(0, -320);
================================================
物理刚体:
1: 刚体:形状不会改变
2: 刚体分为静态,动态刚体, 不受力的刚体(Kinematic,不受作用力的影响);
3: 刚体是受到物理作用的物体,由刚体带着节点移动;
4: 刚体组件cc.RigidBoy:
enabledContactListener: 是否开启碰撞事件的监听;
bullet: 是否为子弹属性,防止高速穿越;
allowSleep: 是否允许进入休眠状态,一段时间后如果物体没有任何状态改变会进入休眠状态;
gravityScale: 该物体收重力的缩放;
linearDamping: 线性阻尼,衰减线性速度;
angularDamping: 角速度阻尼,衰减角速度;
linearVelocity: 刚体的线性速度;
angularVelocity: 刚体的角速度;
fixedRotation: 是否固定不旋转;
awake: 是否立刻唤醒此刚体;
active: 是否激活这个刚体,如果不激活,那么刚体不会参与碰撞;
====================================
刚体碰撞器
1: 光有刚体还不够,还要为每个刚体添加一个物理性状;
2: 物理形状的类型:
矩形物理碰撞器;
圆形物理碰撞器;
多边形物理碰撞器;
链条碰撞器: PhysicsChainCollider;
3: 碰撞器的物理参数:
Tag: 碰撞器的标记,区别一个节点上多个不同的碰撞器;
Density: 相状的密度;
Sensor: 是否为一个碰撞感应器;
Friction: 摩擦系数;
Restitution: 弹性系数[0, 1], 0没有弹性, 1完全弹性碰撞;
Editing: 可以编辑碰撞器的形状;
4: 一定要加物理碰撞器,而不是碰撞系统的碰撞器,非常容易出错误
===================================================
cc.Class({
extends: cc.Component,
properties: {
is_debug: false, // 是否显示调试信息;
// 重力加速度是一个向量, 有方向的,2D, Vec重力加速度的大小;
gravity: cc.p(0, -320), // 系统默认的
},
// use this for initialization
onLoad: function () {
// 游戏引擎的总控制
// cc.Director, cc.director 区别呢
// 大写的cc.Director是一个类, 小写cc.direcotr全局的实例
cc.director.getPhysicsManager().enabled = true; // 开启了物理引擎
// 独立的形状,打开一个调试区域,游戏图像的,逻辑区域;
// 开始调试模式:
if (this.is_debug) { // 开启调试信息
var Bits = cc.PhysicsManager.DrawBits; // 这个是我们要显示的类型
cc.director.getPhysicsManager().debugDrawFlags = Bits.e_jointBit | Bits.e_shapeBit;
//二进制计算://a&b 与运算,会返回a和b中每个位(比特,即二进制)最小的值;
//a|b 或运算,会返回a和b中每个位(比特,即二进制)最大的值;
}
else { // 关闭调试信息
cc.director.getPhysicsManager().debugDrawFlags = 0;
}
// 重力加速度的配置
cc.director.getPhysicsManager().gravity = this.gravity;
},
});
=========================================
js枚举使用:
var curChannel = '210'; var channels={ a : '220', b : '221', c : '222' };
if (curChannel in channels) { alert("含有这个属性值"); }
else { alert("不含有这个属性值"); }
if ('a' in channels)
{ // 检查属性名 alert("检查属性-true"); }
else { alert("检查属性-false"); }
遍历枚举)
var CH={A:1,B:2,C:3}
for(i in nem)
alert(nem[i]);
https://blog.csdn.net/diligentcatrich/article/details/6535998
https://blog.csdn.net/u013654125/article/details/77867567