cocos creator 碰撞檢測


creator的碰撞檢測系統分為碰撞檢測系統和物理碰撞檢測系統兩個模塊,並且這兩個模塊是相互獨立的(這邊主要是非物理碰撞檢測系統)

1、在制作碰撞檢測系統的時候要對物體進行分組,即指定節點的分組與分組的碰撞矩陣

  a、查看和添加分組=>項目=>項目設置=>分組管理里面進行設定

  b、添加分組(注意添加一個分組,里面有對應的序號名字

  c、指定節點的分組與分組的碰撞矩陣,如下圖:

  

  以上表示 player表示玩家,prop表示道具,以上的矩陣表示玩家與道具發生碰撞會觸發事件,其他的碰撞不會有事件被觸發。

2、給年綁定的目標節點添加碰撞器

  a、選定目標節點配置分組

  b、在添加組件處選擇添加碰撞組件(如下圖)

  

  Box Collider表示方形碰撞器

  Circle Collider 表示圓形碰撞器

  Polygon Collider 表示自定義圖形的碰撞器

  c、選擇好形狀后,鈎選中Editing處進行大小的編輯,注意:多邊形在做碰撞檢測的時候性能會差,所以能用圓形或者方形的,一般用圓形或者方形

 3、在代碼中開啟碰撞檢測系統(默認的碰撞檢測是關閉的),開啟和關閉碰撞檢測的調試

  a、碰撞檢測系統的配置,建立一個script文件,綁定到canvas根目錄下來配置碰撞檢測的參數設置

  var manager=cc.director.getCollisionManager();  // 獲取碰撞檢測類

  manager.enabled=true   //開啟碰撞檢測

  manager.enabledDebugDraw=true //顯示碰撞檢測區域

  具體如下代碼

cc.Class({
    extends: cc.Component,

    properties: {
        is_enable: true,    //是否開啟碰撞檢測系統
        is_debug: false     //是否顯示碰撞檢測區域
    },
    
    onLoad() {
        if (this.is_enable) {
            let manager = cc.director.getCollisionManager();
            manager.enabled = true;     //開啟碰撞檢測
            if (this.is_debug) {
                manager.enabledDebugDraw = true;   //顯示碰撞檢測區域
            }
        }
    }
});

   b、碰撞檢測系統的API接口

  onCollisionEnter:function(other,self){}  => 當兩物體剛發生碰撞時被觸發

  onCollisionStay:function(other,self){}   => 當兩物體發生碰撞后,並且有交集的時候被觸發

  onCollisionExit:function(other,self){} => 當兩物體發生碰撞后,並且在離開的那一刻被觸發

  所對應的方法腳本應該被綁定在執行的物體上

cc.Class({
    extends: cc.Component,
    properties: {},
    start() {

    },
    onCollisionEnter(other, self) {
        console.log(other, self);
    },
    onCollisionStay(other, self) {
        console.log('現在正在有交集');
    },
    onCollisionExit(other, self) {
        console.log('現在剛離開')
    }
});

這樣就可以在所對應的函數里面執行相應的方法了。


免責聲明!

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



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