DebugDraw
ÇϺ¹ÀÇ ºñÁê¾ó µð¹ö°Åó·³ Box2D¿¡¼ RigidBodyÀÇ Shape¸¦ ±×·¡ÇÈÀ¸·Î º¼¼ö ÀÖ´Â ¹æ¹ýÀÌ ÀÖ´Ù. GLESDebugDraw¸¦ »ç¿ëÇÏ¸é µÈ´Ù. 1. GLES-Render.h, GLES-Render.cpp º¹»çGLESDebugDraw¸¦ »ç¿ëÇϱâ À§Çؼ´Â cocos2d-2.0-x-2.0.4/samples/TestCpp/Classes/Box2DTestBed¿¡¼ GLES-Render.h, GLES-Render.cpp ÆÄÀÏÀ» º¹»çÇؼ ÀÚ½ÅÀÇ ÇÁ·ÎÁ§Æ®¿¡ Æ÷ÇÔ½ÃŲ´Ù. 2. Çì´õ¿¡ GLESDebugDraw °´Ã¼ ¼±¾ðGLES-Render.h ÆÄÀÏÀ» Æ÷ÇÔ ½ÃÅ°°í GLESDebugDraw (mDebugDraw)°´Ã¼ ¼±¾ðÀ» ÇÑ´Ù. HelloWorldScene.h
#include "GLES-Render.h"
class HelloWorld : public cocos2d::CCLayerColor { public: //ÄÚµå »ý·« virtual void draw(); private: GLESDebugDraw *mDebugDraw; }; 3. ÅؽºÃÄ ÁÖ¼®Ã³¸®box2DÀÇ debugDraw¸¦ »ç¿ëÇÒ °ÍÀ̱⠶§¹®¿¡ ±âÁ¸¿¡ ±×¸®°í ÀÖ´ø ÅؽºÃÄ´Â ÁÖ¼®Ã³¸®ÇÑ´Ù. Çì´õ¿¡ ¼±¾ð µÇ¾ú´ø mDebugDraw¸¦ NULL·Î ÃʱâÈ ÇÑ´Ù. ÅؽºÃÄ ÁÖ¼®Ã³¸®
bool HelloWorld::init()
{ mDebugDraw = NULL; //ÄÚµå »ý·« //box2d ¸®Áöµå¹Ùµð¿ë ÅؽºÃÄ //mTexture = CCTextureCache::sharedTextureCache()->addImage( "CloseNormal.png"); createPhysicsWorld(); } 4. GLESDebugDraw »ý¼º ¹× ÃʱâÈGLESDebugDraw¸¦ »ý¼ºÇÏ°í ÃʱâÈ ÇÑ´Ù. GLESDebugDraw »ý¼º ¹× ÃʱâÈ void HelloWorld::createPhysicsWorld()
{ //ÄÚµå »ý·« mDebugDraw = new GLESDebugDraw( PTM_RATIO); if(mDebugDraw) { mPhysicsWorld->SetDebugDraw( mDebugDraw); uint32 flags = 0; flags |= b2Draw::e_shapeBit; // flags |= b2Draw::e_jointBit; // flags |= b2Draw::e_aabbBit; // flags |= b2Draw::e_pairBit; // flags |= b2Draw::e_centerOfMassBit; mDebugDraw->SetFlags(flags); } }
Âü°í ) ¸ðµç RigidBody »èÁ¦Çì´õ ÆÄÀÏ¿¡ onExit ¸â¹öÇÔ¼ö¸¦ ¼±¾ðÇÑ´Ù. virtual void onExit(); DestroyBody¸¦ ÀÌ¿ëÇØ RigidBody¸¦ »èÁ¦ÇÑ´Ù. ¸ðµç RigidBody »èÁ¦
void HelloWorld::onExit()
{ __super::onExit(); for(b2Body *body = mPhysicsWorld->GetBodyList(); body; ) { if( body->GetUserData() != NULL) { CCSprite *spriteData = (CCSprite*)body->GetUserData(); this->removeChild(spriteData, true); } b2Body* tempBody = body; body = body->GetNext(); mPhysicsWorld->DestroyBody( tempBody); } } ´Ù¿î·Îµå : HelloWorldScene.h HelloWorldScene.cpp |