Cocos2D物理碰撞不按預期工作的排查工作

2021-09-23 21:00:20 字數 566 閱讀 2474

如果該碰撞的節點不碰撞或反過來不該碰的碰撞了,你可以檢查一下幾個方面:

1.對應2個節點的分類和掩碼必須匹配.如果它們應該碰撞則乙個節點的分類應該在另乙個節點的掩碼中,反之亦然.

2.注意空的分類和掩碼區域表示匹配所有分類和掩碼.這可能和你想要的意圖完全相反.

3.靜態物件之間不能碰撞.比如例子中的gear1.ccb(齒輪節點)不能相互碰撞.

4.所有節點必須屬於相同的父ccphysicsnode節點(或者相同的祖父或曾祖父,以此類推).

5.儘管你可以在乙個場景中新增多個ccphysicsnode例項,但是它們是完全分開的物理世界.在2個ccphysicsnode的所有(孩子)例項之間是絕對不可能發生任何關係的.

6.你可以啟用物理除錯繪製來確認碰撞形狀.因為物理節點的碰撞shape不一定可該節點的紋理繪製形狀相同.

7.檢查節點的物理碰撞形狀被正確設定了,其中不能有內部交叉的線段.選擇乙個節點,切換到期物理標籤,然後看是否有任何線段是紅色高亮顯示的.

8.如果多個節點至少通過乙個關節相連,則預設情況下它們彼此間都不會發生碰撞.除非你設定了對應關節的collide bodies標誌為啟用.

關於cocos2d中物理引擎碰撞掩碼的設定

當物理引擎檢測到兩個body傳送的碰撞資訊後,會呼叫相應的時間方法來通知系統,比如兩個body已經發生碰撞,兩個body已經分離。接收碰撞事件的方法為oncontactbegin 接收分離事件的方法為oncontactseperate 一 碰撞掩碼分為以下三種 1.categorybitmask 該...

cocos2d實現語音 Cocos2d 聲音API

param url 聲音路徑 cc.audioengine.playmusic url loop 停止背景 param releasedata 是否釋放聲音資料,預設為false cc.audioengine.stopmusic releasedata 暫停背景 cc.audioengine.pau...

cocos2d滑動碰撞檢測的實現

最近在做乙個類似切水果的小遊戲,需要檢測手在螢幕上是否劃到了園形的精靈。對於圓形的碰撞檢測還是很容易的 當觸點到圓心的距離小於等於圓的半徑時,結果為真。void mgame cctouchmoved cctouch ptouch,ccevent pevent 當觸點到圓心的距離小於等於圓的半徑時,結...