如何使用PhysicsEditor在正文中创建多个灯具

时间:2013-10-09 15:53:52

标签: box2d cocos2d-x

我想在游戏中创造一片土地。土地由一些名为“ground1.png”,“ground2.png”等的图片组成。我使用PhysicsEditor用这些图片绘制b2Fixture的形状。 问题是如何设置这些形状的位置。土地就像“ground2.png”之后的“ground2.png”和“ground2.png”之后的“ground3.png”。 但是,addFixturesToBody()不合适。

GB2ShapeCache::sharedGB2ShapeCache()->addFixturesToBody(land, "ground1");
GB2ShapeCache::sharedGB2ShapeCache()->addFixturesToBody(land, "ground2");

不幸的是,名为“ground2”的形状将覆盖名为“ground2”的形状。 我在“ground1”之后用魔杖“地2”。 我可以通过使用PhysicsEditor或编码来实现这个想法吗?

1 个答案:

答案 0 :(得分:0)

您必须为每个地面段使用单独的实体。 PE不是做整个世界碰撞形状的正确工具(至少现在还没有)。

虽然Box2D的接触检测算法在单个机身上使用多个大型形状可能效率很低。除了性能之外,当您将身体移动到两个连接点(即使在平坦的地形上也会卡住身体)时,可能会出现问题。阅读section on chain shapes in the Box2D manual

创建世界碰撞形状的最佳方法是使用一系列连接的b2ChainShape形状。遗憾的是,您无法使用PhysicsEditor创建它们。 PE内部使用b2PolygonShape和b2CircleShape。

然而,追踪世界的轮廓并非易事,搜索轮廓追踪算法。因此,最好的折衷方案是使用PE创建多边形形状,然后从适当间隔的那些导出链形状。您可能需要修改GBShapeCache代码,如果只是为了公开其形状列表。

相关问题