2

谁能告诉我身体尺寸和像素数(在box2d中)之间的关系。一米长度有多少像素?更具体地说,我在我的程序中使用以下代码行

多边形体.SetAsBox(1, 1);

在这段代码中,SetASBox 的参数是什么。我的意思是它是像素值还是其他一些单位。

4

1 回答 1

0

一米大约是32像素。

不看手册,我的猜测是,因为SetAsBox()它是一个 box2d 函数,它需要以米为单位的参数。因此,如果您有像素值,则可以使用此定义轻松转换为米:

#define PTM_RATIO 32

在你的文件中包含这个可以让你忘记比率,只要你需要在像素和米之间进行转换,就可以使用这个定义。当您实际进行转换时,您可以根据上下文除以或乘以该比率 (32/1)。例如:

CGSize winSize = [[CCDirector sharedDirector] winSize];
b2Body *body = world->GetBodyList();

if(body->GetPosition().x*PTM_RATIO > winSize.width/2){
    // do stuff....
}

如果您将米 (GetPosition) 与像素 (winSize) 进行比较,则此条件将不起作用,因此这是此转换有用的一个很好的示例。

或者,在您的情况下:

float pixel_width, pixel_height;
polygon_body.SetAsBox(pixel_width/PTM_RATIO, pixel_height/PTM_RATIO);
于 2012-07-16T13:20:06.940 回答