cocos2d + box2d:物理对象中的圆边

时间:2014-01-11 18:34:14

标签: box2d cocos2d-x

请提示,因为可以在物理对象上形成圆形边缘,这些边缘代表顶点? 例如,有一个常规矩形,就是它的描述方式:

b2Vec2 vertices[] = {
        b2Vec2(0.0*_scale/PTM_RATIO,0.0*_scale/PTM_RATIO),
        b2Vec2(512.0*_scale/PTM_RATIO,0.0*_scale/PTM_RATIO),
        b2Vec2(512.0*_scale/PTM_RATIO,32.0*_scale/PTM_RATIO),
        b2Vec2(0.0*_scale/PTM_RATIO,32.0*_scale/PTM_RATIO)
    };

任何事都可以完善他的优势?

3 个答案:

答案 0 :(得分:1)

这可以通过使用多边形形状并设置顶点来表示圆角。然而,这可能需要增加Box2D的内部限制(如果我没记错的话)每个多边形8个顶点。

或者,您可以使用矩形和4个圆形,每个角一个。然而,圆形形状的放置永远不会使得矩形的角不会从圆圈中伸出,圆形的圆圈与矩形的边完全对齐。

答案 1 :(得分:0)

这取决于您需要多少舍入。

您可以使用具有更多顶点的多边形形状,但这需要增加内部限制,这会增加 ALL 多边形形状的默认存储。

您可以使用八角形,角落上有一些圆圈重叠。您可以用两个多边形来构建它,一个用于顶部,一个用于底部(每个5个边,就像一个矩形,两个角被45度斜坡取代)。

但是,我认为最好的方法是使用ChainShape。您可以创建顶点的 LOTS 。在一个SO问题(here)中,我使用其中一个创建了一个轮盘赌轮。链接提供代码和演示。对于大多数需求来说,这绝对是圆形的。

这有用吗?

答案 2 :(得分:0)

我刚刚开始学习Cocos2d-x,所以这可能行不通,但是我认为您可以将节点锚定并固定在一起,以创建所需半径的N个边缘圆,并从圆上的适当切点创建N个边缘,其中N是您想要的拐角数(在OP中为矩形4)。

对于一个圆角框,N = 4,是这样的:

  • 4个子节点,其拐角处具有圆形边缘物理实体。
  • 4个具有直边物理实体的子节点,在圆的切点处结束
  • 应该具有将物理物体或物理边缘连接在一起的功能
  __
 O  O
|    |
 O__O