我使用随附的Cocos2d(2.0)和Box2d创建了一个非常简单的设置。我的世界里有一些尸体,但是还没有与它们联系起来的精灵,我想调试它们的方向,位置等。
这似乎是一项非常标准的任务,但我无法轻易找到如何做到这一点。根据我的研究,它似乎与这些方法有关:
_world->SetDebugDraw(...);
_world->DrawDebugData(...);
// and the GLES-Render class
帮助?
答案 0 :(得分:4)
我想出来以防万一其他人偶然发现了这一点。
b2Draw *debugDraw = new GLESDebugDraw(PTM_RATIO);
debugDraw->SetFlags(GLESDebugDraw::e_shapeBit);
_world->SetDebugDraw(debugDraw);
然后,诀窍是你需要覆盖 ccLayer的绘制方法并调用:
_world->DrawDebugData();
必须使用draw方法,否则无法使用。我最初尝试将它放在我自己的预定方法中(我称之为_world-> step()),但这不起作用。
答案 1 :(得分:0)
在coco2dx v2.2中,这是以
完成的//在init()
中写这个_debugDraw = new GLESDebugDraw(PTM_RATIO);
_world->SetDebugDraw(_debugDraw);
uint32 flags = 0;
flags += b2Draw::e_shapeBit;
flags += b2Draw::e_jointBit;
flags += b2Draw::e_aabbBit;
flags += b2Draw::e_pairBit;
flags += b2Draw::e_centerOfMassBit;
_debugDraw->SetFlags(flags);
/////////////////////////////////////////////// ///
void HelloWorld :: draw() {
CCLayer::draw();
ccGLEnableVertexAttribs( kCCVertexAttribFlag_Position );
kmGLPushMatrix();
_world->DrawDebugData();
kmGLPopMatrix();
}
检查Application.mk文件是否有
APP_CPPFLAGS:= -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION = 1 -DCOCOS2D_DEBUG = 1
然后用
替换它APP_CPPFLAGS:= -frtti -DCC_ENABLE_BOX2D_INTEGRATION = 1 -DCOCOS2D_DEBUG = 1