目前,我创建一个b2Fixture像这样:

b2PolygonShape spriteShape;
    int num = 3;
    b2Vec2 verts[] = {
        b2Vec2(-29.5f / PTM_RATIO, -49.0f / PTM_RATIO),
        b2Vec2(10.0f / PTM_RATIO, -49.0f / PTM_RATIO),
        b2Vec2(34.2f / PTM_RATIO, -9.2f / PTM_RATIO),
    };
    spriteShape.Set(verts, num);
    bodyFixture.shape = &spriteShape;
    bodyCharacter->CreateFixture(&bodyFixture);

问题在于,在视网膜显示器上,它的尺寸似乎加倍了,这是否有原因,如果是的话,我该如何制作使其尺寸保持不变,以免在任何设备上弄乱?

谢谢!

最佳答案

我面临着和你一样的问题。我将内容比例因子乘以PTM_RATIO。

您可以尝试下面的代码并进行检查...对我有用

int num = 3;
b2Vec2 verts[] = {
    b2Vec2(-29.5f / ( PTM_RATIO * CC_CONTENT_SCALE_FACTOR() ), -49.0f / ( PTM_RATIO * CC_CONTENT_SCALE_FACTOR() )),
    b2Vec2(10.0f / ( PTM_RATIO * CC_CONTENT_SCALE_FACTOR() ), -49.0f / ( PTM_RATIO * CC_CONTENT_SCALE_FACTOR() )),
    b2Vec2(34.2f / ( PTM_RATIO * CC_CONTENT_SCALE_FACTOR() ), -9.2f / ( PTM_RATIO * CC_CONTENT_SCALE_FACTOR() )),
};

10-05 20:26