詳解:十分鐘搞懂Cocos Creator碰撞組件的使用
序言
在Cocos Creator游戲開發(fā)過程中,經(jīng)常有需要檢測兩個(gè)物體是否發(fā)生碰撞的情況,諸如:子彈是否擊中敵人,玩家是否撞到障礙物,是否拾取到道具等等。下面我們就通過一個(gè)案例來演示Cocos Creator中的碰撞組件的使用。
一、UI設(shè)計(jì)
首先我們編輯案例場景如下,設(shè)置四個(gè)星星,其中右下角的星星為默認(rèn)分組default,其它三個(gè)星星設(shè)置分組為COLLIDER。勾選COLLIDER和COLLIDER的碰撞的分組配對。


二、碰撞檢測實(shí)現(xiàn)
由于所有的節(jié)點(diǎn)都是一個(gè)矩形,所以,我們首先讓相鄰的星星都旋轉(zhuǎn)起來,然后在旋轉(zhuǎn)的過程中,會(huì)有碰撞和離開的情況發(fā)生。之后再來處理碰撞回調(diào)。
1.讓星星旋轉(zhuǎn)起來
新建StarRotate.js,然后同時(shí)選中前面三個(gè)星星,給其添加此自定義組件。

然后左側(cè)星星設(shè)置旋轉(zhuǎn)速度為30,右側(cè)星星設(shè)置旋轉(zhuǎn)速度為-30,如下圖所示:

2.添加碰撞組件
由于碰撞引擎處理的是碰撞組件的碰撞。所以,需要給所有星星節(jié)點(diǎn)添加碰撞組件。

3.碰撞檢測處理
新建ColliderListener.js,給所有星星組件添加此自定義組件。


運(yùn)行結(jié)果如下,當(dāng)旋轉(zhuǎn)到兩個(gè)物體相互接觸的時(shí)候調(diào)用onCollisionEnter方法,碰撞的兩個(gè)組件節(jié)點(diǎn)變成紅色,將離開的時(shí)候調(diào)用onCollisionExit,碰撞脫離的兩節(jié)點(diǎn)變成白色。而屬于不同分組COLLIDER和default的兩個(gè)星星即使有接觸也不會(huì)進(jìn)行碰撞處理。


三、碰撞組件使用小結(jié)
1、Cocos Creator游戲引擎中碰撞引擎默認(rèn)是關(guān)閉的,需要程序員自己根據(jù)實(shí)際情況選擇是否開啟。
1. ?` ? ? ? ?// 開啟碰撞檢測、開啟調(diào)試模式(繪制碰撞器形狀)`2. ?` ? ? ? ?cc.director.getCollisionManager().enabled = true;`3. ?` ? ? ? ?cc.director.getCollisionManager().enabledDebugDraw = true;`
2、碰撞引擎只對勾選了分組配對的組上的節(jié)點(diǎn)進(jìn)行判斷,且只對具有碰撞組件的節(jié)點(diǎn)進(jìn)行碰撞處理。
3、另外需要注意的一點(diǎn)是,即使開啟了碰撞引擎,添加了碰撞組件,但是沒有書寫碰撞回調(diào)方法,也不會(huì)有任何效果。所以,如果注釋掉ColliderListener中的三個(gè)碰撞回調(diào)方法,就不會(huì)有任何效果。
具體API可以參考官網(wǎng)鏈接:https://docs.cocos.com/creator/api/zh/classes/CollisionManager.html?h=collisionmanager