【问题标题】:IOS Box2d version 2.1 DebugDraw not workingIOS Box2d 版本 2.1 DebugDraw 不工作
【发布时间】: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


【解决方案1】:

您应该在确定标志时使用 GLESDebugDraw

uint32 flags = 0;

flags += GLESDebugDraw::e_shapeBit;
flags += GLESDebugDraw::e_jointBit;
 .....
debugDraw->SetFlags(flags);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    相关资源
    最近更新 更多