2013-07-19 1 views
2

저는 box2d를 처음 사용하기 때문에 Physics Engine을 다루어야합니다. 나는 비품과 물리학 몸체를 만들고 위치를 정하고 있습니다. 이제 실제 객체를 디버그 모드로보고 싶습니다. 많은 포럼을 방문하고 코드를 사용해 보았지만 행운은 없습니다.IOS Box2d 버전 2.1 DebugDraw가 작동하지 않습니다.

나는 나의 세계

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); 

을 만든 후 다음 코드를 사용하여도 그리기 메소드를 오버라이드 (override)뿐만 아니라 GLES_Render.h을 포함하고있다. 컴파일 오류가 없지만 디버그 모드의 Physics 객체가 표시되지 않습니다.

-(void) draw 
{ 
    [super draw]; 
    ccGLEnableVertexAttribs(kCCVertexAttribFlag_Position); 
    kmGLPushMatrix(); 
    _world->DrawDebugData(); 
    kmGLPopMatrix(); 
} 

cocos2d/Box2d 버전 2.1을 사용하여 디버그 그리기를 사용하는 방법 또는 물리 개체를 볼 수있는 다른 방법이 있습니까?

감사

+4

의이 0 번째 레이어에 그려진이 디버그 모양 ... 당신의 스프라이트의 Z 순서가 0보다 작은 경우에만 표시됩니다 스프라이트 (본문에 첨부 된 스프라이트)에 -1을 설정하십시오. – Guru

+0

감사합니다. 작동합니다. 내 배경 스프라이트와 Physics 객체가 -1로 표시되도록 zIndex를 만들었습니다. – Ahsan

+0

@ Guru 어떻게 가져올 수 있습니까? 제 질문은 여기를 참조하십시오 : http://stackoverflow.com/questions/22287420/box2d-debug-draw-in-a-specific-layer – Narek

답변

0

플래그를 결정할 때 당신은 GLESDebugDraw을 사용해야합니다

uint32 flags = 0; 

flags += GLESDebugDraw::e_shapeBit; 
flags += GLESDebugDraw::e_jointBit; 
..... 
debugDraw->SetFlags(flags); 
관련 문제