天天看點

cocos2d之Box2D詳細說明 滑鼠聯合實作

cocos2d之Box2D具體解釋 滑鼠關節實作

DionysosLai2014-5-7

         我們常常要移動實體世界中的某個物體,例如說石頭、木塊等。假設我們直接改變這些物體的位置,讓這些物體尾随我們手指移動,即使這樣是可行的,卻違反了實體世界的基本規則。這個世界沒有“上帝之手”。

         換個思路,假設我們要移動物體,那是否說,就是我們要在物體上施加一個某個方向的無窮大的力量。恩,沒錯。就是這樣。

在Box2D中,有一個比較特殊的關節類型:滑鼠關節(Mouse Joint),之是以特殊,就是由于它并非實體世界中原生的物體,是來自于使用者的操作。滑鼠關節,能夠試圖将物體拖向目前滑鼠光标的位置,同一時候在選擇方向上沒有限制。

         使用滑鼠關節一般有三個步驟:

1.      建立(在touchBegan中)

2.      改變滑鼠關節位置(在touchMove中);

3.      銷毀滑鼠關節(在touchEnd中)

依照上面步驟:我們一步步建立滑鼠關節:

在頭檔案裡建立一個滑鼠關節:        

b2MouseJoint* m_mouseJoint;

然後在cpp檔案裡初始滑鼠關節為NULL:

m_mouseJoint = NULL;

         以下就是建立滑鼠關節:

在這裡。調用了一個回調函數。是以必須在頭檔案裡,建立一個類:

這裡要注意一個問題,就是設定滑鼠關節邊界時:

                   md.bodyA= m_groundBody;//一般為世界邊界   

                   md.bodyB= body;//須要拖動的物體

         md.bodyA是我們的世界

         以下就是在touchMove中改變滑鼠關節的屬性,代碼例如以下:

最後一個當我們手指離開螢幕時。我們要銷毀我們所建立的滑鼠關節。在ccTouchEnded增加例如以下代碼:

好。到現在為止一切ok該。

版權聲明:本文部落客原創文章。部落格,未經同意不得轉載。

本文轉自mfrbuaa部落格園部落格,原文連結:http://www.cnblogs.com/mfrbuaa/p/4885388.html,如需轉載請自行聯系原作者

繼續閱讀