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

问题描述 投票:0回答:3

请提示,因为在表示顶点的物理对象上可能有倒圆的边缘?例如,有一个规则的矩形,就是这样描述的:

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

有什么可以完善他的优势吗?

box2d cocos2d-x
3个回答
1
投票

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

或者,您可以使用矩形和4个圆形,每个角各一个。但是,圆形的放置永远不会使矩形的角不会伸出圆形,或者圆形与矩形的边完美对齐。


0
投票

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

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

您可以使用八角形,在角上重叠一些圆。您可以从两个多边形中构建一个,一个多边形用于顶部,一个多边形用于底部(每个5边,就像一个矩形,其中两个角由45度坡度替换)。

但是,我认为最好的方法是使用ChainShape。您可以创建顶点的[LOTS] >>。在一个SO问题(here)中,我使用其中一个创建了轮盘。该链接提供了代码和演示。绝对足够满足大多数需求。

这有帮助吗?


0
投票

我刚刚开始学习Cocos2d-x,所以这可能行不通,但是我认为您可以将节点锚定和固定在一起,以创建具有所需半径的C边缘圆,并从圆上的适当切点创建C边缘,其中C是数字所需的拐角数(在OP情况3中)。

© www.soinside.com 2019 - 2024. All rights reserved.