box2d iphone中机身尺寸与像素之间的关系

时间:2012-05-21 06:20:49

标签: objective-c xcode box2d-iphone

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

polygon_body.SetAsBox(1,1);

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

1 个答案:

答案 0 :(得分: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);