Cocos2d iphone cocos2d,如何让b2World绘制我自己的数据?

Cocos2d iphone cocos2d,如何让b2World绘制我自己的数据?,cocos2d-iphone,draw,box2d,Cocos2d Iphone,Draw,Box2d,我正在使用cocos2d为iOS开发一个Box2d编辑器 我将b2World包装到自己的世界级中。我想实现我自己的绘图功能。由于我将绘制更高级别的类(Wall、Rope等),创建b2Draw子类并将其设置为世界的DebugDraw是不够的,但我还需要更改b2WorldDrawDebugData 从CCLayer继承我的世界级并重写draw方法是个好主意吗?什么是更好的方法?只需将CCSprite指针添加到b2BodyuserData中,即可将sprite附加到b2Body。然后,每一帧都会根据身

我正在使用cocos2d为iOS开发一个Box2d编辑器

我将
b2World
包装到自己的世界级中。我想实现我自己的绘图功能。由于我将绘制更高级别的类(Wall、Rope等),创建
b2Draw
子类并将其设置为世界的DebugDraw是不够的,但我还需要更改
b2World
DrawDebugData


CCLayer
继承我的世界级并重写
draw
方法是个好主意吗?什么是更好的方法?

只需将CCSprite指针添加到
b2Body
userData中,即可将sprite附加到b2Body。然后,每一帧都会根据身体的位置更新精灵的位置。

我希望大家能读到的答案。

即使b2World实现了一些绘图功能,它也只是为了调试目的,应该按原样使用(除非您想更改一行或两行)


如果要绘制更高级别的对象(或更改调试绘制的行为),则不应修改b2World的绘制或渲染。相反,您重写了CCSprite/CCLayer绘图方法。

我想您自己说过答案——“我需要更改b2World DrawDebugData”。或者,对于更具前瞻性的解决方案,您可以让墙、绳索通过引用它们所用的Box2D实体来绘制它们自己。第一种方法,更改DrawDebugData:您的意思是,直接更改b2World.cpp吗?我认为这不是一个好办法。而且我认为b2World还没有准备好扩展。第二种方法:模型对象可以自己绘制,但仍有人必须调用该绘制方法,所以我们仍然使用方法1。我不明白。您想要的只是控制调试图形?要做到这一点,您只需在-(void)draw.True中编写自己的代码,直接更改b2World可能只适用于调整一两行代码,但不要排除这样做是否会为实现其他解决方案节省大量麻烦。第二种方法:我的意思是你们会自己调用对象的绘制-但我对cocos不太了解,所以我可能不太了解:)@Aaron-(void)从哪个类中绘制?这不是我想要的。我需要处理OpenGL指令,像box2d的debug draw一样绘制形状,但是扩展该功能,例如在对象处于特定状态时更改颜色。@Ave:CCSprite的Reimplement draw()函数并绘制您喜欢的图形。我想我已经说到点子上了。无法扩展debugDraw内容。你必须选择是按原样使用它,还是从头开始实现整个绘图。