【发布时间】:2013-07-19 10:42:27
【问题描述】:
我是 box2d 的新手,我必须处理物理引擎。我正在创建固定装置和物理体并设置位置。现在我想在调试模式下查看物理对象。 我访问了许多论坛并尝试了代码,但没有运气。
我在创建我的世界后使用以下代码
m_debugDraw = new GLESDebugDraw( PTM_RATIO );
_world->SetDebugDraw(m_debugDraw);
uint32 flags = 0;
flags += b2Draw::e_shapeBit;
flags += b2Draw::e_jointBit;
flags += b2Draw::e_aabbBit;
flags += b2Draw::e_pairBit;
flags += b2Draw::e_centerOfMassBit;
m_debugDraw->SetFlags(flags);
并且还覆盖了 Draw 方法并包含了 GLES_Render.h。 没有编译错误,但调试模式下的物理对象未显示。
-(void) draw
{
[super draw];
ccGLEnableVertexAttribs( kCCVertexAttribFlag_Position );
kmGLPushMatrix();
_world->DrawDebugData();
kmGLPopMatrix();
}
如何使用 cocos2d/Box2d 2.1 版启用 Debug Draw 或者是否有其他方法可以查看物理对象?
谢谢
【问题讨论】:
-
此调试形状绘制在第 0 层...仅当您的 sprite 的 z-order 小于 0 时才可见。尝试为您的 sprite 设置 -1(sprite 附加到 body)。跨度>
-
谢谢,它有效。我已将背景精灵的 zIndex 设为 -1,并且正在显示物理对象:)
-
@Guru 我怎样才能把它放在前面?请在此处查看我的问题:stackoverflow.com/questions/22287420/…
-
@Narek,让你的精灵 z-order 小于 0 很简单。
-
@Guru 我有一个更深层次的问题:stackoverflow.com/questions/22288222/… 在 Cocos2d-x 中的所有精灵下都绘制了 Primites :( 因此我不能把它们放在前面。我不知道这是不是一个错误或者它是按设计的,但我不能做我想要的。唯一的方法是使用Z维度,把前面,但在那种情况下,我将其他坐标的位置更改为并且图像变得更大时你放了更大的 Z 坐标。
标签: cocos2d-iphone box2d physics ios6.1