1: 開啟物理引擎與物理引擎的配置;
2: 剛體的類型和剛體的主要屬性;
3: 碰撞器的使用和參數;
開啟物理引擎
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: 重力加速度,二維向量
cc.Class({ extends: cc.Component, properties: { // foo: { // default: null, // The default value will be used only when the component attaching // to a node for the first time // url: cc.Texture2D, // optional, default is typeof default // serializable: true, // optional, default is true // visible: true, // optional, default is true // displayName: 'Foo', // optional // readonly: false, // optional, default is false // }, // ... 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; } else { // 關閉調試信息 cc.director.getPhysicsManager().debugDrawFlags = 0; } // 重力加速度的配置 cc.director.getPhysicsManager().gravity = this.gravity; }, // called every frame, uncomment this function to activate update callback // update: function (dt) { // }, });
重力加速度
1: 物理引擎會有一個重力加速度,來模擬物理環境,你可以可以把重力加速度改成0,不受重力影響;
2: 修改重力加速度:
cc.director.getPhysicsManager().gravity = cc.p(0, -320);
物理剛體
1: 剛體:形狀不會改變
2: 剛體分為靜態static,動態剛體dynamic, 不受力的剛體(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: 一定要加物理碰撞器,而不是碰撞系統的碰撞器,非常容易出錯誤
