引言
Cocos Creator?是一個(gè)完整的游戲開發(fā)解決方案莺掠,包含了 cocos2d-x 引擎的 JavaScript 實(shí)現(xiàn),以及快速開發(fā)游戲所需求的各種圖形界面東西。Cocos Creator 的編輯器完全為引擎定制打造稠项,包含從規(guī)劃、開發(fā)撑柔、預(yù)覽瘸爽、調(diào)試到發(fā)布的整個(gè)工作流所需的全功能,該編輯器供給面向規(guī)劃和開發(fā)的兩種工作流铅忿,供給簡(jiǎn)略順暢的分工合作方法剪决。Cocos Creator 現(xiàn)在支持發(fā)布游戲到 Web、Android 和 iOS檀训,真正實(shí)現(xiàn)一次開發(fā)柑潦,全渠道工作。Cocos Creator 是以內(nèi)容創(chuàng)作為中心的游戲開發(fā)東西峻凫,在 Cocos2d-x 基礎(chǔ)上實(shí)現(xiàn)了完全腳本化渗鬼、組件化和數(shù)據(jù)驅(qū)動(dòng)等特征。
碰撞組件
首先來看碰撞組件荧琼。CocosCreator提供了三種碰撞組件:Box Collider譬胎,Circle Collider,Polygon Collider命锄。增添十分簡(jiǎn)單堰乔,只需要選中節(jié)點(diǎn)在屬性檢查器中選擇添加組件。
請(qǐng)輸入圖片描述
這里使用的是Box Collider脐恩,可以看到節(jié)點(diǎn)周圍多了一個(gè)綠色的框镐侯,這就是碰撞體。
請(qǐng)輸入圖片描述
在屬性檢查器中可以看到碰撞體的屬性驶冒,選中Editing可以通過拖動(dòng)對(duì)其大小進(jìn)行修改苟翻。
請(qǐng)輸入圖片描述
另外兩種碰撞組件和Box Collider就是形狀區(qū)別。
碰撞腳本控制
下面來看碰撞的腳本骗污。首先需要開啟碰撞檢測(cè)系統(tǒng)和debug繪制接口崇猫,默認(rèn)情況下是禁用的。碰撞檢測(cè)系統(tǒng)功能不需要多說身堡,debug繪制是用于顯示碰撞組件的碰撞檢測(cè)范圍的邓尤。
???? cc.director.getCollisionManager().enabled = true;
???? cc.director.getCollisionManager().enabledDebugDraw = true;
如果希望顯示碰撞組件的包圍盒,可以開啟另一個(gè)接口贴谎,我沒有發(fā)現(xiàn)這個(gè)接口的用處汞扎。
cc.director.enabledDrawBoundingBox = true;
接下來看下碰撞系統(tǒng)的回調(diào)函數(shù),主要有三個(gè):
碰撞產(chǎn)生時(shí)調(diào)用onCollisionEnter: function (other, self)
碰撞保持時(shí)調(diào)用onCollisionStay: function (other, self)
碰撞結(jié)束時(shí)調(diào)用onCollisionExit: function (other, self)
other是產(chǎn)生碰撞的另一個(gè)碰撞組件擅这,self是產(chǎn)生碰撞的自身的碰撞組件澈魄。
示例的具體代碼如下:
cc.Class({
??? extends: cc.Component,
??? properties: {
??????? // foo: {
??????? //??? default: null,
??????? //??? 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
?????? ?// },
??????? // ...
??? },
??? // use this for initialization
??? onLoad: function () {
??????? cc.director.getCollisionManager().enabled = true;
?????? cc.director.getCollisionManager().enabledDebugDraw = true;
??????? cc.director.getCollisionManager().enabledDrawBoundingBox = true;
??????? this.touchingNumber = 0;
??? },
??? onCollisionEnter: function (other) {
??????? this.node.color = cc.Color.RED;
??????? this.touchingNumber ++;
??????? cc.log(this.touchingNumber);
??? },
??? onCollisionStay: function (other) {
??????? // console.log('on collision stay');
??? },
??? onCollisionExit: function () {
??????? this.touchingNumber --;
??????? cc.log(this.touchingNumber);
??????? if (this.touchingNumber === 0) {
??????????? this.node.color = cc.Color.WHITE;
??????? }
??? }
??? // called every frame, uncomment this function to activate update callback
??? // update: function (dt) {
??? // },
我也創(chuàng)建了個(gè)學(xué)習(xí)交流群 感興趣的朋友可以加下點(diǎn)擊鏈接加入群聊【cocos/unity交流群】
效果如圖:?
碰撞前
碰撞后