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('現在剛離開') } });
這樣就可以在所對應的函數里面執行相應的方法了。