2011-07-12 60 views
0

我正在使用cocos2d在iOS上使用Box2d編輯器。cocos2d,如何讓b2World繪製我自己的數據?

我把b2World包裝到我自己的世界級。我想實現我自己的繪製功能。由於我將繪製更高級別的類(牆,繩等),因此創建b2Draw子類並將其設置爲世界的DebugDraw是不夠的,但我還需要更改b2WorldDrawDebugData

CCLayer繼承我的世界級並覆蓋draw方法是一個好主意嗎?最好的方法是什麼?

+1

我想你自己說了答案 - '我需要改變b2World DrawDebugData'。或者對於更具前瞻性思維的解決方案,您可以通過給他們提供Box2D機構來製作牆壁和繩索。 – iforce2d

+0

第一種方法,改變DrawDebugData:你的意思是直接改變b2World.cpp?我不認爲這是一個好方法。另外我認爲b2World不準備擴展。第二種方法:模型對象可能會自己繪製,但仍然有人需要調用該繪製方法,所以我們仍然處於方法1中。 – Ave

+0

我不明白。你想要的只是控制調試繪圖?所有你需要做的就是在 - (void)繪製你自己的代碼。 –

回答

0

我希望人們閱讀的答案。

即使b2World實現了一些繪圖功能,它只是用於調試目的,應該照原樣使用(除非您想更改一兩行)。

如果你想繪製更高層次的對象(或者改變調試繪製的行爲),你不應該修改b2World的繪製或者GLES-Render。相反,您會覆蓋CCSprite/CCLayer繪圖方法。

0

只需將CCSprite指針添加到b2Body userData中即可將精靈附加到b2Body。然後每幀根據b2body的位置更新你的精靈位置。

+0

這不是我想要的。我需要處理OpenGL指令,以便像box2d的調試繪製一樣繪製形狀,但是擴展該功能以便例如在對象處於特定狀態時更改顏色。 – Ave

+0

@Ave:CCSprite的重繪()函數,並畫出你喜歡的東西 – Andrew

+0

雅,我想我已經到了。沒有辦法擴展debugDraw的東西。人們必須選擇是否按原樣使用它,或者從頭開始實施整個繪圖。 – Ave