cocos creator基礎-(十九)物理引擎基本配置


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: 一定要加物理碰撞器,而不是碰撞系統的碰撞器,非常容易出錯誤


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM