CreatorPrimer(17)|物理小游戲(物理組件)

Demo演示視頻:

Demo演示,點(diǎn)擊下面連接打開(kāi)

視頻地址:https://v.qq.com/x/page/p0713nsrnr1.html
本視頻的工程已經(jīng)上傳github,CreatroPrimer倉(cāng)庫(kù)physics分支,傳送地址:https://github.com/ShawnZhang2015/CreatorPrimer/tree/physics

緊接上篇我們的物理投籃游戲,這次介紹一下Cocosc Creator的物理引擎相關(guān)組件:剛體物理碰撞檢測(cè)。

1. 剛體組件

我們先看看游戲中的笑臉小球的剛體組件屬性,請(qǐng)看下圖:

Ball動(dòng)態(tài)剛體

RigidBody就是Cocos Creator提供的剛體組件,將組件掛載到一個(gè)節(jié)點(diǎn)上,節(jié)點(diǎn)即具有物理特性,運(yùn)行起來(lái)會(huì)隨著地心引力向下墜落(需要開(kāi)啟物理效果)。

有些剛體是不需要?jiǎng)拥?,比如我們四周的圍墻,只需要將剛體組件的Type屬性設(shè)置為static即可,請(qǐng)看下圖:

靜態(tài)剛體

設(shè)置好靜態(tài)剛體,運(yùn)行游戲會(huì)發(fā)現(xiàn)小球下墜,但會(huì)穿過(guò)圍墻,掉入無(wú)盡深淵去了。

2. 物理碰撞組件

剛體組件只是給節(jié)點(diǎn)賦予了重力、速度、阻力等能力,接下來(lái)我們還需要為節(jié)點(diǎn)設(shè)置物理外形,這需要為節(jié)點(diǎn)掛載一個(gè)碰撞組件,看下圖:

為Ball添加圓形碰撞組件

Cocos Creator提供了四種物理碰撞組件分別是:

  1. 矩形碰撞
  2. 鏈條碰撞
  3. 圓形碰撞
  4. 多邊形碰撞

我們這里為Ball節(jié)點(diǎn)添加圓形碰撞組件,看一下組件屬性:

圓形碰撞.png

簡(jiǎn)單說(shuō)明一下組件屬性:

  1. Editing:在場(chǎng)景編輯器中開(kāi)啟剛體外形編輯功能
  2. Tag: 為碰撞組件設(shè)置一個(gè)ID用于對(duì)象識(shí)別
  3. Density:密度
  4. Sensor:選中不會(huì)產(chǎn)生物理效果,但會(huì)響應(yīng)物理碰撞(籃球框就利用了這個(gè)屬性)
  5. Friction:摩擦系數(shù)
  6. Restitution:彈性系數(shù),要讓球掉在地上能彈跳值要大于0,如果設(shè)置為1(最大值)球可能會(huì)在原地?zé)o限彈跳
  7. Offset:剛體與節(jié)點(diǎn)的偏移,盡量讓兩者重合
  8. Radius:剛體半徑

其它物理碰撞組件,只是最后一個(gè)外型屬性不同,其它都一樣,我們看看四周?chē)鷫Φ木匦闻鲎步M件屬性:

矩形剛體

Box盒形碰撞組件的剛體大小由Size屬性決定,外觀大小由節(jié)點(diǎn)Size屬性決定。為剛體設(shè)置好了碰撞組件,你就能看到小球在剛體包圍盒里快樂(lè)彈跳了,接下來(lái)我們來(lái)監(jiān)聽(tīng)碰撞事件。

3. 監(jiān)聽(tīng)碰撞事件

請(qǐng)認(rèn)真思考一下,碰撞事件的監(jiān)聽(tīng)放在那個(gè)節(jié)點(diǎn)最好?我們以需求為向?qū)?,?dāng)球進(jìn)入籃框更新得分,是將碰撞監(jiān)聽(tīng)安裝在籃球上還是籃框上?再進(jìn)一步,籃框分左右兩個(gè),得分分別顯示得分。如果將碰撞安裝在籃球上,那籃球就需要判斷是碰到了左邊籃框,還是碰到了右邊籃,可以利用碰撞組件的Tag屬性來(lái)區(qū)別。如果將碰撞監(jiān)聽(tīng)安裝在左右籃框上,各自記錄碰撞次數(shù)就行了,是不是更簡(jiǎn)單?請(qǐng)看下圖,我們添加一個(gè)自定義的碰撞組件:

籃球框剛體

請(qǐng)仔細(xì)看上圖中的組件屬性配置,籃框是空心的,球可以穿透,因此需要選擇中碰撞組件的Sensor屬性。同時(shí)添加一個(gè)我們自定義的PhysicsColliderNotification組件用于監(jiān)聽(tīng)物理碰撞,當(dāng)發(fā)生碰撞后會(huì)發(fā)出一個(gè)通知,通知是可以自定義的,也就是一個(gè)字符串:score-left,意思是左邊得分。

同時(shí)我們?cè)谧笊辖怯浀脴?biāo)簽,上去監(jiān)聽(tīng)score-left這個(gè)消息,當(dāng)這個(gè)事件發(fā)生后,更新標(biāo)簽數(shù)值,可以通過(guò)組件屬性配置:

記分標(biāo)簽

每當(dāng)球碰到綠色的碰撞檢測(cè)點(diǎn),檢查節(jié)點(diǎn)上的組件會(huì)發(fā)出一個(gè)“score-left”事件,同時(shí)左上角數(shù)字標(biāo)簽在監(jiān)聽(tīng)這個(gè)事件名,去更新標(biāo)簽上的數(shù)字+1(就是step的值)實(shí)現(xiàn)一個(gè)記分的功能。

中間的生命值標(biāo)簽也是用同樣的機(jī)制實(shí)現(xiàn),只不過(guò)是球碰撞到左右兩邊紅色圍欄,發(fā)出別一個(gè)事件,生命值標(biāo)簽的step為-1從表示出的是減分的效果。

4. 小結(jié)

本篇教程介紹了Cocos Creator物理引擎中的剛體和碰撞組件的常用屬性,同時(shí)分析了我們這個(gè)籃球小游戲的碰撞檢測(cè)策略,將碰撞檢查安裝在籃框和兩邊紅色圍欄上。通過(guò)兩個(gè)通用的組件將投籃記分和碰觸邊框減分實(shí)現(xiàn)了,是不是很簡(jiǎn)單呢?之前Shawn保證過(guò),前兩篇不講代碼,只講組件使用,但下一次我們要進(jìn)入組件代碼的學(xué)習(xí),核心代碼不到50行,非常簡(jiǎn)單,敬請(qǐng)期待!


如果覺(jué)得公眾號(hào)上的文章對(duì)你或你的朋友有所幫助,請(qǐng)記得分享給大家,愿我們一起成長(zhǎng)!

奎特爾星球
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過(guò)CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明AI閱讀 16,171評(píng)論 3 119
  • 周五九點(diǎn)就上床休息,以至于周六早上五點(diǎn)就清醒過(guò)來(lái),睡不著索性開(kāi)始看昨天才收到的新書(shū)《小小巴黎書(shū)店》。一發(fā)不可收拾的...
    錦肆1994閱讀 501評(píng)論 0 0
  • *并不知道在寫(xiě)什么 緣起于今早上被大老板抓包的事情。 鹿妹平時(shí)管著所里的微信平臺(tái),但是工作地點(diǎn)是在主任的顧問(wèn)單位,...
    蕉鹿夢(mèng)閱讀 266評(píng)論 2 0
  • 如月327閱讀 452評(píng)論 0 0
  • 時(shí)間:2018.08.28周二 ?活動(dòng):目標(biāo):探討?yīng)剟?lì)的本質(zhì) 步驟:找一個(gè)學(xué)生扮演老公,老師扮演老婆。 ?第一步,...
    Miki盧盧閱讀 196評(píng)論 0 0

友情鏈接更多精彩內(nèi)容